Skip to Content.
Sympa Menu

notify-dpml - r1001 - in trunk/main/planet/web: . server/etc/prefs/xmls server/src/main/net/dpml/web/server test test/etc test/etc/web test/etc/web/WEB-INF test/etc/web/chat test/etc/web/js test/src test/src/main test/src/main/org test/src/main/org/acme test/webapps test/webapps/test test/webapps/test/META-INF test/webapps/test/WEB-INF test/webapps/test/WEB-INF/classes test/webapps/test/WEB-INF/classes/org test/webapps/test/WEB-INF/classes/org/acme test/webapps/test/chat test/webapps/test/js

notify-dpml AT lists.ibiblio.org

Subject: DPML Notify

List archive

Chronological Thread  
  • From: mcconnell at BerliOS <mcconnell AT mail.berlios.de>
  • To: notify-dpml AT lists.ibiblio.org
  • Subject: r1001 - in trunk/main/planet/web: . server/etc/prefs/xmls server/src/main/net/dpml/web/server test test/etc test/etc/web test/etc/web/WEB-INF test/etc/web/chat test/etc/web/js test/src test/src/main test/src/main/org test/src/main/org/acme test/webapps test/webapps/test test/webapps/test/META-INF test/webapps/test/WEB-INF test/webapps/test/WEB-INF/classes test/webapps/test/WEB-INF/classes/org test/webapps/test/WEB-INF/classes/org/acme test/webapps/test/chat test/webapps/test/js
  • Date: Tue, 31 Jan 2006 13:12:25 +0100

Author: mcconnell
Date: 2006-01-31 13:10:53 +0100 (Tue, 31 Jan 2006)
New Revision: 1001

Added:
trunk/main/planet/web/test/
trunk/main/planet/web/test/build.xml
trunk/main/planet/web/test/etc/
trunk/main/planet/web/test/etc/web.xml
trunk/main/planet/web/test/etc/web/
trunk/main/planet/web/test/etc/web/WEB-INF/
trunk/main/planet/web/test/etc/web/WEB-INF/jetty-web.xml
trunk/main/planet/web/test/etc/web/chat/
trunk/main/planet/web/test/etc/web/chat/chat.css
trunk/main/planet/web/test/etc/web/chat/chat.html
trunk/main/planet/web/test/etc/web/chat/chat.js
trunk/main/planet/web/test/etc/web/d.txt
trunk/main/planet/web/test/etc/web/da.txt
trunk/main/planet/web/test/etc/web/dat.txt
trunk/main/planet/web/test/etc/web/data.txt
trunk/main/planet/web/test/etc/web/data.txt.gz
trunk/main/planet/web/test/etc/web/favicon.ico
trunk/main/planet/web/test/etc/web/index.html
trunk/main/planet/web/test/etc/web/jetty_banner.gif
trunk/main/planet/web/test/etc/web/js/
trunk/main/planet/web/test/etc/web/js/behaviour.js
trunk/main/planet/web/test/etc/web/js/default.js
trunk/main/planet/web/test/etc/web/js/prototype.js
trunk/main/planet/web/test/etc/web/js/rico.js
trunk/main/planet/web/test/etc/web/js/scriptaculous.js
trunk/main/planet/web/test/etc/web/snoop.jsp
trunk/main/planet/web/test/etc/webapps/
trunk/main/planet/web/test/src/
trunk/main/planet/web/test/src/main/
trunk/main/planet/web/test/src/main/org/
trunk/main/planet/web/test/src/main/org/acme/
trunk/main/planet/web/test/src/main/org/acme/ChatFilter.java
trunk/main/planet/web/test/src/main/org/acme/DispatchServlet.java
trunk/main/planet/web/test/src/main/org/acme/Dump.java
trunk/main/planet/web/test/src/main/org/acme/HelloWorld.java
trunk/main/planet/web/test/src/main/org/acme/SessionDump.java
trunk/main/planet/web/test/src/main/org/acme/TestFilter.java
trunk/main/planet/web/test/src/main/org/acme/TestListener.java
trunk/main/planet/web/test/webapps/
trunk/main/planet/web/test/webapps/test/
trunk/main/planet/web/test/webapps/test/META-INF/
trunk/main/planet/web/test/webapps/test/META-INF/MANIFEST.MF
trunk/main/planet/web/test/webapps/test/WEB-INF/
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter$Event.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter$Member.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/DispatchServlet.class
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/Dump.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/HelloWorld.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/SessionDump.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/TestFilter.class

trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/TestListener.class
trunk/main/planet/web/test/webapps/test/WEB-INF/jetty-web.xml
trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml
trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml~!
trunk/main/planet/web/test/webapps/test/chat/
trunk/main/planet/web/test/webapps/test/chat/chat.css
trunk/main/planet/web/test/webapps/test/chat/chat.html
trunk/main/planet/web/test/webapps/test/chat/chat.js
trunk/main/planet/web/test/webapps/test/d.txt
trunk/main/planet/web/test/webapps/test/da.txt
trunk/main/planet/web/test/webapps/test/dat.txt
trunk/main/planet/web/test/webapps/test/data.txt
trunk/main/planet/web/test/webapps/test/data.txt.gz
trunk/main/planet/web/test/webapps/test/favicon.ico
trunk/main/planet/web/test/webapps/test/index.html
trunk/main/planet/web/test/webapps/test/jetty_banner.gif
trunk/main/planet/web/test/webapps/test/js/
trunk/main/planet/web/test/webapps/test/js/behaviour.js
trunk/main/planet/web/test/webapps/test/js/default.js
trunk/main/planet/web/test/webapps/test/js/prototype.js
trunk/main/planet/web/test/webapps/test/js/rico.js
trunk/main/planet/web/test/webapps/test/js/scriptaculous.js
trunk/main/planet/web/test/webapps/test/snoop.jsp
Modified:
trunk/main/planet/web/
trunk/main/planet/web/module.xml
trunk/main/planet/web/server/etc/prefs/xmls/jetty.xml
trunk/main/planet/web/server/src/main/net/dpml/web/server/Server.java
Log:
fully-functional Jetty 6 server as a component (with working web-app, servlet
and jsp)


Property changes on: trunk/main/planet/web
___________________________________________________________________
Name: svn:ignore
+ target


Modified: trunk/main/planet/web/module.xml
===================================================================
--- trunk/main/planet/web/module.xml 2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/module.xml 2006-01-31 12:10:53 UTC (rev 1001)
@@ -13,10 +13,27 @@
</types>
<dependencies>
<include ref="dpml/util/dpml-logging-api"/>
- <include urn="artifact:jar:servletapi/servletapi#2.4" tag="public"/>
+ <include urn="artifact:jar:jetty/servlet-api-2.5#20060131"/>
+ <include urn="artifact:jar:tomcat/jasper-runtime#5.5.12"/>
+ <include urn="artifact:jar:tomcat/jasper-compiler#5.5.12"/>
+ <include urn="artifact:jar:tomcat/jasper-compiler-jdt#5.5.12"/>
<include urn="artifact:jar:jetty/jetty#6.0.0-20060131"/>
+ <include urn="artifact:jar:org/slf4j/jcl104-over-slf4j#1.0-rc5"/>
+ <include urn="artifact:jar:org/slf4j/slf4j-simple#1.0-rc5"/>
+ <include urn="artifact:jar:commons-el/commons-el#1.0"/>
<include ref="dpml/transit/dpml-transit-main"/>
</dependencies>
</project>

+ <project name="dpml-http-test" basedir="test">
+ <types>
+ <type id="jar"/>
+ <type id="war"/>
+ </types>
+ <dependencies>
+ <include urn="artifact:jar:servletapi/servletapi#2.4" tag="public"/>
+ <include urn="artifact:jar:jetty/jetty#6.0.0-20060131"/>
+ </dependencies>
+ </project>
+
</module>

Modified: trunk/main/planet/web/server/etc/prefs/xmls/jetty.xml
===================================================================
--- trunk/main/planet/web/server/etc/prefs/xmls/jetty.xml 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/server/etc/prefs/xmls/jetty.xml 2006-01-31
12:10:53 UTC (rev 1001)
@@ -41,15 +41,6 @@
<Set name="connectors">
<Array type="org.mortbay.jetty.Connector">

- <!-- Use this connector if NIO is not available.
- <Item>
- <New class="org.mortbay.jetty.bio.SocketConnector">
- <Set name="port">8080</Set>
- <Set name="maxIdleTime">50000</Set>
- </New>
- </Item>
- -->
-
<!-- Use this connector for few very active connections.
<Item>
<New class="org.mortbay.jetty.nio.BlockingChannelConnector">
@@ -97,7 +88,6 @@
<!-- ======================================================= -->

<!-- REMOVED PENDING PROPER SETUP -->
- <!--
<Item>
<New id="testWebAppContext"
class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/test</Set>
@@ -108,43 +98,42 @@
</Get>
</New>
</Item>
+ <!--
-->

<!-- ======================================================= -->
<!-- Configure a context directly - no XML parser required -->
<!-- ======================================================= -->
<Item>
- <New id="javadocContext"
class="net.dpml.web.server.ContextHandler">
+ <New id="docsContext" class="net.dpml.web.server.ContextHandler">
<Set name="contextPath">/docs</Set>
<Set name="resourceBase">${dpml.data}/docs</Set>
<Set name="handler">
- <New id="javadocServletHandler"
class="org.mortbay.jetty.servlet.ServletHandler">
+ <New id="docsServletHandler"
class="org.mortbay.jetty.servlet.ServletHandler">
<Set name="servlets">
- <Array type="org.mortbay.jetty.servlet.ServletHolder">
- <Item>
- <New
class="org.mortbay.jetty.servlet.ServletHolder">
- <Set name="name">Default</Set>
- <Set
name="className">org.mortbay.jetty.servlet.DefaultServlet</Set>
- </New>
- </Item>
- </Array>
- </Set>
-
+ <Array type="org.mortbay.jetty.servlet.ServletHolder">
+ <Item>
+ <New class="org.mortbay.jetty.servlet.ServletHolder">
+ <Set name="name">Default</Set>
+ <Set
name="className">org.mortbay.jetty.servlet.DefaultServlet</Set>
+ </New>
+ </Item>
+ </Array>
+ </Set>
<Set name="servletMappings">
- <Array type="org.mortbay.jetty.servlet.ServletMapping">
- <Item>
- <New
class="org.mortbay.jetty.servlet.ServletMapping">
- <Set name="pathSpec">/</Set>
- <Set name="servletName">Default</Set>
- </New>
- </Item>
- </Array>
+ <Array type="org.mortbay.jetty.servlet.ServletMapping">
+ <Item>
+ <New class="org.mortbay.jetty.servlet.ServletMapping">
+ <Set name="pathSpec">/</Set>
+ <Set name="servletName">Default</Set>
+ </New>
+ </Item>
+ </Array>
</Set>
</New>
</Set>
</New>
</Item>
-
</Array>
</Set>

@@ -154,7 +143,6 @@
<!-- =========================================================== -->
<!-- Additional contexts not defined above -->
<!-- =========================================================== -->
- <!--
<Call class="org.mortbay.jetty.webapp.WebAppContext"
name="addWebApplications">
<Arg><Ref id="Server"/></Arg>
<Arg>./webapps</Arg>
@@ -162,6 +150,7 @@
<Arg type="boolean">True</Arg>
<Arg type="boolean">True</Arg>
</Call>
+ <!--
-->

<!-- REMOVED PENDING PROPER SETUP -->

Modified:
trunk/main/planet/web/server/src/main/net/dpml/web/server/Server.java
===================================================================
--- trunk/main/planet/web/server/src/main/net/dpml/web/server/Server.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/server/src/main/net/dpml/web/server/Server.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -85,9 +85,9 @@
m_logger = logger;
m_context = context;

-
URI standard = new URI( "local:xml:dpml/planet/web/jetty" );
URI uri = context.getConfiguration( standard );
+ Thread.currentThread().setContextClassLoader(
getClass().getClassLoader() );
if( null != uri )
{
getLogger().info( "configuration: " + uri );

Added: trunk/main/planet/web/test/build.xml
===================================================================
--- trunk/main/planet/web/test/build.xml 2006-01-31 11:49:08 UTC (rev
1000)
+++ trunk/main/planet/web/test/build.xml 2006-01-31 12:10:53 UTC (rev
1001)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ * Copyright 2004-2005 Stephen J. McConnell.
+ * Copyright 2004 Niclas Hedman.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.dpml.net/central/about/legal/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<project default="install"
+ xmlns:transit="antlib:net.dpml.transit" xmlns:depot="dpml:depot" >
+
+ <transit:import uri="local:template:dpml/tools/standard"/>
+
+ <target name="init" depends="standard.init">
+ <property name="war.dir" value="${basedir}/target/deliverables/wars"/>
+ <depot:property feature="filename" name="project.filename" type="war"/>
+ <property name="war.path" value="${war.dir}/${project.filename}"/>
+ </target>
+
+ <target name="package" depends="standard.package">
+ <echo message="${project.filename}"/>
+ <mkdir dir="${war.dir}"/>
+ <war destfile="${war.path}" webxml="target/web.xml">
+ <fileset dir="target/web"/>
+ <classes dir="target/classes/main"/>
+ </war>
+ </target>
+
+ <target name="install" depends="standard.install"
+ description="Unpacks the war file to the root directory.">
+ <mkdir dir="webapps/test"/>
+ <unzip src="${war.path}" dest="webapps/test"/>
+ <!--
+ <copy toDir=".">
+ <fileset dir="target">
+ <include name="webapps/**"/>
+ </fileset>
+ </copy>
+ -->
+ </target>
+
+</project>

Added: trunk/main/planet/web/test/etc/web/WEB-INF/jetty-web.xml
===================================================================
--- trunk/main/planet/web/test/etc/web/WEB-INF/jetty-web.xml 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/WEB-INF/jetty-web.xml 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://jetty.mortbay.org/configure.dtd";>
+
+<!--
+This is the jetty specific web application configuration file. When starting
+a Web Application, the WEB-INF/web-jetty.xml file is looked for and if
found, treated
+as a org.mortbay.xml.XmlConfiguration file and is applied to the
+org.mortbay.jetty.servlet.WebApplicationContext objet
+-->
+
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+ <Call class="org.mortbay.log.Log" name="debug"><Arg>executing
jetty-web.xml</Arg></Call>
+</Configure>

Added: trunk/main/planet/web/test/etc/web/chat/chat.css
===================================================================
--- trunk/main/planet/web/test/etc/web/chat/chat.css 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/chat/chat.css 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,66 @@
+
+div
+{
+ border: 0px solid black;
+}
+
+div#chatroom
+{
+ width: 41em;
+ background-color: #e0e0e0;
+ border: 1px solid black;
+}
+
+div#chat
+{
+ float: left;
+ width: 30em;
+ height: 20ex;
+ overflow: auto;
+ background-color: #f0f0f0;
+ padding: 4px;
+ border-right: 1px solid black;
+}
+
+div#members
+{
+ float: left;
+ clear: right;
+ width: 10em;
+ border: 0px solid black;
+}
+
+div#input
+{
+ clear: both;
+ padding: 4px;
+ border-top: 1px solid black;
+}
+
+input#phrase
+{
+ width:28em;
+ background-color: #e0f0f0;
+}
+
+input#username
+{
+ width:14em;
+ background-color: #e0f0f0;
+}
+
+div.hidden
+{
+ display: none;
+}
+
+span.from
+{
+ font-weight: bold;
+}
+
+span.alert
+{
+ font-style: italic;
+}
+

Added: trunk/main/planet/web/test/etc/web/chat/chat.html
===================================================================
--- trunk/main/planet/web/test/etc/web/chat/chat.html 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/chat/chat.html 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <title>Jetty chat</title>
+ <script type="text/javascript" src="../js/default.js"></script>
+ <script type="text/javascript" src="chat.js"></script>
+ <link rel="stylesheet" type="text/css" href="chat.css"></link>
+</head>
+<body>
+<h1>Jetty AJAX Chat</h1>
+Three really important things about this chat room demo:<ul>
+<li>It has really HORRID Styling. Please feel free to donate a pretty css
:-)</li>
+<li>It is written using AJAX techniques provided by
+<a href="http://bennolan.com/behaviour/";>Behaviour</a>,
+<a href="http://openrico.org/rico/home.page";>Rico</a> and
+<a href="http://prototype.conio.net/";>Prototype</a>.</li>
+<li>It uses Jetty6 <a
href="/javadoc/org/mortbay/jetty/util/Continuation.html">Continuations</a>.
No are used when waiting for async
+events (see below).
+</li>
+</ul>
+
+
+<div id="chatroom">
+
+ <div id="chat">
+ </div>
+
+
+ <div id="members">
+ </div>
+
+ <div id="input">
+ <div id="join" >
+ Username:&nbsp;<input id="username" type="text"/><input id="joinB"
class="button" type="submit" name="join" value="Join"/>
+ </div>
+ <div id="joined" class="hidden">
+ Chat:&nbsp;<input id="phrase" type="text"></input>
+ <input id="sendB" class="button" type="submit" name="join"
value="Send"/>
+ <input id="leaveB" class="button" type="submit" name="join"
value="Leave"/>
+ </div>
+ </div>
+ </div>
+
+ <h3>How this works</h3>
+ This chat room is put together with html, javascript and a filter as
follows:
+ <ul>
+ <li><p>The chat.html file provides the basic layout for the page, including
this text and a bunch of
+ <code>div</code> elements that define the layout of the chat room. This
html will render well
+ without any javascript etc.</p></li>
+
+ <li><p>The chat.html file includes the default.js file, which simply
includes
+ javascript libraries of
+<a href="http://bennolan.com/behaviour/";>Behaviour</a>,
+<a href="http://openrico.org/rico/home.page";>Rico</a> and
+<a href="http://prototype.conio.net/";>Prototype</a>.</p></li>
+
+ <li><p>The chat.html file includes the chat.js script which is the client
side smarts of the chat room:</p>
+ <ul>
+ <li><p>Using Behaviour, the DOM model of chat.html is enhanced with
onclick and onkeypress functions
+ to trigger the dynamic interations.</p>
+ </li>
+ <li><p>Using Rico, the URLs for the AJAX requests for
<code>join</code>,
+ <code>leave</code>, <code>chat</code> and <code>getEvents</code>
are defined.
+ </p></li>
+ <li><p>Using Rico, the members div is identified as an element that
can be directely
+ updated from xhtml returned in an element response from the server.
+ </p></li>
+ <li><p>Using Rico, event handling objects are created to handle
membership, events and polling for events.</p></li>
+ </ul>
+ </li>
+
+ <li><p>On the sever side, the ChatFilter is instantiated to filter requests
to chat.html:</p>
+ <ul>
+ <li><p>The ChatFilter extends AjaxFilter, which identifies
requests that are AJAX requests and
+ gives assistance with formatting the AJAX responses. All other
requests are passed normally.
+ </p></li>
+
+ <li><p>The ChatFilter provides methods for join, leave, chat and
getEvents. Most of these are
+ fairly straight forward and just manipulatet state and send the
appopriate AJAX response.</p></li>
+
+ <li><p>The smarts are in the getEvents method. This method is a
poll from the client for any
+ events on the server for the given member. If there were no
events and the server simply
+ replied with an empty response, this poll would become a busy
poll and consume CPU on both
+ client and server.</p>
+
+ <p>
+ To avoid this, normal AJAX servers will simply wait for a short
period (eg. 30 seconds).
+ If an event occurs in this time, the response is sent
immediately. If the period times out,
+ then an empty response is sent. Either way the client will then
poll again for more events.
+ </p>
+
+ <p>
+ But for servlets, this waiting for events, is done in the
request handler, when a thread has
+ been allocated. Thus it makes it very difficult to scale an
AJAX server to thousands of users
+ as you will need thousands of threads - mostly idle waiting for
events.
+ </p>
+
+ <p>
+ Thus Jetty 6 introduces <a
href="/javadoc/org/mortbay/jetty/util/Continuation.html">Continuations</a>,
which allows the handling of a servlet request to
+ be suspended until either a timeout occurs or an asynchronous
event calls resume on the
+ continuation. This allows threadless waiting and thus permits
an AJAX server to scale without
+ consuming vaste numbers of threads.
+ </p>
+ </li>
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+</body>

Added: trunk/main/planet/web/test/etc/web/chat/chat.js
===================================================================
--- trunk/main/planet/web/test/etc/web/chat/chat.js 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/chat/chat.js 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,173 @@
+
+
+
+
+var MembershipHandler =
+{
+ join: function()
+ {
+ var name = $('username').value;
+ if (name == null || name.length==0 )
+ {
+ alert("Please enter a username!");
+ }
+ else
+ {
+ ajaxEngine.sendRequest('join',"name=" + name);
+ }
+ },
+
+ ajaxUpdate: function(ajaxResponse)
+ {
+ if ("left" == ajaxResponse.getAttribute('id'))
+ {
+ // switch the input form
+ $('join').className='';
+ $('joined').className='hidden';
+ $('username').focus();
+ }
+ else
+ {
+ // switch the input form
+ $('join').className='hidden';
+ $('joined').className='';
+ $('phrase').focus();
+
+ // start polling for events
+ ajaxEngine.sendRequest('getEvents');
+ }
+
+ Behaviour.apply();
+
+ }
+};
+
+var EventHandler =
+{
+ last: "",
+
+ chat: function()
+ {
+ var text = $('phrase').value;
+ if (text != null && text.length>0 )
+ {
+ text=text.replace('%','%25');
+ text=text.replace('&','%26');
+ ajaxEngine.sendRequest('chat',"text=" + text); // TODO encode ??
+ $('phrase').value="";
+ }
+ },
+
+ ajaxUpdate: function(ajaxResponse)
+ {
+ var event=ajaxResponse.childNodes[0];
+ document.myevent=event;
+
+ var chat=$('chat')
+ var from=event.attributes['from'].value;
+ var alert=event.attributes['alert'].value;
+ var text=event.childNodes[0].data;
+
+ if ( alert!="true" && from == this.last )
+ from="...";
+ else
+ {
+ this.last=from;
+ from+=":";
+ }
+
+ if (alert!="true")
+ chat.innerHTML += "<span class=\"from\">"+from+"&nbsp;</span><span
class=\"text\">"+text+"</span><br/>";
+ else
+ chat.innerHTML += "<span class=\"alert\"><span
class=\"from\">"+from+"&nbsp;</span><span
class=\"text\">"+text+"</span></span><br/>";
+
+ chat.scrollTop = chat.scrollHeight - chat.clientHeight;
+
+ }
+};
+
+var PollHandler =
+{
+ ajaxUpdate: function(ajaxResponse)
+ {
+ // Poll again for events
+ ajaxEngine.sendRequest('getEvents');
+ }
+};
+
+
+function initPage()
+{
+ ajaxEngine.registerRequest('join', "?ajax=join");
+ ajaxEngine.registerRequest('leave', "?ajax=leave");
+ ajaxEngine.registerRequest('chat', "?ajax=chat");
+ ajaxEngine.registerRequest('getEvents', "?ajax=getEvents&id=event");
+
+ ajaxEngine.registerAjaxElement('members');
+
+ ajaxEngine.registerAjaxObject('joined', MembershipHandler);
+ ajaxEngine.registerAjaxObject('left', MembershipHandler);
+ ajaxEngine.registerAjaxObject('event', EventHandler);
+ ajaxEngine.registerAjaxObject('poll', PollHandler);
+
+}
+
+
+var behaviours =
+{
+
+ '#username' : function(element)
+ {
+ element.setAttribute("autocomplete","OFF");
+ element.onkeypress = function(event)
+ {
+ if (event && (event.keyCode==13 || event.keyCode==10))
+ {
+ MembershipHandler.join();
+ }
+ }
+ },
+
+ '#joinB' : function(element)
+ {
+ element.onclick = function()
+ {
+ MembershipHandler.join();
+ }
+ },
+
+ '#phrase' : function(element)
+ {
+ element.setAttribute("autocomplete","OFF");
+ element.onkeypress = function(event)
+ {
+ if (event && (event.keyCode==13 || event.keyCode==10))
+ {
+ EventHandler.chat();
+ return false;
+ }
+ return true;
+ }
+ },
+
+ '#sendB' : function(element)
+ {
+ element.onclick = function()
+ {
+ EventHandler.chat();
+ }
+ },
+
+
+ '#leaveB' : function(element)
+ {
+ element.onclick = function()
+ {
+ ajaxEngine.sendRequest('leave');
+ }
+ },
+};
+
+Behaviour.register(behaviours);
+Behaviour.addLoadEvent(initPage);
+

Added: trunk/main/planet/web/test/etc/web/d.txt
===================================================================
--- trunk/main/planet/web/test/etc/web/d.txt 2006-01-31 11:49:08 UTC (rev
1000)
+++ trunk/main/planet/web/test/etc/web/d.txt 2006-01-31 12:10:53 UTC (rev
1001)
@@ -0,0 +1,10 @@
+0000 0000000000000000000000000000000000000000000000000000000
+0001 0000000000000000000000000000000000000000000000000000000
+0002 0000000000000000000000000000000000000000000000000000000
+0003 0000000000000000000000000000000000000000000000000000000
+0004 0000000000000000000000000000000000000000000000000000000
+0005 0000000000000000000000000000000000000000000000000000000
+0006 0000000000000000000000000000000000000000000000000000000
+0007 0000000000000000000000000000000000000000000000000000000
+0008 0000000000000000000000000000000000000000000000000000000
+0009 0000000000000000000000000000000000000000000000000000000

Added: trunk/main/planet/web/test/etc/web/da.txt
===================================================================
--- trunk/main/planet/web/test/etc/web/da.txt 2006-01-31 11:49:08 UTC (rev
1000)
+++ trunk/main/planet/web/test/etc/web/da.txt 2006-01-31 12:10:53 UTC (rev
1001)
@@ -0,0 +1,1000 @@
+0000 1111111111111111111111111111111111111111111111111111111
+0001 1111111111111111111111111111111111111111111111111111111
+0002 1111111111111111111111111111111111111111111111111111111
+0003 1111111111111111111111111111111111111111111111111111111
+0004 1111111111111111111111111111111111111111111111111111111
+0005 1111111111111111111111111111111111111111111111111111111
+0006 1111111111111111111111111111111111111111111111111111111
+0007 1111111111111111111111111111111111111111111111111111111
+0008 1111111111111111111111111111111111111111111111111111111
+0009 1111111111111111111111111111111111111111111111111111111
+0010 1111111111111111111111111111111111111111111111111111111
+0011 1111111111111111111111111111111111111111111111111111111
+0012 1111111111111111111111111111111111111111111111111111111
+0013 1111111111111111111111111111111111111111111111111111111
+0014 1111111111111111111111111111111111111111111111111111111
+0015 1111111111111111111111111111111111111111111111111111111
+0016 1111111111111111111111111111111111111111111111111111111
+0017 1111111111111111111111111111111111111111111111111111111
+0018 1111111111111111111111111111111111111111111111111111111
+0019 1111111111111111111111111111111111111111111111111111111
+0020 1111111111111111111111111111111111111111111111111111111
+0021 1111111111111111111111111111111111111111111111111111111
+0022 1111111111111111111111111111111111111111111111111111111
+0023 1111111111111111111111111111111111111111111111111111111
+0024 1111111111111111111111111111111111111111111111111111111
+0025 1111111111111111111111111111111111111111111111111111111
+0026 1111111111111111111111111111111111111111111111111111111
+0027 1111111111111111111111111111111111111111111111111111111
+0028 1111111111111111111111111111111111111111111111111111111
+0029 1111111111111111111111111111111111111111111111111111111
+0030 1111111111111111111111111111111111111111111111111111111
+0031 1111111111111111111111111111111111111111111111111111111
+0032 1111111111111111111111111111111111111111111111111111111
+0033 1111111111111111111111111111111111111111111111111111111
+0034 1111111111111111111111111111111111111111111111111111111
+0035 1111111111111111111111111111111111111111111111111111111
+0036 1111111111111111111111111111111111111111111111111111111
+0037 1111111111111111111111111111111111111111111111111111111
+0038 1111111111111111111111111111111111111111111111111111111
+0039 1111111111111111111111111111111111111111111111111111111
+0040 1111111111111111111111111111111111111111111111111111111
+0041 1111111111111111111111111111111111111111111111111111111
+0042 1111111111111111111111111111111111111111111111111111111
+0043 1111111111111111111111111111111111111111111111111111111
+0044 1111111111111111111111111111111111111111111111111111111
+0045 1111111111111111111111111111111111111111111111111111111
+0046 1111111111111111111111111111111111111111111111111111111
+0047 1111111111111111111111111111111111111111111111111111111
+0048 1111111111111111111111111111111111111111111111111111111
+0049 1111111111111111111111111111111111111111111111111111111
+0050 1111111111111111111111111111111111111111111111111111111
+0051 1111111111111111111111111111111111111111111111111111111
+0052 1111111111111111111111111111111111111111111111111111111
+0053 1111111111111111111111111111111111111111111111111111111
+0054 1111111111111111111111111111111111111111111111111111111
+0055 1111111111111111111111111111111111111111111111111111111
+0056 1111111111111111111111111111111111111111111111111111111
+0057 1111111111111111111111111111111111111111111111111111111
+0058 1111111111111111111111111111111111111111111111111111111
+0059 1111111111111111111111111111111111111111111111111111111
+0060 1111111111111111111111111111111111111111111111111111111
+0061 1111111111111111111111111111111111111111111111111111111
+0062 1111111111111111111111111111111111111111111111111111111
+0063 1111111111111111111111111111111111111111111111111111111
+0064 1111111111111111111111111111111111111111111111111111111
+0065 1111111111111111111111111111111111111111111111111111111
+0066 1111111111111111111111111111111111111111111111111111111
+0067 1111111111111111111111111111111111111111111111111111111
+0068 1111111111111111111111111111111111111111111111111111111
+0069 1111111111111111111111111111111111111111111111111111111
+0070 1111111111111111111111111111111111111111111111111111111
+0071 1111111111111111111111111111111111111111111111111111111
+0072 1111111111111111111111111111111111111111111111111111111
+0073 1111111111111111111111111111111111111111111111111111111
+0074 1111111111111111111111111111111111111111111111111111111
+0075 1111111111111111111111111111111111111111111111111111111
+0076 1111111111111111111111111111111111111111111111111111111
+0077 1111111111111111111111111111111111111111111111111111111
+0078 1111111111111111111111111111111111111111111111111111111
+0079 1111111111111111111111111111111111111111111111111111111
+0080 1111111111111111111111111111111111111111111111111111111
+0081 1111111111111111111111111111111111111111111111111111111
+0082 1111111111111111111111111111111111111111111111111111111
+0083 1111111111111111111111111111111111111111111111111111111
+0084 1111111111111111111111111111111111111111111111111111111
+0085 1111111111111111111111111111111111111111111111111111111
+0086 1111111111111111111111111111111111111111111111111111111
+0087 1111111111111111111111111111111111111111111111111111111
+0088 1111111111111111111111111111111111111111111111111111111
+0089 1111111111111111111111111111111111111111111111111111111
+0090 1111111111111111111111111111111111111111111111111111111
+0091 1111111111111111111111111111111111111111111111111111111
+0092 1111111111111111111111111111111111111111111111111111111
+0093 1111111111111111111111111111111111111111111111111111111
+0094 1111111111111111111111111111111111111111111111111111111
+0095 1111111111111111111111111111111111111111111111111111111
+0096 1111111111111111111111111111111111111111111111111111111
+0097 1111111111111111111111111111111111111111111111111111111
+0098 1111111111111111111111111111111111111111111111111111111
+0099 1111111111111111111111111111111111111111111111111111111
+0100 1111111111111111111111111111111111111111111111111111111
+0101 1111111111111111111111111111111111111111111111111111111
+0102 1111111111111111111111111111111111111111111111111111111
+0103 1111111111111111111111111111111111111111111111111111111
+0104 1111111111111111111111111111111111111111111111111111111
+0105 1111111111111111111111111111111111111111111111111111111
+0106 1111111111111111111111111111111111111111111111111111111
+0107 1111111111111111111111111111111111111111111111111111111
+0108 1111111111111111111111111111111111111111111111111111111
+0109 1111111111111111111111111111111111111111111111111111111
+0110 1111111111111111111111111111111111111111111111111111111
+0111 1111111111111111111111111111111111111111111111111111111
+0112 1111111111111111111111111111111111111111111111111111111
+0113 1111111111111111111111111111111111111111111111111111111
+0114 1111111111111111111111111111111111111111111111111111111
+0115 1111111111111111111111111111111111111111111111111111111
+0116 1111111111111111111111111111111111111111111111111111111
+0117 1111111111111111111111111111111111111111111111111111111
+0118 1111111111111111111111111111111111111111111111111111111
+0119 1111111111111111111111111111111111111111111111111111111
+0120 1111111111111111111111111111111111111111111111111111111
+0121 1111111111111111111111111111111111111111111111111111111
+0122 1111111111111111111111111111111111111111111111111111111
+0123 1111111111111111111111111111111111111111111111111111111
+0124 1111111111111111111111111111111111111111111111111111111
+0125 1111111111111111111111111111111111111111111111111111111
+0126 1111111111111111111111111111111111111111111111111111111
+0127 1111111111111111111111111111111111111111111111111111111
+0128 1111111111111111111111111111111111111111111111111111111
+0129 1111111111111111111111111111111111111111111111111111111
+0130 1111111111111111111111111111111111111111111111111111111
+0131 1111111111111111111111111111111111111111111111111111111
+0132 1111111111111111111111111111111111111111111111111111111
+0133 1111111111111111111111111111111111111111111111111111111
+0134 1111111111111111111111111111111111111111111111111111111
+0135 1111111111111111111111111111111111111111111111111111111
+0136 1111111111111111111111111111111111111111111111111111111
+0137 1111111111111111111111111111111111111111111111111111111
+0138 1111111111111111111111111111111111111111111111111111111
+0139 1111111111111111111111111111111111111111111111111111111
+0140 1111111111111111111111111111111111111111111111111111111
+0141 1111111111111111111111111111111111111111111111111111111
+0142 1111111111111111111111111111111111111111111111111111111
+0143 1111111111111111111111111111111111111111111111111111111
+0144 1111111111111111111111111111111111111111111111111111111
+0145 1111111111111111111111111111111111111111111111111111111
+0146 1111111111111111111111111111111111111111111111111111111
+0147 1111111111111111111111111111111111111111111111111111111
+0148 1111111111111111111111111111111111111111111111111111111
+0149 1111111111111111111111111111111111111111111111111111111
+0150 1111111111111111111111111111111111111111111111111111111
+0151 1111111111111111111111111111111111111111111111111111111
+0152 1111111111111111111111111111111111111111111111111111111
+0153 1111111111111111111111111111111111111111111111111111111
+0154 1111111111111111111111111111111111111111111111111111111
+0155 1111111111111111111111111111111111111111111111111111111
+0156 1111111111111111111111111111111111111111111111111111111
+0157 1111111111111111111111111111111111111111111111111111111
+0158 1111111111111111111111111111111111111111111111111111111
+0159 1111111111111111111111111111111111111111111111111111111
+0160 1111111111111111111111111111111111111111111111111111111
+0161 1111111111111111111111111111111111111111111111111111111
+0162 1111111111111111111111111111111111111111111111111111111
+0163 1111111111111111111111111111111111111111111111111111111
+0164 1111111111111111111111111111111111111111111111111111111
+0165 1111111111111111111111111111111111111111111111111111111
+0166 1111111111111111111111111111111111111111111111111111111
+0167 1111111111111111111111111111111111111111111111111111111
+0168 1111111111111111111111111111111111111111111111111111111
+0169 1111111111111111111111111111111111111111111111111111111
+0170 1111111111111111111111111111111111111111111111111111111
+0171 1111111111111111111111111111111111111111111111111111111
+0172 1111111111111111111111111111111111111111111111111111111
+0173 1111111111111111111111111111111111111111111111111111111
+0174 1111111111111111111111111111111111111111111111111111111
+0175 1111111111111111111111111111111111111111111111111111111
+0176 1111111111111111111111111111111111111111111111111111111
+0177 1111111111111111111111111111111111111111111111111111111
+0178 1111111111111111111111111111111111111111111111111111111
+0179 1111111111111111111111111111111111111111111111111111111
+0180 1111111111111111111111111111111111111111111111111111111
+0181 1111111111111111111111111111111111111111111111111111111
+0182 1111111111111111111111111111111111111111111111111111111
+0183 1111111111111111111111111111111111111111111111111111111
+0184 1111111111111111111111111111111111111111111111111111111
+0185 1111111111111111111111111111111111111111111111111111111
+0186 1111111111111111111111111111111111111111111111111111111
+0187 1111111111111111111111111111111111111111111111111111111
+0188 1111111111111111111111111111111111111111111111111111111
+0189 1111111111111111111111111111111111111111111111111111111
+0190 1111111111111111111111111111111111111111111111111111111
+0191 1111111111111111111111111111111111111111111111111111111
+0192 1111111111111111111111111111111111111111111111111111111
+0193 1111111111111111111111111111111111111111111111111111111
+0194 1111111111111111111111111111111111111111111111111111111
+0195 1111111111111111111111111111111111111111111111111111111
+0196 1111111111111111111111111111111111111111111111111111111
+0197 1111111111111111111111111111111111111111111111111111111
+0198 1111111111111111111111111111111111111111111111111111111
+0199 1111111111111111111111111111111111111111111111111111111
+0200 1111111111111111111111111111111111111111111111111111111
+0201 1111111111111111111111111111111111111111111111111111111
+0202 1111111111111111111111111111111111111111111111111111111
+0203 1111111111111111111111111111111111111111111111111111111
+0204 1111111111111111111111111111111111111111111111111111111
+0205 1111111111111111111111111111111111111111111111111111111
+0206 1111111111111111111111111111111111111111111111111111111
+0207 1111111111111111111111111111111111111111111111111111111
+0208 1111111111111111111111111111111111111111111111111111111
+0209 1111111111111111111111111111111111111111111111111111111
+0210 1111111111111111111111111111111111111111111111111111111
+0211 1111111111111111111111111111111111111111111111111111111
+0212 1111111111111111111111111111111111111111111111111111111
+0213 1111111111111111111111111111111111111111111111111111111
+0214 1111111111111111111111111111111111111111111111111111111
+0215 1111111111111111111111111111111111111111111111111111111
+0216 1111111111111111111111111111111111111111111111111111111
+0217 1111111111111111111111111111111111111111111111111111111
+0218 1111111111111111111111111111111111111111111111111111111
+0219 1111111111111111111111111111111111111111111111111111111
+0220 1111111111111111111111111111111111111111111111111111111
+0221 1111111111111111111111111111111111111111111111111111111
+0222 1111111111111111111111111111111111111111111111111111111
+0223 1111111111111111111111111111111111111111111111111111111
+0224 1111111111111111111111111111111111111111111111111111111
+0225 1111111111111111111111111111111111111111111111111111111
+0226 1111111111111111111111111111111111111111111111111111111
+0227 1111111111111111111111111111111111111111111111111111111
+0228 1111111111111111111111111111111111111111111111111111111
+0229 1111111111111111111111111111111111111111111111111111111
+0230 1111111111111111111111111111111111111111111111111111111
+0231 1111111111111111111111111111111111111111111111111111111
+0232 1111111111111111111111111111111111111111111111111111111
+0233 1111111111111111111111111111111111111111111111111111111
+0234 1111111111111111111111111111111111111111111111111111111
+0235 1111111111111111111111111111111111111111111111111111111
+0236 1111111111111111111111111111111111111111111111111111111
+0237 1111111111111111111111111111111111111111111111111111111
+0238 1111111111111111111111111111111111111111111111111111111
+0239 1111111111111111111111111111111111111111111111111111111
+0240 1111111111111111111111111111111111111111111111111111111
+0241 1111111111111111111111111111111111111111111111111111111
+0242 1111111111111111111111111111111111111111111111111111111
+0243 1111111111111111111111111111111111111111111111111111111
+0244 1111111111111111111111111111111111111111111111111111111
+0245 1111111111111111111111111111111111111111111111111111111
+0246 1111111111111111111111111111111111111111111111111111111
+0247 1111111111111111111111111111111111111111111111111111111
+0248 1111111111111111111111111111111111111111111111111111111
+0249 1111111111111111111111111111111111111111111111111111111
+0250 1111111111111111111111111111111111111111111111111111111
+0251 1111111111111111111111111111111111111111111111111111111
+0252 1111111111111111111111111111111111111111111111111111111
+0253 1111111111111111111111111111111111111111111111111111111
+0254 1111111111111111111111111111111111111111111111111111111
+0255 1111111111111111111111111111111111111111111111111111111
+0256 1111111111111111111111111111111111111111111111111111111
+0257 1111111111111111111111111111111111111111111111111111111
+0258 1111111111111111111111111111111111111111111111111111111
+0259 1111111111111111111111111111111111111111111111111111111
+0260 1111111111111111111111111111111111111111111111111111111
+0261 1111111111111111111111111111111111111111111111111111111
+0262 1111111111111111111111111111111111111111111111111111111
+0263 1111111111111111111111111111111111111111111111111111111
+0264 1111111111111111111111111111111111111111111111111111111
+0265 1111111111111111111111111111111111111111111111111111111
+0266 1111111111111111111111111111111111111111111111111111111
+0267 1111111111111111111111111111111111111111111111111111111
+0268 1111111111111111111111111111111111111111111111111111111
+0269 1111111111111111111111111111111111111111111111111111111
+0270 1111111111111111111111111111111111111111111111111111111
+0271 1111111111111111111111111111111111111111111111111111111
+0272 1111111111111111111111111111111111111111111111111111111
+0273 1111111111111111111111111111111111111111111111111111111
+0274 1111111111111111111111111111111111111111111111111111111
+0275 1111111111111111111111111111111111111111111111111111111
+0276 1111111111111111111111111111111111111111111111111111111
+0277 1111111111111111111111111111111111111111111111111111111
+0278 1111111111111111111111111111111111111111111111111111111
+0279 1111111111111111111111111111111111111111111111111111111
+0280 1111111111111111111111111111111111111111111111111111111
+0281 1111111111111111111111111111111111111111111111111111111
+0282 1111111111111111111111111111111111111111111111111111111
+0283 1111111111111111111111111111111111111111111111111111111
+0284 1111111111111111111111111111111111111111111111111111111
+0285 1111111111111111111111111111111111111111111111111111111
+0286 1111111111111111111111111111111111111111111111111111111
+0287 1111111111111111111111111111111111111111111111111111111
+0288 1111111111111111111111111111111111111111111111111111111
+0289 1111111111111111111111111111111111111111111111111111111
+0290 1111111111111111111111111111111111111111111111111111111
+0291 1111111111111111111111111111111111111111111111111111111
+0292 1111111111111111111111111111111111111111111111111111111
+0293 1111111111111111111111111111111111111111111111111111111
+0294 1111111111111111111111111111111111111111111111111111111
+0295 1111111111111111111111111111111111111111111111111111111
+0296 1111111111111111111111111111111111111111111111111111111
+0297 1111111111111111111111111111111111111111111111111111111
+0298 1111111111111111111111111111111111111111111111111111111
+0299 1111111111111111111111111111111111111111111111111111111
+0300 1111111111111111111111111111111111111111111111111111111
+0301 1111111111111111111111111111111111111111111111111111111
+0302 1111111111111111111111111111111111111111111111111111111
+0303 1111111111111111111111111111111111111111111111111111111
+0304 1111111111111111111111111111111111111111111111111111111
+0305 1111111111111111111111111111111111111111111111111111111
+0306 1111111111111111111111111111111111111111111111111111111
+0307 1111111111111111111111111111111111111111111111111111111
+0308 1111111111111111111111111111111111111111111111111111111
+0309 1111111111111111111111111111111111111111111111111111111
+0310 1111111111111111111111111111111111111111111111111111111
+0311 1111111111111111111111111111111111111111111111111111111
+0312 1111111111111111111111111111111111111111111111111111111
+0313 1111111111111111111111111111111111111111111111111111111
+0314 1111111111111111111111111111111111111111111111111111111
+0315 1111111111111111111111111111111111111111111111111111111
+0316 1111111111111111111111111111111111111111111111111111111
+0317 1111111111111111111111111111111111111111111111111111111
+0318 1111111111111111111111111111111111111111111111111111111
+0319 1111111111111111111111111111111111111111111111111111111
+0320 1111111111111111111111111111111111111111111111111111111
+0321 1111111111111111111111111111111111111111111111111111111
+0322 1111111111111111111111111111111111111111111111111111111
+0323 1111111111111111111111111111111111111111111111111111111
+0324 1111111111111111111111111111111111111111111111111111111
+0325 1111111111111111111111111111111111111111111111111111111
+0326 1111111111111111111111111111111111111111111111111111111
+0327 1111111111111111111111111111111111111111111111111111111
+0328 1111111111111111111111111111111111111111111111111111111
+0329 1111111111111111111111111111111111111111111111111111111
+0330 1111111111111111111111111111111111111111111111111111111
+0331 1111111111111111111111111111111111111111111111111111111
+0332 1111111111111111111111111111111111111111111111111111111
+0333 1111111111111111111111111111111111111111111111111111111
+0334 1111111111111111111111111111111111111111111111111111111
+0335 1111111111111111111111111111111111111111111111111111111
+0336 1111111111111111111111111111111111111111111111111111111
+0337 1111111111111111111111111111111111111111111111111111111
+0338 1111111111111111111111111111111111111111111111111111111
+0339 1111111111111111111111111111111111111111111111111111111
+0340 1111111111111111111111111111111111111111111111111111111
+0341 1111111111111111111111111111111111111111111111111111111
+0342 1111111111111111111111111111111111111111111111111111111
+0343 1111111111111111111111111111111111111111111111111111111
+0344 1111111111111111111111111111111111111111111111111111111
+0345 1111111111111111111111111111111111111111111111111111111
+0346 1111111111111111111111111111111111111111111111111111111
+0347 1111111111111111111111111111111111111111111111111111111
+0348 1111111111111111111111111111111111111111111111111111111
+0349 1111111111111111111111111111111111111111111111111111111
+0350 1111111111111111111111111111111111111111111111111111111
+0351 1111111111111111111111111111111111111111111111111111111
+0352 1111111111111111111111111111111111111111111111111111111
+0353 1111111111111111111111111111111111111111111111111111111
+0354 1111111111111111111111111111111111111111111111111111111
+0355 1111111111111111111111111111111111111111111111111111111
+0356 1111111111111111111111111111111111111111111111111111111
+0357 1111111111111111111111111111111111111111111111111111111
+0358 1111111111111111111111111111111111111111111111111111111
+0359 1111111111111111111111111111111111111111111111111111111
+0360 1111111111111111111111111111111111111111111111111111111
+0361 1111111111111111111111111111111111111111111111111111111
+0362 1111111111111111111111111111111111111111111111111111111
+0363 1111111111111111111111111111111111111111111111111111111
+0364 1111111111111111111111111111111111111111111111111111111
+0365 1111111111111111111111111111111111111111111111111111111
+0366 1111111111111111111111111111111111111111111111111111111
+0367 1111111111111111111111111111111111111111111111111111111
+0368 1111111111111111111111111111111111111111111111111111111
+0369 1111111111111111111111111111111111111111111111111111111
+0370 1111111111111111111111111111111111111111111111111111111
+0371 1111111111111111111111111111111111111111111111111111111
+0372 1111111111111111111111111111111111111111111111111111111
+0373 1111111111111111111111111111111111111111111111111111111
+0374 1111111111111111111111111111111111111111111111111111111
+0375 1111111111111111111111111111111111111111111111111111111
+0376 1111111111111111111111111111111111111111111111111111111
+0377 1111111111111111111111111111111111111111111111111111111
+0378 1111111111111111111111111111111111111111111111111111111
+0379 1111111111111111111111111111111111111111111111111111111
+0380 1111111111111111111111111111111111111111111111111111111
+0381 1111111111111111111111111111111111111111111111111111111
+0382 1111111111111111111111111111111111111111111111111111111
+0383 1111111111111111111111111111111111111111111111111111111
+0384 1111111111111111111111111111111111111111111111111111111
+0385 1111111111111111111111111111111111111111111111111111111
+0386 1111111111111111111111111111111111111111111111111111111
+0387 1111111111111111111111111111111111111111111111111111111
+0388 1111111111111111111111111111111111111111111111111111111
+0389 1111111111111111111111111111111111111111111111111111111
+0390 1111111111111111111111111111111111111111111111111111111
+0391 1111111111111111111111111111111111111111111111111111111
+0392 1111111111111111111111111111111111111111111111111111111
+0393 1111111111111111111111111111111111111111111111111111111
+0394 1111111111111111111111111111111111111111111111111111111
+0395 1111111111111111111111111111111111111111111111111111111
+0396 1111111111111111111111111111111111111111111111111111111
+0397 1111111111111111111111111111111111111111111111111111111
+0398 1111111111111111111111111111111111111111111111111111111
+0399 1111111111111111111111111111111111111111111111111111111
+0400 1111111111111111111111111111111111111111111111111111111
+0401 1111111111111111111111111111111111111111111111111111111
+0402 1111111111111111111111111111111111111111111111111111111
+0403 1111111111111111111111111111111111111111111111111111111
+0404 1111111111111111111111111111111111111111111111111111111
+0405 1111111111111111111111111111111111111111111111111111111
+0406 1111111111111111111111111111111111111111111111111111111
+0407 1111111111111111111111111111111111111111111111111111111
+0408 1111111111111111111111111111111111111111111111111111111
+0409 1111111111111111111111111111111111111111111111111111111
+0410 1111111111111111111111111111111111111111111111111111111
+0411 1111111111111111111111111111111111111111111111111111111
+0412 1111111111111111111111111111111111111111111111111111111
+0413 1111111111111111111111111111111111111111111111111111111
+0414 1111111111111111111111111111111111111111111111111111111
+0415 1111111111111111111111111111111111111111111111111111111
+0416 1111111111111111111111111111111111111111111111111111111
+0417 1111111111111111111111111111111111111111111111111111111
+0418 1111111111111111111111111111111111111111111111111111111
+0419 1111111111111111111111111111111111111111111111111111111
+0420 1111111111111111111111111111111111111111111111111111111
+0421 1111111111111111111111111111111111111111111111111111111
+0422 1111111111111111111111111111111111111111111111111111111
+0423 1111111111111111111111111111111111111111111111111111111
+0424 1111111111111111111111111111111111111111111111111111111
+0425 1111111111111111111111111111111111111111111111111111111
+0426 1111111111111111111111111111111111111111111111111111111
+0427 1111111111111111111111111111111111111111111111111111111
+0428 1111111111111111111111111111111111111111111111111111111
+0429 1111111111111111111111111111111111111111111111111111111
+0430 1111111111111111111111111111111111111111111111111111111
+0431 1111111111111111111111111111111111111111111111111111111
+0432 1111111111111111111111111111111111111111111111111111111
+0433 1111111111111111111111111111111111111111111111111111111
+0434 1111111111111111111111111111111111111111111111111111111
+0435 1111111111111111111111111111111111111111111111111111111
+0436 1111111111111111111111111111111111111111111111111111111
+0437 1111111111111111111111111111111111111111111111111111111
+0438 1111111111111111111111111111111111111111111111111111111
+0439 1111111111111111111111111111111111111111111111111111111
+0440 1111111111111111111111111111111111111111111111111111111
+0441 1111111111111111111111111111111111111111111111111111111
+0442 1111111111111111111111111111111111111111111111111111111
+0443 1111111111111111111111111111111111111111111111111111111
+0444 1111111111111111111111111111111111111111111111111111111
+0445 1111111111111111111111111111111111111111111111111111111
+0446 1111111111111111111111111111111111111111111111111111111
+0447 1111111111111111111111111111111111111111111111111111111
+0448 1111111111111111111111111111111111111111111111111111111
+0449 1111111111111111111111111111111111111111111111111111111
+0450 1111111111111111111111111111111111111111111111111111111
+0451 1111111111111111111111111111111111111111111111111111111
+0452 1111111111111111111111111111111111111111111111111111111
+0453 1111111111111111111111111111111111111111111111111111111
+0454 1111111111111111111111111111111111111111111111111111111
+0455 1111111111111111111111111111111111111111111111111111111
+0456 1111111111111111111111111111111111111111111111111111111
+0457 1111111111111111111111111111111111111111111111111111111
+0458 1111111111111111111111111111111111111111111111111111111
+0459 1111111111111111111111111111111111111111111111111111111
+0460 1111111111111111111111111111111111111111111111111111111
+0461 1111111111111111111111111111111111111111111111111111111
+0462 1111111111111111111111111111111111111111111111111111111
+0463 1111111111111111111111111111111111111111111111111111111
+0464 1111111111111111111111111111111111111111111111111111111
+0465 1111111111111111111111111111111111111111111111111111111
+0466 1111111111111111111111111111111111111111111111111111111
+0467 1111111111111111111111111111111111111111111111111111111
+0468 1111111111111111111111111111111111111111111111111111111
+0469 1111111111111111111111111111111111111111111111111111111
+0470 1111111111111111111111111111111111111111111111111111111
+0471 1111111111111111111111111111111111111111111111111111111
+0472 1111111111111111111111111111111111111111111111111111111
+0473 1111111111111111111111111111111111111111111111111111111
+0474 1111111111111111111111111111111111111111111111111111111
+0475 1111111111111111111111111111111111111111111111111111111
+0476 1111111111111111111111111111111111111111111111111111111
+0477 1111111111111111111111111111111111111111111111111111111
+0478 1111111111111111111111111111111111111111111111111111111
+0479 1111111111111111111111111111111111111111111111111111111
+0480 1111111111111111111111111111111111111111111111111111111
+0481 1111111111111111111111111111111111111111111111111111111
+0482 1111111111111111111111111111111111111111111111111111111
+0483 1111111111111111111111111111111111111111111111111111111
+0484 1111111111111111111111111111111111111111111111111111111
+0485 1111111111111111111111111111111111111111111111111111111
+0486 1111111111111111111111111111111111111111111111111111111
+0487 1111111111111111111111111111111111111111111111111111111
+0488 1111111111111111111111111111111111111111111111111111111
+0489 1111111111111111111111111111111111111111111111111111111
+0490 1111111111111111111111111111111111111111111111111111111
+0491 1111111111111111111111111111111111111111111111111111111
+0492 1111111111111111111111111111111111111111111111111111111
+0493 1111111111111111111111111111111111111111111111111111111
+0494 1111111111111111111111111111111111111111111111111111111
+0495 1111111111111111111111111111111111111111111111111111111
+0496 1111111111111111111111111111111111111111111111111111111
+0497 1111111111111111111111111111111111111111111111111111111
+0498 1111111111111111111111111111111111111111111111111111111
+0499 1111111111111111111111111111111111111111111111111111111
+0500 1111111111111111111111111111111111111111111111111111111
+0501 1111111111111111111111111111111111111111111111111111111
+0502 1111111111111111111111111111111111111111111111111111111
+0503 1111111111111111111111111111111111111111111111111111111
+0504 1111111111111111111111111111111111111111111111111111111
+0505 1111111111111111111111111111111111111111111111111111111
+0506 1111111111111111111111111111111111111111111111111111111
+0507 1111111111111111111111111111111111111111111111111111111
+0508 1111111111111111111111111111111111111111111111111111111
+0509 1111111111111111111111111111111111111111111111111111111
+0510 1111111111111111111111111111111111111111111111111111111
+0511 1111111111111111111111111111111111111111111111111111111
+0512 1111111111111111111111111111111111111111111111111111111
+0513 1111111111111111111111111111111111111111111111111111111
+0514 1111111111111111111111111111111111111111111111111111111
+0515 1111111111111111111111111111111111111111111111111111111
+0516 1111111111111111111111111111111111111111111111111111111
+0517 1111111111111111111111111111111111111111111111111111111
+0518 1111111111111111111111111111111111111111111111111111111
+0519 1111111111111111111111111111111111111111111111111111111
+0520 1111111111111111111111111111111111111111111111111111111
+0521 1111111111111111111111111111111111111111111111111111111
+0522 1111111111111111111111111111111111111111111111111111111
+0523 1111111111111111111111111111111111111111111111111111111
+0524 1111111111111111111111111111111111111111111111111111111
+0525 1111111111111111111111111111111111111111111111111111111
+0526 1111111111111111111111111111111111111111111111111111111
+0527 1111111111111111111111111111111111111111111111111111111
+0528 1111111111111111111111111111111111111111111111111111111
+0529 1111111111111111111111111111111111111111111111111111111
+0530 1111111111111111111111111111111111111111111111111111111
+0531 1111111111111111111111111111111111111111111111111111111
+0532 1111111111111111111111111111111111111111111111111111111
+0533 1111111111111111111111111111111111111111111111111111111
+0534 1111111111111111111111111111111111111111111111111111111
+0535 1111111111111111111111111111111111111111111111111111111
+0536 1111111111111111111111111111111111111111111111111111111
+0537 1111111111111111111111111111111111111111111111111111111
+0538 1111111111111111111111111111111111111111111111111111111
+0539 1111111111111111111111111111111111111111111111111111111
+0540 1111111111111111111111111111111111111111111111111111111
+0541 1111111111111111111111111111111111111111111111111111111
+0542 1111111111111111111111111111111111111111111111111111111
+0543 1111111111111111111111111111111111111111111111111111111
+0544 1111111111111111111111111111111111111111111111111111111
+0545 1111111111111111111111111111111111111111111111111111111
+0546 1111111111111111111111111111111111111111111111111111111
+0547 1111111111111111111111111111111111111111111111111111111
+0548 1111111111111111111111111111111111111111111111111111111
+0549 1111111111111111111111111111111111111111111111111111111
+0550 1111111111111111111111111111111111111111111111111111111
+0551 1111111111111111111111111111111111111111111111111111111
+0552 1111111111111111111111111111111111111111111111111111111
+0553 1111111111111111111111111111111111111111111111111111111
+0554 1111111111111111111111111111111111111111111111111111111
+0555 1111111111111111111111111111111111111111111111111111111
+0556 1111111111111111111111111111111111111111111111111111111
+0557 1111111111111111111111111111111111111111111111111111111
+0558 1111111111111111111111111111111111111111111111111111111
+0559 1111111111111111111111111111111111111111111111111111111
+0560 1111111111111111111111111111111111111111111111111111111
+0561 1111111111111111111111111111111111111111111111111111111
+0562 1111111111111111111111111111111111111111111111111111111
+0563 1111111111111111111111111111111111111111111111111111111
+0564 1111111111111111111111111111111111111111111111111111111
+0565 1111111111111111111111111111111111111111111111111111111
+0566 1111111111111111111111111111111111111111111111111111111
+0567 1111111111111111111111111111111111111111111111111111111
+0568 1111111111111111111111111111111111111111111111111111111
+0569 1111111111111111111111111111111111111111111111111111111
+0570 1111111111111111111111111111111111111111111111111111111
+0571 1111111111111111111111111111111111111111111111111111111
+0572 1111111111111111111111111111111111111111111111111111111
+0573 1111111111111111111111111111111111111111111111111111111
+0574 1111111111111111111111111111111111111111111111111111111
+0575 1111111111111111111111111111111111111111111111111111111
+0576 1111111111111111111111111111111111111111111111111111111
+0577 1111111111111111111111111111111111111111111111111111111
+0578 1111111111111111111111111111111111111111111111111111111
+0579 1111111111111111111111111111111111111111111111111111111
+0580 1111111111111111111111111111111111111111111111111111111
+0581 1111111111111111111111111111111111111111111111111111111
+0582 1111111111111111111111111111111111111111111111111111111
+0583 1111111111111111111111111111111111111111111111111111111
+0584 1111111111111111111111111111111111111111111111111111111
+0585 1111111111111111111111111111111111111111111111111111111
+0586 1111111111111111111111111111111111111111111111111111111
+0587 1111111111111111111111111111111111111111111111111111111
+0588 1111111111111111111111111111111111111111111111111111111
+0589 1111111111111111111111111111111111111111111111111111111
+0590 1111111111111111111111111111111111111111111111111111111
+0591 1111111111111111111111111111111111111111111111111111111
+0592 1111111111111111111111111111111111111111111111111111111
+0593 1111111111111111111111111111111111111111111111111111111
+0594 1111111111111111111111111111111111111111111111111111111
+0595 1111111111111111111111111111111111111111111111111111111
+0596 1111111111111111111111111111111111111111111111111111111
+0597 1111111111111111111111111111111111111111111111111111111
+0598 1111111111111111111111111111111111111111111111111111111
+0599 1111111111111111111111111111111111111111111111111111111
+0600 1111111111111111111111111111111111111111111111111111111
+0601 1111111111111111111111111111111111111111111111111111111
+0602 1111111111111111111111111111111111111111111111111111111
+0603 1111111111111111111111111111111111111111111111111111111
+0604 1111111111111111111111111111111111111111111111111111111
+0605 1111111111111111111111111111111111111111111111111111111
+0606 1111111111111111111111111111111111111111111111111111111
+0607 1111111111111111111111111111111111111111111111111111111
+0608 1111111111111111111111111111111111111111111111111111111
+0609 1111111111111111111111111111111111111111111111111111111
+0610 1111111111111111111111111111111111111111111111111111111
+0611 1111111111111111111111111111111111111111111111111111111
+0612 1111111111111111111111111111111111111111111111111111111
+0613 1111111111111111111111111111111111111111111111111111111
+0614 1111111111111111111111111111111111111111111111111111111
+0615 1111111111111111111111111111111111111111111111111111111
+0616 1111111111111111111111111111111111111111111111111111111
+0617 1111111111111111111111111111111111111111111111111111111
+0618 1111111111111111111111111111111111111111111111111111111
+0619 1111111111111111111111111111111111111111111111111111111
+0620 1111111111111111111111111111111111111111111111111111111
+0621 1111111111111111111111111111111111111111111111111111111
+0622 1111111111111111111111111111111111111111111111111111111
+0623 1111111111111111111111111111111111111111111111111111111
+0624 1111111111111111111111111111111111111111111111111111111
+0625 1111111111111111111111111111111111111111111111111111111
+0626 1111111111111111111111111111111111111111111111111111111
+0627 1111111111111111111111111111111111111111111111111111111
+0628 1111111111111111111111111111111111111111111111111111111
+0629 1111111111111111111111111111111111111111111111111111111
+0630 1111111111111111111111111111111111111111111111111111111
+0631 1111111111111111111111111111111111111111111111111111111
+0632 1111111111111111111111111111111111111111111111111111111
+0633 1111111111111111111111111111111111111111111111111111111
+0634 1111111111111111111111111111111111111111111111111111111
+0635 1111111111111111111111111111111111111111111111111111111
+0636 1111111111111111111111111111111111111111111111111111111
+0637 1111111111111111111111111111111111111111111111111111111
+0638 1111111111111111111111111111111111111111111111111111111
+0639 1111111111111111111111111111111111111111111111111111111
+0640 1111111111111111111111111111111111111111111111111111111
+0641 1111111111111111111111111111111111111111111111111111111
+0642 1111111111111111111111111111111111111111111111111111111
+0643 1111111111111111111111111111111111111111111111111111111
+0644 1111111111111111111111111111111111111111111111111111111
+0645 1111111111111111111111111111111111111111111111111111111
+0646 1111111111111111111111111111111111111111111111111111111
+0647 1111111111111111111111111111111111111111111111111111111
+0648 1111111111111111111111111111111111111111111111111111111
+0649 1111111111111111111111111111111111111111111111111111111
+0650 1111111111111111111111111111111111111111111111111111111
+0651 1111111111111111111111111111111111111111111111111111111
+0652 1111111111111111111111111111111111111111111111111111111
+0653 1111111111111111111111111111111111111111111111111111111
+0654 1111111111111111111111111111111111111111111111111111111
+0655 1111111111111111111111111111111111111111111111111111111
+0656 1111111111111111111111111111111111111111111111111111111
+0657 1111111111111111111111111111111111111111111111111111111
+0658 1111111111111111111111111111111111111111111111111111111
+0659 1111111111111111111111111111111111111111111111111111111
+0660 1111111111111111111111111111111111111111111111111111111
+0661 1111111111111111111111111111111111111111111111111111111
+0662 1111111111111111111111111111111111111111111111111111111
+0663 1111111111111111111111111111111111111111111111111111111
+0664 1111111111111111111111111111111111111111111111111111111
+0665 1111111111111111111111111111111111111111111111111111111
+0666 1111111111111111111111111111111111111111111111111111111
+0667 1111111111111111111111111111111111111111111111111111111
+0668 1111111111111111111111111111111111111111111111111111111
+0669 1111111111111111111111111111111111111111111111111111111
+0670 1111111111111111111111111111111111111111111111111111111
+0671 1111111111111111111111111111111111111111111111111111111
+0672 1111111111111111111111111111111111111111111111111111111
+0673 1111111111111111111111111111111111111111111111111111111
+0674 1111111111111111111111111111111111111111111111111111111
+0675 1111111111111111111111111111111111111111111111111111111
+0676 1111111111111111111111111111111111111111111111111111111
+0677 1111111111111111111111111111111111111111111111111111111
+0678 1111111111111111111111111111111111111111111111111111111
+0679 1111111111111111111111111111111111111111111111111111111
+0680 1111111111111111111111111111111111111111111111111111111
+0681 1111111111111111111111111111111111111111111111111111111
+0682 1111111111111111111111111111111111111111111111111111111
+0683 1111111111111111111111111111111111111111111111111111111
+0684 1111111111111111111111111111111111111111111111111111111
+0685 1111111111111111111111111111111111111111111111111111111
+0686 1111111111111111111111111111111111111111111111111111111
+0687 1111111111111111111111111111111111111111111111111111111
+0688 1111111111111111111111111111111111111111111111111111111
+0689 1111111111111111111111111111111111111111111111111111111
+0690 1111111111111111111111111111111111111111111111111111111
+0691 1111111111111111111111111111111111111111111111111111111
+0692 1111111111111111111111111111111111111111111111111111111
+0693 1111111111111111111111111111111111111111111111111111111
+0694 1111111111111111111111111111111111111111111111111111111
+0695 1111111111111111111111111111111111111111111111111111111
+0696 1111111111111111111111111111111111111111111111111111111
+0697 1111111111111111111111111111111111111111111111111111111
+0698 1111111111111111111111111111111111111111111111111111111
+0699 1111111111111111111111111111111111111111111111111111111
+0700 1111111111111111111111111111111111111111111111111111111
+0701 1111111111111111111111111111111111111111111111111111111
+0702 1111111111111111111111111111111111111111111111111111111
+0703 1111111111111111111111111111111111111111111111111111111
+0704 1111111111111111111111111111111111111111111111111111111
+0705 1111111111111111111111111111111111111111111111111111111
+0706 1111111111111111111111111111111111111111111111111111111
+0707 1111111111111111111111111111111111111111111111111111111
+0708 1111111111111111111111111111111111111111111111111111111
+0709 1111111111111111111111111111111111111111111111111111111
+0710 1111111111111111111111111111111111111111111111111111111
+0711 1111111111111111111111111111111111111111111111111111111
+0712 1111111111111111111111111111111111111111111111111111111
+0713 1111111111111111111111111111111111111111111111111111111
+0714 1111111111111111111111111111111111111111111111111111111
+0715 1111111111111111111111111111111111111111111111111111111
+0716 1111111111111111111111111111111111111111111111111111111
+0717 1111111111111111111111111111111111111111111111111111111
+0718 1111111111111111111111111111111111111111111111111111111
+0719 1111111111111111111111111111111111111111111111111111111
+0720 1111111111111111111111111111111111111111111111111111111
+0721 1111111111111111111111111111111111111111111111111111111
+0722 1111111111111111111111111111111111111111111111111111111
+0723 1111111111111111111111111111111111111111111111111111111
+0724 1111111111111111111111111111111111111111111111111111111
+0725 1111111111111111111111111111111111111111111111111111111
+0726 1111111111111111111111111111111111111111111111111111111
+0727 1111111111111111111111111111111111111111111111111111111
+0728 1111111111111111111111111111111111111111111111111111111
+0729 1111111111111111111111111111111111111111111111111111111
+0730 1111111111111111111111111111111111111111111111111111111
+0731 1111111111111111111111111111111111111111111111111111111
+0732 1111111111111111111111111111111111111111111111111111111
+0733 1111111111111111111111111111111111111111111111111111111
+0734 1111111111111111111111111111111111111111111111111111111
+0735 1111111111111111111111111111111111111111111111111111111
+0736 1111111111111111111111111111111111111111111111111111111
+0737 1111111111111111111111111111111111111111111111111111111
+0738 1111111111111111111111111111111111111111111111111111111
+0739 1111111111111111111111111111111111111111111111111111111
+0740 1111111111111111111111111111111111111111111111111111111
+0741 1111111111111111111111111111111111111111111111111111111
+0742 1111111111111111111111111111111111111111111111111111111
+0743 1111111111111111111111111111111111111111111111111111111
+0744 1111111111111111111111111111111111111111111111111111111
+0745 1111111111111111111111111111111111111111111111111111111
+0746 1111111111111111111111111111111111111111111111111111111
+0747 1111111111111111111111111111111111111111111111111111111
+0748 1111111111111111111111111111111111111111111111111111111
+0749 1111111111111111111111111111111111111111111111111111111
+0750 1111111111111111111111111111111111111111111111111111111
+0751 1111111111111111111111111111111111111111111111111111111
+0752 1111111111111111111111111111111111111111111111111111111
+0753 1111111111111111111111111111111111111111111111111111111
+0754 1111111111111111111111111111111111111111111111111111111
+0755 1111111111111111111111111111111111111111111111111111111
+0756 1111111111111111111111111111111111111111111111111111111
+0757 1111111111111111111111111111111111111111111111111111111
+0758 1111111111111111111111111111111111111111111111111111111
+0759 1111111111111111111111111111111111111111111111111111111
+0760 1111111111111111111111111111111111111111111111111111111
+0761 1111111111111111111111111111111111111111111111111111111
+0762 1111111111111111111111111111111111111111111111111111111
+0763 1111111111111111111111111111111111111111111111111111111
+0764 1111111111111111111111111111111111111111111111111111111
+0765 1111111111111111111111111111111111111111111111111111111
+0766 1111111111111111111111111111111111111111111111111111111
+0767 1111111111111111111111111111111111111111111111111111111
+0768 1111111111111111111111111111111111111111111111111111111
+0769 1111111111111111111111111111111111111111111111111111111
+0770 1111111111111111111111111111111111111111111111111111111
+0771 1111111111111111111111111111111111111111111111111111111
+0772 1111111111111111111111111111111111111111111111111111111
+0773 1111111111111111111111111111111111111111111111111111111
+0774 1111111111111111111111111111111111111111111111111111111
+0775 1111111111111111111111111111111111111111111111111111111
+0776 1111111111111111111111111111111111111111111111111111111
+0777 1111111111111111111111111111111111111111111111111111111
+0778 1111111111111111111111111111111111111111111111111111111
+0779 1111111111111111111111111111111111111111111111111111111
+0780 1111111111111111111111111111111111111111111111111111111
+0781 1111111111111111111111111111111111111111111111111111111
+0782 1111111111111111111111111111111111111111111111111111111
+0783 1111111111111111111111111111111111111111111111111111111
+0784 1111111111111111111111111111111111111111111111111111111
+0785 1111111111111111111111111111111111111111111111111111111
+0786 1111111111111111111111111111111111111111111111111111111
+0787 1111111111111111111111111111111111111111111111111111111
+0788 1111111111111111111111111111111111111111111111111111111
+0789 1111111111111111111111111111111111111111111111111111111
+0790 1111111111111111111111111111111111111111111111111111111
+0791 1111111111111111111111111111111111111111111111111111111
+0792 1111111111111111111111111111111111111111111111111111111
+0793 1111111111111111111111111111111111111111111111111111111
+0794 1111111111111111111111111111111111111111111111111111111
+0795 1111111111111111111111111111111111111111111111111111111
+0796 1111111111111111111111111111111111111111111111111111111
+0797 1111111111111111111111111111111111111111111111111111111
+0798 1111111111111111111111111111111111111111111111111111111
+0799 1111111111111111111111111111111111111111111111111111111
+0800 1111111111111111111111111111111111111111111111111111111
+0801 1111111111111111111111111111111111111111111111111111111
+0802 1111111111111111111111111111111111111111111111111111111
+0803 1111111111111111111111111111111111111111111111111111111
+0804 1111111111111111111111111111111111111111111111111111111
+0805 1111111111111111111111111111111111111111111111111111111
+0806 1111111111111111111111111111111111111111111111111111111
+0807 1111111111111111111111111111111111111111111111111111111
+0808 1111111111111111111111111111111111111111111111111111111
+0809 1111111111111111111111111111111111111111111111111111111
+0810 1111111111111111111111111111111111111111111111111111111
+0811 1111111111111111111111111111111111111111111111111111111
+0812 1111111111111111111111111111111111111111111111111111111
+0813 1111111111111111111111111111111111111111111111111111111
+0814 1111111111111111111111111111111111111111111111111111111
+0815 1111111111111111111111111111111111111111111111111111111
+0816 1111111111111111111111111111111111111111111111111111111
+0817 1111111111111111111111111111111111111111111111111111111
+0818 1111111111111111111111111111111111111111111111111111111
+0819 1111111111111111111111111111111111111111111111111111111
+0820 1111111111111111111111111111111111111111111111111111111
+0821 1111111111111111111111111111111111111111111111111111111
+0822 1111111111111111111111111111111111111111111111111111111
+0823 1111111111111111111111111111111111111111111111111111111
+0824 1111111111111111111111111111111111111111111111111111111
+0825 1111111111111111111111111111111111111111111111111111111
+0826 1111111111111111111111111111111111111111111111111111111
+0827 1111111111111111111111111111111111111111111111111111111
+0828 1111111111111111111111111111111111111111111111111111111
+0829 1111111111111111111111111111111111111111111111111111111
+0830 1111111111111111111111111111111111111111111111111111111
+0831 1111111111111111111111111111111111111111111111111111111
+0832 1111111111111111111111111111111111111111111111111111111
+0833 1111111111111111111111111111111111111111111111111111111
+0834 1111111111111111111111111111111111111111111111111111111
+0835 1111111111111111111111111111111111111111111111111111111
+0836 1111111111111111111111111111111111111111111111111111111
+0837 1111111111111111111111111111111111111111111111111111111
+0838 1111111111111111111111111111111111111111111111111111111
+0839 1111111111111111111111111111111111111111111111111111111
+0840 1111111111111111111111111111111111111111111111111111111
+0841 1111111111111111111111111111111111111111111111111111111
+0842 1111111111111111111111111111111111111111111111111111111
+0843 1111111111111111111111111111111111111111111111111111111
+0844 1111111111111111111111111111111111111111111111111111111
+0845 1111111111111111111111111111111111111111111111111111111
+0846 1111111111111111111111111111111111111111111111111111111
+0847 1111111111111111111111111111111111111111111111111111111
+0848 1111111111111111111111111111111111111111111111111111111
+0849 1111111111111111111111111111111111111111111111111111111
+0850 1111111111111111111111111111111111111111111111111111111
+0851 1111111111111111111111111111111111111111111111111111111
+0852 1111111111111111111111111111111111111111111111111111111
+0853 1111111111111111111111111111111111111111111111111111111
+0854 1111111111111111111111111111111111111111111111111111111
+0855 1111111111111111111111111111111111111111111111111111111
+0856 1111111111111111111111111111111111111111111111111111111
+0857 1111111111111111111111111111111111111111111111111111111
+0858 1111111111111111111111111111111111111111111111111111111
+0859 1111111111111111111111111111111111111111111111111111111
+0860 1111111111111111111111111111111111111111111111111111111
+0861 1111111111111111111111111111111111111111111111111111111
+0862 1111111111111111111111111111111111111111111111111111111
+0863 1111111111111111111111111111111111111111111111111111111
+0864 1111111111111111111111111111111111111111111111111111111
+0865 1111111111111111111111111111111111111111111111111111111
+0866 1111111111111111111111111111111111111111111111111111111
+0867 1111111111111111111111111111111111111111111111111111111
+0868 1111111111111111111111111111111111111111111111111111111
+0869 1111111111111111111111111111111111111111111111111111111
+0870 1111111111111111111111111111111111111111111111111111111
+0871 1111111111111111111111111111111111111111111111111111111
+0872 1111111111111111111111111111111111111111111111111111111
+0873 1111111111111111111111111111111111111111111111111111111
+0874 1111111111111111111111111111111111111111111111111111111
+0875 1111111111111111111111111111111111111111111111111111111
+0876 1111111111111111111111111111111111111111111111111111111
+0877 1111111111111111111111111111111111111111111111111111111
+0878 1111111111111111111111111111111111111111111111111111111
+0879 1111111111111111111111111111111111111111111111111111111
+0880 1111111111111111111111111111111111111111111111111111111
+0881 1111111111111111111111111111111111111111111111111111111
+0882 1111111111111111111111111111111111111111111111111111111
+0883 1111111111111111111111111111111111111111111111111111111
+0884 1111111111111111111111111111111111111111111111111111111
+0885 1111111111111111111111111111111111111111111111111111111
+0886 1111111111111111111111111111111111111111111111111111111
+0887 1111111111111111111111111111111111111111111111111111111
+0888 1111111111111111111111111111111111111111111111111111111
+0889 1111111111111111111111111111111111111111111111111111111
+0890 1111111111111111111111111111111111111111111111111111111
+0891 1111111111111111111111111111111111111111111111111111111
+0892 1111111111111111111111111111111111111111111111111111111
+0893 1111111111111111111111111111111111111111111111111111111
+0894 1111111111111111111111111111111111111111111111111111111
+0895 1111111111111111111111111111111111111111111111111111111
+0896 1111111111111111111111111111111111111111111111111111111
+0897 1111111111111111111111111111111111111111111111111111111
+0898 1111111111111111111111111111111111111111111111111111111
+0899 1111111111111111111111111111111111111111111111111111111
+0900 1111111111111111111111111111111111111111111111111111111
+0901 1111111111111111111111111111111111111111111111111111111
+0902 1111111111111111111111111111111111111111111111111111111
+0903 1111111111111111111111111111111111111111111111111111111
+0904 1111111111111111111111111111111111111111111111111111111
+0905 1111111111111111111111111111111111111111111111111111111
+0906 1111111111111111111111111111111111111111111111111111111
+0907 1111111111111111111111111111111111111111111111111111111
+0908 1111111111111111111111111111111111111111111111111111111
+0909 1111111111111111111111111111111111111111111111111111111
+0910 1111111111111111111111111111111111111111111111111111111
+0911 1111111111111111111111111111111111111111111111111111111
+0912 1111111111111111111111111111111111111111111111111111111
+0913 1111111111111111111111111111111111111111111111111111111
+0914 1111111111111111111111111111111111111111111111111111111
+0915 1111111111111111111111111111111111111111111111111111111
+0916 1111111111111111111111111111111111111111111111111111111
+0917 1111111111111111111111111111111111111111111111111111111
+0918 1111111111111111111111111111111111111111111111111111111
+0919 1111111111111111111111111111111111111111111111111111111
+0920 1111111111111111111111111111111111111111111111111111111
+0921 1111111111111111111111111111111111111111111111111111111
+0922 1111111111111111111111111111111111111111111111111111111
+0923 1111111111111111111111111111111111111111111111111111111
+0924 1111111111111111111111111111111111111111111111111111111
+0925 1111111111111111111111111111111111111111111111111111111
+0926 1111111111111111111111111111111111111111111111111111111
+0927 1111111111111111111111111111111111111111111111111111111
+0928 1111111111111111111111111111111111111111111111111111111
+0929 1111111111111111111111111111111111111111111111111111111
+0930 1111111111111111111111111111111111111111111111111111111
+0931 1111111111111111111111111111111111111111111111111111111
+0932 1111111111111111111111111111111111111111111111111111111
+0933 1111111111111111111111111111111111111111111111111111111
+0934 1111111111111111111111111111111111111111111111111111111
+0935 1111111111111111111111111111111111111111111111111111111
+0936 1111111111111111111111111111111111111111111111111111111
+0937 1111111111111111111111111111111111111111111111111111111
+0938 1111111111111111111111111111111111111111111111111111111
+0939 1111111111111111111111111111111111111111111111111111111
+0940 1111111111111111111111111111111111111111111111111111111
+0941 1111111111111111111111111111111111111111111111111111111
+0942 1111111111111111111111111111111111111111111111111111111
+0943 1111111111111111111111111111111111111111111111111111111
+0944 1111111111111111111111111111111111111111111111111111111
+0945 1111111111111111111111111111111111111111111111111111111
+0946 1111111111111111111111111111111111111111111111111111111
+0947 1111111111111111111111111111111111111111111111111111111
+0948 1111111111111111111111111111111111111111111111111111111
+0949 1111111111111111111111111111111111111111111111111111111
+0950 1111111111111111111111111111111111111111111111111111111
+0951 1111111111111111111111111111111111111111111111111111111
+0952 1111111111111111111111111111111111111111111111111111111
+0953 1111111111111111111111111111111111111111111111111111111
+0954 1111111111111111111111111111111111111111111111111111111
+0955 1111111111111111111111111111111111111111111111111111111
+0956 1111111111111111111111111111111111111111111111111111111
+0957 1111111111111111111111111111111111111111111111111111111
+0958 1111111111111111111111111111111111111111111111111111111
+0959 1111111111111111111111111111111111111111111111111111111
+0960 1111111111111111111111111111111111111111111111111111111
+0961 1111111111111111111111111111111111111111111111111111111
+0962 1111111111111111111111111111111111111111111111111111111
+0963 1111111111111111111111111111111111111111111111111111111
+0964 1111111111111111111111111111111111111111111111111111111
+0965 1111111111111111111111111111111111111111111111111111111
+0966 1111111111111111111111111111111111111111111111111111111
+0967 1111111111111111111111111111111111111111111111111111111
+0968 1111111111111111111111111111111111111111111111111111111
+0969 1111111111111111111111111111111111111111111111111111111
+0970 1111111111111111111111111111111111111111111111111111111
+0971 1111111111111111111111111111111111111111111111111111111
+0972 1111111111111111111111111111111111111111111111111111111
+0973 1111111111111111111111111111111111111111111111111111111
+0974 1111111111111111111111111111111111111111111111111111111
+0975 1111111111111111111111111111111111111111111111111111111
+0976 1111111111111111111111111111111111111111111111111111111
+0977 1111111111111111111111111111111111111111111111111111111
+0978 1111111111111111111111111111111111111111111111111111111
+0979 1111111111111111111111111111111111111111111111111111111
+0980 1111111111111111111111111111111111111111111111111111111
+0981 1111111111111111111111111111111111111111111111111111111
+0982 1111111111111111111111111111111111111111111111111111111
+0983 1111111111111111111111111111111111111111111111111111111
+0984 1111111111111111111111111111111111111111111111111111111
+0985 1111111111111111111111111111111111111111111111111111111
+0986 1111111111111111111111111111111111111111111111111111111
+0987 1111111111111111111111111111111111111111111111111111111
+0988 1111111111111111111111111111111111111111111111111111111
+0989 1111111111111111111111111111111111111111111111111111111
+0990 1111111111111111111111111111111111111111111111111111111
+0991 1111111111111111111111111111111111111111111111111111111
+0992 1111111111111111111111111111111111111111111111111111111
+0993 1111111111111111111111111111111111111111111111111111111
+0994 1111111111111111111111111111111111111111111111111111111
+0995 1111111111111111111111111111111111111111111111111111111
+0996 1111111111111111111111111111111111111111111111111111111
+0997 1111111111111111111111111111111111111111111111111111111
+0998 1111111111111111111111111111111111111111111111111111111
+0999 1111111111111111111111111111111111111111111111111111111

Added: trunk/main/planet/web/test/etc/web/dat.txt
===================================================================
--- trunk/main/planet/web/test/etc/web/dat.txt 2006-01-31 11:49:08 UTC (rev
1000)
+++ trunk/main/planet/web/test/etc/web/dat.txt 2006-01-31 12:10:53 UTC (rev
1001)
@@ -0,0 +1,4000 @@
+0000 2222222222222222222222222222222222222222222222222222222
+0001 2222222222222222222222222222222222222222222222222222222
+0002 2222222222222222222222222222222222222222222222222222222
+0003 2222222222222222222222222222222222222222222222222222222
+0004 2222222222222222222222222222222222222222222222222222222
+0005 2222222222222222222222222222222222222222222222222222222
+0006 2222222222222222222222222222222222222222222222222222222
+0007 2222222222222222222222222222222222222222222222222222222
+0008 2222222222222222222222222222222222222222222222222222222
+0009 2222222222222222222222222222222222222222222222222222222
+0010 2222222222222222222222222222222222222222222222222222222
+0011 2222222222222222222222222222222222222222222222222222222
+0012 2222222222222222222222222222222222222222222222222222222
+0013 2222222222222222222222222222222222222222222222222222222
+0014 2222222222222222222222222222222222222222222222222222222
+0015 2222222222222222222222222222222222222222222222222222222
+0016 2222222222222222222222222222222222222222222222222222222
+0017 2222222222222222222222222222222222222222222222222222222
+0018 2222222222222222222222222222222222222222222222222222222
+0019 2222222222222222222222222222222222222222222222222222222
+0020 2222222222222222222222222222222222222222222222222222222
+0021 2222222222222222222222222222222222222222222222222222222
+0022 2222222222222222222222222222222222222222222222222222222
+0023 2222222222222222222222222222222222222222222222222222222
+0024 2222222222222222222222222222222222222222222222222222222
+0025 2222222222222222222222222222222222222222222222222222222
+0026 2222222222222222222222222222222222222222222222222222222
+0027 2222222222222222222222222222222222222222222222222222222
+0028 2222222222222222222222222222222222222222222222222222222
+0029 2222222222222222222222222222222222222222222222222222222
+0030 2222222222222222222222222222222222222222222222222222222
+0031 2222222222222222222222222222222222222222222222222222222
+0032 2222222222222222222222222222222222222222222222222222222
+0033 2222222222222222222222222222222222222222222222222222222
+0034 2222222222222222222222222222222222222222222222222222222
+0035 2222222222222222222222222222222222222222222222222222222
+0036 2222222222222222222222222222222222222222222222222222222
+0037 2222222222222222222222222222222222222222222222222222222
+0038 2222222222222222222222222222222222222222222222222222222
+0039 2222222222222222222222222222222222222222222222222222222
+0040 2222222222222222222222222222222222222222222222222222222
+0041 2222222222222222222222222222222222222222222222222222222
+0042 2222222222222222222222222222222222222222222222222222222
+0043 2222222222222222222222222222222222222222222222222222222
+0044 2222222222222222222222222222222222222222222222222222222
+0045 2222222222222222222222222222222222222222222222222222222
+0046 2222222222222222222222222222222222222222222222222222222
+0047 2222222222222222222222222222222222222222222222222222222
+0048 2222222222222222222222222222222222222222222222222222222
+0049 2222222222222222222222222222222222222222222222222222222
+0050 2222222222222222222222222222222222222222222222222222222
+0051 2222222222222222222222222222222222222222222222222222222
+0052 2222222222222222222222222222222222222222222222222222222
+0053 2222222222222222222222222222222222222222222222222222222
+0054 2222222222222222222222222222222222222222222222222222222
+0055 2222222222222222222222222222222222222222222222222222222
+0056 2222222222222222222222222222222222222222222222222222222
+0057 2222222222222222222222222222222222222222222222222222222
+0058 2222222222222222222222222222222222222222222222222222222
+0059 2222222222222222222222222222222222222222222222222222222
+0060 2222222222222222222222222222222222222222222222222222222
+0061 2222222222222222222222222222222222222222222222222222222
+0062 2222222222222222222222222222222222222222222222222222222
+0063 2222222222222222222222222222222222222222222222222222222
+0064 2222222222222222222222222222222222222222222222222222222
+0065 2222222222222222222222222222222222222222222222222222222
+0066 2222222222222222222222222222222222222222222222222222222
+0067 2222222222222222222222222222222222222222222222222222222
+0068 2222222222222222222222222222222222222222222222222222222
+0069 2222222222222222222222222222222222222222222222222222222
+0070 2222222222222222222222222222222222222222222222222222222
+0071 2222222222222222222222222222222222222222222222222222222
+0072 2222222222222222222222222222222222222222222222222222222
+0073 2222222222222222222222222222222222222222222222222222222
+0074 2222222222222222222222222222222222222222222222222222222
+0075 2222222222222222222222222222222222222222222222222222222
+0076 2222222222222222222222222222222222222222222222222222222
+0077 2222222222222222222222222222222222222222222222222222222
+0078 2222222222222222222222222222222222222222222222222222222
+0079 2222222222222222222222222222222222222222222222222222222
+0080 2222222222222222222222222222222222222222222222222222222
+0081 2222222222222222222222222222222222222222222222222222222
+0082 2222222222222222222222222222222222222222222222222222222
+0083 2222222222222222222222222222222222222222222222222222222
+0084 2222222222222222222222222222222222222222222222222222222
+0085 2222222222222222222222222222222222222222222222222222222
+0086 2222222222222222222222222222222222222222222222222222222
+0087 2222222222222222222222222222222222222222222222222222222
+0088 2222222222222222222222222222222222222222222222222222222
+0089 2222222222222222222222222222222222222222222222222222222
+0090 2222222222222222222222222222222222222222222222222222222
+0091 2222222222222222222222222222222222222222222222222222222
+0092 2222222222222222222222222222222222222222222222222222222
+0093 2222222222222222222222222222222222222222222222222222222
+0094 2222222222222222222222222222222222222222222222222222222
+0095 2222222222222222222222222222222222222222222222222222222
+0096 2222222222222222222222222222222222222222222222222222222
+0097 2222222222222222222222222222222222222222222222222222222
+0098 2222222222222222222222222222222222222222222222222222222
+0099 2222222222222222222222222222222222222222222222222222222
+0100 2222222222222222222222222222222222222222222222222222222
+0101 2222222222222222222222222222222222222222222222222222222
+0102 2222222222222222222222222222222222222222222222222222222
+0103 2222222222222222222222222222222222222222222222222222222
+0104 2222222222222222222222222222222222222222222222222222222
+0105 2222222222222222222222222222222222222222222222222222222
+0106 2222222222222222222222222222222222222222222222222222222
+0107 2222222222222222222222222222222222222222222222222222222
+0108 2222222222222222222222222222222222222222222222222222222
+0109 2222222222222222222222222222222222222222222222222222222
+0110 2222222222222222222222222222222222222222222222222222222
+0111 2222222222222222222222222222222222222222222222222222222
+0112 2222222222222222222222222222222222222222222222222222222
+0113 2222222222222222222222222222222222222222222222222222222
+0114 2222222222222222222222222222222222222222222222222222222
+0115 2222222222222222222222222222222222222222222222222222222
+0116 2222222222222222222222222222222222222222222222222222222
+0117 2222222222222222222222222222222222222222222222222222222
+0118 2222222222222222222222222222222222222222222222222222222
+0119 2222222222222222222222222222222222222222222222222222222
+0120 2222222222222222222222222222222222222222222222222222222
+0121 2222222222222222222222222222222222222222222222222222222
+0122 2222222222222222222222222222222222222222222222222222222
+0123 2222222222222222222222222222222222222222222222222222222
+0124 2222222222222222222222222222222222222222222222222222222
+0125 2222222222222222222222222222222222222222222222222222222
+0126 2222222222222222222222222222222222222222222222222222222
+0127 2222222222222222222222222222222222222222222222222222222
+0128 2222222222222222222222222222222222222222222222222222222
+0129 2222222222222222222222222222222222222222222222222222222
+0130 2222222222222222222222222222222222222222222222222222222
+0131 2222222222222222222222222222222222222222222222222222222
+0132 2222222222222222222222222222222222222222222222222222222
+0133 2222222222222222222222222222222222222222222222222222222
+0134 2222222222222222222222222222222222222222222222222222222
+0135 2222222222222222222222222222222222222222222222222222222
+0136 2222222222222222222222222222222222222222222222222222222
+0137 2222222222222222222222222222222222222222222222222222222
+0138 2222222222222222222222222222222222222222222222222222222
+0139 2222222222222222222222222222222222222222222222222222222
+0140 2222222222222222222222222222222222222222222222222222222
+0141 2222222222222222222222222222222222222222222222222222222
+0142 2222222222222222222222222222222222222222222222222222222
+0143 2222222222222222222222222222222222222222222222222222222
+0144 2222222222222222222222222222222222222222222222222222222
+0145 2222222222222222222222222222222222222222222222222222222
+0146 2222222222222222222222222222222222222222222222222222222
+0147 2222222222222222222222222222222222222222222222222222222
+0148 2222222222222222222222222222222222222222222222222222222
+0149 2222222222222222222222222222222222222222222222222222222
+0150 2222222222222222222222222222222222222222222222222222222
+0151 2222222222222222222222222222222222222222222222222222222
+0152 2222222222222222222222222222222222222222222222222222222
+0153 2222222222222222222222222222222222222222222222222222222
+0154 2222222222222222222222222222222222222222222222222222222
+0155 2222222222222222222222222222222222222222222222222222222
+0156 2222222222222222222222222222222222222222222222222222222
+0157 2222222222222222222222222222222222222222222222222222222
+0158 2222222222222222222222222222222222222222222222222222222
+0159 2222222222222222222222222222222222222222222222222222222
+0160 2222222222222222222222222222222222222222222222222222222
+0161 2222222222222222222222222222222222222222222222222222222
+0162 2222222222222222222222222222222222222222222222222222222
+0163 2222222222222222222222222222222222222222222222222222222
+0164 2222222222222222222222222222222222222222222222222222222
+0165 2222222222222222222222222222222222222222222222222222222
+0166 2222222222222222222222222222222222222222222222222222222
+0167 2222222222222222222222222222222222222222222222222222222
+0168 2222222222222222222222222222222222222222222222222222222
+0169 2222222222222222222222222222222222222222222222222222222
+0170 2222222222222222222222222222222222222222222222222222222
+0171 2222222222222222222222222222222222222222222222222222222
+0172 2222222222222222222222222222222222222222222222222222222
+0173 2222222222222222222222222222222222222222222222222222222
+0174 2222222222222222222222222222222222222222222222222222222
+0175 2222222222222222222222222222222222222222222222222222222
+0176 2222222222222222222222222222222222222222222222222222222
+0177 2222222222222222222222222222222222222222222222222222222
+0178 2222222222222222222222222222222222222222222222222222222
+0179 2222222222222222222222222222222222222222222222222222222
+0180 2222222222222222222222222222222222222222222222222222222
+0181 2222222222222222222222222222222222222222222222222222222
+0182 2222222222222222222222222222222222222222222222222222222
+0183 2222222222222222222222222222222222222222222222222222222
+0184 2222222222222222222222222222222222222222222222222222222
+0185 2222222222222222222222222222222222222222222222222222222
+0186 2222222222222222222222222222222222222222222222222222222
+0187 2222222222222222222222222222222222222222222222222222222
+0188 2222222222222222222222222222222222222222222222222222222
+0189 2222222222222222222222222222222222222222222222222222222
+0190 2222222222222222222222222222222222222222222222222222222
+0191 2222222222222222222222222222222222222222222222222222222
+0192 2222222222222222222222222222222222222222222222222222222
+0193 2222222222222222222222222222222222222222222222222222222
+0194 2222222222222222222222222222222222222222222222222222222
+0195 2222222222222222222222222222222222222222222222222222222
+0196 2222222222222222222222222222222222222222222222222222222
+0197 2222222222222222222222222222222222222222222222222222222
+0198 2222222222222222222222222222222222222222222222222222222
+0199 2222222222222222222222222222222222222222222222222222222
+0200 2222222222222222222222222222222222222222222222222222222
+0201 2222222222222222222222222222222222222222222222222222222
+0202 2222222222222222222222222222222222222222222222222222222
+0203 2222222222222222222222222222222222222222222222222222222
+0204 2222222222222222222222222222222222222222222222222222222
+0205 2222222222222222222222222222222222222222222222222222222
+0206 2222222222222222222222222222222222222222222222222222222
+0207 2222222222222222222222222222222222222222222222222222222
+0208 2222222222222222222222222222222222222222222222222222222
+0209 2222222222222222222222222222222222222222222222222222222
+0210 2222222222222222222222222222222222222222222222222222222
+0211 2222222222222222222222222222222222222222222222222222222
+0212 2222222222222222222222222222222222222222222222222222222
+0213 2222222222222222222222222222222222222222222222222222222
+0214 2222222222222222222222222222222222222222222222222222222
+0215 2222222222222222222222222222222222222222222222222222222
+0216 2222222222222222222222222222222222222222222222222222222
+0217 2222222222222222222222222222222222222222222222222222222
+0218 2222222222222222222222222222222222222222222222222222222
+0219 2222222222222222222222222222222222222222222222222222222
+0220 2222222222222222222222222222222222222222222222222222222
+0221 2222222222222222222222222222222222222222222222222222222
+0222 2222222222222222222222222222222222222222222222222222222
+0223 2222222222222222222222222222222222222222222222222222222
+0224 2222222222222222222222222222222222222222222222222222222
+0225 2222222222222222222222222222222222222222222222222222222
+0226 2222222222222222222222222222222222222222222222222222222
+0227 2222222222222222222222222222222222222222222222222222222
+0228 2222222222222222222222222222222222222222222222222222222
+0229 2222222222222222222222222222222222222222222222222222222
+0230 2222222222222222222222222222222222222222222222222222222
+0231 2222222222222222222222222222222222222222222222222222222
+0232 2222222222222222222222222222222222222222222222222222222
+0233 2222222222222222222222222222222222222222222222222222222
+0234 2222222222222222222222222222222222222222222222222222222
+0235 2222222222222222222222222222222222222222222222222222222
+0236 2222222222222222222222222222222222222222222222222222222
+0237 2222222222222222222222222222222222222222222222222222222
+0238 2222222222222222222222222222222222222222222222222222222
+0239 2222222222222222222222222222222222222222222222222222222
+0240 2222222222222222222222222222222222222222222222222222222
+0241 2222222222222222222222222222222222222222222222222222222
+0242 2222222222222222222222222222222222222222222222222222222
+0243 2222222222222222222222222222222222222222222222222222222
+0244 2222222222222222222222222222222222222222222222222222222
+0245 2222222222222222222222222222222222222222222222222222222
+0246 2222222222222222222222222222222222222222222222222222222
+0247 2222222222222222222222222222222222222222222222222222222
+0248 2222222222222222222222222222222222222222222222222222222
+0249 2222222222222222222222222222222222222222222222222222222
+0250 2222222222222222222222222222222222222222222222222222222
+0251 2222222222222222222222222222222222222222222222222222222
+0252 2222222222222222222222222222222222222222222222222222222
+0253 2222222222222222222222222222222222222222222222222222222
+0254 2222222222222222222222222222222222222222222222222222222
+0255 2222222222222222222222222222222222222222222222222222222
+0256 2222222222222222222222222222222222222222222222222222222
+0257 2222222222222222222222222222222222222222222222222222222
+0258 2222222222222222222222222222222222222222222222222222222
+0259 2222222222222222222222222222222222222222222222222222222
+0260 2222222222222222222222222222222222222222222222222222222
+0261 2222222222222222222222222222222222222222222222222222222
+0262 2222222222222222222222222222222222222222222222222222222
+0263 2222222222222222222222222222222222222222222222222222222
+0264 2222222222222222222222222222222222222222222222222222222
+0265 2222222222222222222222222222222222222222222222222222222
+0266 2222222222222222222222222222222222222222222222222222222
+0267 2222222222222222222222222222222222222222222222222222222
+0268 2222222222222222222222222222222222222222222222222222222
+0269 2222222222222222222222222222222222222222222222222222222
+0270 2222222222222222222222222222222222222222222222222222222
+0271 2222222222222222222222222222222222222222222222222222222
+0272 2222222222222222222222222222222222222222222222222222222
+0273 2222222222222222222222222222222222222222222222222222222
+0274 2222222222222222222222222222222222222222222222222222222
+0275 2222222222222222222222222222222222222222222222222222222
+0276 2222222222222222222222222222222222222222222222222222222
+0277 2222222222222222222222222222222222222222222222222222222
+0278 2222222222222222222222222222222222222222222222222222222
+0279 2222222222222222222222222222222222222222222222222222222
+0280 2222222222222222222222222222222222222222222222222222222
+0281 2222222222222222222222222222222222222222222222222222222
+0282 2222222222222222222222222222222222222222222222222222222
+0283 2222222222222222222222222222222222222222222222222222222
+0284 2222222222222222222222222222222222222222222222222222222
+0285 2222222222222222222222222222222222222222222222222222222
+0286 2222222222222222222222222222222222222222222222222222222
+0287 2222222222222222222222222222222222222222222222222222222
+0288 2222222222222222222222222222222222222222222222222222222
+0289 2222222222222222222222222222222222222222222222222222222
+0290 2222222222222222222222222222222222222222222222222222222
+0291 2222222222222222222222222222222222222222222222222222222
+0292 2222222222222222222222222222222222222222222222222222222
+0293 2222222222222222222222222222222222222222222222222222222
+0294 2222222222222222222222222222222222222222222222222222222
+0295 2222222222222222222222222222222222222222222222222222222
+0296 2222222222222222222222222222222222222222222222222222222
+0297 2222222222222222222222222222222222222222222222222222222
+0298 2222222222222222222222222222222222222222222222222222222
+0299 2222222222222222222222222222222222222222222222222222222
+0300 2222222222222222222222222222222222222222222222222222222
+0301 2222222222222222222222222222222222222222222222222222222
+0302 2222222222222222222222222222222222222222222222222222222
+0303 2222222222222222222222222222222222222222222222222222222
+0304 2222222222222222222222222222222222222222222222222222222
+0305 2222222222222222222222222222222222222222222222222222222
+0306 2222222222222222222222222222222222222222222222222222222
+0307 2222222222222222222222222222222222222222222222222222222
+0308 2222222222222222222222222222222222222222222222222222222
+0309 2222222222222222222222222222222222222222222222222222222
+0310 2222222222222222222222222222222222222222222222222222222
+0311 2222222222222222222222222222222222222222222222222222222
+0312 2222222222222222222222222222222222222222222222222222222
+0313 2222222222222222222222222222222222222222222222222222222
+0314 2222222222222222222222222222222222222222222222222222222
+0315 2222222222222222222222222222222222222222222222222222222
+0316 2222222222222222222222222222222222222222222222222222222
+0317 2222222222222222222222222222222222222222222222222222222
+0318 2222222222222222222222222222222222222222222222222222222
+0319 2222222222222222222222222222222222222222222222222222222
+0320 2222222222222222222222222222222222222222222222222222222
+0321 2222222222222222222222222222222222222222222222222222222
+0322 2222222222222222222222222222222222222222222222222222222
+0323 2222222222222222222222222222222222222222222222222222222
+0324 2222222222222222222222222222222222222222222222222222222
+0325 2222222222222222222222222222222222222222222222222222222
+0326 2222222222222222222222222222222222222222222222222222222
+0327 2222222222222222222222222222222222222222222222222222222
+0328 2222222222222222222222222222222222222222222222222222222
+0329 2222222222222222222222222222222222222222222222222222222
+0330 2222222222222222222222222222222222222222222222222222222
+0331 2222222222222222222222222222222222222222222222222222222
+0332 2222222222222222222222222222222222222222222222222222222
+0333 2222222222222222222222222222222222222222222222222222222
+0334 2222222222222222222222222222222222222222222222222222222
+0335 2222222222222222222222222222222222222222222222222222222
+0336 2222222222222222222222222222222222222222222222222222222
+0337 2222222222222222222222222222222222222222222222222222222
+0338 2222222222222222222222222222222222222222222222222222222
+0339 2222222222222222222222222222222222222222222222222222222
+0340 2222222222222222222222222222222222222222222222222222222
+0341 2222222222222222222222222222222222222222222222222222222
+0342 2222222222222222222222222222222222222222222222222222222
+0343 2222222222222222222222222222222222222222222222222222222
+0344 2222222222222222222222222222222222222222222222222222222
+0345 2222222222222222222222222222222222222222222222222222222
+0346 2222222222222222222222222222222222222222222222222222222
+0347 2222222222222222222222222222222222222222222222222222222
+0348 2222222222222222222222222222222222222222222222222222222
+0349 2222222222222222222222222222222222222222222222222222222
+0350 2222222222222222222222222222222222222222222222222222222
+0351 2222222222222222222222222222222222222222222222222222222
+0352 2222222222222222222222222222222222222222222222222222222
+0353 2222222222222222222222222222222222222222222222222222222
+0354 2222222222222222222222222222222222222222222222222222222
+0355 2222222222222222222222222222222222222222222222222222222
+0356 2222222222222222222222222222222222222222222222222222222
+0357 2222222222222222222222222222222222222222222222222222222
+0358 2222222222222222222222222222222222222222222222222222222
+0359 2222222222222222222222222222222222222222222222222222222
+0360 2222222222222222222222222222222222222222222222222222222
+0361 2222222222222222222222222222222222222222222222222222222
+0362 2222222222222222222222222222222222222222222222222222222
+0363 2222222222222222222222222222222222222222222222222222222
+0364 2222222222222222222222222222222222222222222222222222222
+0365 2222222222222222222222222222222222222222222222222222222
+0366 2222222222222222222222222222222222222222222222222222222
+0367 2222222222222222222222222222222222222222222222222222222
+0368 2222222222222222222222222222222222222222222222222222222
+0369 2222222222222222222222222222222222222222222222222222222
+0370 2222222222222222222222222222222222222222222222222222222
+0371 2222222222222222222222222222222222222222222222222222222
+0372 2222222222222222222222222222222222222222222222222222222
+0373 2222222222222222222222222222222222222222222222222222222
+0374 2222222222222222222222222222222222222222222222222222222
+0375 2222222222222222222222222222222222222222222222222222222
+0376 2222222222222222222222222222222222222222222222222222222
+0377 2222222222222222222222222222222222222222222222222222222
+0378 2222222222222222222222222222222222222222222222222222222
+0379 2222222222222222222222222222222222222222222222222222222
+0380 2222222222222222222222222222222222222222222222222222222
+0381 2222222222222222222222222222222222222222222222222222222
+0382 2222222222222222222222222222222222222222222222222222222
+0383 2222222222222222222222222222222222222222222222222222222
+0384 2222222222222222222222222222222222222222222222222222222
+0385 2222222222222222222222222222222222222222222222222222222
+0386 2222222222222222222222222222222222222222222222222222222
+0387 2222222222222222222222222222222222222222222222222222222
+0388 2222222222222222222222222222222222222222222222222222222
+0389 2222222222222222222222222222222222222222222222222222222
+0390 2222222222222222222222222222222222222222222222222222222
+0391 2222222222222222222222222222222222222222222222222222222
+0392 2222222222222222222222222222222222222222222222222222222
+0393 2222222222222222222222222222222222222222222222222222222
+0394 2222222222222222222222222222222222222222222222222222222
+0395 2222222222222222222222222222222222222222222222222222222
+0396 2222222222222222222222222222222222222222222222222222222
+0397 2222222222222222222222222222222222222222222222222222222
+0398 2222222222222222222222222222222222222222222222222222222
+0399 2222222222222222222222222222222222222222222222222222222
+0400 2222222222222222222222222222222222222222222222222222222
+0401 2222222222222222222222222222222222222222222222222222222
+0402 2222222222222222222222222222222222222222222222222222222
+0403 2222222222222222222222222222222222222222222222222222222
+0404 2222222222222222222222222222222222222222222222222222222
+0405 2222222222222222222222222222222222222222222222222222222
+0406 2222222222222222222222222222222222222222222222222222222
+0407 2222222222222222222222222222222222222222222222222222222
+0408 2222222222222222222222222222222222222222222222222222222
+0409 2222222222222222222222222222222222222222222222222222222
+0410 2222222222222222222222222222222222222222222222222222222
+0411 2222222222222222222222222222222222222222222222222222222
+0412 2222222222222222222222222222222222222222222222222222222
+0413 2222222222222222222222222222222222222222222222222222222
+0414 2222222222222222222222222222222222222222222222222222222
+0415 2222222222222222222222222222222222222222222222222222222
+0416 2222222222222222222222222222222222222222222222222222222
+0417 2222222222222222222222222222222222222222222222222222222
+0418 2222222222222222222222222222222222222222222222222222222
+0419 2222222222222222222222222222222222222222222222222222222
+0420 2222222222222222222222222222222222222222222222222222222
+0421 2222222222222222222222222222222222222222222222222222222
+0422 2222222222222222222222222222222222222222222222222222222
+0423 2222222222222222222222222222222222222222222222222222222
+0424 2222222222222222222222222222222222222222222222222222222
+0425 2222222222222222222222222222222222222222222222222222222
+0426 2222222222222222222222222222222222222222222222222222222
+0427 2222222222222222222222222222222222222222222222222222222
+0428 2222222222222222222222222222222222222222222222222222222
+0429 2222222222222222222222222222222222222222222222222222222
+0430 2222222222222222222222222222222222222222222222222222222
+0431 2222222222222222222222222222222222222222222222222222222
+0432 2222222222222222222222222222222222222222222222222222222
+0433 2222222222222222222222222222222222222222222222222222222
+0434 2222222222222222222222222222222222222222222222222222222
+0435 2222222222222222222222222222222222222222222222222222222
+0436 2222222222222222222222222222222222222222222222222222222
+0437 2222222222222222222222222222222222222222222222222222222
+0438 2222222222222222222222222222222222222222222222222222222
+0439 2222222222222222222222222222222222222222222222222222222
+0440 2222222222222222222222222222222222222222222222222222222
+0441 2222222222222222222222222222222222222222222222222222222
+0442 2222222222222222222222222222222222222222222222222222222
+0443 2222222222222222222222222222222222222222222222222222222
+0444 2222222222222222222222222222222222222222222222222222222
+0445 2222222222222222222222222222222222222222222222222222222
+0446 2222222222222222222222222222222222222222222222222222222
+0447 2222222222222222222222222222222222222222222222222222222
+0448 2222222222222222222222222222222222222222222222222222222
+0449 2222222222222222222222222222222222222222222222222222222
+0450 2222222222222222222222222222222222222222222222222222222
+0451 2222222222222222222222222222222222222222222222222222222
+0452 2222222222222222222222222222222222222222222222222222222
+0453 2222222222222222222222222222222222222222222222222222222
+0454 2222222222222222222222222222222222222222222222222222222
+0455 2222222222222222222222222222222222222222222222222222222
+0456 2222222222222222222222222222222222222222222222222222222
+0457 2222222222222222222222222222222222222222222222222222222
+0458 2222222222222222222222222222222222222222222222222222222
+0459 2222222222222222222222222222222222222222222222222222222
+0460 2222222222222222222222222222222222222222222222222222222
+0461 2222222222222222222222222222222222222222222222222222222
+0462 2222222222222222222222222222222222222222222222222222222
+0463 2222222222222222222222222222222222222222222222222222222
+0464 2222222222222222222222222222222222222222222222222222222
+0465 2222222222222222222222222222222222222222222222222222222
+0466 2222222222222222222222222222222222222222222222222222222
+0467 2222222222222222222222222222222222222222222222222222222
+0468 2222222222222222222222222222222222222222222222222222222
+0469 2222222222222222222222222222222222222222222222222222222
+0470 2222222222222222222222222222222222222222222222222222222
+0471 2222222222222222222222222222222222222222222222222222222
+0472 2222222222222222222222222222222222222222222222222222222
+0473 2222222222222222222222222222222222222222222222222222222
+0474 2222222222222222222222222222222222222222222222222222222
+0475 2222222222222222222222222222222222222222222222222222222
+0476 2222222222222222222222222222222222222222222222222222222
+0477 2222222222222222222222222222222222222222222222222222222
+0478 2222222222222222222222222222222222222222222222222222222
+0479 2222222222222222222222222222222222222222222222222222222
+0480 2222222222222222222222222222222222222222222222222222222
+0481 2222222222222222222222222222222222222222222222222222222
+0482 2222222222222222222222222222222222222222222222222222222
+0483 2222222222222222222222222222222222222222222222222222222
+0484 2222222222222222222222222222222222222222222222222222222
+0485 2222222222222222222222222222222222222222222222222222222
+0486 2222222222222222222222222222222222222222222222222222222
+0487 2222222222222222222222222222222222222222222222222222222
+0488 2222222222222222222222222222222222222222222222222222222
+0489 2222222222222222222222222222222222222222222222222222222
+0490 2222222222222222222222222222222222222222222222222222222
+0491 2222222222222222222222222222222222222222222222222222222
+0492 2222222222222222222222222222222222222222222222222222222
+0493 2222222222222222222222222222222222222222222222222222222
+0494 2222222222222222222222222222222222222222222222222222222
+0495 2222222222222222222222222222222222222222222222222222222
+0496 2222222222222222222222222222222222222222222222222222222
+0497 2222222222222222222222222222222222222222222222222222222
+0498 2222222222222222222222222222222222222222222222222222222
+0499 2222222222222222222222222222222222222222222222222222222
+0500 2222222222222222222222222222222222222222222222222222222
+0501 2222222222222222222222222222222222222222222222222222222
+0502 2222222222222222222222222222222222222222222222222222222
+0503 2222222222222222222222222222222222222222222222222222222
+0504 2222222222222222222222222222222222222222222222222222222
+0505 2222222222222222222222222222222222222222222222222222222
+0506 2222222222222222222222222222222222222222222222222222222
+0507 2222222222222222222222222222222222222222222222222222222
+0508 2222222222222222222222222222222222222222222222222222222
+0509 2222222222222222222222222222222222222222222222222222222
+0510 2222222222222222222222222222222222222222222222222222222
+0511 2222222222222222222222222222222222222222222222222222222
+0512 2222222222222222222222222222222222222222222222222222222
+0513 2222222222222222222222222222222222222222222222222222222
+0514 2222222222222222222222222222222222222222222222222222222
+0515 2222222222222222222222222222222222222222222222222222222
+0516 2222222222222222222222222222222222222222222222222222222
+0517 2222222222222222222222222222222222222222222222222222222
+0518 2222222222222222222222222222222222222222222222222222222
+0519 2222222222222222222222222222222222222222222222222222222
+0520 2222222222222222222222222222222222222222222222222222222
+0521 2222222222222222222222222222222222222222222222222222222
+0522 2222222222222222222222222222222222222222222222222222222
+0523 2222222222222222222222222222222222222222222222222222222
+0524 2222222222222222222222222222222222222222222222222222222
+0525 2222222222222222222222222222222222222222222222222222222
+0526 2222222222222222222222222222222222222222222222222222222
+0527 2222222222222222222222222222222222222222222222222222222
+0528 2222222222222222222222222222222222222222222222222222222
+0529 2222222222222222222222222222222222222222222222222222222
+0530 2222222222222222222222222222222222222222222222222222222
+0531 2222222222222222222222222222222222222222222222222222222
+0532 2222222222222222222222222222222222222222222222222222222
+0533 2222222222222222222222222222222222222222222222222222222
+0534 2222222222222222222222222222222222222222222222222222222
+0535 2222222222222222222222222222222222222222222222222222222
+0536 2222222222222222222222222222222222222222222222222222222
+0537 2222222222222222222222222222222222222222222222222222222
+0538 2222222222222222222222222222222222222222222222222222222
+0539 2222222222222222222222222222222222222222222222222222222
+0540 2222222222222222222222222222222222222222222222222222222
+0541 2222222222222222222222222222222222222222222222222222222
+0542 2222222222222222222222222222222222222222222222222222222
+0543 2222222222222222222222222222222222222222222222222222222
+0544 2222222222222222222222222222222222222222222222222222222
+0545 2222222222222222222222222222222222222222222222222222222
+0546 2222222222222222222222222222222222222222222222222222222
+0547 2222222222222222222222222222222222222222222222222222222
+0548 2222222222222222222222222222222222222222222222222222222
+0549 2222222222222222222222222222222222222222222222222222222
+0550 2222222222222222222222222222222222222222222222222222222
+0551 2222222222222222222222222222222222222222222222222222222
+0552 2222222222222222222222222222222222222222222222222222222
+0553 2222222222222222222222222222222222222222222222222222222
+0554 2222222222222222222222222222222222222222222222222222222
+0555 2222222222222222222222222222222222222222222222222222222
+0556 2222222222222222222222222222222222222222222222222222222
+0557 2222222222222222222222222222222222222222222222222222222
+0558 2222222222222222222222222222222222222222222222222222222
+0559 2222222222222222222222222222222222222222222222222222222
+0560 2222222222222222222222222222222222222222222222222222222
+0561 2222222222222222222222222222222222222222222222222222222
+0562 2222222222222222222222222222222222222222222222222222222
+0563 2222222222222222222222222222222222222222222222222222222
+0564 2222222222222222222222222222222222222222222222222222222
+0565 2222222222222222222222222222222222222222222222222222222
+0566 2222222222222222222222222222222222222222222222222222222
+0567 2222222222222222222222222222222222222222222222222222222
+0568 2222222222222222222222222222222222222222222222222222222
+0569 2222222222222222222222222222222222222222222222222222222
+0570 2222222222222222222222222222222222222222222222222222222
+0571 2222222222222222222222222222222222222222222222222222222
+0572 2222222222222222222222222222222222222222222222222222222
+0573 2222222222222222222222222222222222222222222222222222222
+0574 2222222222222222222222222222222222222222222222222222222
+0575 2222222222222222222222222222222222222222222222222222222
+0576 2222222222222222222222222222222222222222222222222222222
+0577 2222222222222222222222222222222222222222222222222222222
+0578 2222222222222222222222222222222222222222222222222222222
+0579 2222222222222222222222222222222222222222222222222222222
+0580 2222222222222222222222222222222222222222222222222222222
+0581 2222222222222222222222222222222222222222222222222222222
+0582 2222222222222222222222222222222222222222222222222222222
+0583 2222222222222222222222222222222222222222222222222222222
+0584 2222222222222222222222222222222222222222222222222222222
+0585 2222222222222222222222222222222222222222222222222222222
+0586 2222222222222222222222222222222222222222222222222222222
+0587 2222222222222222222222222222222222222222222222222222222
+0588 2222222222222222222222222222222222222222222222222222222
+0589 2222222222222222222222222222222222222222222222222222222
+0590 2222222222222222222222222222222222222222222222222222222
+0591 2222222222222222222222222222222222222222222222222222222
+0592 2222222222222222222222222222222222222222222222222222222
+0593 2222222222222222222222222222222222222222222222222222222
+0594 2222222222222222222222222222222222222222222222222222222
+0595 2222222222222222222222222222222222222222222222222222222
+0596 2222222222222222222222222222222222222222222222222222222
+0597 2222222222222222222222222222222222222222222222222222222
+0598 2222222222222222222222222222222222222222222222222222222
+0599 2222222222222222222222222222222222222222222222222222222
+0600 2222222222222222222222222222222222222222222222222222222
+0601 2222222222222222222222222222222222222222222222222222222
+0602 2222222222222222222222222222222222222222222222222222222
+0603 2222222222222222222222222222222222222222222222222222222
+0604 2222222222222222222222222222222222222222222222222222222
+0605 2222222222222222222222222222222222222222222222222222222
+0606 2222222222222222222222222222222222222222222222222222222
+0607 2222222222222222222222222222222222222222222222222222222
+0608 2222222222222222222222222222222222222222222222222222222
+0609 2222222222222222222222222222222222222222222222222222222
+0610 2222222222222222222222222222222222222222222222222222222
+0611 2222222222222222222222222222222222222222222222222222222
+0612 2222222222222222222222222222222222222222222222222222222
+0613 2222222222222222222222222222222222222222222222222222222
+0614 2222222222222222222222222222222222222222222222222222222
+0615 2222222222222222222222222222222222222222222222222222222
+0616 2222222222222222222222222222222222222222222222222222222
+0617 2222222222222222222222222222222222222222222222222222222
+0618 2222222222222222222222222222222222222222222222222222222
+0619 2222222222222222222222222222222222222222222222222222222
+0620 2222222222222222222222222222222222222222222222222222222
+0621 2222222222222222222222222222222222222222222222222222222
+0622 2222222222222222222222222222222222222222222222222222222
+0623 2222222222222222222222222222222222222222222222222222222
+0624 2222222222222222222222222222222222222222222222222222222
+0625 2222222222222222222222222222222222222222222222222222222
+0626 2222222222222222222222222222222222222222222222222222222
+0627 2222222222222222222222222222222222222222222222222222222
+0628 2222222222222222222222222222222222222222222222222222222
+0629 2222222222222222222222222222222222222222222222222222222
+0630 2222222222222222222222222222222222222222222222222222222
+0631 2222222222222222222222222222222222222222222222222222222
+0632 2222222222222222222222222222222222222222222222222222222
+0633 2222222222222222222222222222222222222222222222222222222
+0634 2222222222222222222222222222222222222222222222222222222
+0635 2222222222222222222222222222222222222222222222222222222
+0636 2222222222222222222222222222222222222222222222222222222
+0637 2222222222222222222222222222222222222222222222222222222
+0638 2222222222222222222222222222222222222222222222222222222
+0639 2222222222222222222222222222222222222222222222222222222
+0640 2222222222222222222222222222222222222222222222222222222
+0641 2222222222222222222222222222222222222222222222222222222
+0642 2222222222222222222222222222222222222222222222222222222
+0643 2222222222222222222222222222222222222222222222222222222
+0644 2222222222222222222222222222222222222222222222222222222
+0645 2222222222222222222222222222222222222222222222222222222
+0646 2222222222222222222222222222222222222222222222222222222
+0647 2222222222222222222222222222222222222222222222222222222
+0648 2222222222222222222222222222222222222222222222222222222
+0649 2222222222222222222222222222222222222222222222222222222
+0650 2222222222222222222222222222222222222222222222222222222
+0651 2222222222222222222222222222222222222222222222222222222
+0652 2222222222222222222222222222222222222222222222222222222
+0653 2222222222222222222222222222222222222222222222222222222
+0654 2222222222222222222222222222222222222222222222222222222
+0655 2222222222222222222222222222222222222222222222222222222
+0656 2222222222222222222222222222222222222222222222222222222
+0657 2222222222222222222222222222222222222222222222222222222
+0658 2222222222222222222222222222222222222222222222222222222
+0659 2222222222222222222222222222222222222222222222222222222
+0660 2222222222222222222222222222222222222222222222222222222
+0661 2222222222222222222222222222222222222222222222222222222
+0662 2222222222222222222222222222222222222222222222222222222
+0663 2222222222222222222222222222222222222222222222222222222
+0664 2222222222222222222222222222222222222222222222222222222
+0665 2222222222222222222222222222222222222222222222222222222
+0666 2222222222222222222222222222222222222222222222222222222
+0667 2222222222222222222222222222222222222222222222222222222
+0668 2222222222222222222222222222222222222222222222222222222
+0669 2222222222222222222222222222222222222222222222222222222
+0670 2222222222222222222222222222222222222222222222222222222
+0671 2222222222222222222222222222222222222222222222222222222
+0672 2222222222222222222222222222222222222222222222222222222
+0673 2222222222222222222222222222222222222222222222222222222
+0674 2222222222222222222222222222222222222222222222222222222
+0675 2222222222222222222222222222222222222222222222222222222
+0676 2222222222222222222222222222222222222222222222222222222
+0677 2222222222222222222222222222222222222222222222222222222
+0678 2222222222222222222222222222222222222222222222222222222
+0679 2222222222222222222222222222222222222222222222222222222
+0680 2222222222222222222222222222222222222222222222222222222
+0681 2222222222222222222222222222222222222222222222222222222
+0682 2222222222222222222222222222222222222222222222222222222
+0683 2222222222222222222222222222222222222222222222222222222
+0684 2222222222222222222222222222222222222222222222222222222
+0685 2222222222222222222222222222222222222222222222222222222
+0686 2222222222222222222222222222222222222222222222222222222
+0687 2222222222222222222222222222222222222222222222222222222
+0688 2222222222222222222222222222222222222222222222222222222
+0689 2222222222222222222222222222222222222222222222222222222
+0690 2222222222222222222222222222222222222222222222222222222
+0691 2222222222222222222222222222222222222222222222222222222
+0692 2222222222222222222222222222222222222222222222222222222
+0693 2222222222222222222222222222222222222222222222222222222
+0694 2222222222222222222222222222222222222222222222222222222
+0695 2222222222222222222222222222222222222222222222222222222
+0696 2222222222222222222222222222222222222222222222222222222
+0697 2222222222222222222222222222222222222222222222222222222
+0698 2222222222222222222222222222222222222222222222222222222
+0699 2222222222222222222222222222222222222222222222222222222
+0700 2222222222222222222222222222222222222222222222222222222
+0701 2222222222222222222222222222222222222222222222222222222
+0702 2222222222222222222222222222222222222222222222222222222
+0703 2222222222222222222222222222222222222222222222222222222
+0704 2222222222222222222222222222222222222222222222222222222
+0705 2222222222222222222222222222222222222222222222222222222
+0706 2222222222222222222222222222222222222222222222222222222
+0707 2222222222222222222222222222222222222222222222222222222
+0708 2222222222222222222222222222222222222222222222222222222
+0709 2222222222222222222222222222222222222222222222222222222
+0710 2222222222222222222222222222222222222222222222222222222
+0711 2222222222222222222222222222222222222222222222222222222
+0712 2222222222222222222222222222222222222222222222222222222
+0713 2222222222222222222222222222222222222222222222222222222
+0714 2222222222222222222222222222222222222222222222222222222
+0715 2222222222222222222222222222222222222222222222222222222
+0716 2222222222222222222222222222222222222222222222222222222
+0717 2222222222222222222222222222222222222222222222222222222
+0718 2222222222222222222222222222222222222222222222222222222
+0719 2222222222222222222222222222222222222222222222222222222
+0720 2222222222222222222222222222222222222222222222222222222
+0721 2222222222222222222222222222222222222222222222222222222
+0722 2222222222222222222222222222222222222222222222222222222
+0723 2222222222222222222222222222222222222222222222222222222
+0724 2222222222222222222222222222222222222222222222222222222
+0725 2222222222222222222222222222222222222222222222222222222
+0726 2222222222222222222222222222222222222222222222222222222
+0727 2222222222222222222222222222222222222222222222222222222
+0728 2222222222222222222222222222222222222222222222222222222
+0729 2222222222222222222222222222222222222222222222222222222
+0730 2222222222222222222222222222222222222222222222222222222
+0731 2222222222222222222222222222222222222222222222222222222
+0732 2222222222222222222222222222222222222222222222222222222
+0733 2222222222222222222222222222222222222222222222222222222
+0734 2222222222222222222222222222222222222222222222222222222
+0735 2222222222222222222222222222222222222222222222222222222
+0736 2222222222222222222222222222222222222222222222222222222
+0737 2222222222222222222222222222222222222222222222222222222
+0738 2222222222222222222222222222222222222222222222222222222
+0739 2222222222222222222222222222222222222222222222222222222
+0740 2222222222222222222222222222222222222222222222222222222
+0741 2222222222222222222222222222222222222222222222222222222
+0742 2222222222222222222222222222222222222222222222222222222
+0743 2222222222222222222222222222222222222222222222222222222
+0744 2222222222222222222222222222222222222222222222222222222
+0745 2222222222222222222222222222222222222222222222222222222
+0746 2222222222222222222222222222222222222222222222222222222
+0747 2222222222222222222222222222222222222222222222222222222
+0748 2222222222222222222222222222222222222222222222222222222
+0749 2222222222222222222222222222222222222222222222222222222
+0750 2222222222222222222222222222222222222222222222222222222
+0751 2222222222222222222222222222222222222222222222222222222
+0752 2222222222222222222222222222222222222222222222222222222
+0753 2222222222222222222222222222222222222222222222222222222
+0754 2222222222222222222222222222222222222222222222222222222
+0755 2222222222222222222222222222222222222222222222222222222
+0756 2222222222222222222222222222222222222222222222222222222
+0757 2222222222222222222222222222222222222222222222222222222
+0758 2222222222222222222222222222222222222222222222222222222
+0759 2222222222222222222222222222222222222222222222222222222
+0760 2222222222222222222222222222222222222222222222222222222
+0761 2222222222222222222222222222222222222222222222222222222
+0762 2222222222222222222222222222222222222222222222222222222
+0763 2222222222222222222222222222222222222222222222222222222
+0764 2222222222222222222222222222222222222222222222222222222
+0765 2222222222222222222222222222222222222222222222222222222
+0766 2222222222222222222222222222222222222222222222222222222
+0767 2222222222222222222222222222222222222222222222222222222
+0768 2222222222222222222222222222222222222222222222222222222
+0769 2222222222222222222222222222222222222222222222222222222
+0770 2222222222222222222222222222222222222222222222222222222
+0771 2222222222222222222222222222222222222222222222222222222
+0772 2222222222222222222222222222222222222222222222222222222
+0773 2222222222222222222222222222222222222222222222222222222
+0774 2222222222222222222222222222222222222222222222222222222
+0775 2222222222222222222222222222222222222222222222222222222
+0776 2222222222222222222222222222222222222222222222222222222
+0777 2222222222222222222222222222222222222222222222222222222
+0778 2222222222222222222222222222222222222222222222222222222
+0779 2222222222222222222222222222222222222222222222222222222
+0780 2222222222222222222222222222222222222222222222222222222
+0781 2222222222222222222222222222222222222222222222222222222
+0782 2222222222222222222222222222222222222222222222222222222
+0783 2222222222222222222222222222222222222222222222222222222
+0784 2222222222222222222222222222222222222222222222222222222
+0785 2222222222222222222222222222222222222222222222222222222
+0786 2222222222222222222222222222222222222222222222222222222
+0787 2222222222222222222222222222222222222222222222222222222
+0788 2222222222222222222222222222222222222222222222222222222
+0789 2222222222222222222222222222222222222222222222222222222
+0790 2222222222222222222222222222222222222222222222222222222
+0791 2222222222222222222222222222222222222222222222222222222
+0792 2222222222222222222222222222222222222222222222222222222
+0793 2222222222222222222222222222222222222222222222222222222
+0794 2222222222222222222222222222222222222222222222222222222
+0795 2222222222222222222222222222222222222222222222222222222
+0796 2222222222222222222222222222222222222222222222222222222
+0797 2222222222222222222222222222222222222222222222222222222
+0798 2222222222222222222222222222222222222222222222222222222
+0799 2222222222222222222222222222222222222222222222222222222
+0800 2222222222222222222222222222222222222222222222222222222
+0801 2222222222222222222222222222222222222222222222222222222
+0802 2222222222222222222222222222222222222222222222222222222
+0803 2222222222222222222222222222222222222222222222222222222
+0804 2222222222222222222222222222222222222222222222222222222
+0805 2222222222222222222222222222222222222222222222222222222
+0806 2222222222222222222222222222222222222222222222222222222
+0807 2222222222222222222222222222222222222222222222222222222
+0808 2222222222222222222222222222222222222222222222222222222
+0809 2222222222222222222222222222222222222222222222222222222
+0810 2222222222222222222222222222222222222222222222222222222
+0811 2222222222222222222222222222222222222222222222222222222
+0812 2222222222222222222222222222222222222222222222222222222
+0813 2222222222222222222222222222222222222222222222222222222
+0814 2222222222222222222222222222222222222222222222222222222
+0815 2222222222222222222222222222222222222222222222222222222
+0816 2222222222222222222222222222222222222222222222222222222
+0817 2222222222222222222222222222222222222222222222222222222
+0818 2222222222222222222222222222222222222222222222222222222
+0819 2222222222222222222222222222222222222222222222222222222
+0820 2222222222222222222222222222222222222222222222222222222
+0821 2222222222222222222222222222222222222222222222222222222
+0822 2222222222222222222222222222222222222222222222222222222
+0823 2222222222222222222222222222222222222222222222222222222
+0824 2222222222222222222222222222222222222222222222222222222
+0825 2222222222222222222222222222222222222222222222222222222
+0826 2222222222222222222222222222222222222222222222222222222
+0827 2222222222222222222222222222222222222222222222222222222
+0828 2222222222222222222222222222222222222222222222222222222
+0829 2222222222222222222222222222222222222222222222222222222
+0830 2222222222222222222222222222222222222222222222222222222
+0831 2222222222222222222222222222222222222222222222222222222
+0832 2222222222222222222222222222222222222222222222222222222
+0833 2222222222222222222222222222222222222222222222222222222
+0834 2222222222222222222222222222222222222222222222222222222
+0835 2222222222222222222222222222222222222222222222222222222
+0836 2222222222222222222222222222222222222222222222222222222
+0837 2222222222222222222222222222222222222222222222222222222
+0838 2222222222222222222222222222222222222222222222222222222
+0839 2222222222222222222222222222222222222222222222222222222
+0840 2222222222222222222222222222222222222222222222222222222
+0841 2222222222222222222222222222222222222222222222222222222
+0842 2222222222222222222222222222222222222222222222222222222
+0843 2222222222222222222222222222222222222222222222222222222
+0844 2222222222222222222222222222222222222222222222222222222
+0845 2222222222222222222222222222222222222222222222222222222
+0846 2222222222222222222222222222222222222222222222222222222
+0847 2222222222222222222222222222222222222222222222222222222
+0848 2222222222222222222222222222222222222222222222222222222
+0849 2222222222222222222222222222222222222222222222222222222
+0850 2222222222222222222222222222222222222222222222222222222
+0851 2222222222222222222222222222222222222222222222222222222
+0852 2222222222222222222222222222222222222222222222222222222
+0853 2222222222222222222222222222222222222222222222222222222
+0854 2222222222222222222222222222222222222222222222222222222
+0855 2222222222222222222222222222222222222222222222222222222
+0856 2222222222222222222222222222222222222222222222222222222
+0857 2222222222222222222222222222222222222222222222222222222
+0858 2222222222222222222222222222222222222222222222222222222
+0859 2222222222222222222222222222222222222222222222222222222
+0860 2222222222222222222222222222222222222222222222222222222
+0861 2222222222222222222222222222222222222222222222222222222
+0862 2222222222222222222222222222222222222222222222222222222
+0863 2222222222222222222222222222222222222222222222222222222
+0864 2222222222222222222222222222222222222222222222222222222
+0865 2222222222222222222222222222222222222222222222222222222
+0866 2222222222222222222222222222222222222222222222222222222
+0867 2222222222222222222222222222222222222222222222222222222
+0868 2222222222222222222222222222222222222222222222222222222
+0869 2222222222222222222222222222222222222222222222222222222
+0870 2222222222222222222222222222222222222222222222222222222
+0871 2222222222222222222222222222222222222222222222222222222
+0872 2222222222222222222222222222222222222222222222222222222
+0873 2222222222222222222222222222222222222222222222222222222
+0874 2222222222222222222222222222222222222222222222222222222
+0875 2222222222222222222222222222222222222222222222222222222
+0876 2222222222222222222222222222222222222222222222222222222
+0877 2222222222222222222222222222222222222222222222222222222
+0878 2222222222222222222222222222222222222222222222222222222
+0879 2222222222222222222222222222222222222222222222222222222
+0880 2222222222222222222222222222222222222222222222222222222
+0881 2222222222222222222222222222222222222222222222222222222
+0882 2222222222222222222222222222222222222222222222222222222
+0883 2222222222222222222222222222222222222222222222222222222
+0884 2222222222222222222222222222222222222222222222222222222
+0885 2222222222222222222222222222222222222222222222222222222
+0886 2222222222222222222222222222222222222222222222222222222
+0887 2222222222222222222222222222222222222222222222222222222
+0888 2222222222222222222222222222222222222222222222222222222
+0889 2222222222222222222222222222222222222222222222222222222
+0890 2222222222222222222222222222222222222222222222222222222
+0891 2222222222222222222222222222222222222222222222222222222
+0892 2222222222222222222222222222222222222222222222222222222
+0893 2222222222222222222222222222222222222222222222222222222
+0894 2222222222222222222222222222222222222222222222222222222
+0895 2222222222222222222222222222222222222222222222222222222
+0896 2222222222222222222222222222222222222222222222222222222
+0897 2222222222222222222222222222222222222222222222222222222
+0898 2222222222222222222222222222222222222222222222222222222
+0899 2222222222222222222222222222222222222222222222222222222
+0900 2222222222222222222222222222222222222222222222222222222
+0901 2222222222222222222222222222222222222222222222222222222
+0902 2222222222222222222222222222222222222222222222222222222
+0903 2222222222222222222222222222222222222222222222222222222
+0904 2222222222222222222222222222222222222222222222222222222
+0905 2222222222222222222222222222222222222222222222222222222
+0906 2222222222222222222222222222222222222222222222222222222
+0907 2222222222222222222222222222222222222222222222222222222
+0908 2222222222222222222222222222222222222222222222222222222
+0909 2222222222222222222222222222222222222222222222222222222
+0910 2222222222222222222222222222222222222222222222222222222
+0911 2222222222222222222222222222222222222222222222222222222
+0912 2222222222222222222222222222222222222222222222222222222
+0913 2222222222222222222222222222222222222222222222222222222
+0914 2222222222222222222222222222222222222222222222222222222
+0915 2222222222222222222222222222222222222222222222222222222
+0916 2222222222222222222222222222222222222222222222222222222
+0917 2222222222222222222222222222222222222222222222222222222
+0918 2222222222222222222222222222222222222222222222222222222
+0919 2222222222222222222222222222222222222222222222222222222
+0920 2222222222222222222222222222222222222222222222222222222
+0921 2222222222222222222222222222222222222222222222222222222
+0922 2222222222222222222222222222222222222222222222222222222
+0923 2222222222222222222222222222222222222222222222222222222
+0924 2222222222222222222222222222222222222222222222222222222
+0925 2222222222222222222222222222222222222222222222222222222
+0926 2222222222222222222222222222222222222222222222222222222
+0927 2222222222222222222222222222222222222222222222222222222
+0928 2222222222222222222222222222222222222222222222222222222
+0929 2222222222222222222222222222222222222222222222222222222
+0930 2222222222222222222222222222222222222222222222222222222
+0931 2222222222222222222222222222222222222222222222222222222
+0932 2222222222222222222222222222222222222222222222222222222
+0933 2222222222222222222222222222222222222222222222222222222
+0934 2222222222222222222222222222222222222222222222222222222
+0935 2222222222222222222222222222222222222222222222222222222
+0936 2222222222222222222222222222222222222222222222222222222
+0937 2222222222222222222222222222222222222222222222222222222
+0938 2222222222222222222222222222222222222222222222222222222
+0939 2222222222222222222222222222222222222222222222222222222
+0940 2222222222222222222222222222222222222222222222222222222
+0941 2222222222222222222222222222222222222222222222222222222
+0942 2222222222222222222222222222222222222222222222222222222
+0943 2222222222222222222222222222222222222222222222222222222
+0944 2222222222222222222222222222222222222222222222222222222
+0945 2222222222222222222222222222222222222222222222222222222
+0946 2222222222222222222222222222222222222222222222222222222
+0947 2222222222222222222222222222222222222222222222222222222
+0948 2222222222222222222222222222222222222222222222222222222
+0949 2222222222222222222222222222222222222222222222222222222
+0950 2222222222222222222222222222222222222222222222222222222
+0951 2222222222222222222222222222222222222222222222222222222
+0952 2222222222222222222222222222222222222222222222222222222
+0953 2222222222222222222222222222222222222222222222222222222
+0954 2222222222222222222222222222222222222222222222222222222
+0955 2222222222222222222222222222222222222222222222222222222
+0956 2222222222222222222222222222222222222222222222222222222
+0957 2222222222222222222222222222222222222222222222222222222
+0958 2222222222222222222222222222222222222222222222222222222
+0959 2222222222222222222222222222222222222222222222222222222
+0960 2222222222222222222222222222222222222222222222222222222
+0961 2222222222222222222222222222222222222222222222222222222
+0962 2222222222222222222222222222222222222222222222222222222
+0963 2222222222222222222222222222222222222222222222222222222
+0964 2222222222222222222222222222222222222222222222222222222
+0965 2222222222222222222222222222222222222222222222222222222
+0966 2222222222222222222222222222222222222222222222222222222
+0967 2222222222222222222222222222222222222222222222222222222
+0968 2222222222222222222222222222222222222222222222222222222
+0969 2222222222222222222222222222222222222222222222222222222
+0970 2222222222222222222222222222222222222222222222222222222
+0971 2222222222222222222222222222222222222222222222222222222
+0972 2222222222222222222222222222222222222222222222222222222
+0973 2222222222222222222222222222222222222222222222222222222
+0974 2222222222222222222222222222222222222222222222222222222
+0975 2222222222222222222222222222222222222222222222222222222
+0976 2222222222222222222222222222222222222222222222222222222
+0977 2222222222222222222222222222222222222222222222222222222
+0978 2222222222222222222222222222222222222222222222222222222
+0979 2222222222222222222222222222222222222222222222222222222
+0980 2222222222222222222222222222222222222222222222222222222
+0981 2222222222222222222222222222222222222222222222222222222
+0982 2222222222222222222222222222222222222222222222222222222
+0983 2222222222222222222222222222222222222222222222222222222
+0984 2222222222222222222222222222222222222222222222222222222
+0985 2222222222222222222222222222222222222222222222222222222
+0986 2222222222222222222222222222222222222222222222222222222
+0987 2222222222222222222222222222222222222222222222222222222
+0988 2222222222222222222222222222222222222222222222222222222
+0989 2222222222222222222222222222222222222222222222222222222
+0990 2222222222222222222222222222222222222222222222222222222
+0991 2222222222222222222222222222222222222222222222222222222
+0992 2222222222222222222222222222222222222222222222222222222
+0993 2222222222222222222222222222222222222222222222222222222
+0994 2222222222222222222222222222222222222222222222222222222
+0995 2222222222222222222222222222222222222222222222222222222
+0996 2222222222222222222222222222222222222222222222222222222
+0997 2222222222222222222222222222222222222222222222222222222
+0998 2222222222222222222222222222222222222222222222222222222
+0999 2222222222222222222222222222222222222222222222222222222
+1000 2222222222222222222222222222222222222222222222222222222
+1001 2222222222222222222222222222222222222222222222222222222
+1002 2222222222222222222222222222222222222222222222222222222
+1003 2222222222222222222222222222222222222222222222222222222
+1004 2222222222222222222222222222222222222222222222222222222
+1005 2222222222222222222222222222222222222222222222222222222
+1006 2222222222222222222222222222222222222222222222222222222
+1007 2222222222222222222222222222222222222222222222222222222
+1008 2222222222222222222222222222222222222222222222222222222
+1009 2222222222222222222222222222222222222222222222222222222
+1010 2222222222222222222222222222222222222222222222222222222
+1011 2222222222222222222222222222222222222222222222222222222
+1012 2222222222222222222222222222222222222222222222222222222
+1013 2222222222222222222222222222222222222222222222222222222
+1014 2222222222222222222222222222222222222222222222222222222
+1015 2222222222222222222222222222222222222222222222222222222
+1016 2222222222222222222222222222222222222222222222222222222
+1017 2222222222222222222222222222222222222222222222222222222
+1018 2222222222222222222222222222222222222222222222222222222
+1019 2222222222222222222222222222222222222222222222222222222
+1020 2222222222222222222222222222222222222222222222222222222
+1021 2222222222222222222222222222222222222222222222222222222
+1022 2222222222222222222222222222222222222222222222222222222
+1023 2222222222222222222222222222222222222222222222222222222
+1024 2222222222222222222222222222222222222222222222222222222
+1025 2222222222222222222222222222222222222222222222222222222
+1026 2222222222222222222222222222222222222222222222222222222
+1027 2222222222222222222222222222222222222222222222222222222
+1028 2222222222222222222222222222222222222222222222222222222
+1029 2222222222222222222222222222222222222222222222222222222
+1030 2222222222222222222222222222222222222222222222222222222
+1031 2222222222222222222222222222222222222222222222222222222
+1032 2222222222222222222222222222222222222222222222222222222
+1033 2222222222222222222222222222222222222222222222222222222
+1034 2222222222222222222222222222222222222222222222222222222
+1035 2222222222222222222222222222222222222222222222222222222
+1036 2222222222222222222222222222222222222222222222222222222
+1037 2222222222222222222222222222222222222222222222222222222
+1038 2222222222222222222222222222222222222222222222222222222
+1039 2222222222222222222222222222222222222222222222222222222
+1040 2222222222222222222222222222222222222222222222222222222
+1041 2222222222222222222222222222222222222222222222222222222
+1042 2222222222222222222222222222222222222222222222222222222
+1043 2222222222222222222222222222222222222222222222222222222
+1044 2222222222222222222222222222222222222222222222222222222
+1045 2222222222222222222222222222222222222222222222222222222
+1046 2222222222222222222222222222222222222222222222222222222
+1047 2222222222222222222222222222222222222222222222222222222
+1048 2222222222222222222222222222222222222222222222222222222
+1049 2222222222222222222222222222222222222222222222222222222
+1050 2222222222222222222222222222222222222222222222222222222
+1051 2222222222222222222222222222222222222222222222222222222
+1052 2222222222222222222222222222222222222222222222222222222
+1053 2222222222222222222222222222222222222222222222222222222
+1054 2222222222222222222222222222222222222222222222222222222
+1055 2222222222222222222222222222222222222222222222222222222
+1056 2222222222222222222222222222222222222222222222222222222
+1057 2222222222222222222222222222222222222222222222222222222
+1058 2222222222222222222222222222222222222222222222222222222
+1059 2222222222222222222222222222222222222222222222222222222
+1060 2222222222222222222222222222222222222222222222222222222
+1061 2222222222222222222222222222222222222222222222222222222
+1062 2222222222222222222222222222222222222222222222222222222
+1063 2222222222222222222222222222222222222222222222222222222
+1064 2222222222222222222222222222222222222222222222222222222
+1065 2222222222222222222222222222222222222222222222222222222
+1066 2222222222222222222222222222222222222222222222222222222
+1067 2222222222222222222222222222222222222222222222222222222
+1068 2222222222222222222222222222222222222222222222222222222
+1069 2222222222222222222222222222222222222222222222222222222
+1070 2222222222222222222222222222222222222222222222222222222
+1071 2222222222222222222222222222222222222222222222222222222
+1072 2222222222222222222222222222222222222222222222222222222
+1073 2222222222222222222222222222222222222222222222222222222
+1074 2222222222222222222222222222222222222222222222222222222
+1075 2222222222222222222222222222222222222222222222222222222
+1076 2222222222222222222222222222222222222222222222222222222
+1077 2222222222222222222222222222222222222222222222222222222
+1078 2222222222222222222222222222222222222222222222222222222
+1079 2222222222222222222222222222222222222222222222222222222
+1080 2222222222222222222222222222222222222222222222222222222
+1081 2222222222222222222222222222222222222222222222222222222
+1082 2222222222222222222222222222222222222222222222222222222
+1083 2222222222222222222222222222222222222222222222222222222
+1084 2222222222222222222222222222222222222222222222222222222
+1085 2222222222222222222222222222222222222222222222222222222
+1086 2222222222222222222222222222222222222222222222222222222
+1087 2222222222222222222222222222222222222222222222222222222
+1088 2222222222222222222222222222222222222222222222222222222
+1089 2222222222222222222222222222222222222222222222222222222
+1090 2222222222222222222222222222222222222222222222222222222
+1091 2222222222222222222222222222222222222222222222222222222
+1092 2222222222222222222222222222222222222222222222222222222
+1093 2222222222222222222222222222222222222222222222222222222
+1094 2222222222222222222222222222222222222222222222222222222
+1095 2222222222222222222222222222222222222222222222222222222
+1096 2222222222222222222222222222222222222222222222222222222
+1097 2222222222222222222222222222222222222222222222222222222
+1098 2222222222222222222222222222222222222222222222222222222
+1099 2222222222222222222222222222222222222222222222222222222
+1100 2222222222222222222222222222222222222222222222222222222
+1101 2222222222222222222222222222222222222222222222222222222
+1102 2222222222222222222222222222222222222222222222222222222
+1103 2222222222222222222222222222222222222222222222222222222
+1104 2222222222222222222222222222222222222222222222222222222
+1105 2222222222222222222222222222222222222222222222222222222
+1106 2222222222222222222222222222222222222222222222222222222
+1107 2222222222222222222222222222222222222222222222222222222
+1108 2222222222222222222222222222222222222222222222222222222
+1109 2222222222222222222222222222222222222222222222222222222
+1110 2222222222222222222222222222222222222222222222222222222
+1111 2222222222222222222222222222222222222222222222222222222
+1112 2222222222222222222222222222222222222222222222222222222
+1113 2222222222222222222222222222222222222222222222222222222
+1114 2222222222222222222222222222222222222222222222222222222
+1115 2222222222222222222222222222222222222222222222222222222
+1116 2222222222222222222222222222222222222222222222222222222
+1117 2222222222222222222222222222222222222222222222222222222
+1118 2222222222222222222222222222222222222222222222222222222
+1119 2222222222222222222222222222222222222222222222222222222
+1120 2222222222222222222222222222222222222222222222222222222
+1121 2222222222222222222222222222222222222222222222222222222
+1122 2222222222222222222222222222222222222222222222222222222
+1123 2222222222222222222222222222222222222222222222222222222
+1124 2222222222222222222222222222222222222222222222222222222
+1125 2222222222222222222222222222222222222222222222222222222
+1126 2222222222222222222222222222222222222222222222222222222
+1127 2222222222222222222222222222222222222222222222222222222
+1128 2222222222222222222222222222222222222222222222222222222
+1129 2222222222222222222222222222222222222222222222222222222
+1130 2222222222222222222222222222222222222222222222222222222
+1131 2222222222222222222222222222222222222222222222222222222
+1132 2222222222222222222222222222222222222222222222222222222
+1133 2222222222222222222222222222222222222222222222222222222
+1134 2222222222222222222222222222222222222222222222222222222
+1135 2222222222222222222222222222222222222222222222222222222
+1136 2222222222222222222222222222222222222222222222222222222
+1137 2222222222222222222222222222222222222222222222222222222
+1138 2222222222222222222222222222222222222222222222222222222
+1139 2222222222222222222222222222222222222222222222222222222
+1140 2222222222222222222222222222222222222222222222222222222
+1141 2222222222222222222222222222222222222222222222222222222
+1142 2222222222222222222222222222222222222222222222222222222
+1143 2222222222222222222222222222222222222222222222222222222
+1144 2222222222222222222222222222222222222222222222222222222
+1145 2222222222222222222222222222222222222222222222222222222
+1146 2222222222222222222222222222222222222222222222222222222
+1147 2222222222222222222222222222222222222222222222222222222
+1148 2222222222222222222222222222222222222222222222222222222
+1149 2222222222222222222222222222222222222222222222222222222
+1150 2222222222222222222222222222222222222222222222222222222
+1151 2222222222222222222222222222222222222222222222222222222
+1152 2222222222222222222222222222222222222222222222222222222
+1153 2222222222222222222222222222222222222222222222222222222
+1154 2222222222222222222222222222222222222222222222222222222
+1155 2222222222222222222222222222222222222222222222222222222
+1156 2222222222222222222222222222222222222222222222222222222
+1157 2222222222222222222222222222222222222222222222222222222
+1158 2222222222222222222222222222222222222222222222222222222
+1159 2222222222222222222222222222222222222222222222222222222
+1160 2222222222222222222222222222222222222222222222222222222
+1161 2222222222222222222222222222222222222222222222222222222
+1162 2222222222222222222222222222222222222222222222222222222
+1163 2222222222222222222222222222222222222222222222222222222
+1164 2222222222222222222222222222222222222222222222222222222
+1165 2222222222222222222222222222222222222222222222222222222
+1166 2222222222222222222222222222222222222222222222222222222
+1167 2222222222222222222222222222222222222222222222222222222
+1168 2222222222222222222222222222222222222222222222222222222
+1169 2222222222222222222222222222222222222222222222222222222
+1170 2222222222222222222222222222222222222222222222222222222
+1171 2222222222222222222222222222222222222222222222222222222
+1172 2222222222222222222222222222222222222222222222222222222
+1173 2222222222222222222222222222222222222222222222222222222
+1174 2222222222222222222222222222222222222222222222222222222
+1175 2222222222222222222222222222222222222222222222222222222
+1176 2222222222222222222222222222222222222222222222222222222
+1177 2222222222222222222222222222222222222222222222222222222
+1178 2222222222222222222222222222222222222222222222222222222
+1179 2222222222222222222222222222222222222222222222222222222
+1180 2222222222222222222222222222222222222222222222222222222
+1181 2222222222222222222222222222222222222222222222222222222
+1182 2222222222222222222222222222222222222222222222222222222
+1183 2222222222222222222222222222222222222222222222222222222
+1184 2222222222222222222222222222222222222222222222222222222
+1185 2222222222222222222222222222222222222222222222222222222
+1186 2222222222222222222222222222222222222222222222222222222
+1187 2222222222222222222222222222222222222222222222222222222
+1188 2222222222222222222222222222222222222222222222222222222
+1189 2222222222222222222222222222222222222222222222222222222
+1190 2222222222222222222222222222222222222222222222222222222
+1191 2222222222222222222222222222222222222222222222222222222
+1192 2222222222222222222222222222222222222222222222222222222
+1193 2222222222222222222222222222222222222222222222222222222
+1194 2222222222222222222222222222222222222222222222222222222
+1195 2222222222222222222222222222222222222222222222222222222
+1196 2222222222222222222222222222222222222222222222222222222
+1197 2222222222222222222222222222222222222222222222222222222
+1198 2222222222222222222222222222222222222222222222222222222
+1199 2222222222222222222222222222222222222222222222222222222
+1200 2222222222222222222222222222222222222222222222222222222
+1201 2222222222222222222222222222222222222222222222222222222
+1202 2222222222222222222222222222222222222222222222222222222
+1203 2222222222222222222222222222222222222222222222222222222
+1204 2222222222222222222222222222222222222222222222222222222
+1205 2222222222222222222222222222222222222222222222222222222
+1206 2222222222222222222222222222222222222222222222222222222
+1207 2222222222222222222222222222222222222222222222222222222
+1208 2222222222222222222222222222222222222222222222222222222
+1209 2222222222222222222222222222222222222222222222222222222
+1210 2222222222222222222222222222222222222222222222222222222
+1211 2222222222222222222222222222222222222222222222222222222
+1212 2222222222222222222222222222222222222222222222222222222
+1213 2222222222222222222222222222222222222222222222222222222
+1214 2222222222222222222222222222222222222222222222222222222
+1215 2222222222222222222222222222222222222222222222222222222
+1216 2222222222222222222222222222222222222222222222222222222
+1217 2222222222222222222222222222222222222222222222222222222
+1218 2222222222222222222222222222222222222222222222222222222
+1219 2222222222222222222222222222222222222222222222222222222
+1220 2222222222222222222222222222222222222222222222222222222
+1221 2222222222222222222222222222222222222222222222222222222
+1222 2222222222222222222222222222222222222222222222222222222
+1223 2222222222222222222222222222222222222222222222222222222
+1224 2222222222222222222222222222222222222222222222222222222
+1225 2222222222222222222222222222222222222222222222222222222
+1226 2222222222222222222222222222222222222222222222222222222
+1227 2222222222222222222222222222222222222222222222222222222
+1228 2222222222222222222222222222222222222222222222222222222
+1229 2222222222222222222222222222222222222222222222222222222
+1230 2222222222222222222222222222222222222222222222222222222
+1231 2222222222222222222222222222222222222222222222222222222
+1232 2222222222222222222222222222222222222222222222222222222
+1233 2222222222222222222222222222222222222222222222222222222
+1234 2222222222222222222222222222222222222222222222222222222
+1235 2222222222222222222222222222222222222222222222222222222
+1236 2222222222222222222222222222222222222222222222222222222
+1237 2222222222222222222222222222222222222222222222222222222
+1238 2222222222222222222222222222222222222222222222222222222
+1239 2222222222222222222222222222222222222222222222222222222
+1240 2222222222222222222222222222222222222222222222222222222
+1241 2222222222222222222222222222222222222222222222222222222
+1242 2222222222222222222222222222222222222222222222222222222
+1243 2222222222222222222222222222222222222222222222222222222
+1244 2222222222222222222222222222222222222222222222222222222
+1245 2222222222222222222222222222222222222222222222222222222
+1246 2222222222222222222222222222222222222222222222222222222
+1247 2222222222222222222222222222222222222222222222222222222
+1248 2222222222222222222222222222222222222222222222222222222
+1249 2222222222222222222222222222222222222222222222222222222
+1250 2222222222222222222222222222222222222222222222222222222
+1251 2222222222222222222222222222222222222222222222222222222
+1252 2222222222222222222222222222222222222222222222222222222
+1253 2222222222222222222222222222222222222222222222222222222
+1254 2222222222222222222222222222222222222222222222222222222
+1255 2222222222222222222222222222222222222222222222222222222
+1256 2222222222222222222222222222222222222222222222222222222
+1257 2222222222222222222222222222222222222222222222222222222
+1258 2222222222222222222222222222222222222222222222222222222
+1259 2222222222222222222222222222222222222222222222222222222
+1260 2222222222222222222222222222222222222222222222222222222
+1261 2222222222222222222222222222222222222222222222222222222
+1262 2222222222222222222222222222222222222222222222222222222
+1263 2222222222222222222222222222222222222222222222222222222
+1264 2222222222222222222222222222222222222222222222222222222
+1265 2222222222222222222222222222222222222222222222222222222
+1266 2222222222222222222222222222222222222222222222222222222
+1267 2222222222222222222222222222222222222222222222222222222
+1268 2222222222222222222222222222222222222222222222222222222
+1269 2222222222222222222222222222222222222222222222222222222
+1270 2222222222222222222222222222222222222222222222222222222
+1271 2222222222222222222222222222222222222222222222222222222
+1272 2222222222222222222222222222222222222222222222222222222
+1273 2222222222222222222222222222222222222222222222222222222
+1274 2222222222222222222222222222222222222222222222222222222
+1275 2222222222222222222222222222222222222222222222222222222
+1276 2222222222222222222222222222222222222222222222222222222
+1277 2222222222222222222222222222222222222222222222222222222
+1278 2222222222222222222222222222222222222222222222222222222
+1279 2222222222222222222222222222222222222222222222222222222
+1280 2222222222222222222222222222222222222222222222222222222
+1281 2222222222222222222222222222222222222222222222222222222
+1282 2222222222222222222222222222222222222222222222222222222
+1283 2222222222222222222222222222222222222222222222222222222
+1284 2222222222222222222222222222222222222222222222222222222
+1285 2222222222222222222222222222222222222222222222222222222
+1286 2222222222222222222222222222222222222222222222222222222
+1287 2222222222222222222222222222222222222222222222222222222
+1288 2222222222222222222222222222222222222222222222222222222
+1289 2222222222222222222222222222222222222222222222222222222
+1290 2222222222222222222222222222222222222222222222222222222
+1291 2222222222222222222222222222222222222222222222222222222
+1292 2222222222222222222222222222222222222222222222222222222
+1293 2222222222222222222222222222222222222222222222222222222
+1294 2222222222222222222222222222222222222222222222222222222
+1295 2222222222222222222222222222222222222222222222222222222
+1296 2222222222222222222222222222222222222222222222222222222
+1297 2222222222222222222222222222222222222222222222222222222
+1298 2222222222222222222222222222222222222222222222222222222
+1299 2222222222222222222222222222222222222222222222222222222
+1300 2222222222222222222222222222222222222222222222222222222
+1301 2222222222222222222222222222222222222222222222222222222
+1302 2222222222222222222222222222222222222222222222222222222
+1303 2222222222222222222222222222222222222222222222222222222
+1304 2222222222222222222222222222222222222222222222222222222
+1305 2222222222222222222222222222222222222222222222222222222
+1306 2222222222222222222222222222222222222222222222222222222
+1307 2222222222222222222222222222222222222222222222222222222
+1308 2222222222222222222222222222222222222222222222222222222
+1309 2222222222222222222222222222222222222222222222222222222
+1310 2222222222222222222222222222222222222222222222222222222
+1311 2222222222222222222222222222222222222222222222222222222
+1312 2222222222222222222222222222222222222222222222222222222
+1313 2222222222222222222222222222222222222222222222222222222
+1314 2222222222222222222222222222222222222222222222222222222
+1315 2222222222222222222222222222222222222222222222222222222
+1316 2222222222222222222222222222222222222222222222222222222
+1317 2222222222222222222222222222222222222222222222222222222
+1318 2222222222222222222222222222222222222222222222222222222
+1319 2222222222222222222222222222222222222222222222222222222
+1320 2222222222222222222222222222222222222222222222222222222
+1321 2222222222222222222222222222222222222222222222222222222
+1322 2222222222222222222222222222222222222222222222222222222
+1323 2222222222222222222222222222222222222222222222222222222
+1324 2222222222222222222222222222222222222222222222222222222
+1325 2222222222222222222222222222222222222222222222222222222
+1326 2222222222222222222222222222222222222222222222222222222
+1327 2222222222222222222222222222222222222222222222222222222
+1328 2222222222222222222222222222222222222222222222222222222
+1329 2222222222222222222222222222222222222222222222222222222
+1330 2222222222222222222222222222222222222222222222222222222
+1331 2222222222222222222222222222222222222222222222222222222
+1332 2222222222222222222222222222222222222222222222222222222
+1333 2222222222222222222222222222222222222222222222222222222
+1334 2222222222222222222222222222222222222222222222222222222
+1335 2222222222222222222222222222222222222222222222222222222
+1336 2222222222222222222222222222222222222222222222222222222
+1337 2222222222222222222222222222222222222222222222222222222
+1338 2222222222222222222222222222222222222222222222222222222
+1339 2222222222222222222222222222222222222222222222222222222
+1340 2222222222222222222222222222222222222222222222222222222
+1341 2222222222222222222222222222222222222222222222222222222
+1342 2222222222222222222222222222222222222222222222222222222
+1343 2222222222222222222222222222222222222222222222222222222
+1344 2222222222222222222222222222222222222222222222222222222
+1345 2222222222222222222222222222222222222222222222222222222
+1346 2222222222222222222222222222222222222222222222222222222
+1347 2222222222222222222222222222222222222222222222222222222
+1348 2222222222222222222222222222222222222222222222222222222
+1349 2222222222222222222222222222222222222222222222222222222
+1350 2222222222222222222222222222222222222222222222222222222
+1351 2222222222222222222222222222222222222222222222222222222
+1352 2222222222222222222222222222222222222222222222222222222
+1353 2222222222222222222222222222222222222222222222222222222
+1354 2222222222222222222222222222222222222222222222222222222
+1355 2222222222222222222222222222222222222222222222222222222
+1356 2222222222222222222222222222222222222222222222222222222
+1357 2222222222222222222222222222222222222222222222222222222
+1358 2222222222222222222222222222222222222222222222222222222
+1359 2222222222222222222222222222222222222222222222222222222
+1360 2222222222222222222222222222222222222222222222222222222
+1361 2222222222222222222222222222222222222222222222222222222
+1362 2222222222222222222222222222222222222222222222222222222
+1363 2222222222222222222222222222222222222222222222222222222
+1364 2222222222222222222222222222222222222222222222222222222
+1365 2222222222222222222222222222222222222222222222222222222
+1366 2222222222222222222222222222222222222222222222222222222
+1367 2222222222222222222222222222222222222222222222222222222
+1368 2222222222222222222222222222222222222222222222222222222
+1369 2222222222222222222222222222222222222222222222222222222
+1370 2222222222222222222222222222222222222222222222222222222
+1371 2222222222222222222222222222222222222222222222222222222
+1372 2222222222222222222222222222222222222222222222222222222
+1373 2222222222222222222222222222222222222222222222222222222
+1374 2222222222222222222222222222222222222222222222222222222
+1375 2222222222222222222222222222222222222222222222222222222
+1376 2222222222222222222222222222222222222222222222222222222
+1377 2222222222222222222222222222222222222222222222222222222
+1378 2222222222222222222222222222222222222222222222222222222
+1379 2222222222222222222222222222222222222222222222222222222
+1380 2222222222222222222222222222222222222222222222222222222
+1381 2222222222222222222222222222222222222222222222222222222
+1382 2222222222222222222222222222222222222222222222222222222
+1383 2222222222222222222222222222222222222222222222222222222
+1384 2222222222222222222222222222222222222222222222222222222
+1385 2222222222222222222222222222222222222222222222222222222
+1386 2222222222222222222222222222222222222222222222222222222
+1387 2222222222222222222222222222222222222222222222222222222
+1388 2222222222222222222222222222222222222222222222222222222
+1389 2222222222222222222222222222222222222222222222222222222
+1390 2222222222222222222222222222222222222222222222222222222
+1391 2222222222222222222222222222222222222222222222222222222
+1392 2222222222222222222222222222222222222222222222222222222
+1393 2222222222222222222222222222222222222222222222222222222
+1394 2222222222222222222222222222222222222222222222222222222
+1395 2222222222222222222222222222222222222222222222222222222
+1396 2222222222222222222222222222222222222222222222222222222
+1397 2222222222222222222222222222222222222222222222222222222
+1398 2222222222222222222222222222222222222222222222222222222
+1399 2222222222222222222222222222222222222222222222222222222
+1400 2222222222222222222222222222222222222222222222222222222
+1401 2222222222222222222222222222222222222222222222222222222
+1402 2222222222222222222222222222222222222222222222222222222
+1403 2222222222222222222222222222222222222222222222222222222
+1404 2222222222222222222222222222222222222222222222222222222
+1405 2222222222222222222222222222222222222222222222222222222
+1406 2222222222222222222222222222222222222222222222222222222
+1407 2222222222222222222222222222222222222222222222222222222
+1408 2222222222222222222222222222222222222222222222222222222
+1409 2222222222222222222222222222222222222222222222222222222
+1410 2222222222222222222222222222222222222222222222222222222
+1411 2222222222222222222222222222222222222222222222222222222
+1412 2222222222222222222222222222222222222222222222222222222
+1413 2222222222222222222222222222222222222222222222222222222
+1414 2222222222222222222222222222222222222222222222222222222
+1415 2222222222222222222222222222222222222222222222222222222
+1416 2222222222222222222222222222222222222222222222222222222
+1417 2222222222222222222222222222222222222222222222222222222
+1418 2222222222222222222222222222222222222222222222222222222
+1419 2222222222222222222222222222222222222222222222222222222
+1420 2222222222222222222222222222222222222222222222222222222
+1421 2222222222222222222222222222222222222222222222222222222
+1422 2222222222222222222222222222222222222222222222222222222
+1423 2222222222222222222222222222222222222222222222222222222
+1424 2222222222222222222222222222222222222222222222222222222
+1425 2222222222222222222222222222222222222222222222222222222
+1426 2222222222222222222222222222222222222222222222222222222
+1427 2222222222222222222222222222222222222222222222222222222
+1428 2222222222222222222222222222222222222222222222222222222
+1429 2222222222222222222222222222222222222222222222222222222
+1430 2222222222222222222222222222222222222222222222222222222
+1431 2222222222222222222222222222222222222222222222222222222
+1432 2222222222222222222222222222222222222222222222222222222
+1433 2222222222222222222222222222222222222222222222222222222
+1434 2222222222222222222222222222222222222222222222222222222
+1435 2222222222222222222222222222222222222222222222222222222
+1436 2222222222222222222222222222222222222222222222222222222
+1437 2222222222222222222222222222222222222222222222222222222
+1438 2222222222222222222222222222222222222222222222222222222
+1439 2222222222222222222222222222222222222222222222222222222
+1440 2222222222222222222222222222222222222222222222222222222
+1441 2222222222222222222222222222222222222222222222222222222
+1442 2222222222222222222222222222222222222222222222222222222
+1443 2222222222222222222222222222222222222222222222222222222
+1444 2222222222222222222222222222222222222222222222222222222
+1445 2222222222222222222222222222222222222222222222222222222
+1446 2222222222222222222222222222222222222222222222222222222
+1447 2222222222222222222222222222222222222222222222222222222
+1448 2222222222222222222222222222222222222222222222222222222
+1449 2222222222222222222222222222222222222222222222222222222
+1450 2222222222222222222222222222222222222222222222222222222
+1451 2222222222222222222222222222222222222222222222222222222
+1452 2222222222222222222222222222222222222222222222222222222
+1453 2222222222222222222222222222222222222222222222222222222
+1454 2222222222222222222222222222222222222222222222222222222
+1455 2222222222222222222222222222222222222222222222222222222
+1456 2222222222222222222222222222222222222222222222222222222
+1457 2222222222222222222222222222222222222222222222222222222
+1458 2222222222222222222222222222222222222222222222222222222
+1459 2222222222222222222222222222222222222222222222222222222
+1460 2222222222222222222222222222222222222222222222222222222
+1461 2222222222222222222222222222222222222222222222222222222
+1462 2222222222222222222222222222222222222222222222222222222
+1463 2222222222222222222222222222222222222222222222222222222
+1464 2222222222222222222222222222222222222222222222222222222
+1465 2222222222222222222222222222222222222222222222222222222
+1466 2222222222222222222222222222222222222222222222222222222
+1467 2222222222222222222222222222222222222222222222222222222
+1468 2222222222222222222222222222222222222222222222222222222
+1469 2222222222222222222222222222222222222222222222222222222
+1470 2222222222222222222222222222222222222222222222222222222
+1471 2222222222222222222222222222222222222222222222222222222
+1472 2222222222222222222222222222222222222222222222222222222
+1473 2222222222222222222222222222222222222222222222222222222
+1474 2222222222222222222222222222222222222222222222222222222
+1475 2222222222222222222222222222222222222222222222222222222
+1476 2222222222222222222222222222222222222222222222222222222
+1477 2222222222222222222222222222222222222222222222222222222
+1478 2222222222222222222222222222222222222222222222222222222
+1479 2222222222222222222222222222222222222222222222222222222
+1480 2222222222222222222222222222222222222222222222222222222
+1481 2222222222222222222222222222222222222222222222222222222
+1482 2222222222222222222222222222222222222222222222222222222
+1483 2222222222222222222222222222222222222222222222222222222
+1484 2222222222222222222222222222222222222222222222222222222
+1485 2222222222222222222222222222222222222222222222222222222
+1486 2222222222222222222222222222222222222222222222222222222
+1487 2222222222222222222222222222222222222222222222222222222
+1488 2222222222222222222222222222222222222222222222222222222
+1489 2222222222222222222222222222222222222222222222222222222
+1490 2222222222222222222222222222222222222222222222222222222
+1491 2222222222222222222222222222222222222222222222222222222
+1492 2222222222222222222222222222222222222222222222222222222
+1493 2222222222222222222222222222222222222222222222222222222
+1494 2222222222222222222222222222222222222222222222222222222
+1495 2222222222222222222222222222222222222222222222222222222
+1496 2222222222222222222222222222222222222222222222222222222
+1497 2222222222222222222222222222222222222222222222222222222
+1498 2222222222222222222222222222222222222222222222222222222
+1499 2222222222222222222222222222222222222222222222222222222
+1500 2222222222222222222222222222222222222222222222222222222
+1501 2222222222222222222222222222222222222222222222222222222
+1502 2222222222222222222222222222222222222222222222222222222
+1503 2222222222222222222222222222222222222222222222222222222
+1504 2222222222222222222222222222222222222222222222222222222
+1505 2222222222222222222222222222222222222222222222222222222
+1506 2222222222222222222222222222222222222222222222222222222
+1507 2222222222222222222222222222222222222222222222222222222
+1508 2222222222222222222222222222222222222222222222222222222
+1509 2222222222222222222222222222222222222222222222222222222
+1510 2222222222222222222222222222222222222222222222222222222
+1511 2222222222222222222222222222222222222222222222222222222
+1512 2222222222222222222222222222222222222222222222222222222
+1513 2222222222222222222222222222222222222222222222222222222
+1514 2222222222222222222222222222222222222222222222222222222
+1515 2222222222222222222222222222222222222222222222222222222
+1516 2222222222222222222222222222222222222222222222222222222
+1517 2222222222222222222222222222222222222222222222222222222
+1518 2222222222222222222222222222222222222222222222222222222
+1519 2222222222222222222222222222222222222222222222222222222
+1520 2222222222222222222222222222222222222222222222222222222
+1521 2222222222222222222222222222222222222222222222222222222
+1522 2222222222222222222222222222222222222222222222222222222
+1523 2222222222222222222222222222222222222222222222222222222
+1524 2222222222222222222222222222222222222222222222222222222
+1525 2222222222222222222222222222222222222222222222222222222
+1526 2222222222222222222222222222222222222222222222222222222
+1527 2222222222222222222222222222222222222222222222222222222
+1528 2222222222222222222222222222222222222222222222222222222
+1529 2222222222222222222222222222222222222222222222222222222
+1530 2222222222222222222222222222222222222222222222222222222
+1531 2222222222222222222222222222222222222222222222222222222
+1532 2222222222222222222222222222222222222222222222222222222
+1533 2222222222222222222222222222222222222222222222222222222
+1534 2222222222222222222222222222222222222222222222222222222
+1535 2222222222222222222222222222222222222222222222222222222
+1536 2222222222222222222222222222222222222222222222222222222
+1537 2222222222222222222222222222222222222222222222222222222
+1538 2222222222222222222222222222222222222222222222222222222
+1539 2222222222222222222222222222222222222222222222222222222
+1540 2222222222222222222222222222222222222222222222222222222
+1541 2222222222222222222222222222222222222222222222222222222
+1542 2222222222222222222222222222222222222222222222222222222
+1543 2222222222222222222222222222222222222222222222222222222
+1544 2222222222222222222222222222222222222222222222222222222
+1545 2222222222222222222222222222222222222222222222222222222
+1546 2222222222222222222222222222222222222222222222222222222
+1547 2222222222222222222222222222222222222222222222222222222
+1548 2222222222222222222222222222222222222222222222222222222
+1549 2222222222222222222222222222222222222222222222222222222
+1550 2222222222222222222222222222222222222222222222222222222
+1551 2222222222222222222222222222222222222222222222222222222
+1552 2222222222222222222222222222222222222222222222222222222
+1553 2222222222222222222222222222222222222222222222222222222
+1554 2222222222222222222222222222222222222222222222222222222
+1555 2222222222222222222222222222222222222222222222222222222
+1556 2222222222222222222222222222222222222222222222222222222
+1557 2222222222222222222222222222222222222222222222222222222
+1558 2222222222222222222222222222222222222222222222222222222
+1559 2222222222222222222222222222222222222222222222222222222
+1560 2222222222222222222222222222222222222222222222222222222
+1561 2222222222222222222222222222222222222222222222222222222
+1562 2222222222222222222222222222222222222222222222222222222
+1563 2222222222222222222222222222222222222222222222222222222
+1564 2222222222222222222222222222222222222222222222222222222
+1565 2222222222222222222222222222222222222222222222222222222
+1566 2222222222222222222222222222222222222222222222222222222
+1567 2222222222222222222222222222222222222222222222222222222
+1568 2222222222222222222222222222222222222222222222222222222
+1569 2222222222222222222222222222222222222222222222222222222
+1570 2222222222222222222222222222222222222222222222222222222
+1571 2222222222222222222222222222222222222222222222222222222
+1572 2222222222222222222222222222222222222222222222222222222
+1573 2222222222222222222222222222222222222222222222222222222
+1574 2222222222222222222222222222222222222222222222222222222
+1575 2222222222222222222222222222222222222222222222222222222
+1576 2222222222222222222222222222222222222222222222222222222
+1577 2222222222222222222222222222222222222222222222222222222
+1578 2222222222222222222222222222222222222222222222222222222
+1579 2222222222222222222222222222222222222222222222222222222
+1580 2222222222222222222222222222222222222222222222222222222
+1581 2222222222222222222222222222222222222222222222222222222
+1582 2222222222222222222222222222222222222222222222222222222
+1583 2222222222222222222222222222222222222222222222222222222
+1584 2222222222222222222222222222222222222222222222222222222
+1585 2222222222222222222222222222222222222222222222222222222
+1586 2222222222222222222222222222222222222222222222222222222
+1587 2222222222222222222222222222222222222222222222222222222
+1588 2222222222222222222222222222222222222222222222222222222
+1589 2222222222222222222222222222222222222222222222222222222
+1590 2222222222222222222222222222222222222222222222222222222
+1591 2222222222222222222222222222222222222222222222222222222
+1592 2222222222222222222222222222222222222222222222222222222
+1593 2222222222222222222222222222222222222222222222222222222
+1594 2222222222222222222222222222222222222222222222222222222
+1595 2222222222222222222222222222222222222222222222222222222
+1596 2222222222222222222222222222222222222222222222222222222
+1597 2222222222222222222222222222222222222222222222222222222
+1598 2222222222222222222222222222222222222222222222222222222
+1599 2222222222222222222222222222222222222222222222222222222
+1600 2222222222222222222222222222222222222222222222222222222
+1601 2222222222222222222222222222222222222222222222222222222
+1602 2222222222222222222222222222222222222222222222222222222
+1603 2222222222222222222222222222222222222222222222222222222
+1604 2222222222222222222222222222222222222222222222222222222
+1605 2222222222222222222222222222222222222222222222222222222
+1606 2222222222222222222222222222222222222222222222222222222
+1607 2222222222222222222222222222222222222222222222222222222
+1608 2222222222222222222222222222222222222222222222222222222
+1609 2222222222222222222222222222222222222222222222222222222
+1610 2222222222222222222222222222222222222222222222222222222
+1611 2222222222222222222222222222222222222222222222222222222
+1612 2222222222222222222222222222222222222222222222222222222
+1613 2222222222222222222222222222222222222222222222222222222
+1614 2222222222222222222222222222222222222222222222222222222
+1615 2222222222222222222222222222222222222222222222222222222
+1616 2222222222222222222222222222222222222222222222222222222
+1617 2222222222222222222222222222222222222222222222222222222
+1618 2222222222222222222222222222222222222222222222222222222
+1619 2222222222222222222222222222222222222222222222222222222
+1620 2222222222222222222222222222222222222222222222222222222
+1621 2222222222222222222222222222222222222222222222222222222
+1622 2222222222222222222222222222222222222222222222222222222
+1623 2222222222222222222222222222222222222222222222222222222
+1624 2222222222222222222222222222222222222222222222222222222
+1625 2222222222222222222222222222222222222222222222222222222
+1626 2222222222222222222222222222222222222222222222222222222
+1627 2222222222222222222222222222222222222222222222222222222
+1628 2222222222222222222222222222222222222222222222222222222
+1629 2222222222222222222222222222222222222222222222222222222
+1630 2222222222222222222222222222222222222222222222222222222
+1631 2222222222222222222222222222222222222222222222222222222
+1632 2222222222222222222222222222222222222222222222222222222
+1633 2222222222222222222222222222222222222222222222222222222
+1634 2222222222222222222222222222222222222222222222222222222
+1635 2222222222222222222222222222222222222222222222222222222
+1636 2222222222222222222222222222222222222222222222222222222
+1637 2222222222222222222222222222222222222222222222222222222
+1638 2222222222222222222222222222222222222222222222222222222
+1639 2222222222222222222222222222222222222222222222222222222
+1640 2222222222222222222222222222222222222222222222222222222
+1641 2222222222222222222222222222222222222222222222222222222
+1642 2222222222222222222222222222222222222222222222222222222
+1643 2222222222222222222222222222222222222222222222222222222
+1644 2222222222222222222222222222222222222222222222222222222
+1645 2222222222222222222222222222222222222222222222222222222
+1646 2222222222222222222222222222222222222222222222222222222
+1647 2222222222222222222222222222222222222222222222222222222
+1648 2222222222222222222222222222222222222222222222222222222
+1649 2222222222222222222222222222222222222222222222222222222
+1650 2222222222222222222222222222222222222222222222222222222
+1651 2222222222222222222222222222222222222222222222222222222
+1652 2222222222222222222222222222222222222222222222222222222
+1653 2222222222222222222222222222222222222222222222222222222
+1654 2222222222222222222222222222222222222222222222222222222
+1655 2222222222222222222222222222222222222222222222222222222
+1656 2222222222222222222222222222222222222222222222222222222
+1657 2222222222222222222222222222222222222222222222222222222
+1658 2222222222222222222222222222222222222222222222222222222
+1659 2222222222222222222222222222222222222222222222222222222
+1660 2222222222222222222222222222222222222222222222222222222
+1661 2222222222222222222222222222222222222222222222222222222
+1662 2222222222222222222222222222222222222222222222222222222
+1663 2222222222222222222222222222222222222222222222222222222
+1664 2222222222222222222222222222222222222222222222222222222
+1665 2222222222222222222222222222222222222222222222222222222
+1666 2222222222222222222222222222222222222222222222222222222
+1667 2222222222222222222222222222222222222222222222222222222
+1668 2222222222222222222222222222222222222222222222222222222
+1669 2222222222222222222222222222222222222222222222222222222
+1670 2222222222222222222222222222222222222222222222222222222
+1671 2222222222222222222222222222222222222222222222222222222
+1672 2222222222222222222222222222222222222222222222222222222
+1673 2222222222222222222222222222222222222222222222222222222
+1674 2222222222222222222222222222222222222222222222222222222
+1675 2222222222222222222222222222222222222222222222222222222
+1676 2222222222222222222222222222222222222222222222222222222
+1677 2222222222222222222222222222222222222222222222222222222
+1678 2222222222222222222222222222222222222222222222222222222
+1679 2222222222222222222222222222222222222222222222222222222
+1680 2222222222222222222222222222222222222222222222222222222
+1681 2222222222222222222222222222222222222222222222222222222
+1682 2222222222222222222222222222222222222222222222222222222
+1683 2222222222222222222222222222222222222222222222222222222
+1684 2222222222222222222222222222222222222222222222222222222
+1685 2222222222222222222222222222222222222222222222222222222
+1686 2222222222222222222222222222222222222222222222222222222
+1687 2222222222222222222222222222222222222222222222222222222
+1688 2222222222222222222222222222222222222222222222222222222
+1689 2222222222222222222222222222222222222222222222222222222
+1690 2222222222222222222222222222222222222222222222222222222
+1691 2222222222222222222222222222222222222222222222222222222
+1692 2222222222222222222222222222222222222222222222222222222
+1693 2222222222222222222222222222222222222222222222222222222
+1694 2222222222222222222222222222222222222222222222222222222
+1695 2222222222222222222222222222222222222222222222222222222
+1696 2222222222222222222222222222222222222222222222222222222
+1697 2222222222222222222222222222222222222222222222222222222
+1698 2222222222222222222222222222222222222222222222222222222
+1699 2222222222222222222222222222222222222222222222222222222
+1700 2222222222222222222222222222222222222222222222222222222
+1701 2222222222222222222222222222222222222222222222222222222
+1702 2222222222222222222222222222222222222222222222222222222
+1703 2222222222222222222222222222222222222222222222222222222
+1704 2222222222222222222222222222222222222222222222222222222
+1705 2222222222222222222222222222222222222222222222222222222
+1706 2222222222222222222222222222222222222222222222222222222
+1707 2222222222222222222222222222222222222222222222222222222
+1708 2222222222222222222222222222222222222222222222222222222
+1709 2222222222222222222222222222222222222222222222222222222
+1710 2222222222222222222222222222222222222222222222222222222
+1711 2222222222222222222222222222222222222222222222222222222
+1712 2222222222222222222222222222222222222222222222222222222
+1713 2222222222222222222222222222222222222222222222222222222
+1714 2222222222222222222222222222222222222222222222222222222
+1715 2222222222222222222222222222222222222222222222222222222
+1716 2222222222222222222222222222222222222222222222222222222
+1717 2222222222222222222222222222222222222222222222222222222
+1718 2222222222222222222222222222222222222222222222222222222
+1719 2222222222222222222222222222222222222222222222222222222
+1720 2222222222222222222222222222222222222222222222222222222
+1721 2222222222222222222222222222222222222222222222222222222
+1722 2222222222222222222222222222222222222222222222222222222
+1723 2222222222222222222222222222222222222222222222222222222
+1724 2222222222222222222222222222222222222222222222222222222
+1725 2222222222222222222222222222222222222222222222222222222
+1726 2222222222222222222222222222222222222222222222222222222
+1727 2222222222222222222222222222222222222222222222222222222
+1728 2222222222222222222222222222222222222222222222222222222
+1729 2222222222222222222222222222222222222222222222222222222
+1730 2222222222222222222222222222222222222222222222222222222
+1731 2222222222222222222222222222222222222222222222222222222
+1732 2222222222222222222222222222222222222222222222222222222
+1733 2222222222222222222222222222222222222222222222222222222
+1734 2222222222222222222222222222222222222222222222222222222
+1735 2222222222222222222222222222222222222222222222222222222
+1736 2222222222222222222222222222222222222222222222222222222
+1737 2222222222222222222222222222222222222222222222222222222
+1738 2222222222222222222222222222222222222222222222222222222
+1739 2222222222222222222222222222222222222222222222222222222
+1740 2222222222222222222222222222222222222222222222222222222
+1741 2222222222222222222222222222222222222222222222222222222
+1742 2222222222222222222222222222222222222222222222222222222
+1743 2222222222222222222222222222222222222222222222222222222
+1744 2222222222222222222222222222222222222222222222222222222
+1745 2222222222222222222222222222222222222222222222222222222
+1746 2222222222222222222222222222222222222222222222222222222
+1747 2222222222222222222222222222222222222222222222222222222
+1748 2222222222222222222222222222222222222222222222222222222
+1749 2222222222222222222222222222222222222222222222222222222
+1750 2222222222222222222222222222222222222222222222222222222
+1751 2222222222222222222222222222222222222222222222222222222
+1752 2222222222222222222222222222222222222222222222222222222
+1753 2222222222222222222222222222222222222222222222222222222
+1754 2222222222222222222222222222222222222222222222222222222
+1755 2222222222222222222222222222222222222222222222222222222
+1756 2222222222222222222222222222222222222222222222222222222
+1757 2222222222222222222222222222222222222222222222222222222
+1758 2222222222222222222222222222222222222222222222222222222
+1759 2222222222222222222222222222222222222222222222222222222
+1760 2222222222222222222222222222222222222222222222222222222
+1761 2222222222222222222222222222222222222222222222222222222
+1762 2222222222222222222222222222222222222222222222222222222
+1763 2222222222222222222222222222222222222222222222222222222
+1764 2222222222222222222222222222222222222222222222222222222
+1765 2222222222222222222222222222222222222222222222222222222
+1766 2222222222222222222222222222222222222222222222222222222
+1767 2222222222222222222222222222222222222222222222222222222
+1768 2222222222222222222222222222222222222222222222222222222
+1769 2222222222222222222222222222222222222222222222222222222
+1770 2222222222222222222222222222222222222222222222222222222
+1771 2222222222222222222222222222222222222222222222222222222
+1772 2222222222222222222222222222222222222222222222222222222
+1773 2222222222222222222222222222222222222222222222222222222
+1774 2222222222222222222222222222222222222222222222222222222
+1775 2222222222222222222222222222222222222222222222222222222
+1776 2222222222222222222222222222222222222222222222222222222
+1777 2222222222222222222222222222222222222222222222222222222
+1778 2222222222222222222222222222222222222222222222222222222
+1779 2222222222222222222222222222222222222222222222222222222
+1780 2222222222222222222222222222222222222222222222222222222
+1781 2222222222222222222222222222222222222222222222222222222
+1782 2222222222222222222222222222222222222222222222222222222
+1783 2222222222222222222222222222222222222222222222222222222
+1784 2222222222222222222222222222222222222222222222222222222
+1785 2222222222222222222222222222222222222222222222222222222
+1786 2222222222222222222222222222222222222222222222222222222
+1787 2222222222222222222222222222222222222222222222222222222
+1788 2222222222222222222222222222222222222222222222222222222
+1789 2222222222222222222222222222222222222222222222222222222
+1790 2222222222222222222222222222222222222222222222222222222
+1791 2222222222222222222222222222222222222222222222222222222
+1792 2222222222222222222222222222222222222222222222222222222
+1793 2222222222222222222222222222222222222222222222222222222
+1794 2222222222222222222222222222222222222222222222222222222
+1795 2222222222222222222222222222222222222222222222222222222
+1796 2222222222222222222222222222222222222222222222222222222
+1797 2222222222222222222222222222222222222222222222222222222
+1798 2222222222222222222222222222222222222222222222222222222
+1799 2222222222222222222222222222222222222222222222222222222
+1800 2222222222222222222222222222222222222222222222222222222
+1801 2222222222222222222222222222222222222222222222222222222
+1802 2222222222222222222222222222222222222222222222222222222
+1803 2222222222222222222222222222222222222222222222222222222
+1804 2222222222222222222222222222222222222222222222222222222
+1805 2222222222222222222222222222222222222222222222222222222
+1806 2222222222222222222222222222222222222222222222222222222
+1807 2222222222222222222222222222222222222222222222222222222
+1808 2222222222222222222222222222222222222222222222222222222
+1809 2222222222222222222222222222222222222222222222222222222
+1810 2222222222222222222222222222222222222222222222222222222
+1811 2222222222222222222222222222222222222222222222222222222
+1812 2222222222222222222222222222222222222222222222222222222
+1813 2222222222222222222222222222222222222222222222222222222
+1814 2222222222222222222222222222222222222222222222222222222
+1815 2222222222222222222222222222222222222222222222222222222
+1816 2222222222222222222222222222222222222222222222222222222
+1817 2222222222222222222222222222222222222222222222222222222
+1818 2222222222222222222222222222222222222222222222222222222
+1819 2222222222222222222222222222222222222222222222222222222
+1820 2222222222222222222222222222222222222222222222222222222
+1821 2222222222222222222222222222222222222222222222222222222
+1822 2222222222222222222222222222222222222222222222222222222
+1823 2222222222222222222222222222222222222222222222222222222
+1824 2222222222222222222222222222222222222222222222222222222
+1825 2222222222222222222222222222222222222222222222222222222
+1826 2222222222222222222222222222222222222222222222222222222
+1827 2222222222222222222222222222222222222222222222222222222
+1828 2222222222222222222222222222222222222222222222222222222
+1829 2222222222222222222222222222222222222222222222222222222
+1830 2222222222222222222222222222222222222222222222222222222
+1831 2222222222222222222222222222222222222222222222222222222
+1832 2222222222222222222222222222222222222222222222222222222
+1833 2222222222222222222222222222222222222222222222222222222
+1834 2222222222222222222222222222222222222222222222222222222
+1835 2222222222222222222222222222222222222222222222222222222
+1836 2222222222222222222222222222222222222222222222222222222
+1837 2222222222222222222222222222222222222222222222222222222
+1838 2222222222222222222222222222222222222222222222222222222
+1839 2222222222222222222222222222222222222222222222222222222
+1840 2222222222222222222222222222222222222222222222222222222
+1841 2222222222222222222222222222222222222222222222222222222
+1842 2222222222222222222222222222222222222222222222222222222
+1843 2222222222222222222222222222222222222222222222222222222
+1844 2222222222222222222222222222222222222222222222222222222
+1845 2222222222222222222222222222222222222222222222222222222
+1846 2222222222222222222222222222222222222222222222222222222
+1847 2222222222222222222222222222222222222222222222222222222
+1848 2222222222222222222222222222222222222222222222222222222
+1849 2222222222222222222222222222222222222222222222222222222
+1850 2222222222222222222222222222222222222222222222222222222
+1851 2222222222222222222222222222222222222222222222222222222
+1852 2222222222222222222222222222222222222222222222222222222
+1853 2222222222222222222222222222222222222222222222222222222
+1854 2222222222222222222222222222222222222222222222222222222
+1855 2222222222222222222222222222222222222222222222222222222
+1856 2222222222222222222222222222222222222222222222222222222
+1857 2222222222222222222222222222222222222222222222222222222
+1858 2222222222222222222222222222222222222222222222222222222
+1859 2222222222222222222222222222222222222222222222222222222
+1860 2222222222222222222222222222222222222222222222222222222
+1861 2222222222222222222222222222222222222222222222222222222
+1862 2222222222222222222222222222222222222222222222222222222
+1863 2222222222222222222222222222222222222222222222222222222
+1864 2222222222222222222222222222222222222222222222222222222
+1865 2222222222222222222222222222222222222222222222222222222
+1866 2222222222222222222222222222222222222222222222222222222
+1867 2222222222222222222222222222222222222222222222222222222
+1868 2222222222222222222222222222222222222222222222222222222
+1869 2222222222222222222222222222222222222222222222222222222
+1870 2222222222222222222222222222222222222222222222222222222
+1871 2222222222222222222222222222222222222222222222222222222
+1872 2222222222222222222222222222222222222222222222222222222
+1873 2222222222222222222222222222222222222222222222222222222
+1874 2222222222222222222222222222222222222222222222222222222
+1875 2222222222222222222222222222222222222222222222222222222
+1876 2222222222222222222222222222222222222222222222222222222
+1877 2222222222222222222222222222222222222222222222222222222
+1878 2222222222222222222222222222222222222222222222222222222
+1879 2222222222222222222222222222222222222222222222222222222
+1880 2222222222222222222222222222222222222222222222222222222
+1881 2222222222222222222222222222222222222222222222222222222
+1882 2222222222222222222222222222222222222222222222222222222
+1883 2222222222222222222222222222222222222222222222222222222
+1884 2222222222222222222222222222222222222222222222222222222
+1885 2222222222222222222222222222222222222222222222222222222
+1886 2222222222222222222222222222222222222222222222222222222
+1887 2222222222222222222222222222222222222222222222222222222
+1888 2222222222222222222222222222222222222222222222222222222
+1889 2222222222222222222222222222222222222222222222222222222
+1890 2222222222222222222222222222222222222222222222222222222
+1891 2222222222222222222222222222222222222222222222222222222
+1892 2222222222222222222222222222222222222222222222222222222
+1893 2222222222222222222222222222222222222222222222222222222
+1894 2222222222222222222222222222222222222222222222222222222
+1895 2222222222222222222222222222222222222222222222222222222
+1896 2222222222222222222222222222222222222222222222222222222
+1897 2222222222222222222222222222222222222222222222222222222
+1898 2222222222222222222222222222222222222222222222222222222
+1899 2222222222222222222222222222222222222222222222222222222
+1900 2222222222222222222222222222222222222222222222222222222
+1901 2222222222222222222222222222222222222222222222222222222
+1902 2222222222222222222222222222222222222222222222222222222
+1903 2222222222222222222222222222222222222222222222222222222
+1904 2222222222222222222222222222222222222222222222222222222
+1905 2222222222222222222222222222222222222222222222222222222
+1906 2222222222222222222222222222222222222222222222222222222
+1907 2222222222222222222222222222222222222222222222222222222
+1908 2222222222222222222222222222222222222222222222222222222
+1909 2222222222222222222222222222222222222222222222222222222
+1910 2222222222222222222222222222222222222222222222222222222
+1911 2222222222222222222222222222222222222222222222222222222
+1912 2222222222222222222222222222222222222222222222222222222
+1913 2222222222222222222222222222222222222222222222222222222
+1914 2222222222222222222222222222222222222222222222222222222
+1915 2222222222222222222222222222222222222222222222222222222
+1916 2222222222222222222222222222222222222222222222222222222
+1917 2222222222222222222222222222222222222222222222222222222
+1918 2222222222222222222222222222222222222222222222222222222
+1919 2222222222222222222222222222222222222222222222222222222
+1920 2222222222222222222222222222222222222222222222222222222
+1921 2222222222222222222222222222222222222222222222222222222
+1922 2222222222222222222222222222222222222222222222222222222
+1923 2222222222222222222222222222222222222222222222222222222
+1924 2222222222222222222222222222222222222222222222222222222
+1925 2222222222222222222222222222222222222222222222222222222
+1926 2222222222222222222222222222222222222222222222222222222
+1927 2222222222222222222222222222222222222222222222222222222
+1928 2222222222222222222222222222222222222222222222222222222
+1929 2222222222222222222222222222222222222222222222222222222
+1930 2222222222222222222222222222222222222222222222222222222
+1931 2222222222222222222222222222222222222222222222222222222
+1932 2222222222222222222222222222222222222222222222222222222
+1933 2222222222222222222222222222222222222222222222222222222
+1934 2222222222222222222222222222222222222222222222222222222
+1935 2222222222222222222222222222222222222222222222222222222
+1936 2222222222222222222222222222222222222222222222222222222
+1937 2222222222222222222222222222222222222222222222222222222
+1938 2222222222222222222222222222222222222222222222222222222
+1939 2222222222222222222222222222222222222222222222222222222
+1940 2222222222222222222222222222222222222222222222222222222
+1941 2222222222222222222222222222222222222222222222222222222
+1942 2222222222222222222222222222222222222222222222222222222
+1943 2222222222222222222222222222222222222222222222222222222
+1944 2222222222222222222222222222222222222222222222222222222
+1945 2222222222222222222222222222222222222222222222222222222
+1946 2222222222222222222222222222222222222222222222222222222
+1947 2222222222222222222222222222222222222222222222222222222
+1948 2222222222222222222222222222222222222222222222222222222
+1949 2222222222222222222222222222222222222222222222222222222
+1950 2222222222222222222222222222222222222222222222222222222
+1951 2222222222222222222222222222222222222222222222222222222
+1952 2222222222222222222222222222222222222222222222222222222
+1953 2222222222222222222222222222222222222222222222222222222
+1954 2222222222222222222222222222222222222222222222222222222
+1955 2222222222222222222222222222222222222222222222222222222
+1956 2222222222222222222222222222222222222222222222222222222
+1957 2222222222222222222222222222222222222222222222222222222
+1958 2222222222222222222222222222222222222222222222222222222
+1959 2222222222222222222222222222222222222222222222222222222
+1960 2222222222222222222222222222222222222222222222222222222
+1961 2222222222222222222222222222222222222222222222222222222
+1962 2222222222222222222222222222222222222222222222222222222
+1963 2222222222222222222222222222222222222222222222222222222
+1964 2222222222222222222222222222222222222222222222222222222
+1965 2222222222222222222222222222222222222222222222222222222
+1966 2222222222222222222222222222222222222222222222222222222
+1967 2222222222222222222222222222222222222222222222222222222
+1968 2222222222222222222222222222222222222222222222222222222
+1969 2222222222222222222222222222222222222222222222222222222
+1970 2222222222222222222222222222222222222222222222222222222
+1971 2222222222222222222222222222222222222222222222222222222
+1972 2222222222222222222222222222222222222222222222222222222
+1973 2222222222222222222222222222222222222222222222222222222
+1974 2222222222222222222222222222222222222222222222222222222
+1975 2222222222222222222222222222222222222222222222222222222
+1976 2222222222222222222222222222222222222222222222222222222
+1977 2222222222222222222222222222222222222222222222222222222
+1978 2222222222222222222222222222222222222222222222222222222
+1979 2222222222222222222222222222222222222222222222222222222
+1980 2222222222222222222222222222222222222222222222222222222
+1981 2222222222222222222222222222222222222222222222222222222
+1982 2222222222222222222222222222222222222222222222222222222
+1983 2222222222222222222222222222222222222222222222222222222
+1984 2222222222222222222222222222222222222222222222222222222
+1985 2222222222222222222222222222222222222222222222222222222
+1986 2222222222222222222222222222222222222222222222222222222
+1987 2222222222222222222222222222222222222222222222222222222
+1988 2222222222222222222222222222222222222222222222222222222
+1989 2222222222222222222222222222222222222222222222222222222
+1990 2222222222222222222222222222222222222222222222222222222
+1991 2222222222222222222222222222222222222222222222222222222
+1992 2222222222222222222222222222222222222222222222222222222
+1993 2222222222222222222222222222222222222222222222222222222
+1994 2222222222222222222222222222222222222222222222222222222
+1995 2222222222222222222222222222222222222222222222222222222
+1996 2222222222222222222222222222222222222222222222222222222
+1997 2222222222222222222222222222222222222222222222222222222
+1998 2222222222222222222222222222222222222222222222222222222
+1999 2222222222222222222222222222222222222222222222222222222
+2000 2222222222222222222222222222222222222222222222222222222
+2001 2222222222222222222222222222222222222222222222222222222
+2002 2222222222222222222222222222222222222222222222222222222
+2003 2222222222222222222222222222222222222222222222222222222
+2004 2222222222222222222222222222222222222222222222222222222
+2005 2222222222222222222222222222222222222222222222222222222
+2006 2222222222222222222222222222222222222222222222222222222
+2007 2222222222222222222222222222222222222222222222222222222
+2008 2222222222222222222222222222222222222222222222222222222
+2009 2222222222222222222222222222222222222222222222222222222
+2010 2222222222222222222222222222222222222222222222222222222
+2011 2222222222222222222222222222222222222222222222222222222
+2012 2222222222222222222222222222222222222222222222222222222
+2013 2222222222222222222222222222222222222222222222222222222
+2014 2222222222222222222222222222222222222222222222222222222
+2015 2222222222222222222222222222222222222222222222222222222
+2016 2222222222222222222222222222222222222222222222222222222
+2017 2222222222222222222222222222222222222222222222222222222
+2018 2222222222222222222222222222222222222222222222222222222
+2019 2222222222222222222222222222222222222222222222222222222
+2020 2222222222222222222222222222222222222222222222222222222
+2021 2222222222222222222222222222222222222222222222222222222
+2022 2222222222222222222222222222222222222222222222222222222
+2023 2222222222222222222222222222222222222222222222222222222
+2024 2222222222222222222222222222222222222222222222222222222
+2025 2222222222222222222222222222222222222222222222222222222
+2026 2222222222222222222222222222222222222222222222222222222
+2027 2222222222222222222222222222222222222222222222222222222
+2028 2222222222222222222222222222222222222222222222222222222
+2029 2222222222222222222222222222222222222222222222222222222
+2030 2222222222222222222222222222222222222222222222222222222
+2031 2222222222222222222222222222222222222222222222222222222
+2032 2222222222222222222222222222222222222222222222222222222
+2033 2222222222222222222222222222222222222222222222222222222
+2034 2222222222222222222222222222222222222222222222222222222
+2035 2222222222222222222222222222222222222222222222222222222
+2036 2222222222222222222222222222222222222222222222222222222
+2037 2222222222222222222222222222222222222222222222222222222
+2038 2222222222222222222222222222222222222222222222222222222
+2039 2222222222222222222222222222222222222222222222222222222
+2040 2222222222222222222222222222222222222222222222222222222
+2041 2222222222222222222222222222222222222222222222222222222
+2042 2222222222222222222222222222222222222222222222222222222
+2043 2222222222222222222222222222222222222222222222222222222
+2044 2222222222222222222222222222222222222222222222222222222
+2045 2222222222222222222222222222222222222222222222222222222
+2046 2222222222222222222222222222222222222222222222222222222
+2047 2222222222222222222222222222222222222222222222222222222
+2048 2222222222222222222222222222222222222222222222222222222
+2049 2222222222222222222222222222222222222222222222222222222
+2050 2222222222222222222222222222222222222222222222222222222
+2051 2222222222222222222222222222222222222222222222222222222
+2052 2222222222222222222222222222222222222222222222222222222
+2053 2222222222222222222222222222222222222222222222222222222
+2054 2222222222222222222222222222222222222222222222222222222
+2055 2222222222222222222222222222222222222222222222222222222
+2056 2222222222222222222222222222222222222222222222222222222
+2057 2222222222222222222222222222222222222222222222222222222
+2058 2222222222222222222222222222222222222222222222222222222
+2059 2222222222222222222222222222222222222222222222222222222
+2060 2222222222222222222222222222222222222222222222222222222
+2061 2222222222222222222222222222222222222222222222222222222
+2062 2222222222222222222222222222222222222222222222222222222
+2063 2222222222222222222222222222222222222222222222222222222
+2064 2222222222222222222222222222222222222222222222222222222
+2065 2222222222222222222222222222222222222222222222222222222
+2066 2222222222222222222222222222222222222222222222222222222
+2067 2222222222222222222222222222222222222222222222222222222
+2068 2222222222222222222222222222222222222222222222222222222
+2069 2222222222222222222222222222222222222222222222222222222
+2070 2222222222222222222222222222222222222222222222222222222
+2071 2222222222222222222222222222222222222222222222222222222
+2072 2222222222222222222222222222222222222222222222222222222
+2073 2222222222222222222222222222222222222222222222222222222
+2074 2222222222222222222222222222222222222222222222222222222
+2075 2222222222222222222222222222222222222222222222222222222
+2076 2222222222222222222222222222222222222222222222222222222
+2077 2222222222222222222222222222222222222222222222222222222
+2078 2222222222222222222222222222222222222222222222222222222
+2079 2222222222222222222222222222222222222222222222222222222
+2080 2222222222222222222222222222222222222222222222222222222
+2081 2222222222222222222222222222222222222222222222222222222
+2082 2222222222222222222222222222222222222222222222222222222
+2083 2222222222222222222222222222222222222222222222222222222
+2084 2222222222222222222222222222222222222222222222222222222
+2085 2222222222222222222222222222222222222222222222222222222
+2086 2222222222222222222222222222222222222222222222222222222
+2087 2222222222222222222222222222222222222222222222222222222
+2088 2222222222222222222222222222222222222222222222222222222
+2089 2222222222222222222222222222222222222222222222222222222
+2090 2222222222222222222222222222222222222222222222222222222
+2091 2222222222222222222222222222222222222222222222222222222
+2092 2222222222222222222222222222222222222222222222222222222
+2093 2222222222222222222222222222222222222222222222222222222
+2094 2222222222222222222222222222222222222222222222222222222
+2095 2222222222222222222222222222222222222222222222222222222
+2096 2222222222222222222222222222222222222222222222222222222
+2097 2222222222222222222222222222222222222222222222222222222
+2098 2222222222222222222222222222222222222222222222222222222
+2099 2222222222222222222222222222222222222222222222222222222
+2100 2222222222222222222222222222222222222222222222222222222
+2101 2222222222222222222222222222222222222222222222222222222
+2102 2222222222222222222222222222222222222222222222222222222
+2103 2222222222222222222222222222222222222222222222222222222
+2104 2222222222222222222222222222222222222222222222222222222
+2105 2222222222222222222222222222222222222222222222222222222
+2106 2222222222222222222222222222222222222222222222222222222
+2107 2222222222222222222222222222222222222222222222222222222
+2108 2222222222222222222222222222222222222222222222222222222
+2109 2222222222222222222222222222222222222222222222222222222
+2110 2222222222222222222222222222222222222222222222222222222
+2111 2222222222222222222222222222222222222222222222222222222
+2112 2222222222222222222222222222222222222222222222222222222
+2113 2222222222222222222222222222222222222222222222222222222
+2114 2222222222222222222222222222222222222222222222222222222
+2115 2222222222222222222222222222222222222222222222222222222
+2116 2222222222222222222222222222222222222222222222222222222
+2117 2222222222222222222222222222222222222222222222222222222
+2118 2222222222222222222222222222222222222222222222222222222
+2119 2222222222222222222222222222222222222222222222222222222
+2120 2222222222222222222222222222222222222222222222222222222
+2121 2222222222222222222222222222222222222222222222222222222
+2122 2222222222222222222222222222222222222222222222222222222
+2123 2222222222222222222222222222222222222222222222222222222
+2124 2222222222222222222222222222222222222222222222222222222
+2125 2222222222222222222222222222222222222222222222222222222
+2126 2222222222222222222222222222222222222222222222222222222
+2127 2222222222222222222222222222222222222222222222222222222
+2128 2222222222222222222222222222222222222222222222222222222
+2129 2222222222222222222222222222222222222222222222222222222
+2130 2222222222222222222222222222222222222222222222222222222
+2131 2222222222222222222222222222222222222222222222222222222
+2132 2222222222222222222222222222222222222222222222222222222
+2133 2222222222222222222222222222222222222222222222222222222
+2134 2222222222222222222222222222222222222222222222222222222
+2135 2222222222222222222222222222222222222222222222222222222
+2136 2222222222222222222222222222222222222222222222222222222
+2137 2222222222222222222222222222222222222222222222222222222
+2138 2222222222222222222222222222222222222222222222222222222
+2139 2222222222222222222222222222222222222222222222222222222
+2140 2222222222222222222222222222222222222222222222222222222
+2141 2222222222222222222222222222222222222222222222222222222
+2142 2222222222222222222222222222222222222222222222222222222
+2143 2222222222222222222222222222222222222222222222222222222
+2144 2222222222222222222222222222222222222222222222222222222
+2145 2222222222222222222222222222222222222222222222222222222
+2146 2222222222222222222222222222222222222222222222222222222
+2147 2222222222222222222222222222222222222222222222222222222
+2148 2222222222222222222222222222222222222222222222222222222
+2149 2222222222222222222222222222222222222222222222222222222
+2150 2222222222222222222222222222222222222222222222222222222
+2151 2222222222222222222222222222222222222222222222222222222
+2152 2222222222222222222222222222222222222222222222222222222
+2153 2222222222222222222222222222222222222222222222222222222
+2154 2222222222222222222222222222222222222222222222222222222
+2155 2222222222222222222222222222222222222222222222222222222
+2156 2222222222222222222222222222222222222222222222222222222
+2157 2222222222222222222222222222222222222222222222222222222
+2158 2222222222222222222222222222222222222222222222222222222
+2159 2222222222222222222222222222222222222222222222222222222
+2160 2222222222222222222222222222222222222222222222222222222
+2161 2222222222222222222222222222222222222222222222222222222
+2162 2222222222222222222222222222222222222222222222222222222
+2163 2222222222222222222222222222222222222222222222222222222
+2164 2222222222222222222222222222222222222222222222222222222
+2165 2222222222222222222222222222222222222222222222222222222
+2166 2222222222222222222222222222222222222222222222222222222
+2167 2222222222222222222222222222222222222222222222222222222
+2168 2222222222222222222222222222222222222222222222222222222
+2169 2222222222222222222222222222222222222222222222222222222
+2170 2222222222222222222222222222222222222222222222222222222
+2171 2222222222222222222222222222222222222222222222222222222
+2172 2222222222222222222222222222222222222222222222222222222
+2173 2222222222222222222222222222222222222222222222222222222
+2174 2222222222222222222222222222222222222222222222222222222
+2175 2222222222222222222222222222222222222222222222222222222
+2176 2222222222222222222222222222222222222222222222222222222
+2177 2222222222222222222222222222222222222222222222222222222
+2178 2222222222222222222222222222222222222222222222222222222
+2179 2222222222222222222222222222222222222222222222222222222
+2180 2222222222222222222222222222222222222222222222222222222
+2181 2222222222222222222222222222222222222222222222222222222
+2182 2222222222222222222222222222222222222222222222222222222
+2183 2222222222222222222222222222222222222222222222222222222
+2184 2222222222222222222222222222222222222222222222222222222
+2185 2222222222222222222222222222222222222222222222222222222
+2186 2222222222222222222222222222222222222222222222222222222
+2187 2222222222222222222222222222222222222222222222222222222
+2188 2222222222222222222222222222222222222222222222222222222
+2189 2222222222222222222222222222222222222222222222222222222
+2190 2222222222222222222222222222222222222222222222222222222
+2191 2222222222222222222222222222222222222222222222222222222
+2192 2222222222222222222222222222222222222222222222222222222
+2193 2222222222222222222222222222222222222222222222222222222
+2194 2222222222222222222222222222222222222222222222222222222
+2195 2222222222222222222222222222222222222222222222222222222
+2196 2222222222222222222222222222222222222222222222222222222
+2197 2222222222222222222222222222222222222222222222222222222
+2198 2222222222222222222222222222222222222222222222222222222
+2199 2222222222222222222222222222222222222222222222222222222
+2200 2222222222222222222222222222222222222222222222222222222
+2201 2222222222222222222222222222222222222222222222222222222
+2202 2222222222222222222222222222222222222222222222222222222
+2203 2222222222222222222222222222222222222222222222222222222
+2204 2222222222222222222222222222222222222222222222222222222
+2205 2222222222222222222222222222222222222222222222222222222
+2206 2222222222222222222222222222222222222222222222222222222
+2207 2222222222222222222222222222222222222222222222222222222
+2208 2222222222222222222222222222222222222222222222222222222
+2209 2222222222222222222222222222222222222222222222222222222
+2210 2222222222222222222222222222222222222222222222222222222
+2211 2222222222222222222222222222222222222222222222222222222
+2212 2222222222222222222222222222222222222222222222222222222
+2213 2222222222222222222222222222222222222222222222222222222
+2214 2222222222222222222222222222222222222222222222222222222
+2215 2222222222222222222222222222222222222222222222222222222
+2216 2222222222222222222222222222222222222222222222222222222
+2217 2222222222222222222222222222222222222222222222222222222
+2218 2222222222222222222222222222222222222222222222222222222
+2219 2222222222222222222222222222222222222222222222222222222
+2220 2222222222222222222222222222222222222222222222222222222
+2221 2222222222222222222222222222222222222222222222222222222
+2222 2222222222222222222222222222222222222222222222222222222
+2223 2222222222222222222222222222222222222222222222222222222
+2224 2222222222222222222222222222222222222222222222222222222
+2225 2222222222222222222222222222222222222222222222222222222
+2226 2222222222222222222222222222222222222222222222222222222
+2227 2222222222222222222222222222222222222222222222222222222
+2228 2222222222222222222222222222222222222222222222222222222
+2229 2222222222222222222222222222222222222222222222222222222
+2230 2222222222222222222222222222222222222222222222222222222
+2231 2222222222222222222222222222222222222222222222222222222
+2232 2222222222222222222222222222222222222222222222222222222
+2233 2222222222222222222222222222222222222222222222222222222
+2234 2222222222222222222222222222222222222222222222222222222
+2235 2222222222222222222222222222222222222222222222222222222
+2236 2222222222222222222222222222222222222222222222222222222
+2237 2222222222222222222222222222222222222222222222222222222
+2238 2222222222222222222222222222222222222222222222222222222
+2239 2222222222222222222222222222222222222222222222222222222
+2240 2222222222222222222222222222222222222222222222222222222
+2241 2222222222222222222222222222222222222222222222222222222
+2242 2222222222222222222222222222222222222222222222222222222
+2243 2222222222222222222222222222222222222222222222222222222
+2244 2222222222222222222222222222222222222222222222222222222
+2245 2222222222222222222222222222222222222222222222222222222
+2246 2222222222222222222222222222222222222222222222222222222
+2247 2222222222222222222222222222222222222222222222222222222
+2248 2222222222222222222222222222222222222222222222222222222
+2249 2222222222222222222222222222222222222222222222222222222
+2250 2222222222222222222222222222222222222222222222222222222
+2251 2222222222222222222222222222222222222222222222222222222
+2252 2222222222222222222222222222222222222222222222222222222
+2253 2222222222222222222222222222222222222222222222222222222
+2254 2222222222222222222222222222222222222222222222222222222
+2255 2222222222222222222222222222222222222222222222222222222
+2256 2222222222222222222222222222222222222222222222222222222
+2257 2222222222222222222222222222222222222222222222222222222
+2258 2222222222222222222222222222222222222222222222222222222
+2259 2222222222222222222222222222222222222222222222222222222
+2260 2222222222222222222222222222222222222222222222222222222
+2261 2222222222222222222222222222222222222222222222222222222
+2262 2222222222222222222222222222222222222222222222222222222
+2263 2222222222222222222222222222222222222222222222222222222
+2264 2222222222222222222222222222222222222222222222222222222
+2265 2222222222222222222222222222222222222222222222222222222
+2266 2222222222222222222222222222222222222222222222222222222
+2267 2222222222222222222222222222222222222222222222222222222
+2268 2222222222222222222222222222222222222222222222222222222
+2269 2222222222222222222222222222222222222222222222222222222
+2270 2222222222222222222222222222222222222222222222222222222
+2271 2222222222222222222222222222222222222222222222222222222
+2272 2222222222222222222222222222222222222222222222222222222
+2273 2222222222222222222222222222222222222222222222222222222
+2274 2222222222222222222222222222222222222222222222222222222
+2275 2222222222222222222222222222222222222222222222222222222
+2276 2222222222222222222222222222222222222222222222222222222
+2277 2222222222222222222222222222222222222222222222222222222
+2278 2222222222222222222222222222222222222222222222222222222
+2279 2222222222222222222222222222222222222222222222222222222
+2280 2222222222222222222222222222222222222222222222222222222
+2281 2222222222222222222222222222222222222222222222222222222
+2282 2222222222222222222222222222222222222222222222222222222
+2283 2222222222222222222222222222222222222222222222222222222
+2284 2222222222222222222222222222222222222222222222222222222
+2285 2222222222222222222222222222222222222222222222222222222
+2286 2222222222222222222222222222222222222222222222222222222
+2287 2222222222222222222222222222222222222222222222222222222
+2288 2222222222222222222222222222222222222222222222222222222
+2289 2222222222222222222222222222222222222222222222222222222
+2290 2222222222222222222222222222222222222222222222222222222
+2291 2222222222222222222222222222222222222222222222222222222
+2292 2222222222222222222222222222222222222222222222222222222
+2293 2222222222222222222222222222222222222222222222222222222
+2294 2222222222222222222222222222222222222222222222222222222
+2295 2222222222222222222222222222222222222222222222222222222
+2296 2222222222222222222222222222222222222222222222222222222
+2297 2222222222222222222222222222222222222222222222222222222
+2298 2222222222222222222222222222222222222222222222222222222
+2299 2222222222222222222222222222222222222222222222222222222
+2300 2222222222222222222222222222222222222222222222222222222
+2301 2222222222222222222222222222222222222222222222222222222
+2302 2222222222222222222222222222222222222222222222222222222
+2303 2222222222222222222222222222222222222222222222222222222
+2304 2222222222222222222222222222222222222222222222222222222
+2305 2222222222222222222222222222222222222222222222222222222
+2306 2222222222222222222222222222222222222222222222222222222
+2307 2222222222222222222222222222222222222222222222222222222
+2308 2222222222222222222222222222222222222222222222222222222
+2309 2222222222222222222222222222222222222222222222222222222
+2310 2222222222222222222222222222222222222222222222222222222
+2311 2222222222222222222222222222222222222222222222222222222
+2312 2222222222222222222222222222222222222222222222222222222
+2313 2222222222222222222222222222222222222222222222222222222
+2314 2222222222222222222222222222222222222222222222222222222
+2315 2222222222222222222222222222222222222222222222222222222
+2316 2222222222222222222222222222222222222222222222222222222
+2317 2222222222222222222222222222222222222222222222222222222
+2318 2222222222222222222222222222222222222222222222222222222
+2319 2222222222222222222222222222222222222222222222222222222
+2320 2222222222222222222222222222222222222222222222222222222
+2321 2222222222222222222222222222222222222222222222222222222
+2322 2222222222222222222222222222222222222222222222222222222
+2323 2222222222222222222222222222222222222222222222222222222
+2324 2222222222222222222222222222222222222222222222222222222
+2325 2222222222222222222222222222222222222222222222222222222
+2326 2222222222222222222222222222222222222222222222222222222
+2327 2222222222222222222222222222222222222222222222222222222
+2328 2222222222222222222222222222222222222222222222222222222
+2329 2222222222222222222222222222222222222222222222222222222
+2330 2222222222222222222222222222222222222222222222222222222
+2331 2222222222222222222222222222222222222222222222222222222
+2332 2222222222222222222222222222222222222222222222222222222
+2333 2222222222222222222222222222222222222222222222222222222
+2334 2222222222222222222222222222222222222222222222222222222
+2335 2222222222222222222222222222222222222222222222222222222
+2336 2222222222222222222222222222222222222222222222222222222
+2337 2222222222222222222222222222222222222222222222222222222
+2338 2222222222222222222222222222222222222222222222222222222
+2339 2222222222222222222222222222222222222222222222222222222
+2340 2222222222222222222222222222222222222222222222222222222
+2341 2222222222222222222222222222222222222222222222222222222
+2342 2222222222222222222222222222222222222222222222222222222
+2343 2222222222222222222222222222222222222222222222222222222
+2344 2222222222222222222222222222222222222222222222222222222
+2345 2222222222222222222222222222222222222222222222222222222
+2346 2222222222222222222222222222222222222222222222222222222
+2347 2222222222222222222222222222222222222222222222222222222
+2348 2222222222222222222222222222222222222222222222222222222
+2349 2222222222222222222222222222222222222222222222222222222
+2350 2222222222222222222222222222222222222222222222222222222
+2351 2222222222222222222222222222222222222222222222222222222
+2352 2222222222222222222222222222222222222222222222222222222
+2353 2222222222222222222222222222222222222222222222222222222
+2354 2222222222222222222222222222222222222222222222222222222
+2355 2222222222222222222222222222222222222222222222222222222
+2356 2222222222222222222222222222222222222222222222222222222
+2357 2222222222222222222222222222222222222222222222222222222
+2358 2222222222222222222222222222222222222222222222222222222
+2359 2222222222222222222222222222222222222222222222222222222
+2360 2222222222222222222222222222222222222222222222222222222
+2361 2222222222222222222222222222222222222222222222222222222
+2362 2222222222222222222222222222222222222222222222222222222
+2363 2222222222222222222222222222222222222222222222222222222
+2364 2222222222222222222222222222222222222222222222222222222
+2365 2222222222222222222222222222222222222222222222222222222
+2366 2222222222222222222222222222222222222222222222222222222
+2367 2222222222222222222222222222222222222222222222222222222
+2368 2222222222222222222222222222222222222222222222222222222
+2369 2222222222222222222222222222222222222222222222222222222
+2370 2222222222222222222222222222222222222222222222222222222
+2371 2222222222222222222222222222222222222222222222222222222
+2372 2222222222222222222222222222222222222222222222222222222
+2373 2222222222222222222222222222222222222222222222222222222
+2374 2222222222222222222222222222222222222222222222222222222
+2375 2222222222222222222222222222222222222222222222222222222
+2376 2222222222222222222222222222222222222222222222222222222
+2377 2222222222222222222222222222222222222222222222222222222
+2378 2222222222222222222222222222222222222222222222222222222
+2379 2222222222222222222222222222222222222222222222222222222
+2380 2222222222222222222222222222222222222222222222222222222
+2381 2222222222222222222222222222222222222222222222222222222
+2382 2222222222222222222222222222222222222222222222222222222
+2383 2222222222222222222222222222222222222222222222222222222
+2384 2222222222222222222222222222222222222222222222222222222
+2385 2222222222222222222222222222222222222222222222222222222
+2386 2222222222222222222222222222222222222222222222222222222
+2387 2222222222222222222222222222222222222222222222222222222
+2388 2222222222222222222222222222222222222222222222222222222
+2389 2222222222222222222222222222222222222222222222222222222
+2390 2222222222222222222222222222222222222222222222222222222
+2391 2222222222222222222222222222222222222222222222222222222
+2392 2222222222222222222222222222222222222222222222222222222
+2393 2222222222222222222222222222222222222222222222222222222
+2394 2222222222222222222222222222222222222222222222222222222
+2395 2222222222222222222222222222222222222222222222222222222
+2396 2222222222222222222222222222222222222222222222222222222
+2397 2222222222222222222222222222222222222222222222222222222
+2398 2222222222222222222222222222222222222222222222222222222
+2399 2222222222222222222222222222222222222222222222222222222
+2400 2222222222222222222222222222222222222222222222222222222
+2401 2222222222222222222222222222222222222222222222222222222
+2402 2222222222222222222222222222222222222222222222222222222
+2403 2222222222222222222222222222222222222222222222222222222
+2404 2222222222222222222222222222222222222222222222222222222
+2405 2222222222222222222222222222222222222222222222222222222
+2406 2222222222222222222222222222222222222222222222222222222
+2407 2222222222222222222222222222222222222222222222222222222
+2408 2222222222222222222222222222222222222222222222222222222
+2409 2222222222222222222222222222222222222222222222222222222
+2410 2222222222222222222222222222222222222222222222222222222
+2411 2222222222222222222222222222222222222222222222222222222
+2412 2222222222222222222222222222222222222222222222222222222
+2413 2222222222222222222222222222222222222222222222222222222
+2414 2222222222222222222222222222222222222222222222222222222
+2415 2222222222222222222222222222222222222222222222222222222
+2416 2222222222222222222222222222222222222222222222222222222
+2417 2222222222222222222222222222222222222222222222222222222
+2418 2222222222222222222222222222222222222222222222222222222
+2419 2222222222222222222222222222222222222222222222222222222
+2420 2222222222222222222222222222222222222222222222222222222
+2421 2222222222222222222222222222222222222222222222222222222
+2422 2222222222222222222222222222222222222222222222222222222
+2423 2222222222222222222222222222222222222222222222222222222
+2424 2222222222222222222222222222222222222222222222222222222
+2425 2222222222222222222222222222222222222222222222222222222
+2426 2222222222222222222222222222222222222222222222222222222
+2427 2222222222222222222222222222222222222222222222222222222
+2428 2222222222222222222222222222222222222222222222222222222
+2429 2222222222222222222222222222222222222222222222222222222
+2430 2222222222222222222222222222222222222222222222222222222
+2431 2222222222222222222222222222222222222222222222222222222
+2432 2222222222222222222222222222222222222222222222222222222
+2433 2222222222222222222222222222222222222222222222222222222
+2434 2222222222222222222222222222222222222222222222222222222
+2435 2222222222222222222222222222222222222222222222222222222
+2436 2222222222222222222222222222222222222222222222222222222
+2437 2222222222222222222222222222222222222222222222222222222
+2438 2222222222222222222222222222222222222222222222222222222
+2439 2222222222222222222222222222222222222222222222222222222
+2440 2222222222222222222222222222222222222222222222222222222
+2441 2222222222222222222222222222222222222222222222222222222
+2442 2222222222222222222222222222222222222222222222222222222
+2443 2222222222222222222222222222222222222222222222222222222
+2444 2222222222222222222222222222222222222222222222222222222
+2445 2222222222222222222222222222222222222222222222222222222
+2446 2222222222222222222222222222222222222222222222222222222
+2447 2222222222222222222222222222222222222222222222222222222
+2448 2222222222222222222222222222222222222222222222222222222
+2449 2222222222222222222222222222222222222222222222222222222
+2450 2222222222222222222222222222222222222222222222222222222
+2451 2222222222222222222222222222222222222222222222222222222
+2452 2222222222222222222222222222222222222222222222222222222
+2453 2222222222222222222222222222222222222222222222222222222
+2454 2222222222222222222222222222222222222222222222222222222
+2455 2222222222222222222222222222222222222222222222222222222
+2456 2222222222222222222222222222222222222222222222222222222
+2457 2222222222222222222222222222222222222222222222222222222
+2458 2222222222222222222222222222222222222222222222222222222
+2459 2222222222222222222222222222222222222222222222222222222
+2460 2222222222222222222222222222222222222222222222222222222
+2461 2222222222222222222222222222222222222222222222222222222
+2462 2222222222222222222222222222222222222222222222222222222
+2463 2222222222222222222222222222222222222222222222222222222
+2464 2222222222222222222222222222222222222222222222222222222
+2465 2222222222222222222222222222222222222222222222222222222
+2466 2222222222222222222222222222222222222222222222222222222
+2467 2222222222222222222222222222222222222222222222222222222
+2468 2222222222222222222222222222222222222222222222222222222
+2469 2222222222222222222222222222222222222222222222222222222
+2470 2222222222222222222222222222222222222222222222222222222
+2471 2222222222222222222222222222222222222222222222222222222
+2472 2222222222222222222222222222222222222222222222222222222
+2473 2222222222222222222222222222222222222222222222222222222
+2474 2222222222222222222222222222222222222222222222222222222
+2475 2222222222222222222222222222222222222222222222222222222
+2476 2222222222222222222222222222222222222222222222222222222
+2477 2222222222222222222222222222222222222222222222222222222
+2478 2222222222222222222222222222222222222222222222222222222
+2479 2222222222222222222222222222222222222222222222222222222
+2480 2222222222222222222222222222222222222222222222222222222
+2481 2222222222222222222222222222222222222222222222222222222
+2482 2222222222222222222222222222222222222222222222222222222
+2483 2222222222222222222222222222222222222222222222222222222
+2484 2222222222222222222222222222222222222222222222222222222
+2485 2222222222222222222222222222222222222222222222222222222
+2486 2222222222222222222222222222222222222222222222222222222
+2487 2222222222222222222222222222222222222222222222222222222
+2488 2222222222222222222222222222222222222222222222222222222
+2489 2222222222222222222222222222222222222222222222222222222
+2490 2222222222222222222222222222222222222222222222222222222
+2491 2222222222222222222222222222222222222222222222222222222
+2492 2222222222222222222222222222222222222222222222222222222
+2493 2222222222222222222222222222222222222222222222222222222
+2494 2222222222222222222222222222222222222222222222222222222
+2495 2222222222222222222222222222222222222222222222222222222
+2496 2222222222222222222222222222222222222222222222222222222
+2497 2222222222222222222222222222222222222222222222222222222
+2498 2222222222222222222222222222222222222222222222222222222
+2499 2222222222222222222222222222222222222222222222222222222
+2500 2222222222222222222222222222222222222222222222222222222
+2501 2222222222222222222222222222222222222222222222222222222
+2502 2222222222222222222222222222222222222222222222222222222
+2503 2222222222222222222222222222222222222222222222222222222
+2504 2222222222222222222222222222222222222222222222222222222
+2505 2222222222222222222222222222222222222222222222222222222
+2506 2222222222222222222222222222222222222222222222222222222
+2507 2222222222222222222222222222222222222222222222222222222
+2508 2222222222222222222222222222222222222222222222222222222
+2509 2222222222222222222222222222222222222222222222222222222
+2510 2222222222222222222222222222222222222222222222222222222
+2511 2222222222222222222222222222222222222222222222222222222
+2512 2222222222222222222222222222222222222222222222222222222
+2513 2222222222222222222222222222222222222222222222222222222
+2514 2222222222222222222222222222222222222222222222222222222
+2515 2222222222222222222222222222222222222222222222222222222
+2516 2222222222222222222222222222222222222222222222222222222
+2517 2222222222222222222222222222222222222222222222222222222
+2518 2222222222222222222222222222222222222222222222222222222
+2519 2222222222222222222222222222222222222222222222222222222
+2520 2222222222222222222222222222222222222222222222222222222
+2521 2222222222222222222222222222222222222222222222222222222
+2522 2222222222222222222222222222222222222222222222222222222
+2523 2222222222222222222222222222222222222222222222222222222
+2524 2222222222222222222222222222222222222222222222222222222
+2525 2222222222222222222222222222222222222222222222222222222
+2526 2222222222222222222222222222222222222222222222222222222
+2527 2222222222222222222222222222222222222222222222222222222
+2528 2222222222222222222222222222222222222222222222222222222
+2529 2222222222222222222222222222222222222222222222222222222
+2530 2222222222222222222222222222222222222222222222222222222
+2531 2222222222222222222222222222222222222222222222222222222
+2532 2222222222222222222222222222222222222222222222222222222
+2533 2222222222222222222222222222222222222222222222222222222
+2534 2222222222222222222222222222222222222222222222222222222
+2535 2222222222222222222222222222222222222222222222222222222
+2536 2222222222222222222222222222222222222222222222222222222
+2537 2222222222222222222222222222222222222222222222222222222
+2538 2222222222222222222222222222222222222222222222222222222
+2539 2222222222222222222222222222222222222222222222222222222
+2540 2222222222222222222222222222222222222222222222222222222
+2541 2222222222222222222222222222222222222222222222222222222
+2542 2222222222222222222222222222222222222222222222222222222
+2543 2222222222222222222222222222222222222222222222222222222
+2544 2222222222222222222222222222222222222222222222222222222
+2545 2222222222222222222222222222222222222222222222222222222
+2546 2222222222222222222222222222222222222222222222222222222
+2547 2222222222222222222222222222222222222222222222222222222
+2548 2222222222222222222222222222222222222222222222222222222
+2549 2222222222222222222222222222222222222222222222222222222
+2550 2222222222222222222222222222222222222222222222222222222
+2551 2222222222222222222222222222222222222222222222222222222
+2552 2222222222222222222222222222222222222222222222222222222
+2553 2222222222222222222222222222222222222222222222222222222
+2554 2222222222222222222222222222222222222222222222222222222
+2555 2222222222222222222222222222222222222222222222222222222
+2556 2222222222222222222222222222222222222222222222222222222
+2557 2222222222222222222222222222222222222222222222222222222
+2558 2222222222222222222222222222222222222222222222222222222
+2559 2222222222222222222222222222222222222222222222222222222
+2560 2222222222222222222222222222222222222222222222222222222
+2561 2222222222222222222222222222222222222222222222222222222
+2562 2222222222222222222222222222222222222222222222222222222
+2563 2222222222222222222222222222222222222222222222222222222
+2564 2222222222222222222222222222222222222222222222222222222
+2565 2222222222222222222222222222222222222222222222222222222
+2566 2222222222222222222222222222222222222222222222222222222
+2567 2222222222222222222222222222222222222222222222222222222
+2568 2222222222222222222222222222222222222222222222222222222
+2569 2222222222222222222222222222222222222222222222222222222
+2570 2222222222222222222222222222222222222222222222222222222
+2571 2222222222222222222222222222222222222222222222222222222
+2572 2222222222222222222222222222222222222222222222222222222
+2573 2222222222222222222222222222222222222222222222222222222
+2574 2222222222222222222222222222222222222222222222222222222
+2575 2222222222222222222222222222222222222222222222222222222
+2576 2222222222222222222222222222222222222222222222222222222
+2577 2222222222222222222222222222222222222222222222222222222
+2578 2222222222222222222222222222222222222222222222222222222
+2579 2222222222222222222222222222222222222222222222222222222
+2580 2222222222222222222222222222222222222222222222222222222
+2581 2222222222222222222222222222222222222222222222222222222
+2582 2222222222222222222222222222222222222222222222222222222
+2583 2222222222222222222222222222222222222222222222222222222
+2584 2222222222222222222222222222222222222222222222222222222
+2585 2222222222222222222222222222222222222222222222222222222
+2586 2222222222222222222222222222222222222222222222222222222
+2587 2222222222222222222222222222222222222222222222222222222
+2588 2222222222222222222222222222222222222222222222222222222
+2589 2222222222222222222222222222222222222222222222222222222
+2590 2222222222222222222222222222222222222222222222222222222
+2591 2222222222222222222222222222222222222222222222222222222
+2592 2222222222222222222222222222222222222222222222222222222
+2593 2222222222222222222222222222222222222222222222222222222
+2594 2222222222222222222222222222222222222222222222222222222
+2595 2222222222222222222222222222222222222222222222222222222
+2596 2222222222222222222222222222222222222222222222222222222
+2597 2222222222222222222222222222222222222222222222222222222
+2598 2222222222222222222222222222222222222222222222222222222
+2599 2222222222222222222222222222222222222222222222222222222
+2600 2222222222222222222222222222222222222222222222222222222
+2601 2222222222222222222222222222222222222222222222222222222
+2602 2222222222222222222222222222222222222222222222222222222
+2603 2222222222222222222222222222222222222222222222222222222
+2604 2222222222222222222222222222222222222222222222222222222
+2605 2222222222222222222222222222222222222222222222222222222
+2606 2222222222222222222222222222222222222222222222222222222
+2607 2222222222222222222222222222222222222222222222222222222
+2608 2222222222222222222222222222222222222222222222222222222
+2609 2222222222222222222222222222222222222222222222222222222
+2610 2222222222222222222222222222222222222222222222222222222
+2611 2222222222222222222222222222222222222222222222222222222
+2612 2222222222222222222222222222222222222222222222222222222
+2613 2222222222222222222222222222222222222222222222222222222
+2614 2222222222222222222222222222222222222222222222222222222
+2615 2222222222222222222222222222222222222222222222222222222
+2616 2222222222222222222222222222222222222222222222222222222
+2617 2222222222222222222222222222222222222222222222222222222
+2618 2222222222222222222222222222222222222222222222222222222
+2619 2222222222222222222222222222222222222222222222222222222
+2620 2222222222222222222222222222222222222222222222222222222
+2621 2222222222222222222222222222222222222222222222222222222
+2622 2222222222222222222222222222222222222222222222222222222
+2623 2222222222222222222222222222222222222222222222222222222
+2624 2222222222222222222222222222222222222222222222222222222
+2625 2222222222222222222222222222222222222222222222222222222
+2626 2222222222222222222222222222222222222222222222222222222
+2627 2222222222222222222222222222222222222222222222222222222
+2628 2222222222222222222222222222222222222222222222222222222
+2629 2222222222222222222222222222222222222222222222222222222
+2630 2222222222222222222222222222222222222222222222222222222
+2631 2222222222222222222222222222222222222222222222222222222
+2632 2222222222222222222222222222222222222222222222222222222
+2633 2222222222222222222222222222222222222222222222222222222
+2634 2222222222222222222222222222222222222222222222222222222
+2635 2222222222222222222222222222222222222222222222222222222
+2636 2222222222222222222222222222222222222222222222222222222
+2637 2222222222222222222222222222222222222222222222222222222
+2638 2222222222222222222222222222222222222222222222222222222
+2639 2222222222222222222222222222222222222222222222222222222
+2640 2222222222222222222222222222222222222222222222222222222
+2641 2222222222222222222222222222222222222222222222222222222
+2642 2222222222222222222222222222222222222222222222222222222
+2643 2222222222222222222222222222222222222222222222222222222
+2644 2222222222222222222222222222222222222222222222222222222
+2645 2222222222222222222222222222222222222222222222222222222
+2646 2222222222222222222222222222222222222222222222222222222
+2647 2222222222222222222222222222222222222222222222222222222
+2648 2222222222222222222222222222222222222222222222222222222
+2649 2222222222222222222222222222222222222222222222222222222
+2650 2222222222222222222222222222222222222222222222222222222
+2651 2222222222222222222222222222222222222222222222222222222
+2652 2222222222222222222222222222222222222222222222222222222
+2653 2222222222222222222222222222222222222222222222222222222
+2654 2222222222222222222222222222222222222222222222222222222
+2655 2222222222222222222222222222222222222222222222222222222
+2656 2222222222222222222222222222222222222222222222222222222
+2657 2222222222222222222222222222222222222222222222222222222
+2658 2222222222222222222222222222222222222222222222222222222
+2659 2222222222222222222222222222222222222222222222222222222
+2660 2222222222222222222222222222222222222222222222222222222
+2661 2222222222222222222222222222222222222222222222222222222
+2662 2222222222222222222222222222222222222222222222222222222
+2663 2222222222222222222222222222222222222222222222222222222
+2664 2222222222222222222222222222222222222222222222222222222
+2665 2222222222222222222222222222222222222222222222222222222
+2666 2222222222222222222222222222222222222222222222222222222
+2667 2222222222222222222222222222222222222222222222222222222
+2668 2222222222222222222222222222222222222222222222222222222
+2669 2222222222222222222222222222222222222222222222222222222
+2670 2222222222222222222222222222222222222222222222222222222
+2671 2222222222222222222222222222222222222222222222222222222
+2672 2222222222222222222222222222222222222222222222222222222
+2673 2222222222222222222222222222222222222222222222222222222
+2674 2222222222222222222222222222222222222222222222222222222
+2675 2222222222222222222222222222222222222222222222222222222
+2676 2222222222222222222222222222222222222222222222222222222
+2677 2222222222222222222222222222222222222222222222222222222
+2678 2222222222222222222222222222222222222222222222222222222
+2679 2222222222222222222222222222222222222222222222222222222
+2680 2222222222222222222222222222222222222222222222222222222
+2681 2222222222222222222222222222222222222222222222222222222
+2682 2222222222222222222222222222222222222222222222222222222
+2683 2222222222222222222222222222222222222222222222222222222
+2684 2222222222222222222222222222222222222222222222222222222
+2685 2222222222222222222222222222222222222222222222222222222
+2686 2222222222222222222222222222222222222222222222222222222
+2687 2222222222222222222222222222222222222222222222222222222
+2688 2222222222222222222222222222222222222222222222222222222
+2689 2222222222222222222222222222222222222222222222222222222
+2690 2222222222222222222222222222222222222222222222222222222
+2691 2222222222222222222222222222222222222222222222222222222
+2692 2222222222222222222222222222222222222222222222222222222
+2693 2222222222222222222222222222222222222222222222222222222
+2694 2222222222222222222222222222222222222222222222222222222
+2695 2222222222222222222222222222222222222222222222222222222
+2696 2222222222222222222222222222222222222222222222222222222
+2697 2222222222222222222222222222222222222222222222222222222
+2698 2222222222222222222222222222222222222222222222222222222
+2699 2222222222222222222222222222222222222222222222222222222
+2700 2222222222222222222222222222222222222222222222222222222
+2701 2222222222222222222222222222222222222222222222222222222
+2702 2222222222222222222222222222222222222222222222222222222
+2703 2222222222222222222222222222222222222222222222222222222
+2704 2222222222222222222222222222222222222222222222222222222
+2705 2222222222222222222222222222222222222222222222222222222
+2706 2222222222222222222222222222222222222222222222222222222
+2707 2222222222222222222222222222222222222222222222222222222
+2708 2222222222222222222222222222222222222222222222222222222
+2709 2222222222222222222222222222222222222222222222222222222
+2710 2222222222222222222222222222222222222222222222222222222
+2711 2222222222222222222222222222222222222222222222222222222
+2712 2222222222222222222222222222222222222222222222222222222
+2713 2222222222222222222222222222222222222222222222222222222
+2714 2222222222222222222222222222222222222222222222222222222
+2715 2222222222222222222222222222222222222222222222222222222
+2716 2222222222222222222222222222222222222222222222222222222
+2717 2222222222222222222222222222222222222222222222222222222
+2718 2222222222222222222222222222222222222222222222222222222
+2719 2222222222222222222222222222222222222222222222222222222
+2720 2222222222222222222222222222222222222222222222222222222
+2721 2222222222222222222222222222222222222222222222222222222
+2722 2222222222222222222222222222222222222222222222222222222
+2723 2222222222222222222222222222222222222222222222222222222
+2724 2222222222222222222222222222222222222222222222222222222
+2725 2222222222222222222222222222222222222222222222222222222
+2726 2222222222222222222222222222222222222222222222222222222
+2727 2222222222222222222222222222222222222222222222222222222
+2728 2222222222222222222222222222222222222222222222222222222
+2729 2222222222222222222222222222222222222222222222222222222
+2730 2222222222222222222222222222222222222222222222222222222
+2731 2222222222222222222222222222222222222222222222222222222
+2732 2222222222222222222222222222222222222222222222222222222
+2733 2222222222222222222222222222222222222222222222222222222
+2734 2222222222222222222222222222222222222222222222222222222
+2735 2222222222222222222222222222222222222222222222222222222
+2736 2222222222222222222222222222222222222222222222222222222
+2737 2222222222222222222222222222222222222222222222222222222
+2738 2222222222222222222222222222222222222222222222222222222
+2739 2222222222222222222222222222222222222222222222222222222
+2740 2222222222222222222222222222222222222222222222222222222
+2741 2222222222222222222222222222222222222222222222222222222
+2742 2222222222222222222222222222222222222222222222222222222
+2743 2222222222222222222222222222222222222222222222222222222
+2744 2222222222222222222222222222222222222222222222222222222
+2745 2222222222222222222222222222222222222222222222222222222
+2746 2222222222222222222222222222222222222222222222222222222
+2747 2222222222222222222222222222222222222222222222222222222
+2748 2222222222222222222222222222222222222222222222222222222
+2749 2222222222222222222222222222222222222222222222222222222
+2750 2222222222222222222222222222222222222222222222222222222
+2751 2222222222222222222222222222222222222222222222222222222
+2752 2222222222222222222222222222222222222222222222222222222
+2753 2222222222222222222222222222222222222222222222222222222
+2754 2222222222222222222222222222222222222222222222222222222
+2755 2222222222222222222222222222222222222222222222222222222
+2756 2222222222222222222222222222222222222222222222222222222
+2757 2222222222222222222222222222222222222222222222222222222
+2758 2222222222222222222222222222222222222222222222222222222
+2759 2222222222222222222222222222222222222222222222222222222
+2760 2222222222222222222222222222222222222222222222222222222
+2761 2222222222222222222222222222222222222222222222222222222
+2762 2222222222222222222222222222222222222222222222222222222
+2763 2222222222222222222222222222222222222222222222222222222
+2764 2222222222222222222222222222222222222222222222222222222
+2765 2222222222222222222222222222222222222222222222222222222
+2766 2222222222222222222222222222222222222222222222222222222
+2767 2222222222222222222222222222222222222222222222222222222
+2768 2222222222222222222222222222222222222222222222222222222
+2769 2222222222222222222222222222222222222222222222222222222
+2770 2222222222222222222222222222222222222222222222222222222
+2771 2222222222222222222222222222222222222222222222222222222
+2772 2222222222222222222222222222222222222222222222222222222
+2773 2222222222222222222222222222222222222222222222222222222
+2774 2222222222222222222222222222222222222222222222222222222
+2775 2222222222222222222222222222222222222222222222222222222
+2776 2222222222222222222222222222222222222222222222222222222
+2777 2222222222222222222222222222222222222222222222222222222
+2778 2222222222222222222222222222222222222222222222222222222
+2779 2222222222222222222222222222222222222222222222222222222
+2780 2222222222222222222222222222222222222222222222222222222
+2781 2222222222222222222222222222222222222222222222222222222
+2782 2222222222222222222222222222222222222222222222222222222
+2783 2222222222222222222222222222222222222222222222222222222
+2784 2222222222222222222222222222222222222222222222222222222
+2785 2222222222222222222222222222222222222222222222222222222
+2786 2222222222222222222222222222222222222222222222222222222
+2787 2222222222222222222222222222222222222222222222222222222
+2788 2222222222222222222222222222222222222222222222222222222
+2789 2222222222222222222222222222222222222222222222222222222
+2790 2222222222222222222222222222222222222222222222222222222
+2791 2222222222222222222222222222222222222222222222222222222
+2792 2222222222222222222222222222222222222222222222222222222
+2793 2222222222222222222222222222222222222222222222222222222
+2794 2222222222222222222222222222222222222222222222222222222
+2795 2222222222222222222222222222222222222222222222222222222
+2796 2222222222222222222222222222222222222222222222222222222
+2797 2222222222222222222222222222222222222222222222222222222
+2798 2222222222222222222222222222222222222222222222222222222
+2799 2222222222222222222222222222222222222222222222222222222
+2800 2222222222222222222222222222222222222222222222222222222
+2801 2222222222222222222222222222222222222222222222222222222
+2802 2222222222222222222222222222222222222222222222222222222
+2803 2222222222222222222222222222222222222222222222222222222
+2804 2222222222222222222222222222222222222222222222222222222
+2805 2222222222222222222222222222222222222222222222222222222
+2806 2222222222222222222222222222222222222222222222222222222
+2807 2222222222222222222222222222222222222222222222222222222
+2808 2222222222222222222222222222222222222222222222222222222
+2809 2222222222222222222222222222222222222222222222222222222
+2810 2222222222222222222222222222222222222222222222222222222
+2811 2222222222222222222222222222222222222222222222222222222
+2812 2222222222222222222222222222222222222222222222222222222
+2813 2222222222222222222222222222222222222222222222222222222
+2814 2222222222222222222222222222222222222222222222222222222
+2815 2222222222222222222222222222222222222222222222222222222
+2816 2222222222222222222222222222222222222222222222222222222
+2817 2222222222222222222222222222222222222222222222222222222
+2818 2222222222222222222222222222222222222222222222222222222
+2819 2222222222222222222222222222222222222222222222222222222
+2820 2222222222222222222222222222222222222222222222222222222
+2821 2222222222222222222222222222222222222222222222222222222
+2822 2222222222222222222222222222222222222222222222222222222
+2823 2222222222222222222222222222222222222222222222222222222
+2824 2222222222222222222222222222222222222222222222222222222
+2825 2222222222222222222222222222222222222222222222222222222
+2826 2222222222222222222222222222222222222222222222222222222
+2827 2222222222222222222222222222222222222222222222222222222
+2828 2222222222222222222222222222222222222222222222222222222
+2829 2222222222222222222222222222222222222222222222222222222
+2830 2222222222222222222222222222222222222222222222222222222
+2831 2222222222222222222222222222222222222222222222222222222
+2832 2222222222222222222222222222222222222222222222222222222
+2833 2222222222222222222222222222222222222222222222222222222
+2834 2222222222222222222222222222222222222222222222222222222
+2835 2222222222222222222222222222222222222222222222222222222
+2836 2222222222222222222222222222222222222222222222222222222
+2837 2222222222222222222222222222222222222222222222222222222
+2838 2222222222222222222222222222222222222222222222222222222
+2839 2222222222222222222222222222222222222222222222222222222
+2840 2222222222222222222222222222222222222222222222222222222
+2841 2222222222222222222222222222222222222222222222222222222
+2842 2222222222222222222222222222222222222222222222222222222
+2843 2222222222222222222222222222222222222222222222222222222
+2844 2222222222222222222222222222222222222222222222222222222
+2845 2222222222222222222222222222222222222222222222222222222
+2846 2222222222222222222222222222222222222222222222222222222
+2847 2222222222222222222222222222222222222222222222222222222
+2848 2222222222222222222222222222222222222222222222222222222
+2849 2222222222222222222222222222222222222222222222222222222
+2850 2222222222222222222222222222222222222222222222222222222
+2851 2222222222222222222222222222222222222222222222222222222
+2852 2222222222222222222222222222222222222222222222222222222
+2853 2222222222222222222222222222222222222222222222222222222
+2854 2222222222222222222222222222222222222222222222222222222
+2855 2222222222222222222222222222222222222222222222222222222
+2856 2222222222222222222222222222222222222222222222222222222
+2857 2222222222222222222222222222222222222222222222222222222
+2858 2222222222222222222222222222222222222222222222222222222
+2859 2222222222222222222222222222222222222222222222222222222
+2860 2222222222222222222222222222222222222222222222222222222
+2861 2222222222222222222222222222222222222222222222222222222
+2862 2222222222222222222222222222222222222222222222222222222
+2863 2222222222222222222222222222222222222222222222222222222
+2864 2222222222222222222222222222222222222222222222222222222
+2865 2222222222222222222222222222222222222222222222222222222
+2866 2222222222222222222222222222222222222222222222222222222
+2867 2222222222222222222222222222222222222222222222222222222
+2868 2222222222222222222222222222222222222222222222222222222
+2869 2222222222222222222222222222222222222222222222222222222
+2870 2222222222222222222222222222222222222222222222222222222
+2871 2222222222222222222222222222222222222222222222222222222
+2872 2222222222222222222222222222222222222222222222222222222
+2873 2222222222222222222222222222222222222222222222222222222
+2874 2222222222222222222222222222222222222222222222222222222
+2875 2222222222222222222222222222222222222222222222222222222
+2876 2222222222222222222222222222222222222222222222222222222
+2877 2222222222222222222222222222222222222222222222222222222
+2878 2222222222222222222222222222222222222222222222222222222
+2879 2222222222222222222222222222222222222222222222222222222
+2880 2222222222222222222222222222222222222222222222222222222
+2881 2222222222222222222222222222222222222222222222222222222
+2882 2222222222222222222222222222222222222222222222222222222
+2883 2222222222222222222222222222222222222222222222222222222
+2884 2222222222222222222222222222222222222222222222222222222
+2885 2222222222222222222222222222222222222222222222222222222
+2886 2222222222222222222222222222222222222222222222222222222
+2887 2222222222222222222222222222222222222222222222222222222
+2888 2222222222222222222222222222222222222222222222222222222
+2889 2222222222222222222222222222222222222222222222222222222
+2890 2222222222222222222222222222222222222222222222222222222
+2891 2222222222222222222222222222222222222222222222222222222
+2892 2222222222222222222222222222222222222222222222222222222
+2893 2222222222222222222222222222222222222222222222222222222
+2894 2222222222222222222222222222222222222222222222222222222
+2895 2222222222222222222222222222222222222222222222222222222
+2896 2222222222222222222222222222222222222222222222222222222
+2897 2222222222222222222222222222222222222222222222222222222
+2898 2222222222222222222222222222222222222222222222222222222
+2899 2222222222222222222222222222222222222222222222222222222
+2900 2222222222222222222222222222222222222222222222222222222
+2901 2222222222222222222222222222222222222222222222222222222
+2902 2222222222222222222222222222222222222222222222222222222
+2903 2222222222222222222222222222222222222222222222222222222
+2904 2222222222222222222222222222222222222222222222222222222
+2905 2222222222222222222222222222222222222222222222222222222
+2906 2222222222222222222222222222222222222222222222222222222
+2907 2222222222222222222222222222222222222222222222222222222
+2908 2222222222222222222222222222222222222222222222222222222
+2909 2222222222222222222222222222222222222222222222222222222
+2910 2222222222222222222222222222222222222222222222222222222
+2911 2222222222222222222222222222222222222222222222222222222
+2912 2222222222222222222222222222222222222222222222222222222
+2913 2222222222222222222222222222222222222222222222222222222
+2914 2222222222222222222222222222222222222222222222222222222
+2915 2222222222222222222222222222222222222222222222222222222
+2916 2222222222222222222222222222222222222222222222222222222
+2917 2222222222222222222222222222222222222222222222222222222
+2918 2222222222222222222222222222222222222222222222222222222
+2919 2222222222222222222222222222222222222222222222222222222
+2920 2222222222222222222222222222222222222222222222222222222
+2921 2222222222222222222222222222222222222222222222222222222
+2922 2222222222222222222222222222222222222222222222222222222
+2923 2222222222222222222222222222222222222222222222222222222
+2924 2222222222222222222222222222222222222222222222222222222
+2925 2222222222222222222222222222222222222222222222222222222
+2926 2222222222222222222222222222222222222222222222222222222
+2927 2222222222222222222222222222222222222222222222222222222
+2928 2222222222222222222222222222222222222222222222222222222
+2929 2222222222222222222222222222222222222222222222222222222
+2930 2222222222222222222222222222222222222222222222222222222
+2931 2222222222222222222222222222222222222222222222222222222
+2932 2222222222222222222222222222222222222222222222222222222
+2933 2222222222222222222222222222222222222222222222222222222
+2934 2222222222222222222222222222222222222222222222222222222
+2935 2222222222222222222222222222222222222222222222222222222
+2936 2222222222222222222222222222222222222222222222222222222
+2937 2222222222222222222222222222222222222222222222222222222
+2938 2222222222222222222222222222222222222222222222222222222
+2939 2222222222222222222222222222222222222222222222222222222
+2940 2222222222222222222222222222222222222222222222222222222
+2941 2222222222222222222222222222222222222222222222222222222
+2942 2222222222222222222222222222222222222222222222222222222
+2943 2222222222222222222222222222222222222222222222222222222
+2944 2222222222222222222222222222222222222222222222222222222
+2945 2222222222222222222222222222222222222222222222222222222
+2946 2222222222222222222222222222222222222222222222222222222
+2947 2222222222222222222222222222222222222222222222222222222
+2948 2222222222222222222222222222222222222222222222222222222
+2949 2222222222222222222222222222222222222222222222222222222
+2950 2222222222222222222222222222222222222222222222222222222
+2951 2222222222222222222222222222222222222222222222222222222
+2952 2222222222222222222222222222222222222222222222222222222
+2953 2222222222222222222222222222222222222222222222222222222
+2954 2222222222222222222222222222222222222222222222222222222
+2955 2222222222222222222222222222222222222222222222222222222
+2956 2222222222222222222222222222222222222222222222222222222
+2957 2222222222222222222222222222222222222222222222222222222
+2958 2222222222222222222222222222222222222222222222222222222
+2959 2222222222222222222222222222222222222222222222222222222
+2960 2222222222222222222222222222222222222222222222222222222
+2961 2222222222222222222222222222222222222222222222222222222
+2962 2222222222222222222222222222222222222222222222222222222
+2963 2222222222222222222222222222222222222222222222222222222
+2964 2222222222222222222222222222222222222222222222222222222
+2965 2222222222222222222222222222222222222222222222222222222
+2966 2222222222222222222222222222222222222222222222222222222
+2967 2222222222222222222222222222222222222222222222222222222
+2968 2222222222222222222222222222222222222222222222222222222
+2969 2222222222222222222222222222222222222222222222222222222
+2970 2222222222222222222222222222222222222222222222222222222
+2971 2222222222222222222222222222222222222222222222222222222
+2972 2222222222222222222222222222222222222222222222222222222
+2973 2222222222222222222222222222222222222222222222222222222
+2974 2222222222222222222222222222222222222222222222222222222
+2975 2222222222222222222222222222222222222222222222222222222
+2976 2222222222222222222222222222222222222222222222222222222
+2977 2222222222222222222222222222222222222222222222222222222
+2978 2222222222222222222222222222222222222222222222222222222
+2979 2222222222222222222222222222222222222222222222222222222
+2980 2222222222222222222222222222222222222222222222222222222
+2981 2222222222222222222222222222222222222222222222222222222
+2982 2222222222222222222222222222222222222222222222222222222
+2983 2222222222222222222222222222222222222222222222222222222
+2984 2222222222222222222222222222222222222222222222222222222
+2985 2222222222222222222222222222222222222222222222222222222
+2986 2222222222222222222222222222222222222222222222222222222
+2987 2222222222222222222222222222222222222222222222222222222
+2988 2222222222222222222222222222222222222222222222222222222
+2989 2222222222222222222222222222222222222222222222222222222
+2990 2222222222222222222222222222222222222222222222222222222
+2991 2222222222222222222222222222222222222222222222222222222
+2992 2222222222222222222222222222222222222222222222222222222
+2993 2222222222222222222222222222222222222222222222222222222
+2994 2222222222222222222222222222222222222222222222222222222
+2995 2222222222222222222222222222222222222222222222222222222
+2996 2222222222222222222222222222222222222222222222222222222
+2997 2222222222222222222222222222222222222222222222222222222
+2998 2222222222222222222222222222222222222222222222222222222
+2999 2222222222222222222222222222222222222222222222222222222
+3000 2222222222222222222222222222222222222222222222222222222
+3001 2222222222222222222222222222222222222222222222222222222
+3002 2222222222222222222222222222222222222222222222222222222
+3003 2222222222222222222222222222222222222222222222222222222
+3004 2222222222222222222222222222222222222222222222222222222
+3005 2222222222222222222222222222222222222222222222222222222
+3006 2222222222222222222222222222222222222222222222222222222
+3007 2222222222222222222222222222222222222222222222222222222
+3008 2222222222222222222222222222222222222222222222222222222
+3009 2222222222222222222222222222222222222222222222222222222
+3010 2222222222222222222222222222222222222222222222222222222
+3011 2222222222222222222222222222222222222222222222222222222
+3012 2222222222222222222222222222222222222222222222222222222
+3013 2222222222222222222222222222222222222222222222222222222
+3014 2222222222222222222222222222222222222222222222222222222
+3015 2222222222222222222222222222222222222222222222222222222
+3016 2222222222222222222222222222222222222222222222222222222
+3017 2222222222222222222222222222222222222222222222222222222
+3018 2222222222222222222222222222222222222222222222222222222
+3019 2222222222222222222222222222222222222222222222222222222
+3020 2222222222222222222222222222222222222222222222222222222
+3021 2222222222222222222222222222222222222222222222222222222
+3022 2222222222222222222222222222222222222222222222222222222
+3023 2222222222222222222222222222222222222222222222222222222
+3024 2222222222222222222222222222222222222222222222222222222
+3025 2222222222222222222222222222222222222222222222222222222
+3026 2222222222222222222222222222222222222222222222222222222
+3027 2222222222222222222222222222222222222222222222222222222
+3028 2222222222222222222222222222222222222222222222222222222
+3029 2222222222222222222222222222222222222222222222222222222
+3030 2222222222222222222222222222222222222222222222222222222
+3031 2222222222222222222222222222222222222222222222222222222
+3032 2222222222222222222222222222222222222222222222222222222
+3033 2222222222222222222222222222222222222222222222222222222
+3034 2222222222222222222222222222222222222222222222222222222
+3035 2222222222222222222222222222222222222222222222222222222
+3036 2222222222222222222222222222222222222222222222222222222
+3037 2222222222222222222222222222222222222222222222222222222
+3038 2222222222222222222222222222222222222222222222222222222
+3039 2222222222222222222222222222222222222222222222222222222
+3040 2222222222222222222222222222222222222222222222222222222
+3041 2222222222222222222222222222222222222222222222222222222
+3042 2222222222222222222222222222222222222222222222222222222
+3043 2222222222222222222222222222222222222222222222222222222
+3044 2222222222222222222222222222222222222222222222222222222
+3045 2222222222222222222222222222222222222222222222222222222
+3046 2222222222222222222222222222222222222222222222222222222
+3047 2222222222222222222222222222222222222222222222222222222
+3048 2222222222222222222222222222222222222222222222222222222
+3049 2222222222222222222222222222222222222222222222222222222
+3050 2222222222222222222222222222222222222222222222222222222
+3051 2222222222222222222222222222222222222222222222222222222
+3052 2222222222222222222222222222222222222222222222222222222
+3053 2222222222222222222222222222222222222222222222222222222
+3054 2222222222222222222222222222222222222222222222222222222
+3055 2222222222222222222222222222222222222222222222222222222
+3056 2222222222222222222222222222222222222222222222222222222
+3057 2222222222222222222222222222222222222222222222222222222
+3058 2222222222222222222222222222222222222222222222222222222
+3059 2222222222222222222222222222222222222222222222222222222
+3060 2222222222222222222222222222222222222222222222222222222
+3061 2222222222222222222222222222222222222222222222222222222
+3062 2222222222222222222222222222222222222222222222222222222
+3063 2222222222222222222222222222222222222222222222222222222
+3064 2222222222222222222222222222222222222222222222222222222
+3065 2222222222222222222222222222222222222222222222222222222
+3066 2222222222222222222222222222222222222222222222222222222
+3067 2222222222222222222222222222222222222222222222222222222
+3068 2222222222222222222222222222222222222222222222222222222
+3069 2222222222222222222222222222222222222222222222222222222
+3070 2222222222222222222222222222222222222222222222222222222
+3071 2222222222222222222222222222222222222222222222222222222
+3072 2222222222222222222222222222222222222222222222222222222
+3073 2222222222222222222222222222222222222222222222222222222
+3074 2222222222222222222222222222222222222222222222222222222
+3075 2222222222222222222222222222222222222222222222222222222
+3076 2222222222222222222222222222222222222222222222222222222
+3077 2222222222222222222222222222222222222222222222222222222
+3078 2222222222222222222222222222222222222222222222222222222
+3079 2222222222222222222222222222222222222222222222222222222
+3080 2222222222222222222222222222222222222222222222222222222
+3081 2222222222222222222222222222222222222222222222222222222
+3082 2222222222222222222222222222222222222222222222222222222
+3083 2222222222222222222222222222222222222222222222222222222
+3084 2222222222222222222222222222222222222222222222222222222
+3085 2222222222222222222222222222222222222222222222222222222
+3086 2222222222222222222222222222222222222222222222222222222
+3087 2222222222222222222222222222222222222222222222222222222
+3088 2222222222222222222222222222222222222222222222222222222
+3089 2222222222222222222222222222222222222222222222222222222
+3090 2222222222222222222222222222222222222222222222222222222
+3091 2222222222222222222222222222222222222222222222222222222
+3092 2222222222222222222222222222222222222222222222222222222
+3093 2222222222222222222222222222222222222222222222222222222
+3094 2222222222222222222222222222222222222222222222222222222
+3095 2222222222222222222222222222222222222222222222222222222
+3096 2222222222222222222222222222222222222222222222222222222
+3097 2222222222222222222222222222222222222222222222222222222
+3098 2222222222222222222222222222222222222222222222222222222
+3099 2222222222222222222222222222222222222222222222222222222
+3100 2222222222222222222222222222222222222222222222222222222
+3101 2222222222222222222222222222222222222222222222222222222
+3102 2222222222222222222222222222222222222222222222222222222
+3103 2222222222222222222222222222222222222222222222222222222
+3104 2222222222222222222222222222222222222222222222222222222
+3105 2222222222222222222222222222222222222222222222222222222
+3106 2222222222222222222222222222222222222222222222222222222
+3107 2222222222222222222222222222222222222222222222222222222
+3108 2222222222222222222222222222222222222222222222222222222
+3109 2222222222222222222222222222222222222222222222222222222
+3110 2222222222222222222222222222222222222222222222222222222
+3111 2222222222222222222222222222222222222222222222222222222
+3112 2222222222222222222222222222222222222222222222222222222
+3113 2222222222222222222222222222222222222222222222222222222
+3114 2222222222222222222222222222222222222222222222222222222
+3115 2222222222222222222222222222222222222222222222222222222
+3116 2222222222222222222222222222222222222222222222222222222
+3117 2222222222222222222222222222222222222222222222222222222
+3118 2222222222222222222222222222222222222222222222222222222
+3119 2222222222222222222222222222222222222222222222222222222
+3120 2222222222222222222222222222222222222222222222222222222
+3121 2222222222222222222222222222222222222222222222222222222
+3122 2222222222222222222222222222222222222222222222222222222
+3123 2222222222222222222222222222222222222222222222222222222
+3124 2222222222222222222222222222222222222222222222222222222
+3125 2222222222222222222222222222222222222222222222222222222
+3126 2222222222222222222222222222222222222222222222222222222
+3127 2222222222222222222222222222222222222222222222222222222
+3128 2222222222222222222222222222222222222222222222222222222
+3129 2222222222222222222222222222222222222222222222222222222
+3130 2222222222222222222222222222222222222222222222222222222
+3131 2222222222222222222222222222222222222222222222222222222
+3132 2222222222222222222222222222222222222222222222222222222
+3133 2222222222222222222222222222222222222222222222222222222
+3134 2222222222222222222222222222222222222222222222222222222
+3135 2222222222222222222222222222222222222222222222222222222
+3136 2222222222222222222222222222222222222222222222222222222
+3137 2222222222222222222222222222222222222222222222222222222
+3138 2222222222222222222222222222222222222222222222222222222
+3139 2222222222222222222222222222222222222222222222222222222
+3140 2222222222222222222222222222222222222222222222222222222
+3141 2222222222222222222222222222222222222222222222222222222
+3142 2222222222222222222222222222222222222222222222222222222
+3143 2222222222222222222222222222222222222222222222222222222
+3144 2222222222222222222222222222222222222222222222222222222
+3145 2222222222222222222222222222222222222222222222222222222
+3146 2222222222222222222222222222222222222222222222222222222
+3147 2222222222222222222222222222222222222222222222222222222
+3148 2222222222222222222222222222222222222222222222222222222
+3149 2222222222222222222222222222222222222222222222222222222
+3150 2222222222222222222222222222222222222222222222222222222
+3151 2222222222222222222222222222222222222222222222222222222
+3152 2222222222222222222222222222222222222222222222222222222
+3153 2222222222222222222222222222222222222222222222222222222
+3154 2222222222222222222222222222222222222222222222222222222
+3155 2222222222222222222222222222222222222222222222222222222
+3156 2222222222222222222222222222222222222222222222222222222
+3157 2222222222222222222222222222222222222222222222222222222
+3158 2222222222222222222222222222222222222222222222222222222
+3159 2222222222222222222222222222222222222222222222222222222
+3160 2222222222222222222222222222222222222222222222222222222
+3161 2222222222222222222222222222222222222222222222222222222
+3162 2222222222222222222222222222222222222222222222222222222
+3163 2222222222222222222222222222222222222222222222222222222
+3164 2222222222222222222222222222222222222222222222222222222
+3165 2222222222222222222222222222222222222222222222222222222
+3166 2222222222222222222222222222222222222222222222222222222
+3167 2222222222222222222222222222222222222222222222222222222
+3168 2222222222222222222222222222222222222222222222222222222
+3169 2222222222222222222222222222222222222222222222222222222
+3170 2222222222222222222222222222222222222222222222222222222
+3171 2222222222222222222222222222222222222222222222222222222
+3172 2222222222222222222222222222222222222222222222222222222
+3173 2222222222222222222222222222222222222222222222222222222
+3174 2222222222222222222222222222222222222222222222222222222
+3175 2222222222222222222222222222222222222222222222222222222
+3176 2222222222222222222222222222222222222222222222222222222
+3177 2222222222222222222222222222222222222222222222222222222
+3178 2222222222222222222222222222222222222222222222222222222
+3179 2222222222222222222222222222222222222222222222222222222
+3180 2222222222222222222222222222222222222222222222222222222
+3181 2222222222222222222222222222222222222222222222222222222
+3182 2222222222222222222222222222222222222222222222222222222
+3183 2222222222222222222222222222222222222222222222222222222
+3184 2222222222222222222222222222222222222222222222222222222
+3185 2222222222222222222222222222222222222222222222222222222
+3186 2222222222222222222222222222222222222222222222222222222
+3187 2222222222222222222222222222222222222222222222222222222
+3188 2222222222222222222222222222222222222222222222222222222
+3189 2222222222222222222222222222222222222222222222222222222
+3190 2222222222222222222222222222222222222222222222222222222
+3191 2222222222222222222222222222222222222222222222222222222
+3192 2222222222222222222222222222222222222222222222222222222
+3193 2222222222222222222222222222222222222222222222222222222
+3194 2222222222222222222222222222222222222222222222222222222
+3195 2222222222222222222222222222222222222222222222222222222
+3196 2222222222222222222222222222222222222222222222222222222
+3197 2222222222222222222222222222222222222222222222222222222
+3198 2222222222222222222222222222222222222222222222222222222
+3199 2222222222222222222222222222222222222222222222222222222
+3200 2222222222222222222222222222222222222222222222222222222
+3201 2222222222222222222222222222222222222222222222222222222
+3202 2222222222222222222222222222222222222222222222222222222
+3203 2222222222222222222222222222222222222222222222222222222
+3204 2222222222222222222222222222222222222222222222222222222
+3205 2222222222222222222222222222222222222222222222222222222
+3206 2222222222222222222222222222222222222222222222222222222
+3207 2222222222222222222222222222222222222222222222222222222
+3208 2222222222222222222222222222222222222222222222222222222
+3209 2222222222222222222222222222222222222222222222222222222
+3210 2222222222222222222222222222222222222222222222222222222
+3211 2222222222222222222222222222222222222222222222222222222
+3212 2222222222222222222222222222222222222222222222222222222
+3213 2222222222222222222222222222222222222222222222222222222
+3214 2222222222222222222222222222222222222222222222222222222
+3215 2222222222222222222222222222222222222222222222222222222
+3216 2222222222222222222222222222222222222222222222222222222
+3217 2222222222222222222222222222222222222222222222222222222
+3218 2222222222222222222222222222222222222222222222222222222
+3219 2222222222222222222222222222222222222222222222222222222
+3220 2222222222222222222222222222222222222222222222222222222
+3221 2222222222222222222222222222222222222222222222222222222
+3222 2222222222222222222222222222222222222222222222222222222
+3223 2222222222222222222222222222222222222222222222222222222
+3224 2222222222222222222222222222222222222222222222222222222
+3225 2222222222222222222222222222222222222222222222222222222
+3226 2222222222222222222222222222222222222222222222222222222
+3227 2222222222222222222222222222222222222222222222222222222
+3228 2222222222222222222222222222222222222222222222222222222
+3229 2222222222222222222222222222222222222222222222222222222
+3230 2222222222222222222222222222222222222222222222222222222
+3231 2222222222222222222222222222222222222222222222222222222
+3232 2222222222222222222222222222222222222222222222222222222
+3233 2222222222222222222222222222222222222222222222222222222
+3234 2222222222222222222222222222222222222222222222222222222
+3235 2222222222222222222222222222222222222222222222222222222
+3236 2222222222222222222222222222222222222222222222222222222
+3237 2222222222222222222222222222222222222222222222222222222
+3238 2222222222222222222222222222222222222222222222222222222
+3239 2222222222222222222222222222222222222222222222222222222
+3240 2222222222222222222222222222222222222222222222222222222
+3241 2222222222222222222222222222222222222222222222222222222
+3242 2222222222222222222222222222222222222222222222222222222
+3243 2222222222222222222222222222222222222222222222222222222
+3244 2222222222222222222222222222222222222222222222222222222
+3245 2222222222222222222222222222222222222222222222222222222
+3246 2222222222222222222222222222222222222222222222222222222
+3247 2222222222222222222222222222222222222222222222222222222
+3248 2222222222222222222222222222222222222222222222222222222
+3249 2222222222222222222222222222222222222222222222222222222
+3250 2222222222222222222222222222222222222222222222222222222
+3251 2222222222222222222222222222222222222222222222222222222
+3252 2222222222222222222222222222222222222222222222222222222
+3253 2222222222222222222222222222222222222222222222222222222
+3254 2222222222222222222222222222222222222222222222222222222
+3255 2222222222222222222222222222222222222222222222222222222
+3256 2222222222222222222222222222222222222222222222222222222
+3257 2222222222222222222222222222222222222222222222222222222
+3258 2222222222222222222222222222222222222222222222222222222
+3259 2222222222222222222222222222222222222222222222222222222
+3260 2222222222222222222222222222222222222222222222222222222
+3261 2222222222222222222222222222222222222222222222222222222
+3262 2222222222222222222222222222222222222222222222222222222
+3263 2222222222222222222222222222222222222222222222222222222
+3264 2222222222222222222222222222222222222222222222222222222
+3265 2222222222222222222222222222222222222222222222222222222
+3266 2222222222222222222222222222222222222222222222222222222
+3267 2222222222222222222222222222222222222222222222222222222
+3268 2222222222222222222222222222222222222222222222222222222
+3269 2222222222222222222222222222222222222222222222222222222
+3270 2222222222222222222222222222222222222222222222222222222
+3271 2222222222222222222222222222222222222222222222222222222
+3272 2222222222222222222222222222222222222222222222222222222
+3273 2222222222222222222222222222222222222222222222222222222
+3274 2222222222222222222222222222222222222222222222222222222
+3275 2222222222222222222222222222222222222222222222222222222
+3276 2222222222222222222222222222222222222222222222222222222
+3277 2222222222222222222222222222222222222222222222222222222
+3278 2222222222222222222222222222222222222222222222222222222
+3279 2222222222222222222222222222222222222222222222222222222
+3280 2222222222222222222222222222222222222222222222222222222
+3281 2222222222222222222222222222222222222222222222222222222
+3282 2222222222222222222222222222222222222222222222222222222
+3283 2222222222222222222222222222222222222222222222222222222
+3284 2222222222222222222222222222222222222222222222222222222
+3285 2222222222222222222222222222222222222222222222222222222
+3286 2222222222222222222222222222222222222222222222222222222
+3287 2222222222222222222222222222222222222222222222222222222
+3288 2222222222222222222222222222222222222222222222222222222
+3289 2222222222222222222222222222222222222222222222222222222
+3290 2222222222222222222222222222222222222222222222222222222
+3291 2222222222222222222222222222222222222222222222222222222
+3292 2222222222222222222222222222222222222222222222222222222
+3293 2222222222222222222222222222222222222222222222222222222
+3294 2222222222222222222222222222222222222222222222222222222
+3295 2222222222222222222222222222222222222222222222222222222
+3296 2222222222222222222222222222222222222222222222222222222
+3297 2222222222222222222222222222222222222222222222222222222
+3298 2222222222222222222222222222222222222222222222222222222
+3299 2222222222222222222222222222222222222222222222222222222
+3300 2222222222222222222222222222222222222222222222222222222
+3301 2222222222222222222222222222222222222222222222222222222
+3302 2222222222222222222222222222222222222222222222222222222
+3303 2222222222222222222222222222222222222222222222222222222
+3304 2222222222222222222222222222222222222222222222222222222
+3305 2222222222222222222222222222222222222222222222222222222
+3306 2222222222222222222222222222222222222222222222222222222
+3307 2222222222222222222222222222222222222222222222222222222
+3308 2222222222222222222222222222222222222222222222222222222
+3309 2222222222222222222222222222222222222222222222222222222
+3310 2222222222222222222222222222222222222222222222222222222
+3311 2222222222222222222222222222222222222222222222222222222
+3312 2222222222222222222222222222222222222222222222222222222
+3313 2222222222222222222222222222222222222222222222222222222
+3314 2222222222222222222222222222222222222222222222222222222
+3315 2222222222222222222222222222222222222222222222222222222
+3316 2222222222222222222222222222222222222222222222222222222
+3317 2222222222222222222222222222222222222222222222222222222
+3318 2222222222222222222222222222222222222222222222222222222
+3319 2222222222222222222222222222222222222222222222222222222
+3320 2222222222222222222222222222222222222222222222222222222
+3321 2222222222222222222222222222222222222222222222222222222
+3322 2222222222222222222222222222222222222222222222222222222
+3323 2222222222222222222222222222222222222222222222222222222
+3324 2222222222222222222222222222222222222222222222222222222
+3325 2222222222222222222222222222222222222222222222222222222
+3326 2222222222222222222222222222222222222222222222222222222
+3327 2222222222222222222222222222222222222222222222222222222
+3328 2222222222222222222222222222222222222222222222222222222
+3329 2222222222222222222222222222222222222222222222222222222
+3330 2222222222222222222222222222222222222222222222222222222
+3331 2222222222222222222222222222222222222222222222222222222
+3332 2222222222222222222222222222222222222222222222222222222
+3333 2222222222222222222222222222222222222222222222222222222
+3334 2222222222222222222222222222222222222222222222222222222
+3335 2222222222222222222222222222222222222222222222222222222
+3336 2222222222222222222222222222222222222222222222222222222
+3337 2222222222222222222222222222222222222222222222222222222
+3338 2222222222222222222222222222222222222222222222222222222
+3339 2222222222222222222222222222222222222222222222222222222
+3340 2222222222222222222222222222222222222222222222222222222
+3341 2222222222222222222222222222222222222222222222222222222
+3342 2222222222222222222222222222222222222222222222222222222
+3343 2222222222222222222222222222222222222222222222222222222
+3344 2222222222222222222222222222222222222222222222222222222
+3345 2222222222222222222222222222222222222222222222222222222
+3346 2222222222222222222222222222222222222222222222222222222
+3347 2222222222222222222222222222222222222222222222222222222
+3348 2222222222222222222222222222222222222222222222222222222
+3349 2222222222222222222222222222222222222222222222222222222
+3350 2222222222222222222222222222222222222222222222222222222
+3351 2222222222222222222222222222222222222222222222222222222
+3352 2222222222222222222222222222222222222222222222222222222
+3353 2222222222222222222222222222222222222222222222222222222
+3354 2222222222222222222222222222222222222222222222222222222
+3355 2222222222222222222222222222222222222222222222222222222
+3356 2222222222222222222222222222222222222222222222222222222
+3357 2222222222222222222222222222222222222222222222222222222
+3358 2222222222222222222222222222222222222222222222222222222
+3359 2222222222222222222222222222222222222222222222222222222
+3360 2222222222222222222222222222222222222222222222222222222
+3361 2222222222222222222222222222222222222222222222222222222
+3362 2222222222222222222222222222222222222222222222222222222
+3363 2222222222222222222222222222222222222222222222222222222
+3364 2222222222222222222222222222222222222222222222222222222
+3365 2222222222222222222222222222222222222222222222222222222
+3366 2222222222222222222222222222222222222222222222222222222
+3367 2222222222222222222222222222222222222222222222222222222
+3368 2222222222222222222222222222222222222222222222222222222
+3369 2222222222222222222222222222222222222222222222222222222
+3370 2222222222222222222222222222222222222222222222222222222
+3371 2222222222222222222222222222222222222222222222222222222
+3372 2222222222222222222222222222222222222222222222222222222
+3373 2222222222222222222222222222222222222222222222222222222
+3374 2222222222222222222222222222222222222222222222222222222
+3375 2222222222222222222222222222222222222222222222222222222
+3376 2222222222222222222222222222222222222222222222222222222
+3377 2222222222222222222222222222222222222222222222222222222
+3378 2222222222222222222222222222222222222222222222222222222
+3379 2222222222222222222222222222222222222222222222222222222
+3380 2222222222222222222222222222222222222222222222222222222
+3381 2222222222222222222222222222222222222222222222222222222
+3382 2222222222222222222222222222222222222222222222222222222
+3383 2222222222222222222222222222222222222222222222222222222
+3384 2222222222222222222222222222222222222222222222222222222
+3385 2222222222222222222222222222222222222222222222222222222
+3386 2222222222222222222222222222222222222222222222222222222
+3387 2222222222222222222222222222222222222222222222222222222
+3388 2222222222222222222222222222222222222222222222222222222
+3389 2222222222222222222222222222222222222222222222222222222
+3390 2222222222222222222222222222222222222222222222222222222
+3391 2222222222222222222222222222222222222222222222222222222
+3392 2222222222222222222222222222222222222222222222222222222
+3393 2222222222222222222222222222222222222222222222222222222
+3394 2222222222222222222222222222222222222222222222222222222
+3395 2222222222222222222222222222222222222222222222222222222
+3396 2222222222222222222222222222222222222222222222222222222
+3397 2222222222222222222222222222222222222222222222222222222
+3398 2222222222222222222222222222222222222222222222222222222
+3399 2222222222222222222222222222222222222222222222222222222
+3400 2222222222222222222222222222222222222222222222222222222
+3401 2222222222222222222222222222222222222222222222222222222
+3402 2222222222222222222222222222222222222222222222222222222
+3403 2222222222222222222222222222222222222222222222222222222
+3404 2222222222222222222222222222222222222222222222222222222
+3405 2222222222222222222222222222222222222222222222222222222
+3406 2222222222222222222222222222222222222222222222222222222
+3407 2222222222222222222222222222222222222222222222222222222
+3408 2222222222222222222222222222222222222222222222222222222
+3409 2222222222222222222222222222222222222222222222222222222
+3410 2222222222222222222222222222222222222222222222222222222
+3411 2222222222222222222222222222222222222222222222222222222
+3412 2222222222222222222222222222222222222222222222222222222
+3413 2222222222222222222222222222222222222222222222222222222
+3414 2222222222222222222222222222222222222222222222222222222
+3415 2222222222222222222222222222222222222222222222222222222
+3416 2222222222222222222222222222222222222222222222222222222
+3417 2222222222222222222222222222222222222222222222222222222
+3418 2222222222222222222222222222222222222222222222222222222
+3419 2222222222222222222222222222222222222222222222222222222
+3420 2222222222222222222222222222222222222222222222222222222
+3421 2222222222222222222222222222222222222222222222222222222
+3422 2222222222222222222222222222222222222222222222222222222
+3423 2222222222222222222222222222222222222222222222222222222
+3424 2222222222222222222222222222222222222222222222222222222
+3425 2222222222222222222222222222222222222222222222222222222
+3426 2222222222222222222222222222222222222222222222222222222
+3427 2222222222222222222222222222222222222222222222222222222
+3428 2222222222222222222222222222222222222222222222222222222
+3429 2222222222222222222222222222222222222222222222222222222
+3430 2222222222222222222222222222222222222222222222222222222
+3431 2222222222222222222222222222222222222222222222222222222
+3432 2222222222222222222222222222222222222222222222222222222
+3433 2222222222222222222222222222222222222222222222222222222
+3434 2222222222222222222222222222222222222222222222222222222
+3435 2222222222222222222222222222222222222222222222222222222
+3436 2222222222222222222222222222222222222222222222222222222
+3437 2222222222222222222222222222222222222222222222222222222
+3438 2222222222222222222222222222222222222222222222222222222
+3439 2222222222222222222222222222222222222222222222222222222
+3440 2222222222222222222222222222222222222222222222222222222
+3441 2222222222222222222222222222222222222222222222222222222
+3442 2222222222222222222222222222222222222222222222222222222
+3443 2222222222222222222222222222222222222222222222222222222
+3444 2222222222222222222222222222222222222222222222222222222
+3445 2222222222222222222222222222222222222222222222222222222
+3446 2222222222222222222222222222222222222222222222222222222
+3447 2222222222222222222222222222222222222222222222222222222
+3448 2222222222222222222222222222222222222222222222222222222
+3449 2222222222222222222222222222222222222222222222222222222
+3450 2222222222222222222222222222222222222222222222222222222
+3451 2222222222222222222222222222222222222222222222222222222
+3452 2222222222222222222222222222222222222222222222222222222
+3453 2222222222222222222222222222222222222222222222222222222
+3454 2222222222222222222222222222222222222222222222222222222
+3455 2222222222222222222222222222222222222222222222222222222
+3456 2222222222222222222222222222222222222222222222222222222
+3457 2222222222222222222222222222222222222222222222222222222
+3458 2222222222222222222222222222222222222222222222222222222
+3459 2222222222222222222222222222222222222222222222222222222
+3460 2222222222222222222222222222222222222222222222222222222
+3461 2222222222222222222222222222222222222222222222222222222
+3462 2222222222222222222222222222222222222222222222222222222
+3463 2222222222222222222222222222222222222222222222222222222
+3464 2222222222222222222222222222222222222222222222222222222
+3465 2222222222222222222222222222222222222222222222222222222
+3466 2222222222222222222222222222222222222222222222222222222
+3467 2222222222222222222222222222222222222222222222222222222
+3468 2222222222222222222222222222222222222222222222222222222
+3469 2222222222222222222222222222222222222222222222222222222
+3470 2222222222222222222222222222222222222222222222222222222
+3471 2222222222222222222222222222222222222222222222222222222
+3472 2222222222222222222222222222222222222222222222222222222
+3473 2222222222222222222222222222222222222222222222222222222
+3474 2222222222222222222222222222222222222222222222222222222
+3475 2222222222222222222222222222222222222222222222222222222
+3476 2222222222222222222222222222222222222222222222222222222
+3477 2222222222222222222222222222222222222222222222222222222
+3478 2222222222222222222222222222222222222222222222222222222
+3479 2222222222222222222222222222222222222222222222222222222
+3480 2222222222222222222222222222222222222222222222222222222
+3481 2222222222222222222222222222222222222222222222222222222
+3482 2222222222222222222222222222222222222222222222222222222
+3483 2222222222222222222222222222222222222222222222222222222
+3484 2222222222222222222222222222222222222222222222222222222
+3485 2222222222222222222222222222222222222222222222222222222
+3486 2222222222222222222222222222222222222222222222222222222
+3487 2222222222222222222222222222222222222222222222222222222
+3488 2222222222222222222222222222222222222222222222222222222
+3489 2222222222222222222222222222222222222222222222222222222
+3490 2222222222222222222222222222222222222222222222222222222
+3491 2222222222222222222222222222222222222222222222222222222
+3492 2222222222222222222222222222222222222222222222222222222
+3493 2222222222222222222222222222222222222222222222222222222
+3494 2222222222222222222222222222222222222222222222222222222
+3495 2222222222222222222222222222222222222222222222222222222
+3496 2222222222222222222222222222222222222222222222222222222
+3497 2222222222222222222222222222222222222222222222222222222
+3498 2222222222222222222222222222222222222222222222222222222
+3499 2222222222222222222222222222222222222222222222222222222
+3500 2222222222222222222222222222222222222222222222222222222
+3501 2222222222222222222222222222222222222222222222222222222
+3502 2222222222222222222222222222222222222222222222222222222
+3503 2222222222222222222222222222222222222222222222222222222
+3504 2222222222222222222222222222222222222222222222222222222
+3505 2222222222222222222222222222222222222222222222222222222
+3506 2222222222222222222222222222222222222222222222222222222
+3507 2222222222222222222222222222222222222222222222222222222
+3508 2222222222222222222222222222222222222222222222222222222
+3509 2222222222222222222222222222222222222222222222222222222
+3510 2222222222222222222222222222222222222222222222222222222
+3511 2222222222222222222222222222222222222222222222222222222
+3512 2222222222222222222222222222222222222222222222222222222
+3513 2222222222222222222222222222222222222222222222222222222
+3514 2222222222222222222222222222222222222222222222222222222
+3515 2222222222222222222222222222222222222222222222222222222
+3516 2222222222222222222222222222222222222222222222222222222
+3517 2222222222222222222222222222222222222222222222222222222
+3518 2222222222222222222222222222222222222222222222222222222
+3519 2222222222222222222222222222222222222222222222222222222
+3520 2222222222222222222222222222222222222222222222222222222
+3521 2222222222222222222222222222222222222222222222222222222
+3522 2222222222222222222222222222222222222222222222222222222
+3523 2222222222222222222222222222222222222222222222222222222
+3524 2222222222222222222222222222222222222222222222222222222
+3525 2222222222222222222222222222222222222222222222222222222
+3526 2222222222222222222222222222222222222222222222222222222
+3527 2222222222222222222222222222222222222222222222222222222
+3528 2222222222222222222222222222222222222222222222222222222
+3529 2222222222222222222222222222222222222222222222222222222
+3530 2222222222222222222222222222222222222222222222222222222
+3531 2222222222222222222222222222222222222222222222222222222
+3532 2222222222222222222222222222222222222222222222222222222
+3533 2222222222222222222222222222222222222222222222222222222
+3534 2222222222222222222222222222222222222222222222222222222
+3535 2222222222222222222222222222222222222222222222222222222
+3536 2222222222222222222222222222222222222222222222222222222
+3537 2222222222222222222222222222222222222222222222222222222
+3538 2222222222222222222222222222222222222222222222222222222
+3539 2222222222222222222222222222222222222222222222222222222
+3540 2222222222222222222222222222222222222222222222222222222
+3541 2222222222222222222222222222222222222222222222222222222
+3542 2222222222222222222222222222222222222222222222222222222
+3543 2222222222222222222222222222222222222222222222222222222
+3544 2222222222222222222222222222222222222222222222222222222
+3545 2222222222222222222222222222222222222222222222222222222
+3546 2222222222222222222222222222222222222222222222222222222
+3547 2222222222222222222222222222222222222222222222222222222
+3548 2222222222222222222222222222222222222222222222222222222
+3549 2222222222222222222222222222222222222222222222222222222
+3550 2222222222222222222222222222222222222222222222222222222
+3551 2222222222222222222222222222222222222222222222222222222
+3552 2222222222222222222222222222222222222222222222222222222
+3553 2222222222222222222222222222222222222222222222222222222
+3554 2222222222222222222222222222222222222222222222222222222
+3555 2222222222222222222222222222222222222222222222222222222
+3556 2222222222222222222222222222222222222222222222222222222
+3557 2222222222222222222222222222222222222222222222222222222
+3558 2222222222222222222222222222222222222222222222222222222
+3559 2222222222222222222222222222222222222222222222222222222
+3560 2222222222222222222222222222222222222222222222222222222
+3561 2222222222222222222222222222222222222222222222222222222
+3562 2222222222222222222222222222222222222222222222222222222
+3563 2222222222222222222222222222222222222222222222222222222
+3564 2222222222222222222222222222222222222222222222222222222
+3565 2222222222222222222222222222222222222222222222222222222
+3566 2222222222222222222222222222222222222222222222222222222
+3567 2222222222222222222222222222222222222222222222222222222
+3568 2222222222222222222222222222222222222222222222222222222
+3569 2222222222222222222222222222222222222222222222222222222
+3570 2222222222222222222222222222222222222222222222222222222
+3571 2222222222222222222222222222222222222222222222222222222
+3572 2222222222222222222222222222222222222222222222222222222
+3573 2222222222222222222222222222222222222222222222222222222
+3574 2222222222222222222222222222222222222222222222222222222
+3575 2222222222222222222222222222222222222222222222222222222
+3576 2222222222222222222222222222222222222222222222222222222
+3577 2222222222222222222222222222222222222222222222222222222
+3578 2222222222222222222222222222222222222222222222222222222
+3579 2222222222222222222222222222222222222222222222222222222
+3580 2222222222222222222222222222222222222222222222222222222
+3581 2222222222222222222222222222222222222222222222222222222
+3582 2222222222222222222222222222222222222222222222222222222
+3583 2222222222222222222222222222222222222222222222222222222
+3584 2222222222222222222222222222222222222222222222222222222
+3585 2222222222222222222222222222222222222222222222222222222
+3586 2222222222222222222222222222222222222222222222222222222
+3587 2222222222222222222222222222222222222222222222222222222
+3588 2222222222222222222222222222222222222222222222222222222
+3589 2222222222222222222222222222222222222222222222222222222
+3590 2222222222222222222222222222222222222222222222222222222
+3591 2222222222222222222222222222222222222222222222222222222
+3592 2222222222222222222222222222222222222222222222222222222
+3593 2222222222222222222222222222222222222222222222222222222
+3594 2222222222222222222222222222222222222222222222222222222
+3595 2222222222222222222222222222222222222222222222222222222
+3596 2222222222222222222222222222222222222222222222222222222
+3597 2222222222222222222222222222222222222222222222222222222
+3598 2222222222222222222222222222222222222222222222222222222
+3599 2222222222222222222222222222222222222222222222222222222
+3600 2222222222222222222222222222222222222222222222222222222
+3601 2222222222222222222222222222222222222222222222222222222
+3602 2222222222222222222222222222222222222222222222222222222
+3603 2222222222222222222222222222222222222222222222222222222
+3604 2222222222222222222222222222222222222222222222222222222
+3605 2222222222222222222222222222222222222222222222222222222
+3606 2222222222222222222222222222222222222222222222222222222
+3607 2222222222222222222222222222222222222222222222222222222
+3608 2222222222222222222222222222222222222222222222222222222
+3609 2222222222222222222222222222222222222222222222222222222
+3610 2222222222222222222222222222222222222222222222222222222
+3611 2222222222222222222222222222222222222222222222222222222
+3612 2222222222222222222222222222222222222222222222222222222
+3613 2222222222222222222222222222222222222222222222222222222
+3614 2222222222222222222222222222222222222222222222222222222
+3615 2222222222222222222222222222222222222222222222222222222
+3616 2222222222222222222222222222222222222222222222222222222
+3617 2222222222222222222222222222222222222222222222222222222
+3618 2222222222222222222222222222222222222222222222222222222
+3619 2222222222222222222222222222222222222222222222222222222
+3620 2222222222222222222222222222222222222222222222222222222
+3621 2222222222222222222222222222222222222222222222222222222
+3622 2222222222222222222222222222222222222222222222222222222
+3623 2222222222222222222222222222222222222222222222222222222
+3624 2222222222222222222222222222222222222222222222222222222
+3625 2222222222222222222222222222222222222222222222222222222
+3626 2222222222222222222222222222222222222222222222222222222
+3627 2222222222222222222222222222222222222222222222222222222
+3628 2222222222222222222222222222222222222222222222222222222
+3629 2222222222222222222222222222222222222222222222222222222
+3630 2222222222222222222222222222222222222222222222222222222
+3631 2222222222222222222222222222222222222222222222222222222
+3632 2222222222222222222222222222222222222222222222222222222
+3633 2222222222222222222222222222222222222222222222222222222
+3634 2222222222222222222222222222222222222222222222222222222
+3635 2222222222222222222222222222222222222222222222222222222
+3636 2222222222222222222222222222222222222222222222222222222
+3637 2222222222222222222222222222222222222222222222222222222
+3638 2222222222222222222222222222222222222222222222222222222
+3639 2222222222222222222222222222222222222222222222222222222
+3640 2222222222222222222222222222222222222222222222222222222
+3641 2222222222222222222222222222222222222222222222222222222
+3642 2222222222222222222222222222222222222222222222222222222
+3643 2222222222222222222222222222222222222222222222222222222
+3644 2222222222222222222222222222222222222222222222222222222
+3645 2222222222222222222222222222222222222222222222222222222
+3646 2222222222222222222222222222222222222222222222222222222
+3647 2222222222222222222222222222222222222222222222222222222
+3648 2222222222222222222222222222222222222222222222222222222
+3649 2222222222222222222222222222222222222222222222222222222
+3650 2222222222222222222222222222222222222222222222222222222
+3651 2222222222222222222222222222222222222222222222222222222
+3652 2222222222222222222222222222222222222222222222222222222
+3653 2222222222222222222222222222222222222222222222222222222
+3654 2222222222222222222222222222222222222222222222222222222
+3655 2222222222222222222222222222222222222222222222222222222
+3656 2222222222222222222222222222222222222222222222222222222
+3657 2222222222222222222222222222222222222222222222222222222
+3658 2222222222222222222222222222222222222222222222222222222
+3659 2222222222222222222222222222222222222222222222222222222
+3660 2222222222222222222222222222222222222222222222222222222
+3661 2222222222222222222222222222222222222222222222222222222
+3662 2222222222222222222222222222222222222222222222222222222
+3663 2222222222222222222222222222222222222222222222222222222
+3664 2222222222222222222222222222222222222222222222222222222
+3665 2222222222222222222222222222222222222222222222222222222
+3666 2222222222222222222222222222222222222222222222222222222
+3667 2222222222222222222222222222222222222222222222222222222
+3668 2222222222222222222222222222222222222222222222222222222
+3669 2222222222222222222222222222222222222222222222222222222
+3670 2222222222222222222222222222222222222222222222222222222
+3671 2222222222222222222222222222222222222222222222222222222
+3672 2222222222222222222222222222222222222222222222222222222
+3673 2222222222222222222222222222222222222222222222222222222
+3674 2222222222222222222222222222222222222222222222222222222
+3675 2222222222222222222222222222222222222222222222222222222
+3676 2222222222222222222222222222222222222222222222222222222
+3677 2222222222222222222222222222222222222222222222222222222
+3678 2222222222222222222222222222222222222222222222222222222
+3679 2222222222222222222222222222222222222222222222222222222
+3680 2222222222222222222222222222222222222222222222222222222
+3681 2222222222222222222222222222222222222222222222222222222
+3682 2222222222222222222222222222222222222222222222222222222
+3683 2222222222222222222222222222222222222222222222222222222
+3684 2222222222222222222222222222222222222222222222222222222
+3685 2222222222222222222222222222222222222222222222222222222
+3686 2222222222222222222222222222222222222222222222222222222
+3687 2222222222222222222222222222222222222222222222222222222
+3688 2222222222222222222222222222222222222222222222222222222
+3689 2222222222222222222222222222222222222222222222222222222
+3690 2222222222222222222222222222222222222222222222222222222
+3691 2222222222222222222222222222222222222222222222222222222
+3692 2222222222222222222222222222222222222222222222222222222
+3693 2222222222222222222222222222222222222222222222222222222
+3694 2222222222222222222222222222222222222222222222222222222
+3695 2222222222222222222222222222222222222222222222222222222
+3696 2222222222222222222222222222222222222222222222222222222
+3697 2222222222222222222222222222222222222222222222222222222
+3698 2222222222222222222222222222222222222222222222222222222
+3699 2222222222222222222222222222222222222222222222222222222
+3700 2222222222222222222222222222222222222222222222222222222
+3701 2222222222222222222222222222222222222222222222222222222
+3702 2222222222222222222222222222222222222222222222222222222
+3703 2222222222222222222222222222222222222222222222222222222
+3704 2222222222222222222222222222222222222222222222222222222
+3705 2222222222222222222222222222222222222222222222222222222
+3706 2222222222222222222222222222222222222222222222222222222
+3707 2222222222222222222222222222222222222222222222222222222
+3708 2222222222222222222222222222222222222222222222222222222
+3709 2222222222222222222222222222222222222222222222222222222
+3710 2222222222222222222222222222222222222222222222222222222
+3711 2222222222222222222222222222222222222222222222222222222
+3712 2222222222222222222222222222222222222222222222222222222
+3713 2222222222222222222222222222222222222222222222222222222
+3714 2222222222222222222222222222222222222222222222222222222
+3715 2222222222222222222222222222222222222222222222222222222
+3716 2222222222222222222222222222222222222222222222222222222
+3717 2222222222222222222222222222222222222222222222222222222
+3718 2222222222222222222222222222222222222222222222222222222
+3719 2222222222222222222222222222222222222222222222222222222
+3720 2222222222222222222222222222222222222222222222222222222
+3721 2222222222222222222222222222222222222222222222222222222
+3722 2222222222222222222222222222222222222222222222222222222
+3723 2222222222222222222222222222222222222222222222222222222
+3724 2222222222222222222222222222222222222222222222222222222
+3725 2222222222222222222222222222222222222222222222222222222
+3726 2222222222222222222222222222222222222222222222222222222
+3727 2222222222222222222222222222222222222222222222222222222
+3728 2222222222222222222222222222222222222222222222222222222
+3729 2222222222222222222222222222222222222222222222222222222
+3730 2222222222222222222222222222222222222222222222222222222
+3731 2222222222222222222222222222222222222222222222222222222
+3732 2222222222222222222222222222222222222222222222222222222
+3733 2222222222222222222222222222222222222222222222222222222
+3734 2222222222222222222222222222222222222222222222222222222
+3735 2222222222222222222222222222222222222222222222222222222
+3736 2222222222222222222222222222222222222222222222222222222
+3737 2222222222222222222222222222222222222222222222222222222
+3738 2222222222222222222222222222222222222222222222222222222
+3739 2222222222222222222222222222222222222222222222222222222
+3740 2222222222222222222222222222222222222222222222222222222
+3741 2222222222222222222222222222222222222222222222222222222
+3742 2222222222222222222222222222222222222222222222222222222
+3743 2222222222222222222222222222222222222222222222222222222
+3744 2222222222222222222222222222222222222222222222222222222
+3745 2222222222222222222222222222222222222222222222222222222
+3746 2222222222222222222222222222222222222222222222222222222
+3747 2222222222222222222222222222222222222222222222222222222
+3748 2222222222222222222222222222222222222222222222222222222
+3749 2222222222222222222222222222222222222222222222222222222
+3750 2222222222222222222222222222222222222222222222222222222
+3751 2222222222222222222222222222222222222222222222222222222
+3752 2222222222222222222222222222222222222222222222222222222
+3753 2222222222222222222222222222222222222222222222222222222
+3754 2222222222222222222222222222222222222222222222222222222
+3755 2222222222222222222222222222222222222222222222222222222
+3756 2222222222222222222222222222222222222222222222222222222
+3757 2222222222222222222222222222222222222222222222222222222
+3758 2222222222222222222222222222222222222222222222222222222
+3759 2222222222222222222222222222222222222222222222222222222
+3760 2222222222222222222222222222222222222222222222222222222
+3761 2222222222222222222222222222222222222222222222222222222
+3762 2222222222222222222222222222222222222222222222222222222
+3763 2222222222222222222222222222222222222222222222222222222
+3764 2222222222222222222222222222222222222222222222222222222
+3765 2222222222222222222222222222222222222222222222222222222
+3766 2222222222222222222222222222222222222222222222222222222
+3767 2222222222222222222222222222222222222222222222222222222
+3768 2222222222222222222222222222222222222222222222222222222
+3769 2222222222222222222222222222222222222222222222222222222
+3770 2222222222222222222222222222222222222222222222222222222
+3771 2222222222222222222222222222222222222222222222222222222
+3772 2222222222222222222222222222222222222222222222222222222
+3773 2222222222222222222222222222222222222222222222222222222
+3774 2222222222222222222222222222222222222222222222222222222
+3775 2222222222222222222222222222222222222222222222222222222
+3776 2222222222222222222222222222222222222222222222222222222
+3777 2222222222222222222222222222222222222222222222222222222
+3778 2222222222222222222222222222222222222222222222222222222
+3779 2222222222222222222222222222222222222222222222222222222
+3780 2222222222222222222222222222222222222222222222222222222
+3781 2222222222222222222222222222222222222222222222222222222
+3782 2222222222222222222222222222222222222222222222222222222
+3783 2222222222222222222222222222222222222222222222222222222
+3784 2222222222222222222222222222222222222222222222222222222
+3785 2222222222222222222222222222222222222222222222222222222
+3786 2222222222222222222222222222222222222222222222222222222
+3787 2222222222222222222222222222222222222222222222222222222
+3788 2222222222222222222222222222222222222222222222222222222
+3789 2222222222222222222222222222222222222222222222222222222
+3790 2222222222222222222222222222222222222222222222222222222
+3791 2222222222222222222222222222222222222222222222222222222
+3792 2222222222222222222222222222222222222222222222222222222
+3793 2222222222222222222222222222222222222222222222222222222
+3794 2222222222222222222222222222222222222222222222222222222
+3795 2222222222222222222222222222222222222222222222222222222
+3796 2222222222222222222222222222222222222222222222222222222
+3797 2222222222222222222222222222222222222222222222222222222
+3798 2222222222222222222222222222222222222222222222222222222
+3799 2222222222222222222222222222222222222222222222222222222
+3800 2222222222222222222222222222222222222222222222222222222
+3801 2222222222222222222222222222222222222222222222222222222
+3802 2222222222222222222222222222222222222222222222222222222
+3803 2222222222222222222222222222222222222222222222222222222
+3804 2222222222222222222222222222222222222222222222222222222
+3805 2222222222222222222222222222222222222222222222222222222
+3806 2222222222222222222222222222222222222222222222222222222
+3807 2222222222222222222222222222222222222222222222222222222
+3808 2222222222222222222222222222222222222222222222222222222
+3809 2222222222222222222222222222222222222222222222222222222
+3810 2222222222222222222222222222222222222222222222222222222
+3811 2222222222222222222222222222222222222222222222222222222
+3812 2222222222222222222222222222222222222222222222222222222
+3813 2222222222222222222222222222222222222222222222222222222
+3814 2222222222222222222222222222222222222222222222222222222
+3815 2222222222222222222222222222222222222222222222222222222
+3816 2222222222222222222222222222222222222222222222222222222
+3817 2222222222222222222222222222222222222222222222222222222
+3818 2222222222222222222222222222222222222222222222222222222
+3819 2222222222222222222222222222222222222222222222222222222
+3820 2222222222222222222222222222222222222222222222222222222
+3821 2222222222222222222222222222222222222222222222222222222
+3822 2222222222222222222222222222222222222222222222222222222
+3823 2222222222222222222222222222222222222222222222222222222
+3824 2222222222222222222222222222222222222222222222222222222
+3825 2222222222222222222222222222222222222222222222222222222
+3826 2222222222222222222222222222222222222222222222222222222
+3827 2222222222222222222222222222222222222222222222222222222
+3828 2222222222222222222222222222222222222222222222222222222
+3829 2222222222222222222222222222222222222222222222222222222
+3830 2222222222222222222222222222222222222222222222222222222
+3831 2222222222222222222222222222222222222222222222222222222
+3832 2222222222222222222222222222222222222222222222222222222
+3833 2222222222222222222222222222222222222222222222222222222
+3834 2222222222222222222222222222222222222222222222222222222
+3835 2222222222222222222222222222222222222222222222222222222
+3836 2222222222222222222222222222222222222222222222222222222
+3837 2222222222222222222222222222222222222222222222222222222
+3838 2222222222222222222222222222222222222222222222222222222
+3839 2222222222222222222222222222222222222222222222222222222
+3840 2222222222222222222222222222222222222222222222222222222
+3841 2222222222222222222222222222222222222222222222222222222
+3842 2222222222222222222222222222222222222222222222222222222
+3843 2222222222222222222222222222222222222222222222222222222
+3844 2222222222222222222222222222222222222222222222222222222
+3845 2222222222222222222222222222222222222222222222222222222
+3846 2222222222222222222222222222222222222222222222222222222
+3847 2222222222222222222222222222222222222222222222222222222
+3848 2222222222222222222222222222222222222222222222222222222
+3849 2222222222222222222222222222222222222222222222222222222
+3850 2222222222222222222222222222222222222222222222222222222
+3851 2222222222222222222222222222222222222222222222222222222
+3852 2222222222222222222222222222222222222222222222222222222
+3853 2222222222222222222222222222222222222222222222222222222
+3854 2222222222222222222222222222222222222222222222222222222
+3855 2222222222222222222222222222222222222222222222222222222
+3856 2222222222222222222222222222222222222222222222222222222
+3857 2222222222222222222222222222222222222222222222222222222
+3858 2222222222222222222222222222222222222222222222222222222
+3859 2222222222222222222222222222222222222222222222222222222
+3860 2222222222222222222222222222222222222222222222222222222
+3861 2222222222222222222222222222222222222222222222222222222
+3862 2222222222222222222222222222222222222222222222222222222
+3863 2222222222222222222222222222222222222222222222222222222
+3864 2222222222222222222222222222222222222222222222222222222
+3865 2222222222222222222222222222222222222222222222222222222
+3866 2222222222222222222222222222222222222222222222222222222
+3867 2222222222222222222222222222222222222222222222222222222
+3868 2222222222222222222222222222222222222222222222222222222
+3869 2222222222222222222222222222222222222222222222222222222
+3870 2222222222222222222222222222222222222222222222222222222
+3871 2222222222222222222222222222222222222222222222222222222
+3872 2222222222222222222222222222222222222222222222222222222
+3873 2222222222222222222222222222222222222222222222222222222
+3874 2222222222222222222222222222222222222222222222222222222
+3875 2222222222222222222222222222222222222222222222222222222
+3876 2222222222222222222222222222222222222222222222222222222
+3877 2222222222222222222222222222222222222222222222222222222
+3878 2222222222222222222222222222222222222222222222222222222
+3879 2222222222222222222222222222222222222222222222222222222
+3880 2222222222222222222222222222222222222222222222222222222
+3881 2222222222222222222222222222222222222222222222222222222
+3882 2222222222222222222222222222222222222222222222222222222
+3883 2222222222222222222222222222222222222222222222222222222
+3884 2222222222222222222222222222222222222222222222222222222
+3885 2222222222222222222222222222222222222222222222222222222
+3886 2222222222222222222222222222222222222222222222222222222
+3887 2222222222222222222222222222222222222222222222222222222
+3888 2222222222222222222222222222222222222222222222222222222
+3889 2222222222222222222222222222222222222222222222222222222
+3890 2222222222222222222222222222222222222222222222222222222
+3891 2222222222222222222222222222222222222222222222222222222
+3892 2222222222222222222222222222222222222222222222222222222
+3893 2222222222222222222222222222222222222222222222222222222
+3894 2222222222222222222222222222222222222222222222222222222
+3895 2222222222222222222222222222222222222222222222222222222
+3896 2222222222222222222222222222222222222222222222222222222
+3897 2222222222222222222222222222222222222222222222222222222
+3898 2222222222222222222222222222222222222222222222222222222
+3899 2222222222222222222222222222222222222222222222222222222
+3900 2222222222222222222222222222222222222222222222222222222
+3901 2222222222222222222222222222222222222222222222222222222
+3902 2222222222222222222222222222222222222222222222222222222
+3903 2222222222222222222222222222222222222222222222222222222
+3904 2222222222222222222222222222222222222222222222222222222
+3905 2222222222222222222222222222222222222222222222222222222
+3906 2222222222222222222222222222222222222222222222222222222
+3907 2222222222222222222222222222222222222222222222222222222
+3908 2222222222222222222222222222222222222222222222222222222
+3909 2222222222222222222222222222222222222222222222222222222
+3910 2222222222222222222222222222222222222222222222222222222
+3911 2222222222222222222222222222222222222222222222222222222
+3912 2222222222222222222222222222222222222222222222222222222
+3913 2222222222222222222222222222222222222222222222222222222
+3914 2222222222222222222222222222222222222222222222222222222
+3915 2222222222222222222222222222222222222222222222222222222
+3916 2222222222222222222222222222222222222222222222222222222
+3917 2222222222222222222222222222222222222222222222222222222
+3918 2222222222222222222222222222222222222222222222222222222
+3919 2222222222222222222222222222222222222222222222222222222
+3920 2222222222222222222222222222222222222222222222222222222
+3921 2222222222222222222222222222222222222222222222222222222
+3922 2222222222222222222222222222222222222222222222222222222
+3923 2222222222222222222222222222222222222222222222222222222
+3924 2222222222222222222222222222222222222222222222222222222
+3925 2222222222222222222222222222222222222222222222222222222
+3926 2222222222222222222222222222222222222222222222222222222
+3927 2222222222222222222222222222222222222222222222222222222
+3928 2222222222222222222222222222222222222222222222222222222
+3929 2222222222222222222222222222222222222222222222222222222
+3930 2222222222222222222222222222222222222222222222222222222
+3931 2222222222222222222222222222222222222222222222222222222
+3932 2222222222222222222222222222222222222222222222222222222
+3933 2222222222222222222222222222222222222222222222222222222
+3934 2222222222222222222222222222222222222222222222222222222
+3935 2222222222222222222222222222222222222222222222222222222
+3936 2222222222222222222222222222222222222222222222222222222
+3937 2222222222222222222222222222222222222222222222222222222
+3938 2222222222222222222222222222222222222222222222222222222
+3939 2222222222222222222222222222222222222222222222222222222
+3940 2222222222222222222222222222222222222222222222222222222
+3941 2222222222222222222222222222222222222222222222222222222
+3942 2222222222222222222222222222222222222222222222222222222
+3943 2222222222222222222222222222222222222222222222222222222
+3944 2222222222222222222222222222222222222222222222222222222
+3945 2222222222222222222222222222222222222222222222222222222
+3946 2222222222222222222222222222222222222222222222222222222
+3947 2222222222222222222222222222222222222222222222222222222
+3948 2222222222222222222222222222222222222222222222222222222
+3949 2222222222222222222222222222222222222222222222222222222
+3950 2222222222222222222222222222222222222222222222222222222
+3951 2222222222222222222222222222222222222222222222222222222
+3952 2222222222222222222222222222222222222222222222222222222
+3953 2222222222222222222222222222222222222222222222222222222
+3954 2222222222222222222222222222222222222222222222222222222
+3955 2222222222222222222222222222222222222222222222222222222
+3956 2222222222222222222222222222222222222222222222222222222
+3957 2222222222222222222222222222222222222222222222222222222
+3958 2222222222222222222222222222222222222222222222222222222
+3959 2222222222222222222222222222222222222222222222222222222
+3960 2222222222222222222222222222222222222222222222222222222
+3961 2222222222222222222222222222222222222222222222222222222
+3962 2222222222222222222222222222222222222222222222222222222
+3963 2222222222222222222222222222222222222222222222222222222
+3964 2222222222222222222222222222222222222222222222222222222
+3965 2222222222222222222222222222222222222222222222222222222
+3966 2222222222222222222222222222222222222222222222222222222
+3967 2222222222222222222222222222222222222222222222222222222
+3968 2222222222222222222222222222222222222222222222222222222
+3969 2222222222222222222222222222222222222222222222222222222
+3970 2222222222222222222222222222222222222222222222222222222
+3971 2222222222222222222222222222222222222222222222222222222
+3972 2222222222222222222222222222222222222222222222222222222
+3973 2222222222222222222222222222222222222222222222222222222
+3974 2222222222222222222222222222222222222222222222222222222
+3975 2222222222222222222222222222222222222222222222222222222
+3976 2222222222222222222222222222222222222222222222222222222
+3977 2222222222222222222222222222222222222222222222222222222
+3978 2222222222222222222222222222222222222222222222222222222
+3979 2222222222222222222222222222222222222222222222222222222
+3980 2222222222222222222222222222222222222222222222222222222
+3981 2222222222222222222222222222222222222222222222222222222
+3982 2222222222222222222222222222222222222222222222222222222
+3983 2222222222222222222222222222222222222222222222222222222
+3984 2222222222222222222222222222222222222222222222222222222
+3985 2222222222222222222222222222222222222222222222222222222
+3986 2222222222222222222222222222222222222222222222222222222
+3987 2222222222222222222222222222222222222222222222222222222
+3988 2222222222222222222222222222222222222222222222222222222
+3989 2222222222222222222222222222222222222222222222222222222
+3990 2222222222222222222222222222222222222222222222222222222
+3991 2222222222222222222222222222222222222222222222222222222
+3992 2222222222222222222222222222222222222222222222222222222
+3993 2222222222222222222222222222222222222222222222222222222
+3994 2222222222222222222222222222222222222222222222222222222
+3995 2222222222222222222222222222222222222222222222222222222
+3996 2222222222222222222222222222222222222222222222222222222
+3997 2222222222222222222222222222222222222222222222222222222
+3998 2222222222222222222222222222222222222222222222222222222
+3999 2222222222222222222222222222222222222222222222222222222

Added: trunk/main/planet/web/test/etc/web/data.txt
===================================================================
--- trunk/main/planet/web/test/etc/web/data.txt 2006-01-31 11:49:08 UTC (rev
1000)
+++ trunk/main/planet/web/test/etc/web/data.txt 2006-01-31 12:10:53 UTC (rev
1001)
@@ -0,0 +1,10000 @@
+0000 3333333333333333333333333333333333333333333333333333333
+0001 3333333333333333333333333333333333333333333333333333333
+0002 3333333333333333333333333333333333333333333333333333333
+0003 3333333333333333333333333333333333333333333333333333333
+0004 3333333333333333333333333333333333333333333333333333333
+0005 3333333333333333333333333333333333333333333333333333333
+0006 3333333333333333333333333333333333333333333333333333333
+0007 3333333333333333333333333333333333333333333333333333333
+0008 3333333333333333333333333333333333333333333333333333333
+0009 3333333333333333333333333333333333333333333333333333333
+0010 3333333333333333333333333333333333333333333333333333333
+0011 3333333333333333333333333333333333333333333333333333333
+0012 3333333333333333333333333333333333333333333333333333333
+0013 3333333333333333333333333333333333333333333333333333333
+0014 3333333333333333333333333333333333333333333333333333333
+0015 3333333333333333333333333333333333333333333333333333333
+0016 3333333333333333333333333333333333333333333333333333333
+0017 3333333333333333333333333333333333333333333333333333333
+0018 3333333333333333333333333333333333333333333333333333333
+0019 3333333333333333333333333333333333333333333333333333333
+0020 3333333333333333333333333333333333333333333333333333333
+0021 3333333333333333333333333333333333333333333333333333333
+0022 3333333333333333333333333333333333333333333333333333333
+0023 3333333333333333333333333333333333333333333333333333333
+0024 3333333333333333333333333333333333333333333333333333333
+0025 3333333333333333333333333333333333333333333333333333333
+0026 3333333333333333333333333333333333333333333333333333333
+0027 3333333333333333333333333333333333333333333333333333333
+0028 3333333333333333333333333333333333333333333333333333333
+0029 3333333333333333333333333333333333333333333333333333333
+0030 3333333333333333333333333333333333333333333333333333333
+0031 3333333333333333333333333333333333333333333333333333333
+0032 3333333333333333333333333333333333333333333333333333333
+0033 3333333333333333333333333333333333333333333333333333333
+0034 3333333333333333333333333333333333333333333333333333333
+0035 3333333333333333333333333333333333333333333333333333333
+0036 3333333333333333333333333333333333333333333333333333333
+0037 3333333333333333333333333333333333333333333333333333333
+0038 3333333333333333333333333333333333333333333333333333333
+0039 3333333333333333333333333333333333333333333333333333333
+0040 3333333333333333333333333333333333333333333333333333333
+0041 3333333333333333333333333333333333333333333333333333333
+0042 3333333333333333333333333333333333333333333333333333333
+0043 3333333333333333333333333333333333333333333333333333333
+0044 3333333333333333333333333333333333333333333333333333333
+0045 3333333333333333333333333333333333333333333333333333333
+0046 3333333333333333333333333333333333333333333333333333333
+0047 3333333333333333333333333333333333333333333333333333333
+0048 3333333333333333333333333333333333333333333333333333333
+0049 3333333333333333333333333333333333333333333333333333333
+0050 3333333333333333333333333333333333333333333333333333333
+0051 3333333333333333333333333333333333333333333333333333333
+0052 3333333333333333333333333333333333333333333333333333333
+0053 3333333333333333333333333333333333333333333333333333333
+0054 3333333333333333333333333333333333333333333333333333333
+0055 3333333333333333333333333333333333333333333333333333333
+0056 3333333333333333333333333333333333333333333333333333333
+0057 3333333333333333333333333333333333333333333333333333333
+0058 3333333333333333333333333333333333333333333333333333333
+0059 3333333333333333333333333333333333333333333333333333333
+0060 3333333333333333333333333333333333333333333333333333333
+0061 3333333333333333333333333333333333333333333333333333333
+0062 3333333333333333333333333333333333333333333333333333333
+0063 3333333333333333333333333333333333333333333333333333333
+0064 3333333333333333333333333333333333333333333333333333333
+0065 3333333333333333333333333333333333333333333333333333333
+0066 3333333333333333333333333333333333333333333333333333333
+0067 3333333333333333333333333333333333333333333333333333333
+0068 3333333333333333333333333333333333333333333333333333333
+0069 3333333333333333333333333333333333333333333333333333333
+0070 3333333333333333333333333333333333333333333333333333333
+0071 3333333333333333333333333333333333333333333333333333333
+0072 3333333333333333333333333333333333333333333333333333333
+0073 3333333333333333333333333333333333333333333333333333333
+0074 3333333333333333333333333333333333333333333333333333333
+0075 3333333333333333333333333333333333333333333333333333333
+0076 3333333333333333333333333333333333333333333333333333333
+0077 3333333333333333333333333333333333333333333333333333333
+0078 3333333333333333333333333333333333333333333333333333333
+0079 3333333333333333333333333333333333333333333333333333333
+0080 3333333333333333333333333333333333333333333333333333333
+0081 3333333333333333333333333333333333333333333333333333333
+0082 3333333333333333333333333333333333333333333333333333333
+0083 3333333333333333333333333333333333333333333333333333333
+0084 3333333333333333333333333333333333333333333333333333333
+0085 3333333333333333333333333333333333333333333333333333333
+0086 3333333333333333333333333333333333333333333333333333333
+0087 3333333333333333333333333333333333333333333333333333333
+0088 3333333333333333333333333333333333333333333333333333333
+0089 3333333333333333333333333333333333333333333333333333333
+0090 3333333333333333333333333333333333333333333333333333333
+0091 3333333333333333333333333333333333333333333333333333333
+0092 3333333333333333333333333333333333333333333333333333333
+0093 3333333333333333333333333333333333333333333333333333333
+0094 3333333333333333333333333333333333333333333333333333333
+0095 3333333333333333333333333333333333333333333333333333333
+0096 3333333333333333333333333333333333333333333333333333333
+0097 3333333333333333333333333333333333333333333333333333333
+0098 3333333333333333333333333333333333333333333333333333333
+0099 3333333333333333333333333333333333333333333333333333333
+0100 3333333333333333333333333333333333333333333333333333333
+0101 3333333333333333333333333333333333333333333333333333333
+0102 3333333333333333333333333333333333333333333333333333333
+0103 3333333333333333333333333333333333333333333333333333333
+0104 3333333333333333333333333333333333333333333333333333333
+0105 3333333333333333333333333333333333333333333333333333333
+0106 3333333333333333333333333333333333333333333333333333333
+0107 3333333333333333333333333333333333333333333333333333333
+0108 3333333333333333333333333333333333333333333333333333333
+0109 3333333333333333333333333333333333333333333333333333333
+0110 3333333333333333333333333333333333333333333333333333333
+0111 3333333333333333333333333333333333333333333333333333333
+0112 3333333333333333333333333333333333333333333333333333333
+0113 3333333333333333333333333333333333333333333333333333333
+0114 3333333333333333333333333333333333333333333333333333333
+0115 3333333333333333333333333333333333333333333333333333333
+0116 3333333333333333333333333333333333333333333333333333333
+0117 3333333333333333333333333333333333333333333333333333333
+0118 3333333333333333333333333333333333333333333333333333333
+0119 3333333333333333333333333333333333333333333333333333333
+0120 3333333333333333333333333333333333333333333333333333333
+0121 3333333333333333333333333333333333333333333333333333333
+0122 3333333333333333333333333333333333333333333333333333333
+0123 3333333333333333333333333333333333333333333333333333333
+0124 3333333333333333333333333333333333333333333333333333333
+0125 3333333333333333333333333333333333333333333333333333333
+0126 3333333333333333333333333333333333333333333333333333333
+0127 3333333333333333333333333333333333333333333333333333333
+0128 3333333333333333333333333333333333333333333333333333333
+0129 3333333333333333333333333333333333333333333333333333333
+0130 3333333333333333333333333333333333333333333333333333333
+0131 3333333333333333333333333333333333333333333333333333333
+0132 3333333333333333333333333333333333333333333333333333333
+0133 3333333333333333333333333333333333333333333333333333333
+0134 3333333333333333333333333333333333333333333333333333333
+0135 3333333333333333333333333333333333333333333333333333333
+0136 3333333333333333333333333333333333333333333333333333333
+0137 3333333333333333333333333333333333333333333333333333333
+0138 3333333333333333333333333333333333333333333333333333333
+0139 3333333333333333333333333333333333333333333333333333333
+0140 3333333333333333333333333333333333333333333333333333333
+0141 3333333333333333333333333333333333333333333333333333333
+0142 3333333333333333333333333333333333333333333333333333333
+0143 3333333333333333333333333333333333333333333333333333333
+0144 3333333333333333333333333333333333333333333333333333333
+0145 3333333333333333333333333333333333333333333333333333333
+0146 3333333333333333333333333333333333333333333333333333333
+0147 3333333333333333333333333333333333333333333333333333333
+0148 3333333333333333333333333333333333333333333333333333333
+0149 3333333333333333333333333333333333333333333333333333333
+0150 3333333333333333333333333333333333333333333333333333333
+0151 3333333333333333333333333333333333333333333333333333333
+0152 3333333333333333333333333333333333333333333333333333333
+0153 3333333333333333333333333333333333333333333333333333333
+0154 3333333333333333333333333333333333333333333333333333333
+0155 3333333333333333333333333333333333333333333333333333333
+0156 3333333333333333333333333333333333333333333333333333333
+0157 3333333333333333333333333333333333333333333333333333333
+0158 3333333333333333333333333333333333333333333333333333333
+0159 3333333333333333333333333333333333333333333333333333333
+0160 3333333333333333333333333333333333333333333333333333333
+0161 3333333333333333333333333333333333333333333333333333333
+0162 3333333333333333333333333333333333333333333333333333333
+0163 3333333333333333333333333333333333333333333333333333333
+0164 3333333333333333333333333333333333333333333333333333333
+0165 3333333333333333333333333333333333333333333333333333333
+0166 3333333333333333333333333333333333333333333333333333333
+0167 3333333333333333333333333333333333333333333333333333333
+0168 3333333333333333333333333333333333333333333333333333333
+0169 3333333333333333333333333333333333333333333333333333333
+0170 3333333333333333333333333333333333333333333333333333333
+0171 3333333333333333333333333333333333333333333333333333333
+0172 3333333333333333333333333333333333333333333333333333333
+0173 3333333333333333333333333333333333333333333333333333333
+0174 3333333333333333333333333333333333333333333333333333333
+0175 3333333333333333333333333333333333333333333333333333333
+0176 3333333333333333333333333333333333333333333333333333333
+0177 3333333333333333333333333333333333333333333333333333333
+0178 3333333333333333333333333333333333333333333333333333333
+0179 3333333333333333333333333333333333333333333333333333333
+0180 3333333333333333333333333333333333333333333333333333333
+0181 3333333333333333333333333333333333333333333333333333333
+0182 3333333333333333333333333333333333333333333333333333333
+0183 3333333333333333333333333333333333333333333333333333333
+0184 3333333333333333333333333333333333333333333333333333333
+0185 3333333333333333333333333333333333333333333333333333333
+0186 3333333333333333333333333333333333333333333333333333333
+0187 3333333333333333333333333333333333333333333333333333333
+0188 3333333333333333333333333333333333333333333333333333333
+0189 3333333333333333333333333333333333333333333333333333333
+0190 3333333333333333333333333333333333333333333333333333333
+0191 3333333333333333333333333333333333333333333333333333333
+0192 3333333333333333333333333333333333333333333333333333333
+0193 3333333333333333333333333333333333333333333333333333333
+0194 3333333333333333333333333333333333333333333333333333333
+0195 3333333333333333333333333333333333333333333333333333333
+0196 3333333333333333333333333333333333333333333333333333333
+0197 3333333333333333333333333333333333333333333333333333333
+0198 3333333333333333333333333333333333333333333333333333333
+0199 3333333333333333333333333333333333333333333333333333333
+0200 3333333333333333333333333333333333333333333333333333333
+0201 3333333333333333333333333333333333333333333333333333333
+0202 3333333333333333333333333333333333333333333333333333333
+0203 3333333333333333333333333333333333333333333333333333333
+0204 3333333333333333333333333333333333333333333333333333333
+0205 3333333333333333333333333333333333333333333333333333333
+0206 3333333333333333333333333333333333333333333333333333333
+0207 3333333333333333333333333333333333333333333333333333333
+0208 3333333333333333333333333333333333333333333333333333333
+0209 3333333333333333333333333333333333333333333333333333333
+0210 3333333333333333333333333333333333333333333333333333333
+0211 3333333333333333333333333333333333333333333333333333333
+0212 3333333333333333333333333333333333333333333333333333333
+0213 3333333333333333333333333333333333333333333333333333333
+0214 3333333333333333333333333333333333333333333333333333333
+0215 3333333333333333333333333333333333333333333333333333333
+0216 3333333333333333333333333333333333333333333333333333333
+0217 3333333333333333333333333333333333333333333333333333333
+0218 3333333333333333333333333333333333333333333333333333333
+0219 3333333333333333333333333333333333333333333333333333333
+0220 3333333333333333333333333333333333333333333333333333333
+0221 3333333333333333333333333333333333333333333333333333333
+0222 3333333333333333333333333333333333333333333333333333333
+0223 3333333333333333333333333333333333333333333333333333333
+0224 3333333333333333333333333333333333333333333333333333333
+0225 3333333333333333333333333333333333333333333333333333333
+0226 3333333333333333333333333333333333333333333333333333333
+0227 3333333333333333333333333333333333333333333333333333333
+0228 3333333333333333333333333333333333333333333333333333333
+0229 3333333333333333333333333333333333333333333333333333333
+0230 3333333333333333333333333333333333333333333333333333333
+0231 3333333333333333333333333333333333333333333333333333333
+0232 3333333333333333333333333333333333333333333333333333333
+0233 3333333333333333333333333333333333333333333333333333333
+0234 3333333333333333333333333333333333333333333333333333333
+0235 3333333333333333333333333333333333333333333333333333333
+0236 3333333333333333333333333333333333333333333333333333333
+0237 3333333333333333333333333333333333333333333333333333333
+0238 3333333333333333333333333333333333333333333333333333333
+0239 3333333333333333333333333333333333333333333333333333333
+0240 3333333333333333333333333333333333333333333333333333333
+0241 3333333333333333333333333333333333333333333333333333333
+0242 3333333333333333333333333333333333333333333333333333333
+0243 3333333333333333333333333333333333333333333333333333333
+0244 3333333333333333333333333333333333333333333333333333333
+0245 3333333333333333333333333333333333333333333333333333333
+0246 3333333333333333333333333333333333333333333333333333333
+0247 3333333333333333333333333333333333333333333333333333333
+0248 3333333333333333333333333333333333333333333333333333333
+0249 3333333333333333333333333333333333333333333333333333333
+0250 3333333333333333333333333333333333333333333333333333333
+0251 3333333333333333333333333333333333333333333333333333333
+0252 3333333333333333333333333333333333333333333333333333333
+0253 3333333333333333333333333333333333333333333333333333333
+0254 3333333333333333333333333333333333333333333333333333333
+0255 3333333333333333333333333333333333333333333333333333333
+0256 3333333333333333333333333333333333333333333333333333333
+0257 3333333333333333333333333333333333333333333333333333333
+0258 3333333333333333333333333333333333333333333333333333333
+0259 3333333333333333333333333333333333333333333333333333333
+0260 3333333333333333333333333333333333333333333333333333333
+0261 3333333333333333333333333333333333333333333333333333333
+0262 3333333333333333333333333333333333333333333333333333333
+0263 3333333333333333333333333333333333333333333333333333333
+0264 3333333333333333333333333333333333333333333333333333333
+0265 3333333333333333333333333333333333333333333333333333333
+0266 3333333333333333333333333333333333333333333333333333333
+0267 3333333333333333333333333333333333333333333333333333333
+0268 3333333333333333333333333333333333333333333333333333333
+0269 3333333333333333333333333333333333333333333333333333333
+0270 3333333333333333333333333333333333333333333333333333333
+0271 3333333333333333333333333333333333333333333333333333333
+0272 3333333333333333333333333333333333333333333333333333333
+0273 3333333333333333333333333333333333333333333333333333333
+0274 3333333333333333333333333333333333333333333333333333333
+0275 3333333333333333333333333333333333333333333333333333333
+0276 3333333333333333333333333333333333333333333333333333333
+0277 3333333333333333333333333333333333333333333333333333333
+0278 3333333333333333333333333333333333333333333333333333333
+0279 3333333333333333333333333333333333333333333333333333333
+0280 3333333333333333333333333333333333333333333333333333333
+0281 3333333333333333333333333333333333333333333333333333333
+0282 3333333333333333333333333333333333333333333333333333333
+0283 3333333333333333333333333333333333333333333333333333333
+0284 3333333333333333333333333333333333333333333333333333333
+0285 3333333333333333333333333333333333333333333333333333333
+0286 3333333333333333333333333333333333333333333333333333333
+0287 3333333333333333333333333333333333333333333333333333333
+0288 3333333333333333333333333333333333333333333333333333333
+0289 3333333333333333333333333333333333333333333333333333333
+0290 3333333333333333333333333333333333333333333333333333333
+0291 3333333333333333333333333333333333333333333333333333333
+0292 3333333333333333333333333333333333333333333333333333333
+0293 3333333333333333333333333333333333333333333333333333333
+0294 3333333333333333333333333333333333333333333333333333333
+0295 3333333333333333333333333333333333333333333333333333333
+0296 3333333333333333333333333333333333333333333333333333333
+0297 3333333333333333333333333333333333333333333333333333333
+0298 3333333333333333333333333333333333333333333333333333333
+0299 3333333333333333333333333333333333333333333333333333333
+0300 3333333333333333333333333333333333333333333333333333333
+0301 3333333333333333333333333333333333333333333333333333333
+0302 3333333333333333333333333333333333333333333333333333333
+0303 3333333333333333333333333333333333333333333333333333333
+0304 3333333333333333333333333333333333333333333333333333333
+0305 3333333333333333333333333333333333333333333333333333333
+0306 3333333333333333333333333333333333333333333333333333333
+0307 3333333333333333333333333333333333333333333333333333333
+0308 3333333333333333333333333333333333333333333333333333333
+0309 3333333333333333333333333333333333333333333333333333333
+0310 3333333333333333333333333333333333333333333333333333333
+0311 3333333333333333333333333333333333333333333333333333333
+0312 3333333333333333333333333333333333333333333333333333333
+0313 3333333333333333333333333333333333333333333333333333333
+0314 3333333333333333333333333333333333333333333333333333333
+0315 3333333333333333333333333333333333333333333333333333333
+0316 3333333333333333333333333333333333333333333333333333333
+0317 3333333333333333333333333333333333333333333333333333333
+0318 3333333333333333333333333333333333333333333333333333333
+0319 3333333333333333333333333333333333333333333333333333333
+0320 3333333333333333333333333333333333333333333333333333333
+0321 3333333333333333333333333333333333333333333333333333333
+0322 3333333333333333333333333333333333333333333333333333333
+0323 3333333333333333333333333333333333333333333333333333333
+0324 3333333333333333333333333333333333333333333333333333333
+0325 3333333333333333333333333333333333333333333333333333333
+0326 3333333333333333333333333333333333333333333333333333333
+0327 3333333333333333333333333333333333333333333333333333333
+0328 3333333333333333333333333333333333333333333333333333333
+0329 3333333333333333333333333333333333333333333333333333333
+0330 3333333333333333333333333333333333333333333333333333333
+0331 3333333333333333333333333333333333333333333333333333333
+0332 3333333333333333333333333333333333333333333333333333333
+0333 3333333333333333333333333333333333333333333333333333333
+0334 3333333333333333333333333333333333333333333333333333333
+0335 3333333333333333333333333333333333333333333333333333333
+0336 3333333333333333333333333333333333333333333333333333333
+0337 3333333333333333333333333333333333333333333333333333333
+0338 3333333333333333333333333333333333333333333333333333333
+0339 3333333333333333333333333333333333333333333333333333333
+0340 3333333333333333333333333333333333333333333333333333333
+0341 3333333333333333333333333333333333333333333333333333333
+0342 3333333333333333333333333333333333333333333333333333333
+0343 3333333333333333333333333333333333333333333333333333333
+0344 3333333333333333333333333333333333333333333333333333333
+0345 3333333333333333333333333333333333333333333333333333333
+0346 3333333333333333333333333333333333333333333333333333333
+0347 3333333333333333333333333333333333333333333333333333333
+0348 3333333333333333333333333333333333333333333333333333333
+0349 3333333333333333333333333333333333333333333333333333333
+0350 3333333333333333333333333333333333333333333333333333333
+0351 3333333333333333333333333333333333333333333333333333333
+0352 3333333333333333333333333333333333333333333333333333333
+0353 3333333333333333333333333333333333333333333333333333333
+0354 3333333333333333333333333333333333333333333333333333333
+0355 3333333333333333333333333333333333333333333333333333333
+0356 3333333333333333333333333333333333333333333333333333333
+0357 3333333333333333333333333333333333333333333333333333333
+0358 3333333333333333333333333333333333333333333333333333333
+0359 3333333333333333333333333333333333333333333333333333333
+0360 3333333333333333333333333333333333333333333333333333333
+0361 3333333333333333333333333333333333333333333333333333333
+0362 3333333333333333333333333333333333333333333333333333333
+0363 3333333333333333333333333333333333333333333333333333333
+0364 3333333333333333333333333333333333333333333333333333333
+0365 3333333333333333333333333333333333333333333333333333333
+0366 3333333333333333333333333333333333333333333333333333333
+0367 3333333333333333333333333333333333333333333333333333333
+0368 3333333333333333333333333333333333333333333333333333333
+0369 3333333333333333333333333333333333333333333333333333333
+0370 3333333333333333333333333333333333333333333333333333333
+0371 3333333333333333333333333333333333333333333333333333333
+0372 3333333333333333333333333333333333333333333333333333333
+0373 3333333333333333333333333333333333333333333333333333333
+0374 3333333333333333333333333333333333333333333333333333333
+0375 3333333333333333333333333333333333333333333333333333333
+0376 3333333333333333333333333333333333333333333333333333333
+0377 3333333333333333333333333333333333333333333333333333333
+0378 3333333333333333333333333333333333333333333333333333333
+0379 3333333333333333333333333333333333333333333333333333333
+0380 3333333333333333333333333333333333333333333333333333333
+0381 3333333333333333333333333333333333333333333333333333333
+0382 3333333333333333333333333333333333333333333333333333333
+0383 3333333333333333333333333333333333333333333333333333333
+0384 3333333333333333333333333333333333333333333333333333333
+0385 3333333333333333333333333333333333333333333333333333333
+0386 3333333333333333333333333333333333333333333333333333333
+0387 3333333333333333333333333333333333333333333333333333333
+0388 3333333333333333333333333333333333333333333333333333333
+0389 3333333333333333333333333333333333333333333333333333333
+0390 3333333333333333333333333333333333333333333333333333333
+0391 3333333333333333333333333333333333333333333333333333333
+0392 3333333333333333333333333333333333333333333333333333333
+0393 3333333333333333333333333333333333333333333333333333333
+0394 3333333333333333333333333333333333333333333333333333333
+0395 3333333333333333333333333333333333333333333333333333333
+0396 3333333333333333333333333333333333333333333333333333333
+0397 3333333333333333333333333333333333333333333333333333333
+0398 3333333333333333333333333333333333333333333333333333333
+0399 3333333333333333333333333333333333333333333333333333333
+0400 3333333333333333333333333333333333333333333333333333333
+0401 3333333333333333333333333333333333333333333333333333333
+0402 3333333333333333333333333333333333333333333333333333333
+0403 3333333333333333333333333333333333333333333333333333333
+0404 3333333333333333333333333333333333333333333333333333333
+0405 3333333333333333333333333333333333333333333333333333333
+0406 3333333333333333333333333333333333333333333333333333333
+0407 3333333333333333333333333333333333333333333333333333333
+0408 3333333333333333333333333333333333333333333333333333333
+0409 3333333333333333333333333333333333333333333333333333333
+0410 3333333333333333333333333333333333333333333333333333333
+0411 3333333333333333333333333333333333333333333333333333333
+0412 3333333333333333333333333333333333333333333333333333333
+0413 3333333333333333333333333333333333333333333333333333333
+0414 3333333333333333333333333333333333333333333333333333333
+0415 3333333333333333333333333333333333333333333333333333333
+0416 3333333333333333333333333333333333333333333333333333333
+0417 3333333333333333333333333333333333333333333333333333333
+0418 3333333333333333333333333333333333333333333333333333333
+0419 3333333333333333333333333333333333333333333333333333333
+0420 3333333333333333333333333333333333333333333333333333333
+0421 3333333333333333333333333333333333333333333333333333333
+0422 3333333333333333333333333333333333333333333333333333333
+0423 3333333333333333333333333333333333333333333333333333333
+0424 3333333333333333333333333333333333333333333333333333333
+0425 3333333333333333333333333333333333333333333333333333333
+0426 3333333333333333333333333333333333333333333333333333333
+0427 3333333333333333333333333333333333333333333333333333333
+0428 3333333333333333333333333333333333333333333333333333333
+0429 3333333333333333333333333333333333333333333333333333333
+0430 3333333333333333333333333333333333333333333333333333333
+0431 3333333333333333333333333333333333333333333333333333333
+0432 3333333333333333333333333333333333333333333333333333333
+0433 3333333333333333333333333333333333333333333333333333333
+0434 3333333333333333333333333333333333333333333333333333333
+0435 3333333333333333333333333333333333333333333333333333333
+0436 3333333333333333333333333333333333333333333333333333333
+0437 3333333333333333333333333333333333333333333333333333333
+0438 3333333333333333333333333333333333333333333333333333333
+0439 3333333333333333333333333333333333333333333333333333333
+0440 3333333333333333333333333333333333333333333333333333333
+0441 3333333333333333333333333333333333333333333333333333333
+0442 3333333333333333333333333333333333333333333333333333333
+0443 3333333333333333333333333333333333333333333333333333333
+0444 3333333333333333333333333333333333333333333333333333333
+0445 3333333333333333333333333333333333333333333333333333333
+0446 3333333333333333333333333333333333333333333333333333333
+0447 3333333333333333333333333333333333333333333333333333333
+0448 3333333333333333333333333333333333333333333333333333333
+0449 3333333333333333333333333333333333333333333333333333333
+0450 3333333333333333333333333333333333333333333333333333333
+0451 3333333333333333333333333333333333333333333333333333333
+0452 3333333333333333333333333333333333333333333333333333333
+0453 3333333333333333333333333333333333333333333333333333333
+0454 3333333333333333333333333333333333333333333333333333333
+0455 3333333333333333333333333333333333333333333333333333333
+0456 3333333333333333333333333333333333333333333333333333333
+0457 3333333333333333333333333333333333333333333333333333333
+0458 3333333333333333333333333333333333333333333333333333333
+0459 3333333333333333333333333333333333333333333333333333333
+0460 3333333333333333333333333333333333333333333333333333333
+0461 3333333333333333333333333333333333333333333333333333333
+0462 3333333333333333333333333333333333333333333333333333333
+0463 3333333333333333333333333333333333333333333333333333333
+0464 3333333333333333333333333333333333333333333333333333333
+0465 3333333333333333333333333333333333333333333333333333333
+0466 3333333333333333333333333333333333333333333333333333333
+0467 3333333333333333333333333333333333333333333333333333333
+0468 3333333333333333333333333333333333333333333333333333333
+0469 3333333333333333333333333333333333333333333333333333333
+0470 3333333333333333333333333333333333333333333333333333333
+0471 3333333333333333333333333333333333333333333333333333333
+0472 3333333333333333333333333333333333333333333333333333333
+0473 3333333333333333333333333333333333333333333333333333333
+0474 3333333333333333333333333333333333333333333333333333333
+0475 3333333333333333333333333333333333333333333333333333333
+0476 3333333333333333333333333333333333333333333333333333333
+0477 3333333333333333333333333333333333333333333333333333333
+0478 3333333333333333333333333333333333333333333333333333333
+0479 3333333333333333333333333333333333333333333333333333333
+0480 3333333333333333333333333333333333333333333333333333333
+0481 3333333333333333333333333333333333333333333333333333333
+0482 3333333333333333333333333333333333333333333333333333333
+0483 3333333333333333333333333333333333333333333333333333333
+0484 3333333333333333333333333333333333333333333333333333333
+0485 3333333333333333333333333333333333333333333333333333333
+0486 3333333333333333333333333333333333333333333333333333333
+0487 3333333333333333333333333333333333333333333333333333333
+0488 3333333333333333333333333333333333333333333333333333333
+0489 3333333333333333333333333333333333333333333333333333333
+0490 3333333333333333333333333333333333333333333333333333333
+0491 3333333333333333333333333333333333333333333333333333333
+0492 3333333333333333333333333333333333333333333333333333333
+0493 3333333333333333333333333333333333333333333333333333333
+0494 3333333333333333333333333333333333333333333333333333333
+0495 3333333333333333333333333333333333333333333333333333333
+0496 3333333333333333333333333333333333333333333333333333333
+0497 3333333333333333333333333333333333333333333333333333333
+0498 3333333333333333333333333333333333333333333333333333333
+0499 3333333333333333333333333333333333333333333333333333333
+0500 3333333333333333333333333333333333333333333333333333333
+0501 3333333333333333333333333333333333333333333333333333333
+0502 3333333333333333333333333333333333333333333333333333333
+0503 3333333333333333333333333333333333333333333333333333333
+0504 3333333333333333333333333333333333333333333333333333333
+0505 3333333333333333333333333333333333333333333333333333333
+0506 3333333333333333333333333333333333333333333333333333333
+0507 3333333333333333333333333333333333333333333333333333333
+0508 3333333333333333333333333333333333333333333333333333333
+0509 3333333333333333333333333333333333333333333333333333333
+0510 3333333333333333333333333333333333333333333333333333333
+0511 3333333333333333333333333333333333333333333333333333333
+0512 3333333333333333333333333333333333333333333333333333333
+0513 3333333333333333333333333333333333333333333333333333333
+0514 3333333333333333333333333333333333333333333333333333333
+0515 3333333333333333333333333333333333333333333333333333333
+0516 3333333333333333333333333333333333333333333333333333333
+0517 3333333333333333333333333333333333333333333333333333333
+0518 3333333333333333333333333333333333333333333333333333333
+0519 3333333333333333333333333333333333333333333333333333333
+0520 3333333333333333333333333333333333333333333333333333333
+0521 3333333333333333333333333333333333333333333333333333333
+0522 3333333333333333333333333333333333333333333333333333333
+0523 3333333333333333333333333333333333333333333333333333333
+0524 3333333333333333333333333333333333333333333333333333333
+0525 3333333333333333333333333333333333333333333333333333333
+0526 3333333333333333333333333333333333333333333333333333333
+0527 3333333333333333333333333333333333333333333333333333333
+0528 3333333333333333333333333333333333333333333333333333333
+0529 3333333333333333333333333333333333333333333333333333333
+0530 3333333333333333333333333333333333333333333333333333333
+0531 3333333333333333333333333333333333333333333333333333333
+0532 3333333333333333333333333333333333333333333333333333333
+0533 3333333333333333333333333333333333333333333333333333333
+0534 3333333333333333333333333333333333333333333333333333333
+0535 3333333333333333333333333333333333333333333333333333333
+0536 3333333333333333333333333333333333333333333333333333333
+0537 3333333333333333333333333333333333333333333333333333333
+0538 3333333333333333333333333333333333333333333333333333333
+0539 3333333333333333333333333333333333333333333333333333333
+0540 3333333333333333333333333333333333333333333333333333333
+0541 3333333333333333333333333333333333333333333333333333333
+0542 3333333333333333333333333333333333333333333333333333333
+0543 3333333333333333333333333333333333333333333333333333333
+0544 3333333333333333333333333333333333333333333333333333333
+0545 3333333333333333333333333333333333333333333333333333333
+0546 3333333333333333333333333333333333333333333333333333333
+0547 3333333333333333333333333333333333333333333333333333333
+0548 3333333333333333333333333333333333333333333333333333333
+0549 3333333333333333333333333333333333333333333333333333333
+0550 3333333333333333333333333333333333333333333333333333333
+0551 3333333333333333333333333333333333333333333333333333333
+0552 3333333333333333333333333333333333333333333333333333333
+0553 3333333333333333333333333333333333333333333333333333333
+0554 3333333333333333333333333333333333333333333333333333333
+0555 3333333333333333333333333333333333333333333333333333333
+0556 3333333333333333333333333333333333333333333333333333333
+0557 3333333333333333333333333333333333333333333333333333333
+0558 3333333333333333333333333333333333333333333333333333333
+0559 3333333333333333333333333333333333333333333333333333333
+0560 3333333333333333333333333333333333333333333333333333333
+0561 3333333333333333333333333333333333333333333333333333333
+0562 3333333333333333333333333333333333333333333333333333333
+0563 3333333333333333333333333333333333333333333333333333333
+0564 3333333333333333333333333333333333333333333333333333333
+0565 3333333333333333333333333333333333333333333333333333333
+0566 3333333333333333333333333333333333333333333333333333333
+0567 3333333333333333333333333333333333333333333333333333333
+0568 3333333333333333333333333333333333333333333333333333333
+0569 3333333333333333333333333333333333333333333333333333333
+0570 3333333333333333333333333333333333333333333333333333333
+0571 3333333333333333333333333333333333333333333333333333333
+0572 3333333333333333333333333333333333333333333333333333333
+0573 3333333333333333333333333333333333333333333333333333333
+0574 3333333333333333333333333333333333333333333333333333333
+0575 3333333333333333333333333333333333333333333333333333333
+0576 3333333333333333333333333333333333333333333333333333333
+0577 3333333333333333333333333333333333333333333333333333333
+0578 3333333333333333333333333333333333333333333333333333333
+0579 3333333333333333333333333333333333333333333333333333333
+0580 3333333333333333333333333333333333333333333333333333333
+0581 3333333333333333333333333333333333333333333333333333333
+0582 3333333333333333333333333333333333333333333333333333333
+0583 3333333333333333333333333333333333333333333333333333333
+0584 3333333333333333333333333333333333333333333333333333333
+0585 3333333333333333333333333333333333333333333333333333333
+0586 3333333333333333333333333333333333333333333333333333333
+0587 3333333333333333333333333333333333333333333333333333333
+0588 3333333333333333333333333333333333333333333333333333333
+0589 3333333333333333333333333333333333333333333333333333333
+0590 3333333333333333333333333333333333333333333333333333333
+0591 3333333333333333333333333333333333333333333333333333333
+0592 3333333333333333333333333333333333333333333333333333333
+0593 3333333333333333333333333333333333333333333333333333333
+0594 3333333333333333333333333333333333333333333333333333333
+0595 3333333333333333333333333333333333333333333333333333333
+0596 3333333333333333333333333333333333333333333333333333333
+0597 3333333333333333333333333333333333333333333333333333333
+0598 3333333333333333333333333333333333333333333333333333333
+0599 3333333333333333333333333333333333333333333333333333333
+0600 3333333333333333333333333333333333333333333333333333333
+0601 3333333333333333333333333333333333333333333333333333333
+0602 3333333333333333333333333333333333333333333333333333333
+0603 3333333333333333333333333333333333333333333333333333333
+0604 3333333333333333333333333333333333333333333333333333333
+0605 3333333333333333333333333333333333333333333333333333333
+0606 3333333333333333333333333333333333333333333333333333333
+0607 3333333333333333333333333333333333333333333333333333333
+0608 3333333333333333333333333333333333333333333333333333333
+0609 3333333333333333333333333333333333333333333333333333333
+0610 3333333333333333333333333333333333333333333333333333333
+0611 3333333333333333333333333333333333333333333333333333333
+0612 3333333333333333333333333333333333333333333333333333333
+0613 3333333333333333333333333333333333333333333333333333333
+0614 3333333333333333333333333333333333333333333333333333333
+0615 3333333333333333333333333333333333333333333333333333333
+0616 3333333333333333333333333333333333333333333333333333333
+0617 3333333333333333333333333333333333333333333333333333333
+0618 3333333333333333333333333333333333333333333333333333333
+0619 3333333333333333333333333333333333333333333333333333333
+0620 3333333333333333333333333333333333333333333333333333333
+0621 3333333333333333333333333333333333333333333333333333333
+0622 3333333333333333333333333333333333333333333333333333333
+0623 3333333333333333333333333333333333333333333333333333333
+0624 3333333333333333333333333333333333333333333333333333333
+0625 3333333333333333333333333333333333333333333333333333333
+0626 3333333333333333333333333333333333333333333333333333333
+0627 3333333333333333333333333333333333333333333333333333333
+0628 3333333333333333333333333333333333333333333333333333333
+0629 3333333333333333333333333333333333333333333333333333333
+0630 3333333333333333333333333333333333333333333333333333333
+0631 3333333333333333333333333333333333333333333333333333333
+0632 3333333333333333333333333333333333333333333333333333333
+0633 3333333333333333333333333333333333333333333333333333333
+0634 3333333333333333333333333333333333333333333333333333333
+0635 3333333333333333333333333333333333333333333333333333333
+0636 3333333333333333333333333333333333333333333333333333333
+0637 3333333333333333333333333333333333333333333333333333333
+0638 3333333333333333333333333333333333333333333333333333333
+0639 3333333333333333333333333333333333333333333333333333333
+0640 3333333333333333333333333333333333333333333333333333333
+0641 3333333333333333333333333333333333333333333333333333333
+0642 3333333333333333333333333333333333333333333333333333333
+0643 3333333333333333333333333333333333333333333333333333333
+0644 3333333333333333333333333333333333333333333333333333333
+0645 3333333333333333333333333333333333333333333333333333333
+0646 3333333333333333333333333333333333333333333333333333333
+0647 3333333333333333333333333333333333333333333333333333333
+0648 3333333333333333333333333333333333333333333333333333333
+0649 3333333333333333333333333333333333333333333333333333333
+0650 3333333333333333333333333333333333333333333333333333333
+0651 3333333333333333333333333333333333333333333333333333333
+0652 3333333333333333333333333333333333333333333333333333333
+0653 3333333333333333333333333333333333333333333333333333333
+0654 3333333333333333333333333333333333333333333333333333333
+0655 3333333333333333333333333333333333333333333333333333333
+0656 3333333333333333333333333333333333333333333333333333333
+0657 3333333333333333333333333333333333333333333333333333333
+0658 3333333333333333333333333333333333333333333333333333333
+0659 3333333333333333333333333333333333333333333333333333333
+0660 3333333333333333333333333333333333333333333333333333333
+0661 3333333333333333333333333333333333333333333333333333333
+0662 3333333333333333333333333333333333333333333333333333333
+0663 3333333333333333333333333333333333333333333333333333333
+0664 3333333333333333333333333333333333333333333333333333333
+0665 3333333333333333333333333333333333333333333333333333333
+0666 3333333333333333333333333333333333333333333333333333333
+0667 3333333333333333333333333333333333333333333333333333333
+0668 3333333333333333333333333333333333333333333333333333333
+0669 3333333333333333333333333333333333333333333333333333333
+0670 3333333333333333333333333333333333333333333333333333333
+0671 3333333333333333333333333333333333333333333333333333333
+0672 3333333333333333333333333333333333333333333333333333333
+0673 3333333333333333333333333333333333333333333333333333333
+0674 3333333333333333333333333333333333333333333333333333333
+0675 3333333333333333333333333333333333333333333333333333333
+0676 3333333333333333333333333333333333333333333333333333333
+0677 3333333333333333333333333333333333333333333333333333333
+0678 3333333333333333333333333333333333333333333333333333333
+0679 3333333333333333333333333333333333333333333333333333333
+0680 3333333333333333333333333333333333333333333333333333333
+0681 3333333333333333333333333333333333333333333333333333333
+0682 3333333333333333333333333333333333333333333333333333333
+0683 3333333333333333333333333333333333333333333333333333333
+0684 3333333333333333333333333333333333333333333333333333333
+0685 3333333333333333333333333333333333333333333333333333333
+0686 3333333333333333333333333333333333333333333333333333333
+0687 3333333333333333333333333333333333333333333333333333333
+0688 3333333333333333333333333333333333333333333333333333333
+0689 3333333333333333333333333333333333333333333333333333333
+0690 3333333333333333333333333333333333333333333333333333333
+0691 3333333333333333333333333333333333333333333333333333333
+0692 3333333333333333333333333333333333333333333333333333333
+0693 3333333333333333333333333333333333333333333333333333333
+0694 3333333333333333333333333333333333333333333333333333333
+0695 3333333333333333333333333333333333333333333333333333333
+0696 3333333333333333333333333333333333333333333333333333333
+0697 3333333333333333333333333333333333333333333333333333333
+0698 3333333333333333333333333333333333333333333333333333333
+0699 3333333333333333333333333333333333333333333333333333333
+0700 3333333333333333333333333333333333333333333333333333333
+0701 3333333333333333333333333333333333333333333333333333333
+0702 3333333333333333333333333333333333333333333333333333333
+0703 3333333333333333333333333333333333333333333333333333333
+0704 3333333333333333333333333333333333333333333333333333333
+0705 3333333333333333333333333333333333333333333333333333333
+0706 3333333333333333333333333333333333333333333333333333333
+0707 3333333333333333333333333333333333333333333333333333333
+0708 3333333333333333333333333333333333333333333333333333333
+0709 3333333333333333333333333333333333333333333333333333333
+0710 3333333333333333333333333333333333333333333333333333333
+0711 3333333333333333333333333333333333333333333333333333333
+0712 3333333333333333333333333333333333333333333333333333333
+0713 3333333333333333333333333333333333333333333333333333333
+0714 3333333333333333333333333333333333333333333333333333333
+0715 3333333333333333333333333333333333333333333333333333333
+0716 3333333333333333333333333333333333333333333333333333333
+0717 3333333333333333333333333333333333333333333333333333333
+0718 3333333333333333333333333333333333333333333333333333333
+0719 3333333333333333333333333333333333333333333333333333333
+0720 3333333333333333333333333333333333333333333333333333333
+0721 3333333333333333333333333333333333333333333333333333333
+0722 3333333333333333333333333333333333333333333333333333333
+0723 3333333333333333333333333333333333333333333333333333333
+0724 3333333333333333333333333333333333333333333333333333333
+0725 3333333333333333333333333333333333333333333333333333333
+0726 3333333333333333333333333333333333333333333333333333333
+0727 3333333333333333333333333333333333333333333333333333333
+0728 3333333333333333333333333333333333333333333333333333333
+0729 3333333333333333333333333333333333333333333333333333333
+0730 3333333333333333333333333333333333333333333333333333333
+0731 3333333333333333333333333333333333333333333333333333333
+0732 3333333333333333333333333333333333333333333333333333333
+0733 3333333333333333333333333333333333333333333333333333333
+0734 3333333333333333333333333333333333333333333333333333333
+0735 3333333333333333333333333333333333333333333333333333333
+0736 3333333333333333333333333333333333333333333333333333333
+0737 3333333333333333333333333333333333333333333333333333333
+0738 3333333333333333333333333333333333333333333333333333333
+0739 3333333333333333333333333333333333333333333333333333333
+0740 3333333333333333333333333333333333333333333333333333333
+0741 3333333333333333333333333333333333333333333333333333333
+0742 3333333333333333333333333333333333333333333333333333333
+0743 3333333333333333333333333333333333333333333333333333333
+0744 3333333333333333333333333333333333333333333333333333333
+0745 3333333333333333333333333333333333333333333333333333333
+0746 3333333333333333333333333333333333333333333333333333333
+0747 3333333333333333333333333333333333333333333333333333333
+0748 3333333333333333333333333333333333333333333333333333333
+0749 3333333333333333333333333333333333333333333333333333333
+0750 3333333333333333333333333333333333333333333333333333333
+0751 3333333333333333333333333333333333333333333333333333333
+0752 3333333333333333333333333333333333333333333333333333333
+0753 3333333333333333333333333333333333333333333333333333333
+0754 3333333333333333333333333333333333333333333333333333333
+0755 3333333333333333333333333333333333333333333333333333333
+0756 3333333333333333333333333333333333333333333333333333333
+0757 3333333333333333333333333333333333333333333333333333333
+0758 3333333333333333333333333333333333333333333333333333333
+0759 3333333333333333333333333333333333333333333333333333333
+0760 3333333333333333333333333333333333333333333333333333333
+0761 3333333333333333333333333333333333333333333333333333333
+0762 3333333333333333333333333333333333333333333333333333333
+0763 3333333333333333333333333333333333333333333333333333333
+0764 3333333333333333333333333333333333333333333333333333333
+0765 3333333333333333333333333333333333333333333333333333333
+0766 3333333333333333333333333333333333333333333333333333333
+0767 3333333333333333333333333333333333333333333333333333333
+0768 3333333333333333333333333333333333333333333333333333333
+0769 3333333333333333333333333333333333333333333333333333333
+0770 3333333333333333333333333333333333333333333333333333333
+0771 3333333333333333333333333333333333333333333333333333333
+0772 3333333333333333333333333333333333333333333333333333333
+0773 3333333333333333333333333333333333333333333333333333333
+0774 3333333333333333333333333333333333333333333333333333333
+0775 3333333333333333333333333333333333333333333333333333333
+0776 3333333333333333333333333333333333333333333333333333333
+0777 3333333333333333333333333333333333333333333333333333333
+0778 3333333333333333333333333333333333333333333333333333333
+0779 3333333333333333333333333333333333333333333333333333333
+0780 3333333333333333333333333333333333333333333333333333333
+0781 3333333333333333333333333333333333333333333333333333333
+0782 3333333333333333333333333333333333333333333333333333333
+0783 3333333333333333333333333333333333333333333333333333333
+0784 3333333333333333333333333333333333333333333333333333333
+0785 3333333333333333333333333333333333333333333333333333333
+0786 3333333333333333333333333333333333333333333333333333333
+0787 3333333333333333333333333333333333333333333333333333333
+0788 3333333333333333333333333333333333333333333333333333333
+0789 3333333333333333333333333333333333333333333333333333333
+0790 3333333333333333333333333333333333333333333333333333333
+0791 3333333333333333333333333333333333333333333333333333333
+0792 3333333333333333333333333333333333333333333333333333333
+0793 3333333333333333333333333333333333333333333333333333333
+0794 3333333333333333333333333333333333333333333333333333333
+0795 3333333333333333333333333333333333333333333333333333333
+0796 3333333333333333333333333333333333333333333333333333333
+0797 3333333333333333333333333333333333333333333333333333333
+0798 3333333333333333333333333333333333333333333333333333333
+0799 3333333333333333333333333333333333333333333333333333333
+0800 3333333333333333333333333333333333333333333333333333333
+0801 3333333333333333333333333333333333333333333333333333333
+0802 3333333333333333333333333333333333333333333333333333333
+0803 3333333333333333333333333333333333333333333333333333333
+0804 3333333333333333333333333333333333333333333333333333333
+0805 3333333333333333333333333333333333333333333333333333333
+0806 3333333333333333333333333333333333333333333333333333333
+0807 3333333333333333333333333333333333333333333333333333333
+0808 3333333333333333333333333333333333333333333333333333333
+0809 3333333333333333333333333333333333333333333333333333333
+0810 3333333333333333333333333333333333333333333333333333333
+0811 3333333333333333333333333333333333333333333333333333333
+0812 3333333333333333333333333333333333333333333333333333333
+0813 3333333333333333333333333333333333333333333333333333333
+0814 3333333333333333333333333333333333333333333333333333333
+0815 3333333333333333333333333333333333333333333333333333333
+0816 3333333333333333333333333333333333333333333333333333333
+0817 3333333333333333333333333333333333333333333333333333333
+0818 3333333333333333333333333333333333333333333333333333333
+0819 3333333333333333333333333333333333333333333333333333333
+0820 3333333333333333333333333333333333333333333333333333333
+0821 3333333333333333333333333333333333333333333333333333333
+0822 3333333333333333333333333333333333333333333333333333333
+0823 3333333333333333333333333333333333333333333333333333333
+0824 3333333333333333333333333333333333333333333333333333333
+0825 3333333333333333333333333333333333333333333333333333333
+0826 3333333333333333333333333333333333333333333333333333333
+0827 3333333333333333333333333333333333333333333333333333333
+0828 3333333333333333333333333333333333333333333333333333333
+0829 3333333333333333333333333333333333333333333333333333333
+0830 3333333333333333333333333333333333333333333333333333333
+0831 3333333333333333333333333333333333333333333333333333333
+0832 3333333333333333333333333333333333333333333333333333333
+0833 3333333333333333333333333333333333333333333333333333333
+0834 3333333333333333333333333333333333333333333333333333333
+0835 3333333333333333333333333333333333333333333333333333333
+0836 3333333333333333333333333333333333333333333333333333333
+0837 3333333333333333333333333333333333333333333333333333333
+0838 3333333333333333333333333333333333333333333333333333333
+0839 3333333333333333333333333333333333333333333333333333333
+0840 3333333333333333333333333333333333333333333333333333333
+0841 3333333333333333333333333333333333333333333333333333333
+0842 3333333333333333333333333333333333333333333333333333333
+0843 3333333333333333333333333333333333333333333333333333333
+0844 3333333333333333333333333333333333333333333333333333333
+0845 3333333333333333333333333333333333333333333333333333333
+0846 3333333333333333333333333333333333333333333333333333333
+0847 3333333333333333333333333333333333333333333333333333333
+0848 3333333333333333333333333333333333333333333333333333333
+0849 3333333333333333333333333333333333333333333333333333333
+0850 3333333333333333333333333333333333333333333333333333333
+0851 3333333333333333333333333333333333333333333333333333333
+0852 3333333333333333333333333333333333333333333333333333333
+0853 3333333333333333333333333333333333333333333333333333333
+0854 3333333333333333333333333333333333333333333333333333333
+0855 3333333333333333333333333333333333333333333333333333333
+0856 3333333333333333333333333333333333333333333333333333333
+0857 3333333333333333333333333333333333333333333333333333333
+0858 3333333333333333333333333333333333333333333333333333333
+0859 3333333333333333333333333333333333333333333333333333333
+0860 3333333333333333333333333333333333333333333333333333333
+0861 3333333333333333333333333333333333333333333333333333333
+0862 3333333333333333333333333333333333333333333333333333333
+0863 3333333333333333333333333333333333333333333333333333333
+0864 3333333333333333333333333333333333333333333333333333333
+0865 3333333333333333333333333333333333333333333333333333333
+0866 3333333333333333333333333333333333333333333333333333333
+0867 3333333333333333333333333333333333333333333333333333333
+0868 3333333333333333333333333333333333333333333333333333333
+0869 3333333333333333333333333333333333333333333333333333333
+0870 3333333333333333333333333333333333333333333333333333333
+0871 3333333333333333333333333333333333333333333333333333333
+0872 3333333333333333333333333333333333333333333333333333333
+0873 3333333333333333333333333333333333333333333333333333333
+0874 3333333333333333333333333333333333333333333333333333333
+0875 3333333333333333333333333333333333333333333333333333333
+0876 3333333333333333333333333333333333333333333333333333333
+0877 3333333333333333333333333333333333333333333333333333333
+0878 3333333333333333333333333333333333333333333333333333333
+0879 3333333333333333333333333333333333333333333333333333333
+0880 3333333333333333333333333333333333333333333333333333333
+0881 3333333333333333333333333333333333333333333333333333333
+0882 3333333333333333333333333333333333333333333333333333333
+0883 3333333333333333333333333333333333333333333333333333333
+0884 3333333333333333333333333333333333333333333333333333333
+0885 3333333333333333333333333333333333333333333333333333333
+0886 3333333333333333333333333333333333333333333333333333333
+0887 3333333333333333333333333333333333333333333333333333333
+0888 3333333333333333333333333333333333333333333333333333333
+0889 3333333333333333333333333333333333333333333333333333333
+0890 3333333333333333333333333333333333333333333333333333333
+0891 3333333333333333333333333333333333333333333333333333333
+0892 3333333333333333333333333333333333333333333333333333333
+0893 3333333333333333333333333333333333333333333333333333333
+0894 3333333333333333333333333333333333333333333333333333333
+0895 3333333333333333333333333333333333333333333333333333333
+0896 3333333333333333333333333333333333333333333333333333333
+0897 3333333333333333333333333333333333333333333333333333333
+0898 3333333333333333333333333333333333333333333333333333333
+0899 3333333333333333333333333333333333333333333333333333333
+0900 3333333333333333333333333333333333333333333333333333333
+0901 3333333333333333333333333333333333333333333333333333333
+0902 3333333333333333333333333333333333333333333333333333333
+0903 3333333333333333333333333333333333333333333333333333333
+0904 3333333333333333333333333333333333333333333333333333333
+0905 3333333333333333333333333333333333333333333333333333333
+0906 3333333333333333333333333333333333333333333333333333333
+0907 3333333333333333333333333333333333333333333333333333333
+0908 3333333333333333333333333333333333333333333333333333333
+0909 3333333333333333333333333333333333333333333333333333333
+0910 3333333333333333333333333333333333333333333333333333333
+0911 3333333333333333333333333333333333333333333333333333333
+0912 3333333333333333333333333333333333333333333333333333333
+0913 3333333333333333333333333333333333333333333333333333333
+0914 3333333333333333333333333333333333333333333333333333333
+0915 3333333333333333333333333333333333333333333333333333333
+0916 3333333333333333333333333333333333333333333333333333333
+0917 3333333333333333333333333333333333333333333333333333333
+0918 3333333333333333333333333333333333333333333333333333333
+0919 3333333333333333333333333333333333333333333333333333333
+0920 3333333333333333333333333333333333333333333333333333333
+0921 3333333333333333333333333333333333333333333333333333333
+0922 3333333333333333333333333333333333333333333333333333333
+0923 3333333333333333333333333333333333333333333333333333333
+0924 3333333333333333333333333333333333333333333333333333333
+0925 3333333333333333333333333333333333333333333333333333333
+0926 3333333333333333333333333333333333333333333333333333333
+0927 3333333333333333333333333333333333333333333333333333333
+0928 3333333333333333333333333333333333333333333333333333333
+0929 3333333333333333333333333333333333333333333333333333333
+0930 3333333333333333333333333333333333333333333333333333333
+0931 3333333333333333333333333333333333333333333333333333333
+0932 3333333333333333333333333333333333333333333333333333333
+0933 3333333333333333333333333333333333333333333333333333333
+0934 3333333333333333333333333333333333333333333333333333333
+0935 3333333333333333333333333333333333333333333333333333333
+0936 3333333333333333333333333333333333333333333333333333333
+0937 3333333333333333333333333333333333333333333333333333333
+0938 3333333333333333333333333333333333333333333333333333333
+0939 3333333333333333333333333333333333333333333333333333333
+0940 3333333333333333333333333333333333333333333333333333333
+0941 3333333333333333333333333333333333333333333333333333333
+0942 3333333333333333333333333333333333333333333333333333333
+0943 3333333333333333333333333333333333333333333333333333333
+0944 3333333333333333333333333333333333333333333333333333333
+0945 3333333333333333333333333333333333333333333333333333333
+0946 3333333333333333333333333333333333333333333333333333333
+0947 3333333333333333333333333333333333333333333333333333333
+0948 3333333333333333333333333333333333333333333333333333333
+0949 3333333333333333333333333333333333333333333333333333333
+0950 3333333333333333333333333333333333333333333333333333333
+0951 3333333333333333333333333333333333333333333333333333333
+0952 3333333333333333333333333333333333333333333333333333333
+0953 3333333333333333333333333333333333333333333333333333333
+0954 3333333333333333333333333333333333333333333333333333333
+0955 3333333333333333333333333333333333333333333333333333333
+0956 3333333333333333333333333333333333333333333333333333333
+0957 3333333333333333333333333333333333333333333333333333333
+0958 3333333333333333333333333333333333333333333333333333333
+0959 3333333333333333333333333333333333333333333333333333333
+0960 3333333333333333333333333333333333333333333333333333333
+0961 3333333333333333333333333333333333333333333333333333333
+0962 3333333333333333333333333333333333333333333333333333333
+0963 3333333333333333333333333333333333333333333333333333333
+0964 3333333333333333333333333333333333333333333333333333333
+0965 3333333333333333333333333333333333333333333333333333333
+0966 3333333333333333333333333333333333333333333333333333333
+0967 3333333333333333333333333333333333333333333333333333333
+0968 3333333333333333333333333333333333333333333333333333333
+0969 3333333333333333333333333333333333333333333333333333333
+0970 3333333333333333333333333333333333333333333333333333333
+0971 3333333333333333333333333333333333333333333333333333333
+0972 3333333333333333333333333333333333333333333333333333333
+0973 3333333333333333333333333333333333333333333333333333333
+0974 3333333333333333333333333333333333333333333333333333333
+0975 3333333333333333333333333333333333333333333333333333333
+0976 3333333333333333333333333333333333333333333333333333333
+0977 3333333333333333333333333333333333333333333333333333333
+0978 3333333333333333333333333333333333333333333333333333333
+0979 3333333333333333333333333333333333333333333333333333333
+0980 3333333333333333333333333333333333333333333333333333333
+0981 3333333333333333333333333333333333333333333333333333333
+0982 3333333333333333333333333333333333333333333333333333333
+0983 3333333333333333333333333333333333333333333333333333333
+0984 3333333333333333333333333333333333333333333333333333333
+0985 3333333333333333333333333333333333333333333333333333333
+0986 3333333333333333333333333333333333333333333333333333333
+0987 3333333333333333333333333333333333333333333333333333333
+0988 3333333333333333333333333333333333333333333333333333333
+0989 3333333333333333333333333333333333333333333333333333333
+0990 3333333333333333333333333333333333333333333333333333333
+0991 3333333333333333333333333333333333333333333333333333333
+0992 3333333333333333333333333333333333333333333333333333333
+0993 3333333333333333333333333333333333333333333333333333333
+0994 3333333333333333333333333333333333333333333333333333333
+0995 3333333333333333333333333333333333333333333333333333333
+0996 3333333333333333333333333333333333333333333333333333333
+0997 3333333333333333333333333333333333333333333333333333333
+0998 3333333333333333333333333333333333333333333333333333333
+0999 3333333333333333333333333333333333333333333333333333333
+1000 3333333333333333333333333333333333333333333333333333333
+1001 3333333333333333333333333333333333333333333333333333333
+1002 3333333333333333333333333333333333333333333333333333333
+1003 3333333333333333333333333333333333333333333333333333333
+1004 3333333333333333333333333333333333333333333333333333333
+1005 3333333333333333333333333333333333333333333333333333333
+1006 3333333333333333333333333333333333333333333333333333333
+1007 3333333333333333333333333333333333333333333333333333333
+1008 3333333333333333333333333333333333333333333333333333333
+1009 3333333333333333333333333333333333333333333333333333333
+1010 3333333333333333333333333333333333333333333333333333333
+1011 3333333333333333333333333333333333333333333333333333333
+1012 3333333333333333333333333333333333333333333333333333333
+1013 3333333333333333333333333333333333333333333333333333333
+1014 3333333333333333333333333333333333333333333333333333333
+1015 3333333333333333333333333333333333333333333333333333333
+1016 3333333333333333333333333333333333333333333333333333333
+1017 3333333333333333333333333333333333333333333333333333333
+1018 3333333333333333333333333333333333333333333333333333333
+1019 3333333333333333333333333333333333333333333333333333333
+1020 3333333333333333333333333333333333333333333333333333333
+1021 3333333333333333333333333333333333333333333333333333333
+1022 3333333333333333333333333333333333333333333333333333333
+1023 3333333333333333333333333333333333333333333333333333333
+1024 3333333333333333333333333333333333333333333333333333333
+1025 3333333333333333333333333333333333333333333333333333333
+1026 3333333333333333333333333333333333333333333333333333333
+1027 3333333333333333333333333333333333333333333333333333333
+1028 3333333333333333333333333333333333333333333333333333333
+1029 3333333333333333333333333333333333333333333333333333333
+1030 3333333333333333333333333333333333333333333333333333333
+1031 3333333333333333333333333333333333333333333333333333333
+1032 3333333333333333333333333333333333333333333333333333333
+1033 3333333333333333333333333333333333333333333333333333333
+1034 3333333333333333333333333333333333333333333333333333333
+1035 3333333333333333333333333333333333333333333333333333333
+1036 3333333333333333333333333333333333333333333333333333333
+1037 3333333333333333333333333333333333333333333333333333333
+1038 3333333333333333333333333333333333333333333333333333333
+1039 3333333333333333333333333333333333333333333333333333333
+1040 3333333333333333333333333333333333333333333333333333333
+1041 3333333333333333333333333333333333333333333333333333333
+1042 3333333333333333333333333333333333333333333333333333333
+1043 3333333333333333333333333333333333333333333333333333333
+1044 3333333333333333333333333333333333333333333333333333333
+1045 3333333333333333333333333333333333333333333333333333333
+1046 3333333333333333333333333333333333333333333333333333333
+1047 3333333333333333333333333333333333333333333333333333333
+1048 3333333333333333333333333333333333333333333333333333333
+1049 3333333333333333333333333333333333333333333333333333333
+1050 3333333333333333333333333333333333333333333333333333333
+1051 3333333333333333333333333333333333333333333333333333333
+1052 3333333333333333333333333333333333333333333333333333333
+1053 3333333333333333333333333333333333333333333333333333333
+1054 3333333333333333333333333333333333333333333333333333333
+1055 3333333333333333333333333333333333333333333333333333333
+1056 3333333333333333333333333333333333333333333333333333333
+1057 3333333333333333333333333333333333333333333333333333333
+1058 3333333333333333333333333333333333333333333333333333333
+1059 3333333333333333333333333333333333333333333333333333333
+1060 3333333333333333333333333333333333333333333333333333333
+1061 3333333333333333333333333333333333333333333333333333333
+1062 3333333333333333333333333333333333333333333333333333333
+1063 3333333333333333333333333333333333333333333333333333333
+1064 3333333333333333333333333333333333333333333333333333333
+1065 3333333333333333333333333333333333333333333333333333333
+1066 3333333333333333333333333333333333333333333333333333333
+1067 3333333333333333333333333333333333333333333333333333333
+1068 3333333333333333333333333333333333333333333333333333333
+1069 3333333333333333333333333333333333333333333333333333333
+1070 3333333333333333333333333333333333333333333333333333333
+1071 3333333333333333333333333333333333333333333333333333333
+1072 3333333333333333333333333333333333333333333333333333333
+1073 3333333333333333333333333333333333333333333333333333333
+1074 3333333333333333333333333333333333333333333333333333333
+1075 3333333333333333333333333333333333333333333333333333333
+1076 3333333333333333333333333333333333333333333333333333333
+1077 3333333333333333333333333333333333333333333333333333333
+1078 3333333333333333333333333333333333333333333333333333333
+1079 3333333333333333333333333333333333333333333333333333333
+1080 3333333333333333333333333333333333333333333333333333333
+1081 3333333333333333333333333333333333333333333333333333333
+1082 3333333333333333333333333333333333333333333333333333333
+1083 3333333333333333333333333333333333333333333333333333333
+1084 3333333333333333333333333333333333333333333333333333333
+1085 3333333333333333333333333333333333333333333333333333333
+1086 3333333333333333333333333333333333333333333333333333333
+1087 3333333333333333333333333333333333333333333333333333333
+1088 3333333333333333333333333333333333333333333333333333333
+1089 3333333333333333333333333333333333333333333333333333333
+1090 3333333333333333333333333333333333333333333333333333333
+1091 3333333333333333333333333333333333333333333333333333333
+1092 3333333333333333333333333333333333333333333333333333333
+1093 3333333333333333333333333333333333333333333333333333333
+1094 3333333333333333333333333333333333333333333333333333333
+1095 3333333333333333333333333333333333333333333333333333333
+1096 3333333333333333333333333333333333333333333333333333333
+1097 3333333333333333333333333333333333333333333333333333333
+1098 3333333333333333333333333333333333333333333333333333333
+1099 3333333333333333333333333333333333333333333333333333333
+1100 3333333333333333333333333333333333333333333333333333333
+1101 3333333333333333333333333333333333333333333333333333333
+1102 3333333333333333333333333333333333333333333333333333333
+1103 3333333333333333333333333333333333333333333333333333333
+1104 3333333333333333333333333333333333333333333333333333333
+1105 3333333333333333333333333333333333333333333333333333333
+1106 3333333333333333333333333333333333333333333333333333333
+1107 3333333333333333333333333333333333333333333333333333333
+1108 3333333333333333333333333333333333333333333333333333333
+1109 3333333333333333333333333333333333333333333333333333333
+1110 3333333333333333333333333333333333333333333333333333333
+1111 3333333333333333333333333333333333333333333333333333333
+1112 3333333333333333333333333333333333333333333333333333333
+1113 3333333333333333333333333333333333333333333333333333333
+1114 3333333333333333333333333333333333333333333333333333333
+1115 3333333333333333333333333333333333333333333333333333333
+1116 3333333333333333333333333333333333333333333333333333333
+1117 3333333333333333333333333333333333333333333333333333333
+1118 3333333333333333333333333333333333333333333333333333333
+1119 3333333333333333333333333333333333333333333333333333333
+1120 3333333333333333333333333333333333333333333333333333333
+1121 3333333333333333333333333333333333333333333333333333333
+1122 3333333333333333333333333333333333333333333333333333333
+1123 3333333333333333333333333333333333333333333333333333333
+1124 3333333333333333333333333333333333333333333333333333333
+1125 3333333333333333333333333333333333333333333333333333333
+1126 3333333333333333333333333333333333333333333333333333333
+1127 3333333333333333333333333333333333333333333333333333333
+1128 3333333333333333333333333333333333333333333333333333333
+1129 3333333333333333333333333333333333333333333333333333333
+1130 3333333333333333333333333333333333333333333333333333333
+1131 3333333333333333333333333333333333333333333333333333333
+1132 3333333333333333333333333333333333333333333333333333333
+1133 3333333333333333333333333333333333333333333333333333333
+1134 3333333333333333333333333333333333333333333333333333333
+1135 3333333333333333333333333333333333333333333333333333333
+1136 3333333333333333333333333333333333333333333333333333333
+1137 3333333333333333333333333333333333333333333333333333333
+1138 3333333333333333333333333333333333333333333333333333333
+1139 3333333333333333333333333333333333333333333333333333333
+1140 3333333333333333333333333333333333333333333333333333333
+1141 3333333333333333333333333333333333333333333333333333333
+1142 3333333333333333333333333333333333333333333333333333333
+1143 3333333333333333333333333333333333333333333333333333333
+1144 3333333333333333333333333333333333333333333333333333333
+1145 3333333333333333333333333333333333333333333333333333333
+1146 3333333333333333333333333333333333333333333333333333333
+1147 3333333333333333333333333333333333333333333333333333333
+1148 3333333333333333333333333333333333333333333333333333333
+1149 3333333333333333333333333333333333333333333333333333333
+1150 3333333333333333333333333333333333333333333333333333333
+1151 3333333333333333333333333333333333333333333333333333333
+1152 3333333333333333333333333333333333333333333333333333333
+1153 3333333333333333333333333333333333333333333333333333333
+1154 3333333333333333333333333333333333333333333333333333333
+1155 3333333333333333333333333333333333333333333333333333333
+1156 3333333333333333333333333333333333333333333333333333333
+1157 3333333333333333333333333333333333333333333333333333333
+1158 3333333333333333333333333333333333333333333333333333333
+1159 3333333333333333333333333333333333333333333333333333333
+1160 3333333333333333333333333333333333333333333333333333333
+1161 3333333333333333333333333333333333333333333333333333333
+1162 3333333333333333333333333333333333333333333333333333333
+1163 3333333333333333333333333333333333333333333333333333333
+1164 3333333333333333333333333333333333333333333333333333333
+1165 3333333333333333333333333333333333333333333333333333333
+1166 3333333333333333333333333333333333333333333333333333333
+1167 3333333333333333333333333333333333333333333333333333333
+1168 3333333333333333333333333333333333333333333333333333333
+1169 3333333333333333333333333333333333333333333333333333333
+1170 3333333333333333333333333333333333333333333333333333333
+1171 3333333333333333333333333333333333333333333333333333333
+1172 3333333333333333333333333333333333333333333333333333333
+1173 3333333333333333333333333333333333333333333333333333333
+1174 3333333333333333333333333333333333333333333333333333333
+1175 3333333333333333333333333333333333333333333333333333333
+1176 3333333333333333333333333333333333333333333333333333333
+1177 3333333333333333333333333333333333333333333333333333333
+1178 3333333333333333333333333333333333333333333333333333333
+1179 3333333333333333333333333333333333333333333333333333333
+1180 3333333333333333333333333333333333333333333333333333333
+1181 3333333333333333333333333333333333333333333333333333333
+1182 3333333333333333333333333333333333333333333333333333333
+1183 3333333333333333333333333333333333333333333333333333333
+1184 3333333333333333333333333333333333333333333333333333333
+1185 3333333333333333333333333333333333333333333333333333333
+1186 3333333333333333333333333333333333333333333333333333333
+1187 3333333333333333333333333333333333333333333333333333333
+1188 3333333333333333333333333333333333333333333333333333333
+1189 3333333333333333333333333333333333333333333333333333333
+1190 3333333333333333333333333333333333333333333333333333333
+1191 3333333333333333333333333333333333333333333333333333333
+1192 3333333333333333333333333333333333333333333333333333333
+1193 3333333333333333333333333333333333333333333333333333333
+1194 3333333333333333333333333333333333333333333333333333333
+1195 3333333333333333333333333333333333333333333333333333333
+1196 3333333333333333333333333333333333333333333333333333333
+1197 3333333333333333333333333333333333333333333333333333333
+1198 3333333333333333333333333333333333333333333333333333333
+1199 3333333333333333333333333333333333333333333333333333333
+1200 3333333333333333333333333333333333333333333333333333333
+1201 3333333333333333333333333333333333333333333333333333333
+1202 3333333333333333333333333333333333333333333333333333333
+1203 3333333333333333333333333333333333333333333333333333333
+1204 3333333333333333333333333333333333333333333333333333333
+1205 3333333333333333333333333333333333333333333333333333333
+1206 3333333333333333333333333333333333333333333333333333333
+1207 3333333333333333333333333333333333333333333333333333333
+1208 3333333333333333333333333333333333333333333333333333333
+1209 3333333333333333333333333333333333333333333333333333333
+1210 3333333333333333333333333333333333333333333333333333333
+1211 3333333333333333333333333333333333333333333333333333333
+1212 3333333333333333333333333333333333333333333333333333333
+1213 3333333333333333333333333333333333333333333333333333333
+1214 3333333333333333333333333333333333333333333333333333333
+1215 3333333333333333333333333333333333333333333333333333333
+1216 3333333333333333333333333333333333333333333333333333333
+1217 3333333333333333333333333333333333333333333333333333333
+1218 3333333333333333333333333333333333333333333333333333333
+1219 3333333333333333333333333333333333333333333333333333333
+1220 3333333333333333333333333333333333333333333333333333333
+1221 3333333333333333333333333333333333333333333333333333333
+1222 3333333333333333333333333333333333333333333333333333333
+1223 3333333333333333333333333333333333333333333333333333333
+1224 3333333333333333333333333333333333333333333333333333333
+1225 3333333333333333333333333333333333333333333333333333333
+1226 3333333333333333333333333333333333333333333333333333333
+1227 3333333333333333333333333333333333333333333333333333333
+1228 3333333333333333333333333333333333333333333333333333333
+1229 3333333333333333333333333333333333333333333333333333333
+1230 3333333333333333333333333333333333333333333333333333333
+1231 3333333333333333333333333333333333333333333333333333333
+1232 3333333333333333333333333333333333333333333333333333333
+1233 3333333333333333333333333333333333333333333333333333333
+1234 3333333333333333333333333333333333333333333333333333333
+1235 3333333333333333333333333333333333333333333333333333333
+1236 3333333333333333333333333333333333333333333333333333333
+1237 3333333333333333333333333333333333333333333333333333333
+1238 3333333333333333333333333333333333333333333333333333333
+1239 3333333333333333333333333333333333333333333333333333333
+1240 3333333333333333333333333333333333333333333333333333333
+1241 3333333333333333333333333333333333333333333333333333333
+1242 3333333333333333333333333333333333333333333333333333333
+1243 3333333333333333333333333333333333333333333333333333333
+1244 3333333333333333333333333333333333333333333333333333333
+1245 3333333333333333333333333333333333333333333333333333333
+1246 3333333333333333333333333333333333333333333333333333333
+1247 3333333333333333333333333333333333333333333333333333333
+1248 3333333333333333333333333333333333333333333333333333333
+1249 3333333333333333333333333333333333333333333333333333333
+1250 3333333333333333333333333333333333333333333333333333333
+1251 3333333333333333333333333333333333333333333333333333333
+1252 3333333333333333333333333333333333333333333333333333333
+1253 3333333333333333333333333333333333333333333333333333333
+1254 3333333333333333333333333333333333333333333333333333333
+1255 3333333333333333333333333333333333333333333333333333333
+1256 3333333333333333333333333333333333333333333333333333333
+1257 3333333333333333333333333333333333333333333333333333333
+1258 3333333333333333333333333333333333333333333333333333333
+1259 3333333333333333333333333333333333333333333333333333333
+1260 3333333333333333333333333333333333333333333333333333333
+1261 3333333333333333333333333333333333333333333333333333333
+1262 3333333333333333333333333333333333333333333333333333333
+1263 3333333333333333333333333333333333333333333333333333333
+1264 3333333333333333333333333333333333333333333333333333333
+1265 3333333333333333333333333333333333333333333333333333333
+1266 3333333333333333333333333333333333333333333333333333333
+1267 3333333333333333333333333333333333333333333333333333333
+1268 3333333333333333333333333333333333333333333333333333333
+1269 3333333333333333333333333333333333333333333333333333333
+1270 3333333333333333333333333333333333333333333333333333333
+1271 3333333333333333333333333333333333333333333333333333333
+1272 3333333333333333333333333333333333333333333333333333333
+1273 3333333333333333333333333333333333333333333333333333333
+1274 3333333333333333333333333333333333333333333333333333333
+1275 3333333333333333333333333333333333333333333333333333333
+1276 3333333333333333333333333333333333333333333333333333333
+1277 3333333333333333333333333333333333333333333333333333333
+1278 3333333333333333333333333333333333333333333333333333333
+1279 3333333333333333333333333333333333333333333333333333333
+1280 3333333333333333333333333333333333333333333333333333333
+1281 3333333333333333333333333333333333333333333333333333333
+1282 3333333333333333333333333333333333333333333333333333333
+1283 3333333333333333333333333333333333333333333333333333333
+1284 3333333333333333333333333333333333333333333333333333333
+1285 3333333333333333333333333333333333333333333333333333333
+1286 3333333333333333333333333333333333333333333333333333333
+1287 3333333333333333333333333333333333333333333333333333333
+1288 3333333333333333333333333333333333333333333333333333333
+1289 3333333333333333333333333333333333333333333333333333333
+1290 3333333333333333333333333333333333333333333333333333333
+1291 3333333333333333333333333333333333333333333333333333333
+1292 3333333333333333333333333333333333333333333333333333333
+1293 3333333333333333333333333333333333333333333333333333333
+1294 3333333333333333333333333333333333333333333333333333333
+1295 3333333333333333333333333333333333333333333333333333333
+1296 3333333333333333333333333333333333333333333333333333333
+1297 3333333333333333333333333333333333333333333333333333333
+1298 3333333333333333333333333333333333333333333333333333333
+1299 3333333333333333333333333333333333333333333333333333333
+1300 3333333333333333333333333333333333333333333333333333333
+1301 3333333333333333333333333333333333333333333333333333333
+1302 3333333333333333333333333333333333333333333333333333333
+1303 3333333333333333333333333333333333333333333333333333333
+1304 3333333333333333333333333333333333333333333333333333333
+1305 3333333333333333333333333333333333333333333333333333333
+1306 3333333333333333333333333333333333333333333333333333333
+1307 3333333333333333333333333333333333333333333333333333333
+1308 3333333333333333333333333333333333333333333333333333333
+1309 3333333333333333333333333333333333333333333333333333333
+1310 3333333333333333333333333333333333333333333333333333333
+1311 3333333333333333333333333333333333333333333333333333333
+1312 3333333333333333333333333333333333333333333333333333333
+1313 3333333333333333333333333333333333333333333333333333333
+1314 3333333333333333333333333333333333333333333333333333333
+1315 3333333333333333333333333333333333333333333333333333333
+1316 3333333333333333333333333333333333333333333333333333333
+1317 3333333333333333333333333333333333333333333333333333333
+1318 3333333333333333333333333333333333333333333333333333333
+1319 3333333333333333333333333333333333333333333333333333333
+1320 3333333333333333333333333333333333333333333333333333333
+1321 3333333333333333333333333333333333333333333333333333333
+1322 3333333333333333333333333333333333333333333333333333333
+1323 3333333333333333333333333333333333333333333333333333333
+1324 3333333333333333333333333333333333333333333333333333333
+1325 3333333333333333333333333333333333333333333333333333333
+1326 3333333333333333333333333333333333333333333333333333333
+1327 3333333333333333333333333333333333333333333333333333333
+1328 3333333333333333333333333333333333333333333333333333333
+1329 3333333333333333333333333333333333333333333333333333333
+1330 3333333333333333333333333333333333333333333333333333333
+1331 3333333333333333333333333333333333333333333333333333333
+1332 3333333333333333333333333333333333333333333333333333333
+1333 3333333333333333333333333333333333333333333333333333333
+1334 3333333333333333333333333333333333333333333333333333333
+1335 3333333333333333333333333333333333333333333333333333333
+1336 3333333333333333333333333333333333333333333333333333333
+1337 3333333333333333333333333333333333333333333333333333333
+1338 3333333333333333333333333333333333333333333333333333333
+1339 3333333333333333333333333333333333333333333333333333333
+1340 3333333333333333333333333333333333333333333333333333333
+1341 3333333333333333333333333333333333333333333333333333333
+1342 3333333333333333333333333333333333333333333333333333333
+1343 3333333333333333333333333333333333333333333333333333333
+1344 3333333333333333333333333333333333333333333333333333333
+1345 3333333333333333333333333333333333333333333333333333333
+1346 3333333333333333333333333333333333333333333333333333333
+1347 3333333333333333333333333333333333333333333333333333333
+1348 3333333333333333333333333333333333333333333333333333333
+1349 3333333333333333333333333333333333333333333333333333333
+1350 3333333333333333333333333333333333333333333333333333333
+1351 3333333333333333333333333333333333333333333333333333333
+1352 3333333333333333333333333333333333333333333333333333333
+1353 3333333333333333333333333333333333333333333333333333333
+1354 3333333333333333333333333333333333333333333333333333333
+1355 3333333333333333333333333333333333333333333333333333333
+1356 3333333333333333333333333333333333333333333333333333333
+1357 3333333333333333333333333333333333333333333333333333333
+1358 3333333333333333333333333333333333333333333333333333333
+1359 3333333333333333333333333333333333333333333333333333333
+1360 3333333333333333333333333333333333333333333333333333333
+1361 3333333333333333333333333333333333333333333333333333333
+1362 3333333333333333333333333333333333333333333333333333333
+1363 3333333333333333333333333333333333333333333333333333333
+1364 3333333333333333333333333333333333333333333333333333333
+1365 3333333333333333333333333333333333333333333333333333333
+1366 3333333333333333333333333333333333333333333333333333333
+1367 3333333333333333333333333333333333333333333333333333333
+1368 3333333333333333333333333333333333333333333333333333333
+1369 3333333333333333333333333333333333333333333333333333333
+1370 3333333333333333333333333333333333333333333333333333333
+1371 3333333333333333333333333333333333333333333333333333333
+1372 3333333333333333333333333333333333333333333333333333333
+1373 3333333333333333333333333333333333333333333333333333333
+1374 3333333333333333333333333333333333333333333333333333333
+1375 3333333333333333333333333333333333333333333333333333333
+1376 3333333333333333333333333333333333333333333333333333333
+1377 3333333333333333333333333333333333333333333333333333333
+1378 3333333333333333333333333333333333333333333333333333333
+1379 3333333333333333333333333333333333333333333333333333333
+1380 3333333333333333333333333333333333333333333333333333333
+1381 3333333333333333333333333333333333333333333333333333333
+1382 3333333333333333333333333333333333333333333333333333333
+1383 3333333333333333333333333333333333333333333333333333333
+1384 3333333333333333333333333333333333333333333333333333333
+1385 3333333333333333333333333333333333333333333333333333333
+1386 3333333333333333333333333333333333333333333333333333333
+1387 3333333333333333333333333333333333333333333333333333333
+1388 3333333333333333333333333333333333333333333333333333333
+1389 3333333333333333333333333333333333333333333333333333333
+1390 3333333333333333333333333333333333333333333333333333333
+1391 3333333333333333333333333333333333333333333333333333333
+1392 3333333333333333333333333333333333333333333333333333333
+1393 3333333333333333333333333333333333333333333333333333333
+1394 3333333333333333333333333333333333333333333333333333333
+1395 3333333333333333333333333333333333333333333333333333333
+1396 3333333333333333333333333333333333333333333333333333333
+1397 3333333333333333333333333333333333333333333333333333333
+1398 3333333333333333333333333333333333333333333333333333333
+1399 3333333333333333333333333333333333333333333333333333333
+1400 3333333333333333333333333333333333333333333333333333333
+1401 3333333333333333333333333333333333333333333333333333333
+1402 3333333333333333333333333333333333333333333333333333333
+1403 3333333333333333333333333333333333333333333333333333333
+1404 3333333333333333333333333333333333333333333333333333333
+1405 3333333333333333333333333333333333333333333333333333333
+1406 3333333333333333333333333333333333333333333333333333333
+1407 3333333333333333333333333333333333333333333333333333333
+1408 3333333333333333333333333333333333333333333333333333333
+1409 3333333333333333333333333333333333333333333333333333333
+1410 3333333333333333333333333333333333333333333333333333333
+1411 3333333333333333333333333333333333333333333333333333333
+1412 3333333333333333333333333333333333333333333333333333333
+1413 3333333333333333333333333333333333333333333333333333333
+1414 3333333333333333333333333333333333333333333333333333333
+1415 3333333333333333333333333333333333333333333333333333333
+1416 3333333333333333333333333333333333333333333333333333333
+1417 3333333333333333333333333333333333333333333333333333333
+1418 3333333333333333333333333333333333333333333333333333333
+1419 3333333333333333333333333333333333333333333333333333333
+1420 3333333333333333333333333333333333333333333333333333333
+1421 3333333333333333333333333333333333333333333333333333333
+1422 3333333333333333333333333333333333333333333333333333333
+1423 3333333333333333333333333333333333333333333333333333333
+1424 3333333333333333333333333333333333333333333333333333333
+1425 3333333333333333333333333333333333333333333333333333333
+1426 3333333333333333333333333333333333333333333333333333333
+1427 3333333333333333333333333333333333333333333333333333333
+1428 3333333333333333333333333333333333333333333333333333333
+1429 3333333333333333333333333333333333333333333333333333333
+1430 3333333333333333333333333333333333333333333333333333333
+1431 3333333333333333333333333333333333333333333333333333333
+1432 3333333333333333333333333333333333333333333333333333333
+1433 3333333333333333333333333333333333333333333333333333333
+1434 3333333333333333333333333333333333333333333333333333333
+1435 3333333333333333333333333333333333333333333333333333333
+1436 3333333333333333333333333333333333333333333333333333333
+1437 3333333333333333333333333333333333333333333333333333333
+1438 3333333333333333333333333333333333333333333333333333333
+1439 3333333333333333333333333333333333333333333333333333333
+1440 3333333333333333333333333333333333333333333333333333333
+1441 3333333333333333333333333333333333333333333333333333333
+1442 3333333333333333333333333333333333333333333333333333333
+1443 3333333333333333333333333333333333333333333333333333333
+1444 3333333333333333333333333333333333333333333333333333333
+1445 3333333333333333333333333333333333333333333333333333333
+1446 3333333333333333333333333333333333333333333333333333333
+1447 3333333333333333333333333333333333333333333333333333333
+1448 3333333333333333333333333333333333333333333333333333333
+1449 3333333333333333333333333333333333333333333333333333333
+1450 3333333333333333333333333333333333333333333333333333333
+1451 3333333333333333333333333333333333333333333333333333333
+1452 3333333333333333333333333333333333333333333333333333333
+1453 3333333333333333333333333333333333333333333333333333333
+1454 3333333333333333333333333333333333333333333333333333333
+1455 3333333333333333333333333333333333333333333333333333333
+1456 3333333333333333333333333333333333333333333333333333333
+1457 3333333333333333333333333333333333333333333333333333333
+1458 3333333333333333333333333333333333333333333333333333333
+1459 3333333333333333333333333333333333333333333333333333333
+1460 3333333333333333333333333333333333333333333333333333333
+1461 3333333333333333333333333333333333333333333333333333333
+1462 3333333333333333333333333333333333333333333333333333333
+1463 3333333333333333333333333333333333333333333333333333333
+1464 3333333333333333333333333333333333333333333333333333333
+1465 3333333333333333333333333333333333333333333333333333333
+1466 3333333333333333333333333333333333333333333333333333333
+1467 3333333333333333333333333333333333333333333333333333333
+1468 3333333333333333333333333333333333333333333333333333333
+1469 3333333333333333333333333333333333333333333333333333333
+1470 3333333333333333333333333333333333333333333333333333333
+1471 3333333333333333333333333333333333333333333333333333333
+1472 3333333333333333333333333333333333333333333333333333333
+1473 3333333333333333333333333333333333333333333333333333333
+1474 3333333333333333333333333333333333333333333333333333333
+1475 3333333333333333333333333333333333333333333333333333333
+1476 3333333333333333333333333333333333333333333333333333333
+1477 3333333333333333333333333333333333333333333333333333333
+1478 3333333333333333333333333333333333333333333333333333333
+1479 3333333333333333333333333333333333333333333333333333333
+1480 3333333333333333333333333333333333333333333333333333333
+1481 3333333333333333333333333333333333333333333333333333333
+1482 3333333333333333333333333333333333333333333333333333333
+1483 3333333333333333333333333333333333333333333333333333333
+1484 3333333333333333333333333333333333333333333333333333333
+1485 3333333333333333333333333333333333333333333333333333333
+1486 3333333333333333333333333333333333333333333333333333333
+1487 3333333333333333333333333333333333333333333333333333333
+1488 3333333333333333333333333333333333333333333333333333333
+1489 3333333333333333333333333333333333333333333333333333333
+1490 3333333333333333333333333333333333333333333333333333333
+1491 3333333333333333333333333333333333333333333333333333333
+1492 3333333333333333333333333333333333333333333333333333333
+1493 3333333333333333333333333333333333333333333333333333333
+1494 3333333333333333333333333333333333333333333333333333333
+1495 3333333333333333333333333333333333333333333333333333333
+1496 3333333333333333333333333333333333333333333333333333333
+1497 3333333333333333333333333333333333333333333333333333333
+1498 3333333333333333333333333333333333333333333333333333333
+1499 3333333333333333333333333333333333333333333333333333333
+1500 3333333333333333333333333333333333333333333333333333333
+1501 3333333333333333333333333333333333333333333333333333333
+1502 3333333333333333333333333333333333333333333333333333333
+1503 3333333333333333333333333333333333333333333333333333333
+1504 3333333333333333333333333333333333333333333333333333333
+1505 3333333333333333333333333333333333333333333333333333333
+1506 3333333333333333333333333333333333333333333333333333333
+1507 3333333333333333333333333333333333333333333333333333333
+1508 3333333333333333333333333333333333333333333333333333333
+1509 3333333333333333333333333333333333333333333333333333333
+1510 3333333333333333333333333333333333333333333333333333333
+1511 3333333333333333333333333333333333333333333333333333333
+1512 3333333333333333333333333333333333333333333333333333333
+1513 3333333333333333333333333333333333333333333333333333333
+1514 3333333333333333333333333333333333333333333333333333333
+1515 3333333333333333333333333333333333333333333333333333333
+1516 3333333333333333333333333333333333333333333333333333333
+1517 3333333333333333333333333333333333333333333333333333333
+1518 3333333333333333333333333333333333333333333333333333333
+1519 3333333333333333333333333333333333333333333333333333333
+1520 3333333333333333333333333333333333333333333333333333333
+1521 3333333333333333333333333333333333333333333333333333333
+1522 3333333333333333333333333333333333333333333333333333333
+1523 3333333333333333333333333333333333333333333333333333333
+1524 3333333333333333333333333333333333333333333333333333333
+1525 3333333333333333333333333333333333333333333333333333333
+1526 3333333333333333333333333333333333333333333333333333333
+1527 3333333333333333333333333333333333333333333333333333333
+1528 3333333333333333333333333333333333333333333333333333333
+1529 3333333333333333333333333333333333333333333333333333333
+1530 3333333333333333333333333333333333333333333333333333333
+1531 3333333333333333333333333333333333333333333333333333333
+1532 3333333333333333333333333333333333333333333333333333333
+1533 3333333333333333333333333333333333333333333333333333333
+1534 3333333333333333333333333333333333333333333333333333333
+1535 3333333333333333333333333333333333333333333333333333333
+1536 3333333333333333333333333333333333333333333333333333333
+1537 3333333333333333333333333333333333333333333333333333333
+1538 3333333333333333333333333333333333333333333333333333333
+1539 3333333333333333333333333333333333333333333333333333333
+1540 3333333333333333333333333333333333333333333333333333333
+1541 3333333333333333333333333333333333333333333333333333333
+1542 3333333333333333333333333333333333333333333333333333333
+1543 3333333333333333333333333333333333333333333333333333333
+1544 3333333333333333333333333333333333333333333333333333333
+1545 3333333333333333333333333333333333333333333333333333333
+1546 3333333333333333333333333333333333333333333333333333333
+1547 3333333333333333333333333333333333333333333333333333333
+1548 3333333333333333333333333333333333333333333333333333333
+1549 3333333333333333333333333333333333333333333333333333333
+1550 3333333333333333333333333333333333333333333333333333333
+1551 3333333333333333333333333333333333333333333333333333333
+1552 3333333333333333333333333333333333333333333333333333333
+1553 3333333333333333333333333333333333333333333333333333333
+1554 3333333333333333333333333333333333333333333333333333333
+1555 3333333333333333333333333333333333333333333333333333333
+1556 3333333333333333333333333333333333333333333333333333333
+1557 3333333333333333333333333333333333333333333333333333333
+1558 3333333333333333333333333333333333333333333333333333333
+1559 3333333333333333333333333333333333333333333333333333333
+1560 3333333333333333333333333333333333333333333333333333333
+1561 3333333333333333333333333333333333333333333333333333333
+1562 3333333333333333333333333333333333333333333333333333333
+1563 3333333333333333333333333333333333333333333333333333333
+1564 3333333333333333333333333333333333333333333333333333333
+1565 3333333333333333333333333333333333333333333333333333333
+1566 3333333333333333333333333333333333333333333333333333333
+1567 3333333333333333333333333333333333333333333333333333333
+1568 3333333333333333333333333333333333333333333333333333333
+1569 3333333333333333333333333333333333333333333333333333333
+1570 3333333333333333333333333333333333333333333333333333333
+1571 3333333333333333333333333333333333333333333333333333333
+1572 3333333333333333333333333333333333333333333333333333333
+1573 3333333333333333333333333333333333333333333333333333333
+1574 3333333333333333333333333333333333333333333333333333333
+1575 3333333333333333333333333333333333333333333333333333333
+1576 3333333333333333333333333333333333333333333333333333333
+1577 3333333333333333333333333333333333333333333333333333333
+1578 3333333333333333333333333333333333333333333333333333333
+1579 3333333333333333333333333333333333333333333333333333333
+1580 3333333333333333333333333333333333333333333333333333333
+1581 3333333333333333333333333333333333333333333333333333333
+1582 3333333333333333333333333333333333333333333333333333333
+1583 3333333333333333333333333333333333333333333333333333333
+1584 3333333333333333333333333333333333333333333333333333333
+1585 3333333333333333333333333333333333333333333333333333333
+1586 3333333333333333333333333333333333333333333333333333333
+1587 3333333333333333333333333333333333333333333333333333333
+1588 3333333333333333333333333333333333333333333333333333333
+1589 3333333333333333333333333333333333333333333333333333333
+1590 3333333333333333333333333333333333333333333333333333333
+1591 3333333333333333333333333333333333333333333333333333333
+1592 3333333333333333333333333333333333333333333333333333333
+1593 3333333333333333333333333333333333333333333333333333333
+1594 3333333333333333333333333333333333333333333333333333333
+1595 3333333333333333333333333333333333333333333333333333333
+1596 3333333333333333333333333333333333333333333333333333333
+1597 3333333333333333333333333333333333333333333333333333333
+1598 3333333333333333333333333333333333333333333333333333333
+1599 3333333333333333333333333333333333333333333333333333333
+1600 3333333333333333333333333333333333333333333333333333333
+1601 3333333333333333333333333333333333333333333333333333333
+1602 3333333333333333333333333333333333333333333333333333333
+1603 3333333333333333333333333333333333333333333333333333333
+1604 3333333333333333333333333333333333333333333333333333333
+1605 3333333333333333333333333333333333333333333333333333333
+1606 3333333333333333333333333333333333333333333333333333333
+1607 3333333333333333333333333333333333333333333333333333333
+1608 3333333333333333333333333333333333333333333333333333333
+1609 3333333333333333333333333333333333333333333333333333333
+1610 3333333333333333333333333333333333333333333333333333333
+1611 3333333333333333333333333333333333333333333333333333333
+1612 3333333333333333333333333333333333333333333333333333333
+1613 3333333333333333333333333333333333333333333333333333333
+1614 3333333333333333333333333333333333333333333333333333333
+1615 3333333333333333333333333333333333333333333333333333333
+1616 3333333333333333333333333333333333333333333333333333333
+1617 3333333333333333333333333333333333333333333333333333333
+1618 3333333333333333333333333333333333333333333333333333333
+1619 3333333333333333333333333333333333333333333333333333333
+1620 3333333333333333333333333333333333333333333333333333333
+1621 3333333333333333333333333333333333333333333333333333333
+1622 3333333333333333333333333333333333333333333333333333333
+1623 3333333333333333333333333333333333333333333333333333333
+1624 3333333333333333333333333333333333333333333333333333333
+1625 3333333333333333333333333333333333333333333333333333333
+1626 3333333333333333333333333333333333333333333333333333333
+1627 3333333333333333333333333333333333333333333333333333333
+1628 3333333333333333333333333333333333333333333333333333333
+1629 3333333333333333333333333333333333333333333333333333333
+1630 3333333333333333333333333333333333333333333333333333333
+1631 3333333333333333333333333333333333333333333333333333333
+1632 3333333333333333333333333333333333333333333333333333333
+1633 3333333333333333333333333333333333333333333333333333333
+1634 3333333333333333333333333333333333333333333333333333333
+1635 3333333333333333333333333333333333333333333333333333333
+1636 3333333333333333333333333333333333333333333333333333333
+1637 3333333333333333333333333333333333333333333333333333333
+1638 3333333333333333333333333333333333333333333333333333333
+1639 3333333333333333333333333333333333333333333333333333333
+1640 3333333333333333333333333333333333333333333333333333333
+1641 3333333333333333333333333333333333333333333333333333333
+1642 3333333333333333333333333333333333333333333333333333333
+1643 3333333333333333333333333333333333333333333333333333333
+1644 3333333333333333333333333333333333333333333333333333333
+1645 3333333333333333333333333333333333333333333333333333333
+1646 3333333333333333333333333333333333333333333333333333333
+1647 3333333333333333333333333333333333333333333333333333333
+1648 3333333333333333333333333333333333333333333333333333333
+1649 3333333333333333333333333333333333333333333333333333333
+1650 3333333333333333333333333333333333333333333333333333333
+1651 3333333333333333333333333333333333333333333333333333333
+1652 3333333333333333333333333333333333333333333333333333333
+1653 3333333333333333333333333333333333333333333333333333333
+1654 3333333333333333333333333333333333333333333333333333333
+1655 3333333333333333333333333333333333333333333333333333333
+1656 3333333333333333333333333333333333333333333333333333333
+1657 3333333333333333333333333333333333333333333333333333333
+1658 3333333333333333333333333333333333333333333333333333333
+1659 3333333333333333333333333333333333333333333333333333333
+1660 3333333333333333333333333333333333333333333333333333333
+1661 3333333333333333333333333333333333333333333333333333333
+1662 3333333333333333333333333333333333333333333333333333333
+1663 3333333333333333333333333333333333333333333333333333333
+1664 3333333333333333333333333333333333333333333333333333333
+1665 3333333333333333333333333333333333333333333333333333333
+1666 3333333333333333333333333333333333333333333333333333333
+1667 3333333333333333333333333333333333333333333333333333333
+1668 3333333333333333333333333333333333333333333333333333333
+1669 3333333333333333333333333333333333333333333333333333333
+1670 3333333333333333333333333333333333333333333333333333333
+1671 3333333333333333333333333333333333333333333333333333333
+1672 3333333333333333333333333333333333333333333333333333333
+1673 3333333333333333333333333333333333333333333333333333333
+1674 3333333333333333333333333333333333333333333333333333333
+1675 3333333333333333333333333333333333333333333333333333333
+1676 3333333333333333333333333333333333333333333333333333333
+1677 3333333333333333333333333333333333333333333333333333333
+1678 3333333333333333333333333333333333333333333333333333333
+1679 3333333333333333333333333333333333333333333333333333333
+1680 3333333333333333333333333333333333333333333333333333333
+1681 3333333333333333333333333333333333333333333333333333333
+1682 3333333333333333333333333333333333333333333333333333333
+1683 3333333333333333333333333333333333333333333333333333333
+1684 3333333333333333333333333333333333333333333333333333333
+1685 3333333333333333333333333333333333333333333333333333333
+1686 3333333333333333333333333333333333333333333333333333333
+1687 3333333333333333333333333333333333333333333333333333333
+1688 3333333333333333333333333333333333333333333333333333333
+1689 3333333333333333333333333333333333333333333333333333333
+1690 3333333333333333333333333333333333333333333333333333333
+1691 3333333333333333333333333333333333333333333333333333333
+1692 3333333333333333333333333333333333333333333333333333333
+1693 3333333333333333333333333333333333333333333333333333333
+1694 3333333333333333333333333333333333333333333333333333333
+1695 3333333333333333333333333333333333333333333333333333333
+1696 3333333333333333333333333333333333333333333333333333333
+1697 3333333333333333333333333333333333333333333333333333333
+1698 3333333333333333333333333333333333333333333333333333333
+1699 3333333333333333333333333333333333333333333333333333333
+1700 3333333333333333333333333333333333333333333333333333333
+1701 3333333333333333333333333333333333333333333333333333333
+1702 3333333333333333333333333333333333333333333333333333333
+1703 3333333333333333333333333333333333333333333333333333333
+1704 3333333333333333333333333333333333333333333333333333333
+1705 3333333333333333333333333333333333333333333333333333333
+1706 3333333333333333333333333333333333333333333333333333333
+1707 3333333333333333333333333333333333333333333333333333333
+1708 3333333333333333333333333333333333333333333333333333333
+1709 3333333333333333333333333333333333333333333333333333333
+1710 3333333333333333333333333333333333333333333333333333333
+1711 3333333333333333333333333333333333333333333333333333333
+1712 3333333333333333333333333333333333333333333333333333333
+1713 3333333333333333333333333333333333333333333333333333333
+1714 3333333333333333333333333333333333333333333333333333333
+1715 3333333333333333333333333333333333333333333333333333333
+1716 3333333333333333333333333333333333333333333333333333333
+1717 3333333333333333333333333333333333333333333333333333333
+1718 3333333333333333333333333333333333333333333333333333333
+1719 3333333333333333333333333333333333333333333333333333333
+1720 3333333333333333333333333333333333333333333333333333333
+1721 3333333333333333333333333333333333333333333333333333333
+1722 3333333333333333333333333333333333333333333333333333333
+1723 3333333333333333333333333333333333333333333333333333333
+1724 3333333333333333333333333333333333333333333333333333333
+1725 3333333333333333333333333333333333333333333333333333333
+1726 3333333333333333333333333333333333333333333333333333333
+1727 3333333333333333333333333333333333333333333333333333333
+1728 3333333333333333333333333333333333333333333333333333333
+1729 3333333333333333333333333333333333333333333333333333333
+1730 3333333333333333333333333333333333333333333333333333333
+1731 3333333333333333333333333333333333333333333333333333333
+1732 3333333333333333333333333333333333333333333333333333333
+1733 3333333333333333333333333333333333333333333333333333333
+1734 3333333333333333333333333333333333333333333333333333333
+1735 3333333333333333333333333333333333333333333333333333333
+1736 3333333333333333333333333333333333333333333333333333333
+1737 3333333333333333333333333333333333333333333333333333333
+1738 3333333333333333333333333333333333333333333333333333333
+1739 3333333333333333333333333333333333333333333333333333333
+1740 3333333333333333333333333333333333333333333333333333333
+1741 3333333333333333333333333333333333333333333333333333333
+1742 3333333333333333333333333333333333333333333333333333333
+1743 3333333333333333333333333333333333333333333333333333333
+1744 3333333333333333333333333333333333333333333333333333333
+1745 3333333333333333333333333333333333333333333333333333333
+1746 3333333333333333333333333333333333333333333333333333333
+1747 3333333333333333333333333333333333333333333333333333333
+1748 3333333333333333333333333333333333333333333333333333333
+1749 3333333333333333333333333333333333333333333333333333333
+1750 3333333333333333333333333333333333333333333333333333333
+1751 3333333333333333333333333333333333333333333333333333333
+1752 3333333333333333333333333333333333333333333333333333333
+1753 3333333333333333333333333333333333333333333333333333333
+1754 3333333333333333333333333333333333333333333333333333333
+1755 3333333333333333333333333333333333333333333333333333333
+1756 3333333333333333333333333333333333333333333333333333333
+1757 3333333333333333333333333333333333333333333333333333333
+1758 3333333333333333333333333333333333333333333333333333333
+1759 3333333333333333333333333333333333333333333333333333333
+1760 3333333333333333333333333333333333333333333333333333333
+1761 3333333333333333333333333333333333333333333333333333333
+1762 3333333333333333333333333333333333333333333333333333333
+1763 3333333333333333333333333333333333333333333333333333333
+1764 3333333333333333333333333333333333333333333333333333333
+1765 3333333333333333333333333333333333333333333333333333333
+1766 3333333333333333333333333333333333333333333333333333333
+1767 3333333333333333333333333333333333333333333333333333333
+1768 3333333333333333333333333333333333333333333333333333333
+1769 3333333333333333333333333333333333333333333333333333333
+1770 3333333333333333333333333333333333333333333333333333333
+1771 3333333333333333333333333333333333333333333333333333333
+1772 3333333333333333333333333333333333333333333333333333333
+1773 3333333333333333333333333333333333333333333333333333333
+1774 3333333333333333333333333333333333333333333333333333333
+1775 3333333333333333333333333333333333333333333333333333333
+1776 3333333333333333333333333333333333333333333333333333333
+1777 3333333333333333333333333333333333333333333333333333333
+1778 3333333333333333333333333333333333333333333333333333333
+1779 3333333333333333333333333333333333333333333333333333333
+1780 3333333333333333333333333333333333333333333333333333333
+1781 3333333333333333333333333333333333333333333333333333333
+1782 3333333333333333333333333333333333333333333333333333333
+1783 3333333333333333333333333333333333333333333333333333333
+1784 3333333333333333333333333333333333333333333333333333333
+1785 3333333333333333333333333333333333333333333333333333333
+1786 3333333333333333333333333333333333333333333333333333333
+1787 3333333333333333333333333333333333333333333333333333333
+1788 3333333333333333333333333333333333333333333333333333333
+1789 3333333333333333333333333333333333333333333333333333333
+1790 3333333333333333333333333333333333333333333333333333333
+1791 3333333333333333333333333333333333333333333333333333333
+1792 3333333333333333333333333333333333333333333333333333333
+1793 3333333333333333333333333333333333333333333333333333333
+1794 3333333333333333333333333333333333333333333333333333333
+1795 3333333333333333333333333333333333333333333333333333333
+1796 3333333333333333333333333333333333333333333333333333333
+1797 3333333333333333333333333333333333333333333333333333333
+1798 3333333333333333333333333333333333333333333333333333333
+1799 3333333333333333333333333333333333333333333333333333333
+1800 3333333333333333333333333333333333333333333333333333333
+1801 3333333333333333333333333333333333333333333333333333333
+1802 3333333333333333333333333333333333333333333333333333333
+1803 3333333333333333333333333333333333333333333333333333333
+1804 3333333333333333333333333333333333333333333333333333333
+1805 3333333333333333333333333333333333333333333333333333333
+1806 3333333333333333333333333333333333333333333333333333333
+1807 3333333333333333333333333333333333333333333333333333333
+1808 3333333333333333333333333333333333333333333333333333333
+1809 3333333333333333333333333333333333333333333333333333333
+1810 3333333333333333333333333333333333333333333333333333333
+1811 3333333333333333333333333333333333333333333333333333333
+1812 3333333333333333333333333333333333333333333333333333333
+1813 3333333333333333333333333333333333333333333333333333333
+1814 3333333333333333333333333333333333333333333333333333333
+1815 3333333333333333333333333333333333333333333333333333333
+1816 3333333333333333333333333333333333333333333333333333333
+1817 3333333333333333333333333333333333333333333333333333333
+1818 3333333333333333333333333333333333333333333333333333333
+1819 3333333333333333333333333333333333333333333333333333333
+1820 3333333333333333333333333333333333333333333333333333333
+1821 3333333333333333333333333333333333333333333333333333333
+1822 3333333333333333333333333333333333333333333333333333333
+1823 3333333333333333333333333333333333333333333333333333333
+1824 3333333333333333333333333333333333333333333333333333333
+1825 3333333333333333333333333333333333333333333333333333333
+1826 3333333333333333333333333333333333333333333333333333333
+1827 3333333333333333333333333333333333333333333333333333333
+1828 3333333333333333333333333333333333333333333333333333333
+1829 3333333333333333333333333333333333333333333333333333333
+1830 3333333333333333333333333333333333333333333333333333333
+1831 3333333333333333333333333333333333333333333333333333333
+1832 3333333333333333333333333333333333333333333333333333333
+1833 3333333333333333333333333333333333333333333333333333333
+1834 3333333333333333333333333333333333333333333333333333333
+1835 3333333333333333333333333333333333333333333333333333333
+1836 3333333333333333333333333333333333333333333333333333333
+1837 3333333333333333333333333333333333333333333333333333333
+1838 3333333333333333333333333333333333333333333333333333333
+1839 3333333333333333333333333333333333333333333333333333333
+1840 3333333333333333333333333333333333333333333333333333333
+1841 3333333333333333333333333333333333333333333333333333333
+1842 3333333333333333333333333333333333333333333333333333333
+1843 3333333333333333333333333333333333333333333333333333333
+1844 3333333333333333333333333333333333333333333333333333333
+1845 3333333333333333333333333333333333333333333333333333333
+1846 3333333333333333333333333333333333333333333333333333333
+1847 3333333333333333333333333333333333333333333333333333333
+1848 3333333333333333333333333333333333333333333333333333333
+1849 3333333333333333333333333333333333333333333333333333333
+1850 3333333333333333333333333333333333333333333333333333333
+1851 3333333333333333333333333333333333333333333333333333333
+1852 3333333333333333333333333333333333333333333333333333333
+1853 3333333333333333333333333333333333333333333333333333333
+1854 3333333333333333333333333333333333333333333333333333333
+1855 3333333333333333333333333333333333333333333333333333333
+1856 3333333333333333333333333333333333333333333333333333333
+1857 3333333333333333333333333333333333333333333333333333333
+1858 3333333333333333333333333333333333333333333333333333333
+1859 3333333333333333333333333333333333333333333333333333333
+1860 3333333333333333333333333333333333333333333333333333333
+1861 3333333333333333333333333333333333333333333333333333333
+1862 3333333333333333333333333333333333333333333333333333333
+1863 3333333333333333333333333333333333333333333333333333333
+1864 3333333333333333333333333333333333333333333333333333333
+1865 3333333333333333333333333333333333333333333333333333333
+1866 3333333333333333333333333333333333333333333333333333333
+1867 3333333333333333333333333333333333333333333333333333333
+1868 3333333333333333333333333333333333333333333333333333333
+1869 3333333333333333333333333333333333333333333333333333333
+1870 3333333333333333333333333333333333333333333333333333333
+1871 3333333333333333333333333333333333333333333333333333333
+1872 3333333333333333333333333333333333333333333333333333333
+1873 3333333333333333333333333333333333333333333333333333333
+1874 3333333333333333333333333333333333333333333333333333333
+1875 3333333333333333333333333333333333333333333333333333333
+1876 3333333333333333333333333333333333333333333333333333333
+1877 3333333333333333333333333333333333333333333333333333333
+1878 3333333333333333333333333333333333333333333333333333333
+1879 3333333333333333333333333333333333333333333333333333333
+1880 3333333333333333333333333333333333333333333333333333333
+1881 3333333333333333333333333333333333333333333333333333333
+1882 3333333333333333333333333333333333333333333333333333333
+1883 3333333333333333333333333333333333333333333333333333333
+1884 3333333333333333333333333333333333333333333333333333333
+1885 3333333333333333333333333333333333333333333333333333333
+1886 3333333333333333333333333333333333333333333333333333333
+1887 3333333333333333333333333333333333333333333333333333333
+1888 3333333333333333333333333333333333333333333333333333333
+1889 3333333333333333333333333333333333333333333333333333333
+1890 3333333333333333333333333333333333333333333333333333333
+1891 3333333333333333333333333333333333333333333333333333333
+1892 3333333333333333333333333333333333333333333333333333333
+1893 3333333333333333333333333333333333333333333333333333333
+1894 3333333333333333333333333333333333333333333333333333333
+1895 3333333333333333333333333333333333333333333333333333333
+1896 3333333333333333333333333333333333333333333333333333333
+1897 3333333333333333333333333333333333333333333333333333333
+1898 3333333333333333333333333333333333333333333333333333333
+1899 3333333333333333333333333333333333333333333333333333333
+1900 3333333333333333333333333333333333333333333333333333333
+1901 3333333333333333333333333333333333333333333333333333333
+1902 3333333333333333333333333333333333333333333333333333333
+1903 3333333333333333333333333333333333333333333333333333333
+1904 3333333333333333333333333333333333333333333333333333333
+1905 3333333333333333333333333333333333333333333333333333333
+1906 3333333333333333333333333333333333333333333333333333333
+1907 3333333333333333333333333333333333333333333333333333333
+1908 3333333333333333333333333333333333333333333333333333333
+1909 3333333333333333333333333333333333333333333333333333333
+1910 3333333333333333333333333333333333333333333333333333333
+1911 3333333333333333333333333333333333333333333333333333333
+1912 3333333333333333333333333333333333333333333333333333333
+1913 3333333333333333333333333333333333333333333333333333333
+1914 3333333333333333333333333333333333333333333333333333333
+1915 3333333333333333333333333333333333333333333333333333333
+1916 3333333333333333333333333333333333333333333333333333333
+1917 3333333333333333333333333333333333333333333333333333333
+1918 3333333333333333333333333333333333333333333333333333333
+1919 3333333333333333333333333333333333333333333333333333333
+1920 3333333333333333333333333333333333333333333333333333333
+1921 3333333333333333333333333333333333333333333333333333333
+1922 3333333333333333333333333333333333333333333333333333333
+1923 3333333333333333333333333333333333333333333333333333333
+1924 3333333333333333333333333333333333333333333333333333333
+1925 3333333333333333333333333333333333333333333333333333333
+1926 3333333333333333333333333333333333333333333333333333333
+1927 3333333333333333333333333333333333333333333333333333333
+1928 3333333333333333333333333333333333333333333333333333333
+1929 3333333333333333333333333333333333333333333333333333333
+1930 3333333333333333333333333333333333333333333333333333333
+1931 3333333333333333333333333333333333333333333333333333333
+1932 3333333333333333333333333333333333333333333333333333333
+1933 3333333333333333333333333333333333333333333333333333333
+1934 3333333333333333333333333333333333333333333333333333333
+1935 3333333333333333333333333333333333333333333333333333333
+1936 3333333333333333333333333333333333333333333333333333333
+1937 3333333333333333333333333333333333333333333333333333333
+1938 3333333333333333333333333333333333333333333333333333333
+1939 3333333333333333333333333333333333333333333333333333333
+1940 3333333333333333333333333333333333333333333333333333333
+1941 3333333333333333333333333333333333333333333333333333333
+1942 3333333333333333333333333333333333333333333333333333333
+1943 3333333333333333333333333333333333333333333333333333333
+1944 3333333333333333333333333333333333333333333333333333333
+1945 3333333333333333333333333333333333333333333333333333333
+1946 3333333333333333333333333333333333333333333333333333333
+1947 3333333333333333333333333333333333333333333333333333333
+1948 3333333333333333333333333333333333333333333333333333333
+1949 3333333333333333333333333333333333333333333333333333333
+1950 3333333333333333333333333333333333333333333333333333333
+1951 3333333333333333333333333333333333333333333333333333333
+1952 3333333333333333333333333333333333333333333333333333333
+1953 3333333333333333333333333333333333333333333333333333333
+1954 3333333333333333333333333333333333333333333333333333333
+1955 3333333333333333333333333333333333333333333333333333333
+1956 3333333333333333333333333333333333333333333333333333333
+1957 3333333333333333333333333333333333333333333333333333333
+1958 3333333333333333333333333333333333333333333333333333333
+1959 3333333333333333333333333333333333333333333333333333333
+1960 3333333333333333333333333333333333333333333333333333333
+1961 3333333333333333333333333333333333333333333333333333333
+1962 3333333333333333333333333333333333333333333333333333333
+1963 3333333333333333333333333333333333333333333333333333333
+1964 3333333333333333333333333333333333333333333333333333333
+1965 3333333333333333333333333333333333333333333333333333333
+1966 3333333333333333333333333333333333333333333333333333333
+1967 3333333333333333333333333333333333333333333333333333333
+1968 3333333333333333333333333333333333333333333333333333333
+1969 3333333333333333333333333333333333333333333333333333333
+1970 3333333333333333333333333333333333333333333333333333333
+1971 3333333333333333333333333333333333333333333333333333333
+1972 3333333333333333333333333333333333333333333333333333333
+1973 3333333333333333333333333333333333333333333333333333333
+1974 3333333333333333333333333333333333333333333333333333333
+1975 3333333333333333333333333333333333333333333333333333333
+1976 3333333333333333333333333333333333333333333333333333333
+1977 3333333333333333333333333333333333333333333333333333333
+1978 3333333333333333333333333333333333333333333333333333333
+1979 3333333333333333333333333333333333333333333333333333333
+1980 3333333333333333333333333333333333333333333333333333333
+1981 3333333333333333333333333333333333333333333333333333333
+1982 3333333333333333333333333333333333333333333333333333333
+1983 3333333333333333333333333333333333333333333333333333333
+1984 3333333333333333333333333333333333333333333333333333333
+1985 3333333333333333333333333333333333333333333333333333333
+1986 3333333333333333333333333333333333333333333333333333333
+1987 3333333333333333333333333333333333333333333333333333333
+1988 3333333333333333333333333333333333333333333333333333333
+1989 3333333333333333333333333333333333333333333333333333333
+1990 3333333333333333333333333333333333333333333333333333333
+1991 3333333333333333333333333333333333333333333333333333333
+1992 3333333333333333333333333333333333333333333333333333333
+1993 3333333333333333333333333333333333333333333333333333333
+1994 3333333333333333333333333333333333333333333333333333333
+1995 3333333333333333333333333333333333333333333333333333333
+1996 3333333333333333333333333333333333333333333333333333333
+1997 3333333333333333333333333333333333333333333333333333333
+1998 3333333333333333333333333333333333333333333333333333333
+1999 3333333333333333333333333333333333333333333333333333333
+2000 3333333333333333333333333333333333333333333333333333333
+2001 3333333333333333333333333333333333333333333333333333333
+2002 3333333333333333333333333333333333333333333333333333333
+2003 3333333333333333333333333333333333333333333333333333333
+2004 3333333333333333333333333333333333333333333333333333333
+2005 3333333333333333333333333333333333333333333333333333333
+2006 3333333333333333333333333333333333333333333333333333333
+2007 3333333333333333333333333333333333333333333333333333333
+2008 3333333333333333333333333333333333333333333333333333333
+2009 3333333333333333333333333333333333333333333333333333333
+2010 3333333333333333333333333333333333333333333333333333333
+2011 3333333333333333333333333333333333333333333333333333333
+2012 3333333333333333333333333333333333333333333333333333333
+2013 3333333333333333333333333333333333333333333333333333333
+2014 3333333333333333333333333333333333333333333333333333333
+2015 3333333333333333333333333333333333333333333333333333333
+2016 3333333333333333333333333333333333333333333333333333333
+2017 3333333333333333333333333333333333333333333333333333333
+2018 3333333333333333333333333333333333333333333333333333333
+2019 3333333333333333333333333333333333333333333333333333333
+2020 3333333333333333333333333333333333333333333333333333333
+2021 3333333333333333333333333333333333333333333333333333333
+2022 3333333333333333333333333333333333333333333333333333333
+2023 3333333333333333333333333333333333333333333333333333333
+2024 3333333333333333333333333333333333333333333333333333333
+2025 3333333333333333333333333333333333333333333333333333333
+2026 3333333333333333333333333333333333333333333333333333333
+2027 3333333333333333333333333333333333333333333333333333333
+2028 3333333333333333333333333333333333333333333333333333333
+2029 3333333333333333333333333333333333333333333333333333333
+2030 3333333333333333333333333333333333333333333333333333333
+2031 3333333333333333333333333333333333333333333333333333333
+2032 3333333333333333333333333333333333333333333333333333333
+2033 3333333333333333333333333333333333333333333333333333333
+2034 3333333333333333333333333333333333333333333333333333333
+2035 3333333333333333333333333333333333333333333333333333333
+2036 3333333333333333333333333333333333333333333333333333333
+2037 3333333333333333333333333333333333333333333333333333333
+2038 3333333333333333333333333333333333333333333333333333333
+2039 3333333333333333333333333333333333333333333333333333333
+2040 3333333333333333333333333333333333333333333333333333333
+2041 3333333333333333333333333333333333333333333333333333333
+2042 3333333333333333333333333333333333333333333333333333333
+2043 3333333333333333333333333333333333333333333333333333333
+2044 3333333333333333333333333333333333333333333333333333333
+2045 3333333333333333333333333333333333333333333333333333333
+2046 3333333333333333333333333333333333333333333333333333333
+2047 3333333333333333333333333333333333333333333333333333333
+2048 3333333333333333333333333333333333333333333333333333333
+2049 3333333333333333333333333333333333333333333333333333333
+2050 3333333333333333333333333333333333333333333333333333333
+2051 3333333333333333333333333333333333333333333333333333333
+2052 3333333333333333333333333333333333333333333333333333333
+2053 3333333333333333333333333333333333333333333333333333333
+2054 3333333333333333333333333333333333333333333333333333333
+2055 3333333333333333333333333333333333333333333333333333333
+2056 3333333333333333333333333333333333333333333333333333333
+2057 3333333333333333333333333333333333333333333333333333333
+2058 3333333333333333333333333333333333333333333333333333333
+2059 3333333333333333333333333333333333333333333333333333333
+2060 3333333333333333333333333333333333333333333333333333333
+2061 3333333333333333333333333333333333333333333333333333333
+2062 3333333333333333333333333333333333333333333333333333333
+2063 3333333333333333333333333333333333333333333333333333333
+2064 3333333333333333333333333333333333333333333333333333333
+2065 3333333333333333333333333333333333333333333333333333333
+2066 3333333333333333333333333333333333333333333333333333333
+2067 3333333333333333333333333333333333333333333333333333333
+2068 3333333333333333333333333333333333333333333333333333333
+2069 3333333333333333333333333333333333333333333333333333333
+2070 3333333333333333333333333333333333333333333333333333333
+2071 3333333333333333333333333333333333333333333333333333333
+2072 3333333333333333333333333333333333333333333333333333333
+2073 3333333333333333333333333333333333333333333333333333333
+2074 3333333333333333333333333333333333333333333333333333333
+2075 3333333333333333333333333333333333333333333333333333333
+2076 3333333333333333333333333333333333333333333333333333333
+2077 3333333333333333333333333333333333333333333333333333333
+2078 3333333333333333333333333333333333333333333333333333333
+2079 3333333333333333333333333333333333333333333333333333333
+2080 3333333333333333333333333333333333333333333333333333333
+2081 3333333333333333333333333333333333333333333333333333333
+2082 3333333333333333333333333333333333333333333333333333333
+2083 3333333333333333333333333333333333333333333333333333333
+2084 3333333333333333333333333333333333333333333333333333333
+2085 3333333333333333333333333333333333333333333333333333333
+2086 3333333333333333333333333333333333333333333333333333333
+2087 3333333333333333333333333333333333333333333333333333333
+2088 3333333333333333333333333333333333333333333333333333333
+2089 3333333333333333333333333333333333333333333333333333333
+2090 3333333333333333333333333333333333333333333333333333333
+2091 3333333333333333333333333333333333333333333333333333333
+2092 3333333333333333333333333333333333333333333333333333333
+2093 3333333333333333333333333333333333333333333333333333333
+2094 3333333333333333333333333333333333333333333333333333333
+2095 3333333333333333333333333333333333333333333333333333333
+2096 3333333333333333333333333333333333333333333333333333333
+2097 3333333333333333333333333333333333333333333333333333333
+2098 3333333333333333333333333333333333333333333333333333333
+2099 3333333333333333333333333333333333333333333333333333333
+2100 3333333333333333333333333333333333333333333333333333333
+2101 3333333333333333333333333333333333333333333333333333333
+2102 3333333333333333333333333333333333333333333333333333333
+2103 3333333333333333333333333333333333333333333333333333333
+2104 3333333333333333333333333333333333333333333333333333333
+2105 3333333333333333333333333333333333333333333333333333333
+2106 3333333333333333333333333333333333333333333333333333333
+2107 3333333333333333333333333333333333333333333333333333333
+2108 3333333333333333333333333333333333333333333333333333333
+2109 3333333333333333333333333333333333333333333333333333333
+2110 3333333333333333333333333333333333333333333333333333333
+2111 3333333333333333333333333333333333333333333333333333333
+2112 3333333333333333333333333333333333333333333333333333333
+2113 3333333333333333333333333333333333333333333333333333333
+2114 3333333333333333333333333333333333333333333333333333333
+2115 3333333333333333333333333333333333333333333333333333333
+2116 3333333333333333333333333333333333333333333333333333333
+2117 3333333333333333333333333333333333333333333333333333333
+2118 3333333333333333333333333333333333333333333333333333333
+2119 3333333333333333333333333333333333333333333333333333333
+2120 3333333333333333333333333333333333333333333333333333333
+2121 3333333333333333333333333333333333333333333333333333333
+2122 3333333333333333333333333333333333333333333333333333333
+2123 3333333333333333333333333333333333333333333333333333333
+2124 3333333333333333333333333333333333333333333333333333333
+2125 3333333333333333333333333333333333333333333333333333333
+2126 3333333333333333333333333333333333333333333333333333333
+2127 3333333333333333333333333333333333333333333333333333333
+2128 3333333333333333333333333333333333333333333333333333333
+2129 3333333333333333333333333333333333333333333333333333333
+2130 3333333333333333333333333333333333333333333333333333333
+2131 3333333333333333333333333333333333333333333333333333333
+2132 3333333333333333333333333333333333333333333333333333333
+2133 3333333333333333333333333333333333333333333333333333333
+2134 3333333333333333333333333333333333333333333333333333333
+2135 3333333333333333333333333333333333333333333333333333333
+2136 3333333333333333333333333333333333333333333333333333333
+2137 3333333333333333333333333333333333333333333333333333333
+2138 3333333333333333333333333333333333333333333333333333333
+2139 3333333333333333333333333333333333333333333333333333333
+2140 3333333333333333333333333333333333333333333333333333333
+2141 3333333333333333333333333333333333333333333333333333333
+2142 3333333333333333333333333333333333333333333333333333333
+2143 3333333333333333333333333333333333333333333333333333333
+2144 3333333333333333333333333333333333333333333333333333333
+2145 3333333333333333333333333333333333333333333333333333333
+2146 3333333333333333333333333333333333333333333333333333333
+2147 3333333333333333333333333333333333333333333333333333333
+2148 3333333333333333333333333333333333333333333333333333333
+2149 3333333333333333333333333333333333333333333333333333333
+2150 3333333333333333333333333333333333333333333333333333333
+2151 3333333333333333333333333333333333333333333333333333333
+2152 3333333333333333333333333333333333333333333333333333333
+2153 3333333333333333333333333333333333333333333333333333333
+2154 3333333333333333333333333333333333333333333333333333333
+2155 3333333333333333333333333333333333333333333333333333333
+2156 3333333333333333333333333333333333333333333333333333333
+2157 3333333333333333333333333333333333333333333333333333333
+2158 3333333333333333333333333333333333333333333333333333333
+2159 3333333333333333333333333333333333333333333333333333333
+2160 3333333333333333333333333333333333333333333333333333333
+2161 3333333333333333333333333333333333333333333333333333333
+2162 3333333333333333333333333333333333333333333333333333333
+2163 3333333333333333333333333333333333333333333333333333333
+2164 3333333333333333333333333333333333333333333333333333333
+2165 3333333333333333333333333333333333333333333333333333333
+2166 3333333333333333333333333333333333333333333333333333333
+2167 3333333333333333333333333333333333333333333333333333333
+2168 3333333333333333333333333333333333333333333333333333333
+2169 3333333333333333333333333333333333333333333333333333333
+2170 3333333333333333333333333333333333333333333333333333333
+2171 3333333333333333333333333333333333333333333333333333333
+2172 3333333333333333333333333333333333333333333333333333333
+2173 3333333333333333333333333333333333333333333333333333333
+2174 3333333333333333333333333333333333333333333333333333333
+2175 3333333333333333333333333333333333333333333333333333333
+2176 3333333333333333333333333333333333333333333333333333333
+2177 3333333333333333333333333333333333333333333333333333333
+2178 3333333333333333333333333333333333333333333333333333333
+2179 3333333333333333333333333333333333333333333333333333333
+2180 3333333333333333333333333333333333333333333333333333333
+2181 3333333333333333333333333333333333333333333333333333333
+2182 3333333333333333333333333333333333333333333333333333333
+2183 3333333333333333333333333333333333333333333333333333333
+2184 3333333333333333333333333333333333333333333333333333333
+2185 3333333333333333333333333333333333333333333333333333333
+2186 3333333333333333333333333333333333333333333333333333333
+2187 3333333333333333333333333333333333333333333333333333333
+2188 3333333333333333333333333333333333333333333333333333333
+2189 3333333333333333333333333333333333333333333333333333333
+2190 3333333333333333333333333333333333333333333333333333333
+2191 3333333333333333333333333333333333333333333333333333333
+2192 3333333333333333333333333333333333333333333333333333333
+2193 3333333333333333333333333333333333333333333333333333333
+2194 3333333333333333333333333333333333333333333333333333333
+2195 3333333333333333333333333333333333333333333333333333333
+2196 3333333333333333333333333333333333333333333333333333333
+2197 3333333333333333333333333333333333333333333333333333333
+2198 3333333333333333333333333333333333333333333333333333333
+2199 3333333333333333333333333333333333333333333333333333333
+2200 3333333333333333333333333333333333333333333333333333333
+2201 3333333333333333333333333333333333333333333333333333333
+2202 3333333333333333333333333333333333333333333333333333333
+2203 3333333333333333333333333333333333333333333333333333333
+2204 3333333333333333333333333333333333333333333333333333333
+2205 3333333333333333333333333333333333333333333333333333333
+2206 3333333333333333333333333333333333333333333333333333333
+2207 3333333333333333333333333333333333333333333333333333333
+2208 3333333333333333333333333333333333333333333333333333333
+2209 3333333333333333333333333333333333333333333333333333333
+2210 3333333333333333333333333333333333333333333333333333333
+2211 3333333333333333333333333333333333333333333333333333333
+2212 3333333333333333333333333333333333333333333333333333333
+2213 3333333333333333333333333333333333333333333333333333333
+2214 3333333333333333333333333333333333333333333333333333333
+2215 3333333333333333333333333333333333333333333333333333333
+2216 3333333333333333333333333333333333333333333333333333333
+2217 3333333333333333333333333333333333333333333333333333333
+2218 3333333333333333333333333333333333333333333333333333333
+2219 3333333333333333333333333333333333333333333333333333333
+2220 3333333333333333333333333333333333333333333333333333333
+2221 3333333333333333333333333333333333333333333333333333333
+2222 3333333333333333333333333333333333333333333333333333333
+2223 3333333333333333333333333333333333333333333333333333333
+2224 3333333333333333333333333333333333333333333333333333333
+2225 3333333333333333333333333333333333333333333333333333333
+2226 3333333333333333333333333333333333333333333333333333333
+2227 3333333333333333333333333333333333333333333333333333333
+2228 3333333333333333333333333333333333333333333333333333333
+2229 3333333333333333333333333333333333333333333333333333333
+2230 3333333333333333333333333333333333333333333333333333333
+2231 3333333333333333333333333333333333333333333333333333333
+2232 3333333333333333333333333333333333333333333333333333333
+2233 3333333333333333333333333333333333333333333333333333333
+2234 3333333333333333333333333333333333333333333333333333333
+2235 3333333333333333333333333333333333333333333333333333333
+2236 3333333333333333333333333333333333333333333333333333333
+2237 3333333333333333333333333333333333333333333333333333333
+2238 3333333333333333333333333333333333333333333333333333333
+2239 3333333333333333333333333333333333333333333333333333333
+2240 3333333333333333333333333333333333333333333333333333333
+2241 3333333333333333333333333333333333333333333333333333333
+2242 3333333333333333333333333333333333333333333333333333333
+2243 3333333333333333333333333333333333333333333333333333333
+2244 3333333333333333333333333333333333333333333333333333333
+2245 3333333333333333333333333333333333333333333333333333333
+2246 3333333333333333333333333333333333333333333333333333333
+2247 3333333333333333333333333333333333333333333333333333333
+2248 3333333333333333333333333333333333333333333333333333333
+2249 3333333333333333333333333333333333333333333333333333333
+2250 3333333333333333333333333333333333333333333333333333333
+2251 3333333333333333333333333333333333333333333333333333333
+2252 3333333333333333333333333333333333333333333333333333333
+2253 3333333333333333333333333333333333333333333333333333333
+2254 3333333333333333333333333333333333333333333333333333333
+2255 3333333333333333333333333333333333333333333333333333333
+2256 3333333333333333333333333333333333333333333333333333333
+2257 3333333333333333333333333333333333333333333333333333333
+2258 3333333333333333333333333333333333333333333333333333333
+2259 3333333333333333333333333333333333333333333333333333333
+2260 3333333333333333333333333333333333333333333333333333333
+2261 3333333333333333333333333333333333333333333333333333333
+2262 3333333333333333333333333333333333333333333333333333333
+2263 3333333333333333333333333333333333333333333333333333333
+2264 3333333333333333333333333333333333333333333333333333333
+2265 3333333333333333333333333333333333333333333333333333333
+2266 3333333333333333333333333333333333333333333333333333333
+2267 3333333333333333333333333333333333333333333333333333333
+2268 3333333333333333333333333333333333333333333333333333333
+2269 3333333333333333333333333333333333333333333333333333333
+2270 3333333333333333333333333333333333333333333333333333333
+2271 3333333333333333333333333333333333333333333333333333333
+2272 3333333333333333333333333333333333333333333333333333333
+2273 3333333333333333333333333333333333333333333333333333333
+2274 3333333333333333333333333333333333333333333333333333333
+2275 3333333333333333333333333333333333333333333333333333333
+2276 3333333333333333333333333333333333333333333333333333333
+2277 3333333333333333333333333333333333333333333333333333333
+2278 3333333333333333333333333333333333333333333333333333333
+2279 3333333333333333333333333333333333333333333333333333333
+2280 3333333333333333333333333333333333333333333333333333333
+2281 3333333333333333333333333333333333333333333333333333333
+2282 3333333333333333333333333333333333333333333333333333333
+2283 3333333333333333333333333333333333333333333333333333333
+2284 3333333333333333333333333333333333333333333333333333333
+2285 3333333333333333333333333333333333333333333333333333333
+2286 3333333333333333333333333333333333333333333333333333333
+2287 3333333333333333333333333333333333333333333333333333333
+2288 3333333333333333333333333333333333333333333333333333333
+2289 3333333333333333333333333333333333333333333333333333333
+2290 3333333333333333333333333333333333333333333333333333333
+2291 3333333333333333333333333333333333333333333333333333333
+2292 3333333333333333333333333333333333333333333333333333333
+2293 3333333333333333333333333333333333333333333333333333333
+2294 3333333333333333333333333333333333333333333333333333333
+2295 3333333333333333333333333333333333333333333333333333333
+2296 3333333333333333333333333333333333333333333333333333333
+2297 3333333333333333333333333333333333333333333333333333333
+2298 3333333333333333333333333333333333333333333333333333333
+2299 3333333333333333333333333333333333333333333333333333333
+2300 3333333333333333333333333333333333333333333333333333333
+2301 3333333333333333333333333333333333333333333333333333333
+2302 3333333333333333333333333333333333333333333333333333333
+2303 3333333333333333333333333333333333333333333333333333333
+2304 3333333333333333333333333333333333333333333333333333333
+2305 3333333333333333333333333333333333333333333333333333333
+2306 3333333333333333333333333333333333333333333333333333333
+2307 3333333333333333333333333333333333333333333333333333333
+2308 3333333333333333333333333333333333333333333333333333333
+2309 3333333333333333333333333333333333333333333333333333333
+2310 3333333333333333333333333333333333333333333333333333333
+2311 3333333333333333333333333333333333333333333333333333333
+2312 3333333333333333333333333333333333333333333333333333333
+2313 3333333333333333333333333333333333333333333333333333333
+2314 3333333333333333333333333333333333333333333333333333333
+2315 3333333333333333333333333333333333333333333333333333333
+2316 3333333333333333333333333333333333333333333333333333333
+2317 3333333333333333333333333333333333333333333333333333333
+2318 3333333333333333333333333333333333333333333333333333333
+2319 3333333333333333333333333333333333333333333333333333333
+2320 3333333333333333333333333333333333333333333333333333333
+2321 3333333333333333333333333333333333333333333333333333333
+2322 3333333333333333333333333333333333333333333333333333333
+2323 3333333333333333333333333333333333333333333333333333333
+2324 3333333333333333333333333333333333333333333333333333333
+2325 3333333333333333333333333333333333333333333333333333333
+2326 3333333333333333333333333333333333333333333333333333333
+2327 3333333333333333333333333333333333333333333333333333333
+2328 3333333333333333333333333333333333333333333333333333333
+2329 3333333333333333333333333333333333333333333333333333333
+2330 3333333333333333333333333333333333333333333333333333333
+2331 3333333333333333333333333333333333333333333333333333333
+2332 3333333333333333333333333333333333333333333333333333333
+2333 3333333333333333333333333333333333333333333333333333333
+2334 3333333333333333333333333333333333333333333333333333333
+2335 3333333333333333333333333333333333333333333333333333333
+2336 3333333333333333333333333333333333333333333333333333333
+2337 3333333333333333333333333333333333333333333333333333333
+2338 3333333333333333333333333333333333333333333333333333333
+2339 3333333333333333333333333333333333333333333333333333333
+2340 3333333333333333333333333333333333333333333333333333333
+2341 3333333333333333333333333333333333333333333333333333333
+2342 3333333333333333333333333333333333333333333333333333333
+2343 3333333333333333333333333333333333333333333333333333333
+2344 3333333333333333333333333333333333333333333333333333333
+2345 3333333333333333333333333333333333333333333333333333333
+2346 3333333333333333333333333333333333333333333333333333333
+2347 3333333333333333333333333333333333333333333333333333333
+2348 3333333333333333333333333333333333333333333333333333333
+2349 3333333333333333333333333333333333333333333333333333333
+2350 3333333333333333333333333333333333333333333333333333333
+2351 3333333333333333333333333333333333333333333333333333333
+2352 3333333333333333333333333333333333333333333333333333333
+2353 3333333333333333333333333333333333333333333333333333333
+2354 3333333333333333333333333333333333333333333333333333333
+2355 3333333333333333333333333333333333333333333333333333333
+2356 3333333333333333333333333333333333333333333333333333333
+2357 3333333333333333333333333333333333333333333333333333333
+2358 3333333333333333333333333333333333333333333333333333333
+2359 3333333333333333333333333333333333333333333333333333333
+2360 3333333333333333333333333333333333333333333333333333333
+2361 3333333333333333333333333333333333333333333333333333333
+2362 3333333333333333333333333333333333333333333333333333333
+2363 3333333333333333333333333333333333333333333333333333333
+2364 3333333333333333333333333333333333333333333333333333333
+2365 3333333333333333333333333333333333333333333333333333333
+2366 3333333333333333333333333333333333333333333333333333333
+2367 3333333333333333333333333333333333333333333333333333333
+2368 3333333333333333333333333333333333333333333333333333333
+2369 3333333333333333333333333333333333333333333333333333333
+2370 3333333333333333333333333333333333333333333333333333333
+2371 3333333333333333333333333333333333333333333333333333333
+2372 3333333333333333333333333333333333333333333333333333333
+2373 3333333333333333333333333333333333333333333333333333333
+2374 3333333333333333333333333333333333333333333333333333333
+2375 3333333333333333333333333333333333333333333333333333333
+2376 3333333333333333333333333333333333333333333333333333333
+2377 3333333333333333333333333333333333333333333333333333333
+2378 3333333333333333333333333333333333333333333333333333333
+2379 3333333333333333333333333333333333333333333333333333333
+2380 3333333333333333333333333333333333333333333333333333333
+2381 3333333333333333333333333333333333333333333333333333333
+2382 3333333333333333333333333333333333333333333333333333333
+2383 3333333333333333333333333333333333333333333333333333333
+2384 3333333333333333333333333333333333333333333333333333333
+2385 3333333333333333333333333333333333333333333333333333333
+2386 3333333333333333333333333333333333333333333333333333333
+2387 3333333333333333333333333333333333333333333333333333333
+2388 3333333333333333333333333333333333333333333333333333333
+2389 3333333333333333333333333333333333333333333333333333333
+2390 3333333333333333333333333333333333333333333333333333333
+2391 3333333333333333333333333333333333333333333333333333333
+2392 3333333333333333333333333333333333333333333333333333333
+2393 3333333333333333333333333333333333333333333333333333333
+2394 3333333333333333333333333333333333333333333333333333333
+2395 3333333333333333333333333333333333333333333333333333333
+2396 3333333333333333333333333333333333333333333333333333333
+2397 3333333333333333333333333333333333333333333333333333333
+2398 3333333333333333333333333333333333333333333333333333333
+2399 3333333333333333333333333333333333333333333333333333333
+2400 3333333333333333333333333333333333333333333333333333333
+2401 3333333333333333333333333333333333333333333333333333333
+2402 3333333333333333333333333333333333333333333333333333333
+2403 3333333333333333333333333333333333333333333333333333333
+2404 3333333333333333333333333333333333333333333333333333333
+2405 3333333333333333333333333333333333333333333333333333333
+2406 3333333333333333333333333333333333333333333333333333333
+2407 3333333333333333333333333333333333333333333333333333333
+2408 3333333333333333333333333333333333333333333333333333333
+2409 3333333333333333333333333333333333333333333333333333333
+2410 3333333333333333333333333333333333333333333333333333333
+2411 3333333333333333333333333333333333333333333333333333333
+2412 3333333333333333333333333333333333333333333333333333333
+2413 3333333333333333333333333333333333333333333333333333333
+2414 3333333333333333333333333333333333333333333333333333333
+2415 3333333333333333333333333333333333333333333333333333333
+2416 3333333333333333333333333333333333333333333333333333333
+2417 3333333333333333333333333333333333333333333333333333333
+2418 3333333333333333333333333333333333333333333333333333333
+2419 3333333333333333333333333333333333333333333333333333333
+2420 3333333333333333333333333333333333333333333333333333333
+2421 3333333333333333333333333333333333333333333333333333333
+2422 3333333333333333333333333333333333333333333333333333333
+2423 3333333333333333333333333333333333333333333333333333333
+2424 3333333333333333333333333333333333333333333333333333333
+2425 3333333333333333333333333333333333333333333333333333333
+2426 3333333333333333333333333333333333333333333333333333333
+2427 3333333333333333333333333333333333333333333333333333333
+2428 3333333333333333333333333333333333333333333333333333333
+2429 3333333333333333333333333333333333333333333333333333333
+2430 3333333333333333333333333333333333333333333333333333333
+2431 3333333333333333333333333333333333333333333333333333333
+2432 3333333333333333333333333333333333333333333333333333333
+2433 3333333333333333333333333333333333333333333333333333333
+2434 3333333333333333333333333333333333333333333333333333333
+2435 3333333333333333333333333333333333333333333333333333333
+2436 3333333333333333333333333333333333333333333333333333333
+2437 3333333333333333333333333333333333333333333333333333333
+2438 3333333333333333333333333333333333333333333333333333333
+2439 3333333333333333333333333333333333333333333333333333333
+2440 3333333333333333333333333333333333333333333333333333333
+2441 3333333333333333333333333333333333333333333333333333333
+2442 3333333333333333333333333333333333333333333333333333333
+2443 3333333333333333333333333333333333333333333333333333333
+2444 3333333333333333333333333333333333333333333333333333333
+2445 3333333333333333333333333333333333333333333333333333333
+2446 3333333333333333333333333333333333333333333333333333333
+2447 3333333333333333333333333333333333333333333333333333333
+2448 3333333333333333333333333333333333333333333333333333333
+2449 3333333333333333333333333333333333333333333333333333333
+2450 3333333333333333333333333333333333333333333333333333333
+2451 3333333333333333333333333333333333333333333333333333333
+2452 3333333333333333333333333333333333333333333333333333333
+2453 3333333333333333333333333333333333333333333333333333333
+2454 3333333333333333333333333333333333333333333333333333333
+2455 3333333333333333333333333333333333333333333333333333333
+2456 3333333333333333333333333333333333333333333333333333333
+2457 3333333333333333333333333333333333333333333333333333333
+2458 3333333333333333333333333333333333333333333333333333333
+2459 3333333333333333333333333333333333333333333333333333333
+2460 3333333333333333333333333333333333333333333333333333333
+2461 3333333333333333333333333333333333333333333333333333333
+2462 3333333333333333333333333333333333333333333333333333333
+2463 3333333333333333333333333333333333333333333333333333333
+2464 3333333333333333333333333333333333333333333333333333333
+2465 3333333333333333333333333333333333333333333333333333333
+2466 3333333333333333333333333333333333333333333333333333333
+2467 3333333333333333333333333333333333333333333333333333333
+2468 3333333333333333333333333333333333333333333333333333333
+2469 3333333333333333333333333333333333333333333333333333333
+2470 3333333333333333333333333333333333333333333333333333333
+2471 3333333333333333333333333333333333333333333333333333333
+2472 3333333333333333333333333333333333333333333333333333333
+2473 3333333333333333333333333333333333333333333333333333333
+2474 3333333333333333333333333333333333333333333333333333333
+2475 3333333333333333333333333333333333333333333333333333333
+2476 3333333333333333333333333333333333333333333333333333333
+2477 3333333333333333333333333333333333333333333333333333333
+2478 3333333333333333333333333333333333333333333333333333333
+2479 3333333333333333333333333333333333333333333333333333333
+2480 3333333333333333333333333333333333333333333333333333333
+2481 3333333333333333333333333333333333333333333333333333333
+2482 3333333333333333333333333333333333333333333333333333333
+2483 3333333333333333333333333333333333333333333333333333333
+2484 3333333333333333333333333333333333333333333333333333333
+2485 3333333333333333333333333333333333333333333333333333333
+2486 3333333333333333333333333333333333333333333333333333333
+2487 3333333333333333333333333333333333333333333333333333333
+2488 3333333333333333333333333333333333333333333333333333333
+2489 3333333333333333333333333333333333333333333333333333333
+2490 3333333333333333333333333333333333333333333333333333333
+2491 3333333333333333333333333333333333333333333333333333333
+2492 3333333333333333333333333333333333333333333333333333333
+2493 3333333333333333333333333333333333333333333333333333333
+2494 3333333333333333333333333333333333333333333333333333333
+2495 3333333333333333333333333333333333333333333333333333333
+2496 3333333333333333333333333333333333333333333333333333333
+2497 3333333333333333333333333333333333333333333333333333333
+2498 3333333333333333333333333333333333333333333333333333333
+2499 3333333333333333333333333333333333333333333333333333333
+2500 3333333333333333333333333333333333333333333333333333333
+2501 3333333333333333333333333333333333333333333333333333333
+2502 3333333333333333333333333333333333333333333333333333333
+2503 3333333333333333333333333333333333333333333333333333333
+2504 3333333333333333333333333333333333333333333333333333333
+2505 3333333333333333333333333333333333333333333333333333333
+2506 3333333333333333333333333333333333333333333333333333333
+2507 3333333333333333333333333333333333333333333333333333333
+2508 3333333333333333333333333333333333333333333333333333333
+2509 3333333333333333333333333333333333333333333333333333333
+2510 3333333333333333333333333333333333333333333333333333333
+2511 3333333333333333333333333333333333333333333333333333333
+2512 3333333333333333333333333333333333333333333333333333333
+2513 3333333333333333333333333333333333333333333333333333333
+2514 3333333333333333333333333333333333333333333333333333333
+2515 3333333333333333333333333333333333333333333333333333333
+2516 3333333333333333333333333333333333333333333333333333333
+2517 3333333333333333333333333333333333333333333333333333333
+2518 3333333333333333333333333333333333333333333333333333333
+2519 3333333333333333333333333333333333333333333333333333333
+2520 3333333333333333333333333333333333333333333333333333333
+2521 3333333333333333333333333333333333333333333333333333333
+2522 3333333333333333333333333333333333333333333333333333333
+2523 3333333333333333333333333333333333333333333333333333333
+2524 3333333333333333333333333333333333333333333333333333333
+2525 3333333333333333333333333333333333333333333333333333333
+2526 3333333333333333333333333333333333333333333333333333333
+2527 3333333333333333333333333333333333333333333333333333333
+2528 3333333333333333333333333333333333333333333333333333333
+2529 3333333333333333333333333333333333333333333333333333333
+2530 3333333333333333333333333333333333333333333333333333333
+2531 3333333333333333333333333333333333333333333333333333333
+2532 3333333333333333333333333333333333333333333333333333333
+2533 3333333333333333333333333333333333333333333333333333333
+2534 3333333333333333333333333333333333333333333333333333333
+2535 3333333333333333333333333333333333333333333333333333333
+2536 3333333333333333333333333333333333333333333333333333333
+2537 3333333333333333333333333333333333333333333333333333333
+2538 3333333333333333333333333333333333333333333333333333333
+2539 3333333333333333333333333333333333333333333333333333333
+2540 3333333333333333333333333333333333333333333333333333333
+2541 3333333333333333333333333333333333333333333333333333333
+2542 3333333333333333333333333333333333333333333333333333333
+2543 3333333333333333333333333333333333333333333333333333333
+2544 3333333333333333333333333333333333333333333333333333333
+2545 3333333333333333333333333333333333333333333333333333333
+2546 3333333333333333333333333333333333333333333333333333333
+2547 3333333333333333333333333333333333333333333333333333333
+2548 3333333333333333333333333333333333333333333333333333333
+2549 3333333333333333333333333333333333333333333333333333333
+2550 3333333333333333333333333333333333333333333333333333333
+2551 3333333333333333333333333333333333333333333333333333333
+2552 3333333333333333333333333333333333333333333333333333333
+2553 3333333333333333333333333333333333333333333333333333333
+2554 3333333333333333333333333333333333333333333333333333333
+2555 3333333333333333333333333333333333333333333333333333333
+2556 3333333333333333333333333333333333333333333333333333333
+2557 3333333333333333333333333333333333333333333333333333333
+2558 3333333333333333333333333333333333333333333333333333333
+2559 3333333333333333333333333333333333333333333333333333333
+2560 3333333333333333333333333333333333333333333333333333333
+2561 3333333333333333333333333333333333333333333333333333333
+2562 3333333333333333333333333333333333333333333333333333333
+2563 3333333333333333333333333333333333333333333333333333333
+2564 3333333333333333333333333333333333333333333333333333333
+2565 3333333333333333333333333333333333333333333333333333333
+2566 3333333333333333333333333333333333333333333333333333333
+2567 3333333333333333333333333333333333333333333333333333333
+2568 3333333333333333333333333333333333333333333333333333333
+2569 3333333333333333333333333333333333333333333333333333333
+2570 3333333333333333333333333333333333333333333333333333333
+2571 3333333333333333333333333333333333333333333333333333333
+2572 3333333333333333333333333333333333333333333333333333333
+2573 3333333333333333333333333333333333333333333333333333333
+2574 3333333333333333333333333333333333333333333333333333333
+2575 3333333333333333333333333333333333333333333333333333333
+2576 3333333333333333333333333333333333333333333333333333333
+2577 3333333333333333333333333333333333333333333333333333333
+2578 3333333333333333333333333333333333333333333333333333333
+2579 3333333333333333333333333333333333333333333333333333333
+2580 3333333333333333333333333333333333333333333333333333333
+2581 3333333333333333333333333333333333333333333333333333333
+2582 3333333333333333333333333333333333333333333333333333333
+2583 3333333333333333333333333333333333333333333333333333333
+2584 3333333333333333333333333333333333333333333333333333333
+2585 3333333333333333333333333333333333333333333333333333333
+2586 3333333333333333333333333333333333333333333333333333333
+2587 3333333333333333333333333333333333333333333333333333333
+2588 3333333333333333333333333333333333333333333333333333333
+2589 3333333333333333333333333333333333333333333333333333333
+2590 3333333333333333333333333333333333333333333333333333333
+2591 3333333333333333333333333333333333333333333333333333333
+2592 3333333333333333333333333333333333333333333333333333333
+2593 3333333333333333333333333333333333333333333333333333333
+2594 3333333333333333333333333333333333333333333333333333333
+2595 3333333333333333333333333333333333333333333333333333333
+2596 3333333333333333333333333333333333333333333333333333333
+2597 3333333333333333333333333333333333333333333333333333333
+2598 3333333333333333333333333333333333333333333333333333333
+2599 3333333333333333333333333333333333333333333333333333333
+2600 3333333333333333333333333333333333333333333333333333333
+2601 3333333333333333333333333333333333333333333333333333333
+2602 3333333333333333333333333333333333333333333333333333333
+2603 3333333333333333333333333333333333333333333333333333333
+2604 3333333333333333333333333333333333333333333333333333333
+2605 3333333333333333333333333333333333333333333333333333333
+2606 3333333333333333333333333333333333333333333333333333333
+2607 3333333333333333333333333333333333333333333333333333333
+2608 3333333333333333333333333333333333333333333333333333333
+2609 3333333333333333333333333333333333333333333333333333333
+2610 3333333333333333333333333333333333333333333333333333333
+2611 3333333333333333333333333333333333333333333333333333333
+2612 3333333333333333333333333333333333333333333333333333333
+2613 3333333333333333333333333333333333333333333333333333333
+2614 3333333333333333333333333333333333333333333333333333333
+2615 3333333333333333333333333333333333333333333333333333333
+2616 3333333333333333333333333333333333333333333333333333333
+2617 3333333333333333333333333333333333333333333333333333333
+2618 3333333333333333333333333333333333333333333333333333333
+2619 3333333333333333333333333333333333333333333333333333333
+2620 3333333333333333333333333333333333333333333333333333333
+2621 3333333333333333333333333333333333333333333333333333333
+2622 3333333333333333333333333333333333333333333333333333333
+2623 3333333333333333333333333333333333333333333333333333333
+2624 3333333333333333333333333333333333333333333333333333333
+2625 3333333333333333333333333333333333333333333333333333333
+2626 3333333333333333333333333333333333333333333333333333333
+2627 3333333333333333333333333333333333333333333333333333333
+2628 3333333333333333333333333333333333333333333333333333333
+2629 3333333333333333333333333333333333333333333333333333333
+2630 3333333333333333333333333333333333333333333333333333333
+2631 3333333333333333333333333333333333333333333333333333333
+2632 3333333333333333333333333333333333333333333333333333333
+2633 3333333333333333333333333333333333333333333333333333333
+2634 3333333333333333333333333333333333333333333333333333333
+2635 3333333333333333333333333333333333333333333333333333333
+2636 3333333333333333333333333333333333333333333333333333333
+2637 3333333333333333333333333333333333333333333333333333333
+2638 3333333333333333333333333333333333333333333333333333333
+2639 3333333333333333333333333333333333333333333333333333333
+2640 3333333333333333333333333333333333333333333333333333333
+2641 3333333333333333333333333333333333333333333333333333333
+2642 3333333333333333333333333333333333333333333333333333333
+2643 3333333333333333333333333333333333333333333333333333333
+2644 3333333333333333333333333333333333333333333333333333333
+2645 3333333333333333333333333333333333333333333333333333333
+2646 3333333333333333333333333333333333333333333333333333333
+2647 3333333333333333333333333333333333333333333333333333333
+2648 3333333333333333333333333333333333333333333333333333333
+2649 3333333333333333333333333333333333333333333333333333333
+2650 3333333333333333333333333333333333333333333333333333333
+2651 3333333333333333333333333333333333333333333333333333333
+2652 3333333333333333333333333333333333333333333333333333333
+2653 3333333333333333333333333333333333333333333333333333333
+2654 3333333333333333333333333333333333333333333333333333333
+2655 3333333333333333333333333333333333333333333333333333333
+2656 3333333333333333333333333333333333333333333333333333333
+2657 3333333333333333333333333333333333333333333333333333333
+2658 3333333333333333333333333333333333333333333333333333333
+2659 3333333333333333333333333333333333333333333333333333333
+2660 3333333333333333333333333333333333333333333333333333333
+2661 3333333333333333333333333333333333333333333333333333333
+2662 3333333333333333333333333333333333333333333333333333333
+2663 3333333333333333333333333333333333333333333333333333333
+2664 3333333333333333333333333333333333333333333333333333333
+2665 3333333333333333333333333333333333333333333333333333333
+2666 3333333333333333333333333333333333333333333333333333333
+2667 3333333333333333333333333333333333333333333333333333333
+2668 3333333333333333333333333333333333333333333333333333333
+2669 3333333333333333333333333333333333333333333333333333333
+2670 3333333333333333333333333333333333333333333333333333333
+2671 3333333333333333333333333333333333333333333333333333333
+2672 3333333333333333333333333333333333333333333333333333333
+2673 3333333333333333333333333333333333333333333333333333333
+2674 3333333333333333333333333333333333333333333333333333333
+2675 3333333333333333333333333333333333333333333333333333333
+2676 3333333333333333333333333333333333333333333333333333333
+2677 3333333333333333333333333333333333333333333333333333333
+2678 3333333333333333333333333333333333333333333333333333333
+2679 3333333333333333333333333333333333333333333333333333333
+2680 3333333333333333333333333333333333333333333333333333333
+2681 3333333333333333333333333333333333333333333333333333333
+2682 3333333333333333333333333333333333333333333333333333333
+2683 3333333333333333333333333333333333333333333333333333333
+2684 3333333333333333333333333333333333333333333333333333333
+2685 3333333333333333333333333333333333333333333333333333333
+2686 3333333333333333333333333333333333333333333333333333333
+2687 3333333333333333333333333333333333333333333333333333333
+2688 3333333333333333333333333333333333333333333333333333333
+2689 3333333333333333333333333333333333333333333333333333333
+2690 3333333333333333333333333333333333333333333333333333333
+2691 3333333333333333333333333333333333333333333333333333333
+2692 3333333333333333333333333333333333333333333333333333333
+2693 3333333333333333333333333333333333333333333333333333333
+2694 3333333333333333333333333333333333333333333333333333333
+2695 3333333333333333333333333333333333333333333333333333333
+2696 3333333333333333333333333333333333333333333333333333333
+2697 3333333333333333333333333333333333333333333333333333333
+2698 3333333333333333333333333333333333333333333333333333333
+2699 3333333333333333333333333333333333333333333333333333333
+2700 3333333333333333333333333333333333333333333333333333333
+2701 3333333333333333333333333333333333333333333333333333333
+2702 3333333333333333333333333333333333333333333333333333333
+2703 3333333333333333333333333333333333333333333333333333333
+2704 3333333333333333333333333333333333333333333333333333333
+2705 3333333333333333333333333333333333333333333333333333333
+2706 3333333333333333333333333333333333333333333333333333333
+2707 3333333333333333333333333333333333333333333333333333333
+2708 3333333333333333333333333333333333333333333333333333333
+2709 3333333333333333333333333333333333333333333333333333333
+2710 3333333333333333333333333333333333333333333333333333333
+2711 3333333333333333333333333333333333333333333333333333333
+2712 3333333333333333333333333333333333333333333333333333333
+2713 3333333333333333333333333333333333333333333333333333333
+2714 3333333333333333333333333333333333333333333333333333333
+2715 3333333333333333333333333333333333333333333333333333333
+2716 3333333333333333333333333333333333333333333333333333333
+2717 3333333333333333333333333333333333333333333333333333333
+2718 3333333333333333333333333333333333333333333333333333333
+2719 3333333333333333333333333333333333333333333333333333333
+2720 3333333333333333333333333333333333333333333333333333333
+2721 3333333333333333333333333333333333333333333333333333333
+2722 3333333333333333333333333333333333333333333333333333333
+2723 3333333333333333333333333333333333333333333333333333333
+2724 3333333333333333333333333333333333333333333333333333333
+2725 3333333333333333333333333333333333333333333333333333333
+2726 3333333333333333333333333333333333333333333333333333333
+2727 3333333333333333333333333333333333333333333333333333333
+2728 3333333333333333333333333333333333333333333333333333333
+2729 3333333333333333333333333333333333333333333333333333333
+2730 3333333333333333333333333333333333333333333333333333333
+2731 3333333333333333333333333333333333333333333333333333333
+2732 3333333333333333333333333333333333333333333333333333333
+2733 3333333333333333333333333333333333333333333333333333333
+2734 3333333333333333333333333333333333333333333333333333333
+2735 3333333333333333333333333333333333333333333333333333333
+2736 3333333333333333333333333333333333333333333333333333333
+2737 3333333333333333333333333333333333333333333333333333333
+2738 3333333333333333333333333333333333333333333333333333333
+2739 3333333333333333333333333333333333333333333333333333333
+2740 3333333333333333333333333333333333333333333333333333333
+2741 3333333333333333333333333333333333333333333333333333333
+2742 3333333333333333333333333333333333333333333333333333333
+2743 3333333333333333333333333333333333333333333333333333333
+2744 3333333333333333333333333333333333333333333333333333333
+2745 3333333333333333333333333333333333333333333333333333333
+2746 3333333333333333333333333333333333333333333333333333333
+2747 3333333333333333333333333333333333333333333333333333333
+2748 3333333333333333333333333333333333333333333333333333333
+2749 3333333333333333333333333333333333333333333333333333333
+2750 3333333333333333333333333333333333333333333333333333333
+2751 3333333333333333333333333333333333333333333333333333333
+2752 3333333333333333333333333333333333333333333333333333333
+2753 3333333333333333333333333333333333333333333333333333333
+2754 3333333333333333333333333333333333333333333333333333333
+2755 3333333333333333333333333333333333333333333333333333333
+2756 3333333333333333333333333333333333333333333333333333333
+2757 3333333333333333333333333333333333333333333333333333333
+2758 3333333333333333333333333333333333333333333333333333333
+2759 3333333333333333333333333333333333333333333333333333333
+2760 3333333333333333333333333333333333333333333333333333333
+2761 3333333333333333333333333333333333333333333333333333333
+2762 3333333333333333333333333333333333333333333333333333333
+2763 3333333333333333333333333333333333333333333333333333333
+2764 3333333333333333333333333333333333333333333333333333333
+2765 3333333333333333333333333333333333333333333333333333333
+2766 3333333333333333333333333333333333333333333333333333333
+2767 3333333333333333333333333333333333333333333333333333333
+2768 3333333333333333333333333333333333333333333333333333333
+2769 3333333333333333333333333333333333333333333333333333333
+2770 3333333333333333333333333333333333333333333333333333333
+2771 3333333333333333333333333333333333333333333333333333333
+2772 3333333333333333333333333333333333333333333333333333333
+2773 3333333333333333333333333333333333333333333333333333333
+2774 3333333333333333333333333333333333333333333333333333333
+2775 3333333333333333333333333333333333333333333333333333333
+2776 3333333333333333333333333333333333333333333333333333333
+2777 3333333333333333333333333333333333333333333333333333333
+2778 3333333333333333333333333333333333333333333333333333333
+2779 3333333333333333333333333333333333333333333333333333333
+2780 3333333333333333333333333333333333333333333333333333333
+2781 3333333333333333333333333333333333333333333333333333333
+2782 3333333333333333333333333333333333333333333333333333333
+2783 3333333333333333333333333333333333333333333333333333333
+2784 3333333333333333333333333333333333333333333333333333333
+2785 3333333333333333333333333333333333333333333333333333333
+2786 3333333333333333333333333333333333333333333333333333333
+2787 3333333333333333333333333333333333333333333333333333333
+2788 3333333333333333333333333333333333333333333333333333333
+2789 3333333333333333333333333333333333333333333333333333333
+2790 3333333333333333333333333333333333333333333333333333333
+2791 3333333333333333333333333333333333333333333333333333333
+2792 3333333333333333333333333333333333333333333333333333333
+2793 3333333333333333333333333333333333333333333333333333333
+2794 3333333333333333333333333333333333333333333333333333333
+2795 3333333333333333333333333333333333333333333333333333333
+2796 3333333333333333333333333333333333333333333333333333333
+2797 3333333333333333333333333333333333333333333333333333333
+2798 3333333333333333333333333333333333333333333333333333333
+2799 3333333333333333333333333333333333333333333333333333333
+2800 3333333333333333333333333333333333333333333333333333333
+2801 3333333333333333333333333333333333333333333333333333333
+2802 3333333333333333333333333333333333333333333333333333333
+2803 3333333333333333333333333333333333333333333333333333333
+2804 3333333333333333333333333333333333333333333333333333333
+2805 3333333333333333333333333333333333333333333333333333333
+2806 3333333333333333333333333333333333333333333333333333333
+2807 3333333333333333333333333333333333333333333333333333333
+2808 3333333333333333333333333333333333333333333333333333333
+2809 3333333333333333333333333333333333333333333333333333333
+2810 3333333333333333333333333333333333333333333333333333333
+2811 3333333333333333333333333333333333333333333333333333333
+2812 3333333333333333333333333333333333333333333333333333333
+2813 3333333333333333333333333333333333333333333333333333333
+2814 3333333333333333333333333333333333333333333333333333333
+2815 3333333333333333333333333333333333333333333333333333333
+2816 3333333333333333333333333333333333333333333333333333333
+2817 3333333333333333333333333333333333333333333333333333333
+2818 3333333333333333333333333333333333333333333333333333333
+2819 3333333333333333333333333333333333333333333333333333333
+2820 3333333333333333333333333333333333333333333333333333333
+2821 3333333333333333333333333333333333333333333333333333333
+2822 3333333333333333333333333333333333333333333333333333333
+2823 3333333333333333333333333333333333333333333333333333333
+2824 3333333333333333333333333333333333333333333333333333333
+2825 3333333333333333333333333333333333333333333333333333333
+2826 3333333333333333333333333333333333333333333333333333333
+2827 3333333333333333333333333333333333333333333333333333333
+2828 3333333333333333333333333333333333333333333333333333333
+2829 3333333333333333333333333333333333333333333333333333333
+2830 3333333333333333333333333333333333333333333333333333333
+2831 3333333333333333333333333333333333333333333333333333333
+2832 3333333333333333333333333333333333333333333333333333333
+2833 3333333333333333333333333333333333333333333333333333333
+2834 3333333333333333333333333333333333333333333333333333333
+2835 3333333333333333333333333333333333333333333333333333333
+2836 3333333333333333333333333333333333333333333333333333333
+2837 3333333333333333333333333333333333333333333333333333333
+2838 3333333333333333333333333333333333333333333333333333333
+2839 3333333333333333333333333333333333333333333333333333333
+2840 3333333333333333333333333333333333333333333333333333333
+2841 3333333333333333333333333333333333333333333333333333333
+2842 3333333333333333333333333333333333333333333333333333333
+2843 3333333333333333333333333333333333333333333333333333333
+2844 3333333333333333333333333333333333333333333333333333333
+2845 3333333333333333333333333333333333333333333333333333333
+2846 3333333333333333333333333333333333333333333333333333333
+2847 3333333333333333333333333333333333333333333333333333333
+2848 3333333333333333333333333333333333333333333333333333333
+2849 3333333333333333333333333333333333333333333333333333333
+2850 3333333333333333333333333333333333333333333333333333333
+2851 3333333333333333333333333333333333333333333333333333333
+2852 3333333333333333333333333333333333333333333333333333333
+2853 3333333333333333333333333333333333333333333333333333333
+2854 3333333333333333333333333333333333333333333333333333333
+2855 3333333333333333333333333333333333333333333333333333333
+2856 3333333333333333333333333333333333333333333333333333333
+2857 3333333333333333333333333333333333333333333333333333333
+2858 3333333333333333333333333333333333333333333333333333333
+2859 3333333333333333333333333333333333333333333333333333333
+2860 3333333333333333333333333333333333333333333333333333333
+2861 3333333333333333333333333333333333333333333333333333333
+2862 3333333333333333333333333333333333333333333333333333333
+2863 3333333333333333333333333333333333333333333333333333333
+2864 3333333333333333333333333333333333333333333333333333333
+2865 3333333333333333333333333333333333333333333333333333333
+2866 3333333333333333333333333333333333333333333333333333333
+2867 3333333333333333333333333333333333333333333333333333333
+2868 3333333333333333333333333333333333333333333333333333333
+2869 3333333333333333333333333333333333333333333333333333333
+2870 3333333333333333333333333333333333333333333333333333333
+2871 3333333333333333333333333333333333333333333333333333333
+2872 3333333333333333333333333333333333333333333333333333333
+2873 3333333333333333333333333333333333333333333333333333333
+2874 3333333333333333333333333333333333333333333333333333333
+2875 3333333333333333333333333333333333333333333333333333333
+2876 3333333333333333333333333333333333333333333333333333333
+2877 3333333333333333333333333333333333333333333333333333333
+2878 3333333333333333333333333333333333333333333333333333333
+2879 3333333333333333333333333333333333333333333333333333333
+2880 3333333333333333333333333333333333333333333333333333333
+2881 3333333333333333333333333333333333333333333333333333333
+2882 3333333333333333333333333333333333333333333333333333333
+2883 3333333333333333333333333333333333333333333333333333333
+2884 3333333333333333333333333333333333333333333333333333333
+2885 3333333333333333333333333333333333333333333333333333333
+2886 3333333333333333333333333333333333333333333333333333333
+2887 3333333333333333333333333333333333333333333333333333333
+2888 3333333333333333333333333333333333333333333333333333333
+2889 3333333333333333333333333333333333333333333333333333333
+2890 3333333333333333333333333333333333333333333333333333333
+2891 3333333333333333333333333333333333333333333333333333333
+2892 3333333333333333333333333333333333333333333333333333333
+2893 3333333333333333333333333333333333333333333333333333333
+2894 3333333333333333333333333333333333333333333333333333333
+2895 3333333333333333333333333333333333333333333333333333333
+2896 3333333333333333333333333333333333333333333333333333333
+2897 3333333333333333333333333333333333333333333333333333333
+2898 3333333333333333333333333333333333333333333333333333333
+2899 3333333333333333333333333333333333333333333333333333333
+2900 3333333333333333333333333333333333333333333333333333333
+2901 3333333333333333333333333333333333333333333333333333333
+2902 3333333333333333333333333333333333333333333333333333333
+2903 3333333333333333333333333333333333333333333333333333333
+2904 3333333333333333333333333333333333333333333333333333333
+2905 3333333333333333333333333333333333333333333333333333333
+2906 3333333333333333333333333333333333333333333333333333333
+2907 3333333333333333333333333333333333333333333333333333333
+2908 3333333333333333333333333333333333333333333333333333333
+2909 3333333333333333333333333333333333333333333333333333333
+2910 3333333333333333333333333333333333333333333333333333333
+2911 3333333333333333333333333333333333333333333333333333333
+2912 3333333333333333333333333333333333333333333333333333333
+2913 3333333333333333333333333333333333333333333333333333333
+2914 3333333333333333333333333333333333333333333333333333333
+2915 3333333333333333333333333333333333333333333333333333333
+2916 3333333333333333333333333333333333333333333333333333333
+2917 3333333333333333333333333333333333333333333333333333333
+2918 3333333333333333333333333333333333333333333333333333333
+2919 3333333333333333333333333333333333333333333333333333333
+2920 3333333333333333333333333333333333333333333333333333333
+2921 3333333333333333333333333333333333333333333333333333333
+2922 3333333333333333333333333333333333333333333333333333333
+2923 3333333333333333333333333333333333333333333333333333333
+2924 3333333333333333333333333333333333333333333333333333333
+2925 3333333333333333333333333333333333333333333333333333333
+2926 3333333333333333333333333333333333333333333333333333333
+2927 3333333333333333333333333333333333333333333333333333333
+2928 3333333333333333333333333333333333333333333333333333333
+2929 3333333333333333333333333333333333333333333333333333333
+2930 3333333333333333333333333333333333333333333333333333333
+2931 3333333333333333333333333333333333333333333333333333333
+2932 3333333333333333333333333333333333333333333333333333333
+2933 3333333333333333333333333333333333333333333333333333333
+2934 3333333333333333333333333333333333333333333333333333333
+2935 3333333333333333333333333333333333333333333333333333333
+2936 3333333333333333333333333333333333333333333333333333333
+2937 3333333333333333333333333333333333333333333333333333333
+2938 3333333333333333333333333333333333333333333333333333333
+2939 3333333333333333333333333333333333333333333333333333333
+2940 3333333333333333333333333333333333333333333333333333333
+2941 3333333333333333333333333333333333333333333333333333333
+2942 3333333333333333333333333333333333333333333333333333333
+2943 3333333333333333333333333333333333333333333333333333333
+2944 3333333333333333333333333333333333333333333333333333333
+2945 3333333333333333333333333333333333333333333333333333333
+2946 3333333333333333333333333333333333333333333333333333333
+2947 3333333333333333333333333333333333333333333333333333333
+2948 3333333333333333333333333333333333333333333333333333333
+2949 3333333333333333333333333333333333333333333333333333333
+2950 3333333333333333333333333333333333333333333333333333333
+2951 3333333333333333333333333333333333333333333333333333333
+2952 3333333333333333333333333333333333333333333333333333333
+2953 3333333333333333333333333333333333333333333333333333333
+2954 3333333333333333333333333333333333333333333333333333333
+2955 3333333333333333333333333333333333333333333333333333333
+2956 3333333333333333333333333333333333333333333333333333333
+2957 3333333333333333333333333333333333333333333333333333333
+2958 3333333333333333333333333333333333333333333333333333333
+2959 3333333333333333333333333333333333333333333333333333333
+2960 3333333333333333333333333333333333333333333333333333333
+2961 3333333333333333333333333333333333333333333333333333333
+2962 3333333333333333333333333333333333333333333333333333333
+2963 3333333333333333333333333333333333333333333333333333333
+2964 3333333333333333333333333333333333333333333333333333333
+2965 3333333333333333333333333333333333333333333333333333333
+2966 3333333333333333333333333333333333333333333333333333333
+2967 3333333333333333333333333333333333333333333333333333333
+2968 3333333333333333333333333333333333333333333333333333333
+2969 3333333333333333333333333333333333333333333333333333333
+2970 3333333333333333333333333333333333333333333333333333333
+2971 3333333333333333333333333333333333333333333333333333333
+2972 3333333333333333333333333333333333333333333333333333333
+2973 3333333333333333333333333333333333333333333333333333333
+2974 3333333333333333333333333333333333333333333333333333333
+2975 3333333333333333333333333333333333333333333333333333333
+2976 3333333333333333333333333333333333333333333333333333333
+2977 3333333333333333333333333333333333333333333333333333333
+2978 3333333333333333333333333333333333333333333333333333333
+2979 3333333333333333333333333333333333333333333333333333333
+2980 3333333333333333333333333333333333333333333333333333333
+2981 3333333333333333333333333333333333333333333333333333333
+2982 3333333333333333333333333333333333333333333333333333333
+2983 3333333333333333333333333333333333333333333333333333333
+2984 3333333333333333333333333333333333333333333333333333333
+2985 3333333333333333333333333333333333333333333333333333333
+2986 3333333333333333333333333333333333333333333333333333333
+2987 3333333333333333333333333333333333333333333333333333333
+2988 3333333333333333333333333333333333333333333333333333333
+2989 3333333333333333333333333333333333333333333333333333333
+2990 3333333333333333333333333333333333333333333333333333333
+2991 3333333333333333333333333333333333333333333333333333333
+2992 3333333333333333333333333333333333333333333333333333333
+2993 3333333333333333333333333333333333333333333333333333333
+2994 3333333333333333333333333333333333333333333333333333333
+2995 3333333333333333333333333333333333333333333333333333333
+2996 3333333333333333333333333333333333333333333333333333333
+2997 3333333333333333333333333333333333333333333333333333333
+2998 3333333333333333333333333333333333333333333333333333333
+2999 3333333333333333333333333333333333333333333333333333333
+3000 3333333333333333333333333333333333333333333333333333333
+3001 3333333333333333333333333333333333333333333333333333333
+3002 3333333333333333333333333333333333333333333333333333333
+3003 3333333333333333333333333333333333333333333333333333333
+3004 3333333333333333333333333333333333333333333333333333333
+3005 3333333333333333333333333333333333333333333333333333333
+3006 3333333333333333333333333333333333333333333333333333333
+3007 3333333333333333333333333333333333333333333333333333333
+3008 3333333333333333333333333333333333333333333333333333333
+3009 3333333333333333333333333333333333333333333333333333333
+3010 3333333333333333333333333333333333333333333333333333333
+3011 3333333333333333333333333333333333333333333333333333333
+3012 3333333333333333333333333333333333333333333333333333333
+3013 3333333333333333333333333333333333333333333333333333333
+3014 3333333333333333333333333333333333333333333333333333333
+3015 3333333333333333333333333333333333333333333333333333333
+3016 3333333333333333333333333333333333333333333333333333333
+3017 3333333333333333333333333333333333333333333333333333333
+3018 3333333333333333333333333333333333333333333333333333333
+3019 3333333333333333333333333333333333333333333333333333333
+3020 3333333333333333333333333333333333333333333333333333333
+3021 3333333333333333333333333333333333333333333333333333333
+3022 3333333333333333333333333333333333333333333333333333333
+3023 3333333333333333333333333333333333333333333333333333333
+3024 3333333333333333333333333333333333333333333333333333333
+3025 3333333333333333333333333333333333333333333333333333333
+3026 3333333333333333333333333333333333333333333333333333333
+3027 3333333333333333333333333333333333333333333333333333333
+3028 3333333333333333333333333333333333333333333333333333333
+3029 3333333333333333333333333333333333333333333333333333333
+3030 3333333333333333333333333333333333333333333333333333333
+3031 3333333333333333333333333333333333333333333333333333333
+3032 3333333333333333333333333333333333333333333333333333333
+3033 3333333333333333333333333333333333333333333333333333333
+3034 3333333333333333333333333333333333333333333333333333333
+3035 3333333333333333333333333333333333333333333333333333333
+3036 3333333333333333333333333333333333333333333333333333333
+3037 3333333333333333333333333333333333333333333333333333333
+3038 3333333333333333333333333333333333333333333333333333333
+3039 3333333333333333333333333333333333333333333333333333333
+3040 3333333333333333333333333333333333333333333333333333333
+3041 3333333333333333333333333333333333333333333333333333333
+3042 3333333333333333333333333333333333333333333333333333333
+3043 3333333333333333333333333333333333333333333333333333333
+3044 3333333333333333333333333333333333333333333333333333333
+3045 3333333333333333333333333333333333333333333333333333333
+3046 3333333333333333333333333333333333333333333333333333333
+3047 3333333333333333333333333333333333333333333333333333333
+3048 3333333333333333333333333333333333333333333333333333333
+3049 3333333333333333333333333333333333333333333333333333333
+3050 3333333333333333333333333333333333333333333333333333333
+3051 3333333333333333333333333333333333333333333333333333333
+3052 3333333333333333333333333333333333333333333333333333333
+3053 3333333333333333333333333333333333333333333333333333333
+3054 3333333333333333333333333333333333333333333333333333333
+3055 3333333333333333333333333333333333333333333333333333333
+3056 3333333333333333333333333333333333333333333333333333333
+3057 3333333333333333333333333333333333333333333333333333333
+3058 3333333333333333333333333333333333333333333333333333333
+3059 3333333333333333333333333333333333333333333333333333333
+3060 3333333333333333333333333333333333333333333333333333333
+3061 3333333333333333333333333333333333333333333333333333333
+3062 3333333333333333333333333333333333333333333333333333333
+3063 3333333333333333333333333333333333333333333333333333333
+3064 3333333333333333333333333333333333333333333333333333333
+3065 3333333333333333333333333333333333333333333333333333333
+3066 3333333333333333333333333333333333333333333333333333333
+3067 3333333333333333333333333333333333333333333333333333333
+3068 3333333333333333333333333333333333333333333333333333333
+3069 3333333333333333333333333333333333333333333333333333333
+3070 3333333333333333333333333333333333333333333333333333333
+3071 3333333333333333333333333333333333333333333333333333333
+3072 3333333333333333333333333333333333333333333333333333333
+3073 3333333333333333333333333333333333333333333333333333333
+3074 3333333333333333333333333333333333333333333333333333333
+3075 3333333333333333333333333333333333333333333333333333333
+3076 3333333333333333333333333333333333333333333333333333333
+3077 3333333333333333333333333333333333333333333333333333333
+3078 3333333333333333333333333333333333333333333333333333333
+3079 3333333333333333333333333333333333333333333333333333333
+3080 3333333333333333333333333333333333333333333333333333333
+3081 3333333333333333333333333333333333333333333333333333333
+3082 3333333333333333333333333333333333333333333333333333333
+3083 3333333333333333333333333333333333333333333333333333333
+3084 3333333333333333333333333333333333333333333333333333333
+3085 3333333333333333333333333333333333333333333333333333333
+3086 3333333333333333333333333333333333333333333333333333333
+3087 3333333333333333333333333333333333333333333333333333333
+3088 3333333333333333333333333333333333333333333333333333333
+3089 3333333333333333333333333333333333333333333333333333333
+3090 3333333333333333333333333333333333333333333333333333333
+3091 3333333333333333333333333333333333333333333333333333333
+3092 3333333333333333333333333333333333333333333333333333333
+3093 3333333333333333333333333333333333333333333333333333333
+3094 3333333333333333333333333333333333333333333333333333333
+3095 3333333333333333333333333333333333333333333333333333333
+3096 3333333333333333333333333333333333333333333333333333333
+3097 3333333333333333333333333333333333333333333333333333333
+3098 3333333333333333333333333333333333333333333333333333333
+3099 3333333333333333333333333333333333333333333333333333333
+3100 3333333333333333333333333333333333333333333333333333333
+3101 3333333333333333333333333333333333333333333333333333333
+3102 3333333333333333333333333333333333333333333333333333333
+3103 3333333333333333333333333333333333333333333333333333333
+3104 3333333333333333333333333333333333333333333333333333333
+3105 3333333333333333333333333333333333333333333333333333333
+3106 3333333333333333333333333333333333333333333333333333333
+3107 3333333333333333333333333333333333333333333333333333333
+3108 3333333333333333333333333333333333333333333333333333333
+3109 3333333333333333333333333333333333333333333333333333333
+3110 3333333333333333333333333333333333333333333333333333333
+3111 3333333333333333333333333333333333333333333333333333333
+3112 3333333333333333333333333333333333333333333333333333333
+3113 3333333333333333333333333333333333333333333333333333333
+3114 3333333333333333333333333333333333333333333333333333333
+3115 3333333333333333333333333333333333333333333333333333333
+3116 3333333333333333333333333333333333333333333333333333333
+3117 3333333333333333333333333333333333333333333333333333333
+3118 3333333333333333333333333333333333333333333333333333333
+3119 3333333333333333333333333333333333333333333333333333333
+3120 3333333333333333333333333333333333333333333333333333333
+3121 3333333333333333333333333333333333333333333333333333333
+3122 3333333333333333333333333333333333333333333333333333333
+3123 3333333333333333333333333333333333333333333333333333333
+3124 3333333333333333333333333333333333333333333333333333333
+3125 3333333333333333333333333333333333333333333333333333333
+3126 3333333333333333333333333333333333333333333333333333333
+3127 3333333333333333333333333333333333333333333333333333333
+3128 3333333333333333333333333333333333333333333333333333333
+3129 3333333333333333333333333333333333333333333333333333333
+3130 3333333333333333333333333333333333333333333333333333333
+3131 3333333333333333333333333333333333333333333333333333333
+3132 3333333333333333333333333333333333333333333333333333333
+3133 3333333333333333333333333333333333333333333333333333333
+3134 3333333333333333333333333333333333333333333333333333333
+3135 3333333333333333333333333333333333333333333333333333333
+3136 3333333333333333333333333333333333333333333333333333333
+3137 3333333333333333333333333333333333333333333333333333333
+3138 3333333333333333333333333333333333333333333333333333333
+3139 3333333333333333333333333333333333333333333333333333333
+3140 3333333333333333333333333333333333333333333333333333333
+3141 3333333333333333333333333333333333333333333333333333333
+3142 3333333333333333333333333333333333333333333333333333333
+3143 3333333333333333333333333333333333333333333333333333333
+3144 3333333333333333333333333333333333333333333333333333333
+3145 3333333333333333333333333333333333333333333333333333333
+3146 3333333333333333333333333333333333333333333333333333333
+3147 3333333333333333333333333333333333333333333333333333333
+3148 3333333333333333333333333333333333333333333333333333333
+3149 3333333333333333333333333333333333333333333333333333333
+3150 3333333333333333333333333333333333333333333333333333333
+3151 3333333333333333333333333333333333333333333333333333333
+3152 3333333333333333333333333333333333333333333333333333333
+3153 3333333333333333333333333333333333333333333333333333333
+3154 3333333333333333333333333333333333333333333333333333333
+3155 3333333333333333333333333333333333333333333333333333333
+3156 3333333333333333333333333333333333333333333333333333333
+3157 3333333333333333333333333333333333333333333333333333333
+3158 3333333333333333333333333333333333333333333333333333333
+3159 3333333333333333333333333333333333333333333333333333333
+3160 3333333333333333333333333333333333333333333333333333333
+3161 3333333333333333333333333333333333333333333333333333333
+3162 3333333333333333333333333333333333333333333333333333333
+3163 3333333333333333333333333333333333333333333333333333333
+3164 3333333333333333333333333333333333333333333333333333333
+3165 3333333333333333333333333333333333333333333333333333333
+3166 3333333333333333333333333333333333333333333333333333333
+3167 3333333333333333333333333333333333333333333333333333333
+3168 3333333333333333333333333333333333333333333333333333333
+3169 3333333333333333333333333333333333333333333333333333333
+3170 3333333333333333333333333333333333333333333333333333333
+3171 3333333333333333333333333333333333333333333333333333333
+3172 3333333333333333333333333333333333333333333333333333333
+3173 3333333333333333333333333333333333333333333333333333333
+3174 3333333333333333333333333333333333333333333333333333333
+3175 3333333333333333333333333333333333333333333333333333333
+3176 3333333333333333333333333333333333333333333333333333333
+3177 3333333333333333333333333333333333333333333333333333333
+3178 3333333333333333333333333333333333333333333333333333333
+3179 3333333333333333333333333333333333333333333333333333333
+3180 3333333333333333333333333333333333333333333333333333333
+3181 3333333333333333333333333333333333333333333333333333333
+3182 3333333333333333333333333333333333333333333333333333333
+3183 3333333333333333333333333333333333333333333333333333333
+3184 3333333333333333333333333333333333333333333333333333333
+3185 3333333333333333333333333333333333333333333333333333333
+3186 3333333333333333333333333333333333333333333333333333333
+3187 3333333333333333333333333333333333333333333333333333333
+3188 3333333333333333333333333333333333333333333333333333333
+3189 3333333333333333333333333333333333333333333333333333333
+3190 3333333333333333333333333333333333333333333333333333333
+3191 3333333333333333333333333333333333333333333333333333333
+3192 3333333333333333333333333333333333333333333333333333333
+3193 3333333333333333333333333333333333333333333333333333333
+3194 3333333333333333333333333333333333333333333333333333333
+3195 3333333333333333333333333333333333333333333333333333333
+3196 3333333333333333333333333333333333333333333333333333333
+3197 3333333333333333333333333333333333333333333333333333333
+3198 3333333333333333333333333333333333333333333333333333333
+3199 3333333333333333333333333333333333333333333333333333333
+3200 3333333333333333333333333333333333333333333333333333333
+3201 3333333333333333333333333333333333333333333333333333333
+3202 3333333333333333333333333333333333333333333333333333333
+3203 3333333333333333333333333333333333333333333333333333333
+3204 3333333333333333333333333333333333333333333333333333333
+3205 3333333333333333333333333333333333333333333333333333333
+3206 3333333333333333333333333333333333333333333333333333333
+3207 3333333333333333333333333333333333333333333333333333333
+3208 3333333333333333333333333333333333333333333333333333333
+3209 3333333333333333333333333333333333333333333333333333333
+3210 3333333333333333333333333333333333333333333333333333333
+3211 3333333333333333333333333333333333333333333333333333333
+3212 3333333333333333333333333333333333333333333333333333333
+3213 3333333333333333333333333333333333333333333333333333333
+3214 3333333333333333333333333333333333333333333333333333333
+3215 3333333333333333333333333333333333333333333333333333333
+3216 3333333333333333333333333333333333333333333333333333333
+3217 3333333333333333333333333333333333333333333333333333333
+3218 3333333333333333333333333333333333333333333333333333333
+3219 3333333333333333333333333333333333333333333333333333333
+3220 3333333333333333333333333333333333333333333333333333333
+3221 3333333333333333333333333333333333333333333333333333333
+3222 3333333333333333333333333333333333333333333333333333333
+3223 3333333333333333333333333333333333333333333333333333333
+3224 3333333333333333333333333333333333333333333333333333333
+3225 3333333333333333333333333333333333333333333333333333333
+3226 3333333333333333333333333333333333333333333333333333333
+3227 3333333333333333333333333333333333333333333333333333333
+3228 3333333333333333333333333333333333333333333333333333333
+3229 3333333333333333333333333333333333333333333333333333333
+3230 3333333333333333333333333333333333333333333333333333333
+3231 3333333333333333333333333333333333333333333333333333333
+3232 3333333333333333333333333333333333333333333333333333333
+3233 3333333333333333333333333333333333333333333333333333333
+3234 3333333333333333333333333333333333333333333333333333333
+3235 3333333333333333333333333333333333333333333333333333333
+3236 3333333333333333333333333333333333333333333333333333333
+3237 3333333333333333333333333333333333333333333333333333333
+3238 3333333333333333333333333333333333333333333333333333333
+3239 3333333333333333333333333333333333333333333333333333333
+3240 3333333333333333333333333333333333333333333333333333333
+3241 3333333333333333333333333333333333333333333333333333333
+3242 3333333333333333333333333333333333333333333333333333333
+3243 3333333333333333333333333333333333333333333333333333333
+3244 3333333333333333333333333333333333333333333333333333333
+3245 3333333333333333333333333333333333333333333333333333333
+3246 3333333333333333333333333333333333333333333333333333333
+3247 3333333333333333333333333333333333333333333333333333333
+3248 3333333333333333333333333333333333333333333333333333333
+3249 3333333333333333333333333333333333333333333333333333333
+3250 3333333333333333333333333333333333333333333333333333333
+3251 3333333333333333333333333333333333333333333333333333333
+3252 3333333333333333333333333333333333333333333333333333333
+3253 3333333333333333333333333333333333333333333333333333333
+3254 3333333333333333333333333333333333333333333333333333333
+3255 3333333333333333333333333333333333333333333333333333333
+3256 3333333333333333333333333333333333333333333333333333333
+3257 3333333333333333333333333333333333333333333333333333333
+3258 3333333333333333333333333333333333333333333333333333333
+3259 3333333333333333333333333333333333333333333333333333333
+3260 3333333333333333333333333333333333333333333333333333333
+3261 3333333333333333333333333333333333333333333333333333333
+3262 3333333333333333333333333333333333333333333333333333333
+3263 3333333333333333333333333333333333333333333333333333333
+3264 3333333333333333333333333333333333333333333333333333333
+3265 3333333333333333333333333333333333333333333333333333333
+3266 3333333333333333333333333333333333333333333333333333333
+3267 3333333333333333333333333333333333333333333333333333333
+3268 3333333333333333333333333333333333333333333333333333333
+3269 3333333333333333333333333333333333333333333333333333333
+3270 3333333333333333333333333333333333333333333333333333333
+3271 3333333333333333333333333333333333333333333333333333333
+3272 3333333333333333333333333333333333333333333333333333333
+3273 3333333333333333333333333333333333333333333333333333333
+3274 3333333333333333333333333333333333333333333333333333333
+3275 3333333333333333333333333333333333333333333333333333333
+3276 3333333333333333333333333333333333333333333333333333333
+3277 3333333333333333333333333333333333333333333333333333333
+3278 3333333333333333333333333333333333333333333333333333333
+3279 3333333333333333333333333333333333333333333333333333333
+3280 3333333333333333333333333333333333333333333333333333333
+3281 3333333333333333333333333333333333333333333333333333333
+3282 3333333333333333333333333333333333333333333333333333333
+3283 3333333333333333333333333333333333333333333333333333333
+3284 3333333333333333333333333333333333333333333333333333333
+3285 3333333333333333333333333333333333333333333333333333333
+3286 3333333333333333333333333333333333333333333333333333333
+3287 3333333333333333333333333333333333333333333333333333333
+3288 3333333333333333333333333333333333333333333333333333333
+3289 3333333333333333333333333333333333333333333333333333333
+3290 3333333333333333333333333333333333333333333333333333333
+3291 3333333333333333333333333333333333333333333333333333333
+3292 3333333333333333333333333333333333333333333333333333333
+3293 3333333333333333333333333333333333333333333333333333333
+3294 3333333333333333333333333333333333333333333333333333333
+3295 3333333333333333333333333333333333333333333333333333333
+3296 3333333333333333333333333333333333333333333333333333333
+3297 3333333333333333333333333333333333333333333333333333333
+3298 3333333333333333333333333333333333333333333333333333333
+3299 3333333333333333333333333333333333333333333333333333333
+3300 3333333333333333333333333333333333333333333333333333333
+3301 3333333333333333333333333333333333333333333333333333333
+3302 3333333333333333333333333333333333333333333333333333333
+3303 3333333333333333333333333333333333333333333333333333333
+3304 3333333333333333333333333333333333333333333333333333333
+3305 3333333333333333333333333333333333333333333333333333333
+3306 3333333333333333333333333333333333333333333333333333333
+3307 3333333333333333333333333333333333333333333333333333333
+3308 3333333333333333333333333333333333333333333333333333333
+3309 3333333333333333333333333333333333333333333333333333333
+3310 3333333333333333333333333333333333333333333333333333333
+3311 3333333333333333333333333333333333333333333333333333333
+3312 3333333333333333333333333333333333333333333333333333333
+3313 3333333333333333333333333333333333333333333333333333333
+3314 3333333333333333333333333333333333333333333333333333333
+3315 3333333333333333333333333333333333333333333333333333333
+3316 3333333333333333333333333333333333333333333333333333333
+3317 3333333333333333333333333333333333333333333333333333333
+3318 3333333333333333333333333333333333333333333333333333333
+3319 3333333333333333333333333333333333333333333333333333333
+3320 3333333333333333333333333333333333333333333333333333333
+3321 3333333333333333333333333333333333333333333333333333333
+3322 3333333333333333333333333333333333333333333333333333333
+3323 3333333333333333333333333333333333333333333333333333333
+3324 3333333333333333333333333333333333333333333333333333333
+3325 3333333333333333333333333333333333333333333333333333333
+3326 3333333333333333333333333333333333333333333333333333333
+3327 3333333333333333333333333333333333333333333333333333333
+3328 3333333333333333333333333333333333333333333333333333333
+3329 3333333333333333333333333333333333333333333333333333333
+3330 3333333333333333333333333333333333333333333333333333333
+3331 3333333333333333333333333333333333333333333333333333333
+3332 3333333333333333333333333333333333333333333333333333333
+3333 3333333333333333333333333333333333333333333333333333333
+3334 3333333333333333333333333333333333333333333333333333333
+3335 3333333333333333333333333333333333333333333333333333333
+3336 3333333333333333333333333333333333333333333333333333333
+3337 3333333333333333333333333333333333333333333333333333333
+3338 3333333333333333333333333333333333333333333333333333333
+3339 3333333333333333333333333333333333333333333333333333333
+3340 3333333333333333333333333333333333333333333333333333333
+3341 3333333333333333333333333333333333333333333333333333333
+3342 3333333333333333333333333333333333333333333333333333333
+3343 3333333333333333333333333333333333333333333333333333333
+3344 3333333333333333333333333333333333333333333333333333333
+3345 3333333333333333333333333333333333333333333333333333333
+3346 3333333333333333333333333333333333333333333333333333333
+3347 3333333333333333333333333333333333333333333333333333333
+3348 3333333333333333333333333333333333333333333333333333333
+3349 3333333333333333333333333333333333333333333333333333333
+3350 3333333333333333333333333333333333333333333333333333333
+3351 3333333333333333333333333333333333333333333333333333333
+3352 3333333333333333333333333333333333333333333333333333333
+3353 3333333333333333333333333333333333333333333333333333333
+3354 3333333333333333333333333333333333333333333333333333333
+3355 3333333333333333333333333333333333333333333333333333333
+3356 3333333333333333333333333333333333333333333333333333333
+3357 3333333333333333333333333333333333333333333333333333333
+3358 3333333333333333333333333333333333333333333333333333333
+3359 3333333333333333333333333333333333333333333333333333333
+3360 3333333333333333333333333333333333333333333333333333333
+3361 3333333333333333333333333333333333333333333333333333333
+3362 3333333333333333333333333333333333333333333333333333333
+3363 3333333333333333333333333333333333333333333333333333333
+3364 3333333333333333333333333333333333333333333333333333333
+3365 3333333333333333333333333333333333333333333333333333333
+3366 3333333333333333333333333333333333333333333333333333333
+3367 3333333333333333333333333333333333333333333333333333333
+3368 3333333333333333333333333333333333333333333333333333333
+3369 3333333333333333333333333333333333333333333333333333333
+3370 3333333333333333333333333333333333333333333333333333333
+3371 3333333333333333333333333333333333333333333333333333333
+3372 3333333333333333333333333333333333333333333333333333333
+3373 3333333333333333333333333333333333333333333333333333333
+3374 3333333333333333333333333333333333333333333333333333333
+3375 3333333333333333333333333333333333333333333333333333333
+3376 3333333333333333333333333333333333333333333333333333333
+3377 3333333333333333333333333333333333333333333333333333333
+3378 3333333333333333333333333333333333333333333333333333333
+3379 3333333333333333333333333333333333333333333333333333333
+3380 3333333333333333333333333333333333333333333333333333333
+3381 3333333333333333333333333333333333333333333333333333333
+3382 3333333333333333333333333333333333333333333333333333333
+3383 3333333333333333333333333333333333333333333333333333333
+3384 3333333333333333333333333333333333333333333333333333333
+3385 3333333333333333333333333333333333333333333333333333333
+3386 3333333333333333333333333333333333333333333333333333333
+3387 3333333333333333333333333333333333333333333333333333333
+3388 3333333333333333333333333333333333333333333333333333333
+3389 3333333333333333333333333333333333333333333333333333333
+3390 3333333333333333333333333333333333333333333333333333333
+3391 3333333333333333333333333333333333333333333333333333333
+3392 3333333333333333333333333333333333333333333333333333333
+3393 3333333333333333333333333333333333333333333333333333333
+3394 3333333333333333333333333333333333333333333333333333333
+3395 3333333333333333333333333333333333333333333333333333333
+3396 3333333333333333333333333333333333333333333333333333333
+3397 3333333333333333333333333333333333333333333333333333333
+3398 3333333333333333333333333333333333333333333333333333333
+3399 3333333333333333333333333333333333333333333333333333333
+3400 3333333333333333333333333333333333333333333333333333333
+3401 3333333333333333333333333333333333333333333333333333333
+3402 3333333333333333333333333333333333333333333333333333333
+3403 3333333333333333333333333333333333333333333333333333333
+3404 3333333333333333333333333333333333333333333333333333333
+3405 3333333333333333333333333333333333333333333333333333333
+3406 3333333333333333333333333333333333333333333333333333333
+3407 3333333333333333333333333333333333333333333333333333333
+3408 3333333333333333333333333333333333333333333333333333333
+3409 3333333333333333333333333333333333333333333333333333333
+3410 3333333333333333333333333333333333333333333333333333333
+3411 3333333333333333333333333333333333333333333333333333333
+3412 3333333333333333333333333333333333333333333333333333333
+3413 3333333333333333333333333333333333333333333333333333333
+3414 3333333333333333333333333333333333333333333333333333333
+3415 3333333333333333333333333333333333333333333333333333333
+3416 3333333333333333333333333333333333333333333333333333333
+3417 3333333333333333333333333333333333333333333333333333333
+3418 3333333333333333333333333333333333333333333333333333333
+3419 3333333333333333333333333333333333333333333333333333333
+3420 3333333333333333333333333333333333333333333333333333333
+3421 3333333333333333333333333333333333333333333333333333333
+3422 3333333333333333333333333333333333333333333333333333333
+3423 3333333333333333333333333333333333333333333333333333333
+3424 3333333333333333333333333333333333333333333333333333333
+3425 3333333333333333333333333333333333333333333333333333333
+3426 3333333333333333333333333333333333333333333333333333333
+3427 3333333333333333333333333333333333333333333333333333333
+3428 3333333333333333333333333333333333333333333333333333333
+3429 3333333333333333333333333333333333333333333333333333333
+3430 3333333333333333333333333333333333333333333333333333333
+3431 3333333333333333333333333333333333333333333333333333333
+3432 3333333333333333333333333333333333333333333333333333333
+3433 3333333333333333333333333333333333333333333333333333333
+3434 3333333333333333333333333333333333333333333333333333333
+3435 3333333333333333333333333333333333333333333333333333333
+3436 3333333333333333333333333333333333333333333333333333333
+3437 3333333333333333333333333333333333333333333333333333333
+3438 3333333333333333333333333333333333333333333333333333333
+3439 3333333333333333333333333333333333333333333333333333333
+3440 3333333333333333333333333333333333333333333333333333333
+3441 3333333333333333333333333333333333333333333333333333333
+3442 3333333333333333333333333333333333333333333333333333333
+3443 3333333333333333333333333333333333333333333333333333333
+3444 3333333333333333333333333333333333333333333333333333333
+3445 3333333333333333333333333333333333333333333333333333333
+3446 3333333333333333333333333333333333333333333333333333333
+3447 3333333333333333333333333333333333333333333333333333333
+3448 3333333333333333333333333333333333333333333333333333333
+3449 3333333333333333333333333333333333333333333333333333333
+3450 3333333333333333333333333333333333333333333333333333333
+3451 3333333333333333333333333333333333333333333333333333333
+3452 3333333333333333333333333333333333333333333333333333333
+3453 3333333333333333333333333333333333333333333333333333333
+3454 3333333333333333333333333333333333333333333333333333333
+3455 3333333333333333333333333333333333333333333333333333333
+3456 3333333333333333333333333333333333333333333333333333333
+3457 3333333333333333333333333333333333333333333333333333333
+3458 3333333333333333333333333333333333333333333333333333333
+3459 3333333333333333333333333333333333333333333333333333333
+3460 3333333333333333333333333333333333333333333333333333333
+3461 3333333333333333333333333333333333333333333333333333333
+3462 3333333333333333333333333333333333333333333333333333333
+3463 3333333333333333333333333333333333333333333333333333333
+3464 3333333333333333333333333333333333333333333333333333333
+3465 3333333333333333333333333333333333333333333333333333333
+3466 3333333333333333333333333333333333333333333333333333333
+3467 3333333333333333333333333333333333333333333333333333333
+3468 3333333333333333333333333333333333333333333333333333333
+3469 3333333333333333333333333333333333333333333333333333333
+3470 3333333333333333333333333333333333333333333333333333333
+3471 3333333333333333333333333333333333333333333333333333333
+3472 3333333333333333333333333333333333333333333333333333333
+3473 3333333333333333333333333333333333333333333333333333333
+3474 3333333333333333333333333333333333333333333333333333333
+3475 3333333333333333333333333333333333333333333333333333333
+3476 3333333333333333333333333333333333333333333333333333333
+3477 3333333333333333333333333333333333333333333333333333333
+3478 3333333333333333333333333333333333333333333333333333333
+3479 3333333333333333333333333333333333333333333333333333333
+3480 3333333333333333333333333333333333333333333333333333333
+3481 3333333333333333333333333333333333333333333333333333333
+3482 3333333333333333333333333333333333333333333333333333333
+3483 3333333333333333333333333333333333333333333333333333333
+3484 3333333333333333333333333333333333333333333333333333333
+3485 3333333333333333333333333333333333333333333333333333333
+3486 3333333333333333333333333333333333333333333333333333333
+3487 3333333333333333333333333333333333333333333333333333333
+3488 3333333333333333333333333333333333333333333333333333333
+3489 3333333333333333333333333333333333333333333333333333333
+3490 3333333333333333333333333333333333333333333333333333333
+3491 3333333333333333333333333333333333333333333333333333333
+3492 3333333333333333333333333333333333333333333333333333333
+3493 3333333333333333333333333333333333333333333333333333333
+3494 3333333333333333333333333333333333333333333333333333333
+3495 3333333333333333333333333333333333333333333333333333333
+3496 3333333333333333333333333333333333333333333333333333333
+3497 3333333333333333333333333333333333333333333333333333333
+3498 3333333333333333333333333333333333333333333333333333333
+3499 3333333333333333333333333333333333333333333333333333333
+3500 3333333333333333333333333333333333333333333333333333333
+3501 3333333333333333333333333333333333333333333333333333333
+3502 3333333333333333333333333333333333333333333333333333333
+3503 3333333333333333333333333333333333333333333333333333333
+3504 3333333333333333333333333333333333333333333333333333333
+3505 3333333333333333333333333333333333333333333333333333333
+3506 3333333333333333333333333333333333333333333333333333333
+3507 3333333333333333333333333333333333333333333333333333333
+3508 3333333333333333333333333333333333333333333333333333333
+3509 3333333333333333333333333333333333333333333333333333333
+3510 3333333333333333333333333333333333333333333333333333333
+3511 3333333333333333333333333333333333333333333333333333333
+3512 3333333333333333333333333333333333333333333333333333333
+3513 3333333333333333333333333333333333333333333333333333333
+3514 3333333333333333333333333333333333333333333333333333333
+3515 3333333333333333333333333333333333333333333333333333333
+3516 3333333333333333333333333333333333333333333333333333333
+3517 3333333333333333333333333333333333333333333333333333333
+3518 3333333333333333333333333333333333333333333333333333333
+3519 3333333333333333333333333333333333333333333333333333333
+3520 3333333333333333333333333333333333333333333333333333333
+3521 3333333333333333333333333333333333333333333333333333333
+3522 3333333333333333333333333333333333333333333333333333333
+3523 3333333333333333333333333333333333333333333333333333333
+3524 3333333333333333333333333333333333333333333333333333333
+3525 3333333333333333333333333333333333333333333333333333333
+3526 3333333333333333333333333333333333333333333333333333333
+3527 3333333333333333333333333333333333333333333333333333333
+3528 3333333333333333333333333333333333333333333333333333333
+3529 3333333333333333333333333333333333333333333333333333333
+3530 3333333333333333333333333333333333333333333333333333333
+3531 3333333333333333333333333333333333333333333333333333333
+3532 3333333333333333333333333333333333333333333333333333333
+3533 3333333333333333333333333333333333333333333333333333333
+3534 3333333333333333333333333333333333333333333333333333333
+3535 3333333333333333333333333333333333333333333333333333333
+3536 3333333333333333333333333333333333333333333333333333333
+3537 3333333333333333333333333333333333333333333333333333333
+3538 3333333333333333333333333333333333333333333333333333333
+3539 3333333333333333333333333333333333333333333333333333333
+3540 3333333333333333333333333333333333333333333333333333333
+3541 3333333333333333333333333333333333333333333333333333333
+3542 3333333333333333333333333333333333333333333333333333333
+3543 3333333333333333333333333333333333333333333333333333333
+3544 3333333333333333333333333333333333333333333333333333333
+3545 3333333333333333333333333333333333333333333333333333333
+3546 3333333333333333333333333333333333333333333333333333333
+3547 3333333333333333333333333333333333333333333333333333333
+3548 3333333333333333333333333333333333333333333333333333333
+3549 3333333333333333333333333333333333333333333333333333333
+3550 3333333333333333333333333333333333333333333333333333333
+3551 3333333333333333333333333333333333333333333333333333333
+3552 3333333333333333333333333333333333333333333333333333333
+3553 3333333333333333333333333333333333333333333333333333333
+3554 3333333333333333333333333333333333333333333333333333333
+3555 3333333333333333333333333333333333333333333333333333333
+3556 3333333333333333333333333333333333333333333333333333333
+3557 3333333333333333333333333333333333333333333333333333333
+3558 3333333333333333333333333333333333333333333333333333333
+3559 3333333333333333333333333333333333333333333333333333333
+3560 3333333333333333333333333333333333333333333333333333333
+3561 3333333333333333333333333333333333333333333333333333333
+3562 3333333333333333333333333333333333333333333333333333333
+3563 3333333333333333333333333333333333333333333333333333333
+3564 3333333333333333333333333333333333333333333333333333333
+3565 3333333333333333333333333333333333333333333333333333333
+3566 3333333333333333333333333333333333333333333333333333333
+3567 3333333333333333333333333333333333333333333333333333333
+3568 3333333333333333333333333333333333333333333333333333333
+3569 3333333333333333333333333333333333333333333333333333333
+3570 3333333333333333333333333333333333333333333333333333333
+3571 3333333333333333333333333333333333333333333333333333333
+3572 3333333333333333333333333333333333333333333333333333333
+3573 3333333333333333333333333333333333333333333333333333333
+3574 3333333333333333333333333333333333333333333333333333333
+3575 3333333333333333333333333333333333333333333333333333333
+3576 3333333333333333333333333333333333333333333333333333333
+3577 3333333333333333333333333333333333333333333333333333333
+3578 3333333333333333333333333333333333333333333333333333333
+3579 3333333333333333333333333333333333333333333333333333333
+3580 3333333333333333333333333333333333333333333333333333333
+3581 3333333333333333333333333333333333333333333333333333333
+3582 3333333333333333333333333333333333333333333333333333333
+3583 3333333333333333333333333333333333333333333333333333333
+3584 3333333333333333333333333333333333333333333333333333333
+3585 3333333333333333333333333333333333333333333333333333333
+3586 3333333333333333333333333333333333333333333333333333333
+3587 3333333333333333333333333333333333333333333333333333333
+3588 3333333333333333333333333333333333333333333333333333333
+3589 3333333333333333333333333333333333333333333333333333333
+3590 3333333333333333333333333333333333333333333333333333333
+3591 3333333333333333333333333333333333333333333333333333333
+3592 3333333333333333333333333333333333333333333333333333333
+3593 3333333333333333333333333333333333333333333333333333333
+3594 3333333333333333333333333333333333333333333333333333333
+3595 3333333333333333333333333333333333333333333333333333333
+3596 3333333333333333333333333333333333333333333333333333333
+3597 3333333333333333333333333333333333333333333333333333333
+3598 3333333333333333333333333333333333333333333333333333333
+3599 3333333333333333333333333333333333333333333333333333333
+3600 3333333333333333333333333333333333333333333333333333333
+3601 3333333333333333333333333333333333333333333333333333333
+3602 3333333333333333333333333333333333333333333333333333333
+3603 3333333333333333333333333333333333333333333333333333333
+3604 3333333333333333333333333333333333333333333333333333333
+3605 3333333333333333333333333333333333333333333333333333333
+3606 3333333333333333333333333333333333333333333333333333333
+3607 3333333333333333333333333333333333333333333333333333333
+3608 3333333333333333333333333333333333333333333333333333333
+3609 3333333333333333333333333333333333333333333333333333333
+3610 3333333333333333333333333333333333333333333333333333333
+3611 3333333333333333333333333333333333333333333333333333333
+3612 3333333333333333333333333333333333333333333333333333333
+3613 3333333333333333333333333333333333333333333333333333333
+3614 3333333333333333333333333333333333333333333333333333333
+3615 3333333333333333333333333333333333333333333333333333333
+3616 3333333333333333333333333333333333333333333333333333333
+3617 3333333333333333333333333333333333333333333333333333333
+3618 3333333333333333333333333333333333333333333333333333333
+3619 3333333333333333333333333333333333333333333333333333333
+3620 3333333333333333333333333333333333333333333333333333333
+3621 3333333333333333333333333333333333333333333333333333333
+3622 3333333333333333333333333333333333333333333333333333333
+3623 3333333333333333333333333333333333333333333333333333333
+3624 3333333333333333333333333333333333333333333333333333333
+3625 3333333333333333333333333333333333333333333333333333333
+3626 3333333333333333333333333333333333333333333333333333333
+3627 3333333333333333333333333333333333333333333333333333333
+3628 3333333333333333333333333333333333333333333333333333333
+3629 3333333333333333333333333333333333333333333333333333333
+3630 3333333333333333333333333333333333333333333333333333333
+3631 3333333333333333333333333333333333333333333333333333333
+3632 3333333333333333333333333333333333333333333333333333333
+3633 3333333333333333333333333333333333333333333333333333333
+3634 3333333333333333333333333333333333333333333333333333333
+3635 3333333333333333333333333333333333333333333333333333333
+3636 3333333333333333333333333333333333333333333333333333333
+3637 3333333333333333333333333333333333333333333333333333333
+3638 3333333333333333333333333333333333333333333333333333333
+3639 3333333333333333333333333333333333333333333333333333333
+3640 3333333333333333333333333333333333333333333333333333333
+3641 3333333333333333333333333333333333333333333333333333333
+3642 3333333333333333333333333333333333333333333333333333333
+3643 3333333333333333333333333333333333333333333333333333333
+3644 3333333333333333333333333333333333333333333333333333333
+3645 3333333333333333333333333333333333333333333333333333333
+3646 3333333333333333333333333333333333333333333333333333333
+3647 3333333333333333333333333333333333333333333333333333333
+3648 3333333333333333333333333333333333333333333333333333333
+3649 3333333333333333333333333333333333333333333333333333333
+3650 3333333333333333333333333333333333333333333333333333333
+3651 3333333333333333333333333333333333333333333333333333333
+3652 3333333333333333333333333333333333333333333333333333333
+3653 3333333333333333333333333333333333333333333333333333333
+3654 3333333333333333333333333333333333333333333333333333333
+3655 3333333333333333333333333333333333333333333333333333333
+3656 3333333333333333333333333333333333333333333333333333333
+3657 3333333333333333333333333333333333333333333333333333333
+3658 3333333333333333333333333333333333333333333333333333333
+3659 3333333333333333333333333333333333333333333333333333333
+3660 3333333333333333333333333333333333333333333333333333333
+3661 3333333333333333333333333333333333333333333333333333333
+3662 3333333333333333333333333333333333333333333333333333333
+3663 3333333333333333333333333333333333333333333333333333333
+3664 3333333333333333333333333333333333333333333333333333333
+3665 3333333333333333333333333333333333333333333333333333333
+3666 3333333333333333333333333333333333333333333333333333333
+3667 3333333333333333333333333333333333333333333333333333333
+3668 3333333333333333333333333333333333333333333333333333333
+3669 3333333333333333333333333333333333333333333333333333333
+3670 3333333333333333333333333333333333333333333333333333333
+3671 3333333333333333333333333333333333333333333333333333333
+3672 3333333333333333333333333333333333333333333333333333333
+3673 3333333333333333333333333333333333333333333333333333333
+3674 3333333333333333333333333333333333333333333333333333333
+3675 3333333333333333333333333333333333333333333333333333333
+3676 3333333333333333333333333333333333333333333333333333333
+3677 3333333333333333333333333333333333333333333333333333333
+3678 3333333333333333333333333333333333333333333333333333333
+3679 3333333333333333333333333333333333333333333333333333333
+3680 3333333333333333333333333333333333333333333333333333333
+3681 3333333333333333333333333333333333333333333333333333333
+3682 3333333333333333333333333333333333333333333333333333333
+3683 3333333333333333333333333333333333333333333333333333333
+3684 3333333333333333333333333333333333333333333333333333333
+3685 3333333333333333333333333333333333333333333333333333333
+3686 3333333333333333333333333333333333333333333333333333333
+3687 3333333333333333333333333333333333333333333333333333333
+3688 3333333333333333333333333333333333333333333333333333333
+3689 3333333333333333333333333333333333333333333333333333333
+3690 3333333333333333333333333333333333333333333333333333333
+3691 3333333333333333333333333333333333333333333333333333333
+3692 3333333333333333333333333333333333333333333333333333333
+3693 3333333333333333333333333333333333333333333333333333333
+3694 3333333333333333333333333333333333333333333333333333333
+3695 3333333333333333333333333333333333333333333333333333333
+3696 3333333333333333333333333333333333333333333333333333333
+3697 3333333333333333333333333333333333333333333333333333333
+3698 3333333333333333333333333333333333333333333333333333333
+3699 3333333333333333333333333333333333333333333333333333333
+3700 3333333333333333333333333333333333333333333333333333333
+3701 3333333333333333333333333333333333333333333333333333333
+3702 3333333333333333333333333333333333333333333333333333333
+3703 3333333333333333333333333333333333333333333333333333333
+3704 3333333333333333333333333333333333333333333333333333333
+3705 3333333333333333333333333333333333333333333333333333333
+3706 3333333333333333333333333333333333333333333333333333333
+3707 3333333333333333333333333333333333333333333333333333333
+3708 3333333333333333333333333333333333333333333333333333333
+3709 3333333333333333333333333333333333333333333333333333333
+3710 3333333333333333333333333333333333333333333333333333333
+3711 3333333333333333333333333333333333333333333333333333333
+3712 3333333333333333333333333333333333333333333333333333333
+3713 3333333333333333333333333333333333333333333333333333333
+3714 3333333333333333333333333333333333333333333333333333333
+3715 3333333333333333333333333333333333333333333333333333333
+3716 3333333333333333333333333333333333333333333333333333333
+3717 3333333333333333333333333333333333333333333333333333333
+3718 3333333333333333333333333333333333333333333333333333333
+3719 3333333333333333333333333333333333333333333333333333333
+3720 3333333333333333333333333333333333333333333333333333333
+3721 3333333333333333333333333333333333333333333333333333333
+3722 3333333333333333333333333333333333333333333333333333333
+3723 3333333333333333333333333333333333333333333333333333333
+3724 3333333333333333333333333333333333333333333333333333333
+3725 3333333333333333333333333333333333333333333333333333333
+3726 3333333333333333333333333333333333333333333333333333333
+3727 3333333333333333333333333333333333333333333333333333333
+3728 3333333333333333333333333333333333333333333333333333333
+3729 3333333333333333333333333333333333333333333333333333333
+3730 3333333333333333333333333333333333333333333333333333333
+3731 3333333333333333333333333333333333333333333333333333333
+3732 3333333333333333333333333333333333333333333333333333333
+3733 3333333333333333333333333333333333333333333333333333333
+3734 3333333333333333333333333333333333333333333333333333333
+3735 3333333333333333333333333333333333333333333333333333333
+3736 3333333333333333333333333333333333333333333333333333333
+3737 3333333333333333333333333333333333333333333333333333333
+3738 3333333333333333333333333333333333333333333333333333333
+3739 3333333333333333333333333333333333333333333333333333333
+3740 3333333333333333333333333333333333333333333333333333333
+3741 3333333333333333333333333333333333333333333333333333333
+3742 3333333333333333333333333333333333333333333333333333333
+3743 3333333333333333333333333333333333333333333333333333333
+3744 3333333333333333333333333333333333333333333333333333333
+3745 3333333333333333333333333333333333333333333333333333333
+3746 3333333333333333333333333333333333333333333333333333333
+3747 3333333333333333333333333333333333333333333333333333333
+3748 3333333333333333333333333333333333333333333333333333333
+3749 3333333333333333333333333333333333333333333333333333333
+3750 3333333333333333333333333333333333333333333333333333333
+3751 3333333333333333333333333333333333333333333333333333333
+3752 3333333333333333333333333333333333333333333333333333333
+3753 3333333333333333333333333333333333333333333333333333333
+3754 3333333333333333333333333333333333333333333333333333333
+3755 3333333333333333333333333333333333333333333333333333333
+3756 3333333333333333333333333333333333333333333333333333333
+3757 3333333333333333333333333333333333333333333333333333333
+3758 3333333333333333333333333333333333333333333333333333333
+3759 3333333333333333333333333333333333333333333333333333333
+3760 3333333333333333333333333333333333333333333333333333333
+3761 3333333333333333333333333333333333333333333333333333333
+3762 3333333333333333333333333333333333333333333333333333333
+3763 3333333333333333333333333333333333333333333333333333333
+3764 3333333333333333333333333333333333333333333333333333333
+3765 3333333333333333333333333333333333333333333333333333333
+3766 3333333333333333333333333333333333333333333333333333333
+3767 3333333333333333333333333333333333333333333333333333333
+3768 3333333333333333333333333333333333333333333333333333333
+3769 3333333333333333333333333333333333333333333333333333333
+3770 3333333333333333333333333333333333333333333333333333333
+3771 3333333333333333333333333333333333333333333333333333333
+3772 3333333333333333333333333333333333333333333333333333333
+3773 3333333333333333333333333333333333333333333333333333333
+3774 3333333333333333333333333333333333333333333333333333333
+3775 3333333333333333333333333333333333333333333333333333333
+3776 3333333333333333333333333333333333333333333333333333333
+3777 3333333333333333333333333333333333333333333333333333333
+3778 3333333333333333333333333333333333333333333333333333333
+3779 3333333333333333333333333333333333333333333333333333333
+3780 3333333333333333333333333333333333333333333333333333333
+3781 3333333333333333333333333333333333333333333333333333333
+3782 3333333333333333333333333333333333333333333333333333333
+3783 3333333333333333333333333333333333333333333333333333333
+3784 3333333333333333333333333333333333333333333333333333333
+3785 3333333333333333333333333333333333333333333333333333333
+3786 3333333333333333333333333333333333333333333333333333333
+3787 3333333333333333333333333333333333333333333333333333333
+3788 3333333333333333333333333333333333333333333333333333333
+3789 3333333333333333333333333333333333333333333333333333333
+3790 3333333333333333333333333333333333333333333333333333333
+3791 3333333333333333333333333333333333333333333333333333333
+3792 3333333333333333333333333333333333333333333333333333333
+3793 3333333333333333333333333333333333333333333333333333333
+3794 3333333333333333333333333333333333333333333333333333333
+3795 3333333333333333333333333333333333333333333333333333333
+3796 3333333333333333333333333333333333333333333333333333333
+3797 3333333333333333333333333333333333333333333333333333333
+3798 3333333333333333333333333333333333333333333333333333333
+3799 3333333333333333333333333333333333333333333333333333333
+3800 3333333333333333333333333333333333333333333333333333333
+3801 3333333333333333333333333333333333333333333333333333333
+3802 3333333333333333333333333333333333333333333333333333333
+3803 3333333333333333333333333333333333333333333333333333333
+3804 3333333333333333333333333333333333333333333333333333333
+3805 3333333333333333333333333333333333333333333333333333333
+3806 3333333333333333333333333333333333333333333333333333333
+3807 3333333333333333333333333333333333333333333333333333333
+3808 3333333333333333333333333333333333333333333333333333333
+3809 3333333333333333333333333333333333333333333333333333333
+3810 3333333333333333333333333333333333333333333333333333333
+3811 3333333333333333333333333333333333333333333333333333333
+3812 3333333333333333333333333333333333333333333333333333333
+3813 3333333333333333333333333333333333333333333333333333333
+3814 3333333333333333333333333333333333333333333333333333333
+3815 3333333333333333333333333333333333333333333333333333333
+3816 3333333333333333333333333333333333333333333333333333333
+3817 3333333333333333333333333333333333333333333333333333333
+3818 3333333333333333333333333333333333333333333333333333333
+3819 3333333333333333333333333333333333333333333333333333333
+3820 3333333333333333333333333333333333333333333333333333333
+3821 3333333333333333333333333333333333333333333333333333333
+3822 3333333333333333333333333333333333333333333333333333333
+3823 3333333333333333333333333333333333333333333333333333333
+3824 3333333333333333333333333333333333333333333333333333333
+3825 3333333333333333333333333333333333333333333333333333333
+3826 3333333333333333333333333333333333333333333333333333333
+3827 3333333333333333333333333333333333333333333333333333333
+3828 3333333333333333333333333333333333333333333333333333333
+3829 3333333333333333333333333333333333333333333333333333333
+3830 3333333333333333333333333333333333333333333333333333333
+3831 3333333333333333333333333333333333333333333333333333333
+3832 3333333333333333333333333333333333333333333333333333333
+3833 3333333333333333333333333333333333333333333333333333333
+3834 3333333333333333333333333333333333333333333333333333333
+3835 3333333333333333333333333333333333333333333333333333333
+3836 3333333333333333333333333333333333333333333333333333333
+3837 3333333333333333333333333333333333333333333333333333333
+3838 3333333333333333333333333333333333333333333333333333333
+3839 3333333333333333333333333333333333333333333333333333333
+3840 3333333333333333333333333333333333333333333333333333333
+3841 3333333333333333333333333333333333333333333333333333333
+3842 3333333333333333333333333333333333333333333333333333333
+3843 3333333333333333333333333333333333333333333333333333333
+3844 3333333333333333333333333333333333333333333333333333333
+3845 3333333333333333333333333333333333333333333333333333333
+3846 3333333333333333333333333333333333333333333333333333333
+3847 3333333333333333333333333333333333333333333333333333333
+3848 3333333333333333333333333333333333333333333333333333333
+3849 3333333333333333333333333333333333333333333333333333333
+3850 3333333333333333333333333333333333333333333333333333333
+3851 3333333333333333333333333333333333333333333333333333333
+3852 3333333333333333333333333333333333333333333333333333333
+3853 3333333333333333333333333333333333333333333333333333333
+3854 3333333333333333333333333333333333333333333333333333333
+3855 3333333333333333333333333333333333333333333333333333333
+3856 3333333333333333333333333333333333333333333333333333333
+3857 3333333333333333333333333333333333333333333333333333333
+3858 3333333333333333333333333333333333333333333333333333333
+3859 3333333333333333333333333333333333333333333333333333333
+3860 3333333333333333333333333333333333333333333333333333333
+3861 3333333333333333333333333333333333333333333333333333333
+3862 3333333333333333333333333333333333333333333333333333333
+3863 3333333333333333333333333333333333333333333333333333333
+3864 3333333333333333333333333333333333333333333333333333333
+3865 3333333333333333333333333333333333333333333333333333333
+3866 3333333333333333333333333333333333333333333333333333333
+3867 3333333333333333333333333333333333333333333333333333333
+3868 3333333333333333333333333333333333333333333333333333333
+3869 3333333333333333333333333333333333333333333333333333333
+3870 3333333333333333333333333333333333333333333333333333333
+3871 3333333333333333333333333333333333333333333333333333333
+3872 3333333333333333333333333333333333333333333333333333333
+3873 3333333333333333333333333333333333333333333333333333333
+3874 3333333333333333333333333333333333333333333333333333333
+3875 3333333333333333333333333333333333333333333333333333333
+3876 3333333333333333333333333333333333333333333333333333333
+3877 3333333333333333333333333333333333333333333333333333333
+3878 3333333333333333333333333333333333333333333333333333333
+3879 3333333333333333333333333333333333333333333333333333333
+3880 3333333333333333333333333333333333333333333333333333333
+3881 3333333333333333333333333333333333333333333333333333333
+3882 3333333333333333333333333333333333333333333333333333333
+3883 3333333333333333333333333333333333333333333333333333333
+3884 3333333333333333333333333333333333333333333333333333333
+3885 3333333333333333333333333333333333333333333333333333333
+3886 3333333333333333333333333333333333333333333333333333333
+3887 3333333333333333333333333333333333333333333333333333333
+3888 3333333333333333333333333333333333333333333333333333333
+3889 3333333333333333333333333333333333333333333333333333333
+3890 3333333333333333333333333333333333333333333333333333333
+3891 3333333333333333333333333333333333333333333333333333333
+3892 3333333333333333333333333333333333333333333333333333333
+3893 3333333333333333333333333333333333333333333333333333333
+3894 3333333333333333333333333333333333333333333333333333333
+3895 3333333333333333333333333333333333333333333333333333333
+3896 3333333333333333333333333333333333333333333333333333333
+3897 3333333333333333333333333333333333333333333333333333333
+3898 3333333333333333333333333333333333333333333333333333333
+3899 3333333333333333333333333333333333333333333333333333333
+3900 3333333333333333333333333333333333333333333333333333333
+3901 3333333333333333333333333333333333333333333333333333333
+3902 3333333333333333333333333333333333333333333333333333333
+3903 3333333333333333333333333333333333333333333333333333333
+3904 3333333333333333333333333333333333333333333333333333333
+3905 3333333333333333333333333333333333333333333333333333333
+3906 3333333333333333333333333333333333333333333333333333333
+3907 3333333333333333333333333333333333333333333333333333333
+3908 3333333333333333333333333333333333333333333333333333333
+3909 3333333333333333333333333333333333333333333333333333333
+3910 3333333333333333333333333333333333333333333333333333333
+3911 3333333333333333333333333333333333333333333333333333333
+3912 3333333333333333333333333333333333333333333333333333333
+3913 3333333333333333333333333333333333333333333333333333333
+3914 3333333333333333333333333333333333333333333333333333333
+3915 3333333333333333333333333333333333333333333333333333333
+3916 3333333333333333333333333333333333333333333333333333333
+3917 3333333333333333333333333333333333333333333333333333333
+3918 3333333333333333333333333333333333333333333333333333333
+3919 3333333333333333333333333333333333333333333333333333333
+3920 3333333333333333333333333333333333333333333333333333333
+3921 3333333333333333333333333333333333333333333333333333333
+3922 3333333333333333333333333333333333333333333333333333333
+3923 3333333333333333333333333333333333333333333333333333333
+3924 3333333333333333333333333333333333333333333333333333333
+3925 3333333333333333333333333333333333333333333333333333333
+3926 3333333333333333333333333333333333333333333333333333333
+3927 3333333333333333333333333333333333333333333333333333333
+3928 3333333333333333333333333333333333333333333333333333333
+3929 3333333333333333333333333333333333333333333333333333333
+3930 3333333333333333333333333333333333333333333333333333333
+3931 3333333333333333333333333333333333333333333333333333333
+3932 3333333333333333333333333333333333333333333333333333333
+3933 3333333333333333333333333333333333333333333333333333333
+3934 3333333333333333333333333333333333333333333333333333333
+3935 3333333333333333333333333333333333333333333333333333333
+3936 3333333333333333333333333333333333333333333333333333333
+3937 3333333333333333333333333333333333333333333333333333333
+3938 3333333333333333333333333333333333333333333333333333333
+3939 3333333333333333333333333333333333333333333333333333333
+3940 3333333333333333333333333333333333333333333333333333333
+3941 3333333333333333333333333333333333333333333333333333333
+3942 3333333333333333333333333333333333333333333333333333333
+3943 3333333333333333333333333333333333333333333333333333333
+3944 3333333333333333333333333333333333333333333333333333333
+3945 3333333333333333333333333333333333333333333333333333333
+3946 3333333333333333333333333333333333333333333333333333333
+3947 3333333333333333333333333333333333333333333333333333333
+3948 3333333333333333333333333333333333333333333333333333333
+3949 3333333333333333333333333333333333333333333333333333333
+3950 3333333333333333333333333333333333333333333333333333333
+3951 3333333333333333333333333333333333333333333333333333333
+3952 3333333333333333333333333333333333333333333333333333333
+3953 3333333333333333333333333333333333333333333333333333333
+3954 3333333333333333333333333333333333333333333333333333333
+3955 3333333333333333333333333333333333333333333333333333333
+3956 3333333333333333333333333333333333333333333333333333333
+3957 3333333333333333333333333333333333333333333333333333333
+3958 3333333333333333333333333333333333333333333333333333333
+3959 3333333333333333333333333333333333333333333333333333333
+3960 3333333333333333333333333333333333333333333333333333333
+3961 3333333333333333333333333333333333333333333333333333333
+3962 3333333333333333333333333333333333333333333333333333333
+3963 3333333333333333333333333333333333333333333333333333333
+3964 3333333333333333333333333333333333333333333333333333333
+3965 3333333333333333333333333333333333333333333333333333333
+3966 3333333333333333333333333333333333333333333333333333333
+3967 3333333333333333333333333333333333333333333333333333333
+3968 3333333333333333333333333333333333333333333333333333333
+3969 3333333333333333333333333333333333333333333333333333333
+3970 3333333333333333333333333333333333333333333333333333333
+3971 3333333333333333333333333333333333333333333333333333333
+3972 3333333333333333333333333333333333333333333333333333333
+3973 3333333333333333333333333333333333333333333333333333333
+3974 3333333333333333333333333333333333333333333333333333333
+3975 3333333333333333333333333333333333333333333333333333333
+3976 3333333333333333333333333333333333333333333333333333333
+3977 3333333333333333333333333333333333333333333333333333333
+3978 3333333333333333333333333333333333333333333333333333333
+3979 3333333333333333333333333333333333333333333333333333333
+3980 3333333333333333333333333333333333333333333333333333333
+3981 3333333333333333333333333333333333333333333333333333333
+3982 3333333333333333333333333333333333333333333333333333333
+3983 3333333333333333333333333333333333333333333333333333333
+3984 3333333333333333333333333333333333333333333333333333333
+3985 3333333333333333333333333333333333333333333333333333333
+3986 3333333333333333333333333333333333333333333333333333333
+3987 3333333333333333333333333333333333333333333333333333333
+3988 3333333333333333333333333333333333333333333333333333333
+3989 3333333333333333333333333333333333333333333333333333333
+3990 3333333333333333333333333333333333333333333333333333333
+3991 3333333333333333333333333333333333333333333333333333333
+3992 3333333333333333333333333333333333333333333333333333333
+3993 3333333333333333333333333333333333333333333333333333333
+3994 3333333333333333333333333333333333333333333333333333333
+3995 3333333333333333333333333333333333333333333333333333333
+3996 3333333333333333333333333333333333333333333333333333333
+3997 3333333333333333333333333333333333333333333333333333333
+3998 3333333333333333333333333333333333333333333333333333333
+3999 3333333333333333333333333333333333333333333333333333333
+4000 3333333333333333333333333333333333333333333333333333333
+4001 3333333333333333333333333333333333333333333333333333333
+4002 3333333333333333333333333333333333333333333333333333333
+4003 3333333333333333333333333333333333333333333333333333333
+4004 3333333333333333333333333333333333333333333333333333333
+4005 3333333333333333333333333333333333333333333333333333333
+4006 3333333333333333333333333333333333333333333333333333333
+4007 3333333333333333333333333333333333333333333333333333333
+4008 3333333333333333333333333333333333333333333333333333333
+4009 3333333333333333333333333333333333333333333333333333333
+4010 3333333333333333333333333333333333333333333333333333333
+4011 3333333333333333333333333333333333333333333333333333333
+4012 3333333333333333333333333333333333333333333333333333333
+4013 3333333333333333333333333333333333333333333333333333333
+4014 3333333333333333333333333333333333333333333333333333333
+4015 3333333333333333333333333333333333333333333333333333333
+4016 3333333333333333333333333333333333333333333333333333333
+4017 3333333333333333333333333333333333333333333333333333333
+4018 3333333333333333333333333333333333333333333333333333333
+4019 3333333333333333333333333333333333333333333333333333333
+4020 3333333333333333333333333333333333333333333333333333333
+4021 3333333333333333333333333333333333333333333333333333333
+4022 3333333333333333333333333333333333333333333333333333333
+4023 3333333333333333333333333333333333333333333333333333333
+4024 3333333333333333333333333333333333333333333333333333333
+4025 3333333333333333333333333333333333333333333333333333333
+4026 3333333333333333333333333333333333333333333333333333333
+4027 3333333333333333333333333333333333333333333333333333333
+4028 3333333333333333333333333333333333333333333333333333333
+4029 3333333333333333333333333333333333333333333333333333333
+4030 3333333333333333333333333333333333333333333333333333333
+4031 3333333333333333333333333333333333333333333333333333333
+4032 3333333333333333333333333333333333333333333333333333333
+4033 3333333333333333333333333333333333333333333333333333333
+4034 3333333333333333333333333333333333333333333333333333333
+4035 3333333333333333333333333333333333333333333333333333333
+4036 3333333333333333333333333333333333333333333333333333333
+4037 3333333333333333333333333333333333333333333333333333333
+4038 3333333333333333333333333333333333333333333333333333333
+4039 3333333333333333333333333333333333333333333333333333333
+4040 3333333333333333333333333333333333333333333333333333333
+4041 3333333333333333333333333333333333333333333333333333333
+4042 3333333333333333333333333333333333333333333333333333333
+4043 3333333333333333333333333333333333333333333333333333333
+4044 3333333333333333333333333333333333333333333333333333333
+4045 3333333333333333333333333333333333333333333333333333333
+4046 3333333333333333333333333333333333333333333333333333333
+4047 3333333333333333333333333333333333333333333333333333333
+4048 3333333333333333333333333333333333333333333333333333333
+4049 3333333333333333333333333333333333333333333333333333333
+4050 3333333333333333333333333333333333333333333333333333333
+4051 3333333333333333333333333333333333333333333333333333333
+4052 3333333333333333333333333333333333333333333333333333333
+4053 3333333333333333333333333333333333333333333333333333333
+4054 3333333333333333333333333333333333333333333333333333333
+4055 3333333333333333333333333333333333333333333333333333333
+4056 3333333333333333333333333333333333333333333333333333333
+4057 3333333333333333333333333333333333333333333333333333333
+4058 3333333333333333333333333333333333333333333333333333333
+4059 3333333333333333333333333333333333333333333333333333333
+4060 3333333333333333333333333333333333333333333333333333333
+4061 3333333333333333333333333333333333333333333333333333333
+4062 3333333333333333333333333333333333333333333333333333333
+4063 3333333333333333333333333333333333333333333333333333333
+4064 3333333333333333333333333333333333333333333333333333333
+4065 3333333333333333333333333333333333333333333333333333333
+4066 3333333333333333333333333333333333333333333333333333333
+4067 3333333333333333333333333333333333333333333333333333333
+4068 3333333333333333333333333333333333333333333333333333333
+4069 3333333333333333333333333333333333333333333333333333333
+4070 3333333333333333333333333333333333333333333333333333333
+4071 3333333333333333333333333333333333333333333333333333333
+4072 3333333333333333333333333333333333333333333333333333333
+4073 3333333333333333333333333333333333333333333333333333333
+4074 3333333333333333333333333333333333333333333333333333333
+4075 3333333333333333333333333333333333333333333333333333333
+4076 3333333333333333333333333333333333333333333333333333333
+4077 3333333333333333333333333333333333333333333333333333333
+4078 3333333333333333333333333333333333333333333333333333333
+4079 3333333333333333333333333333333333333333333333333333333
+4080 3333333333333333333333333333333333333333333333333333333
+4081 3333333333333333333333333333333333333333333333333333333
+4082 3333333333333333333333333333333333333333333333333333333
+4083 3333333333333333333333333333333333333333333333333333333
+4084 3333333333333333333333333333333333333333333333333333333
+4085 3333333333333333333333333333333333333333333333333333333
+4086 3333333333333333333333333333333333333333333333333333333
+4087 3333333333333333333333333333333333333333333333333333333
+4088 3333333333333333333333333333333333333333333333333333333
+4089 3333333333333333333333333333333333333333333333333333333
+4090 3333333333333333333333333333333333333333333333333333333
+4091 3333333333333333333333333333333333333333333333333333333
+4092 3333333333333333333333333333333333333333333333333333333
+4093 3333333333333333333333333333333333333333333333333333333
+4094 3333333333333333333333333333333333333333333333333333333
+4095 3333333333333333333333333333333333333333333333333333333
+4096 3333333333333333333333333333333333333333333333333333333
+4097 3333333333333333333333333333333333333333333333333333333
+4098 3333333333333333333333333333333333333333333333333333333
+4099 3333333333333333333333333333333333333333333333333333333
+4100 3333333333333333333333333333333333333333333333333333333
+4101 3333333333333333333333333333333333333333333333333333333
+4102 3333333333333333333333333333333333333333333333333333333
+4103 3333333333333333333333333333333333333333333333333333333
+4104 3333333333333333333333333333333333333333333333333333333
+4105 3333333333333333333333333333333333333333333333333333333
+4106 3333333333333333333333333333333333333333333333333333333
+4107 3333333333333333333333333333333333333333333333333333333
+4108 3333333333333333333333333333333333333333333333333333333
+4109 3333333333333333333333333333333333333333333333333333333
+4110 3333333333333333333333333333333333333333333333333333333
+4111 3333333333333333333333333333333333333333333333333333333
+4112 3333333333333333333333333333333333333333333333333333333
+4113 3333333333333333333333333333333333333333333333333333333
+4114 3333333333333333333333333333333333333333333333333333333
+4115 3333333333333333333333333333333333333333333333333333333
+4116 3333333333333333333333333333333333333333333333333333333
+4117 3333333333333333333333333333333333333333333333333333333
+4118 3333333333333333333333333333333333333333333333333333333
+4119 3333333333333333333333333333333333333333333333333333333
+4120 3333333333333333333333333333333333333333333333333333333
+4121 3333333333333333333333333333333333333333333333333333333
+4122 3333333333333333333333333333333333333333333333333333333
+4123 3333333333333333333333333333333333333333333333333333333
+4124 3333333333333333333333333333333333333333333333333333333
+4125 3333333333333333333333333333333333333333333333333333333
+4126 3333333333333333333333333333333333333333333333333333333
+4127 3333333333333333333333333333333333333333333333333333333
+4128 3333333333333333333333333333333333333333333333333333333
+4129 3333333333333333333333333333333333333333333333333333333
+4130 3333333333333333333333333333333333333333333333333333333
+4131 3333333333333333333333333333333333333333333333333333333
+4132 3333333333333333333333333333333333333333333333333333333
+4133 3333333333333333333333333333333333333333333333333333333
+4134 3333333333333333333333333333333333333333333333333333333
+4135 3333333333333333333333333333333333333333333333333333333
+4136 3333333333333333333333333333333333333333333333333333333
+4137 3333333333333333333333333333333333333333333333333333333
+4138 3333333333333333333333333333333333333333333333333333333
+4139 3333333333333333333333333333333333333333333333333333333
+4140 3333333333333333333333333333333333333333333333333333333
+4141 3333333333333333333333333333333333333333333333333333333
+4142 3333333333333333333333333333333333333333333333333333333
+4143 3333333333333333333333333333333333333333333333333333333
+4144 3333333333333333333333333333333333333333333333333333333
+4145 3333333333333333333333333333333333333333333333333333333
+4146 3333333333333333333333333333333333333333333333333333333
+4147 3333333333333333333333333333333333333333333333333333333
+4148 3333333333333333333333333333333333333333333333333333333
+4149 3333333333333333333333333333333333333333333333333333333
+4150 3333333333333333333333333333333333333333333333333333333
+4151 3333333333333333333333333333333333333333333333333333333
+4152 3333333333333333333333333333333333333333333333333333333
+4153 3333333333333333333333333333333333333333333333333333333
+4154 3333333333333333333333333333333333333333333333333333333
+4155 3333333333333333333333333333333333333333333333333333333
+4156 3333333333333333333333333333333333333333333333333333333
+4157 3333333333333333333333333333333333333333333333333333333
+4158 3333333333333333333333333333333333333333333333333333333
+4159 3333333333333333333333333333333333333333333333333333333
+4160 3333333333333333333333333333333333333333333333333333333
+4161 3333333333333333333333333333333333333333333333333333333
+4162 3333333333333333333333333333333333333333333333333333333
+4163 3333333333333333333333333333333333333333333333333333333
+4164 3333333333333333333333333333333333333333333333333333333
+4165 3333333333333333333333333333333333333333333333333333333
+4166 3333333333333333333333333333333333333333333333333333333
+4167 3333333333333333333333333333333333333333333333333333333
+4168 3333333333333333333333333333333333333333333333333333333
+4169 3333333333333333333333333333333333333333333333333333333
+4170 3333333333333333333333333333333333333333333333333333333
+4171 3333333333333333333333333333333333333333333333333333333
+4172 3333333333333333333333333333333333333333333333333333333
+4173 3333333333333333333333333333333333333333333333333333333
+4174 3333333333333333333333333333333333333333333333333333333
+4175 3333333333333333333333333333333333333333333333333333333
+4176 3333333333333333333333333333333333333333333333333333333
+4177 3333333333333333333333333333333333333333333333333333333
+4178 3333333333333333333333333333333333333333333333333333333
+4179 3333333333333333333333333333333333333333333333333333333
+4180 3333333333333333333333333333333333333333333333333333333
+4181 3333333333333333333333333333333333333333333333333333333
+4182 3333333333333333333333333333333333333333333333333333333
+4183 3333333333333333333333333333333333333333333333333333333
+4184 3333333333333333333333333333333333333333333333333333333
+4185 3333333333333333333333333333333333333333333333333333333
+4186 3333333333333333333333333333333333333333333333333333333
+4187 3333333333333333333333333333333333333333333333333333333
+4188 3333333333333333333333333333333333333333333333333333333
+4189 3333333333333333333333333333333333333333333333333333333
+4190 3333333333333333333333333333333333333333333333333333333
+4191 3333333333333333333333333333333333333333333333333333333
+4192 3333333333333333333333333333333333333333333333333333333
+4193 3333333333333333333333333333333333333333333333333333333
+4194 3333333333333333333333333333333333333333333333333333333
+4195 3333333333333333333333333333333333333333333333333333333
+4196 3333333333333333333333333333333333333333333333333333333
+4197 3333333333333333333333333333333333333333333333333333333
+4198 3333333333333333333333333333333333333333333333333333333
+4199 3333333333333333333333333333333333333333333333333333333
+4200 3333333333333333333333333333333333333333333333333333333
+4201 3333333333333333333333333333333333333333333333333333333
+4202 3333333333333333333333333333333333333333333333333333333
+4203 3333333333333333333333333333333333333333333333333333333
+4204 3333333333333333333333333333333333333333333333333333333
+4205 3333333333333333333333333333333333333333333333333333333
+4206 3333333333333333333333333333333333333333333333333333333
+4207 3333333333333333333333333333333333333333333333333333333
+4208 3333333333333333333333333333333333333333333333333333333
+4209 3333333333333333333333333333333333333333333333333333333
+4210 3333333333333333333333333333333333333333333333333333333
+4211 3333333333333333333333333333333333333333333333333333333
+4212 3333333333333333333333333333333333333333333333333333333
+4213 3333333333333333333333333333333333333333333333333333333
+4214 3333333333333333333333333333333333333333333333333333333
+4215 3333333333333333333333333333333333333333333333333333333
+4216 3333333333333333333333333333333333333333333333333333333
+4217 3333333333333333333333333333333333333333333333333333333
+4218 3333333333333333333333333333333333333333333333333333333
+4219 3333333333333333333333333333333333333333333333333333333
+4220 3333333333333333333333333333333333333333333333333333333
+4221 3333333333333333333333333333333333333333333333333333333
+4222 3333333333333333333333333333333333333333333333333333333
+4223 3333333333333333333333333333333333333333333333333333333
+4224 3333333333333333333333333333333333333333333333333333333
+4225 3333333333333333333333333333333333333333333333333333333
+4226 3333333333333333333333333333333333333333333333333333333
+4227 3333333333333333333333333333333333333333333333333333333
+4228 3333333333333333333333333333333333333333333333333333333
+4229 3333333333333333333333333333333333333333333333333333333
+4230 3333333333333333333333333333333333333333333333333333333
+4231 3333333333333333333333333333333333333333333333333333333
+4232 3333333333333333333333333333333333333333333333333333333
+4233 3333333333333333333333333333333333333333333333333333333
+4234 3333333333333333333333333333333333333333333333333333333
+4235 3333333333333333333333333333333333333333333333333333333
+4236 3333333333333333333333333333333333333333333333333333333
+4237 3333333333333333333333333333333333333333333333333333333
+4238 3333333333333333333333333333333333333333333333333333333
+4239 3333333333333333333333333333333333333333333333333333333
+4240 3333333333333333333333333333333333333333333333333333333
+4241 3333333333333333333333333333333333333333333333333333333
+4242 3333333333333333333333333333333333333333333333333333333
+4243 3333333333333333333333333333333333333333333333333333333
+4244 3333333333333333333333333333333333333333333333333333333
+4245 3333333333333333333333333333333333333333333333333333333
+4246 3333333333333333333333333333333333333333333333333333333
+4247 3333333333333333333333333333333333333333333333333333333
+4248 3333333333333333333333333333333333333333333333333333333
+4249 3333333333333333333333333333333333333333333333333333333
+4250 3333333333333333333333333333333333333333333333333333333
+4251 3333333333333333333333333333333333333333333333333333333
+4252 3333333333333333333333333333333333333333333333333333333
+4253 3333333333333333333333333333333333333333333333333333333
+4254 3333333333333333333333333333333333333333333333333333333
+4255 3333333333333333333333333333333333333333333333333333333
+4256 3333333333333333333333333333333333333333333333333333333
+4257 3333333333333333333333333333333333333333333333333333333
+4258 3333333333333333333333333333333333333333333333333333333
+4259 3333333333333333333333333333333333333333333333333333333
+4260 3333333333333333333333333333333333333333333333333333333
+4261 3333333333333333333333333333333333333333333333333333333
+4262 3333333333333333333333333333333333333333333333333333333
+4263 3333333333333333333333333333333333333333333333333333333
+4264 3333333333333333333333333333333333333333333333333333333
+4265 3333333333333333333333333333333333333333333333333333333
+4266 3333333333333333333333333333333333333333333333333333333
+4267 3333333333333333333333333333333333333333333333333333333
+4268 3333333333333333333333333333333333333333333333333333333
+4269 3333333333333333333333333333333333333333333333333333333
+4270 3333333333333333333333333333333333333333333333333333333
+4271 3333333333333333333333333333333333333333333333333333333
+4272 3333333333333333333333333333333333333333333333333333333
+4273 3333333333333333333333333333333333333333333333333333333
+4274 3333333333333333333333333333333333333333333333333333333
+4275 3333333333333333333333333333333333333333333333333333333
+4276 3333333333333333333333333333333333333333333333333333333
+4277 3333333333333333333333333333333333333333333333333333333
+4278 3333333333333333333333333333333333333333333333333333333
+4279 3333333333333333333333333333333333333333333333333333333
+4280 3333333333333333333333333333333333333333333333333333333
+4281 3333333333333333333333333333333333333333333333333333333
+4282 3333333333333333333333333333333333333333333333333333333
+4283 3333333333333333333333333333333333333333333333333333333
+4284 3333333333333333333333333333333333333333333333333333333
+4285 3333333333333333333333333333333333333333333333333333333
+4286 3333333333333333333333333333333333333333333333333333333
+4287 3333333333333333333333333333333333333333333333333333333
+4288 3333333333333333333333333333333333333333333333333333333
+4289 3333333333333333333333333333333333333333333333333333333
+4290 3333333333333333333333333333333333333333333333333333333
+4291 3333333333333333333333333333333333333333333333333333333
+4292 3333333333333333333333333333333333333333333333333333333
+4293 3333333333333333333333333333333333333333333333333333333
+4294 3333333333333333333333333333333333333333333333333333333
+4295 3333333333333333333333333333333333333333333333333333333
+4296 3333333333333333333333333333333333333333333333333333333
+4297 3333333333333333333333333333333333333333333333333333333
+4298 3333333333333333333333333333333333333333333333333333333
+4299 3333333333333333333333333333333333333333333333333333333
+4300 3333333333333333333333333333333333333333333333333333333
+4301 3333333333333333333333333333333333333333333333333333333
+4302 3333333333333333333333333333333333333333333333333333333
+4303 3333333333333333333333333333333333333333333333333333333
+4304 3333333333333333333333333333333333333333333333333333333
+4305 3333333333333333333333333333333333333333333333333333333
+4306 3333333333333333333333333333333333333333333333333333333
+4307 3333333333333333333333333333333333333333333333333333333
+4308 3333333333333333333333333333333333333333333333333333333
+4309 3333333333333333333333333333333333333333333333333333333
+4310 3333333333333333333333333333333333333333333333333333333
+4311 3333333333333333333333333333333333333333333333333333333
+4312 3333333333333333333333333333333333333333333333333333333
+4313 3333333333333333333333333333333333333333333333333333333
+4314 3333333333333333333333333333333333333333333333333333333
+4315 3333333333333333333333333333333333333333333333333333333
+4316 3333333333333333333333333333333333333333333333333333333
+4317 3333333333333333333333333333333333333333333333333333333
+4318 3333333333333333333333333333333333333333333333333333333
+4319 3333333333333333333333333333333333333333333333333333333
+4320 3333333333333333333333333333333333333333333333333333333
+4321 3333333333333333333333333333333333333333333333333333333
+4322 3333333333333333333333333333333333333333333333333333333
+4323 3333333333333333333333333333333333333333333333333333333
+4324 3333333333333333333333333333333333333333333333333333333
+4325 3333333333333333333333333333333333333333333333333333333
+4326 3333333333333333333333333333333333333333333333333333333
+4327 3333333333333333333333333333333333333333333333333333333
+4328 3333333333333333333333333333333333333333333333333333333
+4329 3333333333333333333333333333333333333333333333333333333
+4330 3333333333333333333333333333333333333333333333333333333
+4331 3333333333333333333333333333333333333333333333333333333
+4332 3333333333333333333333333333333333333333333333333333333
+4333 3333333333333333333333333333333333333333333333333333333
+4334 3333333333333333333333333333333333333333333333333333333
+4335 3333333333333333333333333333333333333333333333333333333
+4336 3333333333333333333333333333333333333333333333333333333
+4337 3333333333333333333333333333333333333333333333333333333
+4338 3333333333333333333333333333333333333333333333333333333
+4339 3333333333333333333333333333333333333333333333333333333
+4340 3333333333333333333333333333333333333333333333333333333
+4341 3333333333333333333333333333333333333333333333333333333
+4342 3333333333333333333333333333333333333333333333333333333
+4343 3333333333333333333333333333333333333333333333333333333
+4344 3333333333333333333333333333333333333333333333333333333
+4345 3333333333333333333333333333333333333333333333333333333
+4346 3333333333333333333333333333333333333333333333333333333
+4347 3333333333333333333333333333333333333333333333333333333
+4348 3333333333333333333333333333333333333333333333333333333
+4349 3333333333333333333333333333333333333333333333333333333
+4350 3333333333333333333333333333333333333333333333333333333
+4351 3333333333333333333333333333333333333333333333333333333
+4352 3333333333333333333333333333333333333333333333333333333
+4353 3333333333333333333333333333333333333333333333333333333
+4354 3333333333333333333333333333333333333333333333333333333
+4355 3333333333333333333333333333333333333333333333333333333
+4356 3333333333333333333333333333333333333333333333333333333
+4357 3333333333333333333333333333333333333333333333333333333
+4358 3333333333333333333333333333333333333333333333333333333
+4359 3333333333333333333333333333333333333333333333333333333
+4360 3333333333333333333333333333333333333333333333333333333
+4361 3333333333333333333333333333333333333333333333333333333
+4362 3333333333333333333333333333333333333333333333333333333
+4363 3333333333333333333333333333333333333333333333333333333
+4364 3333333333333333333333333333333333333333333333333333333
+4365 3333333333333333333333333333333333333333333333333333333
+4366 3333333333333333333333333333333333333333333333333333333
+4367 3333333333333333333333333333333333333333333333333333333
+4368 3333333333333333333333333333333333333333333333333333333
+4369 3333333333333333333333333333333333333333333333333333333
+4370 3333333333333333333333333333333333333333333333333333333
+4371 3333333333333333333333333333333333333333333333333333333
+4372 3333333333333333333333333333333333333333333333333333333
+4373 3333333333333333333333333333333333333333333333333333333
+4374 3333333333333333333333333333333333333333333333333333333
+4375 3333333333333333333333333333333333333333333333333333333
+4376 3333333333333333333333333333333333333333333333333333333
+4377 3333333333333333333333333333333333333333333333333333333
+4378 3333333333333333333333333333333333333333333333333333333
+4379 3333333333333333333333333333333333333333333333333333333
+4380 3333333333333333333333333333333333333333333333333333333
+4381 3333333333333333333333333333333333333333333333333333333
+4382 3333333333333333333333333333333333333333333333333333333
+4383 3333333333333333333333333333333333333333333333333333333
+4384 3333333333333333333333333333333333333333333333333333333
+4385 3333333333333333333333333333333333333333333333333333333
+4386 3333333333333333333333333333333333333333333333333333333
+4387 3333333333333333333333333333333333333333333333333333333
+4388 3333333333333333333333333333333333333333333333333333333
+4389 3333333333333333333333333333333333333333333333333333333
+4390 3333333333333333333333333333333333333333333333333333333
+4391 3333333333333333333333333333333333333333333333333333333
+4392 3333333333333333333333333333333333333333333333333333333
+4393 3333333333333333333333333333333333333333333333333333333
+4394 3333333333333333333333333333333333333333333333333333333
+4395 3333333333333333333333333333333333333333333333333333333
+4396 3333333333333333333333333333333333333333333333333333333
+4397 3333333333333333333333333333333333333333333333333333333
+4398 3333333333333333333333333333333333333333333333333333333
+4399 3333333333333333333333333333333333333333333333333333333
+4400 3333333333333333333333333333333333333333333333333333333
+4401 3333333333333333333333333333333333333333333333333333333
+4402 3333333333333333333333333333333333333333333333333333333
+4403 3333333333333333333333333333333333333333333333333333333
+4404 3333333333333333333333333333333333333333333333333333333
+4405 3333333333333333333333333333333333333333333333333333333
+4406 3333333333333333333333333333333333333333333333333333333
+4407 3333333333333333333333333333333333333333333333333333333
+4408 3333333333333333333333333333333333333333333333333333333
+4409 3333333333333333333333333333333333333333333333333333333
+4410 3333333333333333333333333333333333333333333333333333333
+4411 3333333333333333333333333333333333333333333333333333333
+4412 3333333333333333333333333333333333333333333333333333333
+4413 3333333333333333333333333333333333333333333333333333333
+4414 3333333333333333333333333333333333333333333333333333333
+4415 3333333333333333333333333333333333333333333333333333333
+4416 3333333333333333333333333333333333333333333333333333333
+4417 3333333333333333333333333333333333333333333333333333333
+4418 3333333333333333333333333333333333333333333333333333333
+4419 3333333333333333333333333333333333333333333333333333333
+4420 3333333333333333333333333333333333333333333333333333333
+4421 3333333333333333333333333333333333333333333333333333333
+4422 3333333333333333333333333333333333333333333333333333333
+4423 3333333333333333333333333333333333333333333333333333333
+4424 3333333333333333333333333333333333333333333333333333333
+4425 3333333333333333333333333333333333333333333333333333333
+4426 3333333333333333333333333333333333333333333333333333333
+4427 3333333333333333333333333333333333333333333333333333333
+4428 3333333333333333333333333333333333333333333333333333333
+4429 3333333333333333333333333333333333333333333333333333333
+4430 3333333333333333333333333333333333333333333333333333333
+4431 3333333333333333333333333333333333333333333333333333333
+4432 3333333333333333333333333333333333333333333333333333333
+4433 3333333333333333333333333333333333333333333333333333333
+4434 3333333333333333333333333333333333333333333333333333333
+4435 3333333333333333333333333333333333333333333333333333333
+4436 3333333333333333333333333333333333333333333333333333333
+4437 3333333333333333333333333333333333333333333333333333333
+4438 3333333333333333333333333333333333333333333333333333333
+4439 3333333333333333333333333333333333333333333333333333333
+4440 3333333333333333333333333333333333333333333333333333333
+4441 3333333333333333333333333333333333333333333333333333333
+4442 3333333333333333333333333333333333333333333333333333333
+4443 3333333333333333333333333333333333333333333333333333333
+4444 3333333333333333333333333333333333333333333333333333333
+4445 3333333333333333333333333333333333333333333333333333333
+4446 3333333333333333333333333333333333333333333333333333333
+4447 3333333333333333333333333333333333333333333333333333333
+4448 3333333333333333333333333333333333333333333333333333333
+4449 3333333333333333333333333333333333333333333333333333333
+4450 3333333333333333333333333333333333333333333333333333333
+4451 3333333333333333333333333333333333333333333333333333333
+4452 3333333333333333333333333333333333333333333333333333333
+4453 3333333333333333333333333333333333333333333333333333333
+4454 3333333333333333333333333333333333333333333333333333333
+4455 3333333333333333333333333333333333333333333333333333333
+4456 3333333333333333333333333333333333333333333333333333333
+4457 3333333333333333333333333333333333333333333333333333333
+4458 3333333333333333333333333333333333333333333333333333333
+4459 3333333333333333333333333333333333333333333333333333333
+4460 3333333333333333333333333333333333333333333333333333333
+4461 3333333333333333333333333333333333333333333333333333333
+4462 3333333333333333333333333333333333333333333333333333333
+4463 3333333333333333333333333333333333333333333333333333333
+4464 3333333333333333333333333333333333333333333333333333333
+4465 3333333333333333333333333333333333333333333333333333333
+4466 3333333333333333333333333333333333333333333333333333333
+4467 3333333333333333333333333333333333333333333333333333333
+4468 3333333333333333333333333333333333333333333333333333333
+4469 3333333333333333333333333333333333333333333333333333333
+4470 3333333333333333333333333333333333333333333333333333333
+4471 3333333333333333333333333333333333333333333333333333333
+4472 3333333333333333333333333333333333333333333333333333333
+4473 3333333333333333333333333333333333333333333333333333333
+4474 3333333333333333333333333333333333333333333333333333333
+4475 3333333333333333333333333333333333333333333333333333333
+4476 3333333333333333333333333333333333333333333333333333333
+4477 3333333333333333333333333333333333333333333333333333333
+4478 3333333333333333333333333333333333333333333333333333333
+4479 3333333333333333333333333333333333333333333333333333333
+4480 3333333333333333333333333333333333333333333333333333333
+4481 3333333333333333333333333333333333333333333333333333333
+4482 3333333333333333333333333333333333333333333333333333333
+4483 3333333333333333333333333333333333333333333333333333333
+4484 3333333333333333333333333333333333333333333333333333333
+4485 3333333333333333333333333333333333333333333333333333333
+4486 3333333333333333333333333333333333333333333333333333333
+4487 3333333333333333333333333333333333333333333333333333333
+4488 3333333333333333333333333333333333333333333333333333333
+4489 3333333333333333333333333333333333333333333333333333333
+4490 3333333333333333333333333333333333333333333333333333333
+4491 3333333333333333333333333333333333333333333333333333333
+4492 3333333333333333333333333333333333333333333333333333333
+4493 3333333333333333333333333333333333333333333333333333333
+4494 3333333333333333333333333333333333333333333333333333333
+4495 3333333333333333333333333333333333333333333333333333333
+4496 3333333333333333333333333333333333333333333333333333333
+4497 3333333333333333333333333333333333333333333333333333333
+4498 3333333333333333333333333333333333333333333333333333333
+4499 3333333333333333333333333333333333333333333333333333333
+4500 3333333333333333333333333333333333333333333333333333333
+4501 3333333333333333333333333333333333333333333333333333333
+4502 3333333333333333333333333333333333333333333333333333333
+4503 3333333333333333333333333333333333333333333333333333333
+4504 3333333333333333333333333333333333333333333333333333333
+4505 3333333333333333333333333333333333333333333333333333333
+4506 3333333333333333333333333333333333333333333333333333333
+4507 3333333333333333333333333333333333333333333333333333333
+4508 3333333333333333333333333333333333333333333333333333333
+4509 3333333333333333333333333333333333333333333333333333333
+4510 3333333333333333333333333333333333333333333333333333333
+4511 3333333333333333333333333333333333333333333333333333333
+4512 3333333333333333333333333333333333333333333333333333333
+4513 3333333333333333333333333333333333333333333333333333333
+4514 3333333333333333333333333333333333333333333333333333333
+4515 3333333333333333333333333333333333333333333333333333333
+4516 3333333333333333333333333333333333333333333333333333333
+4517 3333333333333333333333333333333333333333333333333333333
+4518 3333333333333333333333333333333333333333333333333333333
+4519 3333333333333333333333333333333333333333333333333333333
+4520 3333333333333333333333333333333333333333333333333333333
+4521 3333333333333333333333333333333333333333333333333333333
+4522 3333333333333333333333333333333333333333333333333333333
+4523 3333333333333333333333333333333333333333333333333333333
+4524 3333333333333333333333333333333333333333333333333333333
+4525 3333333333333333333333333333333333333333333333333333333
+4526 3333333333333333333333333333333333333333333333333333333
+4527 3333333333333333333333333333333333333333333333333333333
+4528 3333333333333333333333333333333333333333333333333333333
+4529 3333333333333333333333333333333333333333333333333333333
+4530 3333333333333333333333333333333333333333333333333333333
+4531 3333333333333333333333333333333333333333333333333333333
+4532 3333333333333333333333333333333333333333333333333333333
+4533 3333333333333333333333333333333333333333333333333333333
+4534 3333333333333333333333333333333333333333333333333333333
+4535 3333333333333333333333333333333333333333333333333333333
+4536 3333333333333333333333333333333333333333333333333333333
+4537 3333333333333333333333333333333333333333333333333333333
+4538 3333333333333333333333333333333333333333333333333333333
+4539 3333333333333333333333333333333333333333333333333333333
+4540 3333333333333333333333333333333333333333333333333333333
+4541 3333333333333333333333333333333333333333333333333333333
+4542 3333333333333333333333333333333333333333333333333333333
+4543 3333333333333333333333333333333333333333333333333333333
+4544 3333333333333333333333333333333333333333333333333333333
+4545 3333333333333333333333333333333333333333333333333333333
+4546 3333333333333333333333333333333333333333333333333333333
+4547 3333333333333333333333333333333333333333333333333333333
+4548 3333333333333333333333333333333333333333333333333333333
+4549 3333333333333333333333333333333333333333333333333333333
+4550 3333333333333333333333333333333333333333333333333333333
+4551 3333333333333333333333333333333333333333333333333333333
+4552 3333333333333333333333333333333333333333333333333333333
+4553 3333333333333333333333333333333333333333333333333333333
+4554 3333333333333333333333333333333333333333333333333333333
+4555 3333333333333333333333333333333333333333333333333333333
+4556 3333333333333333333333333333333333333333333333333333333
+4557 3333333333333333333333333333333333333333333333333333333
+4558 3333333333333333333333333333333333333333333333333333333
+4559 3333333333333333333333333333333333333333333333333333333
+4560 3333333333333333333333333333333333333333333333333333333
+4561 3333333333333333333333333333333333333333333333333333333
+4562 3333333333333333333333333333333333333333333333333333333
+4563 3333333333333333333333333333333333333333333333333333333
+4564 3333333333333333333333333333333333333333333333333333333
+4565 3333333333333333333333333333333333333333333333333333333
+4566 3333333333333333333333333333333333333333333333333333333
+4567 3333333333333333333333333333333333333333333333333333333
+4568 3333333333333333333333333333333333333333333333333333333
+4569 3333333333333333333333333333333333333333333333333333333
+4570 3333333333333333333333333333333333333333333333333333333
+4571 3333333333333333333333333333333333333333333333333333333
+4572 3333333333333333333333333333333333333333333333333333333
+4573 3333333333333333333333333333333333333333333333333333333
+4574 3333333333333333333333333333333333333333333333333333333
+4575 3333333333333333333333333333333333333333333333333333333
+4576 3333333333333333333333333333333333333333333333333333333
+4577 3333333333333333333333333333333333333333333333333333333
+4578 3333333333333333333333333333333333333333333333333333333
+4579 3333333333333333333333333333333333333333333333333333333
+4580 3333333333333333333333333333333333333333333333333333333
+4581 3333333333333333333333333333333333333333333333333333333
+4582 3333333333333333333333333333333333333333333333333333333
+4583 3333333333333333333333333333333333333333333333333333333
+4584 3333333333333333333333333333333333333333333333333333333
+4585 3333333333333333333333333333333333333333333333333333333
+4586 3333333333333333333333333333333333333333333333333333333
+4587 3333333333333333333333333333333333333333333333333333333
+4588 3333333333333333333333333333333333333333333333333333333
+4589 3333333333333333333333333333333333333333333333333333333
+4590 3333333333333333333333333333333333333333333333333333333
+4591 3333333333333333333333333333333333333333333333333333333
+4592 3333333333333333333333333333333333333333333333333333333
+4593 3333333333333333333333333333333333333333333333333333333
+4594 3333333333333333333333333333333333333333333333333333333
+4595 3333333333333333333333333333333333333333333333333333333
+4596 3333333333333333333333333333333333333333333333333333333
+4597 3333333333333333333333333333333333333333333333333333333
+4598 3333333333333333333333333333333333333333333333333333333
+4599 3333333333333333333333333333333333333333333333333333333
+4600 3333333333333333333333333333333333333333333333333333333
+4601 3333333333333333333333333333333333333333333333333333333
+4602 3333333333333333333333333333333333333333333333333333333
+4603 3333333333333333333333333333333333333333333333333333333
+4604 3333333333333333333333333333333333333333333333333333333
+4605 3333333333333333333333333333333333333333333333333333333
+4606 3333333333333333333333333333333333333333333333333333333
+4607 3333333333333333333333333333333333333333333333333333333
+4608 3333333333333333333333333333333333333333333333333333333
+4609 3333333333333333333333333333333333333333333333333333333
+4610 3333333333333333333333333333333333333333333333333333333
+4611 3333333333333333333333333333333333333333333333333333333
+4612 3333333333333333333333333333333333333333333333333333333
+4613 3333333333333333333333333333333333333333333333333333333
+4614 3333333333333333333333333333333333333333333333333333333
+4615 3333333333333333333333333333333333333333333333333333333
+4616 3333333333333333333333333333333333333333333333333333333
+4617 3333333333333333333333333333333333333333333333333333333
+4618 3333333333333333333333333333333333333333333333333333333
+4619 3333333333333333333333333333333333333333333333333333333
+4620 3333333333333333333333333333333333333333333333333333333
+4621 3333333333333333333333333333333333333333333333333333333
+4622 3333333333333333333333333333333333333333333333333333333
+4623 3333333333333333333333333333333333333333333333333333333
+4624 3333333333333333333333333333333333333333333333333333333
+4625 3333333333333333333333333333333333333333333333333333333
+4626 3333333333333333333333333333333333333333333333333333333
+4627 3333333333333333333333333333333333333333333333333333333
+4628 3333333333333333333333333333333333333333333333333333333
+4629 3333333333333333333333333333333333333333333333333333333
+4630 3333333333333333333333333333333333333333333333333333333
+4631 3333333333333333333333333333333333333333333333333333333
+4632 3333333333333333333333333333333333333333333333333333333
+4633 3333333333333333333333333333333333333333333333333333333
+4634 3333333333333333333333333333333333333333333333333333333
+4635 3333333333333333333333333333333333333333333333333333333
+4636 3333333333333333333333333333333333333333333333333333333
+4637 3333333333333333333333333333333333333333333333333333333
+4638 3333333333333333333333333333333333333333333333333333333
+4639 3333333333333333333333333333333333333333333333333333333
+4640 3333333333333333333333333333333333333333333333333333333
+4641 3333333333333333333333333333333333333333333333333333333
+4642 3333333333333333333333333333333333333333333333333333333
+4643 3333333333333333333333333333333333333333333333333333333
+4644 3333333333333333333333333333333333333333333333333333333
+4645 3333333333333333333333333333333333333333333333333333333
+4646 3333333333333333333333333333333333333333333333333333333
+4647 3333333333333333333333333333333333333333333333333333333
+4648 3333333333333333333333333333333333333333333333333333333
+4649 3333333333333333333333333333333333333333333333333333333
+4650 3333333333333333333333333333333333333333333333333333333
+4651 3333333333333333333333333333333333333333333333333333333
+4652 3333333333333333333333333333333333333333333333333333333
+4653 3333333333333333333333333333333333333333333333333333333
+4654 3333333333333333333333333333333333333333333333333333333
+4655 3333333333333333333333333333333333333333333333333333333
+4656 3333333333333333333333333333333333333333333333333333333
+4657 3333333333333333333333333333333333333333333333333333333
+4658 3333333333333333333333333333333333333333333333333333333
+4659 3333333333333333333333333333333333333333333333333333333
+4660 3333333333333333333333333333333333333333333333333333333
+4661 3333333333333333333333333333333333333333333333333333333
+4662 3333333333333333333333333333333333333333333333333333333
+4663 3333333333333333333333333333333333333333333333333333333
+4664 3333333333333333333333333333333333333333333333333333333
+4665 3333333333333333333333333333333333333333333333333333333
+4666 3333333333333333333333333333333333333333333333333333333
+4667 3333333333333333333333333333333333333333333333333333333
+4668 3333333333333333333333333333333333333333333333333333333
+4669 3333333333333333333333333333333333333333333333333333333
+4670 3333333333333333333333333333333333333333333333333333333
+4671 3333333333333333333333333333333333333333333333333333333
+4672 3333333333333333333333333333333333333333333333333333333
+4673 3333333333333333333333333333333333333333333333333333333
+4674 3333333333333333333333333333333333333333333333333333333
+4675 3333333333333333333333333333333333333333333333333333333
+4676 3333333333333333333333333333333333333333333333333333333
+4677 3333333333333333333333333333333333333333333333333333333
+4678 3333333333333333333333333333333333333333333333333333333
+4679 3333333333333333333333333333333333333333333333333333333
+4680 3333333333333333333333333333333333333333333333333333333
+4681 3333333333333333333333333333333333333333333333333333333
+4682 3333333333333333333333333333333333333333333333333333333
+4683 3333333333333333333333333333333333333333333333333333333
+4684 3333333333333333333333333333333333333333333333333333333
+4685 3333333333333333333333333333333333333333333333333333333
+4686 3333333333333333333333333333333333333333333333333333333
+4687 3333333333333333333333333333333333333333333333333333333
+4688 3333333333333333333333333333333333333333333333333333333
+4689 3333333333333333333333333333333333333333333333333333333
+4690 3333333333333333333333333333333333333333333333333333333
+4691 3333333333333333333333333333333333333333333333333333333
+4692 3333333333333333333333333333333333333333333333333333333
+4693 3333333333333333333333333333333333333333333333333333333
+4694 3333333333333333333333333333333333333333333333333333333
+4695 3333333333333333333333333333333333333333333333333333333
+4696 3333333333333333333333333333333333333333333333333333333
+4697 3333333333333333333333333333333333333333333333333333333
+4698 3333333333333333333333333333333333333333333333333333333
+4699 3333333333333333333333333333333333333333333333333333333
+4700 3333333333333333333333333333333333333333333333333333333
+4701 3333333333333333333333333333333333333333333333333333333
+4702 3333333333333333333333333333333333333333333333333333333
+4703 3333333333333333333333333333333333333333333333333333333
+4704 3333333333333333333333333333333333333333333333333333333
+4705 3333333333333333333333333333333333333333333333333333333
+4706 3333333333333333333333333333333333333333333333333333333
+4707 3333333333333333333333333333333333333333333333333333333
+4708 3333333333333333333333333333333333333333333333333333333
+4709 3333333333333333333333333333333333333333333333333333333
+4710 3333333333333333333333333333333333333333333333333333333
+4711 3333333333333333333333333333333333333333333333333333333
+4712 3333333333333333333333333333333333333333333333333333333
+4713 3333333333333333333333333333333333333333333333333333333
+4714 3333333333333333333333333333333333333333333333333333333
+4715 3333333333333333333333333333333333333333333333333333333
+4716 3333333333333333333333333333333333333333333333333333333
+4717 3333333333333333333333333333333333333333333333333333333
+4718 3333333333333333333333333333333333333333333333333333333
+4719 3333333333333333333333333333333333333333333333333333333
+4720 3333333333333333333333333333333333333333333333333333333
+4721 3333333333333333333333333333333333333333333333333333333
+4722 3333333333333333333333333333333333333333333333333333333
+4723 3333333333333333333333333333333333333333333333333333333
+4724 3333333333333333333333333333333333333333333333333333333
+4725 3333333333333333333333333333333333333333333333333333333
+4726 3333333333333333333333333333333333333333333333333333333
+4727 3333333333333333333333333333333333333333333333333333333
+4728 3333333333333333333333333333333333333333333333333333333
+4729 3333333333333333333333333333333333333333333333333333333
+4730 3333333333333333333333333333333333333333333333333333333
+4731 3333333333333333333333333333333333333333333333333333333
+4732 3333333333333333333333333333333333333333333333333333333
+4733 3333333333333333333333333333333333333333333333333333333
+4734 3333333333333333333333333333333333333333333333333333333
+4735 3333333333333333333333333333333333333333333333333333333
+4736 3333333333333333333333333333333333333333333333333333333
+4737 3333333333333333333333333333333333333333333333333333333
+4738 3333333333333333333333333333333333333333333333333333333
+4739 3333333333333333333333333333333333333333333333333333333
+4740 3333333333333333333333333333333333333333333333333333333
+4741 3333333333333333333333333333333333333333333333333333333
+4742 3333333333333333333333333333333333333333333333333333333
+4743 3333333333333333333333333333333333333333333333333333333
+4744 3333333333333333333333333333333333333333333333333333333
+4745 3333333333333333333333333333333333333333333333333333333
+4746 3333333333333333333333333333333333333333333333333333333
+4747 3333333333333333333333333333333333333333333333333333333
+4748 3333333333333333333333333333333333333333333333333333333
+4749 3333333333333333333333333333333333333333333333333333333
+4750 3333333333333333333333333333333333333333333333333333333
+4751 3333333333333333333333333333333333333333333333333333333
+4752 3333333333333333333333333333333333333333333333333333333
+4753 3333333333333333333333333333333333333333333333333333333
+4754 3333333333333333333333333333333333333333333333333333333
+4755 3333333333333333333333333333333333333333333333333333333
+4756 3333333333333333333333333333333333333333333333333333333
+4757 3333333333333333333333333333333333333333333333333333333
+4758 3333333333333333333333333333333333333333333333333333333
+4759 3333333333333333333333333333333333333333333333333333333
+4760 3333333333333333333333333333333333333333333333333333333
+4761 3333333333333333333333333333333333333333333333333333333
+4762 3333333333333333333333333333333333333333333333333333333
+4763 3333333333333333333333333333333333333333333333333333333
+4764 3333333333333333333333333333333333333333333333333333333
+4765 3333333333333333333333333333333333333333333333333333333
+4766 3333333333333333333333333333333333333333333333333333333
+4767 3333333333333333333333333333333333333333333333333333333
+4768 3333333333333333333333333333333333333333333333333333333
+4769 3333333333333333333333333333333333333333333333333333333
+4770 3333333333333333333333333333333333333333333333333333333
+4771 3333333333333333333333333333333333333333333333333333333
+4772 3333333333333333333333333333333333333333333333333333333
+4773 3333333333333333333333333333333333333333333333333333333
+4774 3333333333333333333333333333333333333333333333333333333
+4775 3333333333333333333333333333333333333333333333333333333
+4776 3333333333333333333333333333333333333333333333333333333
+4777 3333333333333333333333333333333333333333333333333333333
+4778 3333333333333333333333333333333333333333333333333333333
+4779 3333333333333333333333333333333333333333333333333333333
+4780 3333333333333333333333333333333333333333333333333333333
+4781 3333333333333333333333333333333333333333333333333333333
+4782 3333333333333333333333333333333333333333333333333333333
+4783 3333333333333333333333333333333333333333333333333333333
+4784 3333333333333333333333333333333333333333333333333333333
+4785 3333333333333333333333333333333333333333333333333333333
+4786 3333333333333333333333333333333333333333333333333333333
+4787 3333333333333333333333333333333333333333333333333333333
+4788 3333333333333333333333333333333333333333333333333333333
+4789 3333333333333333333333333333333333333333333333333333333
+4790 3333333333333333333333333333333333333333333333333333333
+4791 3333333333333333333333333333333333333333333333333333333
+4792 3333333333333333333333333333333333333333333333333333333
+4793 3333333333333333333333333333333333333333333333333333333
+4794 3333333333333333333333333333333333333333333333333333333
+4795 3333333333333333333333333333333333333333333333333333333
+4796 3333333333333333333333333333333333333333333333333333333
+4797 3333333333333333333333333333333333333333333333333333333
+4798 3333333333333333333333333333333333333333333333333333333
+4799 3333333333333333333333333333333333333333333333333333333
+4800 3333333333333333333333333333333333333333333333333333333
+4801 3333333333333333333333333333333333333333333333333333333
+4802 3333333333333333333333333333333333333333333333333333333
+4803 3333333333333333333333333333333333333333333333333333333
+4804 3333333333333333333333333333333333333333333333333333333
+4805 3333333333333333333333333333333333333333333333333333333
+4806 3333333333333333333333333333333333333333333333333333333
+4807 3333333333333333333333333333333333333333333333333333333
+4808 3333333333333333333333333333333333333333333333333333333
+4809 3333333333333333333333333333333333333333333333333333333
+4810 3333333333333333333333333333333333333333333333333333333
+4811 3333333333333333333333333333333333333333333333333333333
+4812 3333333333333333333333333333333333333333333333333333333
+4813 3333333333333333333333333333333333333333333333333333333
+4814 3333333333333333333333333333333333333333333333333333333
+4815 3333333333333333333333333333333333333333333333333333333
+4816 3333333333333333333333333333333333333333333333333333333
+4817 3333333333333333333333333333333333333333333333333333333
+4818 3333333333333333333333333333333333333333333333333333333
+4819 3333333333333333333333333333333333333333333333333333333
+4820 3333333333333333333333333333333333333333333333333333333
+4821 3333333333333333333333333333333333333333333333333333333
+4822 3333333333333333333333333333333333333333333333333333333
+4823 3333333333333333333333333333333333333333333333333333333
+4824 3333333333333333333333333333333333333333333333333333333
+4825 3333333333333333333333333333333333333333333333333333333
+4826 3333333333333333333333333333333333333333333333333333333
+4827 3333333333333333333333333333333333333333333333333333333
+4828 3333333333333333333333333333333333333333333333333333333
+4829 3333333333333333333333333333333333333333333333333333333
+4830 3333333333333333333333333333333333333333333333333333333
+4831 3333333333333333333333333333333333333333333333333333333
+4832 3333333333333333333333333333333333333333333333333333333
+4833 3333333333333333333333333333333333333333333333333333333
+4834 3333333333333333333333333333333333333333333333333333333
+4835 3333333333333333333333333333333333333333333333333333333
+4836 3333333333333333333333333333333333333333333333333333333
+4837 3333333333333333333333333333333333333333333333333333333
+4838 3333333333333333333333333333333333333333333333333333333
+4839 3333333333333333333333333333333333333333333333333333333
+4840 3333333333333333333333333333333333333333333333333333333
+4841 3333333333333333333333333333333333333333333333333333333
+4842 3333333333333333333333333333333333333333333333333333333
+4843 3333333333333333333333333333333333333333333333333333333
+4844 3333333333333333333333333333333333333333333333333333333
+4845 3333333333333333333333333333333333333333333333333333333
+4846 3333333333333333333333333333333333333333333333333333333
+4847 3333333333333333333333333333333333333333333333333333333
+4848 3333333333333333333333333333333333333333333333333333333
+4849 3333333333333333333333333333333333333333333333333333333
+4850 3333333333333333333333333333333333333333333333333333333
+4851 3333333333333333333333333333333333333333333333333333333
+4852 3333333333333333333333333333333333333333333333333333333
+4853 3333333333333333333333333333333333333333333333333333333
+4854 3333333333333333333333333333333333333333333333333333333
+4855 3333333333333333333333333333333333333333333333333333333
+4856 3333333333333333333333333333333333333333333333333333333
+4857 3333333333333333333333333333333333333333333333333333333
+4858 3333333333333333333333333333333333333333333333333333333
+4859 3333333333333333333333333333333333333333333333333333333
+4860 3333333333333333333333333333333333333333333333333333333
+4861 3333333333333333333333333333333333333333333333333333333
+4862 3333333333333333333333333333333333333333333333333333333
+4863 3333333333333333333333333333333333333333333333333333333
+4864 3333333333333333333333333333333333333333333333333333333
+4865 3333333333333333333333333333333333333333333333333333333
+4866 3333333333333333333333333333333333333333333333333333333
+4867 3333333333333333333333333333333333333333333333333333333
+4868 3333333333333333333333333333333333333333333333333333333
+4869 3333333333333333333333333333333333333333333333333333333
+4870 3333333333333333333333333333333333333333333333333333333
+4871 3333333333333333333333333333333333333333333333333333333
+4872 3333333333333333333333333333333333333333333333333333333
+4873 3333333333333333333333333333333333333333333333333333333
+4874 3333333333333333333333333333333333333333333333333333333
+4875 3333333333333333333333333333333333333333333333333333333
+4876 3333333333333333333333333333333333333333333333333333333
+4877 3333333333333333333333333333333333333333333333333333333
+4878 3333333333333333333333333333333333333333333333333333333
+4879 3333333333333333333333333333333333333333333333333333333
+4880 3333333333333333333333333333333333333333333333333333333
+4881 3333333333333333333333333333333333333333333333333333333
+4882 3333333333333333333333333333333333333333333333333333333
+4883 3333333333333333333333333333333333333333333333333333333
+4884 3333333333333333333333333333333333333333333333333333333
+4885 3333333333333333333333333333333333333333333333333333333
+4886 3333333333333333333333333333333333333333333333333333333
+4887 3333333333333333333333333333333333333333333333333333333
+4888 3333333333333333333333333333333333333333333333333333333
+4889 3333333333333333333333333333333333333333333333333333333
+4890 3333333333333333333333333333333333333333333333333333333
+4891 3333333333333333333333333333333333333333333333333333333
+4892 3333333333333333333333333333333333333333333333333333333
+4893 3333333333333333333333333333333333333333333333333333333
+4894 3333333333333333333333333333333333333333333333333333333
+4895 3333333333333333333333333333333333333333333333333333333
+4896 3333333333333333333333333333333333333333333333333333333
+4897 3333333333333333333333333333333333333333333333333333333
+4898 3333333333333333333333333333333333333333333333333333333
+4899 3333333333333333333333333333333333333333333333333333333
+4900 3333333333333333333333333333333333333333333333333333333
+4901 3333333333333333333333333333333333333333333333333333333
+4902 3333333333333333333333333333333333333333333333333333333
+4903 3333333333333333333333333333333333333333333333333333333
+4904 3333333333333333333333333333333333333333333333333333333
+4905 3333333333333333333333333333333333333333333333333333333
+4906 3333333333333333333333333333333333333333333333333333333
+4907 3333333333333333333333333333333333333333333333333333333
+4908 3333333333333333333333333333333333333333333333333333333
+4909 3333333333333333333333333333333333333333333333333333333
+4910 3333333333333333333333333333333333333333333333333333333
+4911 3333333333333333333333333333333333333333333333333333333
+4912 3333333333333333333333333333333333333333333333333333333
+4913 3333333333333333333333333333333333333333333333333333333
+4914 3333333333333333333333333333333333333333333333333333333
+4915 3333333333333333333333333333333333333333333333333333333
+4916 3333333333333333333333333333333333333333333333333333333
+4917 3333333333333333333333333333333333333333333333333333333
+4918 3333333333333333333333333333333333333333333333333333333
+4919 3333333333333333333333333333333333333333333333333333333
+4920 3333333333333333333333333333333333333333333333333333333
+4921 3333333333333333333333333333333333333333333333333333333
+4922 3333333333333333333333333333333333333333333333333333333
+4923 3333333333333333333333333333333333333333333333333333333
+4924 3333333333333333333333333333333333333333333333333333333
+4925 3333333333333333333333333333333333333333333333333333333
+4926 3333333333333333333333333333333333333333333333333333333
+4927 3333333333333333333333333333333333333333333333333333333
+4928 3333333333333333333333333333333333333333333333333333333
+4929 3333333333333333333333333333333333333333333333333333333
+4930 3333333333333333333333333333333333333333333333333333333
+4931 3333333333333333333333333333333333333333333333333333333
+4932 3333333333333333333333333333333333333333333333333333333
+4933 3333333333333333333333333333333333333333333333333333333
+4934 3333333333333333333333333333333333333333333333333333333
+4935 3333333333333333333333333333333333333333333333333333333
+4936 3333333333333333333333333333333333333333333333333333333
+4937 3333333333333333333333333333333333333333333333333333333
+4938 3333333333333333333333333333333333333333333333333333333
+4939 3333333333333333333333333333333333333333333333333333333
+4940 3333333333333333333333333333333333333333333333333333333
+4941 3333333333333333333333333333333333333333333333333333333
+4942 3333333333333333333333333333333333333333333333333333333
+4943 3333333333333333333333333333333333333333333333333333333
+4944 3333333333333333333333333333333333333333333333333333333
+4945 3333333333333333333333333333333333333333333333333333333
+4946 3333333333333333333333333333333333333333333333333333333
+4947 3333333333333333333333333333333333333333333333333333333
+4948 3333333333333333333333333333333333333333333333333333333
+4949 3333333333333333333333333333333333333333333333333333333
+4950 3333333333333333333333333333333333333333333333333333333
+4951 3333333333333333333333333333333333333333333333333333333
+4952 3333333333333333333333333333333333333333333333333333333
+4953 3333333333333333333333333333333333333333333333333333333
+4954 3333333333333333333333333333333333333333333333333333333
+4955 3333333333333333333333333333333333333333333333333333333
+4956 3333333333333333333333333333333333333333333333333333333
+4957 3333333333333333333333333333333333333333333333333333333
+4958 3333333333333333333333333333333333333333333333333333333
+4959 3333333333333333333333333333333333333333333333333333333
+4960 3333333333333333333333333333333333333333333333333333333
+4961 3333333333333333333333333333333333333333333333333333333
+4962 3333333333333333333333333333333333333333333333333333333
+4963 3333333333333333333333333333333333333333333333333333333
+4964 3333333333333333333333333333333333333333333333333333333
+4965 3333333333333333333333333333333333333333333333333333333
+4966 3333333333333333333333333333333333333333333333333333333
+4967 3333333333333333333333333333333333333333333333333333333
+4968 3333333333333333333333333333333333333333333333333333333
+4969 3333333333333333333333333333333333333333333333333333333
+4970 3333333333333333333333333333333333333333333333333333333
+4971 3333333333333333333333333333333333333333333333333333333
+4972 3333333333333333333333333333333333333333333333333333333
+4973 3333333333333333333333333333333333333333333333333333333
+4974 3333333333333333333333333333333333333333333333333333333
+4975 3333333333333333333333333333333333333333333333333333333
+4976 3333333333333333333333333333333333333333333333333333333
+4977 3333333333333333333333333333333333333333333333333333333
+4978 3333333333333333333333333333333333333333333333333333333
+4979 3333333333333333333333333333333333333333333333333333333
+4980 3333333333333333333333333333333333333333333333333333333
+4981 3333333333333333333333333333333333333333333333333333333
+4982 3333333333333333333333333333333333333333333333333333333
+4983 3333333333333333333333333333333333333333333333333333333
+4984 3333333333333333333333333333333333333333333333333333333
+4985 3333333333333333333333333333333333333333333333333333333
+4986 3333333333333333333333333333333333333333333333333333333
+4987 3333333333333333333333333333333333333333333333333333333
+4988 3333333333333333333333333333333333333333333333333333333
+4989 3333333333333333333333333333333333333333333333333333333
+4990 3333333333333333333333333333333333333333333333333333333
+4991 3333333333333333333333333333333333333333333333333333333
+4992 3333333333333333333333333333333333333333333333333333333
+4993 3333333333333333333333333333333333333333333333333333333
+4994 3333333333333333333333333333333333333333333333333333333
+4995 3333333333333333333333333333333333333333333333333333333
+4996 3333333333333333333333333333333333333333333333333333333
+4997 3333333333333333333333333333333333333333333333333333333
+4998 3333333333333333333333333333333333333333333333333333333
+4999 3333333333333333333333333333333333333333333333333333333
+5000 3333333333333333333333333333333333333333333333333333333
+5001 3333333333333333333333333333333333333333333333333333333
+5002 3333333333333333333333333333333333333333333333333333333
+5003 3333333333333333333333333333333333333333333333333333333
+5004 3333333333333333333333333333333333333333333333333333333
+5005 3333333333333333333333333333333333333333333333333333333
+5006 3333333333333333333333333333333333333333333333333333333
+5007 3333333333333333333333333333333333333333333333333333333
+5008 3333333333333333333333333333333333333333333333333333333
+5009 3333333333333333333333333333333333333333333333333333333
+5010 3333333333333333333333333333333333333333333333333333333
+5011 3333333333333333333333333333333333333333333333333333333
+5012 3333333333333333333333333333333333333333333333333333333
+5013 3333333333333333333333333333333333333333333333333333333
+5014 3333333333333333333333333333333333333333333333333333333
+5015 3333333333333333333333333333333333333333333333333333333
+5016 3333333333333333333333333333333333333333333333333333333
+5017 3333333333333333333333333333333333333333333333333333333
+5018 3333333333333333333333333333333333333333333333333333333
+5019 3333333333333333333333333333333333333333333333333333333
+5020 3333333333333333333333333333333333333333333333333333333
+5021 3333333333333333333333333333333333333333333333333333333
+5022 3333333333333333333333333333333333333333333333333333333
+5023 3333333333333333333333333333333333333333333333333333333
+5024 3333333333333333333333333333333333333333333333333333333
+5025 3333333333333333333333333333333333333333333333333333333
+5026 3333333333333333333333333333333333333333333333333333333
+5027 3333333333333333333333333333333333333333333333333333333
+5028 3333333333333333333333333333333333333333333333333333333
+5029 3333333333333333333333333333333333333333333333333333333
+5030 3333333333333333333333333333333333333333333333333333333
+5031 3333333333333333333333333333333333333333333333333333333
+5032 3333333333333333333333333333333333333333333333333333333
+5033 3333333333333333333333333333333333333333333333333333333
+5034 3333333333333333333333333333333333333333333333333333333
+5035 3333333333333333333333333333333333333333333333333333333
+5036 3333333333333333333333333333333333333333333333333333333
+5037 3333333333333333333333333333333333333333333333333333333
+5038 3333333333333333333333333333333333333333333333333333333
+5039 3333333333333333333333333333333333333333333333333333333
+5040 3333333333333333333333333333333333333333333333333333333
+5041 3333333333333333333333333333333333333333333333333333333
+5042 3333333333333333333333333333333333333333333333333333333
+5043 3333333333333333333333333333333333333333333333333333333
+5044 3333333333333333333333333333333333333333333333333333333
+5045 3333333333333333333333333333333333333333333333333333333
+5046 3333333333333333333333333333333333333333333333333333333
+5047 3333333333333333333333333333333333333333333333333333333
+5048 3333333333333333333333333333333333333333333333333333333
+5049 3333333333333333333333333333333333333333333333333333333
+5050 3333333333333333333333333333333333333333333333333333333
+5051 3333333333333333333333333333333333333333333333333333333
+5052 3333333333333333333333333333333333333333333333333333333
+5053 3333333333333333333333333333333333333333333333333333333
+5054 3333333333333333333333333333333333333333333333333333333
+5055 3333333333333333333333333333333333333333333333333333333
+5056 3333333333333333333333333333333333333333333333333333333
+5057 3333333333333333333333333333333333333333333333333333333
+5058 3333333333333333333333333333333333333333333333333333333
+5059 3333333333333333333333333333333333333333333333333333333
+5060 3333333333333333333333333333333333333333333333333333333
+5061 3333333333333333333333333333333333333333333333333333333
+5062 3333333333333333333333333333333333333333333333333333333
+5063 3333333333333333333333333333333333333333333333333333333
+5064 3333333333333333333333333333333333333333333333333333333
+5065 3333333333333333333333333333333333333333333333333333333
+5066 3333333333333333333333333333333333333333333333333333333
+5067 3333333333333333333333333333333333333333333333333333333
+5068 3333333333333333333333333333333333333333333333333333333
+5069 3333333333333333333333333333333333333333333333333333333
+5070 3333333333333333333333333333333333333333333333333333333
+5071 3333333333333333333333333333333333333333333333333333333
+5072 3333333333333333333333333333333333333333333333333333333
+5073 3333333333333333333333333333333333333333333333333333333
+5074 3333333333333333333333333333333333333333333333333333333
+5075 3333333333333333333333333333333333333333333333333333333
+5076 3333333333333333333333333333333333333333333333333333333
+5077 3333333333333333333333333333333333333333333333333333333
+5078 3333333333333333333333333333333333333333333333333333333
+5079 3333333333333333333333333333333333333333333333333333333
+5080 3333333333333333333333333333333333333333333333333333333
+5081 3333333333333333333333333333333333333333333333333333333
+5082 3333333333333333333333333333333333333333333333333333333
+5083 3333333333333333333333333333333333333333333333333333333
+5084 3333333333333333333333333333333333333333333333333333333
+5085 3333333333333333333333333333333333333333333333333333333
+5086 3333333333333333333333333333333333333333333333333333333
+5087 3333333333333333333333333333333333333333333333333333333
+5088 3333333333333333333333333333333333333333333333333333333
+5089 3333333333333333333333333333333333333333333333333333333
+5090 3333333333333333333333333333333333333333333333333333333
+5091 3333333333333333333333333333333333333333333333333333333
+5092 3333333333333333333333333333333333333333333333333333333
+5093 3333333333333333333333333333333333333333333333333333333
+5094 3333333333333333333333333333333333333333333333333333333
+5095 3333333333333333333333333333333333333333333333333333333
+5096 3333333333333333333333333333333333333333333333333333333
+5097 3333333333333333333333333333333333333333333333333333333
+5098 3333333333333333333333333333333333333333333333333333333
+5099 3333333333333333333333333333333333333333333333333333333
+5100 3333333333333333333333333333333333333333333333333333333
+5101 3333333333333333333333333333333333333333333333333333333
+5102 3333333333333333333333333333333333333333333333333333333
+5103 3333333333333333333333333333333333333333333333333333333
+5104 3333333333333333333333333333333333333333333333333333333
+5105 3333333333333333333333333333333333333333333333333333333
+5106 3333333333333333333333333333333333333333333333333333333
+5107 3333333333333333333333333333333333333333333333333333333
+5108 3333333333333333333333333333333333333333333333333333333
+5109 3333333333333333333333333333333333333333333333333333333
+5110 3333333333333333333333333333333333333333333333333333333
+5111 3333333333333333333333333333333333333333333333333333333
+5112 3333333333333333333333333333333333333333333333333333333
+5113 3333333333333333333333333333333333333333333333333333333
+5114 3333333333333333333333333333333333333333333333333333333
+5115 3333333333333333333333333333333333333333333333333333333
+5116 3333333333333333333333333333333333333333333333333333333
+5117 3333333333333333333333333333333333333333333333333333333
+5118 3333333333333333333333333333333333333333333333333333333
+5119 3333333333333333333333333333333333333333333333333333333
+5120 3333333333333333333333333333333333333333333333333333333
+5121 3333333333333333333333333333333333333333333333333333333
+5122 3333333333333333333333333333333333333333333333333333333
+5123 3333333333333333333333333333333333333333333333333333333
+5124 3333333333333333333333333333333333333333333333333333333
+5125 3333333333333333333333333333333333333333333333333333333
+5126 3333333333333333333333333333333333333333333333333333333
+5127 3333333333333333333333333333333333333333333333333333333
+5128 3333333333333333333333333333333333333333333333333333333
+5129 3333333333333333333333333333333333333333333333333333333
+5130 3333333333333333333333333333333333333333333333333333333
+5131 3333333333333333333333333333333333333333333333333333333
+5132 3333333333333333333333333333333333333333333333333333333
+5133 3333333333333333333333333333333333333333333333333333333
+5134 3333333333333333333333333333333333333333333333333333333
+5135 3333333333333333333333333333333333333333333333333333333
+5136 3333333333333333333333333333333333333333333333333333333
+5137 3333333333333333333333333333333333333333333333333333333
+5138 3333333333333333333333333333333333333333333333333333333
+5139 3333333333333333333333333333333333333333333333333333333
+5140 3333333333333333333333333333333333333333333333333333333
+5141 3333333333333333333333333333333333333333333333333333333
+5142 3333333333333333333333333333333333333333333333333333333
+5143 3333333333333333333333333333333333333333333333333333333
+5144 3333333333333333333333333333333333333333333333333333333
+5145 3333333333333333333333333333333333333333333333333333333
+5146 3333333333333333333333333333333333333333333333333333333
+5147 3333333333333333333333333333333333333333333333333333333
+5148 3333333333333333333333333333333333333333333333333333333
+5149 3333333333333333333333333333333333333333333333333333333
+5150 3333333333333333333333333333333333333333333333333333333
+5151 3333333333333333333333333333333333333333333333333333333
+5152 3333333333333333333333333333333333333333333333333333333
+5153 3333333333333333333333333333333333333333333333333333333
+5154 3333333333333333333333333333333333333333333333333333333
+5155 3333333333333333333333333333333333333333333333333333333
+5156 3333333333333333333333333333333333333333333333333333333
+5157 3333333333333333333333333333333333333333333333333333333
+5158 3333333333333333333333333333333333333333333333333333333
+5159 3333333333333333333333333333333333333333333333333333333
+5160 3333333333333333333333333333333333333333333333333333333
+5161 3333333333333333333333333333333333333333333333333333333
+5162 3333333333333333333333333333333333333333333333333333333
+5163 3333333333333333333333333333333333333333333333333333333
+5164 3333333333333333333333333333333333333333333333333333333
+5165 3333333333333333333333333333333333333333333333333333333
+5166 3333333333333333333333333333333333333333333333333333333
+5167 3333333333333333333333333333333333333333333333333333333
+5168 3333333333333333333333333333333333333333333333333333333
+5169 3333333333333333333333333333333333333333333333333333333
+5170 3333333333333333333333333333333333333333333333333333333
+5171 3333333333333333333333333333333333333333333333333333333
+5172 3333333333333333333333333333333333333333333333333333333
+5173 3333333333333333333333333333333333333333333333333333333
+5174 3333333333333333333333333333333333333333333333333333333
+5175 3333333333333333333333333333333333333333333333333333333
+5176 3333333333333333333333333333333333333333333333333333333
+5177 3333333333333333333333333333333333333333333333333333333
+5178 3333333333333333333333333333333333333333333333333333333
+5179 3333333333333333333333333333333333333333333333333333333
+5180 3333333333333333333333333333333333333333333333333333333
+5181 3333333333333333333333333333333333333333333333333333333
+5182 3333333333333333333333333333333333333333333333333333333
+5183 3333333333333333333333333333333333333333333333333333333
+5184 3333333333333333333333333333333333333333333333333333333
+5185 3333333333333333333333333333333333333333333333333333333
+5186 3333333333333333333333333333333333333333333333333333333
+5187 3333333333333333333333333333333333333333333333333333333
+5188 3333333333333333333333333333333333333333333333333333333
+5189 3333333333333333333333333333333333333333333333333333333
+5190 3333333333333333333333333333333333333333333333333333333
+5191 3333333333333333333333333333333333333333333333333333333
+5192 3333333333333333333333333333333333333333333333333333333
+5193 3333333333333333333333333333333333333333333333333333333
+5194 3333333333333333333333333333333333333333333333333333333
+5195 3333333333333333333333333333333333333333333333333333333
+5196 3333333333333333333333333333333333333333333333333333333
+5197 3333333333333333333333333333333333333333333333333333333
+5198 3333333333333333333333333333333333333333333333333333333
+5199 3333333333333333333333333333333333333333333333333333333
+5200 3333333333333333333333333333333333333333333333333333333
+5201 3333333333333333333333333333333333333333333333333333333
+5202 3333333333333333333333333333333333333333333333333333333
+5203 3333333333333333333333333333333333333333333333333333333
+5204 3333333333333333333333333333333333333333333333333333333
+5205 3333333333333333333333333333333333333333333333333333333
+5206 3333333333333333333333333333333333333333333333333333333
+5207 3333333333333333333333333333333333333333333333333333333
+5208 3333333333333333333333333333333333333333333333333333333
+5209 3333333333333333333333333333333333333333333333333333333
+5210 3333333333333333333333333333333333333333333333333333333
+5211 3333333333333333333333333333333333333333333333333333333
+5212 3333333333333333333333333333333333333333333333333333333
+5213 3333333333333333333333333333333333333333333333333333333
+5214 3333333333333333333333333333333333333333333333333333333
+5215 3333333333333333333333333333333333333333333333333333333
+5216 3333333333333333333333333333333333333333333333333333333
+5217 3333333333333333333333333333333333333333333333333333333
+5218 3333333333333333333333333333333333333333333333333333333
+5219 3333333333333333333333333333333333333333333333333333333
+5220 3333333333333333333333333333333333333333333333333333333
+5221 3333333333333333333333333333333333333333333333333333333
+5222 3333333333333333333333333333333333333333333333333333333
+5223 3333333333333333333333333333333333333333333333333333333
+5224 3333333333333333333333333333333333333333333333333333333
+5225 3333333333333333333333333333333333333333333333333333333
+5226 3333333333333333333333333333333333333333333333333333333
+5227 3333333333333333333333333333333333333333333333333333333
+5228 3333333333333333333333333333333333333333333333333333333
+5229 3333333333333333333333333333333333333333333333333333333
+5230 3333333333333333333333333333333333333333333333333333333
+5231 3333333333333333333333333333333333333333333333333333333
+5232 3333333333333333333333333333333333333333333333333333333
+5233 3333333333333333333333333333333333333333333333333333333
+5234 3333333333333333333333333333333333333333333333333333333
+5235 3333333333333333333333333333333333333333333333333333333
+5236 3333333333333333333333333333333333333333333333333333333
+5237 3333333333333333333333333333333333333333333333333333333
+5238 3333333333333333333333333333333333333333333333333333333
+5239 3333333333333333333333333333333333333333333333333333333
+5240 3333333333333333333333333333333333333333333333333333333
+5241 3333333333333333333333333333333333333333333333333333333
+5242 3333333333333333333333333333333333333333333333333333333
+5243 3333333333333333333333333333333333333333333333333333333
+5244 3333333333333333333333333333333333333333333333333333333
+5245 3333333333333333333333333333333333333333333333333333333
+5246 3333333333333333333333333333333333333333333333333333333
+5247 3333333333333333333333333333333333333333333333333333333
+5248 3333333333333333333333333333333333333333333333333333333
+5249 3333333333333333333333333333333333333333333333333333333
+5250 3333333333333333333333333333333333333333333333333333333
+5251 3333333333333333333333333333333333333333333333333333333
+5252 3333333333333333333333333333333333333333333333333333333
+5253 3333333333333333333333333333333333333333333333333333333
+5254 3333333333333333333333333333333333333333333333333333333
+5255 3333333333333333333333333333333333333333333333333333333
+5256 3333333333333333333333333333333333333333333333333333333
+5257 3333333333333333333333333333333333333333333333333333333
+5258 3333333333333333333333333333333333333333333333333333333
+5259 3333333333333333333333333333333333333333333333333333333
+5260 3333333333333333333333333333333333333333333333333333333
+5261 3333333333333333333333333333333333333333333333333333333
+5262 3333333333333333333333333333333333333333333333333333333
+5263 3333333333333333333333333333333333333333333333333333333
+5264 3333333333333333333333333333333333333333333333333333333
+5265 3333333333333333333333333333333333333333333333333333333
+5266 3333333333333333333333333333333333333333333333333333333
+5267 3333333333333333333333333333333333333333333333333333333
+5268 3333333333333333333333333333333333333333333333333333333
+5269 3333333333333333333333333333333333333333333333333333333
+5270 3333333333333333333333333333333333333333333333333333333
+5271 3333333333333333333333333333333333333333333333333333333
+5272 3333333333333333333333333333333333333333333333333333333
+5273 3333333333333333333333333333333333333333333333333333333
+5274 3333333333333333333333333333333333333333333333333333333
+5275 3333333333333333333333333333333333333333333333333333333
+5276 3333333333333333333333333333333333333333333333333333333
+5277 3333333333333333333333333333333333333333333333333333333
+5278 3333333333333333333333333333333333333333333333333333333
+5279 3333333333333333333333333333333333333333333333333333333
+5280 3333333333333333333333333333333333333333333333333333333
+5281 3333333333333333333333333333333333333333333333333333333
+5282 3333333333333333333333333333333333333333333333333333333
+5283 3333333333333333333333333333333333333333333333333333333
+5284 3333333333333333333333333333333333333333333333333333333
+5285 3333333333333333333333333333333333333333333333333333333
+5286 3333333333333333333333333333333333333333333333333333333
+5287 3333333333333333333333333333333333333333333333333333333
+5288 3333333333333333333333333333333333333333333333333333333
+5289 3333333333333333333333333333333333333333333333333333333
+5290 3333333333333333333333333333333333333333333333333333333
+5291 3333333333333333333333333333333333333333333333333333333
+5292 3333333333333333333333333333333333333333333333333333333
+5293 3333333333333333333333333333333333333333333333333333333
+5294 3333333333333333333333333333333333333333333333333333333
+5295 3333333333333333333333333333333333333333333333333333333
+5296 3333333333333333333333333333333333333333333333333333333
+5297 3333333333333333333333333333333333333333333333333333333
+5298 3333333333333333333333333333333333333333333333333333333
+5299 3333333333333333333333333333333333333333333333333333333
+5300 3333333333333333333333333333333333333333333333333333333
+5301 3333333333333333333333333333333333333333333333333333333
+5302 3333333333333333333333333333333333333333333333333333333
+5303 3333333333333333333333333333333333333333333333333333333
+5304 3333333333333333333333333333333333333333333333333333333
+5305 3333333333333333333333333333333333333333333333333333333
+5306 3333333333333333333333333333333333333333333333333333333
+5307 3333333333333333333333333333333333333333333333333333333
+5308 3333333333333333333333333333333333333333333333333333333
+5309 3333333333333333333333333333333333333333333333333333333
+5310 3333333333333333333333333333333333333333333333333333333
+5311 3333333333333333333333333333333333333333333333333333333
+5312 3333333333333333333333333333333333333333333333333333333
+5313 3333333333333333333333333333333333333333333333333333333
+5314 3333333333333333333333333333333333333333333333333333333
+5315 3333333333333333333333333333333333333333333333333333333
+5316 3333333333333333333333333333333333333333333333333333333
+5317 3333333333333333333333333333333333333333333333333333333
+5318 3333333333333333333333333333333333333333333333333333333
+5319 3333333333333333333333333333333333333333333333333333333
+5320 3333333333333333333333333333333333333333333333333333333
+5321 3333333333333333333333333333333333333333333333333333333
+5322 3333333333333333333333333333333333333333333333333333333
+5323 3333333333333333333333333333333333333333333333333333333
+5324 3333333333333333333333333333333333333333333333333333333
+5325 3333333333333333333333333333333333333333333333333333333
+5326 3333333333333333333333333333333333333333333333333333333
+5327 3333333333333333333333333333333333333333333333333333333
+5328 3333333333333333333333333333333333333333333333333333333
+5329 3333333333333333333333333333333333333333333333333333333
+5330 3333333333333333333333333333333333333333333333333333333
+5331 3333333333333333333333333333333333333333333333333333333
+5332 3333333333333333333333333333333333333333333333333333333
+5333 3333333333333333333333333333333333333333333333333333333
+5334 3333333333333333333333333333333333333333333333333333333
+5335 3333333333333333333333333333333333333333333333333333333
+5336 3333333333333333333333333333333333333333333333333333333
+5337 3333333333333333333333333333333333333333333333333333333
+5338 3333333333333333333333333333333333333333333333333333333
+5339 3333333333333333333333333333333333333333333333333333333
+5340 3333333333333333333333333333333333333333333333333333333
+5341 3333333333333333333333333333333333333333333333333333333
+5342 3333333333333333333333333333333333333333333333333333333
+5343 3333333333333333333333333333333333333333333333333333333
+5344 3333333333333333333333333333333333333333333333333333333
+5345 3333333333333333333333333333333333333333333333333333333
+5346 3333333333333333333333333333333333333333333333333333333
+5347 3333333333333333333333333333333333333333333333333333333
+5348 3333333333333333333333333333333333333333333333333333333
+5349 3333333333333333333333333333333333333333333333333333333
+5350 3333333333333333333333333333333333333333333333333333333
+5351 3333333333333333333333333333333333333333333333333333333
+5352 3333333333333333333333333333333333333333333333333333333
+5353 3333333333333333333333333333333333333333333333333333333
+5354 3333333333333333333333333333333333333333333333333333333
+5355 3333333333333333333333333333333333333333333333333333333
+5356 3333333333333333333333333333333333333333333333333333333
+5357 3333333333333333333333333333333333333333333333333333333
+5358 3333333333333333333333333333333333333333333333333333333
+5359 3333333333333333333333333333333333333333333333333333333
+5360 3333333333333333333333333333333333333333333333333333333
+5361 3333333333333333333333333333333333333333333333333333333
+5362 3333333333333333333333333333333333333333333333333333333
+5363 3333333333333333333333333333333333333333333333333333333
+5364 3333333333333333333333333333333333333333333333333333333
+5365 3333333333333333333333333333333333333333333333333333333
+5366 3333333333333333333333333333333333333333333333333333333
+5367 3333333333333333333333333333333333333333333333333333333
+5368 3333333333333333333333333333333333333333333333333333333
+5369 3333333333333333333333333333333333333333333333333333333
+5370 3333333333333333333333333333333333333333333333333333333
+5371 3333333333333333333333333333333333333333333333333333333
+5372 3333333333333333333333333333333333333333333333333333333
+5373 3333333333333333333333333333333333333333333333333333333
+5374 3333333333333333333333333333333333333333333333333333333
+5375 3333333333333333333333333333333333333333333333333333333
+5376 3333333333333333333333333333333333333333333333333333333
+5377 3333333333333333333333333333333333333333333333333333333
+5378 3333333333333333333333333333333333333333333333333333333
+5379 3333333333333333333333333333333333333333333333333333333
+5380 3333333333333333333333333333333333333333333333333333333
+5381 3333333333333333333333333333333333333333333333333333333
+5382 3333333333333333333333333333333333333333333333333333333
+5383 3333333333333333333333333333333333333333333333333333333
+5384 3333333333333333333333333333333333333333333333333333333
+5385 3333333333333333333333333333333333333333333333333333333
+5386 3333333333333333333333333333333333333333333333333333333
+5387 3333333333333333333333333333333333333333333333333333333
+5388 3333333333333333333333333333333333333333333333333333333
+5389 3333333333333333333333333333333333333333333333333333333
+5390 3333333333333333333333333333333333333333333333333333333
+5391 3333333333333333333333333333333333333333333333333333333
+5392 3333333333333333333333333333333333333333333333333333333
+5393 3333333333333333333333333333333333333333333333333333333
+5394 3333333333333333333333333333333333333333333333333333333
+5395 3333333333333333333333333333333333333333333333333333333
+5396 3333333333333333333333333333333333333333333333333333333
+5397 3333333333333333333333333333333333333333333333333333333
+5398 3333333333333333333333333333333333333333333333333333333
+5399 3333333333333333333333333333333333333333333333333333333
+5400 3333333333333333333333333333333333333333333333333333333
+5401 3333333333333333333333333333333333333333333333333333333
+5402 3333333333333333333333333333333333333333333333333333333
+5403 3333333333333333333333333333333333333333333333333333333
+5404 3333333333333333333333333333333333333333333333333333333
+5405 3333333333333333333333333333333333333333333333333333333
+5406 3333333333333333333333333333333333333333333333333333333
+5407 3333333333333333333333333333333333333333333333333333333
+5408 3333333333333333333333333333333333333333333333333333333
+5409 3333333333333333333333333333333333333333333333333333333
+5410 3333333333333333333333333333333333333333333333333333333
+5411 3333333333333333333333333333333333333333333333333333333
+5412 3333333333333333333333333333333333333333333333333333333
+5413 3333333333333333333333333333333333333333333333333333333
+5414 3333333333333333333333333333333333333333333333333333333
+5415 3333333333333333333333333333333333333333333333333333333
+5416 3333333333333333333333333333333333333333333333333333333
+5417 3333333333333333333333333333333333333333333333333333333
+5418 3333333333333333333333333333333333333333333333333333333
+5419 3333333333333333333333333333333333333333333333333333333
+5420 3333333333333333333333333333333333333333333333333333333
+5421 3333333333333333333333333333333333333333333333333333333
+5422 3333333333333333333333333333333333333333333333333333333
+5423 3333333333333333333333333333333333333333333333333333333
+5424 3333333333333333333333333333333333333333333333333333333
+5425 3333333333333333333333333333333333333333333333333333333
+5426 3333333333333333333333333333333333333333333333333333333
+5427 3333333333333333333333333333333333333333333333333333333
+5428 3333333333333333333333333333333333333333333333333333333
+5429 3333333333333333333333333333333333333333333333333333333
+5430 3333333333333333333333333333333333333333333333333333333
+5431 3333333333333333333333333333333333333333333333333333333
+5432 3333333333333333333333333333333333333333333333333333333
+5433 3333333333333333333333333333333333333333333333333333333
+5434 3333333333333333333333333333333333333333333333333333333
+5435 3333333333333333333333333333333333333333333333333333333
+5436 3333333333333333333333333333333333333333333333333333333
+5437 3333333333333333333333333333333333333333333333333333333
+5438 3333333333333333333333333333333333333333333333333333333
+5439 3333333333333333333333333333333333333333333333333333333
+5440 3333333333333333333333333333333333333333333333333333333
+5441 3333333333333333333333333333333333333333333333333333333
+5442 3333333333333333333333333333333333333333333333333333333
+5443 3333333333333333333333333333333333333333333333333333333
+5444 3333333333333333333333333333333333333333333333333333333
+5445 3333333333333333333333333333333333333333333333333333333
+5446 3333333333333333333333333333333333333333333333333333333
+5447 3333333333333333333333333333333333333333333333333333333
+5448 3333333333333333333333333333333333333333333333333333333
+5449 3333333333333333333333333333333333333333333333333333333
+5450 3333333333333333333333333333333333333333333333333333333
+5451 3333333333333333333333333333333333333333333333333333333
+5452 3333333333333333333333333333333333333333333333333333333
+5453 3333333333333333333333333333333333333333333333333333333
+5454 3333333333333333333333333333333333333333333333333333333
+5455 3333333333333333333333333333333333333333333333333333333
+5456 3333333333333333333333333333333333333333333333333333333
+5457 3333333333333333333333333333333333333333333333333333333
+5458 3333333333333333333333333333333333333333333333333333333
+5459 3333333333333333333333333333333333333333333333333333333
+5460 3333333333333333333333333333333333333333333333333333333
+5461 3333333333333333333333333333333333333333333333333333333
+5462 3333333333333333333333333333333333333333333333333333333
+5463 3333333333333333333333333333333333333333333333333333333
+5464 3333333333333333333333333333333333333333333333333333333
+5465 3333333333333333333333333333333333333333333333333333333
+5466 3333333333333333333333333333333333333333333333333333333
+5467 3333333333333333333333333333333333333333333333333333333
+5468 3333333333333333333333333333333333333333333333333333333
+5469 3333333333333333333333333333333333333333333333333333333
+5470 3333333333333333333333333333333333333333333333333333333
+5471 3333333333333333333333333333333333333333333333333333333
+5472 3333333333333333333333333333333333333333333333333333333
+5473 3333333333333333333333333333333333333333333333333333333
+5474 3333333333333333333333333333333333333333333333333333333
+5475 3333333333333333333333333333333333333333333333333333333
+5476 3333333333333333333333333333333333333333333333333333333
+5477 3333333333333333333333333333333333333333333333333333333
+5478 3333333333333333333333333333333333333333333333333333333
+5479 3333333333333333333333333333333333333333333333333333333
+5480 3333333333333333333333333333333333333333333333333333333
+5481 3333333333333333333333333333333333333333333333333333333
+5482 3333333333333333333333333333333333333333333333333333333
+5483 3333333333333333333333333333333333333333333333333333333
+5484 3333333333333333333333333333333333333333333333333333333
+5485 3333333333333333333333333333333333333333333333333333333
+5486 3333333333333333333333333333333333333333333333333333333
+5487 3333333333333333333333333333333333333333333333333333333
+5488 3333333333333333333333333333333333333333333333333333333
+5489 3333333333333333333333333333333333333333333333333333333
+5490 3333333333333333333333333333333333333333333333333333333
+5491 3333333333333333333333333333333333333333333333333333333
+5492 3333333333333333333333333333333333333333333333333333333
+5493 3333333333333333333333333333333333333333333333333333333
+5494 3333333333333333333333333333333333333333333333333333333
+5495 3333333333333333333333333333333333333333333333333333333
+5496 3333333333333333333333333333333333333333333333333333333
+5497 3333333333333333333333333333333333333333333333333333333
+5498 3333333333333333333333333333333333333333333333333333333
+5499 3333333333333333333333333333333333333333333333333333333
+5500 3333333333333333333333333333333333333333333333333333333
+5501 3333333333333333333333333333333333333333333333333333333
+5502 3333333333333333333333333333333333333333333333333333333
+5503 3333333333333333333333333333333333333333333333333333333
+5504 3333333333333333333333333333333333333333333333333333333
+5505 3333333333333333333333333333333333333333333333333333333
+5506 3333333333333333333333333333333333333333333333333333333
+5507 3333333333333333333333333333333333333333333333333333333
+5508 3333333333333333333333333333333333333333333333333333333
+5509 3333333333333333333333333333333333333333333333333333333
+5510 3333333333333333333333333333333333333333333333333333333
+5511 3333333333333333333333333333333333333333333333333333333
+5512 3333333333333333333333333333333333333333333333333333333
+5513 3333333333333333333333333333333333333333333333333333333
+5514 3333333333333333333333333333333333333333333333333333333
+5515 3333333333333333333333333333333333333333333333333333333
+5516 3333333333333333333333333333333333333333333333333333333
+5517 3333333333333333333333333333333333333333333333333333333
+5518 3333333333333333333333333333333333333333333333333333333
+5519 3333333333333333333333333333333333333333333333333333333
+5520 3333333333333333333333333333333333333333333333333333333
+5521 3333333333333333333333333333333333333333333333333333333
+5522 3333333333333333333333333333333333333333333333333333333
+5523 3333333333333333333333333333333333333333333333333333333
+5524 3333333333333333333333333333333333333333333333333333333
+5525 3333333333333333333333333333333333333333333333333333333
+5526 3333333333333333333333333333333333333333333333333333333
+5527 3333333333333333333333333333333333333333333333333333333
+5528 3333333333333333333333333333333333333333333333333333333
+5529 3333333333333333333333333333333333333333333333333333333
+5530 3333333333333333333333333333333333333333333333333333333
+5531 3333333333333333333333333333333333333333333333333333333
+5532 3333333333333333333333333333333333333333333333333333333
+5533 3333333333333333333333333333333333333333333333333333333
+5534 3333333333333333333333333333333333333333333333333333333
+5535 3333333333333333333333333333333333333333333333333333333
+5536 3333333333333333333333333333333333333333333333333333333
+5537 3333333333333333333333333333333333333333333333333333333
+5538 3333333333333333333333333333333333333333333333333333333
+5539 3333333333333333333333333333333333333333333333333333333
+5540 3333333333333333333333333333333333333333333333333333333
+5541 3333333333333333333333333333333333333333333333333333333
+5542 3333333333333333333333333333333333333333333333333333333
+5543 3333333333333333333333333333333333333333333333333333333
+5544 3333333333333333333333333333333333333333333333333333333
+5545 3333333333333333333333333333333333333333333333333333333
+5546 3333333333333333333333333333333333333333333333333333333
+5547 3333333333333333333333333333333333333333333333333333333
+5548 3333333333333333333333333333333333333333333333333333333
+5549 3333333333333333333333333333333333333333333333333333333
+5550 3333333333333333333333333333333333333333333333333333333
+5551 3333333333333333333333333333333333333333333333333333333
+5552 3333333333333333333333333333333333333333333333333333333
+5553 3333333333333333333333333333333333333333333333333333333
+5554 3333333333333333333333333333333333333333333333333333333
+5555 3333333333333333333333333333333333333333333333333333333
+5556 3333333333333333333333333333333333333333333333333333333
+5557 3333333333333333333333333333333333333333333333333333333
+5558 3333333333333333333333333333333333333333333333333333333
+5559 3333333333333333333333333333333333333333333333333333333
+5560 3333333333333333333333333333333333333333333333333333333
+5561 3333333333333333333333333333333333333333333333333333333
+5562 3333333333333333333333333333333333333333333333333333333
+5563 3333333333333333333333333333333333333333333333333333333
+5564 3333333333333333333333333333333333333333333333333333333
+5565 3333333333333333333333333333333333333333333333333333333
+5566 3333333333333333333333333333333333333333333333333333333
+5567 3333333333333333333333333333333333333333333333333333333
+5568 3333333333333333333333333333333333333333333333333333333
+5569 3333333333333333333333333333333333333333333333333333333
+5570 3333333333333333333333333333333333333333333333333333333
+5571 3333333333333333333333333333333333333333333333333333333
+5572 3333333333333333333333333333333333333333333333333333333
+5573 3333333333333333333333333333333333333333333333333333333
+5574 3333333333333333333333333333333333333333333333333333333
+5575 3333333333333333333333333333333333333333333333333333333
+5576 3333333333333333333333333333333333333333333333333333333
+5577 3333333333333333333333333333333333333333333333333333333
+5578 3333333333333333333333333333333333333333333333333333333
+5579 3333333333333333333333333333333333333333333333333333333
+5580 3333333333333333333333333333333333333333333333333333333
+5581 3333333333333333333333333333333333333333333333333333333
+5582 3333333333333333333333333333333333333333333333333333333
+5583 3333333333333333333333333333333333333333333333333333333
+5584 3333333333333333333333333333333333333333333333333333333
+5585 3333333333333333333333333333333333333333333333333333333
+5586 3333333333333333333333333333333333333333333333333333333
+5587 3333333333333333333333333333333333333333333333333333333
+5588 3333333333333333333333333333333333333333333333333333333
+5589 3333333333333333333333333333333333333333333333333333333
+5590 3333333333333333333333333333333333333333333333333333333
+5591 3333333333333333333333333333333333333333333333333333333
+5592 3333333333333333333333333333333333333333333333333333333
+5593 3333333333333333333333333333333333333333333333333333333
+5594 3333333333333333333333333333333333333333333333333333333
+5595 3333333333333333333333333333333333333333333333333333333
+5596 3333333333333333333333333333333333333333333333333333333
+5597 3333333333333333333333333333333333333333333333333333333
+5598 3333333333333333333333333333333333333333333333333333333
+5599 3333333333333333333333333333333333333333333333333333333
+5600 3333333333333333333333333333333333333333333333333333333
+5601 3333333333333333333333333333333333333333333333333333333
+5602 3333333333333333333333333333333333333333333333333333333
+5603 3333333333333333333333333333333333333333333333333333333
+5604 3333333333333333333333333333333333333333333333333333333
+5605 3333333333333333333333333333333333333333333333333333333
+5606 3333333333333333333333333333333333333333333333333333333
+5607 3333333333333333333333333333333333333333333333333333333
+5608 3333333333333333333333333333333333333333333333333333333
+5609 3333333333333333333333333333333333333333333333333333333
+5610 3333333333333333333333333333333333333333333333333333333
+5611 3333333333333333333333333333333333333333333333333333333
+5612 3333333333333333333333333333333333333333333333333333333
+5613 3333333333333333333333333333333333333333333333333333333
+5614 3333333333333333333333333333333333333333333333333333333
+5615 3333333333333333333333333333333333333333333333333333333
+5616 3333333333333333333333333333333333333333333333333333333
+5617 3333333333333333333333333333333333333333333333333333333
+5618 3333333333333333333333333333333333333333333333333333333
+5619 3333333333333333333333333333333333333333333333333333333
+5620 3333333333333333333333333333333333333333333333333333333
+5621 3333333333333333333333333333333333333333333333333333333
+5622 3333333333333333333333333333333333333333333333333333333
+5623 3333333333333333333333333333333333333333333333333333333
+5624 3333333333333333333333333333333333333333333333333333333
+5625 3333333333333333333333333333333333333333333333333333333
+5626 3333333333333333333333333333333333333333333333333333333
+5627 3333333333333333333333333333333333333333333333333333333
+5628 3333333333333333333333333333333333333333333333333333333
+5629 3333333333333333333333333333333333333333333333333333333
+5630 3333333333333333333333333333333333333333333333333333333
+5631 3333333333333333333333333333333333333333333333333333333
+5632 3333333333333333333333333333333333333333333333333333333
+5633 3333333333333333333333333333333333333333333333333333333
+5634 3333333333333333333333333333333333333333333333333333333
+5635 3333333333333333333333333333333333333333333333333333333
+5636 3333333333333333333333333333333333333333333333333333333
+5637 3333333333333333333333333333333333333333333333333333333
+5638 3333333333333333333333333333333333333333333333333333333
+5639 3333333333333333333333333333333333333333333333333333333
+5640 3333333333333333333333333333333333333333333333333333333
+5641 3333333333333333333333333333333333333333333333333333333
+5642 3333333333333333333333333333333333333333333333333333333
+5643 3333333333333333333333333333333333333333333333333333333
+5644 3333333333333333333333333333333333333333333333333333333
+5645 3333333333333333333333333333333333333333333333333333333
+5646 3333333333333333333333333333333333333333333333333333333
+5647 3333333333333333333333333333333333333333333333333333333
+5648 3333333333333333333333333333333333333333333333333333333
+5649 3333333333333333333333333333333333333333333333333333333
+5650 3333333333333333333333333333333333333333333333333333333
+5651 3333333333333333333333333333333333333333333333333333333
+5652 3333333333333333333333333333333333333333333333333333333
+5653 3333333333333333333333333333333333333333333333333333333
+5654 3333333333333333333333333333333333333333333333333333333
+5655 3333333333333333333333333333333333333333333333333333333
+5656 3333333333333333333333333333333333333333333333333333333
+5657 3333333333333333333333333333333333333333333333333333333
+5658 3333333333333333333333333333333333333333333333333333333
+5659 3333333333333333333333333333333333333333333333333333333
+5660 3333333333333333333333333333333333333333333333333333333
+5661 3333333333333333333333333333333333333333333333333333333
+5662 3333333333333333333333333333333333333333333333333333333
+5663 3333333333333333333333333333333333333333333333333333333
+5664 3333333333333333333333333333333333333333333333333333333
+5665 3333333333333333333333333333333333333333333333333333333
+5666 3333333333333333333333333333333333333333333333333333333
+5667 3333333333333333333333333333333333333333333333333333333
+5668 3333333333333333333333333333333333333333333333333333333
+5669 3333333333333333333333333333333333333333333333333333333
+5670 3333333333333333333333333333333333333333333333333333333
+5671 3333333333333333333333333333333333333333333333333333333
+5672 3333333333333333333333333333333333333333333333333333333
+5673 3333333333333333333333333333333333333333333333333333333
+5674 3333333333333333333333333333333333333333333333333333333
+5675 3333333333333333333333333333333333333333333333333333333
+5676 3333333333333333333333333333333333333333333333333333333
+5677 3333333333333333333333333333333333333333333333333333333
+5678 3333333333333333333333333333333333333333333333333333333
+5679 3333333333333333333333333333333333333333333333333333333
+5680 3333333333333333333333333333333333333333333333333333333
+5681 3333333333333333333333333333333333333333333333333333333
+5682 3333333333333333333333333333333333333333333333333333333
+5683 3333333333333333333333333333333333333333333333333333333
+5684 3333333333333333333333333333333333333333333333333333333
+5685 3333333333333333333333333333333333333333333333333333333
+5686 3333333333333333333333333333333333333333333333333333333
+5687 3333333333333333333333333333333333333333333333333333333
+5688 3333333333333333333333333333333333333333333333333333333
+5689 3333333333333333333333333333333333333333333333333333333
+5690 3333333333333333333333333333333333333333333333333333333
+5691 3333333333333333333333333333333333333333333333333333333
+5692 3333333333333333333333333333333333333333333333333333333
+5693 3333333333333333333333333333333333333333333333333333333
+5694 3333333333333333333333333333333333333333333333333333333
+5695 3333333333333333333333333333333333333333333333333333333
+5696 3333333333333333333333333333333333333333333333333333333
+5697 3333333333333333333333333333333333333333333333333333333
+5698 3333333333333333333333333333333333333333333333333333333
+5699 3333333333333333333333333333333333333333333333333333333
+5700 3333333333333333333333333333333333333333333333333333333
+5701 3333333333333333333333333333333333333333333333333333333
+5702 3333333333333333333333333333333333333333333333333333333
+5703 3333333333333333333333333333333333333333333333333333333
+5704 3333333333333333333333333333333333333333333333333333333
+5705 3333333333333333333333333333333333333333333333333333333
+5706 3333333333333333333333333333333333333333333333333333333
+5707 3333333333333333333333333333333333333333333333333333333
+5708 3333333333333333333333333333333333333333333333333333333
+5709 3333333333333333333333333333333333333333333333333333333
+5710 3333333333333333333333333333333333333333333333333333333
+5711 3333333333333333333333333333333333333333333333333333333
+5712 3333333333333333333333333333333333333333333333333333333
+5713 3333333333333333333333333333333333333333333333333333333
+5714 3333333333333333333333333333333333333333333333333333333
+5715 3333333333333333333333333333333333333333333333333333333
+5716 3333333333333333333333333333333333333333333333333333333
+5717 3333333333333333333333333333333333333333333333333333333
+5718 3333333333333333333333333333333333333333333333333333333
+5719 3333333333333333333333333333333333333333333333333333333
+5720 3333333333333333333333333333333333333333333333333333333
+5721 3333333333333333333333333333333333333333333333333333333
+5722 3333333333333333333333333333333333333333333333333333333
+5723 3333333333333333333333333333333333333333333333333333333
+5724 3333333333333333333333333333333333333333333333333333333
+5725 3333333333333333333333333333333333333333333333333333333
+5726 3333333333333333333333333333333333333333333333333333333
+5727 3333333333333333333333333333333333333333333333333333333
+5728 3333333333333333333333333333333333333333333333333333333
+5729 3333333333333333333333333333333333333333333333333333333
+5730 3333333333333333333333333333333333333333333333333333333
+5731 3333333333333333333333333333333333333333333333333333333
+5732 3333333333333333333333333333333333333333333333333333333
+5733 3333333333333333333333333333333333333333333333333333333
+5734 3333333333333333333333333333333333333333333333333333333
+5735 3333333333333333333333333333333333333333333333333333333
+5736 3333333333333333333333333333333333333333333333333333333
+5737 3333333333333333333333333333333333333333333333333333333
+5738 3333333333333333333333333333333333333333333333333333333
+5739 3333333333333333333333333333333333333333333333333333333
+5740 3333333333333333333333333333333333333333333333333333333
+5741 3333333333333333333333333333333333333333333333333333333
+5742 3333333333333333333333333333333333333333333333333333333
+5743 3333333333333333333333333333333333333333333333333333333
+5744 3333333333333333333333333333333333333333333333333333333
+5745 3333333333333333333333333333333333333333333333333333333
+5746 3333333333333333333333333333333333333333333333333333333
+5747 3333333333333333333333333333333333333333333333333333333
+5748 3333333333333333333333333333333333333333333333333333333
+5749 3333333333333333333333333333333333333333333333333333333
+5750 3333333333333333333333333333333333333333333333333333333
+5751 3333333333333333333333333333333333333333333333333333333
+5752 3333333333333333333333333333333333333333333333333333333
+5753 3333333333333333333333333333333333333333333333333333333
+5754 3333333333333333333333333333333333333333333333333333333
+5755 3333333333333333333333333333333333333333333333333333333
+5756 3333333333333333333333333333333333333333333333333333333
+5757 3333333333333333333333333333333333333333333333333333333
+5758 3333333333333333333333333333333333333333333333333333333
+5759 3333333333333333333333333333333333333333333333333333333
+5760 3333333333333333333333333333333333333333333333333333333
+5761 3333333333333333333333333333333333333333333333333333333
+5762 3333333333333333333333333333333333333333333333333333333
+5763 3333333333333333333333333333333333333333333333333333333
+5764 3333333333333333333333333333333333333333333333333333333
+5765 3333333333333333333333333333333333333333333333333333333
+5766 3333333333333333333333333333333333333333333333333333333
+5767 3333333333333333333333333333333333333333333333333333333
+5768 3333333333333333333333333333333333333333333333333333333
+5769 3333333333333333333333333333333333333333333333333333333
+5770 3333333333333333333333333333333333333333333333333333333
+5771 3333333333333333333333333333333333333333333333333333333
+5772 3333333333333333333333333333333333333333333333333333333
+5773 3333333333333333333333333333333333333333333333333333333
+5774 3333333333333333333333333333333333333333333333333333333
+5775 3333333333333333333333333333333333333333333333333333333
+5776 3333333333333333333333333333333333333333333333333333333
+5777 3333333333333333333333333333333333333333333333333333333
+5778 3333333333333333333333333333333333333333333333333333333
+5779 3333333333333333333333333333333333333333333333333333333
+5780 3333333333333333333333333333333333333333333333333333333
+5781 3333333333333333333333333333333333333333333333333333333
+5782 3333333333333333333333333333333333333333333333333333333
+5783 3333333333333333333333333333333333333333333333333333333
+5784 3333333333333333333333333333333333333333333333333333333
+5785 3333333333333333333333333333333333333333333333333333333
+5786 3333333333333333333333333333333333333333333333333333333
+5787 3333333333333333333333333333333333333333333333333333333
+5788 3333333333333333333333333333333333333333333333333333333
+5789 3333333333333333333333333333333333333333333333333333333
+5790 3333333333333333333333333333333333333333333333333333333
+5791 3333333333333333333333333333333333333333333333333333333
+5792 3333333333333333333333333333333333333333333333333333333
+5793 3333333333333333333333333333333333333333333333333333333
+5794 3333333333333333333333333333333333333333333333333333333
+5795 3333333333333333333333333333333333333333333333333333333
+5796 3333333333333333333333333333333333333333333333333333333
+5797 3333333333333333333333333333333333333333333333333333333
+5798 3333333333333333333333333333333333333333333333333333333
+5799 3333333333333333333333333333333333333333333333333333333
+5800 3333333333333333333333333333333333333333333333333333333
+5801 3333333333333333333333333333333333333333333333333333333
+5802 3333333333333333333333333333333333333333333333333333333
+5803 3333333333333333333333333333333333333333333333333333333
+5804 3333333333333333333333333333333333333333333333333333333
+5805 3333333333333333333333333333333333333333333333333333333
+5806 3333333333333333333333333333333333333333333333333333333
+5807 3333333333333333333333333333333333333333333333333333333
+5808 3333333333333333333333333333333333333333333333333333333
+5809 3333333333333333333333333333333333333333333333333333333
+5810 3333333333333333333333333333333333333333333333333333333
+5811 3333333333333333333333333333333333333333333333333333333
+5812 3333333333333333333333333333333333333333333333333333333
+5813 3333333333333333333333333333333333333333333333333333333
+5814 3333333333333333333333333333333333333333333333333333333
+5815 3333333333333333333333333333333333333333333333333333333
+5816 3333333333333333333333333333333333333333333333333333333
+5817 3333333333333333333333333333333333333333333333333333333
+5818 3333333333333333333333333333333333333333333333333333333
+5819 3333333333333333333333333333333333333333333333333333333
+5820 3333333333333333333333333333333333333333333333333333333
+5821 3333333333333333333333333333333333333333333333333333333
+5822 3333333333333333333333333333333333333333333333333333333
+5823 3333333333333333333333333333333333333333333333333333333
+5824 3333333333333333333333333333333333333333333333333333333
+5825 3333333333333333333333333333333333333333333333333333333
+5826 3333333333333333333333333333333333333333333333333333333
+5827 3333333333333333333333333333333333333333333333333333333
+5828 3333333333333333333333333333333333333333333333333333333
+5829 3333333333333333333333333333333333333333333333333333333
+5830 3333333333333333333333333333333333333333333333333333333
+5831 3333333333333333333333333333333333333333333333333333333
+5832 3333333333333333333333333333333333333333333333333333333
+5833 3333333333333333333333333333333333333333333333333333333
+5834 3333333333333333333333333333333333333333333333333333333
+5835 3333333333333333333333333333333333333333333333333333333
+5836 3333333333333333333333333333333333333333333333333333333
+5837 3333333333333333333333333333333333333333333333333333333
+5838 3333333333333333333333333333333333333333333333333333333
+5839 3333333333333333333333333333333333333333333333333333333
+5840 3333333333333333333333333333333333333333333333333333333
+5841 3333333333333333333333333333333333333333333333333333333
+5842 3333333333333333333333333333333333333333333333333333333
+5843 3333333333333333333333333333333333333333333333333333333
+5844 3333333333333333333333333333333333333333333333333333333
+5845 3333333333333333333333333333333333333333333333333333333
+5846 3333333333333333333333333333333333333333333333333333333
+5847 3333333333333333333333333333333333333333333333333333333
+5848 3333333333333333333333333333333333333333333333333333333
+5849 3333333333333333333333333333333333333333333333333333333
+5850 3333333333333333333333333333333333333333333333333333333
+5851 3333333333333333333333333333333333333333333333333333333
+5852 3333333333333333333333333333333333333333333333333333333
+5853 3333333333333333333333333333333333333333333333333333333
+5854 3333333333333333333333333333333333333333333333333333333
+5855 3333333333333333333333333333333333333333333333333333333
+5856 3333333333333333333333333333333333333333333333333333333
+5857 3333333333333333333333333333333333333333333333333333333
+5858 3333333333333333333333333333333333333333333333333333333
+5859 3333333333333333333333333333333333333333333333333333333
+5860 3333333333333333333333333333333333333333333333333333333
+5861 3333333333333333333333333333333333333333333333333333333
+5862 3333333333333333333333333333333333333333333333333333333
+5863 3333333333333333333333333333333333333333333333333333333
+5864 3333333333333333333333333333333333333333333333333333333
+5865 3333333333333333333333333333333333333333333333333333333
+5866 3333333333333333333333333333333333333333333333333333333
+5867 3333333333333333333333333333333333333333333333333333333
+5868 3333333333333333333333333333333333333333333333333333333
+5869 3333333333333333333333333333333333333333333333333333333
+5870 3333333333333333333333333333333333333333333333333333333
+5871 3333333333333333333333333333333333333333333333333333333
+5872 3333333333333333333333333333333333333333333333333333333
+5873 3333333333333333333333333333333333333333333333333333333
+5874 3333333333333333333333333333333333333333333333333333333
+5875 3333333333333333333333333333333333333333333333333333333
+5876 3333333333333333333333333333333333333333333333333333333
+5877 3333333333333333333333333333333333333333333333333333333
+5878 3333333333333333333333333333333333333333333333333333333
+5879 3333333333333333333333333333333333333333333333333333333
+5880 3333333333333333333333333333333333333333333333333333333
+5881 3333333333333333333333333333333333333333333333333333333
+5882 3333333333333333333333333333333333333333333333333333333
+5883 3333333333333333333333333333333333333333333333333333333
+5884 3333333333333333333333333333333333333333333333333333333
+5885 3333333333333333333333333333333333333333333333333333333
+5886 3333333333333333333333333333333333333333333333333333333
+5887 3333333333333333333333333333333333333333333333333333333
+5888 3333333333333333333333333333333333333333333333333333333
+5889 3333333333333333333333333333333333333333333333333333333
+5890 3333333333333333333333333333333333333333333333333333333
+5891 3333333333333333333333333333333333333333333333333333333
+5892 3333333333333333333333333333333333333333333333333333333
+5893 3333333333333333333333333333333333333333333333333333333
+5894 3333333333333333333333333333333333333333333333333333333
+5895 3333333333333333333333333333333333333333333333333333333
+5896 3333333333333333333333333333333333333333333333333333333
+5897 3333333333333333333333333333333333333333333333333333333
+5898 3333333333333333333333333333333333333333333333333333333
+5899 3333333333333333333333333333333333333333333333333333333
+5900 3333333333333333333333333333333333333333333333333333333
+5901 3333333333333333333333333333333333333333333333333333333
+5902 3333333333333333333333333333333333333333333333333333333
+5903 3333333333333333333333333333333333333333333333333333333
+5904 3333333333333333333333333333333333333333333333333333333
+5905 3333333333333333333333333333333333333333333333333333333
+5906 3333333333333333333333333333333333333333333333333333333
+5907 3333333333333333333333333333333333333333333333333333333
+5908 3333333333333333333333333333333333333333333333333333333
+5909 3333333333333333333333333333333333333333333333333333333
+5910 3333333333333333333333333333333333333333333333333333333
+5911 3333333333333333333333333333333333333333333333333333333
+5912 3333333333333333333333333333333333333333333333333333333
+5913 3333333333333333333333333333333333333333333333333333333
+5914 3333333333333333333333333333333333333333333333333333333
+5915 3333333333333333333333333333333333333333333333333333333
+5916 3333333333333333333333333333333333333333333333333333333
+5917 3333333333333333333333333333333333333333333333333333333
+5918 3333333333333333333333333333333333333333333333333333333
+5919 3333333333333333333333333333333333333333333333333333333
+5920 3333333333333333333333333333333333333333333333333333333
+5921 3333333333333333333333333333333333333333333333333333333
+5922 3333333333333333333333333333333333333333333333333333333
+5923 3333333333333333333333333333333333333333333333333333333
+5924 3333333333333333333333333333333333333333333333333333333
+5925 3333333333333333333333333333333333333333333333333333333
+5926 3333333333333333333333333333333333333333333333333333333
+5927 3333333333333333333333333333333333333333333333333333333
+5928 3333333333333333333333333333333333333333333333333333333
+5929 3333333333333333333333333333333333333333333333333333333
+5930 3333333333333333333333333333333333333333333333333333333
+5931 3333333333333333333333333333333333333333333333333333333
+5932 3333333333333333333333333333333333333333333333333333333
+5933 3333333333333333333333333333333333333333333333333333333
+5934 3333333333333333333333333333333333333333333333333333333
+5935 3333333333333333333333333333333333333333333333333333333
+5936 3333333333333333333333333333333333333333333333333333333
+5937 3333333333333333333333333333333333333333333333333333333
+5938 3333333333333333333333333333333333333333333333333333333
+5939 3333333333333333333333333333333333333333333333333333333
+5940 3333333333333333333333333333333333333333333333333333333
+5941 3333333333333333333333333333333333333333333333333333333
+5942 3333333333333333333333333333333333333333333333333333333
+5943 3333333333333333333333333333333333333333333333333333333
+5944 3333333333333333333333333333333333333333333333333333333
+5945 3333333333333333333333333333333333333333333333333333333
+5946 3333333333333333333333333333333333333333333333333333333
+5947 3333333333333333333333333333333333333333333333333333333
+5948 3333333333333333333333333333333333333333333333333333333
+5949 3333333333333333333333333333333333333333333333333333333
+5950 3333333333333333333333333333333333333333333333333333333
+5951 3333333333333333333333333333333333333333333333333333333
+5952 3333333333333333333333333333333333333333333333333333333
+5953 3333333333333333333333333333333333333333333333333333333
+5954 3333333333333333333333333333333333333333333333333333333
+5955 3333333333333333333333333333333333333333333333333333333
+5956 3333333333333333333333333333333333333333333333333333333
+5957 3333333333333333333333333333333333333333333333333333333
+5958 3333333333333333333333333333333333333333333333333333333
+5959 3333333333333333333333333333333333333333333333333333333
+5960 3333333333333333333333333333333333333333333333333333333
+5961 3333333333333333333333333333333333333333333333333333333
+5962 3333333333333333333333333333333333333333333333333333333
+5963 3333333333333333333333333333333333333333333333333333333
+5964 3333333333333333333333333333333333333333333333333333333
+5965 3333333333333333333333333333333333333333333333333333333
+5966 3333333333333333333333333333333333333333333333333333333
+5967 3333333333333333333333333333333333333333333333333333333
+5968 3333333333333333333333333333333333333333333333333333333
+5969 3333333333333333333333333333333333333333333333333333333
+5970 3333333333333333333333333333333333333333333333333333333
+5971 3333333333333333333333333333333333333333333333333333333
+5972 3333333333333333333333333333333333333333333333333333333
+5973 3333333333333333333333333333333333333333333333333333333
+5974 3333333333333333333333333333333333333333333333333333333
+5975 3333333333333333333333333333333333333333333333333333333
+5976 3333333333333333333333333333333333333333333333333333333
+5977 3333333333333333333333333333333333333333333333333333333
+5978 3333333333333333333333333333333333333333333333333333333
+5979 3333333333333333333333333333333333333333333333333333333
+5980 3333333333333333333333333333333333333333333333333333333
+5981 3333333333333333333333333333333333333333333333333333333
+5982 3333333333333333333333333333333333333333333333333333333
+5983 3333333333333333333333333333333333333333333333333333333
+5984 3333333333333333333333333333333333333333333333333333333
+5985 3333333333333333333333333333333333333333333333333333333
+5986 3333333333333333333333333333333333333333333333333333333
+5987 3333333333333333333333333333333333333333333333333333333
+5988 3333333333333333333333333333333333333333333333333333333
+5989 3333333333333333333333333333333333333333333333333333333
+5990 3333333333333333333333333333333333333333333333333333333
+5991 3333333333333333333333333333333333333333333333333333333
+5992 3333333333333333333333333333333333333333333333333333333
+5993 3333333333333333333333333333333333333333333333333333333
+5994 3333333333333333333333333333333333333333333333333333333
+5995 3333333333333333333333333333333333333333333333333333333
+5996 3333333333333333333333333333333333333333333333333333333
+5997 3333333333333333333333333333333333333333333333333333333
+5998 3333333333333333333333333333333333333333333333333333333
+5999 3333333333333333333333333333333333333333333333333333333
+6000 3333333333333333333333333333333333333333333333333333333
+6001 3333333333333333333333333333333333333333333333333333333
+6002 3333333333333333333333333333333333333333333333333333333
+6003 3333333333333333333333333333333333333333333333333333333
+6004 3333333333333333333333333333333333333333333333333333333
+6005 3333333333333333333333333333333333333333333333333333333
+6006 3333333333333333333333333333333333333333333333333333333
+6007 3333333333333333333333333333333333333333333333333333333
+6008 3333333333333333333333333333333333333333333333333333333
+6009 3333333333333333333333333333333333333333333333333333333
+6010 3333333333333333333333333333333333333333333333333333333
+6011 3333333333333333333333333333333333333333333333333333333
+6012 3333333333333333333333333333333333333333333333333333333
+6013 3333333333333333333333333333333333333333333333333333333
+6014 3333333333333333333333333333333333333333333333333333333
+6015 3333333333333333333333333333333333333333333333333333333
+6016 3333333333333333333333333333333333333333333333333333333
+6017 3333333333333333333333333333333333333333333333333333333
+6018 3333333333333333333333333333333333333333333333333333333
+6019 3333333333333333333333333333333333333333333333333333333
+6020 3333333333333333333333333333333333333333333333333333333
+6021 3333333333333333333333333333333333333333333333333333333
+6022 3333333333333333333333333333333333333333333333333333333
+6023 3333333333333333333333333333333333333333333333333333333
+6024 3333333333333333333333333333333333333333333333333333333
+6025 3333333333333333333333333333333333333333333333333333333
+6026 3333333333333333333333333333333333333333333333333333333
+6027 3333333333333333333333333333333333333333333333333333333
+6028 3333333333333333333333333333333333333333333333333333333
+6029 3333333333333333333333333333333333333333333333333333333
+6030 3333333333333333333333333333333333333333333333333333333
+6031 3333333333333333333333333333333333333333333333333333333
+6032 3333333333333333333333333333333333333333333333333333333
+6033 3333333333333333333333333333333333333333333333333333333
+6034 3333333333333333333333333333333333333333333333333333333
+6035 3333333333333333333333333333333333333333333333333333333
+6036 3333333333333333333333333333333333333333333333333333333
+6037 3333333333333333333333333333333333333333333333333333333
+6038 3333333333333333333333333333333333333333333333333333333
+6039 3333333333333333333333333333333333333333333333333333333
+6040 3333333333333333333333333333333333333333333333333333333
+6041 3333333333333333333333333333333333333333333333333333333
+6042 3333333333333333333333333333333333333333333333333333333
+6043 3333333333333333333333333333333333333333333333333333333
+6044 3333333333333333333333333333333333333333333333333333333
+6045 3333333333333333333333333333333333333333333333333333333
+6046 3333333333333333333333333333333333333333333333333333333
+6047 3333333333333333333333333333333333333333333333333333333
+6048 3333333333333333333333333333333333333333333333333333333
+6049 3333333333333333333333333333333333333333333333333333333
+6050 3333333333333333333333333333333333333333333333333333333
+6051 3333333333333333333333333333333333333333333333333333333
+6052 3333333333333333333333333333333333333333333333333333333
+6053 3333333333333333333333333333333333333333333333333333333
+6054 3333333333333333333333333333333333333333333333333333333
+6055 3333333333333333333333333333333333333333333333333333333
+6056 3333333333333333333333333333333333333333333333333333333
+6057 3333333333333333333333333333333333333333333333333333333
+6058 3333333333333333333333333333333333333333333333333333333
+6059 3333333333333333333333333333333333333333333333333333333
+6060 3333333333333333333333333333333333333333333333333333333
+6061 3333333333333333333333333333333333333333333333333333333
+6062 3333333333333333333333333333333333333333333333333333333
+6063 3333333333333333333333333333333333333333333333333333333
+6064 3333333333333333333333333333333333333333333333333333333
+6065 3333333333333333333333333333333333333333333333333333333
+6066 3333333333333333333333333333333333333333333333333333333
+6067 3333333333333333333333333333333333333333333333333333333
+6068 3333333333333333333333333333333333333333333333333333333
+6069 3333333333333333333333333333333333333333333333333333333
+6070 3333333333333333333333333333333333333333333333333333333
+6071 3333333333333333333333333333333333333333333333333333333
+6072 3333333333333333333333333333333333333333333333333333333
+6073 3333333333333333333333333333333333333333333333333333333
+6074 3333333333333333333333333333333333333333333333333333333
+6075 3333333333333333333333333333333333333333333333333333333
+6076 3333333333333333333333333333333333333333333333333333333
+6077 3333333333333333333333333333333333333333333333333333333
+6078 3333333333333333333333333333333333333333333333333333333
+6079 3333333333333333333333333333333333333333333333333333333
+6080 3333333333333333333333333333333333333333333333333333333
+6081 3333333333333333333333333333333333333333333333333333333
+6082 3333333333333333333333333333333333333333333333333333333
+6083 3333333333333333333333333333333333333333333333333333333
+6084 3333333333333333333333333333333333333333333333333333333
+6085 3333333333333333333333333333333333333333333333333333333
+6086 3333333333333333333333333333333333333333333333333333333
+6087 3333333333333333333333333333333333333333333333333333333
+6088 3333333333333333333333333333333333333333333333333333333
+6089 3333333333333333333333333333333333333333333333333333333
+6090 3333333333333333333333333333333333333333333333333333333
+6091 3333333333333333333333333333333333333333333333333333333
+6092 3333333333333333333333333333333333333333333333333333333
+6093 3333333333333333333333333333333333333333333333333333333
+6094 3333333333333333333333333333333333333333333333333333333
+6095 3333333333333333333333333333333333333333333333333333333
+6096 3333333333333333333333333333333333333333333333333333333
+6097 3333333333333333333333333333333333333333333333333333333
+6098 3333333333333333333333333333333333333333333333333333333
+6099 3333333333333333333333333333333333333333333333333333333
+6100 3333333333333333333333333333333333333333333333333333333
+6101 3333333333333333333333333333333333333333333333333333333
+6102 3333333333333333333333333333333333333333333333333333333
+6103 3333333333333333333333333333333333333333333333333333333
+6104 3333333333333333333333333333333333333333333333333333333
+6105 3333333333333333333333333333333333333333333333333333333
+6106 3333333333333333333333333333333333333333333333333333333
+6107 3333333333333333333333333333333333333333333333333333333
+6108 3333333333333333333333333333333333333333333333333333333
+6109 3333333333333333333333333333333333333333333333333333333
+6110 3333333333333333333333333333333333333333333333333333333
+6111 3333333333333333333333333333333333333333333333333333333
+6112 3333333333333333333333333333333333333333333333333333333
+6113 3333333333333333333333333333333333333333333333333333333
+6114 3333333333333333333333333333333333333333333333333333333
+6115 3333333333333333333333333333333333333333333333333333333
+6116 3333333333333333333333333333333333333333333333333333333
+6117 3333333333333333333333333333333333333333333333333333333
+6118 3333333333333333333333333333333333333333333333333333333
+6119 3333333333333333333333333333333333333333333333333333333
+6120 3333333333333333333333333333333333333333333333333333333
+6121 3333333333333333333333333333333333333333333333333333333
+6122 3333333333333333333333333333333333333333333333333333333
+6123 3333333333333333333333333333333333333333333333333333333
+6124 3333333333333333333333333333333333333333333333333333333
+6125 3333333333333333333333333333333333333333333333333333333
+6126 3333333333333333333333333333333333333333333333333333333
+6127 3333333333333333333333333333333333333333333333333333333
+6128 3333333333333333333333333333333333333333333333333333333
+6129 3333333333333333333333333333333333333333333333333333333
+6130 3333333333333333333333333333333333333333333333333333333
+6131 3333333333333333333333333333333333333333333333333333333
+6132 3333333333333333333333333333333333333333333333333333333
+6133 3333333333333333333333333333333333333333333333333333333
+6134 3333333333333333333333333333333333333333333333333333333
+6135 3333333333333333333333333333333333333333333333333333333
+6136 3333333333333333333333333333333333333333333333333333333
+6137 3333333333333333333333333333333333333333333333333333333
+6138 3333333333333333333333333333333333333333333333333333333
+6139 3333333333333333333333333333333333333333333333333333333
+6140 3333333333333333333333333333333333333333333333333333333
+6141 3333333333333333333333333333333333333333333333333333333
+6142 3333333333333333333333333333333333333333333333333333333
+6143 3333333333333333333333333333333333333333333333333333333
+6144 3333333333333333333333333333333333333333333333333333333
+6145 3333333333333333333333333333333333333333333333333333333
+6146 3333333333333333333333333333333333333333333333333333333
+6147 3333333333333333333333333333333333333333333333333333333
+6148 3333333333333333333333333333333333333333333333333333333
+6149 3333333333333333333333333333333333333333333333333333333
+6150 3333333333333333333333333333333333333333333333333333333
+6151 3333333333333333333333333333333333333333333333333333333
+6152 3333333333333333333333333333333333333333333333333333333
+6153 3333333333333333333333333333333333333333333333333333333
+6154 3333333333333333333333333333333333333333333333333333333
+6155 3333333333333333333333333333333333333333333333333333333
+6156 3333333333333333333333333333333333333333333333333333333
+6157 3333333333333333333333333333333333333333333333333333333
+6158 3333333333333333333333333333333333333333333333333333333
+6159 3333333333333333333333333333333333333333333333333333333
+6160 3333333333333333333333333333333333333333333333333333333
+6161 3333333333333333333333333333333333333333333333333333333
+6162 3333333333333333333333333333333333333333333333333333333
+6163 3333333333333333333333333333333333333333333333333333333
+6164 3333333333333333333333333333333333333333333333333333333
+6165 3333333333333333333333333333333333333333333333333333333
+6166 3333333333333333333333333333333333333333333333333333333
+6167 3333333333333333333333333333333333333333333333333333333
+6168 3333333333333333333333333333333333333333333333333333333
+6169 3333333333333333333333333333333333333333333333333333333
+6170 3333333333333333333333333333333333333333333333333333333
+6171 3333333333333333333333333333333333333333333333333333333
+6172 3333333333333333333333333333333333333333333333333333333
+6173 3333333333333333333333333333333333333333333333333333333
+6174 3333333333333333333333333333333333333333333333333333333
+6175 3333333333333333333333333333333333333333333333333333333
+6176 3333333333333333333333333333333333333333333333333333333
+6177 3333333333333333333333333333333333333333333333333333333
+6178 3333333333333333333333333333333333333333333333333333333
+6179 3333333333333333333333333333333333333333333333333333333
+6180 3333333333333333333333333333333333333333333333333333333
+6181 3333333333333333333333333333333333333333333333333333333
+6182 3333333333333333333333333333333333333333333333333333333
+6183 3333333333333333333333333333333333333333333333333333333
+6184 3333333333333333333333333333333333333333333333333333333
+6185 3333333333333333333333333333333333333333333333333333333
+6186 3333333333333333333333333333333333333333333333333333333
+6187 3333333333333333333333333333333333333333333333333333333
+6188 3333333333333333333333333333333333333333333333333333333
+6189 3333333333333333333333333333333333333333333333333333333
+6190 3333333333333333333333333333333333333333333333333333333
+6191 3333333333333333333333333333333333333333333333333333333
+6192 3333333333333333333333333333333333333333333333333333333
+6193 3333333333333333333333333333333333333333333333333333333
+6194 3333333333333333333333333333333333333333333333333333333
+6195 3333333333333333333333333333333333333333333333333333333
+6196 3333333333333333333333333333333333333333333333333333333
+6197 3333333333333333333333333333333333333333333333333333333
+6198 3333333333333333333333333333333333333333333333333333333
+6199 3333333333333333333333333333333333333333333333333333333
+6200 3333333333333333333333333333333333333333333333333333333
+6201 3333333333333333333333333333333333333333333333333333333
+6202 3333333333333333333333333333333333333333333333333333333
+6203 3333333333333333333333333333333333333333333333333333333
+6204 3333333333333333333333333333333333333333333333333333333
+6205 3333333333333333333333333333333333333333333333333333333
+6206 3333333333333333333333333333333333333333333333333333333
+6207 3333333333333333333333333333333333333333333333333333333
+6208 3333333333333333333333333333333333333333333333333333333
+6209 3333333333333333333333333333333333333333333333333333333
+6210 3333333333333333333333333333333333333333333333333333333
+6211 3333333333333333333333333333333333333333333333333333333
+6212 3333333333333333333333333333333333333333333333333333333
+6213 3333333333333333333333333333333333333333333333333333333
+6214 3333333333333333333333333333333333333333333333333333333
+6215 3333333333333333333333333333333333333333333333333333333
+6216 3333333333333333333333333333333333333333333333333333333
+6217 3333333333333333333333333333333333333333333333333333333
+6218 3333333333333333333333333333333333333333333333333333333
+6219 3333333333333333333333333333333333333333333333333333333
+6220 3333333333333333333333333333333333333333333333333333333
+6221 3333333333333333333333333333333333333333333333333333333
+6222 3333333333333333333333333333333333333333333333333333333
+6223 3333333333333333333333333333333333333333333333333333333
+6224 3333333333333333333333333333333333333333333333333333333
+6225 3333333333333333333333333333333333333333333333333333333
+6226 3333333333333333333333333333333333333333333333333333333
+6227 3333333333333333333333333333333333333333333333333333333
+6228 3333333333333333333333333333333333333333333333333333333
+6229 3333333333333333333333333333333333333333333333333333333
+6230 3333333333333333333333333333333333333333333333333333333
+6231 3333333333333333333333333333333333333333333333333333333
+6232 3333333333333333333333333333333333333333333333333333333
+6233 3333333333333333333333333333333333333333333333333333333
+6234 3333333333333333333333333333333333333333333333333333333
+6235 3333333333333333333333333333333333333333333333333333333
+6236 3333333333333333333333333333333333333333333333333333333
+6237 3333333333333333333333333333333333333333333333333333333
+6238 3333333333333333333333333333333333333333333333333333333
+6239 3333333333333333333333333333333333333333333333333333333
+6240 3333333333333333333333333333333333333333333333333333333
+6241 3333333333333333333333333333333333333333333333333333333
+6242 3333333333333333333333333333333333333333333333333333333
+6243 3333333333333333333333333333333333333333333333333333333
+6244 3333333333333333333333333333333333333333333333333333333
+6245 3333333333333333333333333333333333333333333333333333333
+6246 3333333333333333333333333333333333333333333333333333333
+6247 3333333333333333333333333333333333333333333333333333333
+6248 3333333333333333333333333333333333333333333333333333333
+6249 3333333333333333333333333333333333333333333333333333333
+6250 3333333333333333333333333333333333333333333333333333333
+6251 3333333333333333333333333333333333333333333333333333333
+6252 3333333333333333333333333333333333333333333333333333333
+6253 3333333333333333333333333333333333333333333333333333333
+6254 3333333333333333333333333333333333333333333333333333333
+6255 3333333333333333333333333333333333333333333333333333333
+6256 3333333333333333333333333333333333333333333333333333333
+6257 3333333333333333333333333333333333333333333333333333333
+6258 3333333333333333333333333333333333333333333333333333333
+6259 3333333333333333333333333333333333333333333333333333333
+6260 3333333333333333333333333333333333333333333333333333333
+6261 3333333333333333333333333333333333333333333333333333333
+6262 3333333333333333333333333333333333333333333333333333333
+6263 3333333333333333333333333333333333333333333333333333333
+6264 3333333333333333333333333333333333333333333333333333333
+6265 3333333333333333333333333333333333333333333333333333333
+6266 3333333333333333333333333333333333333333333333333333333
+6267 3333333333333333333333333333333333333333333333333333333
+6268 3333333333333333333333333333333333333333333333333333333
+6269 3333333333333333333333333333333333333333333333333333333
+6270 3333333333333333333333333333333333333333333333333333333
+6271 3333333333333333333333333333333333333333333333333333333
+6272 3333333333333333333333333333333333333333333333333333333
+6273 3333333333333333333333333333333333333333333333333333333
+6274 3333333333333333333333333333333333333333333333333333333
+6275 3333333333333333333333333333333333333333333333333333333
+6276 3333333333333333333333333333333333333333333333333333333
+6277 3333333333333333333333333333333333333333333333333333333
+6278 3333333333333333333333333333333333333333333333333333333
+6279 3333333333333333333333333333333333333333333333333333333
+6280 3333333333333333333333333333333333333333333333333333333
+6281 3333333333333333333333333333333333333333333333333333333
+6282 3333333333333333333333333333333333333333333333333333333
+6283 3333333333333333333333333333333333333333333333333333333
+6284 3333333333333333333333333333333333333333333333333333333
+6285 3333333333333333333333333333333333333333333333333333333
+6286 3333333333333333333333333333333333333333333333333333333
+6287 3333333333333333333333333333333333333333333333333333333
+6288 3333333333333333333333333333333333333333333333333333333
+6289 3333333333333333333333333333333333333333333333333333333
+6290 3333333333333333333333333333333333333333333333333333333
+6291 3333333333333333333333333333333333333333333333333333333
+6292 3333333333333333333333333333333333333333333333333333333
+6293 3333333333333333333333333333333333333333333333333333333
+6294 3333333333333333333333333333333333333333333333333333333
+6295 3333333333333333333333333333333333333333333333333333333
+6296 3333333333333333333333333333333333333333333333333333333
+6297 3333333333333333333333333333333333333333333333333333333
+6298 3333333333333333333333333333333333333333333333333333333
+6299 3333333333333333333333333333333333333333333333333333333
+6300 3333333333333333333333333333333333333333333333333333333
+6301 3333333333333333333333333333333333333333333333333333333
+6302 3333333333333333333333333333333333333333333333333333333
+6303 3333333333333333333333333333333333333333333333333333333
+6304 3333333333333333333333333333333333333333333333333333333
+6305 3333333333333333333333333333333333333333333333333333333
+6306 3333333333333333333333333333333333333333333333333333333
+6307 3333333333333333333333333333333333333333333333333333333
+6308 3333333333333333333333333333333333333333333333333333333
+6309 3333333333333333333333333333333333333333333333333333333
+6310 3333333333333333333333333333333333333333333333333333333
+6311 3333333333333333333333333333333333333333333333333333333
+6312 3333333333333333333333333333333333333333333333333333333
+6313 3333333333333333333333333333333333333333333333333333333
+6314 3333333333333333333333333333333333333333333333333333333
+6315 3333333333333333333333333333333333333333333333333333333
+6316 3333333333333333333333333333333333333333333333333333333
+6317 3333333333333333333333333333333333333333333333333333333
+6318 3333333333333333333333333333333333333333333333333333333
+6319 3333333333333333333333333333333333333333333333333333333
+6320 3333333333333333333333333333333333333333333333333333333
+6321 3333333333333333333333333333333333333333333333333333333
+6322 3333333333333333333333333333333333333333333333333333333
+6323 3333333333333333333333333333333333333333333333333333333
+6324 3333333333333333333333333333333333333333333333333333333
+6325 3333333333333333333333333333333333333333333333333333333
+6326 3333333333333333333333333333333333333333333333333333333
+6327 3333333333333333333333333333333333333333333333333333333
+6328 3333333333333333333333333333333333333333333333333333333
+6329 3333333333333333333333333333333333333333333333333333333
+6330 3333333333333333333333333333333333333333333333333333333
+6331 3333333333333333333333333333333333333333333333333333333
+6332 3333333333333333333333333333333333333333333333333333333
+6333 3333333333333333333333333333333333333333333333333333333
+6334 3333333333333333333333333333333333333333333333333333333
+6335 3333333333333333333333333333333333333333333333333333333
+6336 3333333333333333333333333333333333333333333333333333333
+6337 3333333333333333333333333333333333333333333333333333333
+6338 3333333333333333333333333333333333333333333333333333333
+6339 3333333333333333333333333333333333333333333333333333333
+6340 3333333333333333333333333333333333333333333333333333333
+6341 3333333333333333333333333333333333333333333333333333333
+6342 3333333333333333333333333333333333333333333333333333333
+6343 3333333333333333333333333333333333333333333333333333333
+6344 3333333333333333333333333333333333333333333333333333333
+6345 3333333333333333333333333333333333333333333333333333333
+6346 3333333333333333333333333333333333333333333333333333333
+6347 3333333333333333333333333333333333333333333333333333333
+6348 3333333333333333333333333333333333333333333333333333333
+6349 3333333333333333333333333333333333333333333333333333333
+6350 3333333333333333333333333333333333333333333333333333333
+6351 3333333333333333333333333333333333333333333333333333333
+6352 3333333333333333333333333333333333333333333333333333333
+6353 3333333333333333333333333333333333333333333333333333333
+6354 3333333333333333333333333333333333333333333333333333333
+6355 3333333333333333333333333333333333333333333333333333333
+6356 3333333333333333333333333333333333333333333333333333333
+6357 3333333333333333333333333333333333333333333333333333333
+6358 3333333333333333333333333333333333333333333333333333333
+6359 3333333333333333333333333333333333333333333333333333333
+6360 3333333333333333333333333333333333333333333333333333333
+6361 3333333333333333333333333333333333333333333333333333333
+6362 3333333333333333333333333333333333333333333333333333333
+6363 3333333333333333333333333333333333333333333333333333333
+6364 3333333333333333333333333333333333333333333333333333333
+6365 3333333333333333333333333333333333333333333333333333333
+6366 3333333333333333333333333333333333333333333333333333333
+6367 3333333333333333333333333333333333333333333333333333333
+6368 3333333333333333333333333333333333333333333333333333333
+6369 3333333333333333333333333333333333333333333333333333333
+6370 3333333333333333333333333333333333333333333333333333333
+6371 3333333333333333333333333333333333333333333333333333333
+6372 3333333333333333333333333333333333333333333333333333333
+6373 3333333333333333333333333333333333333333333333333333333
+6374 3333333333333333333333333333333333333333333333333333333
+6375 3333333333333333333333333333333333333333333333333333333
+6376 3333333333333333333333333333333333333333333333333333333
+6377 3333333333333333333333333333333333333333333333333333333
+6378 3333333333333333333333333333333333333333333333333333333
+6379 3333333333333333333333333333333333333333333333333333333
+6380 3333333333333333333333333333333333333333333333333333333
+6381 3333333333333333333333333333333333333333333333333333333
+6382 3333333333333333333333333333333333333333333333333333333
+6383 3333333333333333333333333333333333333333333333333333333
+6384 3333333333333333333333333333333333333333333333333333333
+6385 3333333333333333333333333333333333333333333333333333333
+6386 3333333333333333333333333333333333333333333333333333333
+6387 3333333333333333333333333333333333333333333333333333333
+6388 3333333333333333333333333333333333333333333333333333333
+6389 3333333333333333333333333333333333333333333333333333333
+6390 3333333333333333333333333333333333333333333333333333333
+6391 3333333333333333333333333333333333333333333333333333333
+6392 3333333333333333333333333333333333333333333333333333333
+6393 3333333333333333333333333333333333333333333333333333333
+6394 3333333333333333333333333333333333333333333333333333333
+6395 3333333333333333333333333333333333333333333333333333333
+6396 3333333333333333333333333333333333333333333333333333333
+6397 3333333333333333333333333333333333333333333333333333333
+6398 3333333333333333333333333333333333333333333333333333333
+6399 3333333333333333333333333333333333333333333333333333333
+6400 3333333333333333333333333333333333333333333333333333333
+6401 3333333333333333333333333333333333333333333333333333333
+6402 3333333333333333333333333333333333333333333333333333333
+6403 3333333333333333333333333333333333333333333333333333333
+6404 3333333333333333333333333333333333333333333333333333333
+6405 3333333333333333333333333333333333333333333333333333333
+6406 3333333333333333333333333333333333333333333333333333333
+6407 3333333333333333333333333333333333333333333333333333333
+6408 3333333333333333333333333333333333333333333333333333333
+6409 3333333333333333333333333333333333333333333333333333333
+6410 3333333333333333333333333333333333333333333333333333333
+6411 3333333333333333333333333333333333333333333333333333333
+6412 3333333333333333333333333333333333333333333333333333333
+6413 3333333333333333333333333333333333333333333333333333333
+6414 3333333333333333333333333333333333333333333333333333333
+6415 3333333333333333333333333333333333333333333333333333333
+6416 3333333333333333333333333333333333333333333333333333333
+6417 3333333333333333333333333333333333333333333333333333333
+6418 3333333333333333333333333333333333333333333333333333333
+6419 3333333333333333333333333333333333333333333333333333333
+6420 3333333333333333333333333333333333333333333333333333333
+6421 3333333333333333333333333333333333333333333333333333333
+6422 3333333333333333333333333333333333333333333333333333333
+6423 3333333333333333333333333333333333333333333333333333333
+6424 3333333333333333333333333333333333333333333333333333333
+6425 3333333333333333333333333333333333333333333333333333333
+6426 3333333333333333333333333333333333333333333333333333333
+6427 3333333333333333333333333333333333333333333333333333333
+6428 3333333333333333333333333333333333333333333333333333333
+6429 3333333333333333333333333333333333333333333333333333333
+6430 3333333333333333333333333333333333333333333333333333333
+6431 3333333333333333333333333333333333333333333333333333333
+6432 3333333333333333333333333333333333333333333333333333333
+6433 3333333333333333333333333333333333333333333333333333333
+6434 3333333333333333333333333333333333333333333333333333333
+6435 3333333333333333333333333333333333333333333333333333333
+6436 3333333333333333333333333333333333333333333333333333333
+6437 3333333333333333333333333333333333333333333333333333333
+6438 3333333333333333333333333333333333333333333333333333333
+6439 3333333333333333333333333333333333333333333333333333333
+6440 3333333333333333333333333333333333333333333333333333333
+6441 3333333333333333333333333333333333333333333333333333333
+6442 3333333333333333333333333333333333333333333333333333333
+6443 3333333333333333333333333333333333333333333333333333333
+6444 3333333333333333333333333333333333333333333333333333333
+6445 3333333333333333333333333333333333333333333333333333333
+6446 3333333333333333333333333333333333333333333333333333333
+6447 3333333333333333333333333333333333333333333333333333333
+6448 3333333333333333333333333333333333333333333333333333333
+6449 3333333333333333333333333333333333333333333333333333333
+6450 3333333333333333333333333333333333333333333333333333333
+6451 3333333333333333333333333333333333333333333333333333333
+6452 3333333333333333333333333333333333333333333333333333333
+6453 3333333333333333333333333333333333333333333333333333333
+6454 3333333333333333333333333333333333333333333333333333333
+6455 3333333333333333333333333333333333333333333333333333333
+6456 3333333333333333333333333333333333333333333333333333333
+6457 3333333333333333333333333333333333333333333333333333333
+6458 3333333333333333333333333333333333333333333333333333333
+6459 3333333333333333333333333333333333333333333333333333333
+6460 3333333333333333333333333333333333333333333333333333333
+6461 3333333333333333333333333333333333333333333333333333333
+6462 3333333333333333333333333333333333333333333333333333333
+6463 3333333333333333333333333333333333333333333333333333333
+6464 3333333333333333333333333333333333333333333333333333333
+6465 3333333333333333333333333333333333333333333333333333333
+6466 3333333333333333333333333333333333333333333333333333333
+6467 3333333333333333333333333333333333333333333333333333333
+6468 3333333333333333333333333333333333333333333333333333333
+6469 3333333333333333333333333333333333333333333333333333333
+6470 3333333333333333333333333333333333333333333333333333333
+6471 3333333333333333333333333333333333333333333333333333333
+6472 3333333333333333333333333333333333333333333333333333333
+6473 3333333333333333333333333333333333333333333333333333333
+6474 3333333333333333333333333333333333333333333333333333333
+6475 3333333333333333333333333333333333333333333333333333333
+6476 3333333333333333333333333333333333333333333333333333333
+6477 3333333333333333333333333333333333333333333333333333333
+6478 3333333333333333333333333333333333333333333333333333333
+6479 3333333333333333333333333333333333333333333333333333333
+6480 3333333333333333333333333333333333333333333333333333333
+6481 3333333333333333333333333333333333333333333333333333333
+6482 3333333333333333333333333333333333333333333333333333333
+6483 3333333333333333333333333333333333333333333333333333333
+6484 3333333333333333333333333333333333333333333333333333333
+6485 3333333333333333333333333333333333333333333333333333333
+6486 3333333333333333333333333333333333333333333333333333333
+6487 3333333333333333333333333333333333333333333333333333333
+6488 3333333333333333333333333333333333333333333333333333333
+6489 3333333333333333333333333333333333333333333333333333333
+6490 3333333333333333333333333333333333333333333333333333333
+6491 3333333333333333333333333333333333333333333333333333333
+6492 3333333333333333333333333333333333333333333333333333333
+6493 3333333333333333333333333333333333333333333333333333333
+6494 3333333333333333333333333333333333333333333333333333333
+6495 3333333333333333333333333333333333333333333333333333333
+6496 3333333333333333333333333333333333333333333333333333333
+6497 3333333333333333333333333333333333333333333333333333333
+6498 3333333333333333333333333333333333333333333333333333333
+6499 3333333333333333333333333333333333333333333333333333333
+6500 3333333333333333333333333333333333333333333333333333333
+6501 3333333333333333333333333333333333333333333333333333333
+6502 3333333333333333333333333333333333333333333333333333333
+6503 3333333333333333333333333333333333333333333333333333333
+6504 3333333333333333333333333333333333333333333333333333333
+6505 3333333333333333333333333333333333333333333333333333333
+6506 3333333333333333333333333333333333333333333333333333333
+6507 3333333333333333333333333333333333333333333333333333333
+6508 3333333333333333333333333333333333333333333333333333333
+6509 3333333333333333333333333333333333333333333333333333333
+6510 3333333333333333333333333333333333333333333333333333333
+6511 3333333333333333333333333333333333333333333333333333333
+6512 3333333333333333333333333333333333333333333333333333333
+6513 3333333333333333333333333333333333333333333333333333333
+6514 3333333333333333333333333333333333333333333333333333333
+6515 3333333333333333333333333333333333333333333333333333333
+6516 3333333333333333333333333333333333333333333333333333333
+6517 3333333333333333333333333333333333333333333333333333333
+6518 3333333333333333333333333333333333333333333333333333333
+6519 3333333333333333333333333333333333333333333333333333333
+6520 3333333333333333333333333333333333333333333333333333333
+6521 3333333333333333333333333333333333333333333333333333333
+6522 3333333333333333333333333333333333333333333333333333333
+6523 3333333333333333333333333333333333333333333333333333333
+6524 3333333333333333333333333333333333333333333333333333333
+6525 3333333333333333333333333333333333333333333333333333333
+6526 3333333333333333333333333333333333333333333333333333333
+6527 3333333333333333333333333333333333333333333333333333333
+6528 3333333333333333333333333333333333333333333333333333333
+6529 3333333333333333333333333333333333333333333333333333333
+6530 3333333333333333333333333333333333333333333333333333333
+6531 3333333333333333333333333333333333333333333333333333333
+6532 3333333333333333333333333333333333333333333333333333333
+6533 3333333333333333333333333333333333333333333333333333333
+6534 3333333333333333333333333333333333333333333333333333333
+6535 3333333333333333333333333333333333333333333333333333333
+6536 3333333333333333333333333333333333333333333333333333333
+6537 3333333333333333333333333333333333333333333333333333333
+6538 3333333333333333333333333333333333333333333333333333333
+6539 3333333333333333333333333333333333333333333333333333333
+6540 3333333333333333333333333333333333333333333333333333333
+6541 3333333333333333333333333333333333333333333333333333333
+6542 3333333333333333333333333333333333333333333333333333333
+6543 3333333333333333333333333333333333333333333333333333333
+6544 3333333333333333333333333333333333333333333333333333333
+6545 3333333333333333333333333333333333333333333333333333333
+6546 3333333333333333333333333333333333333333333333333333333
+6547 3333333333333333333333333333333333333333333333333333333
+6548 3333333333333333333333333333333333333333333333333333333
+6549 3333333333333333333333333333333333333333333333333333333
+6550 3333333333333333333333333333333333333333333333333333333
+6551 3333333333333333333333333333333333333333333333333333333
+6552 3333333333333333333333333333333333333333333333333333333
+6553 3333333333333333333333333333333333333333333333333333333
+6554 3333333333333333333333333333333333333333333333333333333
+6555 3333333333333333333333333333333333333333333333333333333
+6556 3333333333333333333333333333333333333333333333333333333
+6557 3333333333333333333333333333333333333333333333333333333
+6558 3333333333333333333333333333333333333333333333333333333
+6559 3333333333333333333333333333333333333333333333333333333
+6560 3333333333333333333333333333333333333333333333333333333
+6561 3333333333333333333333333333333333333333333333333333333
+6562 3333333333333333333333333333333333333333333333333333333
+6563 3333333333333333333333333333333333333333333333333333333
+6564 3333333333333333333333333333333333333333333333333333333
+6565 3333333333333333333333333333333333333333333333333333333
+6566 3333333333333333333333333333333333333333333333333333333
+6567 3333333333333333333333333333333333333333333333333333333
+6568 3333333333333333333333333333333333333333333333333333333
+6569 3333333333333333333333333333333333333333333333333333333
+6570 3333333333333333333333333333333333333333333333333333333
+6571 3333333333333333333333333333333333333333333333333333333
+6572 3333333333333333333333333333333333333333333333333333333
+6573 3333333333333333333333333333333333333333333333333333333
+6574 3333333333333333333333333333333333333333333333333333333
+6575 3333333333333333333333333333333333333333333333333333333
+6576 3333333333333333333333333333333333333333333333333333333
+6577 3333333333333333333333333333333333333333333333333333333
+6578 3333333333333333333333333333333333333333333333333333333
+6579 3333333333333333333333333333333333333333333333333333333
+6580 3333333333333333333333333333333333333333333333333333333
+6581 3333333333333333333333333333333333333333333333333333333
+6582 3333333333333333333333333333333333333333333333333333333
+6583 3333333333333333333333333333333333333333333333333333333
+6584 3333333333333333333333333333333333333333333333333333333
+6585 3333333333333333333333333333333333333333333333333333333
+6586 3333333333333333333333333333333333333333333333333333333
+6587 3333333333333333333333333333333333333333333333333333333
+6588 3333333333333333333333333333333333333333333333333333333
+6589 3333333333333333333333333333333333333333333333333333333
+6590 3333333333333333333333333333333333333333333333333333333
+6591 3333333333333333333333333333333333333333333333333333333
+6592 3333333333333333333333333333333333333333333333333333333
+6593 3333333333333333333333333333333333333333333333333333333
+6594 3333333333333333333333333333333333333333333333333333333
+6595 3333333333333333333333333333333333333333333333333333333
+6596 3333333333333333333333333333333333333333333333333333333
+6597 3333333333333333333333333333333333333333333333333333333
+6598 3333333333333333333333333333333333333333333333333333333
+6599 3333333333333333333333333333333333333333333333333333333
+6600 3333333333333333333333333333333333333333333333333333333
+6601 3333333333333333333333333333333333333333333333333333333
+6602 3333333333333333333333333333333333333333333333333333333
+6603 3333333333333333333333333333333333333333333333333333333
+6604 3333333333333333333333333333333333333333333333333333333
+6605 3333333333333333333333333333333333333333333333333333333
+6606 3333333333333333333333333333333333333333333333333333333
+6607 3333333333333333333333333333333333333333333333333333333
+6608 3333333333333333333333333333333333333333333333333333333
+6609 3333333333333333333333333333333333333333333333333333333
+6610 3333333333333333333333333333333333333333333333333333333
+6611 3333333333333333333333333333333333333333333333333333333
+6612 3333333333333333333333333333333333333333333333333333333
+6613 3333333333333333333333333333333333333333333333333333333
+6614 3333333333333333333333333333333333333333333333333333333
+6615 3333333333333333333333333333333333333333333333333333333
+6616 3333333333333333333333333333333333333333333333333333333
+6617 3333333333333333333333333333333333333333333333333333333
+6618 3333333333333333333333333333333333333333333333333333333
+6619 3333333333333333333333333333333333333333333333333333333
+6620 3333333333333333333333333333333333333333333333333333333
+6621 3333333333333333333333333333333333333333333333333333333
+6622 3333333333333333333333333333333333333333333333333333333
+6623 3333333333333333333333333333333333333333333333333333333
+6624 3333333333333333333333333333333333333333333333333333333
+6625 3333333333333333333333333333333333333333333333333333333
+6626 3333333333333333333333333333333333333333333333333333333
+6627 3333333333333333333333333333333333333333333333333333333
+6628 3333333333333333333333333333333333333333333333333333333
+6629 3333333333333333333333333333333333333333333333333333333
+6630 3333333333333333333333333333333333333333333333333333333
+6631 3333333333333333333333333333333333333333333333333333333
+6632 3333333333333333333333333333333333333333333333333333333
+6633 3333333333333333333333333333333333333333333333333333333
+6634 3333333333333333333333333333333333333333333333333333333
+6635 3333333333333333333333333333333333333333333333333333333
+6636 3333333333333333333333333333333333333333333333333333333
+6637 3333333333333333333333333333333333333333333333333333333
+6638 3333333333333333333333333333333333333333333333333333333
+6639 3333333333333333333333333333333333333333333333333333333
+6640 3333333333333333333333333333333333333333333333333333333
+6641 3333333333333333333333333333333333333333333333333333333
+6642 3333333333333333333333333333333333333333333333333333333
+6643 3333333333333333333333333333333333333333333333333333333
+6644 3333333333333333333333333333333333333333333333333333333
+6645 3333333333333333333333333333333333333333333333333333333
+6646 3333333333333333333333333333333333333333333333333333333
+6647 3333333333333333333333333333333333333333333333333333333
+6648 3333333333333333333333333333333333333333333333333333333
+6649 3333333333333333333333333333333333333333333333333333333
+6650 3333333333333333333333333333333333333333333333333333333
+6651 3333333333333333333333333333333333333333333333333333333
+6652 3333333333333333333333333333333333333333333333333333333
+6653 3333333333333333333333333333333333333333333333333333333
+6654 3333333333333333333333333333333333333333333333333333333
+6655 3333333333333333333333333333333333333333333333333333333
+6656 3333333333333333333333333333333333333333333333333333333
+6657 3333333333333333333333333333333333333333333333333333333
+6658 3333333333333333333333333333333333333333333333333333333
+6659 3333333333333333333333333333333333333333333333333333333
+6660 3333333333333333333333333333333333333333333333333333333
+6661 3333333333333333333333333333333333333333333333333333333
+6662 3333333333333333333333333333333333333333333333333333333
+6663 3333333333333333333333333333333333333333333333333333333
+6664 3333333333333333333333333333333333333333333333333333333
+6665 3333333333333333333333333333333333333333333333333333333
+6666 3333333333333333333333333333333333333333333333333333333
+6667 3333333333333333333333333333333333333333333333333333333
+6668 3333333333333333333333333333333333333333333333333333333
+6669 3333333333333333333333333333333333333333333333333333333
+6670 3333333333333333333333333333333333333333333333333333333
+6671 3333333333333333333333333333333333333333333333333333333
+6672 3333333333333333333333333333333333333333333333333333333
+6673 3333333333333333333333333333333333333333333333333333333
+6674 3333333333333333333333333333333333333333333333333333333
+6675 3333333333333333333333333333333333333333333333333333333
+6676 3333333333333333333333333333333333333333333333333333333
+6677 3333333333333333333333333333333333333333333333333333333
+6678 3333333333333333333333333333333333333333333333333333333
+6679 3333333333333333333333333333333333333333333333333333333
+6680 3333333333333333333333333333333333333333333333333333333
+6681 3333333333333333333333333333333333333333333333333333333
+6682 3333333333333333333333333333333333333333333333333333333
+6683 3333333333333333333333333333333333333333333333333333333
+6684 3333333333333333333333333333333333333333333333333333333
+6685 3333333333333333333333333333333333333333333333333333333
+6686 3333333333333333333333333333333333333333333333333333333
+6687 3333333333333333333333333333333333333333333333333333333
+6688 3333333333333333333333333333333333333333333333333333333
+6689 3333333333333333333333333333333333333333333333333333333
+6690 3333333333333333333333333333333333333333333333333333333
+6691 3333333333333333333333333333333333333333333333333333333
+6692 3333333333333333333333333333333333333333333333333333333
+6693 3333333333333333333333333333333333333333333333333333333
+6694 3333333333333333333333333333333333333333333333333333333
+6695 3333333333333333333333333333333333333333333333333333333
+6696 3333333333333333333333333333333333333333333333333333333
+6697 3333333333333333333333333333333333333333333333333333333
+6698 3333333333333333333333333333333333333333333333333333333
+6699 3333333333333333333333333333333333333333333333333333333
+6700 3333333333333333333333333333333333333333333333333333333
+6701 3333333333333333333333333333333333333333333333333333333
+6702 3333333333333333333333333333333333333333333333333333333
+6703 3333333333333333333333333333333333333333333333333333333
+6704 3333333333333333333333333333333333333333333333333333333
+6705 3333333333333333333333333333333333333333333333333333333
+6706 3333333333333333333333333333333333333333333333333333333
+6707 3333333333333333333333333333333333333333333333333333333
+6708 3333333333333333333333333333333333333333333333333333333
+6709 3333333333333333333333333333333333333333333333333333333
+6710 3333333333333333333333333333333333333333333333333333333
+6711 3333333333333333333333333333333333333333333333333333333
+6712 3333333333333333333333333333333333333333333333333333333
+6713 3333333333333333333333333333333333333333333333333333333
+6714 3333333333333333333333333333333333333333333333333333333
+6715 3333333333333333333333333333333333333333333333333333333
+6716 3333333333333333333333333333333333333333333333333333333
+6717 3333333333333333333333333333333333333333333333333333333
+6718 3333333333333333333333333333333333333333333333333333333
+6719 3333333333333333333333333333333333333333333333333333333
+6720 3333333333333333333333333333333333333333333333333333333
+6721 3333333333333333333333333333333333333333333333333333333
+6722 3333333333333333333333333333333333333333333333333333333
+6723 3333333333333333333333333333333333333333333333333333333
+6724 3333333333333333333333333333333333333333333333333333333
+6725 3333333333333333333333333333333333333333333333333333333
+6726 3333333333333333333333333333333333333333333333333333333
+6727 3333333333333333333333333333333333333333333333333333333
+6728 3333333333333333333333333333333333333333333333333333333
+6729 3333333333333333333333333333333333333333333333333333333
+6730 3333333333333333333333333333333333333333333333333333333
+6731 3333333333333333333333333333333333333333333333333333333
+6732 3333333333333333333333333333333333333333333333333333333
+6733 3333333333333333333333333333333333333333333333333333333
+6734 3333333333333333333333333333333333333333333333333333333
+6735 3333333333333333333333333333333333333333333333333333333
+6736 3333333333333333333333333333333333333333333333333333333
+6737 3333333333333333333333333333333333333333333333333333333
+6738 3333333333333333333333333333333333333333333333333333333
+6739 3333333333333333333333333333333333333333333333333333333
+6740 3333333333333333333333333333333333333333333333333333333
+6741 3333333333333333333333333333333333333333333333333333333
+6742 3333333333333333333333333333333333333333333333333333333
+6743 3333333333333333333333333333333333333333333333333333333
+6744 3333333333333333333333333333333333333333333333333333333
+6745 3333333333333333333333333333333333333333333333333333333
+6746 3333333333333333333333333333333333333333333333333333333
+6747 3333333333333333333333333333333333333333333333333333333
+6748 3333333333333333333333333333333333333333333333333333333
+6749 3333333333333333333333333333333333333333333333333333333
+6750 3333333333333333333333333333333333333333333333333333333
+6751 3333333333333333333333333333333333333333333333333333333
+6752 3333333333333333333333333333333333333333333333333333333
+6753 3333333333333333333333333333333333333333333333333333333
+6754 3333333333333333333333333333333333333333333333333333333
+6755 3333333333333333333333333333333333333333333333333333333
+6756 3333333333333333333333333333333333333333333333333333333
+6757 3333333333333333333333333333333333333333333333333333333
+6758 3333333333333333333333333333333333333333333333333333333
+6759 3333333333333333333333333333333333333333333333333333333
+6760 3333333333333333333333333333333333333333333333333333333
+6761 3333333333333333333333333333333333333333333333333333333
+6762 3333333333333333333333333333333333333333333333333333333
+6763 3333333333333333333333333333333333333333333333333333333
+6764 3333333333333333333333333333333333333333333333333333333
+6765 3333333333333333333333333333333333333333333333333333333
+6766 3333333333333333333333333333333333333333333333333333333
+6767 3333333333333333333333333333333333333333333333333333333
+6768 3333333333333333333333333333333333333333333333333333333
+6769 3333333333333333333333333333333333333333333333333333333
+6770 3333333333333333333333333333333333333333333333333333333
+6771 3333333333333333333333333333333333333333333333333333333
+6772 3333333333333333333333333333333333333333333333333333333
+6773 3333333333333333333333333333333333333333333333333333333
+6774 3333333333333333333333333333333333333333333333333333333
+6775 3333333333333333333333333333333333333333333333333333333
+6776 3333333333333333333333333333333333333333333333333333333
+6777 3333333333333333333333333333333333333333333333333333333
+6778 3333333333333333333333333333333333333333333333333333333
+6779 3333333333333333333333333333333333333333333333333333333
+6780 3333333333333333333333333333333333333333333333333333333
+6781 3333333333333333333333333333333333333333333333333333333
+6782 3333333333333333333333333333333333333333333333333333333
+6783 3333333333333333333333333333333333333333333333333333333
+6784 3333333333333333333333333333333333333333333333333333333
+6785 3333333333333333333333333333333333333333333333333333333
+6786 3333333333333333333333333333333333333333333333333333333
+6787 3333333333333333333333333333333333333333333333333333333
+6788 3333333333333333333333333333333333333333333333333333333
+6789 3333333333333333333333333333333333333333333333333333333
+6790 3333333333333333333333333333333333333333333333333333333
+6791 3333333333333333333333333333333333333333333333333333333
+6792 3333333333333333333333333333333333333333333333333333333
+6793 3333333333333333333333333333333333333333333333333333333
+6794 3333333333333333333333333333333333333333333333333333333
+6795 3333333333333333333333333333333333333333333333333333333
+6796 3333333333333333333333333333333333333333333333333333333
+6797 3333333333333333333333333333333333333333333333333333333
+6798 3333333333333333333333333333333333333333333333333333333
+6799 3333333333333333333333333333333333333333333333333333333
+6800 3333333333333333333333333333333333333333333333333333333
+6801 3333333333333333333333333333333333333333333333333333333
+6802 3333333333333333333333333333333333333333333333333333333
+6803 3333333333333333333333333333333333333333333333333333333
+6804 3333333333333333333333333333333333333333333333333333333
+6805 3333333333333333333333333333333333333333333333333333333
+6806 3333333333333333333333333333333333333333333333333333333
+6807 3333333333333333333333333333333333333333333333333333333
+6808 3333333333333333333333333333333333333333333333333333333
+6809 3333333333333333333333333333333333333333333333333333333
+6810 3333333333333333333333333333333333333333333333333333333
+6811 3333333333333333333333333333333333333333333333333333333
+6812 3333333333333333333333333333333333333333333333333333333
+6813 3333333333333333333333333333333333333333333333333333333
+6814 3333333333333333333333333333333333333333333333333333333
+6815 3333333333333333333333333333333333333333333333333333333
+6816 3333333333333333333333333333333333333333333333333333333
+6817 3333333333333333333333333333333333333333333333333333333
+6818 3333333333333333333333333333333333333333333333333333333
+6819 3333333333333333333333333333333333333333333333333333333
+6820 3333333333333333333333333333333333333333333333333333333
+6821 3333333333333333333333333333333333333333333333333333333
+6822 3333333333333333333333333333333333333333333333333333333
+6823 3333333333333333333333333333333333333333333333333333333
+6824 3333333333333333333333333333333333333333333333333333333
+6825 3333333333333333333333333333333333333333333333333333333
+6826 3333333333333333333333333333333333333333333333333333333
+6827 3333333333333333333333333333333333333333333333333333333
+6828 3333333333333333333333333333333333333333333333333333333
+6829 3333333333333333333333333333333333333333333333333333333
+6830 3333333333333333333333333333333333333333333333333333333
+6831 3333333333333333333333333333333333333333333333333333333
+6832 3333333333333333333333333333333333333333333333333333333
+6833 3333333333333333333333333333333333333333333333333333333
+6834 3333333333333333333333333333333333333333333333333333333
+6835 3333333333333333333333333333333333333333333333333333333
+6836 3333333333333333333333333333333333333333333333333333333
+6837 3333333333333333333333333333333333333333333333333333333
+6838 3333333333333333333333333333333333333333333333333333333
+6839 3333333333333333333333333333333333333333333333333333333
+6840 3333333333333333333333333333333333333333333333333333333
+6841 3333333333333333333333333333333333333333333333333333333
+6842 3333333333333333333333333333333333333333333333333333333
+6843 3333333333333333333333333333333333333333333333333333333
+6844 3333333333333333333333333333333333333333333333333333333
+6845 3333333333333333333333333333333333333333333333333333333
+6846 3333333333333333333333333333333333333333333333333333333
+6847 3333333333333333333333333333333333333333333333333333333
+6848 3333333333333333333333333333333333333333333333333333333
+6849 3333333333333333333333333333333333333333333333333333333
+6850 3333333333333333333333333333333333333333333333333333333
+6851 3333333333333333333333333333333333333333333333333333333
+6852 3333333333333333333333333333333333333333333333333333333
+6853 3333333333333333333333333333333333333333333333333333333
+6854 3333333333333333333333333333333333333333333333333333333
+6855 3333333333333333333333333333333333333333333333333333333
+6856 3333333333333333333333333333333333333333333333333333333
+6857 3333333333333333333333333333333333333333333333333333333
+6858 3333333333333333333333333333333333333333333333333333333
+6859 3333333333333333333333333333333333333333333333333333333
+6860 3333333333333333333333333333333333333333333333333333333
+6861 3333333333333333333333333333333333333333333333333333333
+6862 3333333333333333333333333333333333333333333333333333333
+6863 3333333333333333333333333333333333333333333333333333333
+6864 3333333333333333333333333333333333333333333333333333333
+6865 3333333333333333333333333333333333333333333333333333333
+6866 3333333333333333333333333333333333333333333333333333333
+6867 3333333333333333333333333333333333333333333333333333333
+6868 3333333333333333333333333333333333333333333333333333333
+6869 3333333333333333333333333333333333333333333333333333333
+6870 3333333333333333333333333333333333333333333333333333333
+6871 3333333333333333333333333333333333333333333333333333333
+6872 3333333333333333333333333333333333333333333333333333333
+6873 3333333333333333333333333333333333333333333333333333333
+6874 3333333333333333333333333333333333333333333333333333333
+6875 3333333333333333333333333333333333333333333333333333333
+6876 3333333333333333333333333333333333333333333333333333333
+6877 3333333333333333333333333333333333333333333333333333333
+6878 3333333333333333333333333333333333333333333333333333333
+6879 3333333333333333333333333333333333333333333333333333333
+6880 3333333333333333333333333333333333333333333333333333333
+6881 3333333333333333333333333333333333333333333333333333333
+6882 3333333333333333333333333333333333333333333333333333333
+6883 3333333333333333333333333333333333333333333333333333333
+6884 3333333333333333333333333333333333333333333333333333333
+6885 3333333333333333333333333333333333333333333333333333333
+6886 3333333333333333333333333333333333333333333333333333333
+6887 3333333333333333333333333333333333333333333333333333333
+6888 3333333333333333333333333333333333333333333333333333333
+6889 3333333333333333333333333333333333333333333333333333333
+6890 3333333333333333333333333333333333333333333333333333333
+6891 3333333333333333333333333333333333333333333333333333333
+6892 3333333333333333333333333333333333333333333333333333333
+6893 3333333333333333333333333333333333333333333333333333333
+6894 3333333333333333333333333333333333333333333333333333333
+6895 3333333333333333333333333333333333333333333333333333333
+6896 3333333333333333333333333333333333333333333333333333333
+6897 3333333333333333333333333333333333333333333333333333333
+6898 3333333333333333333333333333333333333333333333333333333
+6899 3333333333333333333333333333333333333333333333333333333
+6900 3333333333333333333333333333333333333333333333333333333
+6901 3333333333333333333333333333333333333333333333333333333
+6902 3333333333333333333333333333333333333333333333333333333
+6903 3333333333333333333333333333333333333333333333333333333
+6904 3333333333333333333333333333333333333333333333333333333
+6905 3333333333333333333333333333333333333333333333333333333
+6906 3333333333333333333333333333333333333333333333333333333
+6907 3333333333333333333333333333333333333333333333333333333
+6908 3333333333333333333333333333333333333333333333333333333
+6909 3333333333333333333333333333333333333333333333333333333
+6910 3333333333333333333333333333333333333333333333333333333
+6911 3333333333333333333333333333333333333333333333333333333
+6912 3333333333333333333333333333333333333333333333333333333
+6913 3333333333333333333333333333333333333333333333333333333
+6914 3333333333333333333333333333333333333333333333333333333
+6915 3333333333333333333333333333333333333333333333333333333
+6916 3333333333333333333333333333333333333333333333333333333
+6917 3333333333333333333333333333333333333333333333333333333
+6918 3333333333333333333333333333333333333333333333333333333
+6919 3333333333333333333333333333333333333333333333333333333
+6920 3333333333333333333333333333333333333333333333333333333
+6921 3333333333333333333333333333333333333333333333333333333
+6922 3333333333333333333333333333333333333333333333333333333
+6923 3333333333333333333333333333333333333333333333333333333
+6924 3333333333333333333333333333333333333333333333333333333
+6925 3333333333333333333333333333333333333333333333333333333
+6926 3333333333333333333333333333333333333333333333333333333
+6927 3333333333333333333333333333333333333333333333333333333
+6928 3333333333333333333333333333333333333333333333333333333
+6929 3333333333333333333333333333333333333333333333333333333
+6930 3333333333333333333333333333333333333333333333333333333
+6931 3333333333333333333333333333333333333333333333333333333
+6932 3333333333333333333333333333333333333333333333333333333
+6933 3333333333333333333333333333333333333333333333333333333
+6934 3333333333333333333333333333333333333333333333333333333
+6935 3333333333333333333333333333333333333333333333333333333
+6936 3333333333333333333333333333333333333333333333333333333
+6937 3333333333333333333333333333333333333333333333333333333
+6938 3333333333333333333333333333333333333333333333333333333
+6939 3333333333333333333333333333333333333333333333333333333
+6940 3333333333333333333333333333333333333333333333333333333
+6941 3333333333333333333333333333333333333333333333333333333
+6942 3333333333333333333333333333333333333333333333333333333
+6943 3333333333333333333333333333333333333333333333333333333
+6944 3333333333333333333333333333333333333333333333333333333
+6945 3333333333333333333333333333333333333333333333333333333
+6946 3333333333333333333333333333333333333333333333333333333
+6947 3333333333333333333333333333333333333333333333333333333
+6948 3333333333333333333333333333333333333333333333333333333
+6949 3333333333333333333333333333333333333333333333333333333
+6950 3333333333333333333333333333333333333333333333333333333
+6951 3333333333333333333333333333333333333333333333333333333
+6952 3333333333333333333333333333333333333333333333333333333
+6953 3333333333333333333333333333333333333333333333333333333
+6954 3333333333333333333333333333333333333333333333333333333
+6955 3333333333333333333333333333333333333333333333333333333
+6956 3333333333333333333333333333333333333333333333333333333
+6957 3333333333333333333333333333333333333333333333333333333
+6958 3333333333333333333333333333333333333333333333333333333
+6959 3333333333333333333333333333333333333333333333333333333
+6960 3333333333333333333333333333333333333333333333333333333
+6961 3333333333333333333333333333333333333333333333333333333
+6962 3333333333333333333333333333333333333333333333333333333
+6963 3333333333333333333333333333333333333333333333333333333
+6964 3333333333333333333333333333333333333333333333333333333
+6965 3333333333333333333333333333333333333333333333333333333
+6966 3333333333333333333333333333333333333333333333333333333
+6967 3333333333333333333333333333333333333333333333333333333
+6968 3333333333333333333333333333333333333333333333333333333
+6969 3333333333333333333333333333333333333333333333333333333
+6970 3333333333333333333333333333333333333333333333333333333
+6971 3333333333333333333333333333333333333333333333333333333
+6972 3333333333333333333333333333333333333333333333333333333
+6973 3333333333333333333333333333333333333333333333333333333
+6974 3333333333333333333333333333333333333333333333333333333
+6975 3333333333333333333333333333333333333333333333333333333
+6976 3333333333333333333333333333333333333333333333333333333
+6977 3333333333333333333333333333333333333333333333333333333
+6978 3333333333333333333333333333333333333333333333333333333
+6979 3333333333333333333333333333333333333333333333333333333
+6980 3333333333333333333333333333333333333333333333333333333
+6981 3333333333333333333333333333333333333333333333333333333
+6982 3333333333333333333333333333333333333333333333333333333
+6983 3333333333333333333333333333333333333333333333333333333
+6984 3333333333333333333333333333333333333333333333333333333
+6985 3333333333333333333333333333333333333333333333333333333
+6986 3333333333333333333333333333333333333333333333333333333
+6987 3333333333333333333333333333333333333333333333333333333
+6988 3333333333333333333333333333333333333333333333333333333
+6989 3333333333333333333333333333333333333333333333333333333
+6990 3333333333333333333333333333333333333333333333333333333
+6991 3333333333333333333333333333333333333333333333333333333
+6992 3333333333333333333333333333333333333333333333333333333
+6993 3333333333333333333333333333333333333333333333333333333
+6994 3333333333333333333333333333333333333333333333333333333
+6995 3333333333333333333333333333333333333333333333333333333
+6996 3333333333333333333333333333333333333333333333333333333
+6997 3333333333333333333333333333333333333333333333333333333
+6998 3333333333333333333333333333333333333333333333333333333
+6999 3333333333333333333333333333333333333333333333333333333
+7000 3333333333333333333333333333333333333333333333333333333
+7001 3333333333333333333333333333333333333333333333333333333
+7002 3333333333333333333333333333333333333333333333333333333
+7003 3333333333333333333333333333333333333333333333333333333
+7004 3333333333333333333333333333333333333333333333333333333
+7005 3333333333333333333333333333333333333333333333333333333
+7006 3333333333333333333333333333333333333333333333333333333
+7007 3333333333333333333333333333333333333333333333333333333
+7008 3333333333333333333333333333333333333333333333333333333
+7009 3333333333333333333333333333333333333333333333333333333
+7010 3333333333333333333333333333333333333333333333333333333
+7011 3333333333333333333333333333333333333333333333333333333
+7012 3333333333333333333333333333333333333333333333333333333
+7013 3333333333333333333333333333333333333333333333333333333
+7014 3333333333333333333333333333333333333333333333333333333
+7015 3333333333333333333333333333333333333333333333333333333
+7016 3333333333333333333333333333333333333333333333333333333
+7017 3333333333333333333333333333333333333333333333333333333
+7018 3333333333333333333333333333333333333333333333333333333
+7019 3333333333333333333333333333333333333333333333333333333
+7020 3333333333333333333333333333333333333333333333333333333
+7021 3333333333333333333333333333333333333333333333333333333
+7022 3333333333333333333333333333333333333333333333333333333
+7023 3333333333333333333333333333333333333333333333333333333
+7024 3333333333333333333333333333333333333333333333333333333
+7025 3333333333333333333333333333333333333333333333333333333
+7026 3333333333333333333333333333333333333333333333333333333
+7027 3333333333333333333333333333333333333333333333333333333
+7028 3333333333333333333333333333333333333333333333333333333
+7029 3333333333333333333333333333333333333333333333333333333
+7030 3333333333333333333333333333333333333333333333333333333
+7031 3333333333333333333333333333333333333333333333333333333
+7032 3333333333333333333333333333333333333333333333333333333
+7033 3333333333333333333333333333333333333333333333333333333
+7034 3333333333333333333333333333333333333333333333333333333
+7035 3333333333333333333333333333333333333333333333333333333
+7036 3333333333333333333333333333333333333333333333333333333
+7037 3333333333333333333333333333333333333333333333333333333
+7038 3333333333333333333333333333333333333333333333333333333
+7039 3333333333333333333333333333333333333333333333333333333
+7040 3333333333333333333333333333333333333333333333333333333
+7041 3333333333333333333333333333333333333333333333333333333
+7042 3333333333333333333333333333333333333333333333333333333
+7043 3333333333333333333333333333333333333333333333333333333
+7044 3333333333333333333333333333333333333333333333333333333
+7045 3333333333333333333333333333333333333333333333333333333
+7046 3333333333333333333333333333333333333333333333333333333
+7047 3333333333333333333333333333333333333333333333333333333
+7048 3333333333333333333333333333333333333333333333333333333
+7049 3333333333333333333333333333333333333333333333333333333
+7050 3333333333333333333333333333333333333333333333333333333
+7051 3333333333333333333333333333333333333333333333333333333
+7052 3333333333333333333333333333333333333333333333333333333
+7053 3333333333333333333333333333333333333333333333333333333
+7054 3333333333333333333333333333333333333333333333333333333
+7055 3333333333333333333333333333333333333333333333333333333
+7056 3333333333333333333333333333333333333333333333333333333
+7057 3333333333333333333333333333333333333333333333333333333
+7058 3333333333333333333333333333333333333333333333333333333
+7059 3333333333333333333333333333333333333333333333333333333
+7060 3333333333333333333333333333333333333333333333333333333
+7061 3333333333333333333333333333333333333333333333333333333
+7062 3333333333333333333333333333333333333333333333333333333
+7063 3333333333333333333333333333333333333333333333333333333
+7064 3333333333333333333333333333333333333333333333333333333
+7065 3333333333333333333333333333333333333333333333333333333
+7066 3333333333333333333333333333333333333333333333333333333
+7067 3333333333333333333333333333333333333333333333333333333
+7068 3333333333333333333333333333333333333333333333333333333
+7069 3333333333333333333333333333333333333333333333333333333
+7070 3333333333333333333333333333333333333333333333333333333
+7071 3333333333333333333333333333333333333333333333333333333
+7072 3333333333333333333333333333333333333333333333333333333
+7073 3333333333333333333333333333333333333333333333333333333
+7074 3333333333333333333333333333333333333333333333333333333
+7075 3333333333333333333333333333333333333333333333333333333
+7076 3333333333333333333333333333333333333333333333333333333
+7077 3333333333333333333333333333333333333333333333333333333
+7078 3333333333333333333333333333333333333333333333333333333
+7079 3333333333333333333333333333333333333333333333333333333
+7080 3333333333333333333333333333333333333333333333333333333
+7081 3333333333333333333333333333333333333333333333333333333
+7082 3333333333333333333333333333333333333333333333333333333
+7083 3333333333333333333333333333333333333333333333333333333
+7084 3333333333333333333333333333333333333333333333333333333
+7085 3333333333333333333333333333333333333333333333333333333
+7086 3333333333333333333333333333333333333333333333333333333
+7087 3333333333333333333333333333333333333333333333333333333
+7088 3333333333333333333333333333333333333333333333333333333
+7089 3333333333333333333333333333333333333333333333333333333
+7090 3333333333333333333333333333333333333333333333333333333
+7091 3333333333333333333333333333333333333333333333333333333
+7092 3333333333333333333333333333333333333333333333333333333
+7093 3333333333333333333333333333333333333333333333333333333
+7094 3333333333333333333333333333333333333333333333333333333
+7095 3333333333333333333333333333333333333333333333333333333
+7096 3333333333333333333333333333333333333333333333333333333
+7097 3333333333333333333333333333333333333333333333333333333
+7098 3333333333333333333333333333333333333333333333333333333
+7099 3333333333333333333333333333333333333333333333333333333
+7100 3333333333333333333333333333333333333333333333333333333
+7101 3333333333333333333333333333333333333333333333333333333
+7102 3333333333333333333333333333333333333333333333333333333
+7103 3333333333333333333333333333333333333333333333333333333
+7104 3333333333333333333333333333333333333333333333333333333
+7105 3333333333333333333333333333333333333333333333333333333
+7106 3333333333333333333333333333333333333333333333333333333
+7107 3333333333333333333333333333333333333333333333333333333
+7108 3333333333333333333333333333333333333333333333333333333
+7109 3333333333333333333333333333333333333333333333333333333
+7110 3333333333333333333333333333333333333333333333333333333
+7111 3333333333333333333333333333333333333333333333333333333
+7112 3333333333333333333333333333333333333333333333333333333
+7113 3333333333333333333333333333333333333333333333333333333
+7114 3333333333333333333333333333333333333333333333333333333
+7115 3333333333333333333333333333333333333333333333333333333
+7116 3333333333333333333333333333333333333333333333333333333
+7117 3333333333333333333333333333333333333333333333333333333
+7118 3333333333333333333333333333333333333333333333333333333
+7119 3333333333333333333333333333333333333333333333333333333
+7120 3333333333333333333333333333333333333333333333333333333
+7121 3333333333333333333333333333333333333333333333333333333
+7122 3333333333333333333333333333333333333333333333333333333
+7123 3333333333333333333333333333333333333333333333333333333
+7124 3333333333333333333333333333333333333333333333333333333
+7125 3333333333333333333333333333333333333333333333333333333
+7126 3333333333333333333333333333333333333333333333333333333
+7127 3333333333333333333333333333333333333333333333333333333
+7128 3333333333333333333333333333333333333333333333333333333
+7129 3333333333333333333333333333333333333333333333333333333
+7130 3333333333333333333333333333333333333333333333333333333
+7131 3333333333333333333333333333333333333333333333333333333
+7132 3333333333333333333333333333333333333333333333333333333
+7133 3333333333333333333333333333333333333333333333333333333
+7134 3333333333333333333333333333333333333333333333333333333
+7135 3333333333333333333333333333333333333333333333333333333
+7136 3333333333333333333333333333333333333333333333333333333
+7137 3333333333333333333333333333333333333333333333333333333
+7138 3333333333333333333333333333333333333333333333333333333
+7139 3333333333333333333333333333333333333333333333333333333
+7140 3333333333333333333333333333333333333333333333333333333
+7141 3333333333333333333333333333333333333333333333333333333
+7142 3333333333333333333333333333333333333333333333333333333
+7143 3333333333333333333333333333333333333333333333333333333
+7144 3333333333333333333333333333333333333333333333333333333
+7145 3333333333333333333333333333333333333333333333333333333
+7146 3333333333333333333333333333333333333333333333333333333
+7147 3333333333333333333333333333333333333333333333333333333
+7148 3333333333333333333333333333333333333333333333333333333
+7149 3333333333333333333333333333333333333333333333333333333
+7150 3333333333333333333333333333333333333333333333333333333
+7151 3333333333333333333333333333333333333333333333333333333
+7152 3333333333333333333333333333333333333333333333333333333
+7153 3333333333333333333333333333333333333333333333333333333
+7154 3333333333333333333333333333333333333333333333333333333
+7155 3333333333333333333333333333333333333333333333333333333
+7156 3333333333333333333333333333333333333333333333333333333
+7157 3333333333333333333333333333333333333333333333333333333
+7158 3333333333333333333333333333333333333333333333333333333
+7159 3333333333333333333333333333333333333333333333333333333
+7160 3333333333333333333333333333333333333333333333333333333
+7161 3333333333333333333333333333333333333333333333333333333
+7162 3333333333333333333333333333333333333333333333333333333
+7163 3333333333333333333333333333333333333333333333333333333
+7164 3333333333333333333333333333333333333333333333333333333
+7165 3333333333333333333333333333333333333333333333333333333
+7166 3333333333333333333333333333333333333333333333333333333
+7167 3333333333333333333333333333333333333333333333333333333
+7168 3333333333333333333333333333333333333333333333333333333
+7169 3333333333333333333333333333333333333333333333333333333
+7170 3333333333333333333333333333333333333333333333333333333
+7171 3333333333333333333333333333333333333333333333333333333
+7172 3333333333333333333333333333333333333333333333333333333
+7173 3333333333333333333333333333333333333333333333333333333
+7174 3333333333333333333333333333333333333333333333333333333
+7175 3333333333333333333333333333333333333333333333333333333
+7176 3333333333333333333333333333333333333333333333333333333
+7177 3333333333333333333333333333333333333333333333333333333
+7178 3333333333333333333333333333333333333333333333333333333
+7179 3333333333333333333333333333333333333333333333333333333
+7180 3333333333333333333333333333333333333333333333333333333
+7181 3333333333333333333333333333333333333333333333333333333
+7182 3333333333333333333333333333333333333333333333333333333
+7183 3333333333333333333333333333333333333333333333333333333
+7184 3333333333333333333333333333333333333333333333333333333
+7185 3333333333333333333333333333333333333333333333333333333
+7186 3333333333333333333333333333333333333333333333333333333
+7187 3333333333333333333333333333333333333333333333333333333
+7188 3333333333333333333333333333333333333333333333333333333
+7189 3333333333333333333333333333333333333333333333333333333
+7190 3333333333333333333333333333333333333333333333333333333
+7191 3333333333333333333333333333333333333333333333333333333
+7192 3333333333333333333333333333333333333333333333333333333
+7193 3333333333333333333333333333333333333333333333333333333
+7194 3333333333333333333333333333333333333333333333333333333
+7195 3333333333333333333333333333333333333333333333333333333
+7196 3333333333333333333333333333333333333333333333333333333
+7197 3333333333333333333333333333333333333333333333333333333
+7198 3333333333333333333333333333333333333333333333333333333
+7199 3333333333333333333333333333333333333333333333333333333
+7200 3333333333333333333333333333333333333333333333333333333
+7201 3333333333333333333333333333333333333333333333333333333
+7202 3333333333333333333333333333333333333333333333333333333
+7203 3333333333333333333333333333333333333333333333333333333
+7204 3333333333333333333333333333333333333333333333333333333
+7205 3333333333333333333333333333333333333333333333333333333
+7206 3333333333333333333333333333333333333333333333333333333
+7207 3333333333333333333333333333333333333333333333333333333
+7208 3333333333333333333333333333333333333333333333333333333
+7209 3333333333333333333333333333333333333333333333333333333
+7210 3333333333333333333333333333333333333333333333333333333
+7211 3333333333333333333333333333333333333333333333333333333
+7212 3333333333333333333333333333333333333333333333333333333
+7213 3333333333333333333333333333333333333333333333333333333
+7214 3333333333333333333333333333333333333333333333333333333
+7215 3333333333333333333333333333333333333333333333333333333
+7216 3333333333333333333333333333333333333333333333333333333
+7217 3333333333333333333333333333333333333333333333333333333
+7218 3333333333333333333333333333333333333333333333333333333
+7219 3333333333333333333333333333333333333333333333333333333
+7220 3333333333333333333333333333333333333333333333333333333
+7221 3333333333333333333333333333333333333333333333333333333
+7222 3333333333333333333333333333333333333333333333333333333
+7223 3333333333333333333333333333333333333333333333333333333
+7224 3333333333333333333333333333333333333333333333333333333
+7225 3333333333333333333333333333333333333333333333333333333
+7226 3333333333333333333333333333333333333333333333333333333
+7227 3333333333333333333333333333333333333333333333333333333
+7228 3333333333333333333333333333333333333333333333333333333
+7229 3333333333333333333333333333333333333333333333333333333
+7230 3333333333333333333333333333333333333333333333333333333
+7231 3333333333333333333333333333333333333333333333333333333
+7232 3333333333333333333333333333333333333333333333333333333
+7233 3333333333333333333333333333333333333333333333333333333
+7234 3333333333333333333333333333333333333333333333333333333
+7235 3333333333333333333333333333333333333333333333333333333
+7236 3333333333333333333333333333333333333333333333333333333
+7237 3333333333333333333333333333333333333333333333333333333
+7238 3333333333333333333333333333333333333333333333333333333
+7239 3333333333333333333333333333333333333333333333333333333
+7240 3333333333333333333333333333333333333333333333333333333
+7241 3333333333333333333333333333333333333333333333333333333
+7242 3333333333333333333333333333333333333333333333333333333
+7243 3333333333333333333333333333333333333333333333333333333
+7244 3333333333333333333333333333333333333333333333333333333
+7245 3333333333333333333333333333333333333333333333333333333
+7246 3333333333333333333333333333333333333333333333333333333
+7247 3333333333333333333333333333333333333333333333333333333
+7248 3333333333333333333333333333333333333333333333333333333
+7249 3333333333333333333333333333333333333333333333333333333
+7250 3333333333333333333333333333333333333333333333333333333
+7251 3333333333333333333333333333333333333333333333333333333
+7252 3333333333333333333333333333333333333333333333333333333
+7253 3333333333333333333333333333333333333333333333333333333
+7254 3333333333333333333333333333333333333333333333333333333
+7255 3333333333333333333333333333333333333333333333333333333
+7256 3333333333333333333333333333333333333333333333333333333
+7257 3333333333333333333333333333333333333333333333333333333
+7258 3333333333333333333333333333333333333333333333333333333
+7259 3333333333333333333333333333333333333333333333333333333
+7260 3333333333333333333333333333333333333333333333333333333
+7261 3333333333333333333333333333333333333333333333333333333
+7262 3333333333333333333333333333333333333333333333333333333
+7263 3333333333333333333333333333333333333333333333333333333
+7264 3333333333333333333333333333333333333333333333333333333
+7265 3333333333333333333333333333333333333333333333333333333
+7266 3333333333333333333333333333333333333333333333333333333
+7267 3333333333333333333333333333333333333333333333333333333
+7268 3333333333333333333333333333333333333333333333333333333
+7269 3333333333333333333333333333333333333333333333333333333
+7270 3333333333333333333333333333333333333333333333333333333
+7271 3333333333333333333333333333333333333333333333333333333
+7272 3333333333333333333333333333333333333333333333333333333
+7273 3333333333333333333333333333333333333333333333333333333
+7274 3333333333333333333333333333333333333333333333333333333
+7275 3333333333333333333333333333333333333333333333333333333
+7276 3333333333333333333333333333333333333333333333333333333
+7277 3333333333333333333333333333333333333333333333333333333
+7278 3333333333333333333333333333333333333333333333333333333
+7279 3333333333333333333333333333333333333333333333333333333
+7280 3333333333333333333333333333333333333333333333333333333
+7281 3333333333333333333333333333333333333333333333333333333
+7282 3333333333333333333333333333333333333333333333333333333
+7283 3333333333333333333333333333333333333333333333333333333
+7284 3333333333333333333333333333333333333333333333333333333
+7285 3333333333333333333333333333333333333333333333333333333
+7286 3333333333333333333333333333333333333333333333333333333
+7287 3333333333333333333333333333333333333333333333333333333
+7288 3333333333333333333333333333333333333333333333333333333
+7289 3333333333333333333333333333333333333333333333333333333
+7290 3333333333333333333333333333333333333333333333333333333
+7291 3333333333333333333333333333333333333333333333333333333
+7292 3333333333333333333333333333333333333333333333333333333
+7293 3333333333333333333333333333333333333333333333333333333
+7294 3333333333333333333333333333333333333333333333333333333
+7295 3333333333333333333333333333333333333333333333333333333
+7296 3333333333333333333333333333333333333333333333333333333
+7297 3333333333333333333333333333333333333333333333333333333
+7298 3333333333333333333333333333333333333333333333333333333
+7299 3333333333333333333333333333333333333333333333333333333
+7300 3333333333333333333333333333333333333333333333333333333
+7301 3333333333333333333333333333333333333333333333333333333
+7302 3333333333333333333333333333333333333333333333333333333
+7303 3333333333333333333333333333333333333333333333333333333
+7304 3333333333333333333333333333333333333333333333333333333
+7305 3333333333333333333333333333333333333333333333333333333
+7306 3333333333333333333333333333333333333333333333333333333
+7307 3333333333333333333333333333333333333333333333333333333
+7308 3333333333333333333333333333333333333333333333333333333
+7309 3333333333333333333333333333333333333333333333333333333
+7310 3333333333333333333333333333333333333333333333333333333
+7311 3333333333333333333333333333333333333333333333333333333
+7312 3333333333333333333333333333333333333333333333333333333
+7313 3333333333333333333333333333333333333333333333333333333
+7314 3333333333333333333333333333333333333333333333333333333
+7315 3333333333333333333333333333333333333333333333333333333
+7316 3333333333333333333333333333333333333333333333333333333
+7317 3333333333333333333333333333333333333333333333333333333
+7318 3333333333333333333333333333333333333333333333333333333
+7319 3333333333333333333333333333333333333333333333333333333
+7320 3333333333333333333333333333333333333333333333333333333
+7321 3333333333333333333333333333333333333333333333333333333
+7322 3333333333333333333333333333333333333333333333333333333
+7323 3333333333333333333333333333333333333333333333333333333
+7324 3333333333333333333333333333333333333333333333333333333
+7325 3333333333333333333333333333333333333333333333333333333
+7326 3333333333333333333333333333333333333333333333333333333
+7327 3333333333333333333333333333333333333333333333333333333
+7328 3333333333333333333333333333333333333333333333333333333
+7329 3333333333333333333333333333333333333333333333333333333
+7330 3333333333333333333333333333333333333333333333333333333
+7331 3333333333333333333333333333333333333333333333333333333
+7332 3333333333333333333333333333333333333333333333333333333
+7333 3333333333333333333333333333333333333333333333333333333
+7334 3333333333333333333333333333333333333333333333333333333
+7335 3333333333333333333333333333333333333333333333333333333
+7336 3333333333333333333333333333333333333333333333333333333
+7337 3333333333333333333333333333333333333333333333333333333
+7338 3333333333333333333333333333333333333333333333333333333
+7339 3333333333333333333333333333333333333333333333333333333
+7340 3333333333333333333333333333333333333333333333333333333
+7341 3333333333333333333333333333333333333333333333333333333
+7342 3333333333333333333333333333333333333333333333333333333
+7343 3333333333333333333333333333333333333333333333333333333
+7344 3333333333333333333333333333333333333333333333333333333
+7345 3333333333333333333333333333333333333333333333333333333
+7346 3333333333333333333333333333333333333333333333333333333
+7347 3333333333333333333333333333333333333333333333333333333
+7348 3333333333333333333333333333333333333333333333333333333
+7349 3333333333333333333333333333333333333333333333333333333
+7350 3333333333333333333333333333333333333333333333333333333
+7351 3333333333333333333333333333333333333333333333333333333
+7352 3333333333333333333333333333333333333333333333333333333
+7353 3333333333333333333333333333333333333333333333333333333
+7354 3333333333333333333333333333333333333333333333333333333
+7355 3333333333333333333333333333333333333333333333333333333
+7356 3333333333333333333333333333333333333333333333333333333
+7357 3333333333333333333333333333333333333333333333333333333
+7358 3333333333333333333333333333333333333333333333333333333
+7359 3333333333333333333333333333333333333333333333333333333
+7360 3333333333333333333333333333333333333333333333333333333
+7361 3333333333333333333333333333333333333333333333333333333
+7362 3333333333333333333333333333333333333333333333333333333
+7363 3333333333333333333333333333333333333333333333333333333
+7364 3333333333333333333333333333333333333333333333333333333
+7365 3333333333333333333333333333333333333333333333333333333
+7366 3333333333333333333333333333333333333333333333333333333
+7367 3333333333333333333333333333333333333333333333333333333
+7368 3333333333333333333333333333333333333333333333333333333
+7369 3333333333333333333333333333333333333333333333333333333
+7370 3333333333333333333333333333333333333333333333333333333
+7371 3333333333333333333333333333333333333333333333333333333
+7372 3333333333333333333333333333333333333333333333333333333
+7373 3333333333333333333333333333333333333333333333333333333
+7374 3333333333333333333333333333333333333333333333333333333
+7375 3333333333333333333333333333333333333333333333333333333
+7376 3333333333333333333333333333333333333333333333333333333
+7377 3333333333333333333333333333333333333333333333333333333
+7378 3333333333333333333333333333333333333333333333333333333
+7379 3333333333333333333333333333333333333333333333333333333
+7380 3333333333333333333333333333333333333333333333333333333
+7381 3333333333333333333333333333333333333333333333333333333
+7382 3333333333333333333333333333333333333333333333333333333
+7383 3333333333333333333333333333333333333333333333333333333
+7384 3333333333333333333333333333333333333333333333333333333
+7385 3333333333333333333333333333333333333333333333333333333
+7386 3333333333333333333333333333333333333333333333333333333
+7387 3333333333333333333333333333333333333333333333333333333
+7388 3333333333333333333333333333333333333333333333333333333
+7389 3333333333333333333333333333333333333333333333333333333
+7390 3333333333333333333333333333333333333333333333333333333
+7391 3333333333333333333333333333333333333333333333333333333
+7392 3333333333333333333333333333333333333333333333333333333
+7393 3333333333333333333333333333333333333333333333333333333
+7394 3333333333333333333333333333333333333333333333333333333
+7395 3333333333333333333333333333333333333333333333333333333
+7396 3333333333333333333333333333333333333333333333333333333
+7397 3333333333333333333333333333333333333333333333333333333
+7398 3333333333333333333333333333333333333333333333333333333
+7399 3333333333333333333333333333333333333333333333333333333
+7400 3333333333333333333333333333333333333333333333333333333
+7401 3333333333333333333333333333333333333333333333333333333
+7402 3333333333333333333333333333333333333333333333333333333
+7403 3333333333333333333333333333333333333333333333333333333
+7404 3333333333333333333333333333333333333333333333333333333
+7405 3333333333333333333333333333333333333333333333333333333
+7406 3333333333333333333333333333333333333333333333333333333
+7407 3333333333333333333333333333333333333333333333333333333
+7408 3333333333333333333333333333333333333333333333333333333
+7409 3333333333333333333333333333333333333333333333333333333
+7410 3333333333333333333333333333333333333333333333333333333
+7411 3333333333333333333333333333333333333333333333333333333
+7412 3333333333333333333333333333333333333333333333333333333
+7413 3333333333333333333333333333333333333333333333333333333
+7414 3333333333333333333333333333333333333333333333333333333
+7415 3333333333333333333333333333333333333333333333333333333
+7416 3333333333333333333333333333333333333333333333333333333
+7417 3333333333333333333333333333333333333333333333333333333
+7418 3333333333333333333333333333333333333333333333333333333
+7419 3333333333333333333333333333333333333333333333333333333
+7420 3333333333333333333333333333333333333333333333333333333
+7421 3333333333333333333333333333333333333333333333333333333
+7422 3333333333333333333333333333333333333333333333333333333
+7423 3333333333333333333333333333333333333333333333333333333
+7424 3333333333333333333333333333333333333333333333333333333
+7425 3333333333333333333333333333333333333333333333333333333
+7426 3333333333333333333333333333333333333333333333333333333
+7427 3333333333333333333333333333333333333333333333333333333
+7428 3333333333333333333333333333333333333333333333333333333
+7429 3333333333333333333333333333333333333333333333333333333
+7430 3333333333333333333333333333333333333333333333333333333
+7431 3333333333333333333333333333333333333333333333333333333
+7432 3333333333333333333333333333333333333333333333333333333
+7433 3333333333333333333333333333333333333333333333333333333
+7434 3333333333333333333333333333333333333333333333333333333
+7435 3333333333333333333333333333333333333333333333333333333
+7436 3333333333333333333333333333333333333333333333333333333
+7437 3333333333333333333333333333333333333333333333333333333
+7438 3333333333333333333333333333333333333333333333333333333
+7439 3333333333333333333333333333333333333333333333333333333
+7440 3333333333333333333333333333333333333333333333333333333
+7441 3333333333333333333333333333333333333333333333333333333
+7442 3333333333333333333333333333333333333333333333333333333
+7443 3333333333333333333333333333333333333333333333333333333
+7444 3333333333333333333333333333333333333333333333333333333
+7445 3333333333333333333333333333333333333333333333333333333
+7446 3333333333333333333333333333333333333333333333333333333
+7447 3333333333333333333333333333333333333333333333333333333
+7448 3333333333333333333333333333333333333333333333333333333
+7449 3333333333333333333333333333333333333333333333333333333
+7450 3333333333333333333333333333333333333333333333333333333
+7451 3333333333333333333333333333333333333333333333333333333
+7452 3333333333333333333333333333333333333333333333333333333
+7453 3333333333333333333333333333333333333333333333333333333
+7454 3333333333333333333333333333333333333333333333333333333
+7455 3333333333333333333333333333333333333333333333333333333
+7456 3333333333333333333333333333333333333333333333333333333
+7457 3333333333333333333333333333333333333333333333333333333
+7458 3333333333333333333333333333333333333333333333333333333
+7459 3333333333333333333333333333333333333333333333333333333
+7460 3333333333333333333333333333333333333333333333333333333
+7461 3333333333333333333333333333333333333333333333333333333
+7462 3333333333333333333333333333333333333333333333333333333
+7463 3333333333333333333333333333333333333333333333333333333
+7464 3333333333333333333333333333333333333333333333333333333
+7465 3333333333333333333333333333333333333333333333333333333
+7466 3333333333333333333333333333333333333333333333333333333
+7467 3333333333333333333333333333333333333333333333333333333
+7468 3333333333333333333333333333333333333333333333333333333
+7469 3333333333333333333333333333333333333333333333333333333
+7470 3333333333333333333333333333333333333333333333333333333
+7471 3333333333333333333333333333333333333333333333333333333
+7472 3333333333333333333333333333333333333333333333333333333
+7473 3333333333333333333333333333333333333333333333333333333
+7474 3333333333333333333333333333333333333333333333333333333
+7475 3333333333333333333333333333333333333333333333333333333
+7476 3333333333333333333333333333333333333333333333333333333
+7477 3333333333333333333333333333333333333333333333333333333
+7478 3333333333333333333333333333333333333333333333333333333
+7479 3333333333333333333333333333333333333333333333333333333
+7480 3333333333333333333333333333333333333333333333333333333
+7481 3333333333333333333333333333333333333333333333333333333
+7482 3333333333333333333333333333333333333333333333333333333
+7483 3333333333333333333333333333333333333333333333333333333
+7484 3333333333333333333333333333333333333333333333333333333
+7485 3333333333333333333333333333333333333333333333333333333
+7486 3333333333333333333333333333333333333333333333333333333
+7487 3333333333333333333333333333333333333333333333333333333
+7488 3333333333333333333333333333333333333333333333333333333
+7489 3333333333333333333333333333333333333333333333333333333
+7490 3333333333333333333333333333333333333333333333333333333
+7491 3333333333333333333333333333333333333333333333333333333
+7492 3333333333333333333333333333333333333333333333333333333
+7493 3333333333333333333333333333333333333333333333333333333
+7494 3333333333333333333333333333333333333333333333333333333
+7495 3333333333333333333333333333333333333333333333333333333
+7496 3333333333333333333333333333333333333333333333333333333
+7497 3333333333333333333333333333333333333333333333333333333
+7498 3333333333333333333333333333333333333333333333333333333
+7499 3333333333333333333333333333333333333333333333333333333
+7500 3333333333333333333333333333333333333333333333333333333
+7501 3333333333333333333333333333333333333333333333333333333
+7502 3333333333333333333333333333333333333333333333333333333
+7503 3333333333333333333333333333333333333333333333333333333
+7504 3333333333333333333333333333333333333333333333333333333
+7505 3333333333333333333333333333333333333333333333333333333
+7506 3333333333333333333333333333333333333333333333333333333
+7507 3333333333333333333333333333333333333333333333333333333
+7508 3333333333333333333333333333333333333333333333333333333
+7509 3333333333333333333333333333333333333333333333333333333
+7510 3333333333333333333333333333333333333333333333333333333
+7511 3333333333333333333333333333333333333333333333333333333
+7512 3333333333333333333333333333333333333333333333333333333
+7513 3333333333333333333333333333333333333333333333333333333
+7514 3333333333333333333333333333333333333333333333333333333
+7515 3333333333333333333333333333333333333333333333333333333
+7516 3333333333333333333333333333333333333333333333333333333
+7517 3333333333333333333333333333333333333333333333333333333
+7518 3333333333333333333333333333333333333333333333333333333
+7519 3333333333333333333333333333333333333333333333333333333
+7520 3333333333333333333333333333333333333333333333333333333
+7521 3333333333333333333333333333333333333333333333333333333
+7522 3333333333333333333333333333333333333333333333333333333
+7523 3333333333333333333333333333333333333333333333333333333
+7524 3333333333333333333333333333333333333333333333333333333
+7525 3333333333333333333333333333333333333333333333333333333
+7526 3333333333333333333333333333333333333333333333333333333
+7527 3333333333333333333333333333333333333333333333333333333
+7528 3333333333333333333333333333333333333333333333333333333
+7529 3333333333333333333333333333333333333333333333333333333
+7530 3333333333333333333333333333333333333333333333333333333
+7531 3333333333333333333333333333333333333333333333333333333
+7532 3333333333333333333333333333333333333333333333333333333
+7533 3333333333333333333333333333333333333333333333333333333
+7534 3333333333333333333333333333333333333333333333333333333
+7535 3333333333333333333333333333333333333333333333333333333
+7536 3333333333333333333333333333333333333333333333333333333
+7537 3333333333333333333333333333333333333333333333333333333
+7538 3333333333333333333333333333333333333333333333333333333
+7539 3333333333333333333333333333333333333333333333333333333
+7540 3333333333333333333333333333333333333333333333333333333
+7541 3333333333333333333333333333333333333333333333333333333
+7542 3333333333333333333333333333333333333333333333333333333
+7543 3333333333333333333333333333333333333333333333333333333
+7544 3333333333333333333333333333333333333333333333333333333
+7545 3333333333333333333333333333333333333333333333333333333
+7546 3333333333333333333333333333333333333333333333333333333
+7547 3333333333333333333333333333333333333333333333333333333
+7548 3333333333333333333333333333333333333333333333333333333
+7549 3333333333333333333333333333333333333333333333333333333
+7550 3333333333333333333333333333333333333333333333333333333
+7551 3333333333333333333333333333333333333333333333333333333
+7552 3333333333333333333333333333333333333333333333333333333
+7553 3333333333333333333333333333333333333333333333333333333
+7554 3333333333333333333333333333333333333333333333333333333
+7555 3333333333333333333333333333333333333333333333333333333
+7556 3333333333333333333333333333333333333333333333333333333
+7557 3333333333333333333333333333333333333333333333333333333
+7558 3333333333333333333333333333333333333333333333333333333
+7559 3333333333333333333333333333333333333333333333333333333
+7560 3333333333333333333333333333333333333333333333333333333
+7561 3333333333333333333333333333333333333333333333333333333
+7562 3333333333333333333333333333333333333333333333333333333
+7563 3333333333333333333333333333333333333333333333333333333
+7564 3333333333333333333333333333333333333333333333333333333
+7565 3333333333333333333333333333333333333333333333333333333
+7566 3333333333333333333333333333333333333333333333333333333
+7567 3333333333333333333333333333333333333333333333333333333
+7568 3333333333333333333333333333333333333333333333333333333
+7569 3333333333333333333333333333333333333333333333333333333
+7570 3333333333333333333333333333333333333333333333333333333
+7571 3333333333333333333333333333333333333333333333333333333
+7572 3333333333333333333333333333333333333333333333333333333
+7573 3333333333333333333333333333333333333333333333333333333
+7574 3333333333333333333333333333333333333333333333333333333
+7575 3333333333333333333333333333333333333333333333333333333
+7576 3333333333333333333333333333333333333333333333333333333
+7577 3333333333333333333333333333333333333333333333333333333
+7578 3333333333333333333333333333333333333333333333333333333
+7579 3333333333333333333333333333333333333333333333333333333
+7580 3333333333333333333333333333333333333333333333333333333
+7581 3333333333333333333333333333333333333333333333333333333
+7582 3333333333333333333333333333333333333333333333333333333
+7583 3333333333333333333333333333333333333333333333333333333
+7584 3333333333333333333333333333333333333333333333333333333
+7585 3333333333333333333333333333333333333333333333333333333
+7586 3333333333333333333333333333333333333333333333333333333
+7587 3333333333333333333333333333333333333333333333333333333
+7588 3333333333333333333333333333333333333333333333333333333
+7589 3333333333333333333333333333333333333333333333333333333
+7590 3333333333333333333333333333333333333333333333333333333
+7591 3333333333333333333333333333333333333333333333333333333
+7592 3333333333333333333333333333333333333333333333333333333
+7593 3333333333333333333333333333333333333333333333333333333
+7594 3333333333333333333333333333333333333333333333333333333
+7595 3333333333333333333333333333333333333333333333333333333
+7596 3333333333333333333333333333333333333333333333333333333
+7597 3333333333333333333333333333333333333333333333333333333
+7598 3333333333333333333333333333333333333333333333333333333
+7599 3333333333333333333333333333333333333333333333333333333
+7600 3333333333333333333333333333333333333333333333333333333
+7601 3333333333333333333333333333333333333333333333333333333
+7602 3333333333333333333333333333333333333333333333333333333
+7603 3333333333333333333333333333333333333333333333333333333
+7604 3333333333333333333333333333333333333333333333333333333
+7605 3333333333333333333333333333333333333333333333333333333
+7606 3333333333333333333333333333333333333333333333333333333
+7607 3333333333333333333333333333333333333333333333333333333
+7608 3333333333333333333333333333333333333333333333333333333
+7609 3333333333333333333333333333333333333333333333333333333
+7610 3333333333333333333333333333333333333333333333333333333
+7611 3333333333333333333333333333333333333333333333333333333
+7612 3333333333333333333333333333333333333333333333333333333
+7613 3333333333333333333333333333333333333333333333333333333
+7614 3333333333333333333333333333333333333333333333333333333
+7615 3333333333333333333333333333333333333333333333333333333
+7616 3333333333333333333333333333333333333333333333333333333
+7617 3333333333333333333333333333333333333333333333333333333
+7618 3333333333333333333333333333333333333333333333333333333
+7619 3333333333333333333333333333333333333333333333333333333
+7620 3333333333333333333333333333333333333333333333333333333
+7621 3333333333333333333333333333333333333333333333333333333
+7622 3333333333333333333333333333333333333333333333333333333
+7623 3333333333333333333333333333333333333333333333333333333
+7624 3333333333333333333333333333333333333333333333333333333
+7625 3333333333333333333333333333333333333333333333333333333
+7626 3333333333333333333333333333333333333333333333333333333
+7627 3333333333333333333333333333333333333333333333333333333
+7628 3333333333333333333333333333333333333333333333333333333
+7629 3333333333333333333333333333333333333333333333333333333
+7630 3333333333333333333333333333333333333333333333333333333
+7631 3333333333333333333333333333333333333333333333333333333
+7632 3333333333333333333333333333333333333333333333333333333
+7633 3333333333333333333333333333333333333333333333333333333
+7634 3333333333333333333333333333333333333333333333333333333
+7635 3333333333333333333333333333333333333333333333333333333
+7636 3333333333333333333333333333333333333333333333333333333
+7637 3333333333333333333333333333333333333333333333333333333
+7638 3333333333333333333333333333333333333333333333333333333
+7639 3333333333333333333333333333333333333333333333333333333
+7640 3333333333333333333333333333333333333333333333333333333
+7641 3333333333333333333333333333333333333333333333333333333
+7642 3333333333333333333333333333333333333333333333333333333
+7643 3333333333333333333333333333333333333333333333333333333
+7644 3333333333333333333333333333333333333333333333333333333
+7645 3333333333333333333333333333333333333333333333333333333
+7646 3333333333333333333333333333333333333333333333333333333
+7647 3333333333333333333333333333333333333333333333333333333
+7648 3333333333333333333333333333333333333333333333333333333
+7649 3333333333333333333333333333333333333333333333333333333
+7650 3333333333333333333333333333333333333333333333333333333
+7651 3333333333333333333333333333333333333333333333333333333
+7652 3333333333333333333333333333333333333333333333333333333
+7653 3333333333333333333333333333333333333333333333333333333
+7654 3333333333333333333333333333333333333333333333333333333
+7655 3333333333333333333333333333333333333333333333333333333
+7656 3333333333333333333333333333333333333333333333333333333
+7657 3333333333333333333333333333333333333333333333333333333
+7658 3333333333333333333333333333333333333333333333333333333
+7659 3333333333333333333333333333333333333333333333333333333
+7660 3333333333333333333333333333333333333333333333333333333
+7661 3333333333333333333333333333333333333333333333333333333
+7662 3333333333333333333333333333333333333333333333333333333
+7663 3333333333333333333333333333333333333333333333333333333
+7664 3333333333333333333333333333333333333333333333333333333
+7665 3333333333333333333333333333333333333333333333333333333
+7666 3333333333333333333333333333333333333333333333333333333
+7667 3333333333333333333333333333333333333333333333333333333
+7668 3333333333333333333333333333333333333333333333333333333
+7669 3333333333333333333333333333333333333333333333333333333
+7670 3333333333333333333333333333333333333333333333333333333
+7671 3333333333333333333333333333333333333333333333333333333
+7672 3333333333333333333333333333333333333333333333333333333
+7673 3333333333333333333333333333333333333333333333333333333
+7674 3333333333333333333333333333333333333333333333333333333
+7675 3333333333333333333333333333333333333333333333333333333
+7676 3333333333333333333333333333333333333333333333333333333
+7677 3333333333333333333333333333333333333333333333333333333
+7678 3333333333333333333333333333333333333333333333333333333
+7679 3333333333333333333333333333333333333333333333333333333
+7680 3333333333333333333333333333333333333333333333333333333
+7681 3333333333333333333333333333333333333333333333333333333
+7682 3333333333333333333333333333333333333333333333333333333
+7683 3333333333333333333333333333333333333333333333333333333
+7684 3333333333333333333333333333333333333333333333333333333
+7685 3333333333333333333333333333333333333333333333333333333
+7686 3333333333333333333333333333333333333333333333333333333
+7687 3333333333333333333333333333333333333333333333333333333
+7688 3333333333333333333333333333333333333333333333333333333
+7689 3333333333333333333333333333333333333333333333333333333
+7690 3333333333333333333333333333333333333333333333333333333
+7691 3333333333333333333333333333333333333333333333333333333
+7692 3333333333333333333333333333333333333333333333333333333
+7693 3333333333333333333333333333333333333333333333333333333
+7694 3333333333333333333333333333333333333333333333333333333
+7695 3333333333333333333333333333333333333333333333333333333
+7696 3333333333333333333333333333333333333333333333333333333
+7697 3333333333333333333333333333333333333333333333333333333
+7698 3333333333333333333333333333333333333333333333333333333
+7699 3333333333333333333333333333333333333333333333333333333
+7700 3333333333333333333333333333333333333333333333333333333
+7701 3333333333333333333333333333333333333333333333333333333
+7702 3333333333333333333333333333333333333333333333333333333
+7703 3333333333333333333333333333333333333333333333333333333
+7704 3333333333333333333333333333333333333333333333333333333
+7705 3333333333333333333333333333333333333333333333333333333
+7706 3333333333333333333333333333333333333333333333333333333
+7707 3333333333333333333333333333333333333333333333333333333
+7708 3333333333333333333333333333333333333333333333333333333
+7709 3333333333333333333333333333333333333333333333333333333
+7710 3333333333333333333333333333333333333333333333333333333
+7711 3333333333333333333333333333333333333333333333333333333
+7712 3333333333333333333333333333333333333333333333333333333
+7713 3333333333333333333333333333333333333333333333333333333
+7714 3333333333333333333333333333333333333333333333333333333
+7715 3333333333333333333333333333333333333333333333333333333
+7716 3333333333333333333333333333333333333333333333333333333
+7717 3333333333333333333333333333333333333333333333333333333
+7718 3333333333333333333333333333333333333333333333333333333
+7719 3333333333333333333333333333333333333333333333333333333
+7720 3333333333333333333333333333333333333333333333333333333
+7721 3333333333333333333333333333333333333333333333333333333
+7722 3333333333333333333333333333333333333333333333333333333
+7723 3333333333333333333333333333333333333333333333333333333
+7724 3333333333333333333333333333333333333333333333333333333
+7725 3333333333333333333333333333333333333333333333333333333
+7726 3333333333333333333333333333333333333333333333333333333
+7727 3333333333333333333333333333333333333333333333333333333
+7728 3333333333333333333333333333333333333333333333333333333
+7729 3333333333333333333333333333333333333333333333333333333
+7730 3333333333333333333333333333333333333333333333333333333
+7731 3333333333333333333333333333333333333333333333333333333
+7732 3333333333333333333333333333333333333333333333333333333
+7733 3333333333333333333333333333333333333333333333333333333
+7734 3333333333333333333333333333333333333333333333333333333
+7735 3333333333333333333333333333333333333333333333333333333
+7736 3333333333333333333333333333333333333333333333333333333
+7737 3333333333333333333333333333333333333333333333333333333
+7738 3333333333333333333333333333333333333333333333333333333
+7739 3333333333333333333333333333333333333333333333333333333
+7740 3333333333333333333333333333333333333333333333333333333
+7741 3333333333333333333333333333333333333333333333333333333
+7742 3333333333333333333333333333333333333333333333333333333
+7743 3333333333333333333333333333333333333333333333333333333
+7744 3333333333333333333333333333333333333333333333333333333
+7745 3333333333333333333333333333333333333333333333333333333
+7746 3333333333333333333333333333333333333333333333333333333
+7747 3333333333333333333333333333333333333333333333333333333
+7748 3333333333333333333333333333333333333333333333333333333
+7749 3333333333333333333333333333333333333333333333333333333
+7750 3333333333333333333333333333333333333333333333333333333
+7751 3333333333333333333333333333333333333333333333333333333
+7752 3333333333333333333333333333333333333333333333333333333
+7753 3333333333333333333333333333333333333333333333333333333
+7754 3333333333333333333333333333333333333333333333333333333
+7755 3333333333333333333333333333333333333333333333333333333
+7756 3333333333333333333333333333333333333333333333333333333
+7757 3333333333333333333333333333333333333333333333333333333
+7758 3333333333333333333333333333333333333333333333333333333
+7759 3333333333333333333333333333333333333333333333333333333
+7760 3333333333333333333333333333333333333333333333333333333
+7761 3333333333333333333333333333333333333333333333333333333
+7762 3333333333333333333333333333333333333333333333333333333
+7763 3333333333333333333333333333333333333333333333333333333
+7764 3333333333333333333333333333333333333333333333333333333
+7765 3333333333333333333333333333333333333333333333333333333
+7766 3333333333333333333333333333333333333333333333333333333
+7767 3333333333333333333333333333333333333333333333333333333
+7768 3333333333333333333333333333333333333333333333333333333
+7769 3333333333333333333333333333333333333333333333333333333
+7770 3333333333333333333333333333333333333333333333333333333
+7771 3333333333333333333333333333333333333333333333333333333
+7772 3333333333333333333333333333333333333333333333333333333
+7773 3333333333333333333333333333333333333333333333333333333
+7774 3333333333333333333333333333333333333333333333333333333
+7775 3333333333333333333333333333333333333333333333333333333
+7776 3333333333333333333333333333333333333333333333333333333
+7777 3333333333333333333333333333333333333333333333333333333
+7778 3333333333333333333333333333333333333333333333333333333
+7779 3333333333333333333333333333333333333333333333333333333
+7780 3333333333333333333333333333333333333333333333333333333
+7781 3333333333333333333333333333333333333333333333333333333
+7782 3333333333333333333333333333333333333333333333333333333
+7783 3333333333333333333333333333333333333333333333333333333
+7784 3333333333333333333333333333333333333333333333333333333
+7785 3333333333333333333333333333333333333333333333333333333
+7786 3333333333333333333333333333333333333333333333333333333
+7787 3333333333333333333333333333333333333333333333333333333
+7788 3333333333333333333333333333333333333333333333333333333
+7789 3333333333333333333333333333333333333333333333333333333
+7790 3333333333333333333333333333333333333333333333333333333
+7791 3333333333333333333333333333333333333333333333333333333
+7792 3333333333333333333333333333333333333333333333333333333
+7793 3333333333333333333333333333333333333333333333333333333
+7794 3333333333333333333333333333333333333333333333333333333
+7795 3333333333333333333333333333333333333333333333333333333
+7796 3333333333333333333333333333333333333333333333333333333
+7797 3333333333333333333333333333333333333333333333333333333
+7798 3333333333333333333333333333333333333333333333333333333
+7799 3333333333333333333333333333333333333333333333333333333
+7800 3333333333333333333333333333333333333333333333333333333
+7801 3333333333333333333333333333333333333333333333333333333
+7802 3333333333333333333333333333333333333333333333333333333
+7803 3333333333333333333333333333333333333333333333333333333
+7804 3333333333333333333333333333333333333333333333333333333
+7805 3333333333333333333333333333333333333333333333333333333
+7806 3333333333333333333333333333333333333333333333333333333
+7807 3333333333333333333333333333333333333333333333333333333
+7808 3333333333333333333333333333333333333333333333333333333
+7809 3333333333333333333333333333333333333333333333333333333
+7810 3333333333333333333333333333333333333333333333333333333
+7811 3333333333333333333333333333333333333333333333333333333
+7812 3333333333333333333333333333333333333333333333333333333
+7813 3333333333333333333333333333333333333333333333333333333
+7814 3333333333333333333333333333333333333333333333333333333
+7815 3333333333333333333333333333333333333333333333333333333
+7816 3333333333333333333333333333333333333333333333333333333
+7817 3333333333333333333333333333333333333333333333333333333
+7818 3333333333333333333333333333333333333333333333333333333
+7819 3333333333333333333333333333333333333333333333333333333
+7820 3333333333333333333333333333333333333333333333333333333
+7821 3333333333333333333333333333333333333333333333333333333
+7822 3333333333333333333333333333333333333333333333333333333
+7823 3333333333333333333333333333333333333333333333333333333
+7824 3333333333333333333333333333333333333333333333333333333
+7825 3333333333333333333333333333333333333333333333333333333
+7826 3333333333333333333333333333333333333333333333333333333
+7827 3333333333333333333333333333333333333333333333333333333
+7828 3333333333333333333333333333333333333333333333333333333
+7829 3333333333333333333333333333333333333333333333333333333
+7830 3333333333333333333333333333333333333333333333333333333
+7831 3333333333333333333333333333333333333333333333333333333
+7832 3333333333333333333333333333333333333333333333333333333
+7833 3333333333333333333333333333333333333333333333333333333
+7834 3333333333333333333333333333333333333333333333333333333
+7835 3333333333333333333333333333333333333333333333333333333
+7836 3333333333333333333333333333333333333333333333333333333
+7837 3333333333333333333333333333333333333333333333333333333
+7838 3333333333333333333333333333333333333333333333333333333
+7839 3333333333333333333333333333333333333333333333333333333
+7840 3333333333333333333333333333333333333333333333333333333
+7841 3333333333333333333333333333333333333333333333333333333
+7842 3333333333333333333333333333333333333333333333333333333
+7843 3333333333333333333333333333333333333333333333333333333
+7844 3333333333333333333333333333333333333333333333333333333
+7845 3333333333333333333333333333333333333333333333333333333
+7846 3333333333333333333333333333333333333333333333333333333
+7847 3333333333333333333333333333333333333333333333333333333
+7848 3333333333333333333333333333333333333333333333333333333
+7849 3333333333333333333333333333333333333333333333333333333
+7850 3333333333333333333333333333333333333333333333333333333
+7851 3333333333333333333333333333333333333333333333333333333
+7852 3333333333333333333333333333333333333333333333333333333
+7853 3333333333333333333333333333333333333333333333333333333
+7854 3333333333333333333333333333333333333333333333333333333
+7855 3333333333333333333333333333333333333333333333333333333
+7856 3333333333333333333333333333333333333333333333333333333
+7857 3333333333333333333333333333333333333333333333333333333
+7858 3333333333333333333333333333333333333333333333333333333
+7859 3333333333333333333333333333333333333333333333333333333
+7860 3333333333333333333333333333333333333333333333333333333
+7861 3333333333333333333333333333333333333333333333333333333
+7862 3333333333333333333333333333333333333333333333333333333
+7863 3333333333333333333333333333333333333333333333333333333
+7864 3333333333333333333333333333333333333333333333333333333
+7865 3333333333333333333333333333333333333333333333333333333
+7866 3333333333333333333333333333333333333333333333333333333
+7867 3333333333333333333333333333333333333333333333333333333
+7868 3333333333333333333333333333333333333333333333333333333
+7869 3333333333333333333333333333333333333333333333333333333
+7870 3333333333333333333333333333333333333333333333333333333
+7871 3333333333333333333333333333333333333333333333333333333
+7872 3333333333333333333333333333333333333333333333333333333
+7873 3333333333333333333333333333333333333333333333333333333
+7874 3333333333333333333333333333333333333333333333333333333
+7875 3333333333333333333333333333333333333333333333333333333
+7876 3333333333333333333333333333333333333333333333333333333
+7877 3333333333333333333333333333333333333333333333333333333
+7878 3333333333333333333333333333333333333333333333333333333
+7879 3333333333333333333333333333333333333333333333333333333
+7880 3333333333333333333333333333333333333333333333333333333
+7881 3333333333333333333333333333333333333333333333333333333
+7882 3333333333333333333333333333333333333333333333333333333
+7883 3333333333333333333333333333333333333333333333333333333
+7884 3333333333333333333333333333333333333333333333333333333
+7885 3333333333333333333333333333333333333333333333333333333
+7886 3333333333333333333333333333333333333333333333333333333
+7887 3333333333333333333333333333333333333333333333333333333
+7888 3333333333333333333333333333333333333333333333333333333
+7889 3333333333333333333333333333333333333333333333333333333
+7890 3333333333333333333333333333333333333333333333333333333
+7891 3333333333333333333333333333333333333333333333333333333
+7892 3333333333333333333333333333333333333333333333333333333
+7893 3333333333333333333333333333333333333333333333333333333
+7894 3333333333333333333333333333333333333333333333333333333
+7895 3333333333333333333333333333333333333333333333333333333
+7896 3333333333333333333333333333333333333333333333333333333
+7897 3333333333333333333333333333333333333333333333333333333
+7898 3333333333333333333333333333333333333333333333333333333
+7899 3333333333333333333333333333333333333333333333333333333
+7900 3333333333333333333333333333333333333333333333333333333
+7901 3333333333333333333333333333333333333333333333333333333
+7902 3333333333333333333333333333333333333333333333333333333
+7903 3333333333333333333333333333333333333333333333333333333
+7904 3333333333333333333333333333333333333333333333333333333
+7905 3333333333333333333333333333333333333333333333333333333
+7906 3333333333333333333333333333333333333333333333333333333
+7907 3333333333333333333333333333333333333333333333333333333
+7908 3333333333333333333333333333333333333333333333333333333
+7909 3333333333333333333333333333333333333333333333333333333
+7910 3333333333333333333333333333333333333333333333333333333
+7911 3333333333333333333333333333333333333333333333333333333
+7912 3333333333333333333333333333333333333333333333333333333
+7913 3333333333333333333333333333333333333333333333333333333
+7914 3333333333333333333333333333333333333333333333333333333
+7915 3333333333333333333333333333333333333333333333333333333
+7916 3333333333333333333333333333333333333333333333333333333
+7917 3333333333333333333333333333333333333333333333333333333
+7918 3333333333333333333333333333333333333333333333333333333
+7919 3333333333333333333333333333333333333333333333333333333
+7920 3333333333333333333333333333333333333333333333333333333
+7921 3333333333333333333333333333333333333333333333333333333
+7922 3333333333333333333333333333333333333333333333333333333
+7923 3333333333333333333333333333333333333333333333333333333
+7924 3333333333333333333333333333333333333333333333333333333
+7925 3333333333333333333333333333333333333333333333333333333
+7926 3333333333333333333333333333333333333333333333333333333
+7927 3333333333333333333333333333333333333333333333333333333
+7928 3333333333333333333333333333333333333333333333333333333
+7929 3333333333333333333333333333333333333333333333333333333
+7930 3333333333333333333333333333333333333333333333333333333
+7931 3333333333333333333333333333333333333333333333333333333
+7932 3333333333333333333333333333333333333333333333333333333
+7933 3333333333333333333333333333333333333333333333333333333
+7934 3333333333333333333333333333333333333333333333333333333
+7935 3333333333333333333333333333333333333333333333333333333
+7936 3333333333333333333333333333333333333333333333333333333
+7937 3333333333333333333333333333333333333333333333333333333
+7938 3333333333333333333333333333333333333333333333333333333
+7939 3333333333333333333333333333333333333333333333333333333
+7940 3333333333333333333333333333333333333333333333333333333
+7941 3333333333333333333333333333333333333333333333333333333
+7942 3333333333333333333333333333333333333333333333333333333
+7943 3333333333333333333333333333333333333333333333333333333
+7944 3333333333333333333333333333333333333333333333333333333
+7945 3333333333333333333333333333333333333333333333333333333
+7946 3333333333333333333333333333333333333333333333333333333
+7947 3333333333333333333333333333333333333333333333333333333
+7948 3333333333333333333333333333333333333333333333333333333
+7949 3333333333333333333333333333333333333333333333333333333
+7950 3333333333333333333333333333333333333333333333333333333
+7951 3333333333333333333333333333333333333333333333333333333
+7952 3333333333333333333333333333333333333333333333333333333
+7953 3333333333333333333333333333333333333333333333333333333
+7954 3333333333333333333333333333333333333333333333333333333
+7955 3333333333333333333333333333333333333333333333333333333
+7956 3333333333333333333333333333333333333333333333333333333
+7957 3333333333333333333333333333333333333333333333333333333
+7958 3333333333333333333333333333333333333333333333333333333
+7959 3333333333333333333333333333333333333333333333333333333
+7960 3333333333333333333333333333333333333333333333333333333
+7961 3333333333333333333333333333333333333333333333333333333
+7962 3333333333333333333333333333333333333333333333333333333
+7963 3333333333333333333333333333333333333333333333333333333
+7964 3333333333333333333333333333333333333333333333333333333
+7965 3333333333333333333333333333333333333333333333333333333
+7966 3333333333333333333333333333333333333333333333333333333
+7967 3333333333333333333333333333333333333333333333333333333
+7968 3333333333333333333333333333333333333333333333333333333
+7969 3333333333333333333333333333333333333333333333333333333
+7970 3333333333333333333333333333333333333333333333333333333
+7971 3333333333333333333333333333333333333333333333333333333
+7972 3333333333333333333333333333333333333333333333333333333
+7973 3333333333333333333333333333333333333333333333333333333
+7974 3333333333333333333333333333333333333333333333333333333
+7975 3333333333333333333333333333333333333333333333333333333
+7976 3333333333333333333333333333333333333333333333333333333
+7977 3333333333333333333333333333333333333333333333333333333
+7978 3333333333333333333333333333333333333333333333333333333
+7979 3333333333333333333333333333333333333333333333333333333
+7980 3333333333333333333333333333333333333333333333333333333
+7981 3333333333333333333333333333333333333333333333333333333
+7982 3333333333333333333333333333333333333333333333333333333
+7983 3333333333333333333333333333333333333333333333333333333
+7984 3333333333333333333333333333333333333333333333333333333
+7985 3333333333333333333333333333333333333333333333333333333
+7986 3333333333333333333333333333333333333333333333333333333
+7987 3333333333333333333333333333333333333333333333333333333
+7988 3333333333333333333333333333333333333333333333333333333
+7989 3333333333333333333333333333333333333333333333333333333
+7990 3333333333333333333333333333333333333333333333333333333
+7991 3333333333333333333333333333333333333333333333333333333
+7992 3333333333333333333333333333333333333333333333333333333
+7993 3333333333333333333333333333333333333333333333333333333
+7994 3333333333333333333333333333333333333333333333333333333
+7995 3333333333333333333333333333333333333333333333333333333
+7996 3333333333333333333333333333333333333333333333333333333
+7997 3333333333333333333333333333333333333333333333333333333
+7998 3333333333333333333333333333333333333333333333333333333
+7999 3333333333333333333333333333333333333333333333333333333
+8000 3333333333333333333333333333333333333333333333333333333
+8001 3333333333333333333333333333333333333333333333333333333
+8002 3333333333333333333333333333333333333333333333333333333
+8003 3333333333333333333333333333333333333333333333333333333
+8004 3333333333333333333333333333333333333333333333333333333
+8005 3333333333333333333333333333333333333333333333333333333
+8006 3333333333333333333333333333333333333333333333333333333
+8007 3333333333333333333333333333333333333333333333333333333
+8008 3333333333333333333333333333333333333333333333333333333
+8009 3333333333333333333333333333333333333333333333333333333
+8010 3333333333333333333333333333333333333333333333333333333
+8011 3333333333333333333333333333333333333333333333333333333
+8012 3333333333333333333333333333333333333333333333333333333
+8013 3333333333333333333333333333333333333333333333333333333
+8014 3333333333333333333333333333333333333333333333333333333
+8015 3333333333333333333333333333333333333333333333333333333
+8016 3333333333333333333333333333333333333333333333333333333
+8017 3333333333333333333333333333333333333333333333333333333
+8018 3333333333333333333333333333333333333333333333333333333
+8019 3333333333333333333333333333333333333333333333333333333
+8020 3333333333333333333333333333333333333333333333333333333
+8021 3333333333333333333333333333333333333333333333333333333
+8022 3333333333333333333333333333333333333333333333333333333
+8023 3333333333333333333333333333333333333333333333333333333
+8024 3333333333333333333333333333333333333333333333333333333
+8025 3333333333333333333333333333333333333333333333333333333
+8026 3333333333333333333333333333333333333333333333333333333
+8027 3333333333333333333333333333333333333333333333333333333
+8028 3333333333333333333333333333333333333333333333333333333
+8029 3333333333333333333333333333333333333333333333333333333
+8030 3333333333333333333333333333333333333333333333333333333
+8031 3333333333333333333333333333333333333333333333333333333
+8032 3333333333333333333333333333333333333333333333333333333
+8033 3333333333333333333333333333333333333333333333333333333
+8034 3333333333333333333333333333333333333333333333333333333
+8035 3333333333333333333333333333333333333333333333333333333
+8036 3333333333333333333333333333333333333333333333333333333
+8037 3333333333333333333333333333333333333333333333333333333
+8038 3333333333333333333333333333333333333333333333333333333
+8039 3333333333333333333333333333333333333333333333333333333
+8040 3333333333333333333333333333333333333333333333333333333
+8041 3333333333333333333333333333333333333333333333333333333
+8042 3333333333333333333333333333333333333333333333333333333
+8043 3333333333333333333333333333333333333333333333333333333
+8044 3333333333333333333333333333333333333333333333333333333
+8045 3333333333333333333333333333333333333333333333333333333
+8046 3333333333333333333333333333333333333333333333333333333
+8047 3333333333333333333333333333333333333333333333333333333
+8048 3333333333333333333333333333333333333333333333333333333
+8049 3333333333333333333333333333333333333333333333333333333
+8050 3333333333333333333333333333333333333333333333333333333
+8051 3333333333333333333333333333333333333333333333333333333
+8052 3333333333333333333333333333333333333333333333333333333
+8053 3333333333333333333333333333333333333333333333333333333
+8054 3333333333333333333333333333333333333333333333333333333
+8055 3333333333333333333333333333333333333333333333333333333
+8056 3333333333333333333333333333333333333333333333333333333
+8057 3333333333333333333333333333333333333333333333333333333
+8058 3333333333333333333333333333333333333333333333333333333
+8059 3333333333333333333333333333333333333333333333333333333
+8060 3333333333333333333333333333333333333333333333333333333
+8061 3333333333333333333333333333333333333333333333333333333
+8062 3333333333333333333333333333333333333333333333333333333
+8063 3333333333333333333333333333333333333333333333333333333
+8064 3333333333333333333333333333333333333333333333333333333
+8065 3333333333333333333333333333333333333333333333333333333
+8066 3333333333333333333333333333333333333333333333333333333
+8067 3333333333333333333333333333333333333333333333333333333
+8068 3333333333333333333333333333333333333333333333333333333
+8069 3333333333333333333333333333333333333333333333333333333
+8070 3333333333333333333333333333333333333333333333333333333
+8071 3333333333333333333333333333333333333333333333333333333
+8072 3333333333333333333333333333333333333333333333333333333
+8073 3333333333333333333333333333333333333333333333333333333
+8074 3333333333333333333333333333333333333333333333333333333
+8075 3333333333333333333333333333333333333333333333333333333
+8076 3333333333333333333333333333333333333333333333333333333
+8077 3333333333333333333333333333333333333333333333333333333
+8078 3333333333333333333333333333333333333333333333333333333
+8079 3333333333333333333333333333333333333333333333333333333
+8080 3333333333333333333333333333333333333333333333333333333
+8081 3333333333333333333333333333333333333333333333333333333
+8082 3333333333333333333333333333333333333333333333333333333
+8083 3333333333333333333333333333333333333333333333333333333
+8084 3333333333333333333333333333333333333333333333333333333
+8085 3333333333333333333333333333333333333333333333333333333
+8086 3333333333333333333333333333333333333333333333333333333
+8087 3333333333333333333333333333333333333333333333333333333
+8088 3333333333333333333333333333333333333333333333333333333
+8089 3333333333333333333333333333333333333333333333333333333
+8090 3333333333333333333333333333333333333333333333333333333
+8091 3333333333333333333333333333333333333333333333333333333
+8092 3333333333333333333333333333333333333333333333333333333
+8093 3333333333333333333333333333333333333333333333333333333
+8094 3333333333333333333333333333333333333333333333333333333
+8095 3333333333333333333333333333333333333333333333333333333
+8096 3333333333333333333333333333333333333333333333333333333
+8097 3333333333333333333333333333333333333333333333333333333
+8098 3333333333333333333333333333333333333333333333333333333
+8099 3333333333333333333333333333333333333333333333333333333
+8100 3333333333333333333333333333333333333333333333333333333
+8101 3333333333333333333333333333333333333333333333333333333
+8102 3333333333333333333333333333333333333333333333333333333
+8103 3333333333333333333333333333333333333333333333333333333
+8104 3333333333333333333333333333333333333333333333333333333
+8105 3333333333333333333333333333333333333333333333333333333
+8106 3333333333333333333333333333333333333333333333333333333
+8107 3333333333333333333333333333333333333333333333333333333
+8108 3333333333333333333333333333333333333333333333333333333
+8109 3333333333333333333333333333333333333333333333333333333
+8110 3333333333333333333333333333333333333333333333333333333
+8111 3333333333333333333333333333333333333333333333333333333
+8112 3333333333333333333333333333333333333333333333333333333
+8113 3333333333333333333333333333333333333333333333333333333
+8114 3333333333333333333333333333333333333333333333333333333
+8115 3333333333333333333333333333333333333333333333333333333
+8116 3333333333333333333333333333333333333333333333333333333
+8117 3333333333333333333333333333333333333333333333333333333
+8118 3333333333333333333333333333333333333333333333333333333
+8119 3333333333333333333333333333333333333333333333333333333
+8120 3333333333333333333333333333333333333333333333333333333
+8121 3333333333333333333333333333333333333333333333333333333
+8122 3333333333333333333333333333333333333333333333333333333
+8123 3333333333333333333333333333333333333333333333333333333
+8124 3333333333333333333333333333333333333333333333333333333
+8125 3333333333333333333333333333333333333333333333333333333
+8126 3333333333333333333333333333333333333333333333333333333
+8127 3333333333333333333333333333333333333333333333333333333
+8128 3333333333333333333333333333333333333333333333333333333
+8129 3333333333333333333333333333333333333333333333333333333
+8130 3333333333333333333333333333333333333333333333333333333
+8131 3333333333333333333333333333333333333333333333333333333
+8132 3333333333333333333333333333333333333333333333333333333
+8133 3333333333333333333333333333333333333333333333333333333
+8134 3333333333333333333333333333333333333333333333333333333
+8135 3333333333333333333333333333333333333333333333333333333
+8136 3333333333333333333333333333333333333333333333333333333
+8137 3333333333333333333333333333333333333333333333333333333
+8138 3333333333333333333333333333333333333333333333333333333
+8139 3333333333333333333333333333333333333333333333333333333
+8140 3333333333333333333333333333333333333333333333333333333
+8141 3333333333333333333333333333333333333333333333333333333
+8142 3333333333333333333333333333333333333333333333333333333
+8143 3333333333333333333333333333333333333333333333333333333
+8144 3333333333333333333333333333333333333333333333333333333
+8145 3333333333333333333333333333333333333333333333333333333
+8146 3333333333333333333333333333333333333333333333333333333
+8147 3333333333333333333333333333333333333333333333333333333
+8148 3333333333333333333333333333333333333333333333333333333
+8149 3333333333333333333333333333333333333333333333333333333
+8150 3333333333333333333333333333333333333333333333333333333
+8151 3333333333333333333333333333333333333333333333333333333
+8152 3333333333333333333333333333333333333333333333333333333
+8153 3333333333333333333333333333333333333333333333333333333
+8154 3333333333333333333333333333333333333333333333333333333
+8155 3333333333333333333333333333333333333333333333333333333
+8156 3333333333333333333333333333333333333333333333333333333
+8157 3333333333333333333333333333333333333333333333333333333
+8158 3333333333333333333333333333333333333333333333333333333
+8159 3333333333333333333333333333333333333333333333333333333
+8160 3333333333333333333333333333333333333333333333333333333
+8161 3333333333333333333333333333333333333333333333333333333
+8162 3333333333333333333333333333333333333333333333333333333
+8163 3333333333333333333333333333333333333333333333333333333
+8164 3333333333333333333333333333333333333333333333333333333
+8165 3333333333333333333333333333333333333333333333333333333
+8166 3333333333333333333333333333333333333333333333333333333
+8167 3333333333333333333333333333333333333333333333333333333
+8168 3333333333333333333333333333333333333333333333333333333
+8169 3333333333333333333333333333333333333333333333333333333
+8170 3333333333333333333333333333333333333333333333333333333
+8171 3333333333333333333333333333333333333333333333333333333
+8172 3333333333333333333333333333333333333333333333333333333
+8173 3333333333333333333333333333333333333333333333333333333
+8174 3333333333333333333333333333333333333333333333333333333
+8175 3333333333333333333333333333333333333333333333333333333
+8176 3333333333333333333333333333333333333333333333333333333
+8177 3333333333333333333333333333333333333333333333333333333
+8178 3333333333333333333333333333333333333333333333333333333
+8179 3333333333333333333333333333333333333333333333333333333
+8180 3333333333333333333333333333333333333333333333333333333
+8181 3333333333333333333333333333333333333333333333333333333
+8182 3333333333333333333333333333333333333333333333333333333
+8183 3333333333333333333333333333333333333333333333333333333
+8184 3333333333333333333333333333333333333333333333333333333
+8185 3333333333333333333333333333333333333333333333333333333
+8186 3333333333333333333333333333333333333333333333333333333
+8187 3333333333333333333333333333333333333333333333333333333
+8188 3333333333333333333333333333333333333333333333333333333
+8189 3333333333333333333333333333333333333333333333333333333
+8190 3333333333333333333333333333333333333333333333333333333
+8191 3333333333333333333333333333333333333333333333333333333
+8192 3333333333333333333333333333333333333333333333333333333
+8193 3333333333333333333333333333333333333333333333333333333
+8194 3333333333333333333333333333333333333333333333333333333
+8195 3333333333333333333333333333333333333333333333333333333
+8196 3333333333333333333333333333333333333333333333333333333
+8197 3333333333333333333333333333333333333333333333333333333
+8198 3333333333333333333333333333333333333333333333333333333
+8199 3333333333333333333333333333333333333333333333333333333
+8200 3333333333333333333333333333333333333333333333333333333
+8201 3333333333333333333333333333333333333333333333333333333
+8202 3333333333333333333333333333333333333333333333333333333
+8203 3333333333333333333333333333333333333333333333333333333
+8204 3333333333333333333333333333333333333333333333333333333
+8205 3333333333333333333333333333333333333333333333333333333
+8206 3333333333333333333333333333333333333333333333333333333
+8207 3333333333333333333333333333333333333333333333333333333
+8208 3333333333333333333333333333333333333333333333333333333
+8209 3333333333333333333333333333333333333333333333333333333
+8210 3333333333333333333333333333333333333333333333333333333
+8211 3333333333333333333333333333333333333333333333333333333
+8212 3333333333333333333333333333333333333333333333333333333
+8213 3333333333333333333333333333333333333333333333333333333
+8214 3333333333333333333333333333333333333333333333333333333
+8215 3333333333333333333333333333333333333333333333333333333
+8216 3333333333333333333333333333333333333333333333333333333
+8217 3333333333333333333333333333333333333333333333333333333
+8218 3333333333333333333333333333333333333333333333333333333
+8219 3333333333333333333333333333333333333333333333333333333
+8220 3333333333333333333333333333333333333333333333333333333
+8221 3333333333333333333333333333333333333333333333333333333
+8222 3333333333333333333333333333333333333333333333333333333
+8223 3333333333333333333333333333333333333333333333333333333
+8224 3333333333333333333333333333333333333333333333333333333
+8225 3333333333333333333333333333333333333333333333333333333
+8226 3333333333333333333333333333333333333333333333333333333
+8227 3333333333333333333333333333333333333333333333333333333
+8228 3333333333333333333333333333333333333333333333333333333
+8229 3333333333333333333333333333333333333333333333333333333
+8230 3333333333333333333333333333333333333333333333333333333
+8231 3333333333333333333333333333333333333333333333333333333
+8232 3333333333333333333333333333333333333333333333333333333
+8233 3333333333333333333333333333333333333333333333333333333
+8234 3333333333333333333333333333333333333333333333333333333
+8235 3333333333333333333333333333333333333333333333333333333
+8236 3333333333333333333333333333333333333333333333333333333
+8237 3333333333333333333333333333333333333333333333333333333
+8238 3333333333333333333333333333333333333333333333333333333
+8239 3333333333333333333333333333333333333333333333333333333
+8240 3333333333333333333333333333333333333333333333333333333
+8241 3333333333333333333333333333333333333333333333333333333
+8242 3333333333333333333333333333333333333333333333333333333
+8243 3333333333333333333333333333333333333333333333333333333
+8244 3333333333333333333333333333333333333333333333333333333
+8245 3333333333333333333333333333333333333333333333333333333
+8246 3333333333333333333333333333333333333333333333333333333
+8247 3333333333333333333333333333333333333333333333333333333
+8248 3333333333333333333333333333333333333333333333333333333
+8249 3333333333333333333333333333333333333333333333333333333
+8250 3333333333333333333333333333333333333333333333333333333
+8251 3333333333333333333333333333333333333333333333333333333
+8252 3333333333333333333333333333333333333333333333333333333
+8253 3333333333333333333333333333333333333333333333333333333
+8254 3333333333333333333333333333333333333333333333333333333
+8255 3333333333333333333333333333333333333333333333333333333
+8256 3333333333333333333333333333333333333333333333333333333
+8257 3333333333333333333333333333333333333333333333333333333
+8258 3333333333333333333333333333333333333333333333333333333
+8259 3333333333333333333333333333333333333333333333333333333
+8260 3333333333333333333333333333333333333333333333333333333
+8261 3333333333333333333333333333333333333333333333333333333
+8262 3333333333333333333333333333333333333333333333333333333
+8263 3333333333333333333333333333333333333333333333333333333
+8264 3333333333333333333333333333333333333333333333333333333
+8265 3333333333333333333333333333333333333333333333333333333
+8266 3333333333333333333333333333333333333333333333333333333
+8267 3333333333333333333333333333333333333333333333333333333
+8268 3333333333333333333333333333333333333333333333333333333
+8269 3333333333333333333333333333333333333333333333333333333
+8270 3333333333333333333333333333333333333333333333333333333
+8271 3333333333333333333333333333333333333333333333333333333
+8272 3333333333333333333333333333333333333333333333333333333
+8273 3333333333333333333333333333333333333333333333333333333
+8274 3333333333333333333333333333333333333333333333333333333
+8275 3333333333333333333333333333333333333333333333333333333
+8276 3333333333333333333333333333333333333333333333333333333
+8277 3333333333333333333333333333333333333333333333333333333
+8278 3333333333333333333333333333333333333333333333333333333
+8279 3333333333333333333333333333333333333333333333333333333
+8280 3333333333333333333333333333333333333333333333333333333
+8281 3333333333333333333333333333333333333333333333333333333
+8282 3333333333333333333333333333333333333333333333333333333
+8283 3333333333333333333333333333333333333333333333333333333
+8284 3333333333333333333333333333333333333333333333333333333
+8285 3333333333333333333333333333333333333333333333333333333
+8286 3333333333333333333333333333333333333333333333333333333
+8287 3333333333333333333333333333333333333333333333333333333
+8288 3333333333333333333333333333333333333333333333333333333
+8289 3333333333333333333333333333333333333333333333333333333
+8290 3333333333333333333333333333333333333333333333333333333
+8291 3333333333333333333333333333333333333333333333333333333
+8292 3333333333333333333333333333333333333333333333333333333
+8293 3333333333333333333333333333333333333333333333333333333
+8294 3333333333333333333333333333333333333333333333333333333
+8295 3333333333333333333333333333333333333333333333333333333
+8296 3333333333333333333333333333333333333333333333333333333
+8297 3333333333333333333333333333333333333333333333333333333
+8298 3333333333333333333333333333333333333333333333333333333
+8299 3333333333333333333333333333333333333333333333333333333
+8300 3333333333333333333333333333333333333333333333333333333
+8301 3333333333333333333333333333333333333333333333333333333
+8302 3333333333333333333333333333333333333333333333333333333
+8303 3333333333333333333333333333333333333333333333333333333
+8304 3333333333333333333333333333333333333333333333333333333
+8305 3333333333333333333333333333333333333333333333333333333
+8306 3333333333333333333333333333333333333333333333333333333
+8307 3333333333333333333333333333333333333333333333333333333
+8308 3333333333333333333333333333333333333333333333333333333
+8309 3333333333333333333333333333333333333333333333333333333
+8310 3333333333333333333333333333333333333333333333333333333
+8311 3333333333333333333333333333333333333333333333333333333
+8312 3333333333333333333333333333333333333333333333333333333
+8313 3333333333333333333333333333333333333333333333333333333
+8314 3333333333333333333333333333333333333333333333333333333
+8315 3333333333333333333333333333333333333333333333333333333
+8316 3333333333333333333333333333333333333333333333333333333
+8317 3333333333333333333333333333333333333333333333333333333
+8318 3333333333333333333333333333333333333333333333333333333
+8319 3333333333333333333333333333333333333333333333333333333
+8320 3333333333333333333333333333333333333333333333333333333
+8321 3333333333333333333333333333333333333333333333333333333
+8322 3333333333333333333333333333333333333333333333333333333
+8323 3333333333333333333333333333333333333333333333333333333
+8324 3333333333333333333333333333333333333333333333333333333
+8325 3333333333333333333333333333333333333333333333333333333
+8326 3333333333333333333333333333333333333333333333333333333
+8327 3333333333333333333333333333333333333333333333333333333
+8328 3333333333333333333333333333333333333333333333333333333
+8329 3333333333333333333333333333333333333333333333333333333
+8330 3333333333333333333333333333333333333333333333333333333
+8331 3333333333333333333333333333333333333333333333333333333
+8332 3333333333333333333333333333333333333333333333333333333
+8333 3333333333333333333333333333333333333333333333333333333
+8334 3333333333333333333333333333333333333333333333333333333
+8335 3333333333333333333333333333333333333333333333333333333
+8336 3333333333333333333333333333333333333333333333333333333
+8337 3333333333333333333333333333333333333333333333333333333
+8338 3333333333333333333333333333333333333333333333333333333
+8339 3333333333333333333333333333333333333333333333333333333
+8340 3333333333333333333333333333333333333333333333333333333
+8341 3333333333333333333333333333333333333333333333333333333
+8342 3333333333333333333333333333333333333333333333333333333
+8343 3333333333333333333333333333333333333333333333333333333
+8344 3333333333333333333333333333333333333333333333333333333
+8345 3333333333333333333333333333333333333333333333333333333
+8346 3333333333333333333333333333333333333333333333333333333
+8347 3333333333333333333333333333333333333333333333333333333
+8348 3333333333333333333333333333333333333333333333333333333
+8349 3333333333333333333333333333333333333333333333333333333
+8350 3333333333333333333333333333333333333333333333333333333
+8351 3333333333333333333333333333333333333333333333333333333
+8352 3333333333333333333333333333333333333333333333333333333
+8353 3333333333333333333333333333333333333333333333333333333
+8354 3333333333333333333333333333333333333333333333333333333
+8355 3333333333333333333333333333333333333333333333333333333
+8356 3333333333333333333333333333333333333333333333333333333
+8357 3333333333333333333333333333333333333333333333333333333
+8358 3333333333333333333333333333333333333333333333333333333
+8359 3333333333333333333333333333333333333333333333333333333
+8360 3333333333333333333333333333333333333333333333333333333
+8361 3333333333333333333333333333333333333333333333333333333
+8362 3333333333333333333333333333333333333333333333333333333
+8363 3333333333333333333333333333333333333333333333333333333
+8364 3333333333333333333333333333333333333333333333333333333
+8365 3333333333333333333333333333333333333333333333333333333
+8366 3333333333333333333333333333333333333333333333333333333
+8367 3333333333333333333333333333333333333333333333333333333
+8368 3333333333333333333333333333333333333333333333333333333
+8369 3333333333333333333333333333333333333333333333333333333
+8370 3333333333333333333333333333333333333333333333333333333
+8371 3333333333333333333333333333333333333333333333333333333
+8372 3333333333333333333333333333333333333333333333333333333
+8373 3333333333333333333333333333333333333333333333333333333
+8374 3333333333333333333333333333333333333333333333333333333
+8375 3333333333333333333333333333333333333333333333333333333
+8376 3333333333333333333333333333333333333333333333333333333
+8377 3333333333333333333333333333333333333333333333333333333
+8378 3333333333333333333333333333333333333333333333333333333
+8379 3333333333333333333333333333333333333333333333333333333
+8380 3333333333333333333333333333333333333333333333333333333
+8381 3333333333333333333333333333333333333333333333333333333
+8382 3333333333333333333333333333333333333333333333333333333
+8383 3333333333333333333333333333333333333333333333333333333
+8384 3333333333333333333333333333333333333333333333333333333
+8385 3333333333333333333333333333333333333333333333333333333
+8386 3333333333333333333333333333333333333333333333333333333
+8387 3333333333333333333333333333333333333333333333333333333
+8388 3333333333333333333333333333333333333333333333333333333
+8389 3333333333333333333333333333333333333333333333333333333
+8390 3333333333333333333333333333333333333333333333333333333
+8391 3333333333333333333333333333333333333333333333333333333
+8392 3333333333333333333333333333333333333333333333333333333
+8393 3333333333333333333333333333333333333333333333333333333
+8394 3333333333333333333333333333333333333333333333333333333
+8395 3333333333333333333333333333333333333333333333333333333
+8396 3333333333333333333333333333333333333333333333333333333
+8397 3333333333333333333333333333333333333333333333333333333
+8398 3333333333333333333333333333333333333333333333333333333
+8399 3333333333333333333333333333333333333333333333333333333
+8400 3333333333333333333333333333333333333333333333333333333
+8401 3333333333333333333333333333333333333333333333333333333
+8402 3333333333333333333333333333333333333333333333333333333
+8403 3333333333333333333333333333333333333333333333333333333
+8404 3333333333333333333333333333333333333333333333333333333
+8405 3333333333333333333333333333333333333333333333333333333
+8406 3333333333333333333333333333333333333333333333333333333
+8407 3333333333333333333333333333333333333333333333333333333
+8408 3333333333333333333333333333333333333333333333333333333
+8409 3333333333333333333333333333333333333333333333333333333
+8410 3333333333333333333333333333333333333333333333333333333
+8411 3333333333333333333333333333333333333333333333333333333
+8412 3333333333333333333333333333333333333333333333333333333
+8413 3333333333333333333333333333333333333333333333333333333
+8414 3333333333333333333333333333333333333333333333333333333
+8415 3333333333333333333333333333333333333333333333333333333
+8416 3333333333333333333333333333333333333333333333333333333
+8417 3333333333333333333333333333333333333333333333333333333
+8418 3333333333333333333333333333333333333333333333333333333
+8419 3333333333333333333333333333333333333333333333333333333
+8420 3333333333333333333333333333333333333333333333333333333
+8421 3333333333333333333333333333333333333333333333333333333
+8422 3333333333333333333333333333333333333333333333333333333
+8423 3333333333333333333333333333333333333333333333333333333
+8424 3333333333333333333333333333333333333333333333333333333
+8425 3333333333333333333333333333333333333333333333333333333
+8426 3333333333333333333333333333333333333333333333333333333
+8427 3333333333333333333333333333333333333333333333333333333
+8428 3333333333333333333333333333333333333333333333333333333
+8429 3333333333333333333333333333333333333333333333333333333
+8430 3333333333333333333333333333333333333333333333333333333
+8431 3333333333333333333333333333333333333333333333333333333
+8432 3333333333333333333333333333333333333333333333333333333
+8433 3333333333333333333333333333333333333333333333333333333
+8434 3333333333333333333333333333333333333333333333333333333
+8435 3333333333333333333333333333333333333333333333333333333
+8436 3333333333333333333333333333333333333333333333333333333
+8437 3333333333333333333333333333333333333333333333333333333
+8438 3333333333333333333333333333333333333333333333333333333
+8439 3333333333333333333333333333333333333333333333333333333
+8440 3333333333333333333333333333333333333333333333333333333
+8441 3333333333333333333333333333333333333333333333333333333
+8442 3333333333333333333333333333333333333333333333333333333
+8443 3333333333333333333333333333333333333333333333333333333
+8444 3333333333333333333333333333333333333333333333333333333
+8445 3333333333333333333333333333333333333333333333333333333
+8446 3333333333333333333333333333333333333333333333333333333
+8447 3333333333333333333333333333333333333333333333333333333
+8448 3333333333333333333333333333333333333333333333333333333
+8449 3333333333333333333333333333333333333333333333333333333
+8450 3333333333333333333333333333333333333333333333333333333
+8451 3333333333333333333333333333333333333333333333333333333
+8452 3333333333333333333333333333333333333333333333333333333
+8453 3333333333333333333333333333333333333333333333333333333
+8454 3333333333333333333333333333333333333333333333333333333
+8455 3333333333333333333333333333333333333333333333333333333
+8456 3333333333333333333333333333333333333333333333333333333
+8457 3333333333333333333333333333333333333333333333333333333
+8458 3333333333333333333333333333333333333333333333333333333
+8459 3333333333333333333333333333333333333333333333333333333
+8460 3333333333333333333333333333333333333333333333333333333
+8461 3333333333333333333333333333333333333333333333333333333
+8462 3333333333333333333333333333333333333333333333333333333
+8463 3333333333333333333333333333333333333333333333333333333
+8464 3333333333333333333333333333333333333333333333333333333
+8465 3333333333333333333333333333333333333333333333333333333
+8466 3333333333333333333333333333333333333333333333333333333
+8467 3333333333333333333333333333333333333333333333333333333
+8468 3333333333333333333333333333333333333333333333333333333
+8469 3333333333333333333333333333333333333333333333333333333
+8470 3333333333333333333333333333333333333333333333333333333
+8471 3333333333333333333333333333333333333333333333333333333
+8472 3333333333333333333333333333333333333333333333333333333
+8473 3333333333333333333333333333333333333333333333333333333
+8474 3333333333333333333333333333333333333333333333333333333
+8475 3333333333333333333333333333333333333333333333333333333
+8476 3333333333333333333333333333333333333333333333333333333
+8477 3333333333333333333333333333333333333333333333333333333
+8478 3333333333333333333333333333333333333333333333333333333
+8479 3333333333333333333333333333333333333333333333333333333
+8480 3333333333333333333333333333333333333333333333333333333
+8481 3333333333333333333333333333333333333333333333333333333
+8482 3333333333333333333333333333333333333333333333333333333
+8483 3333333333333333333333333333333333333333333333333333333
+8484 3333333333333333333333333333333333333333333333333333333
+8485 3333333333333333333333333333333333333333333333333333333
+8486 3333333333333333333333333333333333333333333333333333333
+8487 3333333333333333333333333333333333333333333333333333333
+8488 3333333333333333333333333333333333333333333333333333333
+8489 3333333333333333333333333333333333333333333333333333333
+8490 3333333333333333333333333333333333333333333333333333333
+8491 3333333333333333333333333333333333333333333333333333333
+8492 3333333333333333333333333333333333333333333333333333333
+8493 3333333333333333333333333333333333333333333333333333333
+8494 3333333333333333333333333333333333333333333333333333333
+8495 3333333333333333333333333333333333333333333333333333333
+8496 3333333333333333333333333333333333333333333333333333333
+8497 3333333333333333333333333333333333333333333333333333333
+8498 3333333333333333333333333333333333333333333333333333333
+8499 3333333333333333333333333333333333333333333333333333333
+8500 3333333333333333333333333333333333333333333333333333333
+8501 3333333333333333333333333333333333333333333333333333333
+8502 3333333333333333333333333333333333333333333333333333333
+8503 3333333333333333333333333333333333333333333333333333333
+8504 3333333333333333333333333333333333333333333333333333333
+8505 3333333333333333333333333333333333333333333333333333333
+8506 3333333333333333333333333333333333333333333333333333333
+8507 3333333333333333333333333333333333333333333333333333333
+8508 3333333333333333333333333333333333333333333333333333333
+8509 3333333333333333333333333333333333333333333333333333333
+8510 3333333333333333333333333333333333333333333333333333333
+8511 3333333333333333333333333333333333333333333333333333333
+8512 3333333333333333333333333333333333333333333333333333333
+8513 3333333333333333333333333333333333333333333333333333333
+8514 3333333333333333333333333333333333333333333333333333333
+8515 3333333333333333333333333333333333333333333333333333333
+8516 3333333333333333333333333333333333333333333333333333333
+8517 3333333333333333333333333333333333333333333333333333333
+8518 3333333333333333333333333333333333333333333333333333333
+8519 3333333333333333333333333333333333333333333333333333333
+8520 3333333333333333333333333333333333333333333333333333333
+8521 3333333333333333333333333333333333333333333333333333333
+8522 3333333333333333333333333333333333333333333333333333333
+8523 3333333333333333333333333333333333333333333333333333333
+8524 3333333333333333333333333333333333333333333333333333333
+8525 3333333333333333333333333333333333333333333333333333333
+8526 3333333333333333333333333333333333333333333333333333333
+8527 3333333333333333333333333333333333333333333333333333333
+8528 3333333333333333333333333333333333333333333333333333333
+8529 3333333333333333333333333333333333333333333333333333333
+8530 3333333333333333333333333333333333333333333333333333333
+8531 3333333333333333333333333333333333333333333333333333333
+8532 3333333333333333333333333333333333333333333333333333333
+8533 3333333333333333333333333333333333333333333333333333333
+8534 3333333333333333333333333333333333333333333333333333333
+8535 3333333333333333333333333333333333333333333333333333333
+8536 3333333333333333333333333333333333333333333333333333333
+8537 3333333333333333333333333333333333333333333333333333333
+8538 3333333333333333333333333333333333333333333333333333333
+8539 3333333333333333333333333333333333333333333333333333333
+8540 3333333333333333333333333333333333333333333333333333333
+8541 3333333333333333333333333333333333333333333333333333333
+8542 3333333333333333333333333333333333333333333333333333333
+8543 3333333333333333333333333333333333333333333333333333333
+8544 3333333333333333333333333333333333333333333333333333333
+8545 3333333333333333333333333333333333333333333333333333333
+8546 3333333333333333333333333333333333333333333333333333333
+8547 3333333333333333333333333333333333333333333333333333333
+8548 3333333333333333333333333333333333333333333333333333333
+8549 3333333333333333333333333333333333333333333333333333333
+8550 3333333333333333333333333333333333333333333333333333333
+8551 3333333333333333333333333333333333333333333333333333333
+8552 3333333333333333333333333333333333333333333333333333333
+8553 3333333333333333333333333333333333333333333333333333333
+8554 3333333333333333333333333333333333333333333333333333333
+8555 3333333333333333333333333333333333333333333333333333333
+8556 3333333333333333333333333333333333333333333333333333333
+8557 3333333333333333333333333333333333333333333333333333333
+8558 3333333333333333333333333333333333333333333333333333333
+8559 3333333333333333333333333333333333333333333333333333333
+8560 3333333333333333333333333333333333333333333333333333333
+8561 3333333333333333333333333333333333333333333333333333333
+8562 3333333333333333333333333333333333333333333333333333333
+8563 3333333333333333333333333333333333333333333333333333333
+8564 3333333333333333333333333333333333333333333333333333333
+8565 3333333333333333333333333333333333333333333333333333333
+8566 3333333333333333333333333333333333333333333333333333333
+8567 3333333333333333333333333333333333333333333333333333333
+8568 3333333333333333333333333333333333333333333333333333333
+8569 3333333333333333333333333333333333333333333333333333333
+8570 3333333333333333333333333333333333333333333333333333333
+8571 3333333333333333333333333333333333333333333333333333333
+8572 3333333333333333333333333333333333333333333333333333333
+8573 3333333333333333333333333333333333333333333333333333333
+8574 3333333333333333333333333333333333333333333333333333333
+8575 3333333333333333333333333333333333333333333333333333333
+8576 3333333333333333333333333333333333333333333333333333333
+8577 3333333333333333333333333333333333333333333333333333333
+8578 3333333333333333333333333333333333333333333333333333333
+8579 3333333333333333333333333333333333333333333333333333333
+8580 3333333333333333333333333333333333333333333333333333333
+8581 3333333333333333333333333333333333333333333333333333333
+8582 3333333333333333333333333333333333333333333333333333333
+8583 3333333333333333333333333333333333333333333333333333333
+8584 3333333333333333333333333333333333333333333333333333333
+8585 3333333333333333333333333333333333333333333333333333333
+8586 3333333333333333333333333333333333333333333333333333333
+8587 3333333333333333333333333333333333333333333333333333333
+8588 3333333333333333333333333333333333333333333333333333333
+8589 3333333333333333333333333333333333333333333333333333333
+8590 3333333333333333333333333333333333333333333333333333333
+8591 3333333333333333333333333333333333333333333333333333333
+8592 3333333333333333333333333333333333333333333333333333333
+8593 3333333333333333333333333333333333333333333333333333333
+8594 3333333333333333333333333333333333333333333333333333333
+8595 3333333333333333333333333333333333333333333333333333333
+8596 3333333333333333333333333333333333333333333333333333333
+8597 3333333333333333333333333333333333333333333333333333333
+8598 3333333333333333333333333333333333333333333333333333333
+8599 3333333333333333333333333333333333333333333333333333333
+8600 3333333333333333333333333333333333333333333333333333333
+8601 3333333333333333333333333333333333333333333333333333333
+8602 3333333333333333333333333333333333333333333333333333333
+8603 3333333333333333333333333333333333333333333333333333333
+8604 3333333333333333333333333333333333333333333333333333333
+8605 3333333333333333333333333333333333333333333333333333333
+8606 3333333333333333333333333333333333333333333333333333333
+8607 3333333333333333333333333333333333333333333333333333333
+8608 3333333333333333333333333333333333333333333333333333333
+8609 3333333333333333333333333333333333333333333333333333333
+8610 3333333333333333333333333333333333333333333333333333333
+8611 3333333333333333333333333333333333333333333333333333333
+8612 3333333333333333333333333333333333333333333333333333333
+8613 3333333333333333333333333333333333333333333333333333333
+8614 3333333333333333333333333333333333333333333333333333333
+8615 3333333333333333333333333333333333333333333333333333333
+8616 3333333333333333333333333333333333333333333333333333333
+8617 3333333333333333333333333333333333333333333333333333333
+8618 3333333333333333333333333333333333333333333333333333333
+8619 3333333333333333333333333333333333333333333333333333333
+8620 3333333333333333333333333333333333333333333333333333333
+8621 3333333333333333333333333333333333333333333333333333333
+8622 3333333333333333333333333333333333333333333333333333333
+8623 3333333333333333333333333333333333333333333333333333333
+8624 3333333333333333333333333333333333333333333333333333333
+8625 3333333333333333333333333333333333333333333333333333333
+8626 3333333333333333333333333333333333333333333333333333333
+8627 3333333333333333333333333333333333333333333333333333333
+8628 3333333333333333333333333333333333333333333333333333333
+8629 3333333333333333333333333333333333333333333333333333333
+8630 3333333333333333333333333333333333333333333333333333333
+8631 3333333333333333333333333333333333333333333333333333333
+8632 3333333333333333333333333333333333333333333333333333333
+8633 3333333333333333333333333333333333333333333333333333333
+8634 3333333333333333333333333333333333333333333333333333333
+8635 3333333333333333333333333333333333333333333333333333333
+8636 3333333333333333333333333333333333333333333333333333333
+8637 3333333333333333333333333333333333333333333333333333333
+8638 3333333333333333333333333333333333333333333333333333333
+8639 3333333333333333333333333333333333333333333333333333333
+8640 3333333333333333333333333333333333333333333333333333333
+8641 3333333333333333333333333333333333333333333333333333333
+8642 3333333333333333333333333333333333333333333333333333333
+8643 3333333333333333333333333333333333333333333333333333333
+8644 3333333333333333333333333333333333333333333333333333333
+8645 3333333333333333333333333333333333333333333333333333333
+8646 3333333333333333333333333333333333333333333333333333333
+8647 3333333333333333333333333333333333333333333333333333333
+8648 3333333333333333333333333333333333333333333333333333333
+8649 3333333333333333333333333333333333333333333333333333333
+8650 3333333333333333333333333333333333333333333333333333333
+8651 3333333333333333333333333333333333333333333333333333333
+8652 3333333333333333333333333333333333333333333333333333333
+8653 3333333333333333333333333333333333333333333333333333333
+8654 3333333333333333333333333333333333333333333333333333333
+8655 3333333333333333333333333333333333333333333333333333333
+8656 3333333333333333333333333333333333333333333333333333333
+8657 3333333333333333333333333333333333333333333333333333333
+8658 3333333333333333333333333333333333333333333333333333333
+8659 3333333333333333333333333333333333333333333333333333333
+8660 3333333333333333333333333333333333333333333333333333333
+8661 3333333333333333333333333333333333333333333333333333333
+8662 3333333333333333333333333333333333333333333333333333333
+8663 3333333333333333333333333333333333333333333333333333333
+8664 3333333333333333333333333333333333333333333333333333333
+8665 3333333333333333333333333333333333333333333333333333333
+8666 3333333333333333333333333333333333333333333333333333333
+8667 3333333333333333333333333333333333333333333333333333333
+8668 3333333333333333333333333333333333333333333333333333333
+8669 3333333333333333333333333333333333333333333333333333333
+8670 3333333333333333333333333333333333333333333333333333333
+8671 3333333333333333333333333333333333333333333333333333333
+8672 3333333333333333333333333333333333333333333333333333333
+8673 3333333333333333333333333333333333333333333333333333333
+8674 3333333333333333333333333333333333333333333333333333333
+8675 3333333333333333333333333333333333333333333333333333333
+8676 3333333333333333333333333333333333333333333333333333333
+8677 3333333333333333333333333333333333333333333333333333333
+8678 3333333333333333333333333333333333333333333333333333333
+8679 3333333333333333333333333333333333333333333333333333333
+8680 3333333333333333333333333333333333333333333333333333333
+8681 3333333333333333333333333333333333333333333333333333333
+8682 3333333333333333333333333333333333333333333333333333333
+8683 3333333333333333333333333333333333333333333333333333333
+8684 3333333333333333333333333333333333333333333333333333333
+8685 3333333333333333333333333333333333333333333333333333333
+8686 3333333333333333333333333333333333333333333333333333333
+8687 3333333333333333333333333333333333333333333333333333333
+8688 3333333333333333333333333333333333333333333333333333333
+8689 3333333333333333333333333333333333333333333333333333333
+8690 3333333333333333333333333333333333333333333333333333333
+8691 3333333333333333333333333333333333333333333333333333333
+8692 3333333333333333333333333333333333333333333333333333333
+8693 3333333333333333333333333333333333333333333333333333333
+8694 3333333333333333333333333333333333333333333333333333333
+8695 3333333333333333333333333333333333333333333333333333333
+8696 3333333333333333333333333333333333333333333333333333333
+8697 3333333333333333333333333333333333333333333333333333333
+8698 3333333333333333333333333333333333333333333333333333333
+8699 3333333333333333333333333333333333333333333333333333333
+8700 3333333333333333333333333333333333333333333333333333333
+8701 3333333333333333333333333333333333333333333333333333333
+8702 3333333333333333333333333333333333333333333333333333333
+8703 3333333333333333333333333333333333333333333333333333333
+8704 3333333333333333333333333333333333333333333333333333333
+8705 3333333333333333333333333333333333333333333333333333333
+8706 3333333333333333333333333333333333333333333333333333333
+8707 3333333333333333333333333333333333333333333333333333333
+8708 3333333333333333333333333333333333333333333333333333333
+8709 3333333333333333333333333333333333333333333333333333333
+8710 3333333333333333333333333333333333333333333333333333333
+8711 3333333333333333333333333333333333333333333333333333333
+8712 3333333333333333333333333333333333333333333333333333333
+8713 3333333333333333333333333333333333333333333333333333333
+8714 3333333333333333333333333333333333333333333333333333333
+8715 3333333333333333333333333333333333333333333333333333333
+8716 3333333333333333333333333333333333333333333333333333333
+8717 3333333333333333333333333333333333333333333333333333333
+8718 3333333333333333333333333333333333333333333333333333333
+8719 3333333333333333333333333333333333333333333333333333333
+8720 3333333333333333333333333333333333333333333333333333333
+8721 3333333333333333333333333333333333333333333333333333333
+8722 3333333333333333333333333333333333333333333333333333333
+8723 3333333333333333333333333333333333333333333333333333333
+8724 3333333333333333333333333333333333333333333333333333333
+8725 3333333333333333333333333333333333333333333333333333333
+8726 3333333333333333333333333333333333333333333333333333333
+8727 3333333333333333333333333333333333333333333333333333333
+8728 3333333333333333333333333333333333333333333333333333333
+8729 3333333333333333333333333333333333333333333333333333333
+8730 3333333333333333333333333333333333333333333333333333333
+8731 3333333333333333333333333333333333333333333333333333333
+8732 3333333333333333333333333333333333333333333333333333333
+8733 3333333333333333333333333333333333333333333333333333333
+8734 3333333333333333333333333333333333333333333333333333333
+8735 3333333333333333333333333333333333333333333333333333333
+8736 3333333333333333333333333333333333333333333333333333333
+8737 3333333333333333333333333333333333333333333333333333333
+8738 3333333333333333333333333333333333333333333333333333333
+8739 3333333333333333333333333333333333333333333333333333333
+8740 3333333333333333333333333333333333333333333333333333333
+8741 3333333333333333333333333333333333333333333333333333333
+8742 3333333333333333333333333333333333333333333333333333333
+8743 3333333333333333333333333333333333333333333333333333333
+8744 3333333333333333333333333333333333333333333333333333333
+8745 3333333333333333333333333333333333333333333333333333333
+8746 3333333333333333333333333333333333333333333333333333333
+8747 3333333333333333333333333333333333333333333333333333333
+8748 3333333333333333333333333333333333333333333333333333333
+8749 3333333333333333333333333333333333333333333333333333333
+8750 3333333333333333333333333333333333333333333333333333333
+8751 3333333333333333333333333333333333333333333333333333333
+8752 3333333333333333333333333333333333333333333333333333333
+8753 3333333333333333333333333333333333333333333333333333333
+8754 3333333333333333333333333333333333333333333333333333333
+8755 3333333333333333333333333333333333333333333333333333333
+8756 3333333333333333333333333333333333333333333333333333333
+8757 3333333333333333333333333333333333333333333333333333333
+8758 3333333333333333333333333333333333333333333333333333333
+8759 3333333333333333333333333333333333333333333333333333333
+8760 3333333333333333333333333333333333333333333333333333333
+8761 3333333333333333333333333333333333333333333333333333333
+8762 3333333333333333333333333333333333333333333333333333333
+8763 3333333333333333333333333333333333333333333333333333333
+8764 3333333333333333333333333333333333333333333333333333333
+8765 3333333333333333333333333333333333333333333333333333333
+8766 3333333333333333333333333333333333333333333333333333333
+8767 3333333333333333333333333333333333333333333333333333333
+8768 3333333333333333333333333333333333333333333333333333333
+8769 3333333333333333333333333333333333333333333333333333333
+8770 3333333333333333333333333333333333333333333333333333333
+8771 3333333333333333333333333333333333333333333333333333333
+8772 3333333333333333333333333333333333333333333333333333333
+8773 3333333333333333333333333333333333333333333333333333333
+8774 3333333333333333333333333333333333333333333333333333333
+8775 3333333333333333333333333333333333333333333333333333333
+8776 3333333333333333333333333333333333333333333333333333333
+8777 3333333333333333333333333333333333333333333333333333333
+8778 3333333333333333333333333333333333333333333333333333333
+8779 3333333333333333333333333333333333333333333333333333333
+8780 3333333333333333333333333333333333333333333333333333333
+8781 3333333333333333333333333333333333333333333333333333333
+8782 3333333333333333333333333333333333333333333333333333333
+8783 3333333333333333333333333333333333333333333333333333333
+8784 3333333333333333333333333333333333333333333333333333333
+8785 3333333333333333333333333333333333333333333333333333333
+8786 3333333333333333333333333333333333333333333333333333333
+8787 3333333333333333333333333333333333333333333333333333333
+8788 3333333333333333333333333333333333333333333333333333333
+8789 3333333333333333333333333333333333333333333333333333333
+8790 3333333333333333333333333333333333333333333333333333333
+8791 3333333333333333333333333333333333333333333333333333333
+8792 3333333333333333333333333333333333333333333333333333333
+8793 3333333333333333333333333333333333333333333333333333333
+8794 3333333333333333333333333333333333333333333333333333333
+8795 3333333333333333333333333333333333333333333333333333333
+8796 3333333333333333333333333333333333333333333333333333333
+8797 3333333333333333333333333333333333333333333333333333333
+8798 3333333333333333333333333333333333333333333333333333333
+8799 3333333333333333333333333333333333333333333333333333333
+8800 3333333333333333333333333333333333333333333333333333333
+8801 3333333333333333333333333333333333333333333333333333333
+8802 3333333333333333333333333333333333333333333333333333333
+8803 3333333333333333333333333333333333333333333333333333333
+8804 3333333333333333333333333333333333333333333333333333333
+8805 3333333333333333333333333333333333333333333333333333333
+8806 3333333333333333333333333333333333333333333333333333333
+8807 3333333333333333333333333333333333333333333333333333333
+8808 3333333333333333333333333333333333333333333333333333333
+8809 3333333333333333333333333333333333333333333333333333333
+8810 3333333333333333333333333333333333333333333333333333333
+8811 3333333333333333333333333333333333333333333333333333333
+8812 3333333333333333333333333333333333333333333333333333333
+8813 3333333333333333333333333333333333333333333333333333333
+8814 3333333333333333333333333333333333333333333333333333333
+8815 3333333333333333333333333333333333333333333333333333333
+8816 3333333333333333333333333333333333333333333333333333333
+8817 3333333333333333333333333333333333333333333333333333333
+8818 3333333333333333333333333333333333333333333333333333333
+8819 3333333333333333333333333333333333333333333333333333333
+8820 3333333333333333333333333333333333333333333333333333333
+8821 3333333333333333333333333333333333333333333333333333333
+8822 3333333333333333333333333333333333333333333333333333333
+8823 3333333333333333333333333333333333333333333333333333333
+8824 3333333333333333333333333333333333333333333333333333333
+8825 3333333333333333333333333333333333333333333333333333333
+8826 3333333333333333333333333333333333333333333333333333333
+8827 3333333333333333333333333333333333333333333333333333333
+8828 3333333333333333333333333333333333333333333333333333333
+8829 3333333333333333333333333333333333333333333333333333333
+8830 3333333333333333333333333333333333333333333333333333333
+8831 3333333333333333333333333333333333333333333333333333333
+8832 3333333333333333333333333333333333333333333333333333333
+8833 3333333333333333333333333333333333333333333333333333333
+8834 3333333333333333333333333333333333333333333333333333333
+8835 3333333333333333333333333333333333333333333333333333333
+8836 3333333333333333333333333333333333333333333333333333333
+8837 3333333333333333333333333333333333333333333333333333333
+8838 3333333333333333333333333333333333333333333333333333333
+8839 3333333333333333333333333333333333333333333333333333333
+8840 3333333333333333333333333333333333333333333333333333333
+8841 3333333333333333333333333333333333333333333333333333333
+8842 3333333333333333333333333333333333333333333333333333333
+8843 3333333333333333333333333333333333333333333333333333333
+8844 3333333333333333333333333333333333333333333333333333333
+8845 3333333333333333333333333333333333333333333333333333333
+8846 3333333333333333333333333333333333333333333333333333333
+8847 3333333333333333333333333333333333333333333333333333333
+8848 3333333333333333333333333333333333333333333333333333333
+8849 3333333333333333333333333333333333333333333333333333333
+8850 3333333333333333333333333333333333333333333333333333333
+8851 3333333333333333333333333333333333333333333333333333333
+8852 3333333333333333333333333333333333333333333333333333333
+8853 3333333333333333333333333333333333333333333333333333333
+8854 3333333333333333333333333333333333333333333333333333333
+8855 3333333333333333333333333333333333333333333333333333333
+8856 3333333333333333333333333333333333333333333333333333333
+8857 3333333333333333333333333333333333333333333333333333333
+8858 3333333333333333333333333333333333333333333333333333333
+8859 3333333333333333333333333333333333333333333333333333333
+8860 3333333333333333333333333333333333333333333333333333333
+8861 3333333333333333333333333333333333333333333333333333333
+8862 3333333333333333333333333333333333333333333333333333333
+8863 3333333333333333333333333333333333333333333333333333333
+8864 3333333333333333333333333333333333333333333333333333333
+8865 3333333333333333333333333333333333333333333333333333333
+8866 3333333333333333333333333333333333333333333333333333333
+8867 3333333333333333333333333333333333333333333333333333333
+8868 3333333333333333333333333333333333333333333333333333333
+8869 3333333333333333333333333333333333333333333333333333333
+8870 3333333333333333333333333333333333333333333333333333333
+8871 3333333333333333333333333333333333333333333333333333333
+8872 3333333333333333333333333333333333333333333333333333333
+8873 3333333333333333333333333333333333333333333333333333333
+8874 3333333333333333333333333333333333333333333333333333333
+8875 3333333333333333333333333333333333333333333333333333333
+8876 3333333333333333333333333333333333333333333333333333333
+8877 3333333333333333333333333333333333333333333333333333333
+8878 3333333333333333333333333333333333333333333333333333333
+8879 3333333333333333333333333333333333333333333333333333333
+8880 3333333333333333333333333333333333333333333333333333333
+8881 3333333333333333333333333333333333333333333333333333333
+8882 3333333333333333333333333333333333333333333333333333333
+8883 3333333333333333333333333333333333333333333333333333333
+8884 3333333333333333333333333333333333333333333333333333333
+8885 3333333333333333333333333333333333333333333333333333333
+8886 3333333333333333333333333333333333333333333333333333333
+8887 3333333333333333333333333333333333333333333333333333333
+8888 3333333333333333333333333333333333333333333333333333333
+8889 3333333333333333333333333333333333333333333333333333333
+8890 3333333333333333333333333333333333333333333333333333333
+8891 3333333333333333333333333333333333333333333333333333333
+8892 3333333333333333333333333333333333333333333333333333333
+8893 3333333333333333333333333333333333333333333333333333333
+8894 3333333333333333333333333333333333333333333333333333333
+8895 3333333333333333333333333333333333333333333333333333333
+8896 3333333333333333333333333333333333333333333333333333333
+8897 3333333333333333333333333333333333333333333333333333333
+8898 3333333333333333333333333333333333333333333333333333333
+8899 3333333333333333333333333333333333333333333333333333333
+8900 3333333333333333333333333333333333333333333333333333333
+8901 3333333333333333333333333333333333333333333333333333333
+8902 3333333333333333333333333333333333333333333333333333333
+8903 3333333333333333333333333333333333333333333333333333333
+8904 3333333333333333333333333333333333333333333333333333333
+8905 3333333333333333333333333333333333333333333333333333333
+8906 3333333333333333333333333333333333333333333333333333333
+8907 3333333333333333333333333333333333333333333333333333333
+8908 3333333333333333333333333333333333333333333333333333333
+8909 3333333333333333333333333333333333333333333333333333333
+8910 3333333333333333333333333333333333333333333333333333333
+8911 3333333333333333333333333333333333333333333333333333333
+8912 3333333333333333333333333333333333333333333333333333333
+8913 3333333333333333333333333333333333333333333333333333333
+8914 3333333333333333333333333333333333333333333333333333333
+8915 3333333333333333333333333333333333333333333333333333333
+8916 3333333333333333333333333333333333333333333333333333333
+8917 3333333333333333333333333333333333333333333333333333333
+8918 3333333333333333333333333333333333333333333333333333333
+8919 3333333333333333333333333333333333333333333333333333333
+8920 3333333333333333333333333333333333333333333333333333333
+8921 3333333333333333333333333333333333333333333333333333333
+8922 3333333333333333333333333333333333333333333333333333333
+8923 3333333333333333333333333333333333333333333333333333333
+8924 3333333333333333333333333333333333333333333333333333333
+8925 3333333333333333333333333333333333333333333333333333333
+8926 3333333333333333333333333333333333333333333333333333333
+8927 3333333333333333333333333333333333333333333333333333333
+8928 3333333333333333333333333333333333333333333333333333333
+8929 3333333333333333333333333333333333333333333333333333333
+8930 3333333333333333333333333333333333333333333333333333333
+8931 3333333333333333333333333333333333333333333333333333333
+8932 3333333333333333333333333333333333333333333333333333333
+8933 3333333333333333333333333333333333333333333333333333333
+8934 3333333333333333333333333333333333333333333333333333333
+8935 3333333333333333333333333333333333333333333333333333333
+8936 3333333333333333333333333333333333333333333333333333333
+8937 3333333333333333333333333333333333333333333333333333333
+8938 3333333333333333333333333333333333333333333333333333333
+8939 3333333333333333333333333333333333333333333333333333333
+8940 3333333333333333333333333333333333333333333333333333333
+8941 3333333333333333333333333333333333333333333333333333333
+8942 3333333333333333333333333333333333333333333333333333333
+8943 3333333333333333333333333333333333333333333333333333333
+8944 3333333333333333333333333333333333333333333333333333333
+8945 3333333333333333333333333333333333333333333333333333333
+8946 3333333333333333333333333333333333333333333333333333333
+8947 3333333333333333333333333333333333333333333333333333333
+8948 3333333333333333333333333333333333333333333333333333333
+8949 3333333333333333333333333333333333333333333333333333333
+8950 3333333333333333333333333333333333333333333333333333333
+8951 3333333333333333333333333333333333333333333333333333333
+8952 3333333333333333333333333333333333333333333333333333333
+8953 3333333333333333333333333333333333333333333333333333333
+8954 3333333333333333333333333333333333333333333333333333333
+8955 3333333333333333333333333333333333333333333333333333333
+8956 3333333333333333333333333333333333333333333333333333333
+8957 3333333333333333333333333333333333333333333333333333333
+8958 3333333333333333333333333333333333333333333333333333333
+8959 3333333333333333333333333333333333333333333333333333333
+8960 3333333333333333333333333333333333333333333333333333333
+8961 3333333333333333333333333333333333333333333333333333333
+8962 3333333333333333333333333333333333333333333333333333333
+8963 3333333333333333333333333333333333333333333333333333333
+8964 3333333333333333333333333333333333333333333333333333333
+8965 3333333333333333333333333333333333333333333333333333333
+8966 3333333333333333333333333333333333333333333333333333333
+8967 3333333333333333333333333333333333333333333333333333333
+8968 3333333333333333333333333333333333333333333333333333333
+8969 3333333333333333333333333333333333333333333333333333333
+8970 3333333333333333333333333333333333333333333333333333333
+8971 3333333333333333333333333333333333333333333333333333333
+8972 3333333333333333333333333333333333333333333333333333333
+8973 3333333333333333333333333333333333333333333333333333333
+8974 3333333333333333333333333333333333333333333333333333333
+8975 3333333333333333333333333333333333333333333333333333333
+8976 3333333333333333333333333333333333333333333333333333333
+8977 3333333333333333333333333333333333333333333333333333333
+8978 3333333333333333333333333333333333333333333333333333333
+8979 3333333333333333333333333333333333333333333333333333333
+8980 3333333333333333333333333333333333333333333333333333333
+8981 3333333333333333333333333333333333333333333333333333333
+8982 3333333333333333333333333333333333333333333333333333333
+8983 3333333333333333333333333333333333333333333333333333333
+8984 3333333333333333333333333333333333333333333333333333333
+8985 3333333333333333333333333333333333333333333333333333333
+8986 3333333333333333333333333333333333333333333333333333333
+8987 3333333333333333333333333333333333333333333333333333333
+8988 3333333333333333333333333333333333333333333333333333333
+8989 3333333333333333333333333333333333333333333333333333333
+8990 3333333333333333333333333333333333333333333333333333333
+8991 3333333333333333333333333333333333333333333333333333333
+8992 3333333333333333333333333333333333333333333333333333333
+8993 3333333333333333333333333333333333333333333333333333333
+8994 3333333333333333333333333333333333333333333333333333333
+8995 3333333333333333333333333333333333333333333333333333333
+8996 3333333333333333333333333333333333333333333333333333333
+8997 3333333333333333333333333333333333333333333333333333333
+8998 3333333333333333333333333333333333333333333333333333333
+8999 3333333333333333333333333333333333333333333333333333333
+9000 3333333333333333333333333333333333333333333333333333333
+9001 3333333333333333333333333333333333333333333333333333333
+9002 3333333333333333333333333333333333333333333333333333333
+9003 3333333333333333333333333333333333333333333333333333333
+9004 3333333333333333333333333333333333333333333333333333333
+9005 3333333333333333333333333333333333333333333333333333333
+9006 3333333333333333333333333333333333333333333333333333333
+9007 3333333333333333333333333333333333333333333333333333333
+9008 3333333333333333333333333333333333333333333333333333333
+9009 3333333333333333333333333333333333333333333333333333333
+9010 3333333333333333333333333333333333333333333333333333333
+9011 3333333333333333333333333333333333333333333333333333333
+9012 3333333333333333333333333333333333333333333333333333333
+9013 3333333333333333333333333333333333333333333333333333333
+9014 3333333333333333333333333333333333333333333333333333333
+9015 3333333333333333333333333333333333333333333333333333333
+9016 3333333333333333333333333333333333333333333333333333333
+9017 3333333333333333333333333333333333333333333333333333333
+9018 3333333333333333333333333333333333333333333333333333333
+9019 3333333333333333333333333333333333333333333333333333333
+9020 3333333333333333333333333333333333333333333333333333333
+9021 3333333333333333333333333333333333333333333333333333333
+9022 3333333333333333333333333333333333333333333333333333333
+9023 3333333333333333333333333333333333333333333333333333333
+9024 3333333333333333333333333333333333333333333333333333333
+9025 3333333333333333333333333333333333333333333333333333333
+9026 3333333333333333333333333333333333333333333333333333333
+9027 3333333333333333333333333333333333333333333333333333333
+9028 3333333333333333333333333333333333333333333333333333333
+9029 3333333333333333333333333333333333333333333333333333333
+9030 3333333333333333333333333333333333333333333333333333333
+9031 3333333333333333333333333333333333333333333333333333333
+9032 3333333333333333333333333333333333333333333333333333333
+9033 3333333333333333333333333333333333333333333333333333333
+9034 3333333333333333333333333333333333333333333333333333333
+9035 3333333333333333333333333333333333333333333333333333333
+9036 3333333333333333333333333333333333333333333333333333333
+9037 3333333333333333333333333333333333333333333333333333333
+9038 3333333333333333333333333333333333333333333333333333333
+9039 3333333333333333333333333333333333333333333333333333333
+9040 3333333333333333333333333333333333333333333333333333333
+9041 3333333333333333333333333333333333333333333333333333333
+9042 3333333333333333333333333333333333333333333333333333333
+9043 3333333333333333333333333333333333333333333333333333333
+9044 3333333333333333333333333333333333333333333333333333333
+9045 3333333333333333333333333333333333333333333333333333333
+9046 3333333333333333333333333333333333333333333333333333333
+9047 3333333333333333333333333333333333333333333333333333333
+9048 3333333333333333333333333333333333333333333333333333333
+9049 3333333333333333333333333333333333333333333333333333333
+9050 3333333333333333333333333333333333333333333333333333333
+9051 3333333333333333333333333333333333333333333333333333333
+9052 3333333333333333333333333333333333333333333333333333333
+9053 3333333333333333333333333333333333333333333333333333333
+9054 3333333333333333333333333333333333333333333333333333333
+9055 3333333333333333333333333333333333333333333333333333333
+9056 3333333333333333333333333333333333333333333333333333333
+9057 3333333333333333333333333333333333333333333333333333333
+9058 3333333333333333333333333333333333333333333333333333333
+9059 3333333333333333333333333333333333333333333333333333333
+9060 3333333333333333333333333333333333333333333333333333333
+9061 3333333333333333333333333333333333333333333333333333333
+9062 3333333333333333333333333333333333333333333333333333333
+9063 3333333333333333333333333333333333333333333333333333333
+9064 3333333333333333333333333333333333333333333333333333333
+9065 3333333333333333333333333333333333333333333333333333333
+9066 3333333333333333333333333333333333333333333333333333333
+9067 3333333333333333333333333333333333333333333333333333333
+9068 3333333333333333333333333333333333333333333333333333333
+9069 3333333333333333333333333333333333333333333333333333333
+9070 3333333333333333333333333333333333333333333333333333333
+9071 3333333333333333333333333333333333333333333333333333333
+9072 3333333333333333333333333333333333333333333333333333333
+9073 3333333333333333333333333333333333333333333333333333333
+9074 3333333333333333333333333333333333333333333333333333333
+9075 3333333333333333333333333333333333333333333333333333333
+9076 3333333333333333333333333333333333333333333333333333333
+9077 3333333333333333333333333333333333333333333333333333333
+9078 3333333333333333333333333333333333333333333333333333333
+9079 3333333333333333333333333333333333333333333333333333333
+9080 3333333333333333333333333333333333333333333333333333333
+9081 3333333333333333333333333333333333333333333333333333333
+9082 3333333333333333333333333333333333333333333333333333333
+9083 3333333333333333333333333333333333333333333333333333333
+9084 3333333333333333333333333333333333333333333333333333333
+9085 3333333333333333333333333333333333333333333333333333333
+9086 3333333333333333333333333333333333333333333333333333333
+9087 3333333333333333333333333333333333333333333333333333333
+9088 3333333333333333333333333333333333333333333333333333333
+9089 3333333333333333333333333333333333333333333333333333333
+9090 3333333333333333333333333333333333333333333333333333333
+9091 3333333333333333333333333333333333333333333333333333333
+9092 3333333333333333333333333333333333333333333333333333333
+9093 3333333333333333333333333333333333333333333333333333333
+9094 3333333333333333333333333333333333333333333333333333333
+9095 3333333333333333333333333333333333333333333333333333333
+9096 3333333333333333333333333333333333333333333333333333333
+9097 3333333333333333333333333333333333333333333333333333333
+9098 3333333333333333333333333333333333333333333333333333333
+9099 3333333333333333333333333333333333333333333333333333333
+9100 3333333333333333333333333333333333333333333333333333333
+9101 3333333333333333333333333333333333333333333333333333333
+9102 3333333333333333333333333333333333333333333333333333333
+9103 3333333333333333333333333333333333333333333333333333333
+9104 3333333333333333333333333333333333333333333333333333333
+9105 3333333333333333333333333333333333333333333333333333333
+9106 3333333333333333333333333333333333333333333333333333333
+9107 3333333333333333333333333333333333333333333333333333333
+9108 3333333333333333333333333333333333333333333333333333333
+9109 3333333333333333333333333333333333333333333333333333333
+9110 3333333333333333333333333333333333333333333333333333333
+9111 3333333333333333333333333333333333333333333333333333333
+9112 3333333333333333333333333333333333333333333333333333333
+9113 3333333333333333333333333333333333333333333333333333333
+9114 3333333333333333333333333333333333333333333333333333333
+9115 3333333333333333333333333333333333333333333333333333333
+9116 3333333333333333333333333333333333333333333333333333333
+9117 3333333333333333333333333333333333333333333333333333333
+9118 3333333333333333333333333333333333333333333333333333333
+9119 3333333333333333333333333333333333333333333333333333333
+9120 3333333333333333333333333333333333333333333333333333333
+9121 3333333333333333333333333333333333333333333333333333333
+9122 3333333333333333333333333333333333333333333333333333333
+9123 3333333333333333333333333333333333333333333333333333333
+9124 3333333333333333333333333333333333333333333333333333333
+9125 3333333333333333333333333333333333333333333333333333333
+9126 3333333333333333333333333333333333333333333333333333333
+9127 3333333333333333333333333333333333333333333333333333333
+9128 3333333333333333333333333333333333333333333333333333333
+9129 3333333333333333333333333333333333333333333333333333333
+9130 3333333333333333333333333333333333333333333333333333333
+9131 3333333333333333333333333333333333333333333333333333333
+9132 3333333333333333333333333333333333333333333333333333333
+9133 3333333333333333333333333333333333333333333333333333333
+9134 3333333333333333333333333333333333333333333333333333333
+9135 3333333333333333333333333333333333333333333333333333333
+9136 3333333333333333333333333333333333333333333333333333333
+9137 3333333333333333333333333333333333333333333333333333333
+9138 3333333333333333333333333333333333333333333333333333333
+9139 3333333333333333333333333333333333333333333333333333333
+9140 3333333333333333333333333333333333333333333333333333333
+9141 3333333333333333333333333333333333333333333333333333333
+9142 3333333333333333333333333333333333333333333333333333333
+9143 3333333333333333333333333333333333333333333333333333333
+9144 3333333333333333333333333333333333333333333333333333333
+9145 3333333333333333333333333333333333333333333333333333333
+9146 3333333333333333333333333333333333333333333333333333333
+9147 3333333333333333333333333333333333333333333333333333333
+9148 3333333333333333333333333333333333333333333333333333333
+9149 3333333333333333333333333333333333333333333333333333333
+9150 3333333333333333333333333333333333333333333333333333333
+9151 3333333333333333333333333333333333333333333333333333333
+9152 3333333333333333333333333333333333333333333333333333333
+9153 3333333333333333333333333333333333333333333333333333333
+9154 3333333333333333333333333333333333333333333333333333333
+9155 3333333333333333333333333333333333333333333333333333333
+9156 3333333333333333333333333333333333333333333333333333333
+9157 3333333333333333333333333333333333333333333333333333333
+9158 3333333333333333333333333333333333333333333333333333333
+9159 3333333333333333333333333333333333333333333333333333333
+9160 3333333333333333333333333333333333333333333333333333333
+9161 3333333333333333333333333333333333333333333333333333333
+9162 3333333333333333333333333333333333333333333333333333333
+9163 3333333333333333333333333333333333333333333333333333333
+9164 3333333333333333333333333333333333333333333333333333333
+9165 3333333333333333333333333333333333333333333333333333333
+9166 3333333333333333333333333333333333333333333333333333333
+9167 3333333333333333333333333333333333333333333333333333333
+9168 3333333333333333333333333333333333333333333333333333333
+9169 3333333333333333333333333333333333333333333333333333333
+9170 3333333333333333333333333333333333333333333333333333333
+9171 3333333333333333333333333333333333333333333333333333333
+9172 3333333333333333333333333333333333333333333333333333333
+9173 3333333333333333333333333333333333333333333333333333333
+9174 3333333333333333333333333333333333333333333333333333333
+9175 3333333333333333333333333333333333333333333333333333333
+9176 3333333333333333333333333333333333333333333333333333333
+9177 3333333333333333333333333333333333333333333333333333333
+9178 3333333333333333333333333333333333333333333333333333333
+9179 3333333333333333333333333333333333333333333333333333333
+9180 3333333333333333333333333333333333333333333333333333333
+9181 3333333333333333333333333333333333333333333333333333333
+9182 3333333333333333333333333333333333333333333333333333333
+9183 3333333333333333333333333333333333333333333333333333333
+9184 3333333333333333333333333333333333333333333333333333333
+9185 3333333333333333333333333333333333333333333333333333333
+9186 3333333333333333333333333333333333333333333333333333333
+9187 3333333333333333333333333333333333333333333333333333333
+9188 3333333333333333333333333333333333333333333333333333333
+9189 3333333333333333333333333333333333333333333333333333333
+9190 3333333333333333333333333333333333333333333333333333333
+9191 3333333333333333333333333333333333333333333333333333333
+9192 3333333333333333333333333333333333333333333333333333333
+9193 3333333333333333333333333333333333333333333333333333333
+9194 3333333333333333333333333333333333333333333333333333333
+9195 3333333333333333333333333333333333333333333333333333333
+9196 3333333333333333333333333333333333333333333333333333333
+9197 3333333333333333333333333333333333333333333333333333333
+9198 3333333333333333333333333333333333333333333333333333333
+9199 3333333333333333333333333333333333333333333333333333333
+9200 3333333333333333333333333333333333333333333333333333333
+9201 3333333333333333333333333333333333333333333333333333333
+9202 3333333333333333333333333333333333333333333333333333333
+9203 3333333333333333333333333333333333333333333333333333333
+9204 3333333333333333333333333333333333333333333333333333333
+9205 3333333333333333333333333333333333333333333333333333333
+9206 3333333333333333333333333333333333333333333333333333333
+9207 3333333333333333333333333333333333333333333333333333333
+9208 3333333333333333333333333333333333333333333333333333333
+9209 3333333333333333333333333333333333333333333333333333333
+9210 3333333333333333333333333333333333333333333333333333333
+9211 3333333333333333333333333333333333333333333333333333333
+9212 3333333333333333333333333333333333333333333333333333333
+9213 3333333333333333333333333333333333333333333333333333333
+9214 3333333333333333333333333333333333333333333333333333333
+9215 3333333333333333333333333333333333333333333333333333333
+9216 3333333333333333333333333333333333333333333333333333333
+9217 3333333333333333333333333333333333333333333333333333333
+9218 3333333333333333333333333333333333333333333333333333333
+9219 3333333333333333333333333333333333333333333333333333333
+9220 3333333333333333333333333333333333333333333333333333333
+9221 3333333333333333333333333333333333333333333333333333333
+9222 3333333333333333333333333333333333333333333333333333333
+9223 3333333333333333333333333333333333333333333333333333333
+9224 3333333333333333333333333333333333333333333333333333333
+9225 3333333333333333333333333333333333333333333333333333333
+9226 3333333333333333333333333333333333333333333333333333333
+9227 3333333333333333333333333333333333333333333333333333333
+9228 3333333333333333333333333333333333333333333333333333333
+9229 3333333333333333333333333333333333333333333333333333333
+9230 3333333333333333333333333333333333333333333333333333333
+9231 3333333333333333333333333333333333333333333333333333333
+9232 3333333333333333333333333333333333333333333333333333333
+9233 3333333333333333333333333333333333333333333333333333333
+9234 3333333333333333333333333333333333333333333333333333333
+9235 3333333333333333333333333333333333333333333333333333333
+9236 3333333333333333333333333333333333333333333333333333333
+9237 3333333333333333333333333333333333333333333333333333333
+9238 3333333333333333333333333333333333333333333333333333333
+9239 3333333333333333333333333333333333333333333333333333333
+9240 3333333333333333333333333333333333333333333333333333333
+9241 3333333333333333333333333333333333333333333333333333333
+9242 3333333333333333333333333333333333333333333333333333333
+9243 3333333333333333333333333333333333333333333333333333333
+9244 3333333333333333333333333333333333333333333333333333333
+9245 3333333333333333333333333333333333333333333333333333333
+9246 3333333333333333333333333333333333333333333333333333333
+9247 3333333333333333333333333333333333333333333333333333333
+9248 3333333333333333333333333333333333333333333333333333333
+9249 3333333333333333333333333333333333333333333333333333333
+9250 3333333333333333333333333333333333333333333333333333333
+9251 3333333333333333333333333333333333333333333333333333333
+9252 3333333333333333333333333333333333333333333333333333333
+9253 3333333333333333333333333333333333333333333333333333333
+9254 3333333333333333333333333333333333333333333333333333333
+9255 3333333333333333333333333333333333333333333333333333333
+9256 3333333333333333333333333333333333333333333333333333333
+9257 3333333333333333333333333333333333333333333333333333333
+9258 3333333333333333333333333333333333333333333333333333333
+9259 3333333333333333333333333333333333333333333333333333333
+9260 3333333333333333333333333333333333333333333333333333333
+9261 3333333333333333333333333333333333333333333333333333333
+9262 3333333333333333333333333333333333333333333333333333333
+9263 3333333333333333333333333333333333333333333333333333333
+9264 3333333333333333333333333333333333333333333333333333333
+9265 3333333333333333333333333333333333333333333333333333333
+9266 3333333333333333333333333333333333333333333333333333333
+9267 3333333333333333333333333333333333333333333333333333333
+9268 3333333333333333333333333333333333333333333333333333333
+9269 3333333333333333333333333333333333333333333333333333333
+9270 3333333333333333333333333333333333333333333333333333333
+9271 3333333333333333333333333333333333333333333333333333333
+9272 3333333333333333333333333333333333333333333333333333333
+9273 3333333333333333333333333333333333333333333333333333333
+9274 3333333333333333333333333333333333333333333333333333333
+9275 3333333333333333333333333333333333333333333333333333333
+9276 3333333333333333333333333333333333333333333333333333333
+9277 3333333333333333333333333333333333333333333333333333333
+9278 3333333333333333333333333333333333333333333333333333333
+9279 3333333333333333333333333333333333333333333333333333333
+9280 3333333333333333333333333333333333333333333333333333333
+9281 3333333333333333333333333333333333333333333333333333333
+9282 3333333333333333333333333333333333333333333333333333333
+9283 3333333333333333333333333333333333333333333333333333333
+9284 3333333333333333333333333333333333333333333333333333333
+9285 3333333333333333333333333333333333333333333333333333333
+9286 3333333333333333333333333333333333333333333333333333333
+9287 3333333333333333333333333333333333333333333333333333333
+9288 3333333333333333333333333333333333333333333333333333333
+9289 3333333333333333333333333333333333333333333333333333333
+9290 3333333333333333333333333333333333333333333333333333333
+9291 3333333333333333333333333333333333333333333333333333333
+9292 3333333333333333333333333333333333333333333333333333333
+9293 3333333333333333333333333333333333333333333333333333333
+9294 3333333333333333333333333333333333333333333333333333333
+9295 3333333333333333333333333333333333333333333333333333333
+9296 3333333333333333333333333333333333333333333333333333333
+9297 3333333333333333333333333333333333333333333333333333333
+9298 3333333333333333333333333333333333333333333333333333333
+9299 3333333333333333333333333333333333333333333333333333333
+9300 3333333333333333333333333333333333333333333333333333333
+9301 3333333333333333333333333333333333333333333333333333333
+9302 3333333333333333333333333333333333333333333333333333333
+9303 3333333333333333333333333333333333333333333333333333333
+9304 3333333333333333333333333333333333333333333333333333333
+9305 3333333333333333333333333333333333333333333333333333333
+9306 3333333333333333333333333333333333333333333333333333333
+9307 3333333333333333333333333333333333333333333333333333333
+9308 3333333333333333333333333333333333333333333333333333333
+9309 3333333333333333333333333333333333333333333333333333333
+9310 3333333333333333333333333333333333333333333333333333333
+9311 3333333333333333333333333333333333333333333333333333333
+9312 3333333333333333333333333333333333333333333333333333333
+9313 3333333333333333333333333333333333333333333333333333333
+9314 3333333333333333333333333333333333333333333333333333333
+9315 3333333333333333333333333333333333333333333333333333333
+9316 3333333333333333333333333333333333333333333333333333333
+9317 3333333333333333333333333333333333333333333333333333333
+9318 3333333333333333333333333333333333333333333333333333333
+9319 3333333333333333333333333333333333333333333333333333333
+9320 3333333333333333333333333333333333333333333333333333333
+9321 3333333333333333333333333333333333333333333333333333333
+9322 3333333333333333333333333333333333333333333333333333333
+9323 3333333333333333333333333333333333333333333333333333333
+9324 3333333333333333333333333333333333333333333333333333333
+9325 3333333333333333333333333333333333333333333333333333333
+9326 3333333333333333333333333333333333333333333333333333333
+9327 3333333333333333333333333333333333333333333333333333333
+9328 3333333333333333333333333333333333333333333333333333333
+9329 3333333333333333333333333333333333333333333333333333333
+9330 3333333333333333333333333333333333333333333333333333333
+9331 3333333333333333333333333333333333333333333333333333333
+9332 3333333333333333333333333333333333333333333333333333333
+9333 3333333333333333333333333333333333333333333333333333333
+9334 3333333333333333333333333333333333333333333333333333333
+9335 3333333333333333333333333333333333333333333333333333333
+9336 3333333333333333333333333333333333333333333333333333333
+9337 3333333333333333333333333333333333333333333333333333333
+9338 3333333333333333333333333333333333333333333333333333333
+9339 3333333333333333333333333333333333333333333333333333333
+9340 3333333333333333333333333333333333333333333333333333333
+9341 3333333333333333333333333333333333333333333333333333333
+9342 3333333333333333333333333333333333333333333333333333333
+9343 3333333333333333333333333333333333333333333333333333333
+9344 3333333333333333333333333333333333333333333333333333333
+9345 3333333333333333333333333333333333333333333333333333333
+9346 3333333333333333333333333333333333333333333333333333333
+9347 3333333333333333333333333333333333333333333333333333333
+9348 3333333333333333333333333333333333333333333333333333333
+9349 3333333333333333333333333333333333333333333333333333333
+9350 3333333333333333333333333333333333333333333333333333333
+9351 3333333333333333333333333333333333333333333333333333333
+9352 3333333333333333333333333333333333333333333333333333333
+9353 3333333333333333333333333333333333333333333333333333333
+9354 3333333333333333333333333333333333333333333333333333333
+9355 3333333333333333333333333333333333333333333333333333333
+9356 3333333333333333333333333333333333333333333333333333333
+9357 3333333333333333333333333333333333333333333333333333333
+9358 3333333333333333333333333333333333333333333333333333333
+9359 3333333333333333333333333333333333333333333333333333333
+9360 3333333333333333333333333333333333333333333333333333333
+9361 3333333333333333333333333333333333333333333333333333333
+9362 3333333333333333333333333333333333333333333333333333333
+9363 3333333333333333333333333333333333333333333333333333333
+9364 3333333333333333333333333333333333333333333333333333333
+9365 3333333333333333333333333333333333333333333333333333333
+9366 3333333333333333333333333333333333333333333333333333333
+9367 3333333333333333333333333333333333333333333333333333333
+9368 3333333333333333333333333333333333333333333333333333333
+9369 3333333333333333333333333333333333333333333333333333333
+9370 3333333333333333333333333333333333333333333333333333333
+9371 3333333333333333333333333333333333333333333333333333333
+9372 3333333333333333333333333333333333333333333333333333333
+9373 3333333333333333333333333333333333333333333333333333333
+9374 3333333333333333333333333333333333333333333333333333333
+9375 3333333333333333333333333333333333333333333333333333333
+9376 3333333333333333333333333333333333333333333333333333333
+9377 3333333333333333333333333333333333333333333333333333333
+9378 3333333333333333333333333333333333333333333333333333333
+9379 3333333333333333333333333333333333333333333333333333333
+9380 3333333333333333333333333333333333333333333333333333333
+9381 3333333333333333333333333333333333333333333333333333333
+9382 3333333333333333333333333333333333333333333333333333333
+9383 3333333333333333333333333333333333333333333333333333333
+9384 3333333333333333333333333333333333333333333333333333333
+9385 3333333333333333333333333333333333333333333333333333333
+9386 3333333333333333333333333333333333333333333333333333333
+9387 3333333333333333333333333333333333333333333333333333333
+9388 3333333333333333333333333333333333333333333333333333333
+9389 3333333333333333333333333333333333333333333333333333333
+9390 3333333333333333333333333333333333333333333333333333333
+9391 3333333333333333333333333333333333333333333333333333333
+9392 3333333333333333333333333333333333333333333333333333333
+9393 3333333333333333333333333333333333333333333333333333333
+9394 3333333333333333333333333333333333333333333333333333333
+9395 3333333333333333333333333333333333333333333333333333333
+9396 3333333333333333333333333333333333333333333333333333333
+9397 3333333333333333333333333333333333333333333333333333333
+9398 3333333333333333333333333333333333333333333333333333333
+9399 3333333333333333333333333333333333333333333333333333333
+9400 3333333333333333333333333333333333333333333333333333333
+9401 3333333333333333333333333333333333333333333333333333333
+9402 3333333333333333333333333333333333333333333333333333333
+9403 3333333333333333333333333333333333333333333333333333333
+9404 3333333333333333333333333333333333333333333333333333333
+9405 3333333333333333333333333333333333333333333333333333333
+9406 3333333333333333333333333333333333333333333333333333333
+9407 3333333333333333333333333333333333333333333333333333333
+9408 3333333333333333333333333333333333333333333333333333333
+9409 3333333333333333333333333333333333333333333333333333333
+9410 3333333333333333333333333333333333333333333333333333333
+9411 3333333333333333333333333333333333333333333333333333333
+9412 3333333333333333333333333333333333333333333333333333333
+9413 3333333333333333333333333333333333333333333333333333333
+9414 3333333333333333333333333333333333333333333333333333333
+9415 3333333333333333333333333333333333333333333333333333333
+9416 3333333333333333333333333333333333333333333333333333333
+9417 3333333333333333333333333333333333333333333333333333333
+9418 3333333333333333333333333333333333333333333333333333333
+9419 3333333333333333333333333333333333333333333333333333333
+9420 3333333333333333333333333333333333333333333333333333333
+9421 3333333333333333333333333333333333333333333333333333333
+9422 3333333333333333333333333333333333333333333333333333333
+9423 3333333333333333333333333333333333333333333333333333333
+9424 3333333333333333333333333333333333333333333333333333333
+9425 3333333333333333333333333333333333333333333333333333333
+9426 3333333333333333333333333333333333333333333333333333333
+9427 3333333333333333333333333333333333333333333333333333333
+9428 3333333333333333333333333333333333333333333333333333333
+9429 3333333333333333333333333333333333333333333333333333333
+9430 3333333333333333333333333333333333333333333333333333333
+9431 3333333333333333333333333333333333333333333333333333333
+9432 3333333333333333333333333333333333333333333333333333333
+9433 3333333333333333333333333333333333333333333333333333333
+9434 3333333333333333333333333333333333333333333333333333333
+9435 3333333333333333333333333333333333333333333333333333333
+9436 3333333333333333333333333333333333333333333333333333333
+9437 3333333333333333333333333333333333333333333333333333333
+9438 3333333333333333333333333333333333333333333333333333333
+9439 3333333333333333333333333333333333333333333333333333333
+9440 3333333333333333333333333333333333333333333333333333333
+9441 3333333333333333333333333333333333333333333333333333333
+9442 3333333333333333333333333333333333333333333333333333333
+9443 3333333333333333333333333333333333333333333333333333333
+9444 3333333333333333333333333333333333333333333333333333333
+9445 3333333333333333333333333333333333333333333333333333333
+9446 3333333333333333333333333333333333333333333333333333333
+9447 3333333333333333333333333333333333333333333333333333333
+9448 3333333333333333333333333333333333333333333333333333333
+9449 3333333333333333333333333333333333333333333333333333333
+9450 3333333333333333333333333333333333333333333333333333333
+9451 3333333333333333333333333333333333333333333333333333333
+9452 3333333333333333333333333333333333333333333333333333333
+9453 3333333333333333333333333333333333333333333333333333333
+9454 3333333333333333333333333333333333333333333333333333333
+9455 3333333333333333333333333333333333333333333333333333333
+9456 3333333333333333333333333333333333333333333333333333333
+9457 3333333333333333333333333333333333333333333333333333333
+9458 3333333333333333333333333333333333333333333333333333333
+9459 3333333333333333333333333333333333333333333333333333333
+9460 3333333333333333333333333333333333333333333333333333333
+9461 3333333333333333333333333333333333333333333333333333333
+9462 3333333333333333333333333333333333333333333333333333333
+9463 3333333333333333333333333333333333333333333333333333333
+9464 3333333333333333333333333333333333333333333333333333333
+9465 3333333333333333333333333333333333333333333333333333333
+9466 3333333333333333333333333333333333333333333333333333333
+9467 3333333333333333333333333333333333333333333333333333333
+9468 3333333333333333333333333333333333333333333333333333333
+9469 3333333333333333333333333333333333333333333333333333333
+9470 3333333333333333333333333333333333333333333333333333333
+9471 3333333333333333333333333333333333333333333333333333333
+9472 3333333333333333333333333333333333333333333333333333333
+9473 3333333333333333333333333333333333333333333333333333333
+9474 3333333333333333333333333333333333333333333333333333333
+9475 3333333333333333333333333333333333333333333333333333333
+9476 3333333333333333333333333333333333333333333333333333333
+9477 3333333333333333333333333333333333333333333333333333333
+9478 3333333333333333333333333333333333333333333333333333333
+9479 3333333333333333333333333333333333333333333333333333333
+9480 3333333333333333333333333333333333333333333333333333333
+9481 3333333333333333333333333333333333333333333333333333333
+9482 3333333333333333333333333333333333333333333333333333333
+9483 3333333333333333333333333333333333333333333333333333333
+9484 3333333333333333333333333333333333333333333333333333333
+9485 3333333333333333333333333333333333333333333333333333333
+9486 3333333333333333333333333333333333333333333333333333333
+9487 3333333333333333333333333333333333333333333333333333333
+9488 3333333333333333333333333333333333333333333333333333333
+9489 3333333333333333333333333333333333333333333333333333333
+9490 3333333333333333333333333333333333333333333333333333333
+9491 3333333333333333333333333333333333333333333333333333333
+9492 3333333333333333333333333333333333333333333333333333333
+9493 3333333333333333333333333333333333333333333333333333333
+9494 3333333333333333333333333333333333333333333333333333333
+9495 3333333333333333333333333333333333333333333333333333333
+9496 3333333333333333333333333333333333333333333333333333333
+9497 3333333333333333333333333333333333333333333333333333333
+9498 3333333333333333333333333333333333333333333333333333333
+9499 3333333333333333333333333333333333333333333333333333333
+9500 3333333333333333333333333333333333333333333333333333333
+9501 3333333333333333333333333333333333333333333333333333333
+9502 3333333333333333333333333333333333333333333333333333333
+9503 3333333333333333333333333333333333333333333333333333333
+9504 3333333333333333333333333333333333333333333333333333333
+9505 3333333333333333333333333333333333333333333333333333333
+9506 3333333333333333333333333333333333333333333333333333333
+9507 3333333333333333333333333333333333333333333333333333333
+9508 3333333333333333333333333333333333333333333333333333333
+9509 3333333333333333333333333333333333333333333333333333333
+9510 3333333333333333333333333333333333333333333333333333333
+9511 3333333333333333333333333333333333333333333333333333333
+9512 3333333333333333333333333333333333333333333333333333333
+9513 3333333333333333333333333333333333333333333333333333333
+9514 3333333333333333333333333333333333333333333333333333333
+9515 3333333333333333333333333333333333333333333333333333333
+9516 3333333333333333333333333333333333333333333333333333333
+9517 3333333333333333333333333333333333333333333333333333333
+9518 3333333333333333333333333333333333333333333333333333333
+9519 3333333333333333333333333333333333333333333333333333333
+9520 3333333333333333333333333333333333333333333333333333333
+9521 3333333333333333333333333333333333333333333333333333333
+9522 3333333333333333333333333333333333333333333333333333333
+9523 3333333333333333333333333333333333333333333333333333333
+9524 3333333333333333333333333333333333333333333333333333333
+9525 3333333333333333333333333333333333333333333333333333333
+9526 3333333333333333333333333333333333333333333333333333333
+9527 3333333333333333333333333333333333333333333333333333333
+9528 3333333333333333333333333333333333333333333333333333333
+9529 3333333333333333333333333333333333333333333333333333333
+9530 3333333333333333333333333333333333333333333333333333333
+9531 3333333333333333333333333333333333333333333333333333333
+9532 3333333333333333333333333333333333333333333333333333333
+9533 3333333333333333333333333333333333333333333333333333333
+9534 3333333333333333333333333333333333333333333333333333333
+9535 3333333333333333333333333333333333333333333333333333333
+9536 3333333333333333333333333333333333333333333333333333333
+9537 3333333333333333333333333333333333333333333333333333333
+9538 3333333333333333333333333333333333333333333333333333333
+9539 3333333333333333333333333333333333333333333333333333333
+9540 3333333333333333333333333333333333333333333333333333333
+9541 3333333333333333333333333333333333333333333333333333333
+9542 3333333333333333333333333333333333333333333333333333333
+9543 3333333333333333333333333333333333333333333333333333333
+9544 3333333333333333333333333333333333333333333333333333333
+9545 3333333333333333333333333333333333333333333333333333333
+9546 3333333333333333333333333333333333333333333333333333333
+9547 3333333333333333333333333333333333333333333333333333333
+9548 3333333333333333333333333333333333333333333333333333333
+9549 3333333333333333333333333333333333333333333333333333333
+9550 3333333333333333333333333333333333333333333333333333333
+9551 3333333333333333333333333333333333333333333333333333333
+9552 3333333333333333333333333333333333333333333333333333333
+9553 3333333333333333333333333333333333333333333333333333333
+9554 3333333333333333333333333333333333333333333333333333333
+9555 3333333333333333333333333333333333333333333333333333333
+9556 3333333333333333333333333333333333333333333333333333333
+9557 3333333333333333333333333333333333333333333333333333333
+9558 3333333333333333333333333333333333333333333333333333333
+9559 3333333333333333333333333333333333333333333333333333333
+9560 3333333333333333333333333333333333333333333333333333333
+9561 3333333333333333333333333333333333333333333333333333333
+9562 3333333333333333333333333333333333333333333333333333333
+9563 3333333333333333333333333333333333333333333333333333333
+9564 3333333333333333333333333333333333333333333333333333333
+9565 3333333333333333333333333333333333333333333333333333333
+9566 3333333333333333333333333333333333333333333333333333333
+9567 3333333333333333333333333333333333333333333333333333333
+9568 3333333333333333333333333333333333333333333333333333333
+9569 3333333333333333333333333333333333333333333333333333333
+9570 3333333333333333333333333333333333333333333333333333333
+9571 3333333333333333333333333333333333333333333333333333333
+9572 3333333333333333333333333333333333333333333333333333333
+9573 3333333333333333333333333333333333333333333333333333333
+9574 3333333333333333333333333333333333333333333333333333333
+9575 3333333333333333333333333333333333333333333333333333333
+9576 3333333333333333333333333333333333333333333333333333333
+9577 3333333333333333333333333333333333333333333333333333333
+9578 3333333333333333333333333333333333333333333333333333333
+9579 3333333333333333333333333333333333333333333333333333333
+9580 3333333333333333333333333333333333333333333333333333333
+9581 3333333333333333333333333333333333333333333333333333333
+9582 3333333333333333333333333333333333333333333333333333333
+9583 3333333333333333333333333333333333333333333333333333333
+9584 3333333333333333333333333333333333333333333333333333333
+9585 3333333333333333333333333333333333333333333333333333333
+9586 3333333333333333333333333333333333333333333333333333333
+9587 3333333333333333333333333333333333333333333333333333333
+9588 3333333333333333333333333333333333333333333333333333333
+9589 3333333333333333333333333333333333333333333333333333333
+9590 3333333333333333333333333333333333333333333333333333333
+9591 3333333333333333333333333333333333333333333333333333333
+9592 3333333333333333333333333333333333333333333333333333333
+9593 3333333333333333333333333333333333333333333333333333333
+9594 3333333333333333333333333333333333333333333333333333333
+9595 3333333333333333333333333333333333333333333333333333333
+9596 3333333333333333333333333333333333333333333333333333333
+9597 3333333333333333333333333333333333333333333333333333333
+9598 3333333333333333333333333333333333333333333333333333333
+9599 3333333333333333333333333333333333333333333333333333333
+9600 3333333333333333333333333333333333333333333333333333333
+9601 3333333333333333333333333333333333333333333333333333333
+9602 3333333333333333333333333333333333333333333333333333333
+9603 3333333333333333333333333333333333333333333333333333333
+9604 3333333333333333333333333333333333333333333333333333333
+9605 3333333333333333333333333333333333333333333333333333333
+9606 3333333333333333333333333333333333333333333333333333333
+9607 3333333333333333333333333333333333333333333333333333333
+9608 3333333333333333333333333333333333333333333333333333333
+9609 3333333333333333333333333333333333333333333333333333333
+9610 3333333333333333333333333333333333333333333333333333333
+9611 3333333333333333333333333333333333333333333333333333333
+9612 3333333333333333333333333333333333333333333333333333333
+9613 3333333333333333333333333333333333333333333333333333333
+9614 3333333333333333333333333333333333333333333333333333333
+9615 3333333333333333333333333333333333333333333333333333333
+9616 3333333333333333333333333333333333333333333333333333333
+9617 3333333333333333333333333333333333333333333333333333333
+9618 3333333333333333333333333333333333333333333333333333333
+9619 3333333333333333333333333333333333333333333333333333333
+9620 3333333333333333333333333333333333333333333333333333333
+9621 3333333333333333333333333333333333333333333333333333333
+9622 3333333333333333333333333333333333333333333333333333333
+9623 3333333333333333333333333333333333333333333333333333333
+9624 3333333333333333333333333333333333333333333333333333333
+9625 3333333333333333333333333333333333333333333333333333333
+9626 3333333333333333333333333333333333333333333333333333333
+9627 3333333333333333333333333333333333333333333333333333333
+9628 3333333333333333333333333333333333333333333333333333333
+9629 3333333333333333333333333333333333333333333333333333333
+9630 3333333333333333333333333333333333333333333333333333333
+9631 3333333333333333333333333333333333333333333333333333333
+9632 3333333333333333333333333333333333333333333333333333333
+9633 3333333333333333333333333333333333333333333333333333333
+9634 3333333333333333333333333333333333333333333333333333333
+9635 3333333333333333333333333333333333333333333333333333333
+9636 3333333333333333333333333333333333333333333333333333333
+9637 3333333333333333333333333333333333333333333333333333333
+9638 3333333333333333333333333333333333333333333333333333333
+9639 3333333333333333333333333333333333333333333333333333333
+9640 3333333333333333333333333333333333333333333333333333333
+9641 3333333333333333333333333333333333333333333333333333333
+9642 3333333333333333333333333333333333333333333333333333333
+9643 3333333333333333333333333333333333333333333333333333333
+9644 3333333333333333333333333333333333333333333333333333333
+9645 3333333333333333333333333333333333333333333333333333333
+9646 3333333333333333333333333333333333333333333333333333333
+9647 3333333333333333333333333333333333333333333333333333333
+9648 3333333333333333333333333333333333333333333333333333333
+9649 3333333333333333333333333333333333333333333333333333333
+9650 3333333333333333333333333333333333333333333333333333333
+9651 3333333333333333333333333333333333333333333333333333333
+9652 3333333333333333333333333333333333333333333333333333333
+9653 3333333333333333333333333333333333333333333333333333333
+9654 3333333333333333333333333333333333333333333333333333333
+9655 3333333333333333333333333333333333333333333333333333333
+9656 3333333333333333333333333333333333333333333333333333333
+9657 3333333333333333333333333333333333333333333333333333333
+9658 3333333333333333333333333333333333333333333333333333333
+9659 3333333333333333333333333333333333333333333333333333333
+9660 3333333333333333333333333333333333333333333333333333333
+9661 3333333333333333333333333333333333333333333333333333333
+9662 3333333333333333333333333333333333333333333333333333333
+9663 3333333333333333333333333333333333333333333333333333333
+9664 3333333333333333333333333333333333333333333333333333333
+9665 3333333333333333333333333333333333333333333333333333333
+9666 3333333333333333333333333333333333333333333333333333333
+9667 3333333333333333333333333333333333333333333333333333333
+9668 3333333333333333333333333333333333333333333333333333333
+9669 3333333333333333333333333333333333333333333333333333333
+9670 3333333333333333333333333333333333333333333333333333333
+9671 3333333333333333333333333333333333333333333333333333333
+9672 3333333333333333333333333333333333333333333333333333333
+9673 3333333333333333333333333333333333333333333333333333333
+9674 3333333333333333333333333333333333333333333333333333333
+9675 3333333333333333333333333333333333333333333333333333333
+9676 3333333333333333333333333333333333333333333333333333333
+9677 3333333333333333333333333333333333333333333333333333333
+9678 3333333333333333333333333333333333333333333333333333333
+9679 3333333333333333333333333333333333333333333333333333333
+9680 3333333333333333333333333333333333333333333333333333333
+9681 3333333333333333333333333333333333333333333333333333333
+9682 3333333333333333333333333333333333333333333333333333333
+9683 3333333333333333333333333333333333333333333333333333333
+9684 3333333333333333333333333333333333333333333333333333333
+9685 3333333333333333333333333333333333333333333333333333333
+9686 3333333333333333333333333333333333333333333333333333333
+9687 3333333333333333333333333333333333333333333333333333333
+9688 3333333333333333333333333333333333333333333333333333333
+9689 3333333333333333333333333333333333333333333333333333333
+9690 3333333333333333333333333333333333333333333333333333333
+9691 3333333333333333333333333333333333333333333333333333333
+9692 3333333333333333333333333333333333333333333333333333333
+9693 3333333333333333333333333333333333333333333333333333333
+9694 3333333333333333333333333333333333333333333333333333333
+9695 3333333333333333333333333333333333333333333333333333333
+9696 3333333333333333333333333333333333333333333333333333333
+9697 3333333333333333333333333333333333333333333333333333333
+9698 3333333333333333333333333333333333333333333333333333333
+9699 3333333333333333333333333333333333333333333333333333333
+9700 3333333333333333333333333333333333333333333333333333333
+9701 3333333333333333333333333333333333333333333333333333333
+9702 3333333333333333333333333333333333333333333333333333333
+9703 3333333333333333333333333333333333333333333333333333333
+9704 3333333333333333333333333333333333333333333333333333333
+9705 3333333333333333333333333333333333333333333333333333333
+9706 3333333333333333333333333333333333333333333333333333333
+9707 3333333333333333333333333333333333333333333333333333333
+9708 3333333333333333333333333333333333333333333333333333333
+9709 3333333333333333333333333333333333333333333333333333333
+9710 3333333333333333333333333333333333333333333333333333333
+9711 3333333333333333333333333333333333333333333333333333333
+9712 3333333333333333333333333333333333333333333333333333333
+9713 3333333333333333333333333333333333333333333333333333333
+9714 3333333333333333333333333333333333333333333333333333333
+9715 3333333333333333333333333333333333333333333333333333333
+9716 3333333333333333333333333333333333333333333333333333333
+9717 3333333333333333333333333333333333333333333333333333333
+9718 3333333333333333333333333333333333333333333333333333333
+9719 3333333333333333333333333333333333333333333333333333333
+9720 3333333333333333333333333333333333333333333333333333333
+9721 3333333333333333333333333333333333333333333333333333333
+9722 3333333333333333333333333333333333333333333333333333333
+9723 3333333333333333333333333333333333333333333333333333333
+9724 3333333333333333333333333333333333333333333333333333333
+9725 3333333333333333333333333333333333333333333333333333333
+9726 3333333333333333333333333333333333333333333333333333333
+9727 3333333333333333333333333333333333333333333333333333333
+9728 3333333333333333333333333333333333333333333333333333333
+9729 3333333333333333333333333333333333333333333333333333333
+9730 3333333333333333333333333333333333333333333333333333333
+9731 3333333333333333333333333333333333333333333333333333333
+9732 3333333333333333333333333333333333333333333333333333333
+9733 3333333333333333333333333333333333333333333333333333333
+9734 3333333333333333333333333333333333333333333333333333333
+9735 3333333333333333333333333333333333333333333333333333333
+9736 3333333333333333333333333333333333333333333333333333333
+9737 3333333333333333333333333333333333333333333333333333333
+9738 3333333333333333333333333333333333333333333333333333333
+9739 3333333333333333333333333333333333333333333333333333333
+9740 3333333333333333333333333333333333333333333333333333333
+9741 3333333333333333333333333333333333333333333333333333333
+9742 3333333333333333333333333333333333333333333333333333333
+9743 3333333333333333333333333333333333333333333333333333333
+9744 3333333333333333333333333333333333333333333333333333333
+9745 3333333333333333333333333333333333333333333333333333333
+9746 3333333333333333333333333333333333333333333333333333333
+9747 3333333333333333333333333333333333333333333333333333333
+9748 3333333333333333333333333333333333333333333333333333333
+9749 3333333333333333333333333333333333333333333333333333333
+9750 3333333333333333333333333333333333333333333333333333333
+9751 3333333333333333333333333333333333333333333333333333333
+9752 3333333333333333333333333333333333333333333333333333333
+9753 3333333333333333333333333333333333333333333333333333333
+9754 3333333333333333333333333333333333333333333333333333333
+9755 3333333333333333333333333333333333333333333333333333333
+9756 3333333333333333333333333333333333333333333333333333333
+9757 3333333333333333333333333333333333333333333333333333333
+9758 3333333333333333333333333333333333333333333333333333333
+9759 3333333333333333333333333333333333333333333333333333333
+9760 3333333333333333333333333333333333333333333333333333333
+9761 3333333333333333333333333333333333333333333333333333333
+9762 3333333333333333333333333333333333333333333333333333333
+9763 3333333333333333333333333333333333333333333333333333333
+9764 3333333333333333333333333333333333333333333333333333333
+9765 3333333333333333333333333333333333333333333333333333333
+9766 3333333333333333333333333333333333333333333333333333333
+9767 3333333333333333333333333333333333333333333333333333333
+9768 3333333333333333333333333333333333333333333333333333333
+9769 3333333333333333333333333333333333333333333333333333333
+9770 3333333333333333333333333333333333333333333333333333333
+9771 3333333333333333333333333333333333333333333333333333333
+9772 3333333333333333333333333333333333333333333333333333333
+9773 3333333333333333333333333333333333333333333333333333333
+9774 3333333333333333333333333333333333333333333333333333333
+9775 3333333333333333333333333333333333333333333333333333333
+9776 3333333333333333333333333333333333333333333333333333333
+9777 3333333333333333333333333333333333333333333333333333333
+9778 3333333333333333333333333333333333333333333333333333333
+9779 3333333333333333333333333333333333333333333333333333333
+9780 3333333333333333333333333333333333333333333333333333333
+9781 3333333333333333333333333333333333333333333333333333333
+9782 3333333333333333333333333333333333333333333333333333333
+9783 3333333333333333333333333333333333333333333333333333333
+9784 3333333333333333333333333333333333333333333333333333333
+9785 3333333333333333333333333333333333333333333333333333333
+9786 3333333333333333333333333333333333333333333333333333333
+9787 3333333333333333333333333333333333333333333333333333333
+9788 3333333333333333333333333333333333333333333333333333333
+9789 3333333333333333333333333333333333333333333333333333333
+9790 3333333333333333333333333333333333333333333333333333333
+9791 3333333333333333333333333333333333333333333333333333333
+9792 3333333333333333333333333333333333333333333333333333333
+9793 3333333333333333333333333333333333333333333333333333333
+9794 3333333333333333333333333333333333333333333333333333333
+9795 3333333333333333333333333333333333333333333333333333333
+9796 3333333333333333333333333333333333333333333333333333333
+9797 3333333333333333333333333333333333333333333333333333333
+9798 3333333333333333333333333333333333333333333333333333333
+9799 3333333333333333333333333333333333333333333333333333333
+9800 3333333333333333333333333333333333333333333333333333333
+9801 3333333333333333333333333333333333333333333333333333333
+9802 3333333333333333333333333333333333333333333333333333333
+9803 3333333333333333333333333333333333333333333333333333333
+9804 3333333333333333333333333333333333333333333333333333333
+9805 3333333333333333333333333333333333333333333333333333333
+9806 3333333333333333333333333333333333333333333333333333333
+9807 3333333333333333333333333333333333333333333333333333333
+9808 3333333333333333333333333333333333333333333333333333333
+9809 3333333333333333333333333333333333333333333333333333333
+9810 3333333333333333333333333333333333333333333333333333333
+9811 3333333333333333333333333333333333333333333333333333333
+9812 3333333333333333333333333333333333333333333333333333333
+9813 3333333333333333333333333333333333333333333333333333333
+9814 3333333333333333333333333333333333333333333333333333333
+9815 3333333333333333333333333333333333333333333333333333333
+9816 3333333333333333333333333333333333333333333333333333333
+9817 3333333333333333333333333333333333333333333333333333333
+9818 3333333333333333333333333333333333333333333333333333333
+9819 3333333333333333333333333333333333333333333333333333333
+9820 3333333333333333333333333333333333333333333333333333333
+9821 3333333333333333333333333333333333333333333333333333333
+9822 3333333333333333333333333333333333333333333333333333333
+9823 3333333333333333333333333333333333333333333333333333333
+9824 3333333333333333333333333333333333333333333333333333333
+9825 3333333333333333333333333333333333333333333333333333333
+9826 3333333333333333333333333333333333333333333333333333333
+9827 3333333333333333333333333333333333333333333333333333333
+9828 3333333333333333333333333333333333333333333333333333333
+9829 3333333333333333333333333333333333333333333333333333333
+9830 3333333333333333333333333333333333333333333333333333333
+9831 3333333333333333333333333333333333333333333333333333333
+9832 3333333333333333333333333333333333333333333333333333333
+9833 3333333333333333333333333333333333333333333333333333333
+9834 3333333333333333333333333333333333333333333333333333333
+9835 3333333333333333333333333333333333333333333333333333333
+9836 3333333333333333333333333333333333333333333333333333333
+9837 3333333333333333333333333333333333333333333333333333333
+9838 3333333333333333333333333333333333333333333333333333333
+9839 3333333333333333333333333333333333333333333333333333333
+9840 3333333333333333333333333333333333333333333333333333333
+9841 3333333333333333333333333333333333333333333333333333333
+9842 3333333333333333333333333333333333333333333333333333333
+9843 3333333333333333333333333333333333333333333333333333333
+9844 3333333333333333333333333333333333333333333333333333333
+9845 3333333333333333333333333333333333333333333333333333333
+9846 3333333333333333333333333333333333333333333333333333333
+9847 3333333333333333333333333333333333333333333333333333333
+9848 3333333333333333333333333333333333333333333333333333333
+9849 3333333333333333333333333333333333333333333333333333333
+9850 3333333333333333333333333333333333333333333333333333333
+9851 3333333333333333333333333333333333333333333333333333333
+9852 3333333333333333333333333333333333333333333333333333333
+9853 3333333333333333333333333333333333333333333333333333333
+9854 3333333333333333333333333333333333333333333333333333333
+9855 3333333333333333333333333333333333333333333333333333333
+9856 3333333333333333333333333333333333333333333333333333333
+9857 3333333333333333333333333333333333333333333333333333333
+9858 3333333333333333333333333333333333333333333333333333333
+9859 3333333333333333333333333333333333333333333333333333333
+9860 3333333333333333333333333333333333333333333333333333333
+9861 3333333333333333333333333333333333333333333333333333333
+9862 3333333333333333333333333333333333333333333333333333333
+9863 3333333333333333333333333333333333333333333333333333333
+9864 3333333333333333333333333333333333333333333333333333333
+9865 3333333333333333333333333333333333333333333333333333333
+9866 3333333333333333333333333333333333333333333333333333333
+9867 3333333333333333333333333333333333333333333333333333333
+9868 3333333333333333333333333333333333333333333333333333333
+9869 3333333333333333333333333333333333333333333333333333333
+9870 3333333333333333333333333333333333333333333333333333333
+9871 3333333333333333333333333333333333333333333333333333333
+9872 3333333333333333333333333333333333333333333333333333333
+9873 3333333333333333333333333333333333333333333333333333333
+9874 3333333333333333333333333333333333333333333333333333333
+9875 3333333333333333333333333333333333333333333333333333333
+9876 3333333333333333333333333333333333333333333333333333333
+9877 3333333333333333333333333333333333333333333333333333333
+9878 3333333333333333333333333333333333333333333333333333333
+9879 3333333333333333333333333333333333333333333333333333333
+9880 3333333333333333333333333333333333333333333333333333333
+9881 3333333333333333333333333333333333333333333333333333333
+9882 3333333333333333333333333333333333333333333333333333333
+9883 3333333333333333333333333333333333333333333333333333333
+9884 3333333333333333333333333333333333333333333333333333333
+9885 3333333333333333333333333333333333333333333333333333333
+9886 3333333333333333333333333333333333333333333333333333333
+9887 3333333333333333333333333333333333333333333333333333333
+9888 3333333333333333333333333333333333333333333333333333333
+9889 3333333333333333333333333333333333333333333333333333333
+9890 3333333333333333333333333333333333333333333333333333333
+9891 3333333333333333333333333333333333333333333333333333333
+9892 3333333333333333333333333333333333333333333333333333333
+9893 3333333333333333333333333333333333333333333333333333333
+9894 3333333333333333333333333333333333333333333333333333333
+9895 3333333333333333333333333333333333333333333333333333333
+9896 3333333333333333333333333333333333333333333333333333333
+9897 3333333333333333333333333333333333333333333333333333333
+9898 3333333333333333333333333333333333333333333333333333333
+9899 3333333333333333333333333333333333333333333333333333333
+9900 3333333333333333333333333333333333333333333333333333333
+9901 3333333333333333333333333333333333333333333333333333333
+9902 3333333333333333333333333333333333333333333333333333333
+9903 3333333333333333333333333333333333333333333333333333333
+9904 3333333333333333333333333333333333333333333333333333333
+9905 3333333333333333333333333333333333333333333333333333333
+9906 3333333333333333333333333333333333333333333333333333333
+9907 3333333333333333333333333333333333333333333333333333333
+9908 3333333333333333333333333333333333333333333333333333333
+9909 3333333333333333333333333333333333333333333333333333333
+9910 3333333333333333333333333333333333333333333333333333333
+9911 3333333333333333333333333333333333333333333333333333333
+9912 3333333333333333333333333333333333333333333333333333333
+9913 3333333333333333333333333333333333333333333333333333333
+9914 3333333333333333333333333333333333333333333333333333333
+9915 3333333333333333333333333333333333333333333333333333333
+9916 3333333333333333333333333333333333333333333333333333333
+9917 3333333333333333333333333333333333333333333333333333333
+9918 3333333333333333333333333333333333333333333333333333333
+9919 3333333333333333333333333333333333333333333333333333333
+9920 3333333333333333333333333333333333333333333333333333333
+9921 3333333333333333333333333333333333333333333333333333333
+9922 3333333333333333333333333333333333333333333333333333333
+9923 3333333333333333333333333333333333333333333333333333333
+9924 3333333333333333333333333333333333333333333333333333333
+9925 3333333333333333333333333333333333333333333333333333333
+9926 3333333333333333333333333333333333333333333333333333333
+9927 3333333333333333333333333333333333333333333333333333333
+9928 3333333333333333333333333333333333333333333333333333333
+9929 3333333333333333333333333333333333333333333333333333333
+9930 3333333333333333333333333333333333333333333333333333333
+9931 3333333333333333333333333333333333333333333333333333333
+9932 3333333333333333333333333333333333333333333333333333333
+9933 3333333333333333333333333333333333333333333333333333333
+9934 3333333333333333333333333333333333333333333333333333333
+9935 3333333333333333333333333333333333333333333333333333333
+9936 3333333333333333333333333333333333333333333333333333333
+9937 3333333333333333333333333333333333333333333333333333333
+9938 3333333333333333333333333333333333333333333333333333333
+9939 3333333333333333333333333333333333333333333333333333333
+9940 3333333333333333333333333333333333333333333333333333333
+9941 3333333333333333333333333333333333333333333333333333333
+9942 3333333333333333333333333333333333333333333333333333333
+9943 3333333333333333333333333333333333333333333333333333333
+9944 3333333333333333333333333333333333333333333333333333333
+9945 3333333333333333333333333333333333333333333333333333333
+9946 3333333333333333333333333333333333333333333333333333333
+9947 3333333333333333333333333333333333333333333333333333333
+9948 3333333333333333333333333333333333333333333333333333333
+9949 3333333333333333333333333333333333333333333333333333333
+9950 3333333333333333333333333333333333333333333333333333333
+9951 3333333333333333333333333333333333333333333333333333333
+9952 3333333333333333333333333333333333333333333333333333333
+9953 3333333333333333333333333333333333333333333333333333333
+9954 3333333333333333333333333333333333333333333333333333333
+9955 3333333333333333333333333333333333333333333333333333333
+9956 3333333333333333333333333333333333333333333333333333333
+9957 3333333333333333333333333333333333333333333333333333333
+9958 3333333333333333333333333333333333333333333333333333333
+9959 3333333333333333333333333333333333333333333333333333333
+9960 3333333333333333333333333333333333333333333333333333333
+9961 3333333333333333333333333333333333333333333333333333333
+9962 3333333333333333333333333333333333333333333333333333333
+9963 3333333333333333333333333333333333333333333333333333333
+9964 3333333333333333333333333333333333333333333333333333333
+9965 3333333333333333333333333333333333333333333333333333333
+9966 3333333333333333333333333333333333333333333333333333333
+9967 3333333333333333333333333333333333333333333333333333333
+9968 3333333333333333333333333333333333333333333333333333333
+9969 3333333333333333333333333333333333333333333333333333333
+9970 3333333333333333333333333333333333333333333333333333333
+9971 3333333333333333333333333333333333333333333333333333333
+9972 3333333333333333333333333333333333333333333333333333333
+9973 3333333333333333333333333333333333333333333333333333333
+9974 3333333333333333333333333333333333333333333333333333333
+9975 3333333333333333333333333333333333333333333333333333333
+9976 3333333333333333333333333333333333333333333333333333333
+9977 3333333333333333333333333333333333333333333333333333333
+9978 3333333333333333333333333333333333333333333333333333333
+9979 3333333333333333333333333333333333333333333333333333333
+9980 3333333333333333333333333333333333333333333333333333333
+9981 3333333333333333333333333333333333333333333333333333333
+9982 3333333333333333333333333333333333333333333333333333333
+9983 3333333333333333333333333333333333333333333333333333333
+9984 3333333333333333333333333333333333333333333333333333333
+9985 3333333333333333333333333333333333333333333333333333333
+9986 3333333333333333333333333333333333333333333333333333333
+9987 3333333333333333333333333333333333333333333333333333333
+9988 3333333333333333333333333333333333333333333333333333333
+9989 3333333333333333333333333333333333333333333333333333333
+9990 3333333333333333333333333333333333333333333333333333333
+9991 3333333333333333333333333333333333333333333333333333333
+9992 3333333333333333333333333333333333333333333333333333333
+9993 3333333333333333333333333333333333333333333333333333333
+9994 3333333333333333333333333333333333333333333333333333333
+9995 3333333333333333333333333333333333333333333333333333333
+9996 3333333333333333333333333333333333333333333333333333333
+9997 3333333333333333333333333333333333333333333333333333333
+9998 3333333333333333333333333333333333333333333333333333333
+9999 3333333333333333333333333333333333333333333333333333333

Added: trunk/main/planet/web/test/etc/web/data.txt.gz
===================================================================
(Binary files differ)


Property changes on: trunk/main/planet/web/test/etc/web/data.txt.gz
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/etc/web/favicon.ico
===================================================================
(Binary files differ)


Property changes on: trunk/main/planet/web/test/etc/web/favicon.ico
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/etc/web/index.html
===================================================================
--- trunk/main/planet/web/test/etc/web/index.html 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/index.html 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,43 @@
+<HTML>
+ <HEAD>
+ <TITLE>Powered By Jetty</TITLE>
+ <META http-equiv="Pragma" content="no-cache">
+ <META http-equiv="Cache-Control" content="no-cache,no-store">
+ </HEAD>
+<BODY>
+<A HREF="http://jetty.mortbay.org";><IMG SRC="jetty_banner.gif"></A>
+<P>
+<h1>Welcome to Jetty 6.0.x</h1>
+This is the beta release of Jetty 6. This is a test context that serves:
+<ul>
+<li>static content (
+<a href="d.txt">tiny</a>,
+<a href="da.txt">small</a>,
+<a href="dat.txt">medium</a>,
+<a href="data.txt">large</a>)</li>
+<li>a <a href="dump/info">Request Dump Servlet</a></li>
+<li>a <a href="session/">Session Dump Servlet</a></li>
+<li>a <a href="snoop.jsp">Request Dump JSP</a></li>
+<li>a <a href="chat/chat.html">AJAX Chat with continuations</a></li>
+</ul>
+The <a href="/javadoc/">javadoc</a> is served from another context.
+</p>
+
+The features of Jetty 6.0.x are:
+<ul>
+<li>Totally rearchitected and rebuild, so 10 years of cruft could be
removed!</li>
+<li>Improved "dependancy injection" and "inversion of control" design of
components</li>
+<li>Improved "interceptor" design of handlers</li>
+<li>Smart split buffer design allows large buffers to only be allocated to
active connections.
+The resulting memory savings allow very large buffers to be used, which
increases the chance of
+efficient asynchronous flushing and of avoiding chunking.</li>
+<li>Optional use of NIO Buffering so that efficient direct buffers and
memory mapped files can be used.</li>
+<li>Optional use of NIO non-blocking scheduling so that threads are not
allocated per connection.</li>
+<li>Optional use of NIO gather writes, so that for example a HTTP header and
a memory mapped file may be
+sent as sent is a single operation.</li>
+<li>Continuations for efficient AJAX polling</li>
+</ul>
+
+
+</BODY>
+</HTML>

Added: trunk/main/planet/web/test/etc/web/jetty_banner.gif
===================================================================
(Binary files differ)


Property changes on: trunk/main/planet/web/test/etc/web/jetty_banner.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/etc/web/js/behaviour.js
===================================================================
--- trunk/main/planet/web/test/etc/web/js/behaviour.js 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/js/behaviour.js 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,254 @@
+/*
+ Behaviour v1.0 by Ben Nolan, June 2005. Based largely on the work
+ of Simon Willison (see comments by Simon below).
+
+ Description:
+
+ Uses css selectors to apply javascript behaviours to enable
+ unobtrusive javascript in html documents.
+
+ Usage:
+
+ var myrules = {
+ 'b.someclass' : function(element){
+ element.onclick = function(){
+ alert(this.innerHTML);
+ }
+ },
+ '#someid u' : function(element){
+ element.onmouseover = function(){
+ this.innerHTML = "BLAH!";
+ }
+ }
+ };
+
+ Behaviour.register(myrules);
+
+ // Call Behaviour.apply() to re-apply the rules (if you
+ // update the dom, etc).
+
+ License:
+
+ My stuff is BSD licensed. Not sure about Simon's.
+
+ More information:
+
+ http://ripcord.co.nz/behaviour/
+
+*/
+
+var Behaviour = {
+ list : new Array,
+
+ register : function(sheet){
+ Behaviour.list.push(sheet);
+ },
+
+ start : function(){
+ Behaviour.addLoadEvent(function(){
+ Behaviour.apply();
+ });
+ },
+
+ apply : function(){
+ for (h=0;sheet=Behaviour.list[h];h++){
+ for (selector in sheet){
+ list =
document.getElementsBySelector(selector);
+
+ if (!list){
+ continue;
+ }
+
+ for (i=0;element=list[i];i++){
+ sheet[selector](element);
+ }
+ }
+ }
+ },
+
+ addLoadEvent : function(func){
+ var oldonload = window.onload;
+
+ if (typeof window.onload != 'function') {
+ window.onload = func;
+ } else {
+ window.onload = function() {
+ oldonload();
+ func();
+ }
+ }
+ }
+}
+
+Behaviour.start();
+
+/*
+ The following code is Copyright (C) Simon Willison 2004.
+
+ document.getElementsBySelector(selector)
+ - returns an array of element objects from the current document
+ matching the CSS selector. Selectors can contain element names,
+ class names and ids and can be nested. For example:
+
+ elements = document.getElementsBySelect('div#main p a.external')
+
+ Will return an array of all 'a' elements with 'external' in their
+ class attribute that are contained inside 'p' elements that are
+ contained inside the 'div' element which has id="main"
+
+ New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
+ See http://www.w3.org/TR/css3-selectors/#attribute-selectors
+
+ Version 0.4 - Simon Willison, March 25th 2003
+ -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6,
Internet Explorer 5 on Windows
+ -- Opera 7 fails
+*/
+
+function getAllChildren(e) {
+ // Returns all children of element. Workaround required for IE5/Windows.
Ugh.
+ return e.all ? e.all : e.getElementsByTagName('*');
+}
+
+document.getElementsBySelector = function(selector) {
+ // Attempt to fail gracefully in lesser browsers
+ if (!document.getElementsByTagName) {
+ return new Array();
+ }
+ // Split selector in to tokens
+ var tokens = selector.split(' ');
+ var currentContext = new Array(document);
+ for (var i = 0; i < tokens.length; i++) {
+ token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
+ if (token.indexOf('#') > -1) {
+ // Token is an ID selector
+ var bits = token.split('#');
+ var tagName = bits[0];
+ var id = bits[1];
+ var element = document.getElementById(id);
+ if (tagName && element.nodeName.toLowerCase() != tagName) {
+ // tag with that ID not found, return false
+ return new Array();
+ }
+ // Set currentContext to contain just this element
+ currentContext = new Array(element);
+ continue; // Skip to next token
+ }
+ if (token.indexOf('.') > -1) {
+ // Token contains a class selector
+ var bits = token.split('.');
+ var tagName = bits[0];
+ var className = bits[1];
+ if (!tagName) {
+ tagName = '*';
+ }
+ // Get elements matching tag, filter them for class selector
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements;
+ if (tagName == '*') {
+ elements = getAllChildren(currentContext[h]);
+ } else {
+ elements = currentContext[h].getElementsByTagName(tagName);
+ }
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ for (var k = 0; k < found.length; k++) {
+ if (found[k].className && found[k].className.match(new
RegExp('\\b'+className+'\\b'))) {
+ currentContext[currentContextIndex++] = found[k];
+ }
+ }
+ continue; // Skip to next token
+ }
+ // Code to deal with attribute selectors
+ if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
+ var tagName = RegExp.$1;
+ var attrName = RegExp.$2;
+ var attrOperator = RegExp.$3;
+ var attrValue = RegExp.$4;
+ if (!tagName) {
+ tagName = '*';
+ }
+ // Grab all of the tagName elements within current context
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements;
+ if (tagName == '*') {
+ elements = getAllChildren(currentContext[h]);
+ } else {
+ elements = currentContext[h].getElementsByTagName(tagName);
+ }
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ var checkFunction; // This function will be used to filter the elements
+ switch (attrOperator) {
+ case '=': // Equality
+ checkFunction = function(e) { return (e.getAttribute(attrName) ==
attrValue); };
+ break;
+ case '~': // Match one of space seperated words
+ checkFunction = function(e) { return
(e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
+ break;
+ case '|': // Match start with value followed by optional hyphen
+ checkFunction = function(e) { return
(e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
+ break;
+ case '^': // Match starts with value
+ checkFunction = function(e) { return
(e.getAttribute(attrName).indexOf(attrValue) == 0); };
+ break;
+ case '$': // Match ends with value - fails with "Warning" in Opera 7
+ checkFunction = function(e) { return
(e.getAttribute(attrName).lastIndexOf(attrValue) ==
e.getAttribute(attrName).length - attrValue.length); };
+ break;
+ case '*': // Match ends with value
+ checkFunction = function(e) { return
(e.getAttribute(attrName).indexOf(attrValue) > -1); };
+ break;
+ default :
+ // Just test for existence of attribute
+ checkFunction = function(e) { return e.getAttribute(attrName); };
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ for (var k = 0; k < found.length; k++) {
+ if (checkFunction(found[k])) {
+ currentContext[currentContextIndex++] = found[k];
+ }
+ }
+ // alert('Attribute Selector: '+tagName+' '+attrName+'
'+attrOperator+' '+attrValue);
+ continue; // Skip to next token
+ }
+
+ if (!currentContext[0]){
+ return;
+ }
+
+ // If we get here, token is JUST an element (not a class or ID selector)
+ tagName = token;
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements = currentContext[h].getElementsByTagName(tagName);
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = found;
+ }
+ return currentContext;
+}
+
+/* That revolting regular expression explained
+/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
+ \---/ \---/\-------------/ \-------/
+ | | | |
+ | | | The value
+ | | ~,|,^,$,* or =
+ | Attribute
+ Tag
+*/

Added: trunk/main/planet/web/test/etc/web/js/default.js
===================================================================
--- trunk/main/planet/web/test/etc/web/js/default.js 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/js/default.js 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,23 @@
+// Technique borrowed from scriptaculous to do includes.
+
+var DefaultJS = {
+ Version: 'Jetty Test',
+ script: function(libraryName) {
+ document.write('<script type="text/javascript"
src="'+libraryName+'"></script>');
+ },
+ load: function() {
+ var scriptTags = document.getElementsByTagName("script");
+ for(var i=0;i<scriptTags.length;i++) {
+ if(scriptTags[i].src && scriptTags[i].src.match(/default\.js$/)) {
+ var path = scriptTags[i].src.replace(/default\.js$/,'');
+ this.script(path + 'prototype.js');
+ this.script(path + 'behaviour.js');
+ this.script(path + 'rico.js');
+ this.script(path + 'scriptaculous.js');
+ break;
+ }
+ }
+ }
+}
+
+DefaultJS.load();
\ No newline at end of file

Added: trunk/main/planet/web/test/etc/web/js/prototype.js
===================================================================
--- trunk/main/planet/web/test/etc/web/js/prototype.js 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/js/prototype.js 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,1038 @@
+/* Prototype JavaScript framework, version 1.3.1
+ * (c) 2005 Sam Stephenson <sam AT conio.net>
+ *
+ * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff
+ * against the source tree, available from the Prototype darcs repository.
+ *
+ * Prototype is freely distributable under the terms of an MIT-style
license.
+ *
+ * For details, see the Prototype web site: http://prototype.conio.net/
+ *
+/*--------------------------------------------------------------------------*/
+
+var Prototype = {
+ Version: '1.3.1',
+ emptyFunction: function() {}
+}
+
+var Class = {
+ create: function() {
+ return function() {
+ this.initialize.apply(this, arguments);
+ }
+ }
+}
+
+var Abstract = new Object();
+
+Object.extend = function(destination, source) {
+ for (property in source) {
+ destination[property] = source[property];
+ }
+ return destination;
+}
+
+Object.prototype.extend = function(object) {
+ return Object.extend.apply(this, [this, object]);
+}
+
+Function.prototype.bind = function(object) {
+ var __method = this;
+ return function() {
+ __method.apply(object, arguments);
+ }
+}
+
+Function.prototype.bindAsEventListener = function(object) {
+ var __method = this;
+ return function(event) {
+ __method.call(object, event || window.event);
+ }
+}
+
+Number.prototype.toColorPart = function() {
+ var digits = this.toString(16);
+ if (this < 16) return '0' + digits;
+ return digits;
+}
+
+var Try = {
+ these: function() {
+ var returnValue;
+
+ for (var i = 0; i < arguments.length; i++) {
+ var lambda = arguments[i];
+ try {
+ returnValue = lambda();
+ break;
+ } catch (e) {}
+ }
+
+ return returnValue;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create();
+PeriodicalExecuter.prototype = {
+ initialize: function(callback, frequency) {
+ this.callback = callback;
+ this.frequency = frequency;
+ this.currentlyExecuting = false;
+
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ if (!this.currentlyExecuting) {
+ try {
+ this.currentlyExecuting = true;
+ this.callback();
+ } finally {
+ this.currentlyExecuting = false;
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+function $() {
+ var elements = new Array();
+
+ for (var i = 0; i < arguments.length; i++) {
+ var element = arguments[i];
+ if (typeof element == 'string')
+ element = document.getElementById(element);
+
+ if (arguments.length == 1)
+ return element;
+
+ elements.push(element);
+ }
+
+ return elements;
+}
+
+if (!Array.prototype.push) {
+ Array.prototype.push = function() {
+ var startLength = this.length;
+ for (var i = 0; i < arguments.length; i++)
+ this[startLength + i] = arguments[i];
+ return this.length;
+ }
+}
+
+if (!Function.prototype.apply) {
+ // Based on code from http://www.youngpup.net/
+ Function.prototype.apply = function(object, parameters) {
+ var parameterStrings = new Array();
+ if (!object) object = window;
+ if (!parameters) parameters = new Array();
+
+ for (var i = 0; i < parameters.length; i++)
+ parameterStrings[i] = 'parameters[' + i + ']';
+
+ object.__apply__ = this;
+ var result = eval('object.__apply__(' +
+ parameterStrings.join(', ') + ')');
+ object.__apply__ = null;
+
+ return result;
+ }
+}
+
+String.prototype.extend({
+ stripTags: function() {
+ return this.replace(/<\/?[^>]+>/gi, '');
+ },
+
+ escapeHTML: function() {
+ var div = document.createElement('div');
+ var text = document.createTextNode(this);
+ div.appendChild(text);
+ return div.innerHTML;
+ },
+
+ unescapeHTML: function() {
+ var div = document.createElement('div');
+ div.innerHTML = this.stripTags();
+ return div.childNodes[0].nodeValue;
+ }
+});
+
+var Ajax = {
+ getTransport: function() {
+ return Try.these(
+ function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+ function() {return new ActiveXObject('Microsoft.XMLHTTP')},
+ function() {return new XMLHttpRequest()}
+ ) || false;
+ }
+}
+
+Ajax.Base = function() {};
+Ajax.Base.prototype = {
+ setOptions: function(options) {
+ this.options = {
+ method: 'post',
+ asynchronous: true,
+ parameters: ''
+ }.extend(options || {});
+ },
+
+ responseIsSuccess: function() {
+ return this.transport.status == undefined
+ || this.transport.status == 0
+ || (this.transport.status >= 200 && this.transport.status < 300);
+ },
+
+ responseIsFailure: function() {
+ return !this.responseIsSuccess();
+ }
+}
+
+Ajax.Request = Class.create();
+Ajax.Request.Events =
+ ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Request.prototype = (new Ajax.Base()).extend({
+ initialize: function(url, options) {
+ this.transport = Ajax.getTransport();
+ this.setOptions(options);
+ this.request(url);
+ },
+
+ request: function(url) {
+ var parameters = this.options.parameters || '';
+ if (parameters.length > 0) parameters += '&_=';
+
+ try {
+ if (this.options.method == 'get')
+ url += (url.indexOf('?')<0?'?':'&') + parameters;
+
+ this.transport.open(this.options.method, url,
+ this.options.asynchronous);
+
+ if (this.options.asynchronous) {
+ this.transport.onreadystatechange = this.onStateChange.bind(this);
+ setTimeout((function() {this.respondToReadyState(1)}).bind(this),
10);
+ }
+
+ this.setRequestHeaders();
+
+ var body = this.options.postBody ? this.options.postBody : parameters;
+ this.transport.send(this.options.method == 'post' ? body : null);
+
+ } catch (e) {
+ }
+ },
+
+ setRequestHeaders: function() {
+ var requestHeaders =
+ ['X-Requested-With', 'XMLHttpRequest',
+ 'X-Prototype-Version', Prototype.Version];
+
+ if (this.options.method == 'post') {
+ requestHeaders.push('Content-type',
+ 'application/x-www-form-urlencoded');
+
+ /* Force "Connection: close" for Mozilla browsers to work around
+ * a bug where XMLHttpReqeuest sends an incorrect Content-length
+ * header. See Mozilla Bugzilla #246651.
+ */
+ if (this.transport.overrideMimeType)
+ requestHeaders.push('Connection', 'close');
+ }
+
+ if (this.options.requestHeaders)
+ requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
+
+ for (var i = 0; i < requestHeaders.length; i += 2)
+ this.transport.setRequestHeader(requestHeaders[i],
requestHeaders[i+1]);
+ },
+
+ onStateChange: function() {
+ var readyState = this.transport.readyState;
+ if (readyState != 1)
+ this.respondToReadyState(this.transport.readyState);
+ },
+
+ respondToReadyState: function(readyState) {
+ var event = Ajax.Request.Events[readyState];
+
+ if (event == 'Complete')
+ (this.options['on' + this.transport.status]
+ || this.options['on' + (this.responseIsSuccess() ? 'Success' :
'Failure')]
+ || Prototype.emptyFunction)(this.transport);
+
+ (this.options['on' + event] || Prototype.emptyFunction)(this.transport);
+
+ /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
+ if (event == 'Complete')
+ this.transport.onreadystatechange = Prototype.emptyFunction;
+ }
+});
+
+Ajax.Updater = Class.create();
+Ajax.Updater.ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';
+
+Ajax.Updater.prototype.extend(Ajax.Request.prototype).extend({
+ initialize: function(container, url, options) {
+ this.containers = {
+ success: container.success ? $(container.success) : $(container),
+ failure: container.failure ? $(container.failure) :
+ (container.success ? null : $(container))
+ }
+
+ this.transport = Ajax.getTransport();
+ this.setOptions(options);
+
+ var onComplete = this.options.onComplete || Prototype.emptyFunction;
+ this.options.onComplete = (function() {
+ this.updateContent();
+ onComplete(this.transport);
+ }).bind(this);
+
+ this.request(url);
+ },
+
+ updateContent: function() {
+ var receiver = this.responseIsSuccess() ?
+ this.containers.success : this.containers.failure;
+
+ var match = new RegExp(Ajax.Updater.ScriptFragment, 'img');
+ var response = this.transport.responseText.replace(match, '');
+ var scripts = this.transport.responseText.match(match);
+
+ if (receiver) {
+ if (this.options.insertion) {
+ new this.options.insertion(receiver, response);
+ } else {
+ receiver.innerHTML = response;
+ }
+ }
+
+ if (this.responseIsSuccess()) {
+ if (this.onComplete)
+ setTimeout((function() {this.onComplete(
+ this.transport)}).bind(this), 10);
+ }
+
+ if (this.options.evalScripts && scripts) {
+ match = new RegExp(Ajax.Updater.ScriptFragment, 'im');
+ setTimeout((function() {
+ for (var i = 0; i < scripts.length; i++)
+ eval(scripts[i].match(match)[1]);
+ }).bind(this), 10);
+ }
+ }
+});
+
+Ajax.PeriodicalUpdater = Class.create();
+Ajax.PeriodicalUpdater.prototype = (new Ajax.Base()).extend({
+ initialize: function(container, url, options) {
+ this.setOptions(options);
+ this.onComplete = this.options.onComplete;
+
+ this.frequency = (this.options.frequency || 2);
+ this.decay = 1;
+
+ this.updater = {};
+ this.container = container;
+ this.url = url;
+
+ this.start();
+ },
+
+ start: function() {
+ this.options.onComplete = this.updateComplete.bind(this);
+ this.onTimerEvent();
+ },
+
+ stop: function() {
+ this.updater.onComplete = undefined;
+ clearTimeout(this.timer);
+ (this.onComplete || Ajax.emptyFunction).apply(this, arguments);
+ },
+
+ updateComplete: function(request) {
+ if (this.options.decay) {
+ this.decay = (request.responseText == this.lastText ?
+ this.decay * this.options.decay : 1);
+
+ this.lastText = request.responseText;
+ }
+ this.timer = setTimeout(this.onTimerEvent.bind(this),
+ this.decay * this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ this.updater = new Ajax.Updater(this.container, this.url, this.options);
+ }
+});
+
+document.getElementsByClassName = function(className) {
+ var children = document.getElementsByTagName('*') || document.all;
+ var elements = new Array();
+
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ var classNames = child.className.split(' ');
+ for (var j = 0; j < classNames.length; j++) {
+ if (classNames[j] == className) {
+ elements.push(child);
+ break;
+ }
+ }
+ }
+
+ return elements;
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Element) {
+ var Element = new Object();
+}
+
+Object.extend(Element, {
+ toggle: function() {
+ for (var i = 0; i < arguments.length; i++) {
+ var element = $(arguments[i]);
+ element.style.display =
+ (element.style.display == 'none' ? '' : 'none');
+ }
+ },
+
+ hide: function() {
+ for (var i = 0; i < arguments.length; i++) {
+ var element = $(arguments[i]);
+ element.style.display = 'none';
+ }
+ },
+
+ show: function() {
+ for (var i = 0; i < arguments.length; i++) {
+ var element = $(arguments[i]);
+ element.style.display = '';
+ }
+ },
+
+ remove: function(element) {
+ element = $(element);
+ element.parentNode.removeChild(element);
+ },
+
+ getHeight: function(element) {
+ element = $(element);
+ return element.offsetHeight;
+ },
+
+ hasClassName: function(element, className) {
+ element = $(element);
+ if (!element)
+ return;
+ var a = element.className.split(' ');
+ for (var i = 0; i < a.length; i++) {
+ if (a[i] == className)
+ return true;
+ }
+ return false;
+ },
+
+ addClassName: function(element, className) {
+ element = $(element);
+ Element.removeClassName(element, className);
+ element.className += ' ' + className;
+ },
+
+ removeClassName: function(element, className) {
+ element = $(element);
+ if (!element)
+ return;
+ var newClassName = '';
+ var a = element.className.split(' ');
+ for (var i = 0; i < a.length; i++) {
+ if (a[i] != className) {
+ if (i > 0)
+ newClassName += ' ';
+ newClassName += a[i];
+ }
+ }
+ element.className = newClassName;
+ },
+
+ // removes whitespace-only text node children
+ cleanWhitespace: function(element) {
+ var element = $(element);
+ for (var i = 0; i < element.childNodes.length; i++) {
+ var node = element.childNodes[i];
+ if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+ Element.remove(node);
+ }
+ }
+});
+
+var Toggle = new Object();
+Toggle.display = Element.toggle;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.Insertion = function(adjacency) {
+ this.adjacency = adjacency;
+}
+
+Abstract.Insertion.prototype = {
+ initialize: function(element, content) {
+ this.element = $(element);
+ this.content = content;
+
+ if (this.adjacency && this.element.insertAdjacentHTML) {
+ this.element.insertAdjacentHTML(this.adjacency, this.content);
+ } else {
+ this.range = this.element.ownerDocument.createRange();
+ if (this.initializeRange) this.initializeRange();
+ this.fragment = this.range.createContextualFragment(this.content);
+ this.insertContent();
+ }
+ }
+}
+
+var Insertion = new Object();
+
+Insertion.Before = Class.create();
+Insertion.Before.prototype = (new Abstract.Insertion('beforeBegin')).extend({
+ initializeRange: function() {
+ this.range.setStartBefore(this.element);
+ },
+
+ insertContent: function() {
+ this.element.parentNode.insertBefore(this.fragment, this.element);
+ }
+});
+
+Insertion.Top = Class.create();
+Insertion.Top.prototype = (new Abstract.Insertion('afterBegin')).extend({
+ initializeRange: function() {
+ this.range.selectNodeContents(this.element);
+ this.range.collapse(true);
+ },
+
+ insertContent: function() {
+ this.element.insertBefore(this.fragment, this.element.firstChild);
+ }
+});
+
+Insertion.Bottom = Class.create();
+Insertion.Bottom.prototype = (new Abstract.Insertion('beforeEnd')).extend({
+ initializeRange: function() {
+ this.range.selectNodeContents(this.element);
+ this.range.collapse(this.element);
+ },
+
+ insertContent: function() {
+ this.element.appendChild(this.fragment);
+ }
+});
+
+Insertion.After = Class.create();
+Insertion.After.prototype = (new Abstract.Insertion('afterEnd')).extend({
+ initializeRange: function() {
+ this.range.setStartAfter(this.element);
+ },
+
+ insertContent: function() {
+ this.element.parentNode.insertBefore(this.fragment,
+ this.element.nextSibling);
+ }
+});
+
+var Field = {
+ clear: function() {
+ for (var i = 0; i < arguments.length; i++)
+ $(arguments[i]).value = '';
+ },
+
+ focus: function(element) {
+ $(element).focus();
+ },
+
+ present: function() {
+ for (var i = 0; i < arguments.length; i++)
+ if ($(arguments[i]).value == '') return false;
+ return true;
+ },
+
+ select: function(element) {
+ $(element).select();
+ },
+
+ activate: function(element) {
+ $(element).focus();
+ $(element).select();
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Form = {
+ serialize: function(form) {
+ var elements = Form.getElements($(form));
+ var queryComponents = new Array();
+
+ for (var i = 0; i < elements.length; i++) {
+ var queryComponent = Form.Element.serialize(elements[i]);
+ if (queryComponent)
+ queryComponents.push(queryComponent);
+ }
+
+ return queryComponents.join('&');
+ },
+
+ getElements: function(form) {
+ var form = $(form);
+ var elements = new Array();
+
+ for (tagName in Form.Element.Serializers) {
+ var tagElements = form.getElementsByTagName(tagName);
+ for (var j = 0; j < tagElements.length; j++)
+ elements.push(tagElements[j]);
+ }
+ return elements;
+ },
+
+ getInputs: function(form, typeName, name) {
+ var form = $(form);
+ var inputs = form.getElementsByTagName('input');
+
+ if (!typeName && !name)
+ return inputs;
+
+ var matchingInputs = new Array();
+ for (var i = 0; i < inputs.length; i++) {
+ var input = inputs[i];
+ if ((typeName && input.type != typeName) ||
+ (name && input.name != name))
+ continue;
+ matchingInputs.push(input);
+ }
+
+ return matchingInputs;
+ },
+
+ disable: function(form) {
+ var elements = Form.getElements(form);
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ element.blur();
+ element.disabled = 'true';
+ }
+ },
+
+ enable: function(form) {
+ var elements = Form.getElements(form);
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ element.disabled = '';
+ }
+ },
+
+ focusFirstElement: function(form) {
+ var form = $(form);
+ var elements = Form.getElements(form);
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ if (element.type != 'hidden' && !element.disabled) {
+ Field.activate(element);
+ break;
+ }
+ }
+ },
+
+ reset: function(form) {
+ $(form).reset();
+ }
+}
+
+Form.Element = {
+ serialize: function(element) {
+ var element = $(element);
+ var method = element.tagName.toLowerCase();
+ var parameter = Form.Element.Serializers[method](element);
+
+ if (parameter)
+ return encodeURIComponent(parameter[0]) + '=' +
+ encodeURIComponent(parameter[1]);
+ },
+
+ getValue: function(element) {
+ var element = $(element);
+ var method = element.tagName.toLowerCase();
+ var parameter = Form.Element.Serializers[method](element);
+
+ if (parameter)
+ return parameter[1];
+ }
+}
+
+Form.Element.Serializers = {
+ input: function(element) {
+ switch (element.type.toLowerCase()) {
+ case 'submit':
+ case 'hidden':
+ case 'password':
+ case 'text':
+ return Form.Element.Serializers.textarea(element);
+ case 'checkbox':
+ case 'radio':
+ return Form.Element.Serializers.inputSelector(element);
+ }
+ return false;
+ },
+
+ inputSelector: function(element) {
+ if (element.checked)
+ return [element.name, element.value];
+ },
+
+ textarea: function(element) {
+ return [element.name, element.value];
+ },
+
+ select: function(element) {
+ var value = '';
+ if (element.type == 'select-one') {
+ var index = element.selectedIndex;
+ if (index >= 0)
+ value = element.options[index].value || element.options[index].text;
+ } else {
+ value = new Array();
+ for (var i = 0; i < element.length; i++) {
+ var opt = element.options[i];
+ if (opt.selected)
+ value.push(opt.value || opt.text);
+ }
+ }
+ return [element.name, value];
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var $F = Form.Element.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = function() {}
+Abstract.TimedObserver.prototype = {
+ initialize: function(element, frequency, callback) {
+ this.frequency = frequency;
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ var value = this.getValue();
+ if (this.lastValue != value) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ }
+}
+
+Form.Element.Observer = Class.create();
+Form.Element.Observer.prototype = (new Abstract.TimedObserver()).extend({
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
+});
+
+Form.Observer = Class.create();
+Form.Observer.prototype = (new Abstract.TimedObserver()).extend({
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = function() {}
+Abstract.EventObserver.prototype = {
+ initialize: function(element, callback) {
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ if (this.element.tagName.toLowerCase() == 'form')
+ this.registerFormCallbacks();
+ else
+ this.registerCallback(this.element);
+ },
+
+ onElementEvent: function() {
+ var value = this.getValue();
+ if (this.lastValue != value) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ },
+
+ registerFormCallbacks: function() {
+ var elements = Form.getElements(this.element);
+ for (var i = 0; i < elements.length; i++)
+ this.registerCallback(elements[i]);
+ },
+
+ registerCallback: function(element) {
+ if (element.type) {
+ switch (element.type.toLowerCase()) {
+ case 'checkbox':
+ case 'radio':
+ element.target = this;
+ element.prev_onclick = element.onclick || Prototype.emptyFunction;
+ element.onclick = function() {
+ this.prev_onclick();
+ this.target.onElementEvent();
+ }
+ break;
+ case 'password':
+ case 'text':
+ case 'textarea':
+ case 'select-one':
+ case 'select-multiple':
+ element.target = this;
+ element.prev_onchange = element.onchange ||
Prototype.emptyFunction;
+ element.onchange = function() {
+ this.prev_onchange();
+ this.target.onElementEvent();
+ }
+ break;
+ }
+ }
+ }
+}
+
+Form.Element.EventObserver = Class.create();
+Form.Element.EventObserver.prototype = (new
Abstract.EventObserver()).extend({
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
+});
+
+Form.EventObserver = Class.create();
+Form.EventObserver.prototype = (new Abstract.EventObserver()).extend({
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
+});
+
+
+if (!window.Event) {
+ var Event = new Object();
+}
+
+Object.extend(Event, {
+ KEY_BACKSPACE: 8,
+ KEY_TAB: 9,
+ KEY_RETURN: 13,
+ KEY_ESC: 27,
+ KEY_LEFT: 37,
+ KEY_UP: 38,
+ KEY_RIGHT: 39,
+ KEY_DOWN: 40,
+ KEY_DELETE: 46,
+
+ element: function(event) {
+ return event.target || event.srcElement;
+ },
+
+ isLeftClick: function(event) {
+ return (((event.which) && (event.which == 1)) ||
+ ((event.button) && (event.button == 1)));
+ },
+
+ pointerX: function(event) {
+ return event.pageX || (event.clientX +
+ (document.documentElement.scrollLeft || document.body.scrollLeft));
+ },
+
+ pointerY: function(event) {
+ return event.pageY || (event.clientY +
+ (document.documentElement.scrollTop || document.body.scrollTop));
+ },
+
+ stop: function(event) {
+ if (event.preventDefault) {
+ event.preventDefault();
+ event.stopPropagation();
+ } else {
+ event.returnValue = false;
+ }
+ },
+
+ // find the first node with the given tagName, starting from the
+ // node the event was triggered on; traverses the DOM upwards
+ findElement: function(event, tagName) {
+ var element = Event.element(event);
+ while (element.parentNode && (!element.tagName ||
+ (element.tagName.toUpperCase() != tagName.toUpperCase())))
+ element = element.parentNode;
+ return element;
+ },
+
+ observers: false,
+
+ _observeAndCache: function(element, name, observer, useCapture) {
+ if (!this.observers) this.observers = [];
+ if (element.addEventListener) {
+ this.observers.push([element, name, observer, useCapture]);
+ element.addEventListener(name, observer, useCapture);
+ } else if (element.attachEvent) {
+ this.observers.push([element, name, observer, useCapture]);
+ element.attachEvent('on' + name, observer);
+ }
+ },
+
+ unloadCache: function() {
+ if (!Event.observers) return;
+ for (var i = 0; i < Event.observers.length; i++) {
+ Event.stopObserving.apply(this, Event.observers[i]);
+ Event.observers[i][0] = null;
+ }
+ Event.observers = false;
+ },
+
+ observe: function(element, name, observer, useCapture) {
+ var element = $(element);
+ useCapture = useCapture || false;
+
+ if (name == 'keypress' &&
+ ((navigator.appVersion.indexOf('AppleWebKit') > 0)
+ || element.attachEvent))
+ name = 'keydown';
+
+ this._observeAndCache(element, name, observer, useCapture);
+ },
+
+ stopObserving: function(element, name, observer, useCapture) {
+ var element = $(element);
+ useCapture = useCapture || false;
+
+ if (name == 'keypress' &&
+ ((navigator.appVersion.indexOf('AppleWebKit') > 0)
+ || element.detachEvent))
+ name = 'keydown';
+
+ if (element.removeEventListener) {
+ element.removeEventListener(name, observer, useCapture);
+ } else if (element.detachEvent) {
+ element.detachEvent('on' + name, observer);
+ }
+ }
+});
+
+/* prevent memory leaks in IE */
+Event.observe(window, 'unload', Event.unloadCache, false);
+
+var Position = {
+
+ // set to true if needed, warning: firefox performance problems
+ // NOT neeeded for page scrolling, only if draggable contained in
+ // scrollable elements
+ includeScrollOffsets: false,
+
+ // must be called before calling withinIncludingScrolloffset, every time
the
+ // page is scrolled
+ prepare: function() {
+ this.deltaX = window.pageXOffset
+ || document.documentElement.scrollLeft
+ || document.body.scrollLeft
+ || 0;
+ this.deltaY = window.pageYOffset
+ || document.documentElement.scrollTop
+ || document.body.scrollTop
+ || 0;
+ },
+
+ realOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.scrollTop || 0;
+ valueL += element.scrollLeft || 0;
+ element = element.parentNode;
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ cumulativeOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ element = element.offsetParent;
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ // caches x/y coordinate pair to use with overlap
+ within: function(element, x, y) {
+ if (this.includeScrollOffsets)
+ return this.withinIncludingScrolloffsets(element, x, y);
+ this.xcomp = x;
+ this.ycomp = y;
+ this.offset = this.cumulativeOffset(element);
+
+ return (y >= this.offset[1] &&
+ y < this.offset[1] + element.offsetHeight &&
+ x >= this.offset[0] &&
+ x < this.offset[0] + element.offsetWidth);
+ },
+
+ withinIncludingScrolloffsets: function(element, x, y) {
+ var offsetcache = this.realOffset(element);
+
+ this.xcomp = x + offsetcache[0] - this.deltaX;
+ this.ycomp = y + offsetcache[1] - this.deltaY;
+ this.offset = this.cumulativeOffset(element);
+
+ return (this.ycomp >= this.offset[1] &&
+ this.ycomp < this.offset[1] + element.offsetHeight &&
+ this.xcomp >= this.offset[0] &&
+ this.xcomp < this.offset[0] + element.offsetWidth);
+ },
+
+ // within must be called directly before
+ overlap: function(mode, element) {
+ if (!mode) return 0;
+ if (mode == 'vertical')
+ return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+ element.offsetHeight;
+ if (mode == 'horizontal')
+ return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+ element.offsetWidth;
+ },
+
+ clone: function(source, target) {
+ source = $(source);
+ target = $(target);
+ target.style.position = 'absolute';
+ var offsets = this.cumulativeOffset(source);
+ target.style.top = offsets[1] + 'px';
+ target.style.left = offsets[0] + 'px';
+ target.style.width = source.offsetWidth + 'px';
+ target.style.height = source.offsetHeight + 'px';
+ }
+}

Added: trunk/main/planet/web/test/etc/web/js/rico.js
===================================================================
--- trunk/main/planet/web/test/etc/web/js/rico.js 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/js/rico.js 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,2667 @@
+/**
+ *
+ * Copyright 2005 Sabre Airline Solutions
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this
+ * file except in compliance with the License. You may obtain a copy of
the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
governing permissions
+ * and limitations under the License.
+ **/
+
+
+//-------------------- rico.js
+var Rico = {
+ Version: '1.1-beta2'
+}
+
+Rico.ArrayExtensions = new Array();
+
+if (Object.prototype.extend) {
+ // in prototype.js...
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Object.prototype.extend;
+}
+
+if (Array.prototype.push) {
+ // in prototype.js...
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.push;
+}
+
+if (!Array.prototype.remove) {
+ Array.prototype.remove = function(dx) {
+ if( isNaN(dx) || dx > this.length )
+ return false;
+ for( var i=0,n=0; i<this.length; i++ )
+ if( i != dx )
+ this[n++]=this[i];
+ this.length-=1;
+ };
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.remove;
+}
+
+if (!Array.prototype.removeItem) {
+ Array.prototype.removeItem = function(item) {
+ for ( var i = 0 ; i < this.length ; i++ )
+ if ( this[i] == item ) {
+ this.remove(i);
+ break;
+ }
+ };
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.removeItem;
+}
+
+if (!Array.prototype.indices) {
+ Array.prototype.indices = function() {
+ var indexArray = new Array();
+ for ( index in this ) {
+ var ignoreThis = false;
+ for ( var i = 0 ; i < Rico.ArrayExtensions.length ; i++ ) {
+ if ( this[index] == Rico.ArrayExtensions[i] ) {
+ ignoreThis = true;
+ break;
+ }
+ }
+ if ( !ignoreThis )
+ indexArray[ indexArray.length ] = index;
+ }
+ return indexArray;
+ }
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.indices;
+}
+
+// Create the loadXML method and xml getter for Mozilla
+if ( window.DOMParser &&
+ window.XMLSerializer &&
+ window.Node && Node.prototype && Node.prototype.__defineGetter__ ) {
+
+ if (!Document.prototype.loadXML) {
+ Document.prototype.loadXML = function (s) {
+ var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
+ while (this.hasChildNodes())
+ this.removeChild(this.lastChild);
+
+ for (var i = 0; i < doc2.childNodes.length; i++) {
+ this.appendChild(this.importNode(doc2.childNodes[i], true));
+ }
+ };
+ }
+
+ Document.prototype.__defineGetter__( "xml",
+ function () {
+ return (new XMLSerializer()).serializeToString(this);
+ }
+ );
+}
+
+document.getElementsByTagAndClassName = function(tagName, className) {
+ if ( tagName == null )
+ tagName = '*';
+
+ var children = document.getElementsByTagName(tagName) || document.all;
+ var elements = new Array();
+
+ if ( className == null )
+ return children;
+
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ var classNames = child.className.split(' ');
+ for (var j = 0; j < classNames.length; j++) {
+ if (classNames[j] == className) {
+ elements.push(child);
+ break;
+ }
+ }
+ }
+
+ return elements;
+}
+
+
+//-------------------- ricoAccordion.js
+
+Rico.Accordion = Class.create();
+
+Rico.Accordion.prototype = {
+
+ initialize: function(container, options) {
+ this.container = $(container);
+ this.lastExpandedTab = null;
+ this.accordionTabs = new Array();
+ this.setOptions(options);
+ this._attachBehaviors();
+
+ this.container.style.borderBottom = '1px solid ' +
this.options.borderColor;
+
+ // set the initial visual state...
+ for ( var i=1 ; i < this.accordionTabs.length ; i++ )
+ {
+ this.accordionTabs[i].collapse();
+ this.accordionTabs[i].content.style.display = 'none';
+ }
+ this.lastExpandedTab = this.accordionTabs[0];
+ this.lastExpandedTab.content.style.height = this.options.panelHeight +
"px";
+ this.lastExpandedTab.showExpanded();
+ this.lastExpandedTab.titleBar.style.fontWeight =
this.options.expandedFontWeight;
+ },
+
+ setOptions: function(options) {
+ this.options = {
+ expandedBg : '#63699c',
+ hoverBg : '#63699c',
+ collapsedBg : '#6b79a5',
+ expandedTextColor : '#ffffff',
+ expandedFontWeight : 'bold',
+ hoverTextColor : '#ffffff',
+ collapsedTextColor : '#ced7ef',
+ collapsedFontWeight : 'normal',
+ hoverTextColor : '#ffffff',
+ borderColor : '#1f669b',
+ panelHeight : 200,
+ onHideTab : null,
+ onShowTab : null
+ }.extend(options || {});
+ },
+
+ showTabByIndex: function( anIndex, animate ) {
+ var doAnimate = arguments.length == 1 ? true : animate;
+ this.showTab( this.accordionTabs[anIndex], doAnimate );
+ },
+
+ showTab: function( accordionTab, animate ) {
+
+ var doAnimate = arguments.length == 1 ? true : animate;
+
+ if ( this.options.onHideTab )
+ this.options.onHideTab(this.lastExpandedTab);
+
+ this.lastExpandedTab.showCollapsed();
+ var accordion = this;
+ var lastExpandedTab = this.lastExpandedTab;
+
+ this.lastExpandedTab.content.style.height = (this.options.panelHeight
- 1) + 'px';
+ accordionTab.content.style.display = '';
+
+ accordionTab.titleBar.style.fontWeight =
this.options.expandedFontWeight;
+
+ if ( doAnimate ) {
+ new Effect.AccordionSize( this.lastExpandedTab.content,
+ accordionTab.content,
+ 1,
+ this.options.panelHeight,
+ 100, 10,
+ { complete: function()
{accordion.showTabDone(lastExpandedTab)} } );
+ this.lastExpandedTab = accordionTab;
+ }
+ else {
+ this.lastExpandedTab.content.style.height = "1px";
+ accordionTab.content.style.height = this.options.panelHeight + "px";
+ this.lastExpandedTab = accordionTab;
+ this.showTabDone(lastExpandedTab);
+ }
+ },
+
+ showTabDone: function(collapsedTab) {
+ collapsedTab.content.style.display = 'none';
+ this.lastExpandedTab.showExpanded();
+ if ( this.options.onShowTab )
+ this.options.onShowTab(this.lastExpandedTab);
+ },
+
+ _attachBehaviors: function() {
+ var panels = this._getDirectChildrenByTag(this.container, 'DIV');
+ for ( var i = 0 ; i < panels.length ; i++ ) {
+
+ var tabChildren = this._getDirectChildrenByTag(panels[i],'DIV');
+ if ( tabChildren.length != 2 )
+ continue; // unexpected
+
+ var tabTitleBar = tabChildren[0];
+ var tabContentBox = tabChildren[1];
+ this.accordionTabs.push( new
Rico.Accordion.Tab(this,tabTitleBar,tabContentBox) );
+ }
+ },
+
+ _getDirectChildrenByTag: function(e, tagName) {
+ var kids = new Array();
+ var allKids = e.childNodes;
+ for( var i = 0 ; i < allKids.length ; i++ )
+ if ( allKids[i] && allKids[i].tagName && allKids[i].tagName ==
tagName )
+ kids.push(allKids[i]);
+ return kids;
+ }
+
+};
+
+Rico.Accordion.Tab = Class.create();
+
+Rico.Accordion.Tab.prototype = {
+
+ initialize: function(accordion, titleBar, content) {
+ this.accordion = accordion;
+ this.titleBar = titleBar;
+ this.content = content;
+ this._attachBehaviors();
+ },
+
+ collapse: function() {
+ this.showCollapsed();
+ this.content.style.height = "1px";
+ },
+
+ showCollapsed: function() {
+ this.expanded = false;
+ this.titleBar.style.backgroundColor =
this.accordion.options.collapsedBg;
+ this.titleBar.style.color =
this.accordion.options.collapsedTextColor;
+ this.titleBar.style.fontWeight =
this.accordion.options.collapsedFontWeight;
+ this.content.style.overflow = "hidden";
+ },
+
+ showExpanded: function() {
+ this.expanded = true;
+ this.titleBar.style.backgroundColor =
this.accordion.options.expandedBg;
+ this.titleBar.style.color =
this.accordion.options.expandedTextColor;
+ this.content.style.overflow = "visible";
+ },
+
+ titleBarClicked: function(e) {
+ if ( this.accordion.lastExpandedTab == this )
+ return;
+ this.accordion.showTab(this);
+ },
+
+ hover: function(e) {
+ this.titleBar.style.backgroundColor =
this.accordion.options.hoverBg;
+ this.titleBar.style.color =
this.accordion.options.hoverTextColor;
+ },
+
+ unhover: function(e) {
+ if ( this.expanded ) {
+ this.titleBar.style.backgroundColor =
this.accordion.options.expandedBg;
+ this.titleBar.style.color =
this.accordion.options.expandedTextColor;
+ }
+ else {
+ this.titleBar.style.backgroundColor =
this.accordion.options.collapsedBg;
+ this.titleBar.style.color =
this.accordion.options.collapsedTextColor;
+ }
+ },
+
+ _attachBehaviors: function() {
+ this.content.style.border = "1px solid " +
this.accordion.options.borderColor;
+ this.content.style.borderTopWidth = "0px";
+ this.content.style.borderBottomWidth = "0px";
+ this.content.style.margin = "0px";
+
+ this.titleBar.onclick =
this.titleBarClicked.bindAsEventListener(this);
+ this.titleBar.onmouseover = this.hover.bindAsEventListener(this);
+ this.titleBar.onmouseout = this.unhover.bindAsEventListener(this);
+ }
+
+};
+
+
+//-------------------- ricoAjaxEngine.js
+
+Rico.AjaxEngine = Class.create();
+
+Rico.AjaxEngine.prototype = {
+
+ initialize: function() {
+ this.ajaxElements = new Array();
+ this.ajaxObjects = new Array();
+ this.requestURLS = new Array();
+ },
+
+ registerAjaxElement: function( anId, anElement ) {
+ if ( arguments.length == 1 )
+ anElement = $(anId);
+ this.ajaxElements[anId] = anElement;
+ },
+
+ registerAjaxObject: function( anId, anObject ) {
+ this.ajaxObjects[anId] = anObject;
+ },
+
+ registerRequest: function (requestLogicalName, requestURL) {
+ this.requestURLS[requestLogicalName] = requestURL;
+ },
+
+ sendRequest: function(requestName) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 1 )
+ queryString = this._createQueryString(arguments, 1);
+
+ new Ajax.Request(requestURL, this._requestOptions(queryString));
+ },
+
+ sendRequestWithData: function(requestName, xmlDocument) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 2 )
+ queryString = this._createQueryString(arguments, 2);
+
+ new Ajax.Request(requestURL + (requestURL.indexOf("?")<0?"?":"&") +
queryString, this._requestOptions(null,xmlDocument));
+ },
+
+ sendRequestAndUpdate: function(requestName,container,options) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 3 )
+ queryString = this._createQueryString(arguments, 3);
+
+ var updaterOptions = this._requestOptions(queryString);
+ updaterOptions.onComplete = null;
+ updaterOptions.extend(options);
+
+ new Ajax.Updater(container, requestURL, updaterOptions);
+ },
+
+ sendRequestWithDataAndUpdate:
function(requestName,xmlDocument,container,options) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 4 )
+ queryString = this._createQueryString(arguments, 4);
+
+
+ var updaterOptions = this._requestOptions(queryString,xmlDocument);
+ updaterOptions.onComplete = null;
+ updaterOptions.extend(options);
+
+ new Ajax.Updater(container, requestURL +
(requestURL.indexOf("?")<0?"?":"&") + queryString, updaterOptions);
+ },
+
+ // Private -- not part of intended engine API
--------------------------------------------------------------------
+
+ _requestOptions: function(queryString,xmlDoc) {
+ var self = this;
+
+ var requestHeaders = ['X-Rico-Version', Rico.Version ];
+ var sendMethod = "post"
+ if ( arguments[1] )
+ requestHeaders.push( 'Content-type', 'text/xml' );
+ else
+ sendMethod = "get";
+
+ return { requestHeaders: requestHeaders,
+ parameters: queryString,
+ postBody: arguments[1] ? xmlDoc : null,
+ method: sendMethod,
+ onComplete: self._onRequestComplete.bind(self) };
+ },
+
+ _createQueryString: function( theArgs, offset ) {
+ var queryString = ""
+ for ( var i = offset ; i < theArgs.length ; i++ ) {
+ if ( i != offset )
+ queryString += "&";
+
+ var anArg = theArgs[i];
+
+ if ( anArg.name != undefined && anArg.value != undefined ) {
+ queryString += anArg.name + "=" + escape(anArg.value);
+ }
+ else {
+ var ePos = anArg.indexOf('=');
+ var argName = anArg.substring( 0, ePos );
+ var argValue = anArg.substring( ePos + 1 );
+ queryString += argName + "=" + escape(argValue);
+ }
+ }
+
+ return queryString;
+ },
+
+ _onRequestComplete : function(request) {
+
+ //!!TODO: error handling infrastructure??
+ if (request.status != 200)
+ return;
+
+ var response =
request.responseXML.getElementsByTagName("ajax-response");
+
+ if (response == null || response.length != 1)
+ return;
+ this._processAjaxResponse( response[0].childNodes );
+ },
+
+ _processAjaxResponse: function( xmlResponseElements ) {
+ for ( var i = 0 ; i < xmlResponseElements.length ; i++ ) {
+ var responseElement = xmlResponseElements[i];
+
+ // only process nodes of type element.....
+ if ( responseElement.nodeType != 1 )
+ continue;
+
+ var responseType = responseElement.getAttribute("type");
+ var responseId = responseElement.getAttribute("id");
+
+ if ( responseType == "object" )
+ this._processAjaxObjectUpdate( this.ajaxObjects[ responseId ],
responseElement );
+ else if ( responseType == "element" )
+ this._processAjaxElementUpdate( this.ajaxElements[ responseId ],
responseElement );
+ else
+ alert('unrecognized AjaxResponse type : ' + responseType );
+ }
+ },
+
+ _processAjaxObjectUpdate: function( ajaxObject, responseElement ) {
+ ajaxObject.ajaxUpdate( responseElement );
+ },
+
+ _processAjaxElementUpdate: function( ajaxElement, responseElement ) {
+ ajaxElement.innerHTML = RicoUtil.getContentAsString(responseElement);
+ }
+
+}
+
+var ajaxEngine = new Rico.AjaxEngine();
+
+
+//-------------------- ricoColor.js
+Rico.Color = Class.create();
+
+Rico.Color.prototype = {
+
+ initialize: function(red, green, blue) {
+ this.rgb = { r: red, g : green, b : blue };
+ },
+
+ setRed: function(r) {
+ this.rgb.r = r;
+ },
+
+ setGreen: function(g) {
+ this.rgb.g = g;
+ },
+
+ setBlue: function(b) {
+ this.rgb.b = b;
+ },
+
+ setHue: function(h) {
+
+ // get an HSB model, and set the new hue...
+ var hsb = this.asHSB();
+ hsb.h = h;
+
+ // convert back to RGB...
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, hsb.b);
+ },
+
+ setSaturation: function(s) {
+ // get an HSB model, and set the new hue...
+ var hsb = this.asHSB();
+ hsb.s = s;
+
+ // convert back to RGB and set values...
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, hsb.b);
+ },
+
+ setBrightness: function(b) {
+ // get an HSB model, and set the new hue...
+ var hsb = this.asHSB();
+ hsb.b = b;
+
+ // convert back to RGB and set values...
+ this.rgb = Rico.Color.HSBtoRGB( hsb.h, hsb.s, hsb.b );
+ },
+
+ darken: function(percent) {
+ var hsb = this.asHSB();
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, Math.max(hsb.b -
percent,0));
+ },
+
+ brighten: function(percent) {
+ var hsb = this.asHSB();
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, Math.min(hsb.b +
percent,1));
+ },
+
+ blend: function(other) {
+ this.rgb.r = Math.floor((this.rgb.r + other.rgb.r)/2);
+ this.rgb.g = Math.floor((this.rgb.g + other.rgb.g)/2);
+ this.rgb.b = Math.floor((this.rgb.b + other.rgb.b)/2);
+ },
+
+ isBright: function() {
+ var hsb = this.asHSB();
+ return this.asHSB().b > 0.5;
+ },
+
+ isDark: function() {
+ return ! this.isBright();
+ },
+
+ asRGB: function() {
+ return "rgb(" + this.rgb.r + "," + this.rgb.g + "," + this.rgb.b + ")";
+ },
+
+ asHex: function() {
+ return "#" + this.rgb.r.toColorPart() + this.rgb.g.toColorPart() +
this.rgb.b.toColorPart();
+ },
+
+ asHSB: function() {
+ return Rico.Color.RGBtoHSB(this.rgb.r, this.rgb.g, this.rgb.b);
+ },
+
+ toString: function() {
+ return this.asHex();
+ }
+
+};
+
+Rico.Color.createFromHex = function(hexCode) {
+
+ if ( hexCode.indexOf('#') == 0 )
+ hexCode = hexCode.substring(1);
+ var red = hexCode.substring(0,2);
+ var green = hexCode.substring(2,4);
+ var blue = hexCode.substring(4,6);
+ return new Rico.Color( parseInt(red,16), parseInt(green,16),
parseInt(blue,16) );
+}
+
+/**
+ * Factory method for creating a color from the background of
+ * an HTML element.
+ */
+Rico.Color.createColorFromBackground = function(elem) {
+
+ var actualColor = RicoUtil.getElementsComputedStyle($(elem),
"backgroundColor", "background-color");
+
+ if ( actualColor == "transparent" && elem.parent )
+ return Rico.Color.createColorFromBackground(elem.parent);
+
+ if ( actualColor == null )
+ return new Rico.Color(255,255,255);
+
+ if ( actualColor.indexOf("rgb(") == 0 ) {
+ var colors = actualColor.substring(4, actualColor.length - 1 );
+ var colorArray = colors.split(",");
+ return new Rico.Color( parseInt( colorArray[0] ),
+ parseInt( colorArray[1] ),
+ parseInt( colorArray[2] ) );
+
+ }
+ else if ( actualColor.indexOf("#") == 0 ) {
+ var redPart = parseInt(actualColor.substring(1,3), 16);
+ var greenPart = parseInt(actualColor.substring(3,5), 16);
+ var bluePart = parseInt(actualColor.substring(5), 16);
+ return new Rico.Color( redPart, greenPart, bluePart );
+ }
+ else
+ return new Rico.Color(255,255,255);
+}
+
+Rico.Color.HSBtoRGB = function(hue, saturation, brightness) {
+
+ var red = 0;
+ var green = 0;
+ var blue = 0;
+
+ if (saturation == 0) {
+ red = parseInt(brightness * 255.0 + 0.5);
+ green = red;
+ blue = red;
+ }
+ else {
+ var h = (hue - Math.floor(hue)) * 6.0;
+ var f = h - Math.floor(h);
+ var p = brightness * (1.0 - saturation);
+ var q = brightness * (1.0 - saturation * f);
+ var t = brightness * (1.0 - (saturation * (1.0 - f)));
+
+ switch (parseInt(h)) {
+ case 0:
+ red = (brightness * 255.0 + 0.5);
+ green = (t * 255.0 + 0.5);
+ blue = (p * 255.0 + 0.5);
+ break;
+ case 1:
+ red = (q * 255.0 + 0.5);
+ green = (brightness * 255.0 + 0.5);
+ blue = (p * 255.0 + 0.5);
+ break;
+ case 2:
+ red = (p * 255.0 + 0.5);
+ green = (brightness * 255.0 + 0.5);
+ blue = (t * 255.0 + 0.5);
+ break;
+ case 3:
+ red = (p * 255.0 + 0.5);
+ green = (q * 255.0 + 0.5);
+ blue = (brightness * 255.0 + 0.5);
+ break;
+ case 4:
+ red = (t * 255.0 + 0.5);
+ green = (p * 255.0 + 0.5);
+ blue = (brightness * 255.0 + 0.5);
+ break;
+ case 5:
+ red = (brightness * 255.0 + 0.5);
+ green = (p * 255.0 + 0.5);
+ blue = (q * 255.0 + 0.5);
+ break;
+ }
+ }
+
+ return { r : parseInt(red), g : parseInt(green) , b : parseInt(blue) };
+}
+
+Rico.Color.RGBtoHSB = function(r, g, b) {
+
+ var hue;
+ var saturaton;
+ var brightness;
+
+ var cmax = (r > g) ? r : g;
+ if (b > cmax)
+ cmax = b;
+
+ var cmin = (r < g) ? r : g;
+ if (b < cmin)
+ cmin = b;
+
+ brightness = cmax / 255.0;
+ if (cmax != 0)
+ saturation = (cmax - cmin)/cmax;
+ else
+ saturation = 0;
+
+ if (saturation == 0)
+ hue = 0;
+ else {
+ var redc = (cmax - r)/(cmax - cmin);
+ var greenc = (cmax - g)/(cmax - cmin);
+ var bluec = (cmax - b)/(cmax - cmin);
+
+ if (r == cmax)
+ hue = bluec - greenc;
+ else if (g == cmax)
+ hue = 2.0 + redc - bluec;
+ else
+ hue = 4.0 + greenc - redc;
+
+ hue = hue / 6.0;
+ if (hue < 0)
+ hue = hue + 1.0;
+ }
+
+ return { h : hue, s : saturation, b : brightness };
+}
+
+
+//-------------------- ricoCorner.js
+
+Rico.Corner = {
+
+ round: function(e, options) {
+ var e = $(e);
+ this._setOptions(options);
+
+ var color = this.options.color;
+ if ( this.options.color == "fromElement" )
+ color = this._background(e);
+
+ var bgColor = this.options.bgColor;
+ if ( this.options.bgColor == "fromParent" )
+ bgColor = this._background(e.offsetParent);
+
+ this._roundCornersImpl(e, color, bgColor);
+ },
+
+ _roundCornersImpl: function(e, color, bgColor) {
+ if(this.options.border)
+ this._renderBorder(e,bgColor);
+ if(this._isTopRounded())
+ this._roundTopCorners(e,color,bgColor);
+ if(this._isBottomRounded())
+ this._roundBottomCorners(e,color,bgColor);
+ },
+
+ _renderBorder: function(el,bgColor) {
+ var borderValue = "1px solid " + this._borderColor(bgColor);
+ var borderL = "border-left: " + borderValue;
+ var borderR = "border-right: " + borderValue;
+ var style = "style='" + borderL + ";" + borderR + "'";
+ el.innerHTML = "<div " + style + ">" + el.innerHTML + "</div>"
+ },
+
+ _roundTopCorners: function(el, color, bgColor) {
+ var corner = this._createCorner(bgColor);
+ for(var i=0 ; i < this.options.numSlices ; i++ )
+ corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));
+ el.style.paddingTop = 0;
+ el.insertBefore(corner,el.firstChild);
+ },
+
+ _roundBottomCorners: function(el, color, bgColor) {
+ var corner = this._createCorner(bgColor);
+ for(var i=(this.options.numSlices-1) ; i >= 0 ; i-- )
+
corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));
+ el.style.paddingBottom = 0;
+ el.appendChild(corner);
+ },
+
+ _createCorner: function(bgColor) {
+ var corner = document.createElement("div");
+ corner.style.backgroundColor = (this._isTransparent() ? "transparent"
: bgColor);
+ return corner;
+ },
+
+ _createCornerSlice: function(color,bgColor, n, position) {
+ var slice = document.createElement("span");
+
+ var inStyle = slice.style;
+ inStyle.backgroundColor = color;
+ inStyle.display = "block";
+ inStyle.height = "1px";
+ inStyle.overflow = "hidden";
+ inStyle.fontSize = "1px";
+
+ var borderColor = this._borderColor(color,bgColor);
+ if ( this.options.border && n == 0 ) {
+ inStyle.borderTopStyle = "solid";
+ inStyle.borderTopWidth = "1px";
+ inStyle.borderLeftWidth = "0px";
+ inStyle.borderRightWidth = "0px";
+ inStyle.borderBottomWidth = "0px";
+ inStyle.height = "0px"; // assumes css compliant box
model
+ inStyle.borderColor = borderColor;
+ }
+ else if(borderColor) {
+ inStyle.borderColor = borderColor;
+ inStyle.borderStyle = "solid";
+ inStyle.borderWidth = "0px 1px";
+ }
+
+ if ( !this.options.compact && (n == (this.options.numSlices-1)) )
+ inStyle.height = "2px";
+
+ this._setMargin(slice, n, position);
+ this._setBorder(slice, n, position);
+
+ return slice;
+ },
+
+ _setOptions: function(options) {
+ this.options = {
+ corners : "all",
+ color : "fromElement",
+ bgColor : "fromParent",
+ blend : true,
+ border : false,
+ compact : false
+ }.extend(options || {});
+
+ this.options.numSlices = this.options.compact ? 2 : 4;
+ if ( this._isTransparent() )
+ this.options.blend = false;
+ },
+
+ _whichSideTop: function() {
+ if ( this._hasString(this.options.corners, "all", "top") )
+ return "";
+
+ if ( this.options.corners.indexOf("tl") >= 0 &&
this.options.corners.indexOf("tr") >= 0 )
+ return "";
+
+ if (this.options.corners.indexOf("tl") >= 0)
+ return "left";
+ else if (this.options.corners.indexOf("tr") >= 0)
+ return "right";
+ return "";
+ },
+
+ _whichSideBottom: function() {
+ if ( this._hasString(this.options.corners, "all", "bottom") )
+ return "";
+
+ if ( this.options.corners.indexOf("bl")>=0 &&
this.options.corners.indexOf("br")>=0 )
+ return "";
+
+ if(this.options.corners.indexOf("bl") >=0)
+ return "left";
+ else if(this.options.corners.indexOf("br")>=0)
+ return "right";
+ return "";
+ },
+
+ _borderColor : function(color,bgColor) {
+ if ( color == "transparent" )
+ return bgColor;
+ else if ( this.options.border )
+ return this.options.border;
+ else if ( this.options.blend )
+ return this._blend( bgColor, color );
+ else
+ return "";
+ },
+
+
+ _setMargin: function(el, n, corners) {
+ var marginSize = this._marginSize(n);
+ var whichSide = corners == "top" ? this._whichSideTop() :
this._whichSideBottom();
+
+ if ( whichSide == "left" ) {
+ el.style.marginLeft = marginSize + "px"; el.style.marginRight =
"0px";
+ }
+ else if ( whichSide == "right" ) {
+ el.style.marginRight = marginSize + "px"; el.style.marginLeft =
"0px";
+ }
+ else {
+ el.style.marginLeft = marginSize + "px"; el.style.marginRight =
marginSize + "px";
+ }
+ },
+
+ _setBorder: function(el,n,corners) {
+ var borderSize = this._borderSize(n);
+ var whichSide = corners == "top" ? this._whichSideTop() :
this._whichSideBottom();
+
+ if ( whichSide == "left" ) {
+ el.style.borderLeftWidth = borderSize + "px";
el.style.borderRightWidth = "0px";
+ }
+ else if ( whichSide == "right" ) {
+ el.style.borderRightWidth = borderSize + "px";
el.style.borderLeftWidth = "0px";
+ }
+ else {
+ el.style.borderLeftWidth = borderSize + "px";
el.style.borderRightWidth = borderSize + "px";
+ }
+ },
+
+ _marginSize: function(n) {
+ if ( this._isTransparent() )
+ return 0;
+
+ var marginSizes = [ 5, 3, 2, 1 ];
+ var blendedMarginSizes = [ 3, 2, 1, 0 ];
+ var compactMarginSizes = [ 2, 1 ];
+ var smBlendedMarginSizes = [ 1, 0 ];
+
+ if ( this.options.compact && this.options.blend )
+ return smBlendedMarginSizes[n];
+ else if ( this.options.compact )
+ return compactMarginSizes[n];
+ else if ( this.options.blend )
+ return blendedMarginSizes[n];
+ else
+ return marginSizes[n];
+ },
+
+ _borderSize: function(n) {
+ var transparentBorderSizes = [ 5, 3, 2, 1 ];
+ var blendedBorderSizes = [ 2, 1, 1, 1 ];
+ var compactBorderSizes = [ 1, 0 ];
+ var actualBorderSizes = [ 0, 2, 0, 0 ];
+
+ if ( this.options.compact && (this.options.blend ||
this._isTransparent()) )
+ return 1;
+ else if ( this.options.compact )
+ return compactBorderSizes[n];
+ else if ( this.options.blend )
+ return blendedBorderSizes[n];
+ else if ( this.options.border )
+ return actualBorderSizes[n];
+ else if ( this._isTransparent() )
+ return transparentBorderSizes[n];
+ return 0;
+ },
+
+ _hasString: function(str) { for(var i=1 ; i<arguments.length ; i++) if
(str.indexOf(arguments[i]) >= 0) return true; return false; },
+ _blend: function(c1, c2) { var cc1 = Rico.Color.createFromHex(c1);
cc1.blend(Rico.Color.createFromHex(c2)); return cc1; },
+ _background: function(el) { try { return
Rico.Color.createColorFromBackground(el).asHex(); } catch(err) { return
"#ffffff"; } },
+ _isTransparent: function() { return this.options.color == "transparent";
},
+ _isTopRounded: function() { return this._hasString(this.options.corners,
"all", "top", "tl", "tr"); },
+ _isBottomRounded: function() { return
this._hasString(this.options.corners, "all", "bottom", "bl", "br"); },
+ _hasSingleTextChild: function(el) { return el.childNodes.length == 1 &&
el.childNodes[0].nodeType == 3; }
+}
+
+
+//-------------------- ricoDragAndDrop.js
+Rico.DragAndDrop = Class.create();
+
+Rico.DragAndDrop.prototype = {
+
+ initialize: function() {
+ this.dropZones = new Array();
+ this.draggables = new Array();
+ this.currentDragObjects = new Array();
+ this.dragElement = null;
+ this.lastSelectedDraggable = null;
+ this.currentDragObjectVisible = false;
+ this.interestedInMotionEvents = false;
+ },
+
+ registerDropZone: function(aDropZone) {
+ this.dropZones[ this.dropZones.length ] = aDropZone;
+ },
+
+ deregisterDropZone: function(aDropZone) {
+ var newDropZones = new Array();
+ var j = 0;
+ for ( var i = 0 ; i < this.dropZones.length ; i++ ) {
+ if ( this.dropZones[i] != aDropZone )
+ newDropZones[j++] = this.dropZones[i];
+ }
+
+ this.dropZones = newDropZones;
+ },
+
+ clearDropZones: function() {
+ this.dropZones = new Array();
+ },
+
+ registerDraggable: function( aDraggable ) {
+ this.draggables[ this.draggables.length ] = aDraggable;
+ this._addMouseDownHandler( aDraggable );
+ },
+
+ clearSelection: function() {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].deselect();
+ this.currentDragObjects = new Array();
+ this.lastSelectedDraggable = null;
+ },
+
+ hasSelection: function() {
+ return this.currentDragObjects.length > 0;
+ },
+
+ setStartDragFromElement: function( e, mouseDownElement ) {
+ this.origPos = RicoUtil.toDocumentPosition(mouseDownElement);
+ this.startx = e.screenX - this.origPos.x
+ this.starty = e.screenY - this.origPos.y
+ //this.startComponentX = e.layerX ? e.layerX : e.offsetX;
+ //this.startComponentY = e.layerY ? e.layerY : e.offsetY;
+ //this.adjustedForDraggableSize = false;
+
+ this.interestedInMotionEvents = this.hasSelection();
+ this._terminateEvent(e);
+ },
+
+ updateSelection: function( draggable, extendSelection ) {
+ if ( ! extendSelection )
+ this.clearSelection();
+
+ if ( draggable.isSelected() ) {
+ this.currentDragObjects.removeItem(draggable);
+ draggable.deselect();
+ if ( draggable == this.lastSelectedDraggable )
+ this.lastSelectedDraggable = null;
+ }
+ else {
+ this.currentDragObjects[ this.currentDragObjects.length ] =
draggable;
+ draggable.select();
+ this.lastSelectedDraggable = draggable;
+ }
+ },
+
+ _mouseDownHandler: function(e) {
+ if ( arguments.length == 0 )
+ e = event;
+
+ // if not button 1 ignore it...
+ var nsEvent = e.which != undefined;
+ if ( (nsEvent && e.which != 1) || (!nsEvent && e.button != 1))
+ return;
+
+ var eventTarget = e.target ? e.target : e.srcElement;
+ var draggableObject = eventTarget.draggable;
+
+ var candidate = eventTarget;
+ while (draggableObject == null && candidate.parentNode) {
+ candidate = candidate.parentNode;
+ draggableObject = candidate.draggable;
+ }
+
+ if ( draggableObject == null )
+ return;
+
+ this.updateSelection( draggableObject, e.ctrlKey );
+
+ // clear the drop zones postion cache...
+ if ( this.hasSelection() )
+ for ( var i = 0 ; i < this.dropZones.length ; i++ )
+ this.dropZones[i].clearPositionCache();
+
+ this.setStartDragFromElement( e,
draggableObject.getMouseDownHTMLElement() );
+ },
+
+
+ _mouseMoveHandler: function(e) {
+ var nsEvent = e.which != undefined;
+ if ( !this.interestedInMotionEvents ) {
+ this._terminateEvent(e);
+ return;
+ }
+
+ if ( ! this.hasSelection() )
+ return;
+
+ if ( ! this.currentDragObjectVisible )
+ this._startDrag(e);
+
+ if ( !this.activatedDropZones )
+ this._activateRegisteredDropZones();
+
+ //if ( !this.adjustedForDraggableSize )
+ // this._adjustForDraggableSize(e);
+
+ this._updateDraggableLocation(e);
+ this._updateDropZonesHover(e);
+
+ this._terminateEvent(e);
+ },
+
+ _makeDraggableObjectVisible: function(e)
+ {
+ if ( !this.hasSelection() )
+ return;
+
+ var dragElement;
+ if ( this.currentDragObjects.length > 1 )
+ dragElement =
this.currentDragObjects[0].getMultiObjectDragGUI(this.currentDragObjects);
+ else
+ dragElement = this.currentDragObjects[0].getSingleObjectDragGUI();
+
+ // go ahead and absolute position it...
+ if ( RicoUtil.getElementsComputedStyle(dragElement, "position") !=
"absolute" )
+ dragElement.style.position = "absolute";
+
+ // need to parent him into the document...
+ if ( dragElement.parentNode == null || dragElement.parentNode.nodeType
== 11 )
+ document.body.appendChild(dragElement);
+
+ this.dragElement = dragElement;
+ this._updateDraggableLocation(e);
+
+ this.currentDragObjectVisible = true;
+ },
+
+ /**
+ _adjustForDraggableSize: function(e) {
+ var dragElementWidth = this.dragElement.offsetWidth;
+ var dragElementHeight = this.dragElement.offsetHeight;
+ if ( this.startComponentX > dragElementWidth )
+ this.startx -= this.startComponentX - dragElementWidth + 2;
+ if ( e.offsetY ) {
+ if ( this.startComponentY > dragElementHeight )
+ this.starty -= this.startComponentY - dragElementHeight + 2;
+ }
+ this.adjustedForDraggableSize = true;
+ },
+ **/
+
+ _updateDraggableLocation: function(e) {
+ var dragObjectStyle = this.dragElement.style;
+ dragObjectStyle.left = (e.screenX - this.startx) + "px"
+ dragObjectStyle.top = (e.screenY - this.starty) + "px";
+ },
+
+ _updateDropZonesHover: function(e) {
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ ) {
+ if ( ! this._mousePointInDropZone( e, this.dropZones[i] ) )
+ this.dropZones[i].hideHover();
+ }
+
+ for ( var i = 0 ; i < n ; i++ ) {
+ if ( this._mousePointInDropZone( e, this.dropZones[i] ) ) {
+ if ( this.dropZones[i].canAccept(this.currentDragObjects) )
+ this.dropZones[i].showHover();
+ }
+ }
+ },
+
+ _startDrag: function(e) {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].startDrag();
+
+ this._makeDraggableObjectVisible(e);
+ },
+
+ _mouseUpHandler: function(e) {
+ if ( ! this.hasSelection() )
+ return;
+
+ var nsEvent = e.which != undefined;
+ if ( (nsEvent && e.which != 1) || (!nsEvent && e.button != 1))
+ return;
+
+ this.interestedInMotionEvents = false;
+
+ if ( this.dragElement == null ) {
+ this._terminateEvent(e);
+ return;
+ }
+
+ if ( this._placeDraggableInDropZone(e) )
+ this._completeDropOperation(e);
+ else {
+ this._terminateEvent(e);
+ new Effect.Position( this.dragElement,
+ this.origPos.x,
+ this.origPos.y,
+ 200,
+ 20,
+ { complete :
this._doCancelDragProcessing.bind(this) } );
+ }
+ },
+
+ _completeDropOperation: function(e) {
+ if ( this.dragElement !=
this.currentDragObjects[0].getMouseDownHTMLElement() ) {
+ if ( this.dragElement.parentNode != null )
+ this.dragElement.parentNode.removeChild(this.dragElement);
+ }
+
+ this._deactivateRegisteredDropZones();
+ this._endDrag();
+ this.clearSelection();
+ this.dragElement = null;
+ this.currentDragObjectVisible = false;
+ this._terminateEvent(e);
+ },
+
+ _doCancelDragProcessing: function() {
+ this._cancelDrag();
+
+ if ( this.dragElement !=
this.currentDragObjects[0].getMouseDownHTMLElement() ) {
+ if ( this.dragElement.parentNode != null ) {
+ this.dragElement.parentNode.removeChild(this.dragElement);
+ }
+ }
+
+ this._deactivateRegisteredDropZones();
+ this.dragElement = null;
+ this.currentDragObjectVisible = false;
+ },
+
+ _placeDraggableInDropZone: function(e) {
+ var foundDropZone = false;
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ ) {
+ if ( this._mousePointInDropZone( e, this.dropZones[i] ) ) {
+ if ( this.dropZones[i].canAccept(this.currentDragObjects) ) {
+ this.dropZones[i].hideHover();
+ this.dropZones[i].accept(this.currentDragObjects);
+ foundDropZone = true;
+ break;
+ }
+ }
+ }
+
+ return foundDropZone;
+ },
+
+ _cancelDrag: function() {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].cancelDrag();
+ },
+
+ _endDrag: function() {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].endDrag();
+ },
+
+ _mousePointInDropZone: function( e, dropZone ) {
+
+ var absoluteRect = dropZone.getAbsoluteRect();
+
+ return e.clientX > absoluteRect.left &&
+ e.clientX < absoluteRect.right &&
+ e.clientY > absoluteRect.top &&
+ e.clientY < absoluteRect.bottom;
+ },
+
+ _addMouseDownHandler: function( aDraggable )
+ {
+ var htmlElement = aDraggable.getMouseDownHTMLElement();
+ if ( htmlElement != null ) {
+ htmlElement.draggable = aDraggable;
+ this._addMouseDownEvent( htmlElement );
+ }
+ },
+
+ _activateRegisteredDropZones: function() {
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ ) {
+ var dropZone = this.dropZones[i];
+ if ( dropZone.canAccept(this.currentDragObjects) )
+ dropZone.activate();
+ }
+
+ this.activatedDropZones = true;
+ },
+
+ _deactivateRegisteredDropZones: function() {
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ )
+ this.dropZones[i].deactivate();
+ this.activatedDropZones = false;
+ },
+
+ _addMouseDownEvent: function( htmlElement ) {
+ if ( typeof document.implementation != "undefined" &&
+ document.implementation.hasFeature("HTML", "1.0") &&
+ document.implementation.hasFeature("Events", "2.0") &&
+ document.implementation.hasFeature("CSS", "2.0") ) {
+ htmlElement.addEventListener("mousedown",
this._mouseDownHandler.bindAsEventListener(this), false);
+ }
+ else {
+ htmlElement.attachEvent( "onmousedown",
this._mouseDownHandler.bindAsEventListener(this) );
+ }
+ },
+
+ _terminateEvent: function(e) {
+ if ( e.stopPropagation != undefined )
+ e.stopPropagation();
+ else if ( e.cancelBubble != undefined )
+ e.cancelBubble = true;
+
+ if ( e.preventDefault != undefined )
+ e.preventDefault();
+ else
+ e.returnValue = false;
+ },
+
+ initializeEventHandlers: function() {
+ if ( typeof document.implementation != "undefined" &&
+ document.implementation.hasFeature("HTML", "1.0") &&
+ document.implementation.hasFeature("Events", "2.0") &&
+ document.implementation.hasFeature("CSS", "2.0") ) {
+ document.addEventListener("mouseup",
this._mouseUpHandler.bindAsEventListener(this), false);
+ document.addEventListener("mousemove",
this._mouseMoveHandler.bindAsEventListener(this), false);
+ }
+ else {
+ document.attachEvent( "onmouseup",
this._mouseUpHandler.bindAsEventListener(this) );
+ document.attachEvent( "onmousemove",
this._mouseMoveHandler.bindAsEventListener(this) );
+ }
+ }
+}
+
+var dndMgr = new Rico.DragAndDrop();
+dndMgr.initializeEventHandlers();
+
+
+//-------------------- ricoDraggable.js
+Rico.Draggable = Class.create();
+
+Rico.Draggable.prototype = {
+
+ initialize: function( type, htmlElement ) {
+ this.type = type;
+ this.htmlElement = $(htmlElement);
+ this.selected = false;
+ },
+
+ /**
+ * Returns the HTML element that should have a mouse down event
+ * added to it in order to initiate a drag operation
+ *
+ **/
+ getMouseDownHTMLElement: function() {
+ return this.htmlElement;
+ },
+
+ select: function() {
+ this.selected = true;
+
+ if ( this.showingSelected )
+ return;
+
+ var htmlElement = this.getMouseDownHTMLElement();
+
+ var color = Rico.Color.createColorFromBackground(htmlElement);
+ color.isBright() ? color.darken(0.033) : color.brighten(0.033);
+
+ this.saveBackground = RicoUtil.getElementsComputedStyle(htmlElement,
"backgroundColor", "background-color");
+ htmlElement.style.backgroundColor = color.asHex();
+ this.showingSelected = true;
+ },
+
+ deselect: function() {
+ this.selected = false;
+ if ( !this.showingSelected )
+ return;
+
+ var htmlElement = this.getMouseDownHTMLElement();
+
+ htmlElement.style.backgroundColor = this.saveBackground;
+ this.showingSelected = false;
+ },
+
+ isSelected: function() {
+ return this.selected;
+ },
+
+ startDrag: function() {
+ },
+
+ cancelDrag: function() {
+ },
+
+ endDrag: function() {
+ },
+
+ getSingleObjectDragGUI: function() {
+ return this.htmlElement;
+ },
+
+ getMultiObjectDragGUI: function( draggables ) {
+ return this.htmlElement;
+ },
+
+ getDroppedGUI: function() {
+ return this.htmlElement;
+ },
+
+ toString: function() {
+ return this.type + ":" + this.htmlElement + ":";
+ }
+
+}
+
+
+//-------------------- ricoDropzone.js
+Rico.Dropzone = Class.create();
+
+Rico.Dropzone.prototype = {
+
+ initialize: function( htmlElement ) {
+ this.htmlElement = $(htmlElement);
+ this.absoluteRect = null;
+ },
+
+ getHTMLElement: function() {
+ return this.htmlElement;
+ },
+
+ clearPositionCache: function() {
+ this.absoluteRect = null;
+ },
+
+ getAbsoluteRect: function() {
+ if ( this.absoluteRect == null ) {
+ var htmlElement = this.getHTMLElement();
+ var pos = RicoUtil.toViewportPosition(htmlElement);
+
+ this.absoluteRect = {
+ top: pos.y,
+ left: pos.x,
+ bottom: pos.y + htmlElement.offsetHeight,
+ right: pos.x + htmlElement.offsetWidth
+ };
+ }
+ return this.absoluteRect;
+ },
+
+ activate: function() {
+ var htmlElement = this.getHTMLElement();
+ if (htmlElement == null || this.showingActive)
+ return;
+
+ this.showingActive = true;
+ this.saveBackgroundColor = htmlElement.style.backgroundColor;
+
+ var fallbackColor = "#ffea84";
+ var currentColor = Rico.Color.createColorFromBackground(htmlElement);
+ if ( currentColor == null )
+ htmlElement.style.backgroundColor = fallbackColor;
+ else {
+ currentColor.isBright() ? currentColor.darken(0.2) :
currentColor.brighten(0.2);
+ htmlElement.style.backgroundColor = currentColor.asHex();
+ }
+ },
+
+ deactivate: function() {
+ var htmlElement = this.getHTMLElement();
+ if (htmlElement == null || !this.showingActive)
+ return;
+
+ htmlElement.style.backgroundColor = this.saveBackgroundColor;
+ this.showingActive = false;
+ this.saveBackgroundColor = null;
+ },
+
+ showHover: function() {
+ var htmlElement = this.getHTMLElement();
+ if ( htmlElement == null || this.showingHover )
+ return;
+
+ this.saveBorderWidth = htmlElement.style.borderWidth;
+ this.saveBorderStyle = htmlElement.style.borderStyle;
+ this.saveBorderColor = htmlElement.style.borderColor;
+
+ this.showingHover = true;
+ htmlElement.style.borderWidth = "1px";
+ htmlElement.style.borderStyle = "solid";
+ //htmlElement.style.borderColor = "#ff9900";
+ htmlElement.style.borderColor = "#ffff00";
+ },
+
+ hideHover: function() {
+ var htmlElement = this.getHTMLElement();
+ if ( htmlElement == null || !this.showingHover )
+ return;
+
+ htmlElement.style.borderWidth = this.saveBorderWidth;
+ htmlElement.style.borderStyle = this.saveBorderStyle;
+ htmlElement.style.borderColor = this.saveBorderColor;
+ this.showingHover = false;
+ },
+
+ canAccept: function(draggableObjects) {
+ return true;
+ },
+
+ accept: function(draggableObjects) {
+ var htmlElement = this.getHTMLElement();
+ if ( htmlElement == null )
+ return;
+
+ n = draggableObjects.length;
+ for ( var i = 0 ; i < n ; i++ )
+ {
+ var theGUI = draggableObjects[i].getDroppedGUI();
+ if ( RicoUtil.getElementsComputedStyle( theGUI, "position" ) ==
"absolute" )
+ {
+ theGUI.style.position = "static";
+ theGUI.style.top = "";
+ theGUI.style.top = "";
+ }
+ htmlElement.appendChild(theGUI);
+ }
+ }
+}
+
+
+//-------------------- ricoEffects.js
+
+/**
+ * Use the Effect namespace for effects. If using scriptaculous effects
+ * this will already be defined, otherwise we'll just create an empty
+ * object for it...
+ **/
+if ( window.Effect == undefined )
+ Effect = {};
+
+Effect.SizeAndPosition = Class.create();
+Effect.SizeAndPosition.prototype = {
+
+ initialize: function(element, x, y, w, h, duration, steps, options) {
+ this.element = $(element);
+ this.x = x;
+ this.y = y;
+ this.w = w;
+ this.h = h;
+ this.duration = duration;
+ this.steps = steps;
+ this.options = arguments[7] || {};
+
+ this.sizeAndPosition();
+ },
+
+ sizeAndPosition: function() {
+ if (this.isFinished()) {
+ if(this.options.complete) this.options.complete(this);
+ return;
+ }
+
+ if (this.timer)
+ clearTimeout(this.timer);
+
+ var stepDuration = Math.round(this.duration/this.steps) ;
+
+ // Get original values: x,y = top left corner; w,h = width height
+ var currentX = this.element.offsetLeft;
+ var currentY = this.element.offsetTop;
+ var currentW = this.element.offsetWidth;
+ var currentH = this.element.offsetHeight;
+
+ // If values not set, or zero, we do not modify them, and take
original as final as well
+ this.x = (this.x) ? this.x : currentX;
+ this.y = (this.y) ? this.y : currentY;
+ this.w = (this.w) ? this.w : currentW;
+ this.h = (this.h) ? this.h : currentH;
+
+ // how much do we need to modify our values for each step?
+ var difX = this.steps > 0 ? (this.x - currentX)/this.steps : 0;
+ var difY = this.steps > 0 ? (this.y - currentY)/this.steps : 0;
+ var difW = this.steps > 0 ? (this.w - currentW)/this.steps : 0;
+ var difH = this.steps > 0 ? (this.h - currentH)/this.steps : 0;
+
+ this.moveBy(difX, difY);
+ this.resizeBy(difW, difH);
+
+ this.duration -= stepDuration;
+ this.steps--;
+
+ this.timer = setTimeout(this.sizeAndPosition.bind(this), stepDuration);
+ },
+
+ isFinished: function() {
+ return this.steps <= 0;
+ },
+
+ moveBy: function( difX, difY ) {
+ var currentLeft = this.element.offsetLeft;
+ var currentTop = this.element.offsetTop;
+ var intDifX = parseInt(difX);
+ var intDifY = parseInt(difY);
+
+ var style = this.element.style;
+ if ( intDifX != 0 )
+ style.left = (currentLeft + intDifX) + "px";
+ if ( intDifY != 0 )
+ style.top = (currentTop + intDifY) + "px";
+ },
+
+ resizeBy: function( difW, difH ) {
+ var currentWidth = this.element.offsetWidth;
+ var currentHeight = this.element.offsetHeight;
+ var intDifW = parseInt(difW);
+ var intDifH = parseInt(difH);
+
+ var style = this.element.style;
+ if ( intDifW != 0 )
+ style.width = (currentWidth + intDifW) + "px";
+ if ( intDifH != 0 )
+ style.height = (currentHeight + intDifH) + "px";
+ }
+}
+
+Effect.Size = Class.create();
+Effect.Size.prototype = {
+
+ initialize: function(element, w, h, duration, steps, options) {
+ new Effect.SizeAndPosition(element, null, null, w, h, duration, steps,
options);
+ }
+}
+
+Effect.Position = Class.create();
+Effect.Position.prototype = {
+
+ initialize: function(element, x, y, duration, steps, options) {
+ new Effect.SizeAndPosition(element, x, y, null, null, duration, steps,
options);
+ }
+}
+
+Effect.Round = Class.create();
+Effect.Round.prototype = {
+
+ initialize: function(tagName, className, options) {
+ var elements =
document.getElementsByTagAndClassName(tagName,className);
+ for ( var i = 0 ; i < elements.length ; i++ )
+ Rico.Corner.round( elements[i], options );
+ }
+};
+
+Effect.FadeTo = Class.create();
+Effect.FadeTo.prototype = {
+
+ initialize: function( element, opacity, duration, steps, options) {
+ this.element = $(element);
+ this.opacity = opacity;
+ this.duration = duration;
+ this.steps = steps;
+ this.options = arguments[4] || {};
+ this.fadeTo();
+ },
+
+ fadeTo: function() {
+ if (this.isFinished()) {
+ if(this.options.complete) this.options.complete(this);
+ return;
+ }
+
+ if (this.timer)
+ clearTimeout(this.timer);
+
+ var stepDuration = Math.round(this.duration/this.steps) ;
+ var currentOpacity = this.getElementOpacity();
+ var delta = this.steps > 0 ? (this.opacity -
currentOpacity)/this.steps : 0;
+
+ this.changeOpacityBy(delta);
+ this.duration -= stepDuration;
+ this.steps--;
+
+ this.timer = setTimeout(this.fadeTo.bind(this), stepDuration);
+ },
+
+ changeOpacityBy: function(v) {
+ var currentOpacity = this.getElementOpacity();
+ var newOpacity = Math.max(0, Math.min(currentOpacity+v, 1));
+ this.element.ricoOpacity = newOpacity;
+
+ this.element.style.filter =
"alpha(opacity:"+Math.round(newOpacity*100)+")";
+ this.element.style.opacity = newOpacity; /*//*/;
+ },
+
+ isFinished: function() {
+ return this.steps <= 0;
+ },
+
+ getElementOpacity: function() {
+ if ( this.element.ricoOpacity == undefined ) {
+ var opacity;
+ if ( this.element.currentStyle ) {
+ opacity = this.element.currentStyle.opacity;
+ }
+ else if ( document.defaultView.getComputedStyle != undefined ) {
+ var computedStyle = document.defaultView.getComputedStyle;
+ opacity = computedStyle(this.element,
null).getPropertyValue('opacity');
+ }
+
+ this.element.ricoOpacity = opacity != undefined ? opacity : 1.0;
+ }
+
+ return parseFloat(this.element.ricoOpacity);
+ }
+}
+
+Effect.AccordionSize = Class.create();
+
+Effect.AccordionSize.prototype = {
+
+ initialize: function(e1, e2, start, end, duration, steps, options) {
+ this.e1 = $(e1);
+ this.e2 = $(e2);
+ this.start = start;
+ this.end = end;
+ this.duration = duration;
+ this.steps = steps;
+ this.options = arguments[6] || {};
+
+ this.accordionSize();
+ },
+
+ accordionSize: function() {
+
+ if (this.isFinished()) {
+ // just in case there are round errors or such...
+ this.e1.style.height = this.start + "px";
+ this.e2.style.height = this.end + "px";
+
+ if(this.options.complete)
+ this.options.complete(this);
+ return;
+ }
+
+ if (this.timer)
+ clearTimeout(this.timer);
+
+ var stepDuration = Math.round(this.duration/this.steps) ;
+
+ var diff = this.steps > 0 ? (parseInt(this.e1.offsetHeight) -
this.start)/this.steps : 0;
+ this.resizeBy(diff);
+
+ this.duration -= stepDuration;
+ this.steps--;
+
+ this.timer = setTimeout(this.accordionSize.bind(this), stepDuration);
+ },
+
+ isFinished: function() {
+ return this.steps <= 0;
+ },
+
+ resizeBy: function(diff) {
+ var h1Height = this.e1.offsetHeight;
+ var h2Height = this.e2.offsetHeight;
+ var intDiff = parseInt(diff);
+ if ( diff != 0 ) {
+ this.e1.style.height = (h1Height - intDiff) + "px";
+ this.e2.style.height = (h2Height + intDiff) + "px";
+ }
+ }
+
+};
+
+
+//-------------------- ricoLiveGrid.js
+
+// Rico.LiveGridMetaData
-----------------------------------------------------
+
+Rico.LiveGridMetaData = Class.create();
+
+Rico.LiveGridMetaData.prototype = {
+
+ initialize: function( pageSize, totalRows, columnCount, options ) {
+ this.pageSize = pageSize;
+ this.totalRows = totalRows;
+ this.setOptions(options);
+ this.scrollArrowHeight = 16;
+ this.columnCount = columnCount;
+ },
+
+ setOptions: function(options) {
+ this.options = {
+ largeBufferSize : 7.0, // 7 pages
+ nearLimitFactor : 0.2 // 20% of buffer
+ }.extend(options || {});
+ },
+
+ getPageSize: function() {
+ return this.pageSize;
+ },
+
+ getTotalRows: function() {
+ return this.totalRows;
+ },
+
+ setTotalRows: function(n) {
+ this.totalRows = n;
+ },
+
+ getLargeBufferSize: function() {
+ return parseInt(this.options.largeBufferSize * this.pageSize);
+ },
+
+ getLimitTolerance: function() {
+ return parseInt(this.getLargeBufferSize() *
this.options.nearLimitFactor);
+ }
+};
+
+// Rico.LiveGridScroller
-----------------------------------------------------
+
+Rico.LiveGridScroller = Class.create();
+
+Rico.LiveGridScroller.prototype = {
+
+ initialize: function(liveGrid, viewPort) {
+ this.isIE = navigator.userAgent.toLowerCase().indexOf("msie") >= 0;
+ this.liveGrid = liveGrid;
+ this.metaData = liveGrid.metaData;
+ this.createScrollBar();
+ this.scrollTimeout = null;
+ this.lastScrollPos = 0;
+ this.viewPort = viewPort;
+ this.rows = new Array();
+ },
+
+ isUnPlugged: function() {
+ return this.scrollerDiv.onscroll == null;
+ },
+
+ plugin: function() {
+ this.scrollerDiv.onscroll =
this.handleScroll.bindAsEventListener(this);
+ },
+
+ unplug: function() {
+ this.scrollerDiv.onscroll = null;
+ },
+
+ sizeIEHeaderHack: function() {
+ if ( !this.isIE ) return;
+ var headerTable = $(this.liveGrid.tableId + "_header");
+ if ( headerTable )
+ headerTable.rows[0].cells[0].style.width =
+ (headerTable.rows[0].cells[0].offsetWidth + 1) + "px";
+ },
+
+ createScrollBar: function() {
+ var visibleHeight = this.liveGrid.viewPort.visibleHeight();
+ // create the outer div...
+ this.scrollerDiv = document.createElement("div");
+ var scrollerStyle = this.scrollerDiv.style;
+ scrollerStyle.borderRight = "1px solid #ababab"; // hard coded color!!!
+ scrollerStyle.position = "relative";
+ scrollerStyle.left = this.isIE ? "-6px" : "-3px";
+ scrollerStyle.width = "19px";
+ scrollerStyle.height = visibleHeight + "px";
+ scrollerStyle.overflow = "auto";
+
+ // create the inner div...
+ this.heightDiv = document.createElement("div");
+ this.heightDiv.style.width = "1px";
+
+ this.heightDiv.style.height = parseInt(visibleHeight *
+
this.metaData.getTotalRows()/this.metaData.getPageSize()) + "px" ;
+ this.scrollerDiv.appendChild(this.heightDiv);
+ this.scrollerDiv.onscroll =
this.handleScroll.bindAsEventListener(this);
+
+ var table = this.liveGrid.table;
+ table.parentNode.parentNode.insertBefore( this.scrollerDiv,
table.parentNode.nextSibling );
+ },
+
+ updateSize: function() {
+ var table = this.liveGrid.table;
+ var visibleHeight = this.viewPort.visibleHeight();
+ this.heightDiv.style.height = parseInt(visibleHeight *
+
this.metaData.getTotalRows()/this.metaData.getPageSize()) + "px";
+ },
+
+ rowToPixel: function(rowOffset) {
+ return (rowOffset / this.metaData.getTotalRows()) *
this.heightDiv.offsetHeight
+ },
+
+ moveScroll: function(rowOffset) {
+ this.scrollerDiv.scrollTop = this.rowToPixel(rowOffset);
+ if ( this.metaData.options.onscroll )
+ this.metaData.options.onscroll( this.liveGrid, rowOffset );
+ },
+
+ handleScroll: function() {
+ if ( this.scrollTimeout )
+ clearTimeout( this.scrollTimeout );
+
+ var contentOffset = parseInt(this.scrollerDiv.scrollTop /
this.viewPort.rowHeight);
+ this.liveGrid.requestContentRefresh(contentOffset);
+ this.viewPort.scrollTo(this.scrollerDiv.scrollTop);
+
+ if ( this.metaData.options.onscroll )
+ this.metaData.options.onscroll( this.liveGrid, contentOffset );
+
+ this.scrollTimeout = setTimeout( this.scrollIdle.bind(this), 1200 );
+ },
+
+ scrollIdle: function() {
+ if ( this.metaData.options.onscrollidle )
+ this.metaData.options.onscrollidle();
+ }
+};
+
+// Rico.LiveGridBuffer -----------------------------------------------------
+
+Rico.LiveGridBuffer = Class.create();
+
+Rico.LiveGridBuffer.prototype = {
+
+ initialize: function(metaData, viewPort) {
+ this.startPos = 0;
+ this.size = 0;
+ this.metaData = metaData;
+ this.rows = new Array();
+ this.updateInProgress = false;
+ this.viewPort = viewPort;
+ this.maxBufferSize = metaData.getLargeBufferSize() * 2;
+ this.maxFetchSize = metaData.getLargeBufferSize();
+ this.lastOffset = 0;
+ },
+
+ getBlankRow: function() {
+ if (!this.blankRow ) {
+ this.blankRow = new Array();
+ for ( var i=0; i < this.metaData.columnCount ; i++ )
+ this.blankRow[i] = "&nbsp;";
+ }
+ return this.blankRow;
+ },
+
+ loadRows: function(ajaxResponse) {
+ var rowsElement = ajaxResponse.getElementsByTagName('rows')[0];
+ this.updateUI = rowsElement.getAttribute("update_ui") == "true"
+ var newRows = new Array()
+ var trs = rowsElement.getElementsByTagName("tr");
+ for ( var i=0 ; i < trs.length; i++ ) {
+ var row = newRows[i] = new Array();
+ var cells = trs[i].getElementsByTagName("td");
+ for ( var j=0; j < cells.length ; j++ ) {
+ var cell = cells[j];
+ var convertSpaces = cell.getAttribute("convert_spaces") ==
"true";
+ var cellContent = RicoUtil.getContentAsString(cell);
+ row[j] = convertSpaces ? this.convertSpaces(cellContent) :
cellContent;
+ if (!row[j])
+ row[j] = '&nbsp;';
+ }
+ }
+ return newRows;
+ },
+
+ update: function(ajaxResponse, start) {
+ var newRows = this.loadRows(ajaxResponse);
+ if (this.rows.length == 0) { // initial load
+ this.rows = newRows;
+ this.size = this.rows.length;
+ this.startPos = start;
+ return;
+ }
+ if (start > this.startPos) { //appending
+ if (this.startPos + this.rows.length < start) {
+ this.rows = newRows;
+ this.startPos = start;//
+ } else {
+ this.rows = this.rows.concat( newRows.slice(0,
newRows.length));
+ if (this.rows.length > this.maxBufferSize) {
+ var fullSize = this.rows.length;
+ this.rows = this.rows.slice(this.rows.length -
this.maxBufferSize, this.rows.length)
+ this.startPos = this.startPos + (fullSize -
this.rows.length);
+ }
+ }
+ } else { //prepending
+ if (start + newRows.length < this.startPos) {
+ this.rows = newRows;
+ } else {
+ this.rows = newRows.slice(0, this.startPos).concat(this.rows);
+ if (this.rows.length > this.maxBufferSize)
+ this.rows = this.rows.slice(0, this.maxBufferSize)
+ }
+ this.startPos = start;
+ }
+ this.size = this.rows.length;
+ },
+
+ clear: function() {
+ this.rows = new Array();
+ this.startPos = 0;
+ this.size = 0;
+ },
+
+ isOverlapping: function(start, size) {
+ return ((start < this.endPos()) && (this.startPos < start + size)) ||
(this.endPos() == 0)
+ },
+
+ isInRange: function(position) {
+ return (position >= this.startPos) && (position +
this.metaData.getPageSize() <= this.endPos());
+ //&& this.size() != 0;
+ },
+
+ isNearingTopLimit: function(position) {
+ return position - this.startPos < this.metaData.getLimitTolerance();
+ },
+
+ endPos: function() {
+ return this.startPos + this.rows.length;
+ },
+
+ isNearingBottomLimit: function(position) {
+ return this.endPos() - (position + this.metaData.getPageSize()) <
this.metaData.getLimitTolerance();
+ },
+
+ isAtTop: function() {
+ return this.startPos == 0;
+ },
+
+ isAtBottom: function() {
+ return this.endPos() == this.metaData.getTotalRows();
+ },
+
+ isNearingLimit: function(position) {
+ return ( !this.isAtTop() && this.isNearingTopLimit(position)) ||
+ ( !this.isAtBottom() && this.isNearingBottomLimit(position) )
+ },
+
+ getFetchSize: function(offset) {
+ var adjustedOffset = this.getFetchOffset(offset);
+ var adjustedSize = 0;
+ if (adjustedOffset >= this.startPos) { //apending
+ var endFetchOffset = this.maxFetchSize + adjustedOffset;
+ if (endFetchOffset > this.metaData.totalRows)
+ endFetchOffset = this.metaData.totalRows;
+ adjustedSize = endFetchOffset - adjustedOffset;
+ } else {//prepending
+ var adjustedSize = this.startPos - adjustedOffset;
+ if (adjustedSize > this.maxFetchSize)
+ adjustedSize = this.maxFetchSize;
+ }
+ return adjustedSize;
+ },
+
+ getFetchOffset: function(offset) {
+ var adjustedOffset = offset;
+ if (offset > this.startPos) //apending
+ adjustedOffset = (offset > this.endPos()) ? offset :
this.endPos();
+ else { //prepending
+ if (offset + this.maxFetchSize >= this.startPos) {
+ var adjustedOffset = this.startPos - this.maxFetchSize;
+ if (adjustedOffset < 0)
+ adjustedOffset = 0;
+ }
+ }
+ this.lastOffset = adjustedOffset;
+ return adjustedOffset;
+ },
+
+ getRows: function(start, count) {
+ var begPos = start - this.startPos
+ var endPos = begPos + count
+
+ // er? need more data...
+ if ( endPos > this.size )
+ endPos = this.size
+
+ var results = new Array()
+ var index = 0;
+ for ( var i=begPos ; i < endPos; i++ ) {
+ results[index++] = this.rows[i]
+ }
+ return results
+ },
+
+ convertSpaces: function(s) {
+ return s.split(" ").join("&nbsp;");
+ }
+
+};
+
+
+//Rico.GridViewPort --------------------------------------------------
+Rico.GridViewPort = Class.create();
+
+Rico.GridViewPort.prototype = {
+
+ initialize: function(table, rowHeight, visibleRows, buffer, liveGrid) {
+ this.lastDisplayedStartPos = 0;
+ this.div = table.parentNode;
+ this.table = table
+ this.rowHeight = rowHeight;
+ this.div.style.height = this.rowHeight * visibleRows;
+ this.div.style.overflow = "hidden";
+ this.buffer = buffer;
+ this.liveGrid = liveGrid;
+ this.visibleRows = visibleRows + 1;
+ this.lastPixelOffset = 0;
+ this.startPos = 0;
+ },
+
+ populateRow: function(htmlRow, row) {
+ for (var j=0; j < row.length; j++) {
+ htmlRow.cells[j].innerHTML = row[j]
+ }
+ },
+
+ bufferChanged: function() {
+ this.refreshContents( parseInt(this.lastPixelOffset / this.rowHeight));
+ },
+
+ clearRows: function() {
+ if (!this.isBlank) {
+ for (var i=0; i < this.visibleRows; i++)
+ this.populateRow(this.table.rows[i], this.buffer.getBlankRow());
+ this.isBlank = true;
+ }
+ },
+
+ clearContents: function() {
+ this.clearRows();
+ this.scrollTo(0);
+ this.startPos = 0;
+ this.lastStartPos = -1;
+ },
+
+ refreshContents: function(startPos) {
+ if (startPos == this.lastRowPos && !this.isPartialBlank &&
!this.isBlank) {
+ return;
+ }
+ if ((startPos + this.visibleRows < this.buffer.startPos)
+ || (this.buffer.startPos + this.buffer.size < startPos)
+ || (this.buffer.size == 0)) {
+ this.clearRows();
+ return;
+ }
+ this.isBlank = false;
+ var viewPrecedesBuffer = this.buffer.startPos > startPos
+ var contentStartPos = viewPrecedesBuffer ? this.buffer.startPos:
startPos;
+
+ var contentEndPos = (this.buffer.startPos + this.buffer.size <
startPos + this.visibleRows)
+ ? this.buffer.startPos + this.buffer.size
+ : startPos + this.visibleRows;
+ var rowSize = contentEndPos - contentStartPos;
+ var rows = this.buffer.getRows(contentStartPos, rowSize );
+ var blankSize = this.visibleRows - rowSize;
+ var blankOffset = viewPrecedesBuffer ? 0: rowSize;
+ var contentOffset = viewPrecedesBuffer ? blankSize: 0;
+
+ for (var i=0; i < rows.length; i++) {//initialize what we have
+ this.populateRow(this.table.rows[i + contentOffset], rows[i]);
+ }
+ for (var i=0; i < blankSize; i++) {// blank out the rest
+ this.populateRow(this.table.rows[i + blankOffset],
this.buffer.getBlankRow());
+ }
+ this.isPartialBlank = blankSize > 0;
+ this.lastRowPos = startPos;
+ },
+
+ scrollTo: function(pixelOffset) {
+ if (this.lastPixelOffset == pixelOffset)
+ return;
+
+ this.refreshContents(parseInt(pixelOffset / this.rowHeight))
+ this.div.scrollTop = pixelOffset % this.rowHeight
+
+ this.lastPixelOffset = pixelOffset;
+ },
+
+ visibleHeight: function() {
+ return parseInt(this.div.style.height);
+ }
+
+};
+
+
+Rico.LiveGridRequest = Class.create();
+Rico.LiveGridRequest.prototype = {
+ initialize: function( requestOffset, options ) {
+ this.requestOffset = requestOffset;
+ }
+};
+
+// Rico.LiveGrid -----------------------------------------------------
+
+Rico.LiveGrid = Class.create();
+
+Rico.LiveGrid.prototype = {
+
+ initialize: function( tableId, visibleRows, totalRows, url, options ) {
+ if ( options == null )
+ options = {};
+
+ this.tableId = tableId;
+ this.table = $(tableId);
+ var columnCount = this.table.rows[0].cells.length
+ this.metaData = new Rico.LiveGridMetaData(visibleRows, totalRows,
columnCount, options);
+ this.buffer = new Rico.LiveGridBuffer(this.metaData);
+
+ var rowCount = this.table.rows.length;
+ this.viewPort = new Rico.GridViewPort(this.table,
+ this.table.offsetHeight/rowCount,
+ visibleRows,
+ this.buffer, this);
+ this.scroller = new Rico.LiveGridScroller(this,this.viewPort);
+
+ this.additionalParms = options.requestParameters || [];
+
+ options.sortHandler = this.sortHandler.bind(this);
+
+ if ( $(tableId + '_header') )
+ this.sort = new Rico.LiveGridSort(tableId + '_header', options)
+
+ this.processingRequest = null;
+ this.unprocessedRequest = null;
+
+ this.initAjax(url);
+ if ( options.prefetchBuffer || options.prefetchOffset > 0) {
+ var offset = 0;
+ if (options.offset ) {
+ offset = options.offset;
+ this.scroller.moveScroll(offset);
+ this.viewPort.scrollTo(this.scroller.rowToPixel(offset));

+ }
+ if (options.sortCol) {
+ this.sortCol = options.sortCol;
+ this.sortDir = options.sortDir;
+ }
+ this.requestContentRefresh(offset);
+ }
+ },
+
+ resetContents: function() {
+ this.scroller.moveScroll(0);
+ this.buffer.clear();
+ this.viewPort.clearContents();
+ },
+
+ sortHandler: function(column) {
+ this.sortCol = column.name;
+ this.sortDir = column.currentSort;
+
+ this.resetContents();
+ this.requestContentRefresh(0)
+ },
+
+ setRequestParams: function() {
+ this.additionalParms = [];
+ for ( var i=0 ; i < arguments.length ; i++ )
+ this.additionalParms[i] = arguments[i];
+ },
+
+ setTotalRows: function( newTotalRows ) {
+ this.resetContents();
+ this.metaData.setTotalRows(newTotalRows);
+ this.scroller.updateSize();
+ },
+
+ initAjax: function(url) {
+ ajaxEngine.registerRequest( this.tableId + '_request', url );
+ ajaxEngine.registerAjaxObject( this.tableId + '_updater', this );
+ },
+
+ invokeAjax: function() {
+ },
+
+ handleTimedOut: function() {
+ //server did not respond in 4 seconds... assume that there could have
been
+ //an error or something, and allow requests to be processed again...
+ this.processingRequest = null;
+ this.processQueuedRequest();
+ },
+
+ fetchBuffer: function(offset) {
+ if ( this.buffer.isInRange(offset) &&
+ !this.buffer.isNearingLimit(offset)) {
+ return;
+ }
+ if (this.processingRequest) {
+ this.unprocessedRequest = new Rico.LiveGridRequest(offset);
+ return;
+ }
+ var bufferStartPos = this.buffer.getFetchOffset(offset);
+ this.processingRequest = new Rico.LiveGridRequest(offset);
+ this.processingRequest.bufferOffset = bufferStartPos;
+ var fetchSize = this.buffer.getFetchSize(offset);
+ var partialLoaded = false;
+ var callParms = [];
+ callParms.push(this.tableId + '_request');
+ callParms.push('id=' + this.tableId);
+ callParms.push('page_size=' + fetchSize);
+ callParms.push('offset=' + bufferStartPos);
+ if ( this.sortCol) {
+ callParms.push('sort_col=' + this.sortCol);
+ callParms.push('sort_dir=' + this.sortDir);
+ }
+
+ for( var i=0 ; i < this.additionalParms.length ; i++ )
+ callParms.push(this.additionalParms[i]);
+ ajaxEngine.sendRequest.apply( ajaxEngine, callParms );
+
+ this.timeoutHandler = setTimeout( this.handleTimedOut.bind(this),
20000 ); //todo: make as option
+ },
+
+ requestContentRefresh: function(contentOffset) {
+ this.fetchBuffer(contentOffset);
+ },
+
+ ajaxUpdate: function(ajaxResponse) {
+ try {
+ clearTimeout( this.timeoutHandler );
+
this.buffer.update(ajaxResponse,this.processingRequest.bufferOffset);
+ this.viewPort.bufferChanged();
+ }
+ catch(err) {}
+ finally {this.processingRequest = null; }
+ this.processQueuedRequest();
+ },
+
+ processQueuedRequest: function() {
+ if (this.unprocessedRequest != null) {
+ this.requestContentRefresh(this.unprocessedRequest.requestOffset);
+ this.unprocessedRequest = null
+ }
+ }
+
+};
+
+
+//-------------------- ricoLiveGridSort.js
+Rico.LiveGridSort = Class.create();
+
+Rico.LiveGridSort.prototype = {
+
+ initialize: function(headerTableId, options) {
+ this.headerTableId = headerTableId;
+ this.headerTable = $(headerTableId);
+ this.setOptions(options);
+ this.applySortBehavior();
+
+ if ( this.options.sortCol ) {
+ this.setSortUI( this.options.sortCol, this.options.sortDir );
+ }
+ },
+
+ setSortUI: function( columnName, sortDirection ) {
+ var cols = this.options.columns;
+ for ( var i = 0 ; i < cols.length ; i++ ) {
+ if ( cols[i].name == columnName ) {
+ this.setColumnSort(i, sortDirection);
+ break;
+ }
+ }
+ },
+
+ setOptions: function(options) {
+ this.options = {
+ sortAscendImg: 'images/sort_asc.gif',
+ sortDescendImg: 'images/sort_desc.gif',
+ imageWidth: 9,
+ imageHeight: 5,
+ ajaxSortURLParms: []
+ }.extend(options);
+
+ // preload the images...
+ new Image().src = this.options.sortAscendImg;
+ new Image().src = this.options.sortDescendImg;
+
+ this.sort = options.sortHandler;
+ if ( !this.options.columns )
+ this.options.columns = this.introspectForColumnInfo();
+ else {
+ // allow client to pass { columns: [ ["a", true], ["b", false] ] }
+ // and convert to an array of Rico.TableColumn objs...
+ this.options.columns =
this.convertToTableColumns(this.options.columns);
+ }
+ },
+
+ applySortBehavior: function() {
+ var headerRow = this.headerTable.rows[0];
+ var headerCells = headerRow.cells;
+ for ( var i = 0 ; i < headerCells.length ; i++ ) {
+ this.addSortBehaviorToColumn( i, headerCells[i] );
+ }
+ },
+
+ addSortBehaviorToColumn: function( n, cell ) {
+ if ( this.options.columns[n].isSortable() ) {
+ cell.id = this.headerTableId + '_' + n;
+ cell.style.cursor = 'pointer';
+ cell.onclick =
this.headerCellClicked.bindAsEventListener(this);
+ cell.innerHTML = cell.innerHTML + '<span id="' +
this.headerTableId + '_img_' + n + '">'
+ + '&nbsp;&nbsp;&nbsp;</span>';
+ }
+ },
+
+ // event handler....
+ headerCellClicked: function(evt) {
+ var eventTarget = evt.target ? evt.target : evt.srcElement;
+ var cellId = eventTarget.id;
+ var columnNumber = parseInt(cellId.substring( cellId.lastIndexOf('_')
+ 1 ));
+ var sortedColumnIndex = this.getSortedColumnIndex();
+ if ( sortedColumnIndex != -1 ) {
+ if ( sortedColumnIndex != columnNumber ) {
+ this.removeColumnSort(sortedColumnIndex);
+ this.setColumnSort(columnNumber, Rico.TableColumn.SORT_ASC);
+ }
+ else
+ this.toggleColumnSort(sortedColumnIndex);
+ }
+ else
+ this.setColumnSort(columnNumber, Rico.TableColumn.SORT_ASC);
+
+ if (this.options.sortHandler) {
+ this.options.sortHandler(this.options.columns[columnNumber]);
+ }
+ },
+
+ removeColumnSort: function(n) {
+ this.options.columns[n].setUnsorted();
+ this.setSortImage(n);
+ },
+
+ setColumnSort: function(n, direction) {
+ this.options.columns[n].setSorted(direction);
+ this.setSortImage(n);
+ },
+
+ toggleColumnSort: function(n) {
+ this.options.columns[n].toggleSort();
+ this.setSortImage(n);
+ },
+
+ setSortImage: function(n) {
+ var sortDirection = this.options.columns[n].getSortDirection();
+
+ var sortImageSpan = $( this.headerTableId + '_img_' + n );
+ if ( sortDirection == Rico.TableColumn.UNSORTED )
+ sortImageSpan.innerHTML = '&nbsp;&nbsp;';
+ else if ( sortDirection == Rico.TableColumn.SORT_ASC )
+ sortImageSpan.innerHTML = '&nbsp;&nbsp;<img width="' +
this.options.imageWidth + '" ' +
+ 'height="'+
this.options.imageHeight + '" ' +
+ 'src="' +
this.options.sortAscendImg + '"/>';
+ else if ( sortDirection == Rico.TableColumn.SORT_DESC )
+ sortImageSpan.innerHTML = '&nbsp;&nbsp;<img width="' +
this.options.imageWidth + '" ' +
+ 'height="'+
this.options.imageHeight + '" ' +
+ 'src="' +
this.options.sortDescendImg + '"/>';
+ },
+
+ getSortedColumnIndex: function() {
+ var cols = this.options.columns;
+ for ( var i = 0 ; i < cols.length ; i++ ) {
+ if ( cols[i].isSorted() )
+ return i;
+ }
+
+ return -1;
+ },
+
+ introspectForColumnInfo: function() {
+ var columns = new Array();
+ var headerRow = this.headerTable.rows[0];
+ var headerCells = headerRow.cells;
+ for ( var i = 0 ; i < headerCells.length ; i++ )
+ columns.push( new Rico.TableColumn(
this.deriveColumnNameFromCell(headerCells[i],i), true ) );
+ return columns;
+ },
+
+ convertToTableColumns: function(cols) {
+ var columns = new Array();
+ for ( var i = 0 ; i < cols.length ; i++ )
+ columns.push( new Rico.TableColumn( cols[i][0], cols[i][1] ) );
+ },
+
+ deriveColumnNameFromCell: function(cell,columnNumber) {
+ var cellContent = cell.innerText != undefined ? cell.innerText :
cell.textContent;
+ return cellContent ? cellContent.toLowerCase().split(' ').join('_') :
"col_" + columnNumber;
+ }
+};
+
+Rico.TableColumn = Class.create();
+
+Rico.TableColumn.UNSORTED = 0;
+Rico.TableColumn.SORT_ASC = "ASC";
+Rico.TableColumn.SORT_DESC = "DESC";
+
+Rico.TableColumn.prototype = {
+ initialize: function(name, sortable) {
+ this.name = name;
+ this.sortable = sortable;
+ this.currentSort = Rico.TableColumn.UNSORTED;
+ },
+
+ isSortable: function() {
+ return this.sortable;
+ },
+
+ isSorted: function() {
+ return this.currentSort != Rico.TableColumn.UNSORTED;
+ },
+
+ getSortDirection: function() {
+ return this.currentSort;
+ },
+
+ toggleSort: function() {
+ if ( this.currentSort == Rico.TableColumn.UNSORTED || this.currentSort
== Rico.TableColumn.SORT_DESC )
+ this.currentSort = Rico.TableColumn.SORT_ASC;
+ else if ( this.currentSort == Rico.TableColumn.SORT_ASC )
+ this.currentSort = Rico.TableColumn.SORT_DESC;
+ },
+
+ setUnsorted: function(direction) {
+ this.setSorted(Rico.TableColumn.UNSORTED);
+ },
+
+ setSorted: function(direction) {
+ // direction must by one of Rico.TableColumn.UNSORTED, .SORT_ASC, or
.SET_DESC...
+ this.currentSort = direction;
+ }
+
+};
+
+
+//-------------------- ricoUtil.js
+
+var RicoUtil = {
+
+ getElementsComputedStyle: function ( htmlElement, cssProperty,
mozillaEquivalentCSS) {
+ if ( arguments.length == 2 )
+ mozillaEquivalentCSS = cssProperty;
+
+ var el = $(htmlElement);
+ if ( el.currentStyle )
+ return el.currentStyle[cssProperty];
+ else
+ return document.defaultView.getComputedStyle(el,
null).getPropertyValue(mozillaEquivalentCSS);
+ },
+
+ createXmlDocument : function() {
+ if (document.implementation && document.implementation.createDocument)
{
+ var doc = document.implementation.createDocument("", "", null);
+
+ if (doc.readyState == null) {
+ doc.readyState = 1;
+ doc.addEventListener("load", function () {
+ doc.readyState = 4;
+ if (typeof doc.onreadystatechange == "function")
+ doc.onreadystatechange();
+ }, false);
+ }
+
+ return doc;
+ }
+
+ if (window.ActiveXObject)
+ return Try.these(
+ function() { return new ActiveXObject('MSXML2.DomDocument') },
+ function() { return new ActiveXObject('Microsoft.DomDocument')},
+ function() { return new ActiveXObject('MSXML.DomDocument') },
+ function() { return new ActiveXObject('MSXML3.DomDocument') }
+ ) || false;
+
+ return null;
+ },
+
+ getContentAsString: function( parentNode ) {
+ return parentNode.xml != undefined ?
+ this._getContentAsStringIE(parentNode) :
+ this._getContentAsStringMozilla(parentNode);
+ },
+
+ _getContentAsStringIE: function(parentNode) {
+ var contentStr = "";
+ for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+ contentStr += parentNode.childNodes[i].xml;
+ return contentStr;
+ },
+
+ _getContentAsStringMozilla: function(parentNode) {
+ var xmlSerializer = new XMLSerializer();
+ var contentStr = "";
+ for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+ contentStr +=
xmlSerializer.serializeToString(parentNode.childNodes[i]);
+ return contentStr;
+ },
+
+ toViewportPosition: function(element) {
+ return this._toAbsolute(element,true);
+ },
+
+ toDocumentPosition: function(element) {
+ return this._toAbsolute(element,false);
+ },
+
+ /**
+ * Compute the elements position in terms of the window viewport
+ * so that it can be compared to the position of the mouse (dnd)
+ * This is additions of all the offsetTop,offsetLeft values up the
+ * offsetParent hierarchy, ...taking into account any scrollTop,
+ * scrollLeft values along the way...
+ *
+ * IE has a bug reporting a correct offsetLeft of elements within a
+ * a relatively positioned parent!!!
+ **/
+ _toAbsolute: function(element,accountForDocScroll) {
+
+ if ( navigator.userAgent.toLowerCase().indexOf("msie") == -1 )
+ return this._toAbsoluteMozilla(element,accountForDocScroll);
+
+ var x = 0;
+ var y = 0;
+ var parent = element;
+ while ( parent ) {
+
+ var borderXOffset = 0;
+ var borderYOffset = 0;
+ if ( parent != element ) {
+ var borderXOffset =
parseInt(this.getElementsComputedStyle(parent, "borderLeftWidth" ));
+ var borderYOffset =
parseInt(this.getElementsComputedStyle(parent, "borderTopWidth" ));
+ borderXOffset = isNaN(borderXOffset) ? 0 : borderXOffset;
+ borderYOffset = isNaN(borderYOffset) ? 0 : borderYOffset;
+ }
+
+ x += parent.offsetLeft - parent.scrollLeft + borderXOffset;
+ y += parent.offsetTop - parent.scrollTop + borderYOffset;
+ parent = parent.offsetParent;
+ }
+
+ if ( accountForDocScroll ) {
+ x -= this.docScrollLeft();
+ y -= this.docScrollTop();
+ }
+
+ return { x:x, y:y };
+ },
+
+ /**
+ * Mozilla did not report all of the parents up the hierarchy via the
+ * offsetParent property that IE did. So for the calculation of the
+ * offsets we use the offsetParent property, but for the calculation of
+ * the scrollTop/scrollLeft adjustments we navigate up via the parentNode
+ * property instead so as to get the scroll offsets...
+ *
+ **/
+ _toAbsoluteMozilla: function(element,accountForDocScroll) {
+ var x = 0;
+ var y = 0;
+ var parent = element;
+ while ( parent ) {
+ x += parent.offsetLeft;
+ y += parent.offsetTop;
+ parent = parent.offsetParent;
+ }
+
+ parent = element;
+ while ( parent &&
+ parent != document.body &&
+ parent != document.documentElement ) {
+ if ( parent.scrollLeft )
+ x -= parent.scrollLeft;
+ if ( parent.scrollTop )
+ y -= parent.scrollTop;
+ parent = parent.parentNode;
+ }
+
+ if ( accountForDocScroll ) {
+ x -= this.docScrollLeft();
+ y -= this.docScrollTop();
+ }
+
+ return { x:x, y:y };
+ },
+
+ docScrollLeft: function() {
+ if ( window.pageXOffset )
+ return window.pageXOffset;
+ else if ( document.documentElement &&
document.documentElement.scrollLeft )
+ return document.documentElement.scrollLeft;
+ else if ( document.body )
+ return document.body.scrollLeft;
+ else
+ return 0;
+ },
+
+ docScrollTop: function() {
+ if ( window.pageYOffset )
+ return window.pageYOffset;
+ else if ( document.documentElement &&
document.documentElement.scrollTop )
+ return document.documentElement.scrollTop;
+ else if ( document.body )
+ return document.body.scrollTop;
+ else
+ return 0;
+ }
+
+};

Added: trunk/main/planet/web/test/etc/web/js/scriptaculous.js
===================================================================
--- trunk/main/planet/web/test/etc/web/js/scriptaculous.js 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/js/scriptaculous.js 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,1305 @@
+// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us,
http://mir.aculo.us)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Element.collectTextNodesIgnoreClass = function(element, ignoreclass) {
+ var children = $(element).childNodes;
+ var text = "";
+ var classtest = new RegExp("^([^ ]+ )*" + ignoreclass+ "( [^ ]+)*$","i");
+
+ for (var i = 0; i < children.length; i++) {
+ if(children[i].nodeType==3) {
+ text+=children[i].nodeValue;
+ } else {
+ if((!children[i].className.match(classtest)) &&
children[i].hasChildNodes())
+ text += Element.collectTextNodesIgnoreClass(children[i],
ignoreclass);
+ }
+ }
+
+ return text;
+}
+
+Ajax.Autocompleter = Class.create();
+Ajax.Autocompleter.prototype = (new Ajax.Base()).extend({
+ initialize: function(element, update, url, options) {
+ this.element = $(element);
+ this.update = $(update);
+ this.has_focus = false;
+ this.changed = false;
+ this.active = false;
+ this.index = 0;
+ this.entry_count = 0;
+ this.url = url;
+
+ this.setOptions(options);
+ this.options.asynchronous = true;
+ this.options.onComplete = this.onComplete.bind(this)
+ this.options.frequency = this.options.frequency || 0.4;
+ this.options.min_chars = this.options.min_chars || 1;
+ this.options.method = 'post';
+
+ this.options.onShow = this.options.onShow ||
+ function(element, update){
+ if(!update.style.position || update.style.position=='absolute') {
+ update.style.position = 'absolute';
+ var offsets = Position.cumulativeOffset(element);
+ update.style.left = offsets[0] + 'px';
+ update.style.top = (offsets[1] + element.offsetHeight) + 'px';
+ update.style.width = element.offsetWidth + 'px';
+ }
+ new Effect.Appear(update,{duration:0.3});
+ };
+ this.options.onHide = this.options.onHide ||
+ function(element, update){ new Effect.Fade(update,{duration:0.3}) };
+
+
+ if(this.options.indicator)
+ this.indicator = $(this.options.indicator);
+
+ this.observer = null;
+
+ Element.hide(this.update);
+
+ Event.observe(this.element, "blur",
this.onBlur.bindAsEventListener(this));
+ Event.observe(this.element, "keypress",
this.onKeyPress.bindAsEventListener(this));
+ },
+
+ show: function() {
+ if(this.update.style.display=='none') this.options.onShow(this.element,
this.update);
+ if(!this.iefix && (navigator.appVersion.indexOf('MSIE')>0) &&
this.update.style.position=='absolute') {
+ new Insertion.After(this.update,
+ '<iframe id="' + this.update.id + '_iefix" '+
+
'style="display:none;filter:progid:DXImageTransform.Microsoft.Alpha(apacity=0);"
' +
+ 'src="javascript:;" frameborder="0" scrolling="no"></iframe>');
+ this.iefix = $(this.update.id+'_iefix');
+ }
+ if(this.iefix) {
+ Position.clone(this.update, this.iefix);
+ this.iefix.style.zIndex = 1;
+ this.update.style.zIndex = 2;
+ Element.show(this.iefix);
+ }
+ },
+
+ hide: function() {
+ if(this.update.style.display=='') this.options.onHide(this.element,
this.update);
+ if(this.iefix) Element.hide(this.iefix);
+ },
+
+ startIndicator: function() {
+ if(this.indicator) Element.show(this.indicator);
+ },
+
+ stopIndicator: function() {
+ if(this.indicator) Element.hide(this.indicator);
+ },
+
+ onObserverEvent: function() {
+ this.changed = false;
+ if(this.element.value.length>=this.options.min_chars) {
+ this.startIndicator();
+ this.options.parameters = this.options.callback ?
+ this.options.callback(this.element,
Form.Element.getValue(this.element)) :
+ Form.Element.serialize(this.element);
+ new Ajax.Request(this.url, this.options);
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ },
+
+ addObservers: function(element) {
+ Event.observe(element, "mouseover",
this.onHover.bindAsEventListener(this));
+ Event.observe(element, "click", this.onClick.bindAsEventListener(this));
+ },
+
+ onComplete: function(request) {
+ if(!this.changed && this.has_focus) {
+ this.update.innerHTML = request.responseText;
+ Element.cleanWhitespace(this.update);
+ Element.cleanWhitespace(this.update.firstChild);
+
+ if(this.update.firstChild && this.update.firstChild.childNodes) {
+ this.entry_count =
+ this.update.firstChild.childNodes.length;
+ for (var i = 0; i < this.entry_count; i++) {
+ entry = this.get_entry(i);
+ entry.autocompleteIndex = i;
+ this.addObservers(entry);
+ }
+ } else {
+ this.entry_count = 0;
+ }
+
+ this.stopIndicator();
+
+ this.index = 0;
+ this.render();
+ }
+ },
+
+ onKeyPress: function(event) {
+ if(this.active)
+ switch(event.keyCode) {
+ case Event.KEY_TAB:
+ case Event.KEY_RETURN:
+ this.select_entry();
+ Event.stop(event);
+ case Event.KEY_ESC:
+ this.hide();
+ this.active = false;
+ return;
+ case Event.KEY_LEFT:
+ case Event.KEY_RIGHT:
+ return;
+ case Event.KEY_UP:
+ this.mark_previous();
+ this.render();
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
+ return;
+ case Event.KEY_DOWN:
+ this.mark_next();
+ this.render();
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
+ return;
+ }
+ else
+ if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN)
+ return;
+
+ this.changed = true;
+ this.has_focus = true;
+
+ if(this.observer) clearTimeout(this.observer);
+ this.observer =
+ setTimeout(this.onObserverEvent.bind(this),
this.options.frequency*1000);
+ },
+
+ onHover: function(event) {
+ var element = Event.findElement(event, 'LI');
+ if(this.index != element.autocompleteIndex)
+ {
+ this.index = element.autocompleteIndex;
+ this.render();
+ }
+ Event.stop(event);
+ },
+
+ onClick: function(event) {
+ var element = Event.findElement(event, 'LI');
+ this.index = element.autocompleteIndex;
+ this.select_entry();
+ Event.stop(event);
+ },
+
+ onBlur: function(event) {
+ // needed to make click events working
+ setTimeout(this.hide.bind(this), 250);
+ this.has_focus = false;
+ this.active = false;
+ },
+
+ render: function() {
+ if(this.entry_count > 0) {
+ for (var i = 0; i < this.entry_count; i++)
+ this.index==i ?
+ Element.addClassName(this.get_entry(i),"selected") :
+ Element.removeClassName(this.get_entry(i),"selected");
+
+ if(this.has_focus) {
+ if(this.get_current_entry().scrollIntoView)
+ this.get_current_entry().scrollIntoView(false);
+
+ this.show();
+ this.active = true;
+ }
+ } else this.hide();
+ },
+
+ mark_previous: function() {
+ if(this.index > 0) this.index--
+ else this.index = this.entry_count-1;
+ },
+
+ mark_next: function() {
+ if(this.index < this.entry_count-1) this.index++
+ else this.index = 0;
+ },
+
+ get_entry: function(index) {
+ return this.update.firstChild.childNodes[index];
+ },
+
+ get_current_entry: function() {
+ return this.get_entry(this.index);
+ },
+
+ select_entry: function() {
+ this.active = false;
+ value = Element.collectTextNodesIgnoreClass(this.get_current_entry(),
'informal').unescapeHTML();
+ this.element.value = value;
+ this.element.focus();
+ }
+});// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us,
http://mir.aculo.us)
+//
+// Element.Class part Copyright (c) 2005 by Rick Olson
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Element.Class = {
+ // Element.toggleClass(element, className) toggles the class being on/off
+ // Element.toggleClass(element, className1, className2) toggles between
both classes,
+ // defaulting to className1 if neither exist
+ toggle: function(element, className) {
+ if(Element.Class.has(element, className)) {
+ Element.Class.remove(element, className);
+ if(arguments.length == 3) Element.Class.add(element, arguments[2]);
+ } else {
+ Element.Class.add(element, className);
+ if(arguments.length == 3) Element.Class.remove(element,
arguments[2]);
+ }
+ },
+
+ // gets space-delimited classnames of an element as an array
+ get: function(element) {
+ element = $(element);
+ return element.className.split(' ');
+ },
+
+ // functions adapted from original functions by Gavin Kistner
+ remove: function(element) {
+ element = $(element);
+ var regEx;
+ for(var i = 1; i < arguments.length; i++) {
+ regEx = new RegExp("^" + arguments[i] + "\\b\\s*|\\s*\\b" +
arguments[i] + "\\b", 'g');
+ element.className = element.className.replace(regEx, '')
+ }
+ },
+
+ add: function(element) {
+ element = $(element);
+ for(var i = 1; i < arguments.length; i++) {
+ Element.Class.remove(element, arguments[i]);
+ element.className += (element.className.length > 0 ? ' ' : '') +
arguments[i];
+ }
+ },
+
+ // returns true if all given classes exist in said element
+ has: function(element) {
+ element = $(element);
+ if(!element || !element.className) return false;
+ var regEx;
+ for(var i = 1; i < arguments.length; i++) {
+ regEx = new RegExp("\\b" + arguments[i] + "\\b");
+ if(!regEx.test(element.className)) return false;
+ }
+ return true;
+ },
+
+ // expects arrays of strings and/or strings as optional paramters
+ // Element.Class.has_any(element, ['classA','classB','classC'], 'classD')
+ has_any: function(element) {
+ element = $(element);
+ if(!element || !element.className) return false;
+ var regEx;
+ for(var i = 1; i < arguments.length; i++) {
+ if((typeof arguments[i] == 'object') &&
+ (arguments[i].constructor == Array)) {
+ for(var j = 0; j < arguments[i].length; j++) {
+ regEx = new RegExp("\\b" + arguments[i][j] + "\\b");
+ if(regEx.test(element.className)) return true;
+ }
+ } else {
+ regEx = new RegExp("\\b" + arguments[i] + "\\b");
+ if(regEx.test(element.className)) return true;
+ }
+ }
+ return false;
+ },
+
+ childrenWith: function(element, className) {
+ var children = $(element).getElementsByTagName('*');
+ var elements = new Array();
+
+ for (var i = 0; i < children.length; i++) {
+ if (Element.Class.has(children[i], className)) {
+ elements.push(children[i]);
+ break;
+ }
+ }
+
+ return elements;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Droppables = {
+ drops: false,
+
+ add: function(element) {
+ var element = $(element);
+ var options = {
+ greedy: true,
+ hoverclass: null
+ }.extend(arguments[1] || {});
+
+ // cache containers
+ if(options.containment) {
+ options._containers = new Array();
+ var containment = options.containment;
+ if((typeof containment == 'object') &&
+ (containment.constructor == Array)) {
+ for(var i=0; i<containment.length; i++)
+ options._containers.push($(containment[i]));
+ } else {
+ options._containers.push($(containment));
+ }
+ options._containers_length =
+ options._containers.length-1;
+ }
+
+ if(element.style.position=='') //fix IE
+ element.style.position = 'relative';
+
+ // activate the droppable
+ element.droppable = options;
+
+ if(!this.drops) this.drops = [];
+ this.drops.push(element);
+ },
+
+ is_contained: function(element, drop) {
+ var containers = drop.droppable._containers;
+ var parentNode = element.parentNode;
+ var i = drop.droppable._containers_length;
+ do { if(parentNode==containers[i]) return true; } while (i--);
+ return false;
+ },
+
+ is_affected: function(pX, pY, element, drop) {
+ return (
+ (drop!=element) &&
+ ((!drop.droppable._containers) ||
+ this.is_contained(element, drop)) &&
+ ((!drop.droppable.accept) ||
+ (Element.Class.has_any(element, drop.droppable.accept))) &&
+ Position.within(drop, pX, pY) );
+ },
+
+ deactivate: function(drop) {
+ Element.Class.remove(drop, drop.droppable.hoverclass);
+ this.last_active = null;
+ },
+
+ activate: function(drop) {
+ if(this.last_active) this.deactivate(this.last_active);
+ if(drop.droppable.hoverclass) {
+ Element.Class.add(drop, drop.droppable.hoverclass);
+ this.last_active = drop;
+ }
+ },
+
+ show: function(event, element) {
+ if(!this.drops) return;
+ var pX = Event.pointerX(event);
+ var pY = Event.pointerY(event);
+ Position.prepare();
+
+ var i = this.drops.length-1; do {
+ var drop = this.drops[i];
+ if(this.is_affected(pX, pY, element, drop)) {
+ if(drop.droppable.onHover)
+ drop.droppable.onHover(
+ element, drop, Position.overlap(drop.droppable.overlap, drop));
+ if(drop.droppable.greedy) {
+ this.activate(drop);
+ return;
+ }
+ }
+ } while (i--);
+ },
+
+ fire: function(event, element) {
+ if(!this.drops) return;
+ var pX = Event.pointerX(event);
+ var pY = Event.pointerY(event);
+ Position.prepare();
+
+ var i = this.drops.length-1; do {
+ var drop = this.drops[i];
+ if(this.is_affected(pX, pY, element, drop))
+ if(drop.droppable.onDrop)
+ drop.droppable.onDrop(element);
+ } while (i--);
+ },
+
+ reset: function() {
+ if(this.last_active)
+ this.deactivate(this.last_active);
+ }
+}
+
+Draggables = {
+ observers: new Array(),
+ addObserver: function(observer) {
+ this.observers.push(observer);
+ },
+ notify: function(eventName, draggable) { // 'onStart', 'onEnd'
+ for(var i = 0; i < this.observers.length; i++)
+ this.observers[i][eventName](draggable);
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+Draggable = Class.create();
+Draggable.prototype = {
+ initialize: function(element) {
+ var options = {
+ handle: false,
+ starteffect: function(element) {
+ new Effect.Opacity(element, {duration:0.2, from:1.0, to:0.7});
+ },
+ reverteffect: function(element, top_offset, left_offset) {
+ new Effect.MoveBy(element, -top_offset, -left_offset,
{duration:0.4});
+ },
+ endeffect: function(element) {
+ new Effect.Opacity(element, {duration:0.2, from:0.7, to:1.0});
+ },
+ zindex: 1000,
+ revert: false
+ }.extend(arguments[1] || {});
+
+ this.element = $(element);
+ this.element.drag = this;
+ this.handle = options.handle ? $(options.handle) : this.element;
+
+ // fix IE
+ if(!this.element.style.position)
+ this.element.style.position = 'relative';
+
+ this.offsetX = 0;
+ this.offsetY = 0;
+ this.originalLeft = this.currentLeft();
+ this.originalTop = this.currentTop();
+ this.originalX = this.element.offsetLeft;
+ this.originalY = this.element.offsetTop;
+ this.originalZ = parseInt(this.element.style.zIndex || "0");
+
+ this.options = options;
+
+ this.active = false;
+ this.dragging = false;
+
+ Event.observe(this.handle, "mousedown",
this.startDrag.bindAsEventListener(this));
+ Event.observe(document, "mouseup",
this.endDrag.bindAsEventListener(this));
+ Event.observe(document, "mousemove",
this.update.bindAsEventListener(this));
+ },
+ currentLeft: function() {
+ return parseInt(this.element.style.left || '0');
+ },
+ currentTop: function() {
+ return parseInt(this.element.style.top || '0')
+ },
+ startDrag: function(event) {
+ if(Event.isLeftClick(event)) {
+ this.active = true;
+
+ var style = this.element.style;
+ this.originalY = this.element.offsetTop - this.currentTop() -
this.originalTop;
+ this.originalX = this.element.offsetLeft - this.currentLeft() -
this.originalLeft;
+ this.offsetY = event.clientY - this.originalY - this.originalTop;
+ this.offsetX = event.clientX - this.originalX - this.originalLeft;
+
+ Event.stop(event);
+ }
+ },
+ endDrag: function(event) {
+ if(this.active && this.dragging) {
+ this.active = false;
+ this.dragging = false;
+
+ Droppables.fire(event, this.element);
+ Draggables.notify('onEnd', this);
+
+ var revert = this.options.revert;
+ if(revert && typeof revert == 'function') revert =
revert(this.element);
+
+ if(revert && this.options.reverteffect) {
+ this.options.reverteffect(this.element,
+ this.currentTop()-this.originalTop,
+ this.currentLeft()-this.originalLeft);
+ } else {
+ this.originalLeft = this.currentLeft();
+ this.originalTop = this.currentTop();
+ }
+ this.element.style.zIndex = this.originalZ;
+
+ if(this.options.endeffect)
+ this.options.endeffect(this.element);
+
+ Droppables.reset();
+ Event.stop(event);
+ }
+ this.active = false;
+ this.dragging = false;
+ },
+ draw: function(event) {
+ var style = this.element.style;
+ this.originalX = this.element.offsetLeft - this.currentLeft() -
this.originalLeft;
+ this.originalY = this.element.offsetTop - this.currentTop() -
this.originalTop;
+ if((!this.options.constraint) || (this.options.constraint=='horizontal'))
+ style.left = ((event.clientX - this.originalX) - this.offsetX) + "px";
+ if((!this.options.constraint) || (this.options.constraint=='vertical'))
+ style.top = ((event.clientY - this.originalY) - this.offsetY) + "px";
+ if(style.visibility=="hidden") style.visibility = ""; // fix gecko
rendering
+ },
+ update: function(event) {
+ if(this.active) {
+ if(!this.dragging) {
+ var style = this.element.style;
+ this.dragging = true;
+ if(style.position=="") style.position = "relative";
+ style.zIndex = this.options.zindex;
+ Draggables.notify('onStart', this);
+ if(this.options.starteffect) this.options.starteffect(this.element);
+ }
+
+ Droppables.show(event, this.element);
+ this.draw(event);
+ if(this.options.change) this.options.change(this);
+
+ // fix AppleWebKit rendering
+ if(navigator.appVersion.indexOf('AppleWebKit')>0)
window.scrollBy(0,0);
+
+ Event.stop(event);
+ }
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+SortableObserver = Class.create();
+SortableObserver.prototype = {
+ initialize: function(element, observer) {
+ this.element = $(element);
+ this.observer = observer;
+ this.lastValue = Sortable.serialize(this.element);
+ },
+ onStart: function() {
+ this.lastValue = Sortable.serialize(this.element);
+ },
+ onEnd: function() {
+ if(this.lastValue != Sortable.serialize(this.element))
+ this.observer(this.element)
+ }
+}
+
+Sortable = {
+ create: function(element) {
+ var element = $(element);
+ var options = {
+ tag: 'li', // assumes li children, override with tag:
'tagname'
+ overlap: 'vertical', // one of 'vertical', 'horizontal'
+ constraint: 'vertical', // one of 'vertical', 'horizontal', false
+ containment: element, // also takes array of elements (or id's); or
false
+ handle: false, // or a CSS class
+ only: false,
+ hoverclass: null,
+ onChange: function() {},
+ onUpdate: function() {}
+ }.extend(arguments[1] || {});
+ element.sortable = options;
+
+ // build options for the draggables
+ var options_for_draggable = {
+ revert: true,
+ constraint: options.constraint,
+ handle: handle };
+ if(options.starteffect)
+ options_for_draggable.starteffect = options.starteffect;
+ if(options.reverteffect)
+ options_for_draggable.reverteffect = options.reverteffect;
+ if(options.endeffect)
+ options_for_draggable.endeffect = options.endeffect;
+ if(options.zindex)
+ options_for_draggable.zindex = options.zindex;
+
+ // build options for the droppables
+ var options_for_droppable = {
+ overlap: options.overlap,
+ containment: options.containment,
+ hoverclass: options.hoverclass,
+ onHover: function(element, dropon, overlap) {
+ if(overlap>0.5) {
+ if(dropon.previousSibling != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, dropon);
+ if(dropon.parentNode!=oldParentNode && oldParentNode.sortable)
+ oldParentNode.sortable.onChange(element);
+ if(dropon.parentNode.sortable)
+ dropon.parentNode.sortable.onChange(element);
+ }
+ } else {
+ var nextElement = dropon.nextSibling || null;
+ if(nextElement != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, nextElement);
+ if(dropon.parentNode!=oldParentNode && oldParentNode.sortable)
+ oldParentNode.sortable.onChange(element);
+ if(dropon.parentNode.sortable)
+ dropon.parentNode.sortable.onChange(element);
+ }
+ }
+ }
+ }
+
+ // fix for gecko engine
+ Element.cleanWhitespace(element);
+
+ // for onupdate
+ Draggables.addObserver(new SortableObserver(element, options.onUpdate));
+
+ // make it so
+ var elements = element.childNodes;
+ for (var i = 0; i < elements.length; i++)
+ if(elements[i].tagName &&
elements[i].tagName==options.tag.toUpperCase() &&
+ (!options.only || (Element.Class.has(elements[i], options.only)))) {
+
+ // handles are per-draggable
+ var handle = options.handle ?
+ Element.Class.childrenWith(elements[i], options.handle)[0] :
elements[i];
+
+ new Draggable(elements[i], options_for_draggable.extend({ handle:
handle }));
+ Droppables.add(elements[i], options_for_droppable);
+ }
+
+ },
+ serialize: function(element) {
+ var element = $(element);
+ var options = {
+ tag: element.sortable.tag,
+ only: element.sortable.only,
+ name: element.id
+ }.extend(arguments[1] || {});
+
+ var items = $(element).childNodes;
+ var queryComponents = new Array();
+
+ for(var i=0; i<items.length; i++)
+ if(items[i].tagName && items[i].tagName==options.tag.toUpperCase() &&
+ (!options.only || (Element.Class.has(items[i], options.only))))
+ queryComponents.push(
+ encodeURIComponent(options.name) + "[]=" +
+ encodeURIComponent(items[i].id.split("_")[1]));
+
+ return queryComponents.join("&");
+ }
+} // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us,
http://mir.aculo.us)
+//
+// Parts (c) 2005 Justin Palmer (http://encytemedia.com/)
+// Parts (c) 2005 Mark Pilgrim (http://diveintomark.org/)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Effect = {}
+Effect2 = Effect; // deprecated
+
+/* ------------- transitions ------------- */
+
+Effect.Transitions = {}
+
+Effect.Transitions.linear = function(pos) {
+ return pos;
+}
+Effect.Transitions.sinoidal = function(pos) {
+ return (-Math.cos(pos*Math.PI)/2) + 0.5;
+}
+Effect.Transitions.reverse = function(pos) {
+ return 1-pos;
+}
+Effect.Transitions.flicker = function(pos) {
+ return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random(0.25);
+}
+Effect.Transitions.wobble = function(pos) {
+ return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
+}
+Effect.Transitions.pulse = function(pos) {
+ return (Math.floor(pos*10) % 2 == 0 ?
+ (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));
+}
+
+Effect.Transitions.none = function(pos) {
+ return 0;
+}
+Effect.Transitions.full = function(pos) {
+ return 1;
+}
+
+/* ------------- core effects ------------- */
+
+Effect.Base = function() {};
+Effect.Base.prototype = {
+ setOptions: function(options) {
+ this.options = {
+ transition: Effect.Transitions.sinoidal,
+ duration: 1.0, // seconds
+ fps: 25.0, // max. 100fps
+ sync: false, // true for combining
+ from: 0.0,
+ to: 1.0
+ }.extend(options || {});
+ },
+ start: function(options) {
+ this.setOptions(options || {});
+ this.currentFrame = 0;
+ this.startOn = new Date().getTime();
+ this.finishOn = this.startOn + (this.options.duration*1000);
+ if(this.options.beforeStart) this.options.beforeStart(this);
+ if(!this.options.sync) this.loop();
+ },
+ loop: function() {
+ timePos = new Date().getTime();
+ if(timePos >= this.finishOn) {
+ this.render(this.options.to);
+ if(this.finish) this.finish();
+ if(this.options.afterFinish) this.options.afterFinish(this);
+ return;
+ }
+ pos = (timePos - this.startOn) / (this.finishOn - this.startOn);
+ frame = Math.round(pos * this.options.fps * this.options.duration);
+ if(frame > this.currentFrame) {
+ this.render(pos);
+ this.currentFrame = frame;
+ }
+ this.timeout = setTimeout(this.loop.bind(this), 10);
+ },
+ render: function(pos) {
+ if(this.options.transition) pos = this.options.transition(pos);
+ pos = pos * (this.options.to-this.options.from);
+ pos += this.options.from;
+ if(this.options.beforeUpdate) this.options.beforeUpdate(this);
+ if(this.update) this.update(pos);
+ if(this.options.afterUpdate) this.options.afterUpdate(this);
+ },
+ cancel: function() {
+ if(this.timeout) clearTimeout(this.timeout);
+ }
+}
+
+Effect.Parallel = Class.create();
+ Effect.Parallel.prototype = (new Effect.Base()).extend({
+ initialize: function(effects) {
+ this.effects = effects || [];
+ this.start(arguments[1]);
+ },
+ update: function(position) {
+ for (var i = 0; i < this.effects.length; i++)
+ this.effects[i].render(position);
+ },
+ finish: function(position) {
+ for (var i = 0; i < this.effects.length; i++)
+ if(this.effects[i].finish) this.effects[i].finish(position);
+ }
+ });
+
+// Internet Explorer caveat: works only on elements the have
+// a 'layout', meaning having a given width or height.
+// There is no way to safely set this automatically.
+Effect.Opacity = Class.create();
+Effect.Opacity.prototype = (new Effect.Base()).extend({
+ initialize: function(element) {
+ this.element = $(element);
+ options = {
+ from: 0.0,
+ to: 1.0
+ }.extend(arguments[1] || {});
+ this.start(options);
+ },
+ update: function(position) {
+ this.setOpacity(position);
+ },
+ setOpacity: function(opacity) {
+ opacity = (opacity == 1) ? 0.99999 : opacity;
+ this.element.style.opacity = opacity;
+ this.element.style.filter = "alpha(opacity:"+opacity*100+")";
+ }
+});
+
+Effect.MoveBy = Class.create();
+ Effect.MoveBy.prototype = (new Effect.Base()).extend({
+ initialize: function(element, toTop, toLeft) {
+ this.element = $(element);
+ this.originalTop = parseFloat(this.element.style.top || '0');
+ this.originalLeft = parseFloat(this.element.style.left || '0');
+ this.toTop = toTop;
+ this.toLeft = toLeft;
+ if(this.element.style.position == "")
+ this.element.style.position = "relative";
+ this.start(arguments[3]);
+ },
+ update: function(position) {
+ topd = this.toTop * position + this.originalTop;
+ leftd = this.toLeft * position + this.originalLeft;
+ this.setPosition(topd, leftd);
+ },
+ setPosition: function(topd, leftd) {
+ this.element.style.top = topd + "px";
+ this.element.style.left = leftd + "px";
+ }
+});
+
+Effect.Scale = Class.create();
+Effect.Scale.prototype = (new Effect.Base()).extend({
+ initialize: function(element, percent) {
+ this.element = $(element)
+ options = {
+ scaleX: true,
+ scaleY: true,
+ scaleContent: true,
+ scaleFromCenter: false,
+ scaleMode: 'box', // 'box' or 'contents' or {} with provided
values
+ scaleFrom: 100.0
+ }.extend(arguments[2] || {});
+ this.originalTop = this.element.offsetTop;
+ this.originalLeft = this.element.offsetLeft;
+ if (this.element.style.fontSize=="") this.sizeEm = 1.0;
+ if (this.element.style.fontSize &&
this.element.style.fontSize.indexOf("em")>0)
+ this.sizeEm = parseFloat(this.element.style.fontSize);
+ this.factor = (percent/100.0) - (options.scaleFrom/100.0);
+ if(options.scaleMode=='box') {
+ this.originalHeight = this.element.clientHeight;
+ this.originalWidth = this.element.clientWidth;
+ } else
+ if(options.scaleMode=='contents') {
+ this.originalHeight = this.element.scrollHeight;
+ this.originalWidth = this.element.scrollWidth;
+ } else {
+ this.originalHeight = options.scaleMode.originalHeight;
+ this.originalWidth = options.scaleMode.originalWidth;
+ }
+ this.start(options);
+ },
+
+ update: function(position) {
+ currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
+ if(this.options.scaleContent && this.sizeEm)
+ this.element.style.fontSize = this.sizeEm*currentScale + "em";
+ this.setDimensions(
+ this.originalWidth * currentScale,
+ this.originalHeight * currentScale);
+ },
+
+ setDimensions: function(width, height) {
+ if(this.options.scaleX) this.element.style.width = width + 'px';
+ if(this.options.scaleY) this.element.style.height = height + 'px';
+ if(this.options.scaleFromCenter) {
+ topd = (height - this.originalHeight)/2;
+ leftd = (width - this.originalWidth)/2;
+ if(this.element.style.position=='absolute') {
+ if(this.options.scaleY) this.element.style.top =
this.originalTop-topd + "px";
+ if(this.options.scaleX) this.element.style.left =
this.originalLeft-leftd + "px";
+ } else {
+ if(this.options.scaleY) this.element.style.top = -topd + "px";
+ if(this.options.scaleX) this.element.style.left = -leftd + "px";
+ }
+ }
+ }
+});
+
+Effect.Highlight = Class.create();
+Effect.Highlight.prototype = (new Effect.Base()).extend({
+ initialize: function(element) {
+ this.element = $(element);
+
+ // try to parse current background color as default for endcolor
+ // browser stores this as: "rgb(255, 255, 255)", convert to "#ffffff"
format
+ var endcolor = "#ffffff";
+ var current = this.element.style.backgroundColor;
+ if(current && current.slice(0,4) == "rgb(") {
+ endcolor = "#";
+ var cols = current.slice(4,current.length-1).split(',');
+ var i=0; do { endcolor += parseInt(cols[i]).toColorPart() } while
(++i<3); }
+
+ var options = {
+ startcolor: "#ffff99",
+ endcolor: endcolor
+ }.extend(arguments[1] || {});
+
+ // init color calculations
+ this.colors_base = [
+ parseInt(options.startcolor.slice(1,3),16),
+ parseInt(options.startcolor.slice(3,5),16),
+ parseInt(options.startcolor.slice(5),16) ];
+ this.colors_delta = [
+ parseInt(options.endcolor.slice(1,3),16)-this.colors_base[0],
+ parseInt(options.endcolor.slice(3,5),16)-this.colors_base[1],
+ parseInt(options.endcolor.slice(5),16)-this.colors_base[2] ];
+
+ this.start(options);
+ },
+ update: function(position) {
+ var colors = [
+ Math.round(this.colors_base[0]+(this.colors_delta[0]*position)),
+ Math.round(this.colors_base[1]+(this.colors_delta[1]*position)),
+ Math.round(this.colors_base[2]+(this.colors_delta[2]*position)) ];
+ this.element.style.backgroundColor = "#" +
+ colors[0].toColorPart() + colors[1].toColorPart() +
colors[2].toColorPart();
+ }
+});
+
+
+/* ------------- prepackaged effects ------------- */
+
+Effect.Fade = function(element) {
+ options = {
+ from: 1.0,
+ to: 0.0,
+ afterFinish: function(effect)
+ { Element.hide(effect.element);
+ effect.setOpacity(1); }
+ }.extend(arguments[1] || {});
+ new Effect.Opacity(element,options);
+}
+
+Effect.Appear = function(element) {
+ options = {
+ from: 0.0,
+ to: 1.0,
+ beforeStart: function(effect)
+ { effect.setOpacity(0);
+ Element.show(effect.element); },
+ afterUpdate: function(effect)
+ { Element.show(effect.element); }
+ }.extend(arguments[1] || {});
+ new Effect.Opacity(element,options);
+}
+
+Effect.Puff = function(element) {
+ new Effect.Parallel(
+ [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ],
+ { duration: 1.0,
+ afterUpdate: function(effect)
+ { effect.effects[0].element.style.position = 'absolute'; },
+ afterFinish: function(effect)
+ { Element.hide(effect.effects[0].element); }
+ }
+ );
+}
+
+Effect.BlindUp = function(element) {
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.overflow = 'hidden';
+ new Effect.Scale(element, 0,
+ { scaleContent: false,
+ scaleX: false,
+ afterFinish: function(effect)
+ {
+ Element.hide(effect.element);
+ effect.element.style.overflow = effect.element._overflow;
+ }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.BlindDown = function(element) {
+ $(element).style.height = '0px';
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.overflow = 'hidden';
+ Element.show(element);
+ new Effect.Scale(element, 100,
+ { scaleContent: false,
+ scaleX: false,
+ scaleMode: 'contents',
+ scaleFrom: 0,
+ afterFinish: function(effect) {
+ effect.element.style.overflow = effect.element._overflow;
+ }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.SwitchOff = function(element) {
+ new Effect.Appear(element,
+ { duration: 0.4,
+ transition: Effect.Transitions.flicker,
+ afterFinish: function(effect)
+ { effect.element.style.overflow = 'hidden';
+ new Effect.Scale(effect.element, 1,
+ { duration: 0.3, scaleFromCenter: true,
+ scaleX: false, scaleContent: false,
+ afterUpdate: function(effect) {
+ if(effect.element.style.position=="")
+ effect.element.style.position = 'relative'; },
+ afterFinish: function(effect) { Element.hide(effect.element); }
+ } )
+ }
+ } )
+}
+
+Effect.DropOut = function(element) {
+ new Effect.Parallel(
+ [ new Effect.MoveBy(element, 100, 0, { sync: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ],
+ { duration: 0.5,
+ afterFinish: function(effect)
+ { Element.hide(effect.effects[0].element); }
+ });
+}
+
+Effect.Shake = function(element) {
+ new Effect.MoveBy(element, 0, 20,
+ { duration: 0.05, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, -40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, 40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, -40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, 40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, -20,
+ { duration: 0.05, afterFinish: function(effect) {
+ }}) }}) }}) }}) }}) }});
+}
+
+Effect.SlideDown = function(element) {
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.height = '0px';
+ $(element).style.overflow = 'hidden';
+ $(element).firstChild.style.position = 'relative';
+ Element.show(element);
+ new Effect.Scale(element, 100,
+ { scaleContent: false,
+ scaleX: false,
+ scaleMode: 'contents',
+ scaleFrom: 0,
+ afterUpdate: function(effect)
+ { effect.element.firstChild.style.bottom =
+ (effect.originalHeight - effect.element.clientHeight) + 'px'; },
+ afterFinish: function(effect)
+ { effect.element.style.overflow = effect.element._overflow; }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.SlideUp = function(element) {
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.overflow = 'hidden';
+ $(element).firstChild.style.position = 'relative';
+ Element.show(element);
+ new Effect.Scale(element, 0,
+ { scaleContent: false,
+ scaleX: false,
+ afterUpdate: function(effect)
+ { effect.element.firstChild.style.bottom =
+ (effect.originalHeight - effect.element.clientHeight) + 'px'; },
+ afterFinish: function(effect)
+ {
+ Element.hide(effect.element);
+ effect.element.style.overflow = effect.element._overflow;
+ }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.Squish = function(element) {
+ new Effect.Scale(element, 0,
+ { afterFinish: function(effect) { Element.hide(effect.element); } });
+}
+
+Effect.Grow = function(element) {
+ element = $(element);
+ var options = arguments[1] || {};
+
+ var originalWidth = element.clientWidth;
+ var originalHeight = element.clientHeight;
+ element.style.overflow = 'hidden';
+ Element.show(element);
+
+ var direction = options.direction || 'center';
+ var moveTransition = options.moveTransition || Effect.Transitions.sinoidal;
+ var scaleTransition = options.scaleTransition ||
Effect.Transitions.sinoidal;
+ var opacityTransition = options.opacityTransition ||
Effect.Transitions.full;
+
+ var initialMoveX, initialMoveY;
+ var moveX, moveY;
+
+ switch (direction) {
+ case 'top-left':
+ initialMoveX = initialMoveY = moveX = moveY = 0;
+ break;
+ case 'top-right':
+ initialMoveX = originalWidth;
+ initialMoveY = moveY = 0;
+ moveX = -originalWidth;
+ break;
+ case 'bottom-left':
+ initialMoveX = moveX = 0;
+ initialMoveY = originalHeight;
+ moveY = -originalHeight;
+ break;
+ case 'bottom-right':
+ initialMoveX = originalWidth;
+ initialMoveY = originalHeight;
+ moveX = -originalWidth;
+ moveY = -originalHeight;
+ break;
+ case 'center':
+ initialMoveX = originalWidth / 2;
+ initialMoveY = originalHeight / 2;
+ moveX = -originalWidth / 2;
+ moveY = -originalHeight / 2;
+ break;
+ }
+
+ new Effect.MoveBy(element, initialMoveY, initialMoveX, {
+ duration: 0.01,
+ beforeUpdate: function(effect) { $(element).style.height = '0px'; },
+ afterFinish: function(effect) {
+ new Effect.Parallel(
+ [ new Effect.Opacity(element, { sync: true, to: 1.0, from: 0.0,
transition: opacityTransition }),
+ new Effect.MoveBy(element, moveY, moveX, { sync: true, transition:
moveTransition }),
+ new Effect.Scale(element, 100, {
+ scaleMode: { originalHeight: originalHeight, originalWidth:
originalWidth },
+ sync: true, scaleFrom: 0, scaleTo: 100, transition:
scaleTransition })],
+ options); }
+ });
+}
+
+Effect.Shrink = function(element) {
+ element = $(element);
+ var options = arguments[1] || {};
+
+ var originalWidth = element.clientWidth;
+ var originalHeight = element.clientHeight;
+ element.style.overflow = 'hidden';
+ Element.show(element);
+
+ var direction = options.direction || 'center';
+ var moveTransition = options.moveTransition || Effect.Transitions.sinoidal;
+ var scaleTransition = options.scaleTransition ||
Effect.Transitions.sinoidal;
+ var opacityTransition = options.opacityTransition ||
Effect.Transitions.none;
+
+ var moveX, moveY;
+
+ switch (direction) {
+ case 'top-left':
+ moveX = moveY = 0;
+ break;
+ case 'top-right':
+ moveX = originalWidth;
+ moveY = 0;
+ break;
+ case 'bottom-left':
+ moveX = 0;
+ moveY = originalHeight;
+ break;
+ case 'bottom-right':
+ moveX = originalWidth;
+ moveY = originalHeight;
+ break;
+ case 'center':
+ moveX = originalWidth / 2;
+ moveY = originalHeight / 2;
+ break;
+ }
+
+ new Effect.Parallel(
+ [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0,
transition: opacityTransition }),
+ new Effect.Scale(element, 0, { sync: true, transition: moveTransition
}),
+ new Effect.MoveBy(element, moveY, moveX, { sync: true, transition:
scaleTransition }) ],
+ options);
+}
+
+Effect.Pulsate = function(element) {
+ var options = arguments[1] || {};
+ var transition = options.transition || Effect.Transitions.sinoidal;
+ var reverser = function(pos){ return
transition(1-Effect.Transitions.pulse(pos)) };
+ reverser.bind(transition);
+ new Effect.Opacity(element,
+ { duration: 3.0,
+ afterFinish: function(effect) { Element.show(effect.element); }
+ }.extend(options).extend({transition: reverser}));
+}
+
+Effect.Fold = function(element) {
+ $(element).style.overflow = 'hidden';
+ new Effect.Scale(element, 5, {
+ scaleContent: false,
+ scaleTo: 100,
+ scaleX: false,
+ afterFinish: function(effect) {
+ new Effect.Scale(element, 1, {
+ scaleContent: false,
+ scaleTo: 0,
+ scaleY: false,
+ afterFinish: function(effect) { Element.hide(effect.element) } });
+ }}.extend(arguments[1] || {}));
+}
+
+// old: new Effect.ContentZoom(element, percent)
+// new: Element.setContentZoom(element, percent)
+
+Element.setContentZoom = function(element, percent) {
+ var element = $(element);
+ element.style.fontSize = (percent/100) + "em";
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
+}

Added: trunk/main/planet/web/test/etc/web/snoop.jsp
===================================================================
--- trunk/main/planet/web/test/etc/web/snoop.jsp 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/etc/web/snoop.jsp 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,201 @@
+<HTML>
+<HEAD>
+ <TITLE>JSP snoop page</TITLE>
+ <%@ page import="javax.servlet.http.HttpUtils,java.util.Enumeration"
%>
+</HEAD>
+<BODY>
+
+<H1>WebApp JSP Snoop page</H1>
+
+<H2>Request information</H2>
+
+<TABLE>
+<TR>
+ <TH align=right>Requested URL:</TH>
+ <TD><%= HttpUtils.getRequestURL(request) %></TD>
+</TR>
+<TR>
+ <TH align=right>Request method:</TH>
+ <TD><%= request.getMethod() %></TD>
+</TR>
+<TR>
+ <TH align=right>Request URI:</TH>
+ <TD><%= request.getRequestURI() %></TD>
+</TR>
+<TR>
+ <TH align=right>Request protocol:</TH>
+ <TD><%= request.getProtocol() %></TD>
+</TR>
+<TR>
+ <TH align=right>Servlet path:</TH>
+ <TD><%= request.getServletPath() %></TD>
+</TR>
+<TR>
+ <TH align=right>Path info:</TH>
+ <TD><%= request.getPathInfo() %></TD>
+</TR>
+<TR>
+ <TH align=right>Path translated:</TH>
+ <TD><%= request.getPathTranslated() %></TD>
+</TR>
+<TR>
+ <TH align=right>Query string:</TH>
+ <TD><%= request.getQueryString() %></TD>
+</TR>
+<TR>
+ <TH align=right>Content length:</TH>
+ <TD><%= request.getContentLength() %></TD>
+</TR>
+<TR>
+ <TH align=right>Content type:</TH>
+ <TD><%= request.getContentType() %></TD>
+<TR>
+<TR>
+ <TH align=right>Server name:</TH>
+ <TD><%= request.getServerName() %></TD>
+<TR>
+<TR>
+ <TH align=right>Server port:</TH>
+ <TD><%= request.getServerPort() %></TD>
+<TR>
+<TR>
+ <TH align=right>Remote user:</TH>
+ <TD><%= request.getRemoteUser() %></TD>
+<TR>
+<TR>
+ <TH align=right>Remote address:</TH>
+ <TD><%= request.getRemoteAddr() %></TD>
+<TR>
+<TR>
+ <TH align=right>Remote host:</TH>
+ <TD><%= request.getRemoteHost() %></TD>
+<TR>
+<TR>
+ <TH align=right>Authorization scheme:</TH>
+ <TD><%= request.getAuthType() %></TD>
+<TR>
+</TABLE>
+
+<%
+ Enumeration e = request.getHeaderNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Request headers</H2>
+
+<TABLE>
+<TR>
+ <TH align=left>Header:</TH>
+ <TH align=left>Value:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+%>
+<TR>
+ <TD><%= k %></TD>
+ <TD><%= request.getHeader(k) %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+
+<%
+ e = request.getParameterNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Request parameters</H2>
+<TABLE>
+<TR valign=top>
+ <TH align=left>Parameter:</TH>
+ <TH align=left>Value:</TH>
+ <TH align=left>Multiple values:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+ String val = request.getParameter(k);
+ String vals[] = request.getParameterValues(k);
+%>
+<TR valign=top>
+ <TD><%= k %></TD>
+ <TD><%= val %></TD>
+ <TD><%
+ for(int i = 0; i < vals.length; i++) {
+ if(i > 0)
+ out.print("<BR>");
+ out.print(vals[i]);
+ }
+ %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+
+<%
+ e = request.getAttributeNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Request Attributes</H2>
+<TABLE>
+<TR valign=top>
+ <TH align=left>Attribute:</TH>
+ <TH align=left>Value:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+ Object val = request.getAttribute(k);
+%>
+<TR valign=top>
+ <TD><%= k %></TD>
+ <TD><%= val %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+
+<%
+ e = getServletConfig().getInitParameterNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Init parameters</H2>
+<TABLE>
+<TR valign=top>
+ <TH align=left>Parameter:</TH>
+ <TH align=left>Value:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+ String val = getServletConfig().getInitParameter(k);
+%>
+<TR valign=top>
+ <TD><%= k %></TD>
+ <TD><%= val %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+</BODY>
+</HTML>
+

Added: trunk/main/planet/web/test/etc/web.xml
===================================================================
--- trunk/main/planet/web/test/etc/web.xml 2006-01-31 11:49:08 UTC (rev
1000)
+++ trunk/main/planet/web/test/etc/web.xml 2006-01-31 12:10:53 UTC (rev
1001)
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app
+ xmlns="http://java.sun.com/xml/ns/j2ee";
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd";
+ version="2.5">
+
+ <display-name>Test WebApp</display-name>
+
+ <listener>
+ <listener-class>org.acme.TestListener</listener-class>
+ </listener>
+
+ <filter>
+ <filter-name>TestFilter</filter-name>
+ <filter-class>org.acme.TestFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>TestFilter</filter-name>
+ <url-pattern>/dump/*</url-pattern>
+ <url-pattern>*.dump</url-pattern>
+ <servlet-name>*</servlet-name>
+ </filter-mapping>
+
+ <filter>
+ <filter-name>Chat</filter-name>
+ <filter-class>org.acme.ChatFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>Chat</filter-name>
+ <url-pattern>/chat/*</url-pattern>
+ </filter-mapping>
+
+ <servlet>
+ <servlet-name>Hello</servlet-name>
+ <servlet-class>org.acme.HelloWorld</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Hello</servlet-name>
+ <url-pattern>/hello/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Dump</servlet-name>
+ <servlet-class>org.acme.Dump</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Dump</servlet-name>
+ <url-pattern>/dump/*</url-pattern>
+ <url-pattern>*.dump</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Session</servlet-name>
+ <servlet-class>org.acme.SessionDump</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Session</servlet-name>
+ <url-pattern>/session/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Dispatch</servlet-name>
+ <servlet-class>org.acme.DispatchServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Dispatch</servlet-name>
+ <url-pattern>/dispatch/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>JspSnoop</servlet-name>
+ <jsp-file>/snoop.jsp</jsp-file>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JspSnoop</servlet-name>
+ <url-pattern>/jspsnoop/*</url-pattern>
+ </servlet-mapping>
+
+ <!--
+ <error-page>
+ <error-code>404</error-code>
+ <location>/dump/ERROR</location>
+ </error-page>
+ -->
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Any User</web-resource-name>
+ <url-pattern>/dump/auth/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>*</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>relax</web-resource-name>
+ <url-pattern>/dump/auth/relax/*</url-pattern>
+ <http-method>GET</http-method>
+ <http-method>HEAD</http-method>
+ </web-resource-collection>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Admin Role</web-resource-name>
+ <url-pattern>/dump/auth/admin/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>content-administrator</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Forbidden</web-resource-name>
+ <url-pattern>/dump/auth/noaccess/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint/>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>SSL</web-resource-name>
+ <url-pattern>/dump/auth/ssl/*</url-pattern>
+ </web-resource-collection>
+ <user-data-constraint>
+ <transport-guarantee>CONFIDENTIAL</transport-guarantee>
+ </user-data-constraint>
+ </security-constraint>
+
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ <realm-name>Test Realm</realm-name>
+ </login-config>
+
+<!--
+ <login-config>
+ <auth-method>DIGEST</auth-method>
+ <realm-name>Test Realm</realm-name>
+ </login-config>
+-->
+
+<!--
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>Test Realm</realm-name>
+ <form-login-config>
+ <form-login-page>/logon.html?param=test</form-login-page>
+ <form-error-page>/logonError.html?param=test</form-error-page>
+ </form-login-config>
+ </login-config>
+-->
+
+
+
+
+</web-app>
+
+

Added: trunk/main/planet/web/test/src/main/org/acme/ChatFilter.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/ChatFilter.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/ChatFilter.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,370 @@
+//========================================================================
+//$Id: ChatFilter.java,v 1.4 2005/11/14 11:00:33 gregwilkins Exp $
+//Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
+//------------------------------------------------------------------------
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//http://www.apache.org/licenses/LICENSE-2.0
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//========================================================================
+
+package org.acme;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.mortbay.util.ajax.AjaxFilter;
+import org.mortbay.util.ajax.Continuation;
+import org.mortbay.util.ajax.ContinuationSupport;
+
+public class ChatFilter extends AjaxFilter
+{
+ private final String mutex="mutex";
+ private Map chatroom;
+
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see org.mortbay.ajax.AjaxFilter#init(javax.servlet.FilterConfig)
+ */
+ public void init(FilterConfig filterConfig) throws ServletException
+ {
+ super.init(filterConfig);
+ chatroom=new HashMap();
+ }
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see org.mortbay.ajax.AjaxFilter#destroy()
+ */
+ public void destroy()
+ {
+ super.destroy();
+ chatroom=null;
+ }
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see org.mortbay.ajax.AjaxFilter#handle(java.lang.String,
javax.servlet.http.HttpServletRequest,
org.mortbay.ajax.AjaxFilter.AjaxResponse)
+ */
+ public void handle(String method, HttpServletRequest request,
AjaxResponse response)
+ {
+ if ("join".equals(method))
+ doJoinChat(request,response);
+ else if ("chat".equals(method))
+ doChat(request,response);
+ else if ("getEvents".equals(method))
+ doGetEvents(request,response);
+ else if ("leave".equals(method))
+ doLeaveChat(request,response);
+ else
+ super.handle(method, request, response);
+ }
+
+ /* ------------------------------------------------------------ */
+ private void doJoinChat(HttpServletRequest request, AjaxResponse
response)
+ {
+ HttpSession session = request.getSession(true);
+ String id = session.getId();
+ String name=request.getParameter("name");
+ if (name==null || name.length()==0)
+ name="Newbie";
+ Member member=null;
+
+ synchronized (mutex)
+ {
+ if (chatroom.containsKey(id))
+ {
+ // exists already, so just update name
+ member=(Member)chatroom.get(id);
+ if (!name.equals(member.getName()))
+ member.rename(name);
+ }
+ else
+ {
+ member = new Member(session,name);
+ chatroom.put(session.getId(),member);
+ sendEvent(member,"has joined the chat",true);
+ }
+
+ sendMembers(response);
+ response.objectResponse("joined", "<ok/>");
+ }
+ }
+
+
+ /* ------------------------------------------------------------ */
+ private void doLeaveChat(HttpServletRequest request, AjaxResponse
response)
+ {
+ HttpSession session = request.getSession(true);
+ String id = session.getId();
+
+ Member member=null;
+ synchronized (mutex)
+ {
+ member = (Member)chatroom.get(id);
+ if (member==null)
+ return;
+ if ("Elvis".equals(member.getName()))
+ sendEvent(member,"has left the building",true);
+ else
+ sendEvent(member,"has left the chat",true);
+ chatroom.remove(id);
+ }
+ sendMembers(response);
+ response.objectResponse("left", "<ok/>");
+ }
+
+
+ /* ------------------------------------------------------------ */
+ private void doChat(HttpServletRequest request, AjaxResponse response)
+ {
+ HttpSession session = request.getSession(true);
+ String id = session.getId();
+ String text = request.getParameter("text");
+
+ Member member=null;
+ synchronized (mutex)
+ {
+ member = (Member)chatroom.get(id);
+ }
+
+ if (member==null)
+ return;
+ sendEvent(member, text, false);
+
+ }
+
+
+ /* ------------------------------------------------------------ */
+ private void doGetEvents(HttpServletRequest request, AjaxResponse
response)
+ {
+ HttpSession session = request.getSession(true);
+ String id = session.getId();
+ long timeoutMS = 10000L; // TODO configure.
+
+ Member member=null;
+ synchronized (mutex)
+ {
+ member = (Member)chatroom.get(id);
+ }
+
+ boolean alerts=false;
+ if (member!=null)
+ {
+ // Get an existing Continuation or create a new one if there are
no events.
+ if (!member.hasEvents())
+ {
+ Continuation continuation =
ContinuationSupport.getContinuation(request, mutex);
+ member.setContinuation(continuation);
+ continuation.suspend(timeoutMS);
+ }
+
+ member.setContinuation(null);
+ alerts=member.sendEvents(response);
+
+ if (alerts)
+ sendMembers(response);
+
+ // Signal for a new poll
+ response.objectResponse("poll", "<ok/>");
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ private void sendEvent(Member member, String text, boolean alert)
+ {
+ Event event=new Event(member.getName(),text,alert);
+
+ ArrayList invalids=null;
+ synchronized (mutex)
+ {
+ Iterator iter = chatroom.values().iterator();
+ while (iter.hasNext())
+ {
+ Member m = (Member)iter.next();
+
+ try
+ {
+ m.getSession().getAttribute("anything");
+ m.addEvent(event);
+ }
+ catch(IllegalStateException e)
+ {
+ if (invalids==null)
+ invalids=new ArrayList();
+ invalids.add(m);
+ iter.remove();
+ }
+ }
+ }
+
+ for (int i=0;invalids!=null && i<invalids.size();i++)
+ {
+ Member m = (Member)invalids.get(i);
+ sendEvent(m,"has timed out of the chat",true);
+ }
+ }
+
+ private void sendMembers(AjaxResponse response)
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append("<ul>\n");
+ synchronized (mutex)
+ {
+ Iterator iter = chatroom.values().iterator();
+ while (iter.hasNext())
+ {
+ Member m = (Member)iter.next();
+ buf.append("<li>");
+ buf.append(encodeText(m.getName()));
+ buf.append("</li>\n");
+ }
+ }
+ buf.append("</ul>\n");
+ response.elementResponse("members", buf.toString());
+ }
+
+
+ private static class Event
+ {
+ private String _from;
+ private String _text;
+ private boolean _alert;
+
+ Event(String from, String text, boolean alert)
+ {
+ _from=from;
+ _text=text;
+ _alert=alert;
+ }
+
+ boolean isAlert()
+ {
+ return _alert;
+ }
+
+ public String toString()
+ {
+ return "<event from=\""+_from+"\"
alert=\""+_alert+"\">"+encodeText(_text)+"</event>";
+ }
+
+
+
+ }
+
+ private class Member
+ {
+ private HttpSession _session;
+ private String _name;
+ private List _events = new ArrayList();
+ private Continuation _continuation;
+
+ Member(HttpSession session, String name)
+ {
+ _session=session;
+ _name=name;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Returns the name.
+ */
+ public String getName()
+ {
+ return _name;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @param name The name to set.
+ */
+ public void setName(String name)
+ {
+ _name = name;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Returns the session.
+ */
+ public HttpSession getSession()
+ {
+ return _session;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Returns the continuation.
+ */
+ public Continuation getContinuation()
+ {
+ return _continuation;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @param continuation The continuation to set.
+ */
+ public void setContinuation(Continuation continuation)
+ {
+ _continuation = continuation;
+ }
+
+ /* ------------------------------------------------------------ */
+ public void addEvent(Event event)
+ {
+ synchronized (this)
+ {
+ _events.add(event);
+ if (_continuation!=null)
+ _continuation.resume();
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ public boolean hasEvents()
+ {
+ return _events!=null && _events.size()>0;
+ }
+
+ /* ------------------------------------------------------------ */
+ public void rename(String name)
+ {
+ String oldName = getName();
+ setName(name);
+ ChatFilter.this.sendEvent(this,oldName+" has been renamed to
"+name,true);
+ }
+
+ /* ------------------------------------------------------------ */
+ public boolean sendEvents(AjaxResponse response)
+ {
+ synchronized (this)
+ {
+ boolean alerts=false;
+ for (int i=0;i<_events.size();i++)
+ {
+ Event event = (Event)_events.get(i);
+ response.objectResponse("event", event.toString());
+ alerts |= event.isAlert();
+ }
+ _events.clear();
+ return alerts;
+ }
+ }
+
+ }
+}

Added: trunk/main/planet/web/test/src/main/org/acme/DispatchServlet.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/DispatchServlet.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/DispatchServlet.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,287 @@
+// ========================================================================
+// Copyright 1996-2005 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ========================================================================
+
+package org.acme;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
+
+
+/* ------------------------------------------------------------ */
+/** Test Servlet RequestDispatcher.
+ *
+ * @author Greg Wilkins (gregw)
+ */
+public class DispatchServlet extends HttpServlet
+{
+
+ /* ------------------------------------------------------------ */
+ String pageType;
+
+ /* ------------------------------------------------------------ */
+ public void init(ServletConfig config) throws ServletException
+ {
+ super.init(config);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doPost(HttpServletRequest sreq, HttpServletResponse sres)
throws ServletException, IOException
+ {
+ doGet(sreq, sres);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doGet(HttpServletRequest sreq, HttpServletResponse sres)
throws ServletException, IOException
+ {
+ if (sreq.getParameter("wrap") != null)
+ {
+ sreq= new HttpServletRequestWrapper(sreq);
+ sres= new HttpServletResponseWrapper(sres);
+ }
+
+ String prefix=
+ sreq.getContextPath() != null ? sreq.getContextPath() +
sreq.getServletPath() : sreq.getServletPath();
+
+ String info;
+
+ if (sreq.getAttribute("javax.servlet.include.servlet_path") != null)
+ info=
(String)sreq.getAttribute("javax.servlet.include.path_info");
+ else
+ info= sreq.getPathInfo();
+
+ if (info == null)
+ info= "NULL";
+
+ if (info.startsWith("/includeW/"))
+ {
+ sres.setContentType("text/html");
+ info= info.substring(9);
+ if (info.indexOf('?') < 0)
+ info += "?Dispatch=include";
+ else
+ info += "&Dispatch=include";
+
+ PrintWriter pout= null;
+ pout= sres.getWriter();
+ pout.write("<H1>Include (writer): " + info + "</H1><HR>");
+
+ RequestDispatcher dispatch=
getServletContext().getRequestDispatcher(info);
+ if (dispatch == null)
+ {
+ pout= sres.getWriter();
+ pout.write("<H1>Null dispatcher</H1>");
+ }
+ else
+ dispatch.include(sreq, sres);
+
+ pout.write("<HR><H1>-- Included (writer)</H1>");
+ }
+ else if (info.startsWith("/includeS/"))
+ {
+ sres.setContentType("text/html");
+ info= info.substring(9);
+ if (info.indexOf('?') < 0)
+ info += "?Dispatch=include";
+ else
+ info += "&Dispatch=include";
+
+ OutputStream out= null;
+ out= sres.getOutputStream();
+ out.write(("<H1>Include (outputstream): " + info +
"</H1><HR>").getBytes());
+
+ RequestDispatcher dispatch=
getServletContext().getRequestDispatcher(info);
+ if (dispatch == null)
+ {
+ out= sres.getOutputStream();
+ out.write("<H1>Null dispatcher</H1>".getBytes());
+ }
+ else
+ dispatch.include(sreq, sres);
+
+ out.write("<HR><H1>-- Included (outputstream)</H1>".getBytes());
+
+ }
+ else if (info.startsWith("/forward/"))
+ {
+ info= info.substring(8);
+ if (info.indexOf('?') < 0)
+ info += "?Dispatch=forward";
+ else
+ info += "&Dispatch=forward";
+ RequestDispatcher dispatch=
getServletContext().getRequestDispatcher(info);
+ if (dispatch != null)
+ {
+ ServletOutputStream out =sres.getOutputStream();
+ out.print("Can't see this");
+ dispatch.forward(sreq, sres);
+ try
+ {
+ out.println("IOException");
+ throw new IllegalStateException();
+ }
+ catch(IOException e)
+ {}
+ }
+ else
+ {
+ sres.setContentType("text/html");
+ PrintWriter pout= sres.getWriter();
+ pout.write("<H1>No dispatcher for: " + info + "</H1><HR>");
+ pout.flush();
+ }
+ }
+ else if (info.startsWith("/forwardC/"))
+ {
+ info= info.substring(9);
+ if (info.indexOf('?') < 0)
+ info += "?Dispatch=forward";
+ else
+ info += "&Dispatch=forward";
+
+ String cpath= info.substring(0, info.indexOf('/', 1));
+ info= info.substring(cpath.length());
+
+ ServletContext context= getServletContext().getContext(cpath);
+ RequestDispatcher dispatch= context.getRequestDispatcher(info);
+
+ if (dispatch != null)
+ {
+ dispatch.forward(sreq, sres);
+ }
+ else
+ {
+ sres.setContentType("text/html");
+ PrintWriter pout= sres.getWriter();
+ pout.write("<H1>No dispatcher for: " + cpath + "/" + info +
"</H1><HR>");
+ pout.flush();
+ }
+ }
+ else if (info.startsWith("/forwardSC/"))
+ {
+ sreq.getSession(true);
+ info= info.substring(10);
+ if (info.indexOf('?') < 0)
+ info += "?Dispatch=forward";
+ else
+ info += "&Dispatch=forward";
+
+ String cpath= info.substring(0, info.indexOf('/', 1));
+ info= info.substring(cpath.length());
+
+ ServletContext context= getServletContext().getContext(cpath);
+ RequestDispatcher dispatch= context.getRequestDispatcher(info);
+
+ if (dispatch != null)
+ {
+ dispatch.forward(sreq, sres);
+ }
+ else
+ {
+ sres.setContentType("text/html");
+ PrintWriter pout= sres.getWriter();
+ pout.write("<H1>No dispatcher for: " + cpath + "/" + info +
"</H1><HR>");
+ pout.flush();
+ }
+ }
+ else if (info.startsWith("/includeN/"))
+ {
+ sres.setContentType("text/html");
+ info= info.substring(10);
+ if (info.indexOf("/") >= 0)
+ info= info.substring(0, info.indexOf("/"));
+
+ PrintWriter pout;
+ if (info.startsWith("/null"))
+ info= info.substring(5);
+ else
+ {
+ pout= sres.getWriter();
+ pout.write("<H1>Include named: " + info + "</H1><HR>");
+ }
+
+ RequestDispatcher dispatch=
getServletContext().getNamedDispatcher(info);
+ if (dispatch != null)
+ dispatch.include(sreq, sres);
+ else
+ {
+ pout= sres.getWriter();
+ pout.write("<H1>No servlet named: " + info + "</H1>");
+ }
+
+ pout= sres.getWriter();
+ pout.write("<HR><H1>Included ");
+ }
+ else if (info.startsWith("/forwardN/"))
+ {
+ info= info.substring(10);
+ if (info.indexOf("/") >= 0)
+ info= info.substring(0, info.indexOf("/"));
+ RequestDispatcher dispatch=
getServletContext().getNamedDispatcher(info);
+ if (dispatch != null)
+ dispatch.forward(sreq, sres);
+ else
+ {
+ sres.setContentType("text/html");
+ PrintWriter pout= sres.getWriter();
+ pout.write("<H1>No servlet named: " + info + "</H1>");
+ pout.flush();
+ }
+ }
+ else
+ {
+ sres.setContentType("text/html");
+ PrintWriter pout= sres.getWriter();
+ pout.write(
+ "<H1>Dispatch URL must be of the form: </H1>"
+ + "<PRE>"
+ + prefix
+ + "/includeW/path\n"
+ + prefix
+ + "/includeS/path\n"
+ + prefix
+ + "/forward/path\n"
+ + prefix
+ + "/includeN/name\n"
+ + prefix
+ + "/forwardC/_context/path\n"
+ + prefix
+ + "/forwardSC/_context/path</PRE>");
+ pout.flush();
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ public String getServletInfo()
+ {
+ return "Include Servlet";
+ }
+
+ /* ------------------------------------------------------------ */
+ public synchronized void destroy()
+ {
+ }
+
+}

Added: trunk/main/planet/web/test/src/main/org/acme/Dump.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/Dump.java 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/Dump.java 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,544 @@
+// ========================================================================
+// Copyright 1996-2005 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ========================================================================
+
+package org.acme;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.lang.reflect.Field;
+import java.util.Enumeration;
+import java.util.Locale;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestWrapper;
+import javax.servlet.UnavailableException;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+
+
+
+/* ------------------------------------------------------------ */
+/** Dump Servlet Request.
+ *
+ */
+public class Dump extends HttpServlet
+{
+ /* ------------------------------------------------------------ */
+ public void init(ServletConfig config) throws ServletException
+ {
+ super.init(config);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
+ {
+ doGet(request, response);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
+ {
+ request.setAttribute("Dump", this);
+ getServletContext().setAttribute("Dump",this);
+ getServletContext().log("dump "+request.getRequestURI());
+
+ // Force a content length response
+ String length= request.getParameter("length");
+ if (length != null && length.length() > 0)
+ {
+ response.setContentLength(Integer.parseInt(length));
+ }
+
+ // Handle a dump of data
+ String data= request.getParameter("data");
+ String block= request.getParameter("block");
+ if (data != null && data.length() > 0)
+ {
+ int d=Integer.parseInt(data);
+ int b=(block!=null&&block.length()>0)?Integer.parseInt(block):50;
+ byte[] buf=new byte[b];
+ for (int i=0;i<b;i++)
+ {
+
+ buf[i]=(byte)('0'+(i%10));
+ if (i%10==9)
+ buf[i]=(byte)'\n';
+ }
+ buf[0]='o';
+ OutputStream out=response.getOutputStream();
+ response.setContentType("text/plain");
+ while (d > 0)
+ {
+ if (d>=b)
+ {
+ out.write(buf);
+ d=d-b;
+ }
+ else
+ {
+ out.write(buf,0,d);
+ d=0;
+ }
+ }
+
+ return;
+ }
+
+ // handle an exception
+ String info= request.getPathInfo();
+ if (info != null && info.endsWith("Exception"))
+ {
+ try
+ {
+ throw (Throwable)
Thread.currentThread().getContextClassLoader().loadClass(info.substring(1)).newInstance();
+ }
+ catch (Throwable th)
+ {
+ throw new ServletException(th);
+ }
+ }
+
+ // handle an redirect
+ String redirect= request.getParameter("redirect");
+ if (redirect != null && redirect.length() > 0)
+ {
+ response.getOutputStream().println("THIS SHOULD NOT BE SEEN!");
+ response.sendRedirect(redirect);
+ response.getOutputStream().println("THIS SHOULD NOT BE SEEN!");
+ return;
+ }
+
+ // handle an error
+ String error= request.getParameter("error");
+ if (error != null && error.length() > 0)
+ {
+ response.getOutputStream().println("THIS SHOULD NOT BE SEEN!");
+ response.sendError(Integer.parseInt(error));
+ response.getOutputStream().println("THIS SHOULD NOT BE SEEN!");
+ return;
+ }
+
+
+ String buffer= request.getParameter("buffer");
+ if (buffer != null && buffer.length() > 0)
+ response.setBufferSize(Integer.parseInt(buffer));
+
+ request.setCharacterEncoding("UTF-8");
+ response.setContentType("text/html");
+
+ if (info != null && info.indexOf("Locale/") >= 0)
+ {
+ try
+ {
+ String locale_name= info.substring(info.indexOf("Locale/") +
7);
+ Field f= java.util.Locale.class.getField(locale_name);
+ response.setLocale((Locale)f.get(null));
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ response.setLocale(Locale.getDefault());
+ }
+ }
+
+ String cn= request.getParameter("cookie");
+ String cv=request.getParameter("value");
+ String v=request.getParameter("version");
+ if (cn!=null && cv!=null)
+ {
+ Cookie cookie= new Cookie(cn, cv);
+ cookie.setComment("Cookie from dump servlet");
+ if (v!=null)
+ {
+ cookie.setMaxAge(300);
+ cookie.setPath("/");
+ cookie.setVersion(Integer.parseInt(v));
+ }
+ response.addCookie(cookie);
+ }
+
+ String pi= request.getPathInfo();
+ if (pi != null && pi.startsWith("/ex"))
+ {
+ OutputStream out= response.getOutputStream();
+ out.write("</H1>This text should be reset</H1>".getBytes());
+ if ("/ex0".equals(pi))
+ throw new ServletException("test ex0", new Throwable());
+ if ("/ex1".equals(pi))
+ throw new IOException("test ex1");
+ if ("/ex2".equals(pi))
+ throw new UnavailableException("test ex2");
+ throw new RuntimeException("test");
+ }
+
+
+ PrintWriter pout=null;
+
+ try
+ {
+ pout =response.getWriter();
+ }
+ catch(IllegalStateException e)
+ {
+ pout=new PrintWriter(response.getOutputStream());
+ }
+
+
+ try
+ {
+ pout.write("<html>\n<body>\n");
+ pout.write("<h1>Dump Servlet</h1>\n");
+ pout.write("<table>");
+ pout.write("<tr>\n");
+ pout.write("<th align=\"right\">getMethod:&nbsp;</th>");
+ pout.write("<td>" + request.getMethod()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getContentLength:&nbsp;</th>");
+
pout.write("<td>"+Integer.toString(request.getContentLength())+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getContentType:&nbsp;</th>");
+ pout.write("<td>"+request.getContentType()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getRequestURI:&nbsp;</th>");
+ pout.write("<td>"+request.getRequestURI()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getRequestURL:&nbsp;</th>");
+ pout.write("<td>"+request.getRequestURL()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getContextPath:&nbsp;</th>");
+ pout.write("<td>"+request.getContextPath()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getServletPath:&nbsp;</th>");
+ pout.write("<td>"+request.getServletPath()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getPathInfo:&nbsp;</th>");
+ pout.write("<td>"+request.getPathInfo()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getPathTranslated:&nbsp;</th>");
+ pout.write("<td>"+request.getPathTranslated()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getQueryString:&nbsp;</th>");
+ pout.write("<td>"+request.getQueryString()+"</td>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getProtocol:&nbsp;</th>");
+ pout.write("<td>"+request.getProtocol()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getScheme:&nbsp;</th>");
+ pout.write("<td>"+request.getScheme()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getServerName:&nbsp;</th>");
+ pout.write("<td>"+request.getServerName()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getServerPort:&nbsp;</th>");
+
pout.write("<td>"+Integer.toString(request.getServerPort())+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getLocalName:&nbsp;</th>");
+ pout.write("<td>"+request.getLocalName()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getLocalAddr:&nbsp;</th>");
+ pout.write("<td>"+request.getLocalAddr()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getLocalPort:&nbsp;</th>");
+
pout.write("<td>"+Integer.toString(request.getLocalPort())+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getRemoteUser:&nbsp;</th>");
+ pout.write("<td>"+request.getRemoteUser()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getRemoteAddr:&nbsp;</th>");
+ pout.write("<td>"+request.getRemoteAddr()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getRemoteHost:&nbsp;</th>");
+ pout.write("<td>"+request.getRemoteHost()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getRemotePort:&nbsp;</th>");
+ pout.write("<td>"+request.getRemotePort()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">getRequestedSessionId:&nbsp;</th>");
+ pout.write("<td>"+request.getRequestedSessionId()+"</td>");
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">isSecure():&nbsp;</th>");
+ pout.write("<td>"+request.isSecure()+"</td>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">isUserInRole(admin):&nbsp;</th>");
+ pout.write("<td>"+request.isUserInRole("admin")+"</td>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getLocale:&nbsp;</th>");
+ pout.write("<td>"+request.getLocale()+"</td>");
+
+ Enumeration locales= request.getLocales();
+ while (locales.hasMoreElements())
+ {
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">getLocales:&nbsp;</th>");
+ pout.write("<td>"+locales.nextElement()+"</td>");
+ }
+ pout.write("</tr><tr>\n");
+
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Other
HTTP Headers:</big></th>");
+ Enumeration h= request.getHeaderNames();
+ String name;
+ while (h.hasMoreElements())
+ {
+ name= (String)h.nextElement();
+
+ Enumeration h2= request.getHeaders(name);
+ while (h2.hasMoreElements())
+ {
+ String hv= (String)h2.nextElement();
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+":&nbsp;</th>");
+ pout.write("<td>"+hv+"</td>");
+ }
+ }
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Request
Parameters:</big></th>");
+ h= request.getParameterNames();
+ while (h.hasMoreElements())
+ {
+ name= (String)h.nextElement();
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+":&nbsp;</th>");
+ pout.write("<td>"+request.getParameter(name)+"</td>");
+ String[] values= request.getParameterValues(name);
+ if (values == null)
+ {
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+"
Values:&nbsp;</th>");
+ pout.write("<td>"+"NULL!"+"</td>");
+ }
+ else
+ if (values.length > 1)
+ {
+ for (int i= 0; i < values.length; i++)
+ {
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">"+name+"["+i+"]:&nbsp;</th>");
+ pout.write("<td>"+values[i]+"</td>");
+ }
+ }
+ }
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\"
colspan=\"2\"><big><br/>Cookies:</big></th>");
+ Cookie[] cookies = request.getCookies();
+ for (int i=0; cookies!=null && i<cookies.length;i++)
+ {
+ Cookie cookie = cookies[i];
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">"+cookie.getName()+":&nbsp;</th>");
+ pout.write("<td>"+cookie.getValue()+"</td>");
+ }
+
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Request
Attributes:</big></th>");
+ Enumeration a= request.getAttributeNames();
+ while (a.hasMoreElements())
+ {
+ name= (String)a.nextElement();
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+":&nbsp;</th>");
+ pout.write("<td>"+"<pre>" +
toString(request.getAttribute(name)) + "</pre>"+"</td>");
+ }
+
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Servlet
InitParameters:</big></th>");
+ a= getInitParameterNames();
+ while (a.hasMoreElements())
+ {
+ name= (String)a.nextElement();
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+":&nbsp;</th>");
+ pout.write("<td>"+"<pre>" + toString(getInitParameter(name))
+ "</pre>"+"</td>");
+ }
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Context
InitParameters:</big></th>");
+ a= getServletContext().getInitParameterNames();
+ while (a.hasMoreElements())
+ {
+ name= (String)a.nextElement();
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+":&nbsp;</th>");
+ pout.write("<td>"+"<pre>" +
toString(getServletContext().getInitParameter(name)) + "</pre>"+"</td>");
+ }
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Context
Attributes:</big></th>");
+ a= getServletContext().getAttributeNames();
+ while (a.hasMoreElements())
+ {
+ name= (String)a.nextElement();
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"right\">"+name+":&nbsp;</th>");
+ pout.write("<td>"+"<pre>" +
toString(getServletContext().getAttribute(name)) + "</pre>"+"</td>");
+ }
+
+
+ String res= request.getParameter("resource");
+ if (res != null && res.length() > 0)
+ {
+ pout.write("</tr><tr>\n");
+ pout.write("<th align=\"left\" colspan=\"2\"><big><br/>Get
Resource:</big></th>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">this.getClass():&nbsp;</th>");
+ pout.write("<td>"+this.getClass().getResource(res)+"</td>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">this.getClass().getClassLoader():&nbsp;</th>");
+
pout.write("<td>"+this.getClass().getClassLoader().getResource(res)+"</td>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">Thread.currentThread().getContextClassLoader():&nbsp;</th>");
+
pout.write("<td>"+Thread.currentThread().getContextClassLoader().getResource(res)+"</td>");
+
+ pout.write("</tr><tr>\n");
+ pout.write("<th
align=\"right\">getServletContext():&nbsp;</th>");
+
try{pout.write("<td>"+getServletContext().getResource(res)+"</td>");}
+ catch(Exception e) {pout.write("<td>"+"" +e+"</td>");}
+ }
+
+ pout.write("</tr></table>\n");
+
+ /* ------------------------------------------------------------
*/
+ pout.write("<h2>Request Wrappers</h2>\n");
+ ServletRequest rw=request;
+ int w=0;
+ while (rw !=null)
+ {
+ pout.write((w++)+": "+rw.getClass().getName()+"<br/>");
+ if (rw instanceof HttpServletRequestWrapper)
+ rw=((HttpServletRequestWrapper)rw).getRequest();
+ else if (rw instanceof ServletRequestWrapper)
+ rw=((ServletRequestWrapper)rw).getRequest();
+ else
+ rw=null;
+ }
+
+ pout.write("<br/>");
+ pout.write("<h2>International Characters</h2>");
+ pout.write("Directly encoced: Dürst<br/>");
+ pout.write("HTML reference: D&uuml;rst<br/>");
+ pout.write("Decimal (252) 8859-1: D&#252;rst<br/>");
+ pout.write("Hex (xFC) 8859-1: D&#xFC;rst<br/>");
+ pout.write("Javascript unicode (00FC) : <script
language='javascript'>document.write(\"D\u00FCrst\");</script><br/>");
+ pout.write("<br/>");
+ pout.write("<h2>Form to generate GET content</h2>");
+ pout.write("<form method=\"GET\"
action=\""+response.encodeURL(getURI(request))+"\">");
+ pout.write("TextField: <input type=\"text\" name=\"TextField\"
value=\"value\"/><br/>\n");
+ pout.write("<input type=\"submit\" name=\"Action\"
value=\"Submit\">");
+ pout.write("</form>");
+
+ pout.write("<br/>");
+ pout.write("<h2>Form to generate POST content</h2>");
+ pout.write("<form method=\"POST\"
action=\""+response.encodeURL(getURI(request))+"\">");
+ pout.write("TextField: <input type=\"text\" name=\"TextField\"
value=\"value\"/><br/>\n");
+ pout.write("Select: <select multiple name=\"Select\">\n");
+ pout.write("<option>ValueA</option>");
+ pout.write("<option>ValueB1,ValueB2</option>");
+ pout.write("<option>ValueC</option>");
+ pout.write("</select><br/>");
+ pout.write("<input type=\"submit\" name=\"Action\"
value=\"Submit\"><br/>");
+ pout.write("</form>");
+
+ pout.write("<h2>Form to get Resource</h2>");
+ pout.write("<form method=\"POST\"
action=\""+response.encodeURL(getURI(request))+"\">");
+ pout.write("resource: <input type=\"text\" name=\"resource\"
/><br/>\n");
+ pout.write("<input type=\"submit\" name=\"Action\"
value=\"getResource\">");
+ pout.write("</form>\n");
+
+ pout.write("</body>\n</html>\n");
+
+ }
+ catch (Exception e)
+ {
+ getServletContext().log("dump", e);
+ }
+
+
+ pout.close();
+
+ if (pi != null)
+ {
+ if ("/ex4".equals(pi))
+ throw new ServletException("test ex4", new Throwable());
+ if ("/ex5".equals(pi))
+ throw new IOException("test ex5");
+ if ("/ex6".equals(pi))
+ throw new UnavailableException("test ex6");
+ }
+
+
+ }
+
+ /* ------------------------------------------------------------ */
+ public String getServletInfo()
+ {
+ return "Dump Servlet";
+ }
+
+ /* ------------------------------------------------------------ */
+ public synchronized void destroy()
+ {
+ }
+
+ /* ------------------------------------------------------------ */
+ private String getURI(HttpServletRequest request)
+ {
+ String uri=
(String)request.getAttribute("javax.servlet.forward.request_uri");
+ if (uri == null)
+ uri= request.getRequestURI();
+ return uri;
+ }
+
+ /* ------------------------------------------------------------ */
+ private static String toString(Object o)
+ {
+ if (o == null)
+ return null;
+
+ if (o.getClass().isArray())
+ {
+ StringBuffer sb= new StringBuffer();
+ Object[] array= (Object[])o;
+ for (int i= 0; i < array.length; i++)
+ {
+ if (i > 0)
+ sb.append("\n");
+ sb.append(array.getClass().getComponentType().getName());
+ sb.append("[");
+ sb.append(i);
+ sb.append("]=");
+ sb.append(toString(array[i]));
+ }
+ return sb.toString();
+ }
+ else
+ return o.toString();
+ }
+
+}

Added: trunk/main/planet/web/test/src/main/org/acme/HelloWorld.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/HelloWorld.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/HelloWorld.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,57 @@
+// ========================================================================
+// Copyright 1996-2005 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ========================================================================
+
+package org.acme;
+
+import java.io.IOException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+/* ------------------------------------------------------------ */
+/** Dump Servlet Request.
+ *
+ */
+public class HelloWorld extends HttpServlet
+{
+ /* ------------------------------------------------------------ */
+ public void init(ServletConfig config) throws ServletException
+ {
+ super.init(config);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
+ {
+ doGet(request, response);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
+ {
+ response.setContentType("text/html");
+ ServletOutputStream out = response.getOutputStream();
+ out.println("<html>");
+ out.println("<h1>Hello World<h1>");
+ out.println("Blah blah blah.");
+ out.println("</html>");
+ out.flush();
+ }
+
+}

Added: trunk/main/planet/web/test/src/main/org/acme/SessionDump.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/SessionDump.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/SessionDump.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,161 @@
+// ========================================================================
+// Copyright 1996-2005 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ========================================================================
+
+package org.acme;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Date;
+import java.util.Enumeration;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+
+/* ------------------------------------------------------------ */
+/** Test Servlet Sessions.
+ *
+ * @author Greg Wilkins (gregw)
+ */
+public class SessionDump extends HttpServlet
+{
+
+ int redirectCount=0;
+ /* ------------------------------------------------------------ */
+ String pageType;
+
+ /* ------------------------------------------------------------ */
+ public void init(ServletConfig config)
+ throws ServletException
+ {
+ super.init(config);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void doPost(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ HttpSession session = request.getSession(false);
+ String action = request.getParameter("Action");
+ String name = request.getParameter("Name");
+ String value = request.getParameter("Value");
+
+ String nextUrl = getURI(request)+"?R="+redirectCount++;
+ if (action.equals("New Session"))
+ {
+ session = request.getSession(true);
+ session.setAttribute("test","value");
+ }
+ else
+ if (session!=null)
+ {
+ if (action.equals("Invalidate"))
+ session.invalidate();
+ else if (action.equals("Set") && name!=null && name.length()>0)
+ {
+ session.setAttribute(name,value);
+ }
+ else if (action.equals("Remove"))
+ session.removeAttribute(name);
+ }
+
+ String encodedUrl=response.encodeRedirectURL(nextUrl);
+ response.sendRedirect(encodedUrl);
+
+ }
+
+
+ /* ------------------------------------------------------------ */
+ public void doGet(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ response.setContentType("text/html");
+
+ HttpSession session =
request.getSession(getURI(request).indexOf("new")>0);
+
+ PrintWriter out = response.getWriter();
+ out.println("<h1>Session Dump Servlet:</h1>");
+ out.println("<form
action=\""+response.encodeURL(getURI(request))+"\" method=\"post\">");
+
+ if (session==null)
+ {
+ out.println("<H3>No Session</H3>");
+ out.println("<input type=\"submit\" name=\"Action\" value=\"New
Session\"/>");
+ }
+ else
+ {
+ try
+ {
+ out.println("<b>ID:</b> "+session.getId()+"<br/>");
+ out.println("<b>New:</b> "+session.isNew()+"<br/>");
+ out.println("<b>Created:</b> "+new
Date(session.getCreationTime())+"<br/>");
+ out.println("<b>Last:</b> "+new
Date(session.getLastAccessedTime())+"<br/>");
+ out.println("<b>Max Inactive:</b>
"+session.getMaxInactiveInterval()+"<br/>");
+ out.println("<b>Context:</b>
"+session.getServletContext()+"<br/>");
+
+
+ Enumeration keys=session.getAttributeNames();
+ while(keys.hasMoreElements())
+ {
+ String name=(String)keys.nextElement();
+ String value=(String)session.getAttribute(name);
+
+ out.println("<b>"+name+":</b> "+value+"<br/>");
+ }
+
+ out.println("<b>Name:</b><input type=\"text\" name=\"Name\"
/><br/>");
+ out.println("<b>Value:</b><input type=\"text\"
name=\"Value\" /><br/>");
+
+ out.println("<input type=\"submit\" name=\"Action\"
value=\"Set\"/>");
+ out.println("<input type=\"submit\" name=\"Action\"
value=\"Remove\"/>");
+ out.println("<input type=\"submit\" name=\"Action\"
value=\"Invalidate\"/><br/>");
+
+ out.println("</form><br/>");
+
+ if (request.isRequestedSessionIdFromCookie())
+ out.println("<P>Turn off cookies in your browser to try
url encoding<BR>");
+
+ if (request.isRequestedSessionIdFromURL())
+ out.println("<P>Turn on cookies in your browser to try
cookie encoding<BR>");
+
+ }
+ catch (IllegalStateException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ /* ------------------------------------------------------------ */
+ public String getServletInfo() {
+ return "Session Dump Servlet";
+ }
+
+ /* ------------------------------------------------------------ */
+ private String getURI(HttpServletRequest request)
+ {
+ String
uri=(String)request.getAttribute("javax.servlet.forward.request_uri");
+ if (uri==null)
+ uri=request.getRequestURI();
+ return uri;
+ }
+
+}

Added: trunk/main/planet/web/test/src/main/org/acme/TestFilter.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/TestFilter.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/TestFilter.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,78 @@
+//========================================================================
+//$Id: TestFilter.java,v 1.5 2005/11/01 11:42:53 gregwilkins Exp $
+//Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
+//------------------------------------------------------------------------
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//http://www.apache.org/licenses/LICENSE-2.0
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//========================================================================
+
+package org.acme;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+/* ------------------------------------------------------------ */
+/** TestFilter.
+ * @author gregw
+ *
+ */
+public class TestFilter implements Filter
+{
+ private ServletContext _context;
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
+ */
+ public void init(FilterConfig filterConfig) throws ServletException
+ {
+ _context= filterConfig.getServletContext();
+ }
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
javax.servlet.ServletResponse, javax.servlet.FilterChain)
+ */
+ public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
+ throws IOException, ServletException
+ {
+ Integer old_value=null;
+ try
+ {
+ old_value=(Integer)request.getAttribute("testFilter");
+ Integer value=(old_value==null)?new Integer(1):new
Integer(old_value.intValue()+1);
+
+ request.setAttribute("testFilter", value);
+ _context.setAttribute("request"+request.hashCode(),value);
+ chain.doFilter(request, response);
+ }
+ finally
+ {
+ request.setAttribute("testFilter", old_value);
+ _context.setAttribute("request"+request.hashCode(),old_value);
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see javax.servlet.Filter#destroy()
+ */
+ public void destroy()
+ {
+ }
+
+}

Added: trunk/main/planet/web/test/src/main/org/acme/TestListener.java
===================================================================
--- trunk/main/planet/web/test/src/main/org/acme/TestListener.java
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/src/main/org/acme/TestListener.java
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,119 @@
+//========================================================================
+//$Id: TestListener.java,v 1.1 2005/10/26 10:12:55 gregwilkins Exp $
+//Copyright 2004-2005 Mort Bay Consulting Pty. Ltd.
+//------------------------------------------------------------------------
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//http://www.apache.org/licenses/LICENSE-2.0
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//========================================================================
+
+package org.acme;
+
+import javax.servlet.ServletContextAttributeEvent;
+import javax.servlet.ServletContextAttributeListener;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.ServletRequestAttributeEvent;
+import javax.servlet.ServletRequestAttributeListener;
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.ServletRequestListener;
+import javax.servlet.http.HttpSessionActivationListener;
+import javax.servlet.http.HttpSessionAttributeListener;
+import javax.servlet.http.HttpSessionBindingEvent;
+import javax.servlet.http.HttpSessionEvent;
+import javax.servlet.http.HttpSessionListener;
+
+public class TestListener implements HttpSessionListener,
HttpSessionAttributeListener, HttpSessionActivationListener,
ServletContextListener, ServletContextAttributeListener,
ServletRequestListener, ServletRequestAttributeListener
+{
+ public void attributeAdded(HttpSessionBindingEvent se)
+ {
+ // System.err.println("attributedAdded "+se);
+ }
+
+ public void attributeRemoved(HttpSessionBindingEvent se)
+ {
+ // System.err.println("attributeRemoved "+se);
+ }
+
+ public void attributeReplaced(HttpSessionBindingEvent se)
+ {
+ // System.err.println("attributeReplaced "+se);
+ }
+
+ public void sessionWillPassivate(HttpSessionEvent se)
+ {
+ // System.err.println("sessionWillPassivate "+se);
+ }
+
+ public void sessionDidActivate(HttpSessionEvent se)
+ {
+ // System.err.println("sessionDidActivate "+se);
+ }
+
+ public void contextInitialized(ServletContextEvent sce)
+ {
+ // System.err.println("contextInitialized "+sce);
+ }
+
+ public void contextDestroyed(ServletContextEvent sce)
+ {
+ // System.err.println("contextDestroyed "+sce);
+ }
+
+ public void attributeAdded(ServletContextAttributeEvent scab)
+ {
+ // System.err.println("attributeAdded "+scab);
+ }
+
+ public void attributeRemoved(ServletContextAttributeEvent scab)
+ {
+ // System.err.println("attributeRemoved "+scab);
+ }
+
+ public void attributeReplaced(ServletContextAttributeEvent scab)
+ {
+ // System.err.println("attributeReplaced "+scab);
+ }
+
+ public void requestDestroyed(ServletRequestEvent sre)
+ {
+ // System.err.println("requestDestroyed "+sre);
+ }
+
+ public void requestInitialized(ServletRequestEvent sre)
+ {
+ // System.err.println("requestInitialized "+sre);
+ }
+
+ public void attributeAdded(ServletRequestAttributeEvent srae)
+ {
+ // System.err.println("attributeAdded "+srae);
+ }
+
+ public void attributeRemoved(ServletRequestAttributeEvent srae)
+ {
+ // System.err.println("attributeRemoved "+srae);
+ }
+
+ public void attributeReplaced(ServletRequestAttributeEvent srae)
+ {
+ // System.err.println("attributeReplaced "+srae);
+ }
+
+ public void sessionCreated(HttpSessionEvent se)
+ {
+ // System.err.println("sessionCreated "+se);
+ }
+
+ public void sessionDestroyed(HttpSessionEvent se)
+ {
+ // System.err.println("sessionDestroyed "+se);
+ }
+
+}

Added: trunk/main/planet/web/test/webapps/test/META-INF/MANIFEST.MF
===================================================================
--- trunk/main/planet/web/test/webapps/test/META-INF/MANIFEST.MF
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/META-INF/MANIFEST.MF
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Ant-Version: Apache Ant 1.6.5
+Created-By: 1.5.0_06-b05 (Sun Microsystems Inc.)
+

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter$Event.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter$Event.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter$Member.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter$Member.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/ChatFilter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/DispatchServlet.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/DispatchServlet.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/Dump.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/Dump.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/HelloWorld.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/HelloWorld.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/SessionDump.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/SessionDump.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/TestFilter.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/TestFilter.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/TestListener.class
===================================================================
(Binary files differ)


Property changes on:
trunk/main/planet/web/test/webapps/test/WEB-INF/classes/org/acme/TestListener.class
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/webapps/test/WEB-INF/jetty-web.xml
===================================================================
--- trunk/main/planet/web/test/webapps/test/WEB-INF/jetty-web.xml
2006-01-31 11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/WEB-INF/jetty-web.xml
2006-01-31 12:10:53 UTC (rev 1001)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://jetty.mortbay.org/configure.dtd";>
+
+<!--
+This is the jetty specific web application configuration file. When starting
+a Web Application, the WEB-INF/web-jetty.xml file is looked for and if
found, treated
+as a org.mortbay.xml.XmlConfiguration file and is applied to the
+org.mortbay.jetty.servlet.WebApplicationContext objet
+-->
+
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+ <Call class="org.mortbay.log.Log" name="debug"><Arg>executing
jetty-web.xml</Arg></Call>
+</Configure>

Added: trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml
===================================================================
--- trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app
+ xmlns="http://java.sun.com/xml/ns/j2ee";
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd";
+ version="2.5">
+
+ <display-name>Test WebApp</display-name>
+
+ <listener>
+ <listener-class>org.acme.TestListener</listener-class>
+ </listener>
+
+ <filter>
+ <filter-name>TestFilter</filter-name>
+ <filter-class>org.acme.TestFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>TestFilter</filter-name>
+ <url-pattern>/dump/*</url-pattern>
+ <url-pattern>*.dump</url-pattern>
+ <servlet-name>*</servlet-name>
+ </filter-mapping>
+
+ <filter>
+ <filter-name>Chat</filter-name>
+ <filter-class>org.acme.ChatFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>Chat</filter-name>
+ <url-pattern>/chat/*</url-pattern>
+ </filter-mapping>
+
+ <servlet>
+ <servlet-name>Hello</servlet-name>
+ <servlet-class>org.acme.HelloWorld</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Hello</servlet-name>
+ <url-pattern>/hello/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Dump</servlet-name>
+ <servlet-class>org.acme.Dump</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Dump</servlet-name>
+ <url-pattern>/dump/*</url-pattern>
+ <url-pattern>*.dump</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Session</servlet-name>
+ <servlet-class>org.acme.SessionDump</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Session</servlet-name>
+ <url-pattern>/session/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Dispatch</servlet-name>
+ <servlet-class>org.acme.DispatchServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Dispatch</servlet-name>
+ <url-pattern>/dispatch/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>JspSnoop</servlet-name>
+ <jsp-file>/snoop.jsp</jsp-file>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JspSnoop</servlet-name>
+ <url-pattern>/jspsnoop/*</url-pattern>
+ </servlet-mapping>
+
+ <!--
+ <error-page>
+ <error-code>404</error-code>
+ <location>/dump/ERROR</location>
+ </error-page>
+ -->
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Any User</web-resource-name>
+ <url-pattern>/dump/auth/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>*</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>relax</web-resource-name>
+ <url-pattern>/dump/auth/relax/*</url-pattern>
+ <http-method>GET</http-method>
+ <http-method>HEAD</http-method>
+ </web-resource-collection>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Admin Role</web-resource-name>
+ <url-pattern>/dump/auth/admin/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>content-administrator</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Forbidden</web-resource-name>
+ <url-pattern>/dump/auth/noaccess/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint/>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>SSL</web-resource-name>
+ <url-pattern>/dump/auth/ssl/*</url-pattern>
+ </web-resource-collection>
+ <user-data-constraint>
+ <transport-guarantee>CONFIDENTIAL</transport-guarantee>
+ </user-data-constraint>
+ </security-constraint>
+
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ <realm-name>Test Realm</realm-name>
+ </login-config>
+
+<!--
+ <login-config>
+ <auth-method>DIGEST</auth-method>
+ <realm-name>Test Realm</realm-name>
+ </login-config>
+-->
+
+<!--
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>Test Realm</realm-name>
+ <form-login-config>
+ <form-login-page>/logon.html?param=test</form-login-page>
+ <form-error-page>/logonError.html?param=test</form-error-page>
+ </form-login-config>
+ </login-config>
+-->
+
+
+
+
+</web-app>
+
+

Added: trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml~!
===================================================================
--- trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml~! 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/WEB-INF/web.xml~! 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app
+ xmlns="http://java.sun.com/xml/ns/j2ee";
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd";
+ version="2.5">
+
+ <display-name>Test WebApp</display-name>
+
+ <listener>
+ <listener-class>org.acme.TestListener</listener-class>
+ </listener>
+
+ <filter>
+ <filter-name>TestFilter</filter-name>
+ <filter-class>org.acme.TestFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>TestFilter</filter-name>
+ <url-pattern>/dump/*</url-pattern>
+ <url-pattern>*.dump</url-pattern>
+ <servlet-name>*</servlet-name>
+ </filter-mapping>
+
+ <filter>
+ <filter-name>Chat</filter-name>
+ <filter-class>org.acme.ChatFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>Chat</filter-name>
+ <url-pattern>/chat/*</url-pattern>
+ </filter-mapping>
+
+ <servlet>
+ <servlet-name>Hello</servlet-name>
+ <servlet-class>org.acme.HelloWorld</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Hello</servlet-name>
+ <url-pattern>/hello/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Dump</servlet-name>
+ <servlet-class>org.acme.Dump</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Dump</servlet-name>
+ <url-pattern>/dump/*</url-pattern>
+ <url-pattern>*.dump</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Session</servlet-name>
+ <servlet-class>org.acme.SessionDump</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Session</servlet-name>
+ <url-pattern>/session/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>Dispatch</servlet-name>
+ <servlet-class>org.acme.DispatchServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Dispatch</servlet-name>
+ <url-pattern>/dispatch/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>JspSnoop</servlet-name>
+ <jsp-file>/snoop.jsp</jsp-file>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JspSnoop</servlet-name>
+ <url-pattern>/jspsnoop/*</url-pattern>
+ </servlet-mapping>
+
+ <!--
+ <error-page>
+ <error-code>404</error-code>
+ <location>/dump/ERROR</location>
+ </error-page>
+ -->
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Any User</web-resource-name>
+ <url-pattern>/dump/auth/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>*</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>relax</web-resource-name>
+ <url-pattern>/dump/auth/relax/*</url-pattern>
+ <http-method>GET</http-method>
+ <http-method>HEAD</http-method>
+ </web-resource-collection>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Admin Role</web-resource-name>
+ <url-pattern>/dump/auth/admin/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>content-administrator</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Forbidden</web-resource-name>
+ <url-pattern>/dump/auth/noaccess/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint/>
+ </security-constraint>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>SSL</web-resource-name>
+ <url-pattern>/dump/auth/ssl/*</url-pattern>
+ </web-resource-collection>
+ <user-data-constraint>
+ <transport-guarantee>CONFIDENTIAL</transport-guarantee>
+ </user-data-constraint>
+ </security-constraint>
+
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ <realm-name>Test Realm</realm-name>
+ </login-config>
+
+<!--
+ <login-config>
+ <auth-method>DIGEST</auth-method>
+ <realm-name>Test Realm</realm-name>
+ </login-config>
+-->
+
+<!--
+ <login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>Test Realm</realm-name>
+ <form-login-config>
+ <form-login-page>/logon.html?param=test</form-login-page>
+ <form-error-page>/logonError.html?param=test</form-error-page>
+ </form-login-config>
+ </login-config>
+-->
+
+
+
+
+</web-app>
+
+

Added: trunk/main/planet/web/test/webapps/test/chat/chat.css
===================================================================
--- trunk/main/planet/web/test/webapps/test/chat/chat.css 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/chat/chat.css 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,66 @@
+
+div
+{
+ border: 0px solid black;
+}
+
+div#chatroom
+{
+ width: 41em;
+ background-color: #e0e0e0;
+ border: 1px solid black;
+}
+
+div#chat
+{
+ float: left;
+ width: 30em;
+ height: 20ex;
+ overflow: auto;
+ background-color: #f0f0f0;
+ padding: 4px;
+ border-right: 1px solid black;
+}
+
+div#members
+{
+ float: left;
+ clear: right;
+ width: 10em;
+ border: 0px solid black;
+}
+
+div#input
+{
+ clear: both;
+ padding: 4px;
+ border-top: 1px solid black;
+}
+
+input#phrase
+{
+ width:28em;
+ background-color: #e0f0f0;
+}
+
+input#username
+{
+ width:14em;
+ background-color: #e0f0f0;
+}
+
+div.hidden
+{
+ display: none;
+}
+
+span.from
+{
+ font-weight: bold;
+}
+
+span.alert
+{
+ font-style: italic;
+}
+

Added: trunk/main/planet/web/test/webapps/test/chat/chat.html
===================================================================
--- trunk/main/planet/web/test/webapps/test/chat/chat.html 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/chat/chat.html 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <title>Jetty chat</title>
+ <script type="text/javascript" src="../js/default.js"></script>
+ <script type="text/javascript" src="chat.js"></script>
+ <link rel="stylesheet" type="text/css" href="chat.css"></link>
+</head>
+<body>
+<h1>Jetty AJAX Chat</h1>
+Three really important things about this chat room demo:<ul>
+<li>It has really HORRID Styling. Please feel free to donate a pretty css
:-)</li>
+<li>It is written using AJAX techniques provided by
+<a href="http://bennolan.com/behaviour/";>Behaviour</a>,
+<a href="http://openrico.org/rico/home.page";>Rico</a> and
+<a href="http://prototype.conio.net/";>Prototype</a>.</li>
+<li>It uses Jetty6 <a
href="/javadoc/org/mortbay/jetty/util/Continuation.html">Continuations</a>.
No are used when waiting for async
+events (see below).
+</li>
+</ul>
+
+
+<div id="chatroom">
+
+ <div id="chat">
+ </div>
+
+
+ <div id="members">
+ </div>
+
+ <div id="input">
+ <div id="join" >
+ Username:&nbsp;<input id="username" type="text"/><input id="joinB"
class="button" type="submit" name="join" value="Join"/>
+ </div>
+ <div id="joined" class="hidden">
+ Chat:&nbsp;<input id="phrase" type="text"></input>
+ <input id="sendB" class="button" type="submit" name="join"
value="Send"/>
+ <input id="leaveB" class="button" type="submit" name="join"
value="Leave"/>
+ </div>
+ </div>
+ </div>
+
+ <h3>How this works</h3>
+ This chat room is put together with html, javascript and a filter as
follows:
+ <ul>
+ <li><p>The chat.html file provides the basic layout for the page, including
this text and a bunch of
+ <code>div</code> elements that define the layout of the chat room. This
html will render well
+ without any javascript etc.</p></li>
+
+ <li><p>The chat.html file includes the default.js file, which simply
includes
+ javascript libraries of
+<a href="http://bennolan.com/behaviour/";>Behaviour</a>,
+<a href="http://openrico.org/rico/home.page";>Rico</a> and
+<a href="http://prototype.conio.net/";>Prototype</a>.</p></li>
+
+ <li><p>The chat.html file includes the chat.js script which is the client
side smarts of the chat room:</p>
+ <ul>
+ <li><p>Using Behaviour, the DOM model of chat.html is enhanced with
onclick and onkeypress functions
+ to trigger the dynamic interations.</p>
+ </li>
+ <li><p>Using Rico, the URLs for the AJAX requests for
<code>join</code>,
+ <code>leave</code>, <code>chat</code> and <code>getEvents</code>
are defined.
+ </p></li>
+ <li><p>Using Rico, the members div is identified as an element that
can be directely
+ updated from xhtml returned in an element response from the server.
+ </p></li>
+ <li><p>Using Rico, event handling objects are created to handle
membership, events and polling for events.</p></li>
+ </ul>
+ </li>
+
+ <li><p>On the sever side, the ChatFilter is instantiated to filter requests
to chat.html:</p>
+ <ul>
+ <li><p>The ChatFilter extends AjaxFilter, which identifies
requests that are AJAX requests and
+ gives assistance with formatting the AJAX responses. All other
requests are passed normally.
+ </p></li>
+
+ <li><p>The ChatFilter provides methods for join, leave, chat and
getEvents. Most of these are
+ fairly straight forward and just manipulatet state and send the
appopriate AJAX response.</p></li>
+
+ <li><p>The smarts are in the getEvents method. This method is a
poll from the client for any
+ events on the server for the given member. If there were no
events and the server simply
+ replied with an empty response, this poll would become a busy
poll and consume CPU on both
+ client and server.</p>
+
+ <p>
+ To avoid this, normal AJAX servers will simply wait for a short
period (eg. 30 seconds).
+ If an event occurs in this time, the response is sent
immediately. If the period times out,
+ then an empty response is sent. Either way the client will then
poll again for more events.
+ </p>
+
+ <p>
+ But for servlets, this waiting for events, is done in the
request handler, when a thread has
+ been allocated. Thus it makes it very difficult to scale an
AJAX server to thousands of users
+ as you will need thousands of threads - mostly idle waiting for
events.
+ </p>
+
+ <p>
+ Thus Jetty 6 introduces <a
href="/javadoc/org/mortbay/jetty/util/Continuation.html">Continuations</a>,
which allows the handling of a servlet request to
+ be suspended until either a timeout occurs or an asynchronous
event calls resume on the
+ continuation. This allows threadless waiting and thus permits
an AJAX server to scale without
+ consuming vaste numbers of threads.
+ </p>
+ </li>
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+</body>

Added: trunk/main/planet/web/test/webapps/test/chat/chat.js
===================================================================
--- trunk/main/planet/web/test/webapps/test/chat/chat.js 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/chat/chat.js 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,173 @@
+
+
+
+
+var MembershipHandler =
+{
+ join: function()
+ {
+ var name = $('username').value;
+ if (name == null || name.length==0 )
+ {
+ alert("Please enter a username!");
+ }
+ else
+ {
+ ajaxEngine.sendRequest('join',"name=" + name);
+ }
+ },
+
+ ajaxUpdate: function(ajaxResponse)
+ {
+ if ("left" == ajaxResponse.getAttribute('id'))
+ {
+ // switch the input form
+ $('join').className='';
+ $('joined').className='hidden';
+ $('username').focus();
+ }
+ else
+ {
+ // switch the input form
+ $('join').className='hidden';
+ $('joined').className='';
+ $('phrase').focus();
+
+ // start polling for events
+ ajaxEngine.sendRequest('getEvents');
+ }
+
+ Behaviour.apply();
+
+ }
+};
+
+var EventHandler =
+{
+ last: "",
+
+ chat: function()
+ {
+ var text = $('phrase').value;
+ if (text != null && text.length>0 )
+ {
+ text=text.replace('%','%25');
+ text=text.replace('&','%26');
+ ajaxEngine.sendRequest('chat',"text=" + text); // TODO encode ??
+ $('phrase').value="";
+ }
+ },
+
+ ajaxUpdate: function(ajaxResponse)
+ {
+ var event=ajaxResponse.childNodes[0];
+ document.myevent=event;
+
+ var chat=$('chat')
+ var from=event.attributes['from'].value;
+ var alert=event.attributes['alert'].value;
+ var text=event.childNodes[0].data;
+
+ if ( alert!="true" && from == this.last )
+ from="...";
+ else
+ {
+ this.last=from;
+ from+=":";
+ }
+
+ if (alert!="true")
+ chat.innerHTML += "<span class=\"from\">"+from+"&nbsp;</span><span
class=\"text\">"+text+"</span><br/>";
+ else
+ chat.innerHTML += "<span class=\"alert\"><span
class=\"from\">"+from+"&nbsp;</span><span
class=\"text\">"+text+"</span></span><br/>";
+
+ chat.scrollTop = chat.scrollHeight - chat.clientHeight;
+
+ }
+};
+
+var PollHandler =
+{
+ ajaxUpdate: function(ajaxResponse)
+ {
+ // Poll again for events
+ ajaxEngine.sendRequest('getEvents');
+ }
+};
+
+
+function initPage()
+{
+ ajaxEngine.registerRequest('join', "?ajax=join");
+ ajaxEngine.registerRequest('leave', "?ajax=leave");
+ ajaxEngine.registerRequest('chat', "?ajax=chat");
+ ajaxEngine.registerRequest('getEvents', "?ajax=getEvents&id=event");
+
+ ajaxEngine.registerAjaxElement('members');
+
+ ajaxEngine.registerAjaxObject('joined', MembershipHandler);
+ ajaxEngine.registerAjaxObject('left', MembershipHandler);
+ ajaxEngine.registerAjaxObject('event', EventHandler);
+ ajaxEngine.registerAjaxObject('poll', PollHandler);
+
+}
+
+
+var behaviours =
+{
+
+ '#username' : function(element)
+ {
+ element.setAttribute("autocomplete","OFF");
+ element.onkeypress = function(event)
+ {
+ if (event && (event.keyCode==13 || event.keyCode==10))
+ {
+ MembershipHandler.join();
+ }
+ }
+ },
+
+ '#joinB' : function(element)
+ {
+ element.onclick = function()
+ {
+ MembershipHandler.join();
+ }
+ },
+
+ '#phrase' : function(element)
+ {
+ element.setAttribute("autocomplete","OFF");
+ element.onkeypress = function(event)
+ {
+ if (event && (event.keyCode==13 || event.keyCode==10))
+ {
+ EventHandler.chat();
+ return false;
+ }
+ return true;
+ }
+ },
+
+ '#sendB' : function(element)
+ {
+ element.onclick = function()
+ {
+ EventHandler.chat();
+ }
+ },
+
+
+ '#leaveB' : function(element)
+ {
+ element.onclick = function()
+ {
+ ajaxEngine.sendRequest('leave');
+ }
+ },
+};
+
+Behaviour.register(behaviours);
+Behaviour.addLoadEvent(initPage);
+

Added: trunk/main/planet/web/test/webapps/test/d.txt
===================================================================
--- trunk/main/planet/web/test/webapps/test/d.txt 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/d.txt 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,10 @@
+0000 0000000000000000000000000000000000000000000000000000000
+0001 0000000000000000000000000000000000000000000000000000000
+0002 0000000000000000000000000000000000000000000000000000000
+0003 0000000000000000000000000000000000000000000000000000000
+0004 0000000000000000000000000000000000000000000000000000000
+0005 0000000000000000000000000000000000000000000000000000000
+0006 0000000000000000000000000000000000000000000000000000000
+0007 0000000000000000000000000000000000000000000000000000000
+0008 0000000000000000000000000000000000000000000000000000000
+0009 0000000000000000000000000000000000000000000000000000000

Added: trunk/main/planet/web/test/webapps/test/da.txt
===================================================================
--- trunk/main/planet/web/test/webapps/test/da.txt 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/da.txt 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,1000 @@
+0000 1111111111111111111111111111111111111111111111111111111
+0001 1111111111111111111111111111111111111111111111111111111
+0002 1111111111111111111111111111111111111111111111111111111
+0003 1111111111111111111111111111111111111111111111111111111
+0004 1111111111111111111111111111111111111111111111111111111
+0005 1111111111111111111111111111111111111111111111111111111
+0006 1111111111111111111111111111111111111111111111111111111
+0007 1111111111111111111111111111111111111111111111111111111
+0008 1111111111111111111111111111111111111111111111111111111
+0009 1111111111111111111111111111111111111111111111111111111
+0010 1111111111111111111111111111111111111111111111111111111
+0011 1111111111111111111111111111111111111111111111111111111
+0012 1111111111111111111111111111111111111111111111111111111
+0013 1111111111111111111111111111111111111111111111111111111
+0014 1111111111111111111111111111111111111111111111111111111
+0015 1111111111111111111111111111111111111111111111111111111
+0016 1111111111111111111111111111111111111111111111111111111
+0017 1111111111111111111111111111111111111111111111111111111
+0018 1111111111111111111111111111111111111111111111111111111
+0019 1111111111111111111111111111111111111111111111111111111
+0020 1111111111111111111111111111111111111111111111111111111
+0021 1111111111111111111111111111111111111111111111111111111
+0022 1111111111111111111111111111111111111111111111111111111
+0023 1111111111111111111111111111111111111111111111111111111
+0024 1111111111111111111111111111111111111111111111111111111
+0025 1111111111111111111111111111111111111111111111111111111
+0026 1111111111111111111111111111111111111111111111111111111
+0027 1111111111111111111111111111111111111111111111111111111
+0028 1111111111111111111111111111111111111111111111111111111
+0029 1111111111111111111111111111111111111111111111111111111
+0030 1111111111111111111111111111111111111111111111111111111
+0031 1111111111111111111111111111111111111111111111111111111
+0032 1111111111111111111111111111111111111111111111111111111
+0033 1111111111111111111111111111111111111111111111111111111
+0034 1111111111111111111111111111111111111111111111111111111
+0035 1111111111111111111111111111111111111111111111111111111
+0036 1111111111111111111111111111111111111111111111111111111
+0037 1111111111111111111111111111111111111111111111111111111
+0038 1111111111111111111111111111111111111111111111111111111
+0039 1111111111111111111111111111111111111111111111111111111
+0040 1111111111111111111111111111111111111111111111111111111
+0041 1111111111111111111111111111111111111111111111111111111
+0042 1111111111111111111111111111111111111111111111111111111
+0043 1111111111111111111111111111111111111111111111111111111
+0044 1111111111111111111111111111111111111111111111111111111
+0045 1111111111111111111111111111111111111111111111111111111
+0046 1111111111111111111111111111111111111111111111111111111
+0047 1111111111111111111111111111111111111111111111111111111
+0048 1111111111111111111111111111111111111111111111111111111
+0049 1111111111111111111111111111111111111111111111111111111
+0050 1111111111111111111111111111111111111111111111111111111
+0051 1111111111111111111111111111111111111111111111111111111
+0052 1111111111111111111111111111111111111111111111111111111
+0053 1111111111111111111111111111111111111111111111111111111
+0054 1111111111111111111111111111111111111111111111111111111
+0055 1111111111111111111111111111111111111111111111111111111
+0056 1111111111111111111111111111111111111111111111111111111
+0057 1111111111111111111111111111111111111111111111111111111
+0058 1111111111111111111111111111111111111111111111111111111
+0059 1111111111111111111111111111111111111111111111111111111
+0060 1111111111111111111111111111111111111111111111111111111
+0061 1111111111111111111111111111111111111111111111111111111
+0062 1111111111111111111111111111111111111111111111111111111
+0063 1111111111111111111111111111111111111111111111111111111
+0064 1111111111111111111111111111111111111111111111111111111
+0065 1111111111111111111111111111111111111111111111111111111
+0066 1111111111111111111111111111111111111111111111111111111
+0067 1111111111111111111111111111111111111111111111111111111
+0068 1111111111111111111111111111111111111111111111111111111
+0069 1111111111111111111111111111111111111111111111111111111
+0070 1111111111111111111111111111111111111111111111111111111
+0071 1111111111111111111111111111111111111111111111111111111
+0072 1111111111111111111111111111111111111111111111111111111
+0073 1111111111111111111111111111111111111111111111111111111
+0074 1111111111111111111111111111111111111111111111111111111
+0075 1111111111111111111111111111111111111111111111111111111
+0076 1111111111111111111111111111111111111111111111111111111
+0077 1111111111111111111111111111111111111111111111111111111
+0078 1111111111111111111111111111111111111111111111111111111
+0079 1111111111111111111111111111111111111111111111111111111
+0080 1111111111111111111111111111111111111111111111111111111
+0081 1111111111111111111111111111111111111111111111111111111
+0082 1111111111111111111111111111111111111111111111111111111
+0083 1111111111111111111111111111111111111111111111111111111
+0084 1111111111111111111111111111111111111111111111111111111
+0085 1111111111111111111111111111111111111111111111111111111
+0086 1111111111111111111111111111111111111111111111111111111
+0087 1111111111111111111111111111111111111111111111111111111
+0088 1111111111111111111111111111111111111111111111111111111
+0089 1111111111111111111111111111111111111111111111111111111
+0090 1111111111111111111111111111111111111111111111111111111
+0091 1111111111111111111111111111111111111111111111111111111
+0092 1111111111111111111111111111111111111111111111111111111
+0093 1111111111111111111111111111111111111111111111111111111
+0094 1111111111111111111111111111111111111111111111111111111
+0095 1111111111111111111111111111111111111111111111111111111
+0096 1111111111111111111111111111111111111111111111111111111
+0097 1111111111111111111111111111111111111111111111111111111
+0098 1111111111111111111111111111111111111111111111111111111
+0099 1111111111111111111111111111111111111111111111111111111
+0100 1111111111111111111111111111111111111111111111111111111
+0101 1111111111111111111111111111111111111111111111111111111
+0102 1111111111111111111111111111111111111111111111111111111
+0103 1111111111111111111111111111111111111111111111111111111
+0104 1111111111111111111111111111111111111111111111111111111
+0105 1111111111111111111111111111111111111111111111111111111
+0106 1111111111111111111111111111111111111111111111111111111
+0107 1111111111111111111111111111111111111111111111111111111
+0108 1111111111111111111111111111111111111111111111111111111
+0109 1111111111111111111111111111111111111111111111111111111
+0110 1111111111111111111111111111111111111111111111111111111
+0111 1111111111111111111111111111111111111111111111111111111
+0112 1111111111111111111111111111111111111111111111111111111
+0113 1111111111111111111111111111111111111111111111111111111
+0114 1111111111111111111111111111111111111111111111111111111
+0115 1111111111111111111111111111111111111111111111111111111
+0116 1111111111111111111111111111111111111111111111111111111
+0117 1111111111111111111111111111111111111111111111111111111
+0118 1111111111111111111111111111111111111111111111111111111
+0119 1111111111111111111111111111111111111111111111111111111
+0120 1111111111111111111111111111111111111111111111111111111
+0121 1111111111111111111111111111111111111111111111111111111
+0122 1111111111111111111111111111111111111111111111111111111
+0123 1111111111111111111111111111111111111111111111111111111
+0124 1111111111111111111111111111111111111111111111111111111
+0125 1111111111111111111111111111111111111111111111111111111
+0126 1111111111111111111111111111111111111111111111111111111
+0127 1111111111111111111111111111111111111111111111111111111
+0128 1111111111111111111111111111111111111111111111111111111
+0129 1111111111111111111111111111111111111111111111111111111
+0130 1111111111111111111111111111111111111111111111111111111
+0131 1111111111111111111111111111111111111111111111111111111
+0132 1111111111111111111111111111111111111111111111111111111
+0133 1111111111111111111111111111111111111111111111111111111
+0134 1111111111111111111111111111111111111111111111111111111
+0135 1111111111111111111111111111111111111111111111111111111
+0136 1111111111111111111111111111111111111111111111111111111
+0137 1111111111111111111111111111111111111111111111111111111
+0138 1111111111111111111111111111111111111111111111111111111
+0139 1111111111111111111111111111111111111111111111111111111
+0140 1111111111111111111111111111111111111111111111111111111
+0141 1111111111111111111111111111111111111111111111111111111
+0142 1111111111111111111111111111111111111111111111111111111
+0143 1111111111111111111111111111111111111111111111111111111
+0144 1111111111111111111111111111111111111111111111111111111
+0145 1111111111111111111111111111111111111111111111111111111
+0146 1111111111111111111111111111111111111111111111111111111
+0147 1111111111111111111111111111111111111111111111111111111
+0148 1111111111111111111111111111111111111111111111111111111
+0149 1111111111111111111111111111111111111111111111111111111
+0150 1111111111111111111111111111111111111111111111111111111
+0151 1111111111111111111111111111111111111111111111111111111
+0152 1111111111111111111111111111111111111111111111111111111
+0153 1111111111111111111111111111111111111111111111111111111
+0154 1111111111111111111111111111111111111111111111111111111
+0155 1111111111111111111111111111111111111111111111111111111
+0156 1111111111111111111111111111111111111111111111111111111
+0157 1111111111111111111111111111111111111111111111111111111
+0158 1111111111111111111111111111111111111111111111111111111
+0159 1111111111111111111111111111111111111111111111111111111
+0160 1111111111111111111111111111111111111111111111111111111
+0161 1111111111111111111111111111111111111111111111111111111
+0162 1111111111111111111111111111111111111111111111111111111
+0163 1111111111111111111111111111111111111111111111111111111
+0164 1111111111111111111111111111111111111111111111111111111
+0165 1111111111111111111111111111111111111111111111111111111
+0166 1111111111111111111111111111111111111111111111111111111
+0167 1111111111111111111111111111111111111111111111111111111
+0168 1111111111111111111111111111111111111111111111111111111
+0169 1111111111111111111111111111111111111111111111111111111
+0170 1111111111111111111111111111111111111111111111111111111
+0171 1111111111111111111111111111111111111111111111111111111
+0172 1111111111111111111111111111111111111111111111111111111
+0173 1111111111111111111111111111111111111111111111111111111
+0174 1111111111111111111111111111111111111111111111111111111
+0175 1111111111111111111111111111111111111111111111111111111
+0176 1111111111111111111111111111111111111111111111111111111
+0177 1111111111111111111111111111111111111111111111111111111
+0178 1111111111111111111111111111111111111111111111111111111
+0179 1111111111111111111111111111111111111111111111111111111
+0180 1111111111111111111111111111111111111111111111111111111
+0181 1111111111111111111111111111111111111111111111111111111
+0182 1111111111111111111111111111111111111111111111111111111
+0183 1111111111111111111111111111111111111111111111111111111
+0184 1111111111111111111111111111111111111111111111111111111
+0185 1111111111111111111111111111111111111111111111111111111
+0186 1111111111111111111111111111111111111111111111111111111
+0187 1111111111111111111111111111111111111111111111111111111
+0188 1111111111111111111111111111111111111111111111111111111
+0189 1111111111111111111111111111111111111111111111111111111
+0190 1111111111111111111111111111111111111111111111111111111
+0191 1111111111111111111111111111111111111111111111111111111
+0192 1111111111111111111111111111111111111111111111111111111
+0193 1111111111111111111111111111111111111111111111111111111
+0194 1111111111111111111111111111111111111111111111111111111
+0195 1111111111111111111111111111111111111111111111111111111
+0196 1111111111111111111111111111111111111111111111111111111
+0197 1111111111111111111111111111111111111111111111111111111
+0198 1111111111111111111111111111111111111111111111111111111
+0199 1111111111111111111111111111111111111111111111111111111
+0200 1111111111111111111111111111111111111111111111111111111
+0201 1111111111111111111111111111111111111111111111111111111
+0202 1111111111111111111111111111111111111111111111111111111
+0203 1111111111111111111111111111111111111111111111111111111
+0204 1111111111111111111111111111111111111111111111111111111
+0205 1111111111111111111111111111111111111111111111111111111
+0206 1111111111111111111111111111111111111111111111111111111
+0207 1111111111111111111111111111111111111111111111111111111
+0208 1111111111111111111111111111111111111111111111111111111
+0209 1111111111111111111111111111111111111111111111111111111
+0210 1111111111111111111111111111111111111111111111111111111
+0211 1111111111111111111111111111111111111111111111111111111
+0212 1111111111111111111111111111111111111111111111111111111
+0213 1111111111111111111111111111111111111111111111111111111
+0214 1111111111111111111111111111111111111111111111111111111
+0215 1111111111111111111111111111111111111111111111111111111
+0216 1111111111111111111111111111111111111111111111111111111
+0217 1111111111111111111111111111111111111111111111111111111
+0218 1111111111111111111111111111111111111111111111111111111
+0219 1111111111111111111111111111111111111111111111111111111
+0220 1111111111111111111111111111111111111111111111111111111
+0221 1111111111111111111111111111111111111111111111111111111
+0222 1111111111111111111111111111111111111111111111111111111
+0223 1111111111111111111111111111111111111111111111111111111
+0224 1111111111111111111111111111111111111111111111111111111
+0225 1111111111111111111111111111111111111111111111111111111
+0226 1111111111111111111111111111111111111111111111111111111
+0227 1111111111111111111111111111111111111111111111111111111
+0228 1111111111111111111111111111111111111111111111111111111
+0229 1111111111111111111111111111111111111111111111111111111
+0230 1111111111111111111111111111111111111111111111111111111
+0231 1111111111111111111111111111111111111111111111111111111
+0232 1111111111111111111111111111111111111111111111111111111
+0233 1111111111111111111111111111111111111111111111111111111
+0234 1111111111111111111111111111111111111111111111111111111
+0235 1111111111111111111111111111111111111111111111111111111
+0236 1111111111111111111111111111111111111111111111111111111
+0237 1111111111111111111111111111111111111111111111111111111
+0238 1111111111111111111111111111111111111111111111111111111
+0239 1111111111111111111111111111111111111111111111111111111
+0240 1111111111111111111111111111111111111111111111111111111
+0241 1111111111111111111111111111111111111111111111111111111
+0242 1111111111111111111111111111111111111111111111111111111
+0243 1111111111111111111111111111111111111111111111111111111
+0244 1111111111111111111111111111111111111111111111111111111
+0245 1111111111111111111111111111111111111111111111111111111
+0246 1111111111111111111111111111111111111111111111111111111
+0247 1111111111111111111111111111111111111111111111111111111
+0248 1111111111111111111111111111111111111111111111111111111
+0249 1111111111111111111111111111111111111111111111111111111
+0250 1111111111111111111111111111111111111111111111111111111
+0251 1111111111111111111111111111111111111111111111111111111
+0252 1111111111111111111111111111111111111111111111111111111
+0253 1111111111111111111111111111111111111111111111111111111
+0254 1111111111111111111111111111111111111111111111111111111
+0255 1111111111111111111111111111111111111111111111111111111
+0256 1111111111111111111111111111111111111111111111111111111
+0257 1111111111111111111111111111111111111111111111111111111
+0258 1111111111111111111111111111111111111111111111111111111
+0259 1111111111111111111111111111111111111111111111111111111
+0260 1111111111111111111111111111111111111111111111111111111
+0261 1111111111111111111111111111111111111111111111111111111
+0262 1111111111111111111111111111111111111111111111111111111
+0263 1111111111111111111111111111111111111111111111111111111
+0264 1111111111111111111111111111111111111111111111111111111
+0265 1111111111111111111111111111111111111111111111111111111
+0266 1111111111111111111111111111111111111111111111111111111
+0267 1111111111111111111111111111111111111111111111111111111
+0268 1111111111111111111111111111111111111111111111111111111
+0269 1111111111111111111111111111111111111111111111111111111
+0270 1111111111111111111111111111111111111111111111111111111
+0271 1111111111111111111111111111111111111111111111111111111
+0272 1111111111111111111111111111111111111111111111111111111
+0273 1111111111111111111111111111111111111111111111111111111
+0274 1111111111111111111111111111111111111111111111111111111
+0275 1111111111111111111111111111111111111111111111111111111
+0276 1111111111111111111111111111111111111111111111111111111
+0277 1111111111111111111111111111111111111111111111111111111
+0278 1111111111111111111111111111111111111111111111111111111
+0279 1111111111111111111111111111111111111111111111111111111
+0280 1111111111111111111111111111111111111111111111111111111
+0281 1111111111111111111111111111111111111111111111111111111
+0282 1111111111111111111111111111111111111111111111111111111
+0283 1111111111111111111111111111111111111111111111111111111
+0284 1111111111111111111111111111111111111111111111111111111
+0285 1111111111111111111111111111111111111111111111111111111
+0286 1111111111111111111111111111111111111111111111111111111
+0287 1111111111111111111111111111111111111111111111111111111
+0288 1111111111111111111111111111111111111111111111111111111
+0289 1111111111111111111111111111111111111111111111111111111
+0290 1111111111111111111111111111111111111111111111111111111
+0291 1111111111111111111111111111111111111111111111111111111
+0292 1111111111111111111111111111111111111111111111111111111
+0293 1111111111111111111111111111111111111111111111111111111
+0294 1111111111111111111111111111111111111111111111111111111
+0295 1111111111111111111111111111111111111111111111111111111
+0296 1111111111111111111111111111111111111111111111111111111
+0297 1111111111111111111111111111111111111111111111111111111
+0298 1111111111111111111111111111111111111111111111111111111
+0299 1111111111111111111111111111111111111111111111111111111
+0300 1111111111111111111111111111111111111111111111111111111
+0301 1111111111111111111111111111111111111111111111111111111
+0302 1111111111111111111111111111111111111111111111111111111
+0303 1111111111111111111111111111111111111111111111111111111
+0304 1111111111111111111111111111111111111111111111111111111
+0305 1111111111111111111111111111111111111111111111111111111
+0306 1111111111111111111111111111111111111111111111111111111
+0307 1111111111111111111111111111111111111111111111111111111
+0308 1111111111111111111111111111111111111111111111111111111
+0309 1111111111111111111111111111111111111111111111111111111
+0310 1111111111111111111111111111111111111111111111111111111
+0311 1111111111111111111111111111111111111111111111111111111
+0312 1111111111111111111111111111111111111111111111111111111
+0313 1111111111111111111111111111111111111111111111111111111
+0314 1111111111111111111111111111111111111111111111111111111
+0315 1111111111111111111111111111111111111111111111111111111
+0316 1111111111111111111111111111111111111111111111111111111
+0317 1111111111111111111111111111111111111111111111111111111
+0318 1111111111111111111111111111111111111111111111111111111
+0319 1111111111111111111111111111111111111111111111111111111
+0320 1111111111111111111111111111111111111111111111111111111
+0321 1111111111111111111111111111111111111111111111111111111
+0322 1111111111111111111111111111111111111111111111111111111
+0323 1111111111111111111111111111111111111111111111111111111
+0324 1111111111111111111111111111111111111111111111111111111
+0325 1111111111111111111111111111111111111111111111111111111
+0326 1111111111111111111111111111111111111111111111111111111
+0327 1111111111111111111111111111111111111111111111111111111
+0328 1111111111111111111111111111111111111111111111111111111
+0329 1111111111111111111111111111111111111111111111111111111
+0330 1111111111111111111111111111111111111111111111111111111
+0331 1111111111111111111111111111111111111111111111111111111
+0332 1111111111111111111111111111111111111111111111111111111
+0333 1111111111111111111111111111111111111111111111111111111
+0334 1111111111111111111111111111111111111111111111111111111
+0335 1111111111111111111111111111111111111111111111111111111
+0336 1111111111111111111111111111111111111111111111111111111
+0337 1111111111111111111111111111111111111111111111111111111
+0338 1111111111111111111111111111111111111111111111111111111
+0339 1111111111111111111111111111111111111111111111111111111
+0340 1111111111111111111111111111111111111111111111111111111
+0341 1111111111111111111111111111111111111111111111111111111
+0342 1111111111111111111111111111111111111111111111111111111
+0343 1111111111111111111111111111111111111111111111111111111
+0344 1111111111111111111111111111111111111111111111111111111
+0345 1111111111111111111111111111111111111111111111111111111
+0346 1111111111111111111111111111111111111111111111111111111
+0347 1111111111111111111111111111111111111111111111111111111
+0348 1111111111111111111111111111111111111111111111111111111
+0349 1111111111111111111111111111111111111111111111111111111
+0350 1111111111111111111111111111111111111111111111111111111
+0351 1111111111111111111111111111111111111111111111111111111
+0352 1111111111111111111111111111111111111111111111111111111
+0353 1111111111111111111111111111111111111111111111111111111
+0354 1111111111111111111111111111111111111111111111111111111
+0355 1111111111111111111111111111111111111111111111111111111
+0356 1111111111111111111111111111111111111111111111111111111
+0357 1111111111111111111111111111111111111111111111111111111
+0358 1111111111111111111111111111111111111111111111111111111
+0359 1111111111111111111111111111111111111111111111111111111
+0360 1111111111111111111111111111111111111111111111111111111
+0361 1111111111111111111111111111111111111111111111111111111
+0362 1111111111111111111111111111111111111111111111111111111
+0363 1111111111111111111111111111111111111111111111111111111
+0364 1111111111111111111111111111111111111111111111111111111
+0365 1111111111111111111111111111111111111111111111111111111
+0366 1111111111111111111111111111111111111111111111111111111
+0367 1111111111111111111111111111111111111111111111111111111
+0368 1111111111111111111111111111111111111111111111111111111
+0369 1111111111111111111111111111111111111111111111111111111
+0370 1111111111111111111111111111111111111111111111111111111
+0371 1111111111111111111111111111111111111111111111111111111
+0372 1111111111111111111111111111111111111111111111111111111
+0373 1111111111111111111111111111111111111111111111111111111
+0374 1111111111111111111111111111111111111111111111111111111
+0375 1111111111111111111111111111111111111111111111111111111
+0376 1111111111111111111111111111111111111111111111111111111
+0377 1111111111111111111111111111111111111111111111111111111
+0378 1111111111111111111111111111111111111111111111111111111
+0379 1111111111111111111111111111111111111111111111111111111
+0380 1111111111111111111111111111111111111111111111111111111
+0381 1111111111111111111111111111111111111111111111111111111
+0382 1111111111111111111111111111111111111111111111111111111
+0383 1111111111111111111111111111111111111111111111111111111
+0384 1111111111111111111111111111111111111111111111111111111
+0385 1111111111111111111111111111111111111111111111111111111
+0386 1111111111111111111111111111111111111111111111111111111
+0387 1111111111111111111111111111111111111111111111111111111
+0388 1111111111111111111111111111111111111111111111111111111
+0389 1111111111111111111111111111111111111111111111111111111
+0390 1111111111111111111111111111111111111111111111111111111
+0391 1111111111111111111111111111111111111111111111111111111
+0392 1111111111111111111111111111111111111111111111111111111
+0393 1111111111111111111111111111111111111111111111111111111
+0394 1111111111111111111111111111111111111111111111111111111
+0395 1111111111111111111111111111111111111111111111111111111
+0396 1111111111111111111111111111111111111111111111111111111
+0397 1111111111111111111111111111111111111111111111111111111
+0398 1111111111111111111111111111111111111111111111111111111
+0399 1111111111111111111111111111111111111111111111111111111
+0400 1111111111111111111111111111111111111111111111111111111
+0401 1111111111111111111111111111111111111111111111111111111
+0402 1111111111111111111111111111111111111111111111111111111
+0403 1111111111111111111111111111111111111111111111111111111
+0404 1111111111111111111111111111111111111111111111111111111
+0405 1111111111111111111111111111111111111111111111111111111
+0406 1111111111111111111111111111111111111111111111111111111
+0407 1111111111111111111111111111111111111111111111111111111
+0408 1111111111111111111111111111111111111111111111111111111
+0409 1111111111111111111111111111111111111111111111111111111
+0410 1111111111111111111111111111111111111111111111111111111
+0411 1111111111111111111111111111111111111111111111111111111
+0412 1111111111111111111111111111111111111111111111111111111
+0413 1111111111111111111111111111111111111111111111111111111
+0414 1111111111111111111111111111111111111111111111111111111
+0415 1111111111111111111111111111111111111111111111111111111
+0416 1111111111111111111111111111111111111111111111111111111
+0417 1111111111111111111111111111111111111111111111111111111
+0418 1111111111111111111111111111111111111111111111111111111
+0419 1111111111111111111111111111111111111111111111111111111
+0420 1111111111111111111111111111111111111111111111111111111
+0421 1111111111111111111111111111111111111111111111111111111
+0422 1111111111111111111111111111111111111111111111111111111
+0423 1111111111111111111111111111111111111111111111111111111
+0424 1111111111111111111111111111111111111111111111111111111
+0425 1111111111111111111111111111111111111111111111111111111
+0426 1111111111111111111111111111111111111111111111111111111
+0427 1111111111111111111111111111111111111111111111111111111
+0428 1111111111111111111111111111111111111111111111111111111
+0429 1111111111111111111111111111111111111111111111111111111
+0430 1111111111111111111111111111111111111111111111111111111
+0431 1111111111111111111111111111111111111111111111111111111
+0432 1111111111111111111111111111111111111111111111111111111
+0433 1111111111111111111111111111111111111111111111111111111
+0434 1111111111111111111111111111111111111111111111111111111
+0435 1111111111111111111111111111111111111111111111111111111
+0436 1111111111111111111111111111111111111111111111111111111
+0437 1111111111111111111111111111111111111111111111111111111
+0438 1111111111111111111111111111111111111111111111111111111
+0439 1111111111111111111111111111111111111111111111111111111
+0440 1111111111111111111111111111111111111111111111111111111
+0441 1111111111111111111111111111111111111111111111111111111
+0442 1111111111111111111111111111111111111111111111111111111
+0443 1111111111111111111111111111111111111111111111111111111
+0444 1111111111111111111111111111111111111111111111111111111
+0445 1111111111111111111111111111111111111111111111111111111
+0446 1111111111111111111111111111111111111111111111111111111
+0447 1111111111111111111111111111111111111111111111111111111
+0448 1111111111111111111111111111111111111111111111111111111
+0449 1111111111111111111111111111111111111111111111111111111
+0450 1111111111111111111111111111111111111111111111111111111
+0451 1111111111111111111111111111111111111111111111111111111
+0452 1111111111111111111111111111111111111111111111111111111
+0453 1111111111111111111111111111111111111111111111111111111
+0454 1111111111111111111111111111111111111111111111111111111
+0455 1111111111111111111111111111111111111111111111111111111
+0456 1111111111111111111111111111111111111111111111111111111
+0457 1111111111111111111111111111111111111111111111111111111
+0458 1111111111111111111111111111111111111111111111111111111
+0459 1111111111111111111111111111111111111111111111111111111
+0460 1111111111111111111111111111111111111111111111111111111
+0461 1111111111111111111111111111111111111111111111111111111
+0462 1111111111111111111111111111111111111111111111111111111
+0463 1111111111111111111111111111111111111111111111111111111
+0464 1111111111111111111111111111111111111111111111111111111
+0465 1111111111111111111111111111111111111111111111111111111
+0466 1111111111111111111111111111111111111111111111111111111
+0467 1111111111111111111111111111111111111111111111111111111
+0468 1111111111111111111111111111111111111111111111111111111
+0469 1111111111111111111111111111111111111111111111111111111
+0470 1111111111111111111111111111111111111111111111111111111
+0471 1111111111111111111111111111111111111111111111111111111
+0472 1111111111111111111111111111111111111111111111111111111
+0473 1111111111111111111111111111111111111111111111111111111
+0474 1111111111111111111111111111111111111111111111111111111
+0475 1111111111111111111111111111111111111111111111111111111
+0476 1111111111111111111111111111111111111111111111111111111
+0477 1111111111111111111111111111111111111111111111111111111
+0478 1111111111111111111111111111111111111111111111111111111
+0479 1111111111111111111111111111111111111111111111111111111
+0480 1111111111111111111111111111111111111111111111111111111
+0481 1111111111111111111111111111111111111111111111111111111
+0482 1111111111111111111111111111111111111111111111111111111
+0483 1111111111111111111111111111111111111111111111111111111
+0484 1111111111111111111111111111111111111111111111111111111
+0485 1111111111111111111111111111111111111111111111111111111
+0486 1111111111111111111111111111111111111111111111111111111
+0487 1111111111111111111111111111111111111111111111111111111
+0488 1111111111111111111111111111111111111111111111111111111
+0489 1111111111111111111111111111111111111111111111111111111
+0490 1111111111111111111111111111111111111111111111111111111
+0491 1111111111111111111111111111111111111111111111111111111
+0492 1111111111111111111111111111111111111111111111111111111
+0493 1111111111111111111111111111111111111111111111111111111
+0494 1111111111111111111111111111111111111111111111111111111
+0495 1111111111111111111111111111111111111111111111111111111
+0496 1111111111111111111111111111111111111111111111111111111
+0497 1111111111111111111111111111111111111111111111111111111
+0498 1111111111111111111111111111111111111111111111111111111
+0499 1111111111111111111111111111111111111111111111111111111
+0500 1111111111111111111111111111111111111111111111111111111
+0501 1111111111111111111111111111111111111111111111111111111
+0502 1111111111111111111111111111111111111111111111111111111
+0503 1111111111111111111111111111111111111111111111111111111
+0504 1111111111111111111111111111111111111111111111111111111
+0505 1111111111111111111111111111111111111111111111111111111
+0506 1111111111111111111111111111111111111111111111111111111
+0507 1111111111111111111111111111111111111111111111111111111
+0508 1111111111111111111111111111111111111111111111111111111
+0509 1111111111111111111111111111111111111111111111111111111
+0510 1111111111111111111111111111111111111111111111111111111
+0511 1111111111111111111111111111111111111111111111111111111
+0512 1111111111111111111111111111111111111111111111111111111
+0513 1111111111111111111111111111111111111111111111111111111
+0514 1111111111111111111111111111111111111111111111111111111
+0515 1111111111111111111111111111111111111111111111111111111
+0516 1111111111111111111111111111111111111111111111111111111
+0517 1111111111111111111111111111111111111111111111111111111
+0518 1111111111111111111111111111111111111111111111111111111
+0519 1111111111111111111111111111111111111111111111111111111
+0520 1111111111111111111111111111111111111111111111111111111
+0521 1111111111111111111111111111111111111111111111111111111
+0522 1111111111111111111111111111111111111111111111111111111
+0523 1111111111111111111111111111111111111111111111111111111
+0524 1111111111111111111111111111111111111111111111111111111
+0525 1111111111111111111111111111111111111111111111111111111
+0526 1111111111111111111111111111111111111111111111111111111
+0527 1111111111111111111111111111111111111111111111111111111
+0528 1111111111111111111111111111111111111111111111111111111
+0529 1111111111111111111111111111111111111111111111111111111
+0530 1111111111111111111111111111111111111111111111111111111
+0531 1111111111111111111111111111111111111111111111111111111
+0532 1111111111111111111111111111111111111111111111111111111
+0533 1111111111111111111111111111111111111111111111111111111
+0534 1111111111111111111111111111111111111111111111111111111
+0535 1111111111111111111111111111111111111111111111111111111
+0536 1111111111111111111111111111111111111111111111111111111
+0537 1111111111111111111111111111111111111111111111111111111
+0538 1111111111111111111111111111111111111111111111111111111
+0539 1111111111111111111111111111111111111111111111111111111
+0540 1111111111111111111111111111111111111111111111111111111
+0541 1111111111111111111111111111111111111111111111111111111
+0542 1111111111111111111111111111111111111111111111111111111
+0543 1111111111111111111111111111111111111111111111111111111
+0544 1111111111111111111111111111111111111111111111111111111
+0545 1111111111111111111111111111111111111111111111111111111
+0546 1111111111111111111111111111111111111111111111111111111
+0547 1111111111111111111111111111111111111111111111111111111
+0548 1111111111111111111111111111111111111111111111111111111
+0549 1111111111111111111111111111111111111111111111111111111
+0550 1111111111111111111111111111111111111111111111111111111
+0551 1111111111111111111111111111111111111111111111111111111
+0552 1111111111111111111111111111111111111111111111111111111
+0553 1111111111111111111111111111111111111111111111111111111
+0554 1111111111111111111111111111111111111111111111111111111
+0555 1111111111111111111111111111111111111111111111111111111
+0556 1111111111111111111111111111111111111111111111111111111
+0557 1111111111111111111111111111111111111111111111111111111
+0558 1111111111111111111111111111111111111111111111111111111
+0559 1111111111111111111111111111111111111111111111111111111
+0560 1111111111111111111111111111111111111111111111111111111
+0561 1111111111111111111111111111111111111111111111111111111
+0562 1111111111111111111111111111111111111111111111111111111
+0563 1111111111111111111111111111111111111111111111111111111
+0564 1111111111111111111111111111111111111111111111111111111
+0565 1111111111111111111111111111111111111111111111111111111
+0566 1111111111111111111111111111111111111111111111111111111
+0567 1111111111111111111111111111111111111111111111111111111
+0568 1111111111111111111111111111111111111111111111111111111
+0569 1111111111111111111111111111111111111111111111111111111
+0570 1111111111111111111111111111111111111111111111111111111
+0571 1111111111111111111111111111111111111111111111111111111
+0572 1111111111111111111111111111111111111111111111111111111
+0573 1111111111111111111111111111111111111111111111111111111
+0574 1111111111111111111111111111111111111111111111111111111
+0575 1111111111111111111111111111111111111111111111111111111
+0576 1111111111111111111111111111111111111111111111111111111
+0577 1111111111111111111111111111111111111111111111111111111
+0578 1111111111111111111111111111111111111111111111111111111
+0579 1111111111111111111111111111111111111111111111111111111
+0580 1111111111111111111111111111111111111111111111111111111
+0581 1111111111111111111111111111111111111111111111111111111
+0582 1111111111111111111111111111111111111111111111111111111
+0583 1111111111111111111111111111111111111111111111111111111
+0584 1111111111111111111111111111111111111111111111111111111
+0585 1111111111111111111111111111111111111111111111111111111
+0586 1111111111111111111111111111111111111111111111111111111
+0587 1111111111111111111111111111111111111111111111111111111
+0588 1111111111111111111111111111111111111111111111111111111
+0589 1111111111111111111111111111111111111111111111111111111
+0590 1111111111111111111111111111111111111111111111111111111
+0591 1111111111111111111111111111111111111111111111111111111
+0592 1111111111111111111111111111111111111111111111111111111
+0593 1111111111111111111111111111111111111111111111111111111
+0594 1111111111111111111111111111111111111111111111111111111
+0595 1111111111111111111111111111111111111111111111111111111
+0596 1111111111111111111111111111111111111111111111111111111
+0597 1111111111111111111111111111111111111111111111111111111
+0598 1111111111111111111111111111111111111111111111111111111
+0599 1111111111111111111111111111111111111111111111111111111
+0600 1111111111111111111111111111111111111111111111111111111
+0601 1111111111111111111111111111111111111111111111111111111
+0602 1111111111111111111111111111111111111111111111111111111
+0603 1111111111111111111111111111111111111111111111111111111
+0604 1111111111111111111111111111111111111111111111111111111
+0605 1111111111111111111111111111111111111111111111111111111
+0606 1111111111111111111111111111111111111111111111111111111
+0607 1111111111111111111111111111111111111111111111111111111
+0608 1111111111111111111111111111111111111111111111111111111
+0609 1111111111111111111111111111111111111111111111111111111
+0610 1111111111111111111111111111111111111111111111111111111
+0611 1111111111111111111111111111111111111111111111111111111
+0612 1111111111111111111111111111111111111111111111111111111
+0613 1111111111111111111111111111111111111111111111111111111
+0614 1111111111111111111111111111111111111111111111111111111
+0615 1111111111111111111111111111111111111111111111111111111
+0616 1111111111111111111111111111111111111111111111111111111
+0617 1111111111111111111111111111111111111111111111111111111
+0618 1111111111111111111111111111111111111111111111111111111
+0619 1111111111111111111111111111111111111111111111111111111
+0620 1111111111111111111111111111111111111111111111111111111
+0621 1111111111111111111111111111111111111111111111111111111
+0622 1111111111111111111111111111111111111111111111111111111
+0623 1111111111111111111111111111111111111111111111111111111
+0624 1111111111111111111111111111111111111111111111111111111
+0625 1111111111111111111111111111111111111111111111111111111
+0626 1111111111111111111111111111111111111111111111111111111
+0627 1111111111111111111111111111111111111111111111111111111
+0628 1111111111111111111111111111111111111111111111111111111
+0629 1111111111111111111111111111111111111111111111111111111
+0630 1111111111111111111111111111111111111111111111111111111
+0631 1111111111111111111111111111111111111111111111111111111
+0632 1111111111111111111111111111111111111111111111111111111
+0633 1111111111111111111111111111111111111111111111111111111
+0634 1111111111111111111111111111111111111111111111111111111
+0635 1111111111111111111111111111111111111111111111111111111
+0636 1111111111111111111111111111111111111111111111111111111
+0637 1111111111111111111111111111111111111111111111111111111
+0638 1111111111111111111111111111111111111111111111111111111
+0639 1111111111111111111111111111111111111111111111111111111
+0640 1111111111111111111111111111111111111111111111111111111
+0641 1111111111111111111111111111111111111111111111111111111
+0642 1111111111111111111111111111111111111111111111111111111
+0643 1111111111111111111111111111111111111111111111111111111
+0644 1111111111111111111111111111111111111111111111111111111
+0645 1111111111111111111111111111111111111111111111111111111
+0646 1111111111111111111111111111111111111111111111111111111
+0647 1111111111111111111111111111111111111111111111111111111
+0648 1111111111111111111111111111111111111111111111111111111
+0649 1111111111111111111111111111111111111111111111111111111
+0650 1111111111111111111111111111111111111111111111111111111
+0651 1111111111111111111111111111111111111111111111111111111
+0652 1111111111111111111111111111111111111111111111111111111
+0653 1111111111111111111111111111111111111111111111111111111
+0654 1111111111111111111111111111111111111111111111111111111
+0655 1111111111111111111111111111111111111111111111111111111
+0656 1111111111111111111111111111111111111111111111111111111
+0657 1111111111111111111111111111111111111111111111111111111
+0658 1111111111111111111111111111111111111111111111111111111
+0659 1111111111111111111111111111111111111111111111111111111
+0660 1111111111111111111111111111111111111111111111111111111
+0661 1111111111111111111111111111111111111111111111111111111
+0662 1111111111111111111111111111111111111111111111111111111
+0663 1111111111111111111111111111111111111111111111111111111
+0664 1111111111111111111111111111111111111111111111111111111
+0665 1111111111111111111111111111111111111111111111111111111
+0666 1111111111111111111111111111111111111111111111111111111
+0667 1111111111111111111111111111111111111111111111111111111
+0668 1111111111111111111111111111111111111111111111111111111
+0669 1111111111111111111111111111111111111111111111111111111
+0670 1111111111111111111111111111111111111111111111111111111
+0671 1111111111111111111111111111111111111111111111111111111
+0672 1111111111111111111111111111111111111111111111111111111
+0673 1111111111111111111111111111111111111111111111111111111
+0674 1111111111111111111111111111111111111111111111111111111
+0675 1111111111111111111111111111111111111111111111111111111
+0676 1111111111111111111111111111111111111111111111111111111
+0677 1111111111111111111111111111111111111111111111111111111
+0678 1111111111111111111111111111111111111111111111111111111
+0679 1111111111111111111111111111111111111111111111111111111
+0680 1111111111111111111111111111111111111111111111111111111
+0681 1111111111111111111111111111111111111111111111111111111
+0682 1111111111111111111111111111111111111111111111111111111
+0683 1111111111111111111111111111111111111111111111111111111
+0684 1111111111111111111111111111111111111111111111111111111
+0685 1111111111111111111111111111111111111111111111111111111
+0686 1111111111111111111111111111111111111111111111111111111
+0687 1111111111111111111111111111111111111111111111111111111
+0688 1111111111111111111111111111111111111111111111111111111
+0689 1111111111111111111111111111111111111111111111111111111
+0690 1111111111111111111111111111111111111111111111111111111
+0691 1111111111111111111111111111111111111111111111111111111
+0692 1111111111111111111111111111111111111111111111111111111
+0693 1111111111111111111111111111111111111111111111111111111
+0694 1111111111111111111111111111111111111111111111111111111
+0695 1111111111111111111111111111111111111111111111111111111
+0696 1111111111111111111111111111111111111111111111111111111
+0697 1111111111111111111111111111111111111111111111111111111
+0698 1111111111111111111111111111111111111111111111111111111
+0699 1111111111111111111111111111111111111111111111111111111
+0700 1111111111111111111111111111111111111111111111111111111
+0701 1111111111111111111111111111111111111111111111111111111
+0702 1111111111111111111111111111111111111111111111111111111
+0703 1111111111111111111111111111111111111111111111111111111
+0704 1111111111111111111111111111111111111111111111111111111
+0705 1111111111111111111111111111111111111111111111111111111
+0706 1111111111111111111111111111111111111111111111111111111
+0707 1111111111111111111111111111111111111111111111111111111
+0708 1111111111111111111111111111111111111111111111111111111
+0709 1111111111111111111111111111111111111111111111111111111
+0710 1111111111111111111111111111111111111111111111111111111
+0711 1111111111111111111111111111111111111111111111111111111
+0712 1111111111111111111111111111111111111111111111111111111
+0713 1111111111111111111111111111111111111111111111111111111
+0714 1111111111111111111111111111111111111111111111111111111
+0715 1111111111111111111111111111111111111111111111111111111
+0716 1111111111111111111111111111111111111111111111111111111
+0717 1111111111111111111111111111111111111111111111111111111
+0718 1111111111111111111111111111111111111111111111111111111
+0719 1111111111111111111111111111111111111111111111111111111
+0720 1111111111111111111111111111111111111111111111111111111
+0721 1111111111111111111111111111111111111111111111111111111
+0722 1111111111111111111111111111111111111111111111111111111
+0723 1111111111111111111111111111111111111111111111111111111
+0724 1111111111111111111111111111111111111111111111111111111
+0725 1111111111111111111111111111111111111111111111111111111
+0726 1111111111111111111111111111111111111111111111111111111
+0727 1111111111111111111111111111111111111111111111111111111
+0728 1111111111111111111111111111111111111111111111111111111
+0729 1111111111111111111111111111111111111111111111111111111
+0730 1111111111111111111111111111111111111111111111111111111
+0731 1111111111111111111111111111111111111111111111111111111
+0732 1111111111111111111111111111111111111111111111111111111
+0733 1111111111111111111111111111111111111111111111111111111
+0734 1111111111111111111111111111111111111111111111111111111
+0735 1111111111111111111111111111111111111111111111111111111
+0736 1111111111111111111111111111111111111111111111111111111
+0737 1111111111111111111111111111111111111111111111111111111
+0738 1111111111111111111111111111111111111111111111111111111
+0739 1111111111111111111111111111111111111111111111111111111
+0740 1111111111111111111111111111111111111111111111111111111
+0741 1111111111111111111111111111111111111111111111111111111
+0742 1111111111111111111111111111111111111111111111111111111
+0743 1111111111111111111111111111111111111111111111111111111
+0744 1111111111111111111111111111111111111111111111111111111
+0745 1111111111111111111111111111111111111111111111111111111
+0746 1111111111111111111111111111111111111111111111111111111
+0747 1111111111111111111111111111111111111111111111111111111
+0748 1111111111111111111111111111111111111111111111111111111
+0749 1111111111111111111111111111111111111111111111111111111
+0750 1111111111111111111111111111111111111111111111111111111
+0751 1111111111111111111111111111111111111111111111111111111
+0752 1111111111111111111111111111111111111111111111111111111
+0753 1111111111111111111111111111111111111111111111111111111
+0754 1111111111111111111111111111111111111111111111111111111
+0755 1111111111111111111111111111111111111111111111111111111
+0756 1111111111111111111111111111111111111111111111111111111
+0757 1111111111111111111111111111111111111111111111111111111
+0758 1111111111111111111111111111111111111111111111111111111
+0759 1111111111111111111111111111111111111111111111111111111
+0760 1111111111111111111111111111111111111111111111111111111
+0761 1111111111111111111111111111111111111111111111111111111
+0762 1111111111111111111111111111111111111111111111111111111
+0763 1111111111111111111111111111111111111111111111111111111
+0764 1111111111111111111111111111111111111111111111111111111
+0765 1111111111111111111111111111111111111111111111111111111
+0766 1111111111111111111111111111111111111111111111111111111
+0767 1111111111111111111111111111111111111111111111111111111
+0768 1111111111111111111111111111111111111111111111111111111
+0769 1111111111111111111111111111111111111111111111111111111
+0770 1111111111111111111111111111111111111111111111111111111
+0771 1111111111111111111111111111111111111111111111111111111
+0772 1111111111111111111111111111111111111111111111111111111
+0773 1111111111111111111111111111111111111111111111111111111
+0774 1111111111111111111111111111111111111111111111111111111
+0775 1111111111111111111111111111111111111111111111111111111
+0776 1111111111111111111111111111111111111111111111111111111
+0777 1111111111111111111111111111111111111111111111111111111
+0778 1111111111111111111111111111111111111111111111111111111
+0779 1111111111111111111111111111111111111111111111111111111
+0780 1111111111111111111111111111111111111111111111111111111
+0781 1111111111111111111111111111111111111111111111111111111
+0782 1111111111111111111111111111111111111111111111111111111
+0783 1111111111111111111111111111111111111111111111111111111
+0784 1111111111111111111111111111111111111111111111111111111
+0785 1111111111111111111111111111111111111111111111111111111
+0786 1111111111111111111111111111111111111111111111111111111
+0787 1111111111111111111111111111111111111111111111111111111
+0788 1111111111111111111111111111111111111111111111111111111
+0789 1111111111111111111111111111111111111111111111111111111
+0790 1111111111111111111111111111111111111111111111111111111
+0791 1111111111111111111111111111111111111111111111111111111
+0792 1111111111111111111111111111111111111111111111111111111
+0793 1111111111111111111111111111111111111111111111111111111
+0794 1111111111111111111111111111111111111111111111111111111
+0795 1111111111111111111111111111111111111111111111111111111
+0796 1111111111111111111111111111111111111111111111111111111
+0797 1111111111111111111111111111111111111111111111111111111
+0798 1111111111111111111111111111111111111111111111111111111
+0799 1111111111111111111111111111111111111111111111111111111
+0800 1111111111111111111111111111111111111111111111111111111
+0801 1111111111111111111111111111111111111111111111111111111
+0802 1111111111111111111111111111111111111111111111111111111
+0803 1111111111111111111111111111111111111111111111111111111
+0804 1111111111111111111111111111111111111111111111111111111
+0805 1111111111111111111111111111111111111111111111111111111
+0806 1111111111111111111111111111111111111111111111111111111
+0807 1111111111111111111111111111111111111111111111111111111
+0808 1111111111111111111111111111111111111111111111111111111
+0809 1111111111111111111111111111111111111111111111111111111
+0810 1111111111111111111111111111111111111111111111111111111
+0811 1111111111111111111111111111111111111111111111111111111
+0812 1111111111111111111111111111111111111111111111111111111
+0813 1111111111111111111111111111111111111111111111111111111
+0814 1111111111111111111111111111111111111111111111111111111
+0815 1111111111111111111111111111111111111111111111111111111
+0816 1111111111111111111111111111111111111111111111111111111
+0817 1111111111111111111111111111111111111111111111111111111
+0818 1111111111111111111111111111111111111111111111111111111
+0819 1111111111111111111111111111111111111111111111111111111
+0820 1111111111111111111111111111111111111111111111111111111
+0821 1111111111111111111111111111111111111111111111111111111
+0822 1111111111111111111111111111111111111111111111111111111
+0823 1111111111111111111111111111111111111111111111111111111
+0824 1111111111111111111111111111111111111111111111111111111
+0825 1111111111111111111111111111111111111111111111111111111
+0826 1111111111111111111111111111111111111111111111111111111
+0827 1111111111111111111111111111111111111111111111111111111
+0828 1111111111111111111111111111111111111111111111111111111
+0829 1111111111111111111111111111111111111111111111111111111
+0830 1111111111111111111111111111111111111111111111111111111
+0831 1111111111111111111111111111111111111111111111111111111
+0832 1111111111111111111111111111111111111111111111111111111
+0833 1111111111111111111111111111111111111111111111111111111
+0834 1111111111111111111111111111111111111111111111111111111
+0835 1111111111111111111111111111111111111111111111111111111
+0836 1111111111111111111111111111111111111111111111111111111
+0837 1111111111111111111111111111111111111111111111111111111
+0838 1111111111111111111111111111111111111111111111111111111
+0839 1111111111111111111111111111111111111111111111111111111
+0840 1111111111111111111111111111111111111111111111111111111
+0841 1111111111111111111111111111111111111111111111111111111
+0842 1111111111111111111111111111111111111111111111111111111
+0843 1111111111111111111111111111111111111111111111111111111
+0844 1111111111111111111111111111111111111111111111111111111
+0845 1111111111111111111111111111111111111111111111111111111
+0846 1111111111111111111111111111111111111111111111111111111
+0847 1111111111111111111111111111111111111111111111111111111
+0848 1111111111111111111111111111111111111111111111111111111
+0849 1111111111111111111111111111111111111111111111111111111
+0850 1111111111111111111111111111111111111111111111111111111
+0851 1111111111111111111111111111111111111111111111111111111
+0852 1111111111111111111111111111111111111111111111111111111
+0853 1111111111111111111111111111111111111111111111111111111
+0854 1111111111111111111111111111111111111111111111111111111
+0855 1111111111111111111111111111111111111111111111111111111
+0856 1111111111111111111111111111111111111111111111111111111
+0857 1111111111111111111111111111111111111111111111111111111
+0858 1111111111111111111111111111111111111111111111111111111
+0859 1111111111111111111111111111111111111111111111111111111
+0860 1111111111111111111111111111111111111111111111111111111
+0861 1111111111111111111111111111111111111111111111111111111
+0862 1111111111111111111111111111111111111111111111111111111
+0863 1111111111111111111111111111111111111111111111111111111
+0864 1111111111111111111111111111111111111111111111111111111
+0865 1111111111111111111111111111111111111111111111111111111
+0866 1111111111111111111111111111111111111111111111111111111
+0867 1111111111111111111111111111111111111111111111111111111
+0868 1111111111111111111111111111111111111111111111111111111
+0869 1111111111111111111111111111111111111111111111111111111
+0870 1111111111111111111111111111111111111111111111111111111
+0871 1111111111111111111111111111111111111111111111111111111
+0872 1111111111111111111111111111111111111111111111111111111
+0873 1111111111111111111111111111111111111111111111111111111
+0874 1111111111111111111111111111111111111111111111111111111
+0875 1111111111111111111111111111111111111111111111111111111
+0876 1111111111111111111111111111111111111111111111111111111
+0877 1111111111111111111111111111111111111111111111111111111
+0878 1111111111111111111111111111111111111111111111111111111
+0879 1111111111111111111111111111111111111111111111111111111
+0880 1111111111111111111111111111111111111111111111111111111
+0881 1111111111111111111111111111111111111111111111111111111
+0882 1111111111111111111111111111111111111111111111111111111
+0883 1111111111111111111111111111111111111111111111111111111
+0884 1111111111111111111111111111111111111111111111111111111
+0885 1111111111111111111111111111111111111111111111111111111
+0886 1111111111111111111111111111111111111111111111111111111
+0887 1111111111111111111111111111111111111111111111111111111
+0888 1111111111111111111111111111111111111111111111111111111
+0889 1111111111111111111111111111111111111111111111111111111
+0890 1111111111111111111111111111111111111111111111111111111
+0891 1111111111111111111111111111111111111111111111111111111
+0892 1111111111111111111111111111111111111111111111111111111
+0893 1111111111111111111111111111111111111111111111111111111
+0894 1111111111111111111111111111111111111111111111111111111
+0895 1111111111111111111111111111111111111111111111111111111
+0896 1111111111111111111111111111111111111111111111111111111
+0897 1111111111111111111111111111111111111111111111111111111
+0898 1111111111111111111111111111111111111111111111111111111
+0899 1111111111111111111111111111111111111111111111111111111
+0900 1111111111111111111111111111111111111111111111111111111
+0901 1111111111111111111111111111111111111111111111111111111
+0902 1111111111111111111111111111111111111111111111111111111
+0903 1111111111111111111111111111111111111111111111111111111
+0904 1111111111111111111111111111111111111111111111111111111
+0905 1111111111111111111111111111111111111111111111111111111
+0906 1111111111111111111111111111111111111111111111111111111
+0907 1111111111111111111111111111111111111111111111111111111
+0908 1111111111111111111111111111111111111111111111111111111
+0909 1111111111111111111111111111111111111111111111111111111
+0910 1111111111111111111111111111111111111111111111111111111
+0911 1111111111111111111111111111111111111111111111111111111
+0912 1111111111111111111111111111111111111111111111111111111
+0913 1111111111111111111111111111111111111111111111111111111
+0914 1111111111111111111111111111111111111111111111111111111
+0915 1111111111111111111111111111111111111111111111111111111
+0916 1111111111111111111111111111111111111111111111111111111
+0917 1111111111111111111111111111111111111111111111111111111
+0918 1111111111111111111111111111111111111111111111111111111
+0919 1111111111111111111111111111111111111111111111111111111
+0920 1111111111111111111111111111111111111111111111111111111
+0921 1111111111111111111111111111111111111111111111111111111
+0922 1111111111111111111111111111111111111111111111111111111
+0923 1111111111111111111111111111111111111111111111111111111
+0924 1111111111111111111111111111111111111111111111111111111
+0925 1111111111111111111111111111111111111111111111111111111
+0926 1111111111111111111111111111111111111111111111111111111
+0927 1111111111111111111111111111111111111111111111111111111
+0928 1111111111111111111111111111111111111111111111111111111
+0929 1111111111111111111111111111111111111111111111111111111
+0930 1111111111111111111111111111111111111111111111111111111
+0931 1111111111111111111111111111111111111111111111111111111
+0932 1111111111111111111111111111111111111111111111111111111
+0933 1111111111111111111111111111111111111111111111111111111
+0934 1111111111111111111111111111111111111111111111111111111
+0935 1111111111111111111111111111111111111111111111111111111
+0936 1111111111111111111111111111111111111111111111111111111
+0937 1111111111111111111111111111111111111111111111111111111
+0938 1111111111111111111111111111111111111111111111111111111
+0939 1111111111111111111111111111111111111111111111111111111
+0940 1111111111111111111111111111111111111111111111111111111
+0941 1111111111111111111111111111111111111111111111111111111
+0942 1111111111111111111111111111111111111111111111111111111
+0943 1111111111111111111111111111111111111111111111111111111
+0944 1111111111111111111111111111111111111111111111111111111
+0945 1111111111111111111111111111111111111111111111111111111
+0946 1111111111111111111111111111111111111111111111111111111
+0947 1111111111111111111111111111111111111111111111111111111
+0948 1111111111111111111111111111111111111111111111111111111
+0949 1111111111111111111111111111111111111111111111111111111
+0950 1111111111111111111111111111111111111111111111111111111
+0951 1111111111111111111111111111111111111111111111111111111
+0952 1111111111111111111111111111111111111111111111111111111
+0953 1111111111111111111111111111111111111111111111111111111
+0954 1111111111111111111111111111111111111111111111111111111
+0955 1111111111111111111111111111111111111111111111111111111
+0956 1111111111111111111111111111111111111111111111111111111
+0957 1111111111111111111111111111111111111111111111111111111
+0958 1111111111111111111111111111111111111111111111111111111
+0959 1111111111111111111111111111111111111111111111111111111
+0960 1111111111111111111111111111111111111111111111111111111
+0961 1111111111111111111111111111111111111111111111111111111
+0962 1111111111111111111111111111111111111111111111111111111
+0963 1111111111111111111111111111111111111111111111111111111
+0964 1111111111111111111111111111111111111111111111111111111
+0965 1111111111111111111111111111111111111111111111111111111
+0966 1111111111111111111111111111111111111111111111111111111
+0967 1111111111111111111111111111111111111111111111111111111
+0968 1111111111111111111111111111111111111111111111111111111
+0969 1111111111111111111111111111111111111111111111111111111
+0970 1111111111111111111111111111111111111111111111111111111
+0971 1111111111111111111111111111111111111111111111111111111
+0972 1111111111111111111111111111111111111111111111111111111
+0973 1111111111111111111111111111111111111111111111111111111
+0974 1111111111111111111111111111111111111111111111111111111
+0975 1111111111111111111111111111111111111111111111111111111
+0976 1111111111111111111111111111111111111111111111111111111
+0977 1111111111111111111111111111111111111111111111111111111
+0978 1111111111111111111111111111111111111111111111111111111
+0979 1111111111111111111111111111111111111111111111111111111
+0980 1111111111111111111111111111111111111111111111111111111
+0981 1111111111111111111111111111111111111111111111111111111
+0982 1111111111111111111111111111111111111111111111111111111
+0983 1111111111111111111111111111111111111111111111111111111
+0984 1111111111111111111111111111111111111111111111111111111
+0985 1111111111111111111111111111111111111111111111111111111
+0986 1111111111111111111111111111111111111111111111111111111
+0987 1111111111111111111111111111111111111111111111111111111
+0988 1111111111111111111111111111111111111111111111111111111
+0989 1111111111111111111111111111111111111111111111111111111
+0990 1111111111111111111111111111111111111111111111111111111
+0991 1111111111111111111111111111111111111111111111111111111
+0992 1111111111111111111111111111111111111111111111111111111
+0993 1111111111111111111111111111111111111111111111111111111
+0994 1111111111111111111111111111111111111111111111111111111
+0995 1111111111111111111111111111111111111111111111111111111
+0996 1111111111111111111111111111111111111111111111111111111
+0997 1111111111111111111111111111111111111111111111111111111
+0998 1111111111111111111111111111111111111111111111111111111
+0999 1111111111111111111111111111111111111111111111111111111

Added: trunk/main/planet/web/test/webapps/test/dat.txt
===================================================================
--- trunk/main/planet/web/test/webapps/test/dat.txt 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/dat.txt 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,4000 @@
+0000 2222222222222222222222222222222222222222222222222222222
+0001 2222222222222222222222222222222222222222222222222222222
+0002 2222222222222222222222222222222222222222222222222222222
+0003 2222222222222222222222222222222222222222222222222222222
+0004 2222222222222222222222222222222222222222222222222222222
+0005 2222222222222222222222222222222222222222222222222222222
+0006 2222222222222222222222222222222222222222222222222222222
+0007 2222222222222222222222222222222222222222222222222222222
+0008 2222222222222222222222222222222222222222222222222222222
+0009 2222222222222222222222222222222222222222222222222222222
+0010 2222222222222222222222222222222222222222222222222222222
+0011 2222222222222222222222222222222222222222222222222222222
+0012 2222222222222222222222222222222222222222222222222222222
+0013 2222222222222222222222222222222222222222222222222222222
+0014 2222222222222222222222222222222222222222222222222222222
+0015 2222222222222222222222222222222222222222222222222222222
+0016 2222222222222222222222222222222222222222222222222222222
+0017 2222222222222222222222222222222222222222222222222222222
+0018 2222222222222222222222222222222222222222222222222222222
+0019 2222222222222222222222222222222222222222222222222222222
+0020 2222222222222222222222222222222222222222222222222222222
+0021 2222222222222222222222222222222222222222222222222222222
+0022 2222222222222222222222222222222222222222222222222222222
+0023 2222222222222222222222222222222222222222222222222222222
+0024 2222222222222222222222222222222222222222222222222222222
+0025 2222222222222222222222222222222222222222222222222222222
+0026 2222222222222222222222222222222222222222222222222222222
+0027 2222222222222222222222222222222222222222222222222222222
+0028 2222222222222222222222222222222222222222222222222222222
+0029 2222222222222222222222222222222222222222222222222222222
+0030 2222222222222222222222222222222222222222222222222222222
+0031 2222222222222222222222222222222222222222222222222222222
+0032 2222222222222222222222222222222222222222222222222222222
+0033 2222222222222222222222222222222222222222222222222222222
+0034 2222222222222222222222222222222222222222222222222222222
+0035 2222222222222222222222222222222222222222222222222222222
+0036 2222222222222222222222222222222222222222222222222222222
+0037 2222222222222222222222222222222222222222222222222222222
+0038 2222222222222222222222222222222222222222222222222222222
+0039 2222222222222222222222222222222222222222222222222222222
+0040 2222222222222222222222222222222222222222222222222222222
+0041 2222222222222222222222222222222222222222222222222222222
+0042 2222222222222222222222222222222222222222222222222222222
+0043 2222222222222222222222222222222222222222222222222222222
+0044 2222222222222222222222222222222222222222222222222222222
+0045 2222222222222222222222222222222222222222222222222222222
+0046 2222222222222222222222222222222222222222222222222222222
+0047 2222222222222222222222222222222222222222222222222222222
+0048 2222222222222222222222222222222222222222222222222222222
+0049 2222222222222222222222222222222222222222222222222222222
+0050 2222222222222222222222222222222222222222222222222222222
+0051 2222222222222222222222222222222222222222222222222222222
+0052 2222222222222222222222222222222222222222222222222222222
+0053 2222222222222222222222222222222222222222222222222222222
+0054 2222222222222222222222222222222222222222222222222222222
+0055 2222222222222222222222222222222222222222222222222222222
+0056 2222222222222222222222222222222222222222222222222222222
+0057 2222222222222222222222222222222222222222222222222222222
+0058 2222222222222222222222222222222222222222222222222222222
+0059 2222222222222222222222222222222222222222222222222222222
+0060 2222222222222222222222222222222222222222222222222222222
+0061 2222222222222222222222222222222222222222222222222222222
+0062 2222222222222222222222222222222222222222222222222222222
+0063 2222222222222222222222222222222222222222222222222222222
+0064 2222222222222222222222222222222222222222222222222222222
+0065 2222222222222222222222222222222222222222222222222222222
+0066 2222222222222222222222222222222222222222222222222222222
+0067 2222222222222222222222222222222222222222222222222222222
+0068 2222222222222222222222222222222222222222222222222222222
+0069 2222222222222222222222222222222222222222222222222222222
+0070 2222222222222222222222222222222222222222222222222222222
+0071 2222222222222222222222222222222222222222222222222222222
+0072 2222222222222222222222222222222222222222222222222222222
+0073 2222222222222222222222222222222222222222222222222222222
+0074 2222222222222222222222222222222222222222222222222222222
+0075 2222222222222222222222222222222222222222222222222222222
+0076 2222222222222222222222222222222222222222222222222222222
+0077 2222222222222222222222222222222222222222222222222222222
+0078 2222222222222222222222222222222222222222222222222222222
+0079 2222222222222222222222222222222222222222222222222222222
+0080 2222222222222222222222222222222222222222222222222222222
+0081 2222222222222222222222222222222222222222222222222222222
+0082 2222222222222222222222222222222222222222222222222222222
+0083 2222222222222222222222222222222222222222222222222222222
+0084 2222222222222222222222222222222222222222222222222222222
+0085 2222222222222222222222222222222222222222222222222222222
+0086 2222222222222222222222222222222222222222222222222222222
+0087 2222222222222222222222222222222222222222222222222222222
+0088 2222222222222222222222222222222222222222222222222222222
+0089 2222222222222222222222222222222222222222222222222222222
+0090 2222222222222222222222222222222222222222222222222222222
+0091 2222222222222222222222222222222222222222222222222222222
+0092 2222222222222222222222222222222222222222222222222222222
+0093 2222222222222222222222222222222222222222222222222222222
+0094 2222222222222222222222222222222222222222222222222222222
+0095 2222222222222222222222222222222222222222222222222222222
+0096 2222222222222222222222222222222222222222222222222222222
+0097 2222222222222222222222222222222222222222222222222222222
+0098 2222222222222222222222222222222222222222222222222222222
+0099 2222222222222222222222222222222222222222222222222222222
+0100 2222222222222222222222222222222222222222222222222222222
+0101 2222222222222222222222222222222222222222222222222222222
+0102 2222222222222222222222222222222222222222222222222222222
+0103 2222222222222222222222222222222222222222222222222222222
+0104 2222222222222222222222222222222222222222222222222222222
+0105 2222222222222222222222222222222222222222222222222222222
+0106 2222222222222222222222222222222222222222222222222222222
+0107 2222222222222222222222222222222222222222222222222222222
+0108 2222222222222222222222222222222222222222222222222222222
+0109 2222222222222222222222222222222222222222222222222222222
+0110 2222222222222222222222222222222222222222222222222222222
+0111 2222222222222222222222222222222222222222222222222222222
+0112 2222222222222222222222222222222222222222222222222222222
+0113 2222222222222222222222222222222222222222222222222222222
+0114 2222222222222222222222222222222222222222222222222222222
+0115 2222222222222222222222222222222222222222222222222222222
+0116 2222222222222222222222222222222222222222222222222222222
+0117 2222222222222222222222222222222222222222222222222222222
+0118 2222222222222222222222222222222222222222222222222222222
+0119 2222222222222222222222222222222222222222222222222222222
+0120 2222222222222222222222222222222222222222222222222222222
+0121 2222222222222222222222222222222222222222222222222222222
+0122 2222222222222222222222222222222222222222222222222222222
+0123 2222222222222222222222222222222222222222222222222222222
+0124 2222222222222222222222222222222222222222222222222222222
+0125 2222222222222222222222222222222222222222222222222222222
+0126 2222222222222222222222222222222222222222222222222222222
+0127 2222222222222222222222222222222222222222222222222222222
+0128 2222222222222222222222222222222222222222222222222222222
+0129 2222222222222222222222222222222222222222222222222222222
+0130 2222222222222222222222222222222222222222222222222222222
+0131 2222222222222222222222222222222222222222222222222222222
+0132 2222222222222222222222222222222222222222222222222222222
+0133 2222222222222222222222222222222222222222222222222222222
+0134 2222222222222222222222222222222222222222222222222222222
+0135 2222222222222222222222222222222222222222222222222222222
+0136 2222222222222222222222222222222222222222222222222222222
+0137 2222222222222222222222222222222222222222222222222222222
+0138 2222222222222222222222222222222222222222222222222222222
+0139 2222222222222222222222222222222222222222222222222222222
+0140 2222222222222222222222222222222222222222222222222222222
+0141 2222222222222222222222222222222222222222222222222222222
+0142 2222222222222222222222222222222222222222222222222222222
+0143 2222222222222222222222222222222222222222222222222222222
+0144 2222222222222222222222222222222222222222222222222222222
+0145 2222222222222222222222222222222222222222222222222222222
+0146 2222222222222222222222222222222222222222222222222222222
+0147 2222222222222222222222222222222222222222222222222222222
+0148 2222222222222222222222222222222222222222222222222222222
+0149 2222222222222222222222222222222222222222222222222222222
+0150 2222222222222222222222222222222222222222222222222222222
+0151 2222222222222222222222222222222222222222222222222222222
+0152 2222222222222222222222222222222222222222222222222222222
+0153 2222222222222222222222222222222222222222222222222222222
+0154 2222222222222222222222222222222222222222222222222222222
+0155 2222222222222222222222222222222222222222222222222222222
+0156 2222222222222222222222222222222222222222222222222222222
+0157 2222222222222222222222222222222222222222222222222222222
+0158 2222222222222222222222222222222222222222222222222222222
+0159 2222222222222222222222222222222222222222222222222222222
+0160 2222222222222222222222222222222222222222222222222222222
+0161 2222222222222222222222222222222222222222222222222222222
+0162 2222222222222222222222222222222222222222222222222222222
+0163 2222222222222222222222222222222222222222222222222222222
+0164 2222222222222222222222222222222222222222222222222222222
+0165 2222222222222222222222222222222222222222222222222222222
+0166 2222222222222222222222222222222222222222222222222222222
+0167 2222222222222222222222222222222222222222222222222222222
+0168 2222222222222222222222222222222222222222222222222222222
+0169 2222222222222222222222222222222222222222222222222222222
+0170 2222222222222222222222222222222222222222222222222222222
+0171 2222222222222222222222222222222222222222222222222222222
+0172 2222222222222222222222222222222222222222222222222222222
+0173 2222222222222222222222222222222222222222222222222222222
+0174 2222222222222222222222222222222222222222222222222222222
+0175 2222222222222222222222222222222222222222222222222222222
+0176 2222222222222222222222222222222222222222222222222222222
+0177 2222222222222222222222222222222222222222222222222222222
+0178 2222222222222222222222222222222222222222222222222222222
+0179 2222222222222222222222222222222222222222222222222222222
+0180 2222222222222222222222222222222222222222222222222222222
+0181 2222222222222222222222222222222222222222222222222222222
+0182 2222222222222222222222222222222222222222222222222222222
+0183 2222222222222222222222222222222222222222222222222222222
+0184 2222222222222222222222222222222222222222222222222222222
+0185 2222222222222222222222222222222222222222222222222222222
+0186 2222222222222222222222222222222222222222222222222222222
+0187 2222222222222222222222222222222222222222222222222222222
+0188 2222222222222222222222222222222222222222222222222222222
+0189 2222222222222222222222222222222222222222222222222222222
+0190 2222222222222222222222222222222222222222222222222222222
+0191 2222222222222222222222222222222222222222222222222222222
+0192 2222222222222222222222222222222222222222222222222222222
+0193 2222222222222222222222222222222222222222222222222222222
+0194 2222222222222222222222222222222222222222222222222222222
+0195 2222222222222222222222222222222222222222222222222222222
+0196 2222222222222222222222222222222222222222222222222222222
+0197 2222222222222222222222222222222222222222222222222222222
+0198 2222222222222222222222222222222222222222222222222222222
+0199 2222222222222222222222222222222222222222222222222222222
+0200 2222222222222222222222222222222222222222222222222222222
+0201 2222222222222222222222222222222222222222222222222222222
+0202 2222222222222222222222222222222222222222222222222222222
+0203 2222222222222222222222222222222222222222222222222222222
+0204 2222222222222222222222222222222222222222222222222222222
+0205 2222222222222222222222222222222222222222222222222222222
+0206 2222222222222222222222222222222222222222222222222222222
+0207 2222222222222222222222222222222222222222222222222222222
+0208 2222222222222222222222222222222222222222222222222222222
+0209 2222222222222222222222222222222222222222222222222222222
+0210 2222222222222222222222222222222222222222222222222222222
+0211 2222222222222222222222222222222222222222222222222222222
+0212 2222222222222222222222222222222222222222222222222222222
+0213 2222222222222222222222222222222222222222222222222222222
+0214 2222222222222222222222222222222222222222222222222222222
+0215 2222222222222222222222222222222222222222222222222222222
+0216 2222222222222222222222222222222222222222222222222222222
+0217 2222222222222222222222222222222222222222222222222222222
+0218 2222222222222222222222222222222222222222222222222222222
+0219 2222222222222222222222222222222222222222222222222222222
+0220 2222222222222222222222222222222222222222222222222222222
+0221 2222222222222222222222222222222222222222222222222222222
+0222 2222222222222222222222222222222222222222222222222222222
+0223 2222222222222222222222222222222222222222222222222222222
+0224 2222222222222222222222222222222222222222222222222222222
+0225 2222222222222222222222222222222222222222222222222222222
+0226 2222222222222222222222222222222222222222222222222222222
+0227 2222222222222222222222222222222222222222222222222222222
+0228 2222222222222222222222222222222222222222222222222222222
+0229 2222222222222222222222222222222222222222222222222222222
+0230 2222222222222222222222222222222222222222222222222222222
+0231 2222222222222222222222222222222222222222222222222222222
+0232 2222222222222222222222222222222222222222222222222222222
+0233 2222222222222222222222222222222222222222222222222222222
+0234 2222222222222222222222222222222222222222222222222222222
+0235 2222222222222222222222222222222222222222222222222222222
+0236 2222222222222222222222222222222222222222222222222222222
+0237 2222222222222222222222222222222222222222222222222222222
+0238 2222222222222222222222222222222222222222222222222222222
+0239 2222222222222222222222222222222222222222222222222222222
+0240 2222222222222222222222222222222222222222222222222222222
+0241 2222222222222222222222222222222222222222222222222222222
+0242 2222222222222222222222222222222222222222222222222222222
+0243 2222222222222222222222222222222222222222222222222222222
+0244 2222222222222222222222222222222222222222222222222222222
+0245 2222222222222222222222222222222222222222222222222222222
+0246 2222222222222222222222222222222222222222222222222222222
+0247 2222222222222222222222222222222222222222222222222222222
+0248 2222222222222222222222222222222222222222222222222222222
+0249 2222222222222222222222222222222222222222222222222222222
+0250 2222222222222222222222222222222222222222222222222222222
+0251 2222222222222222222222222222222222222222222222222222222
+0252 2222222222222222222222222222222222222222222222222222222
+0253 2222222222222222222222222222222222222222222222222222222
+0254 2222222222222222222222222222222222222222222222222222222
+0255 2222222222222222222222222222222222222222222222222222222
+0256 2222222222222222222222222222222222222222222222222222222
+0257 2222222222222222222222222222222222222222222222222222222
+0258 2222222222222222222222222222222222222222222222222222222
+0259 2222222222222222222222222222222222222222222222222222222
+0260 2222222222222222222222222222222222222222222222222222222
+0261 2222222222222222222222222222222222222222222222222222222
+0262 2222222222222222222222222222222222222222222222222222222
+0263 2222222222222222222222222222222222222222222222222222222
+0264 2222222222222222222222222222222222222222222222222222222
+0265 2222222222222222222222222222222222222222222222222222222
+0266 2222222222222222222222222222222222222222222222222222222
+0267 2222222222222222222222222222222222222222222222222222222
+0268 2222222222222222222222222222222222222222222222222222222
+0269 2222222222222222222222222222222222222222222222222222222
+0270 2222222222222222222222222222222222222222222222222222222
+0271 2222222222222222222222222222222222222222222222222222222
+0272 2222222222222222222222222222222222222222222222222222222
+0273 2222222222222222222222222222222222222222222222222222222
+0274 2222222222222222222222222222222222222222222222222222222
+0275 2222222222222222222222222222222222222222222222222222222
+0276 2222222222222222222222222222222222222222222222222222222
+0277 2222222222222222222222222222222222222222222222222222222
+0278 2222222222222222222222222222222222222222222222222222222
+0279 2222222222222222222222222222222222222222222222222222222
+0280 2222222222222222222222222222222222222222222222222222222
+0281 2222222222222222222222222222222222222222222222222222222
+0282 2222222222222222222222222222222222222222222222222222222
+0283 2222222222222222222222222222222222222222222222222222222
+0284 2222222222222222222222222222222222222222222222222222222
+0285 2222222222222222222222222222222222222222222222222222222
+0286 2222222222222222222222222222222222222222222222222222222
+0287 2222222222222222222222222222222222222222222222222222222
+0288 2222222222222222222222222222222222222222222222222222222
+0289 2222222222222222222222222222222222222222222222222222222
+0290 2222222222222222222222222222222222222222222222222222222
+0291 2222222222222222222222222222222222222222222222222222222
+0292 2222222222222222222222222222222222222222222222222222222
+0293 2222222222222222222222222222222222222222222222222222222
+0294 2222222222222222222222222222222222222222222222222222222
+0295 2222222222222222222222222222222222222222222222222222222
+0296 2222222222222222222222222222222222222222222222222222222
+0297 2222222222222222222222222222222222222222222222222222222
+0298 2222222222222222222222222222222222222222222222222222222
+0299 2222222222222222222222222222222222222222222222222222222
+0300 2222222222222222222222222222222222222222222222222222222
+0301 2222222222222222222222222222222222222222222222222222222
+0302 2222222222222222222222222222222222222222222222222222222
+0303 2222222222222222222222222222222222222222222222222222222
+0304 2222222222222222222222222222222222222222222222222222222
+0305 2222222222222222222222222222222222222222222222222222222
+0306 2222222222222222222222222222222222222222222222222222222
+0307 2222222222222222222222222222222222222222222222222222222
+0308 2222222222222222222222222222222222222222222222222222222
+0309 2222222222222222222222222222222222222222222222222222222
+0310 2222222222222222222222222222222222222222222222222222222
+0311 2222222222222222222222222222222222222222222222222222222
+0312 2222222222222222222222222222222222222222222222222222222
+0313 2222222222222222222222222222222222222222222222222222222
+0314 2222222222222222222222222222222222222222222222222222222
+0315 2222222222222222222222222222222222222222222222222222222
+0316 2222222222222222222222222222222222222222222222222222222
+0317 2222222222222222222222222222222222222222222222222222222
+0318 2222222222222222222222222222222222222222222222222222222
+0319 2222222222222222222222222222222222222222222222222222222
+0320 2222222222222222222222222222222222222222222222222222222
+0321 2222222222222222222222222222222222222222222222222222222
+0322 2222222222222222222222222222222222222222222222222222222
+0323 2222222222222222222222222222222222222222222222222222222
+0324 2222222222222222222222222222222222222222222222222222222
+0325 2222222222222222222222222222222222222222222222222222222
+0326 2222222222222222222222222222222222222222222222222222222
+0327 2222222222222222222222222222222222222222222222222222222
+0328 2222222222222222222222222222222222222222222222222222222
+0329 2222222222222222222222222222222222222222222222222222222
+0330 2222222222222222222222222222222222222222222222222222222
+0331 2222222222222222222222222222222222222222222222222222222
+0332 2222222222222222222222222222222222222222222222222222222
+0333 2222222222222222222222222222222222222222222222222222222
+0334 2222222222222222222222222222222222222222222222222222222
+0335 2222222222222222222222222222222222222222222222222222222
+0336 2222222222222222222222222222222222222222222222222222222
+0337 2222222222222222222222222222222222222222222222222222222
+0338 2222222222222222222222222222222222222222222222222222222
+0339 2222222222222222222222222222222222222222222222222222222
+0340 2222222222222222222222222222222222222222222222222222222
+0341 2222222222222222222222222222222222222222222222222222222
+0342 2222222222222222222222222222222222222222222222222222222
+0343 2222222222222222222222222222222222222222222222222222222
+0344 2222222222222222222222222222222222222222222222222222222
+0345 2222222222222222222222222222222222222222222222222222222
+0346 2222222222222222222222222222222222222222222222222222222
+0347 2222222222222222222222222222222222222222222222222222222
+0348 2222222222222222222222222222222222222222222222222222222
+0349 2222222222222222222222222222222222222222222222222222222
+0350 2222222222222222222222222222222222222222222222222222222
+0351 2222222222222222222222222222222222222222222222222222222
+0352 2222222222222222222222222222222222222222222222222222222
+0353 2222222222222222222222222222222222222222222222222222222
+0354 2222222222222222222222222222222222222222222222222222222
+0355 2222222222222222222222222222222222222222222222222222222
+0356 2222222222222222222222222222222222222222222222222222222
+0357 2222222222222222222222222222222222222222222222222222222
+0358 2222222222222222222222222222222222222222222222222222222
+0359 2222222222222222222222222222222222222222222222222222222
+0360 2222222222222222222222222222222222222222222222222222222
+0361 2222222222222222222222222222222222222222222222222222222
+0362 2222222222222222222222222222222222222222222222222222222
+0363 2222222222222222222222222222222222222222222222222222222
+0364 2222222222222222222222222222222222222222222222222222222
+0365 2222222222222222222222222222222222222222222222222222222
+0366 2222222222222222222222222222222222222222222222222222222
+0367 2222222222222222222222222222222222222222222222222222222
+0368 2222222222222222222222222222222222222222222222222222222
+0369 2222222222222222222222222222222222222222222222222222222
+0370 2222222222222222222222222222222222222222222222222222222
+0371 2222222222222222222222222222222222222222222222222222222
+0372 2222222222222222222222222222222222222222222222222222222
+0373 2222222222222222222222222222222222222222222222222222222
+0374 2222222222222222222222222222222222222222222222222222222
+0375 2222222222222222222222222222222222222222222222222222222
+0376 2222222222222222222222222222222222222222222222222222222
+0377 2222222222222222222222222222222222222222222222222222222
+0378 2222222222222222222222222222222222222222222222222222222
+0379 2222222222222222222222222222222222222222222222222222222
+0380 2222222222222222222222222222222222222222222222222222222
+0381 2222222222222222222222222222222222222222222222222222222
+0382 2222222222222222222222222222222222222222222222222222222
+0383 2222222222222222222222222222222222222222222222222222222
+0384 2222222222222222222222222222222222222222222222222222222
+0385 2222222222222222222222222222222222222222222222222222222
+0386 2222222222222222222222222222222222222222222222222222222
+0387 2222222222222222222222222222222222222222222222222222222
+0388 2222222222222222222222222222222222222222222222222222222
+0389 2222222222222222222222222222222222222222222222222222222
+0390 2222222222222222222222222222222222222222222222222222222
+0391 2222222222222222222222222222222222222222222222222222222
+0392 2222222222222222222222222222222222222222222222222222222
+0393 2222222222222222222222222222222222222222222222222222222
+0394 2222222222222222222222222222222222222222222222222222222
+0395 2222222222222222222222222222222222222222222222222222222
+0396 2222222222222222222222222222222222222222222222222222222
+0397 2222222222222222222222222222222222222222222222222222222
+0398 2222222222222222222222222222222222222222222222222222222
+0399 2222222222222222222222222222222222222222222222222222222
+0400 2222222222222222222222222222222222222222222222222222222
+0401 2222222222222222222222222222222222222222222222222222222
+0402 2222222222222222222222222222222222222222222222222222222
+0403 2222222222222222222222222222222222222222222222222222222
+0404 2222222222222222222222222222222222222222222222222222222
+0405 2222222222222222222222222222222222222222222222222222222
+0406 2222222222222222222222222222222222222222222222222222222
+0407 2222222222222222222222222222222222222222222222222222222
+0408 2222222222222222222222222222222222222222222222222222222
+0409 2222222222222222222222222222222222222222222222222222222
+0410 2222222222222222222222222222222222222222222222222222222
+0411 2222222222222222222222222222222222222222222222222222222
+0412 2222222222222222222222222222222222222222222222222222222
+0413 2222222222222222222222222222222222222222222222222222222
+0414 2222222222222222222222222222222222222222222222222222222
+0415 2222222222222222222222222222222222222222222222222222222
+0416 2222222222222222222222222222222222222222222222222222222
+0417 2222222222222222222222222222222222222222222222222222222
+0418 2222222222222222222222222222222222222222222222222222222
+0419 2222222222222222222222222222222222222222222222222222222
+0420 2222222222222222222222222222222222222222222222222222222
+0421 2222222222222222222222222222222222222222222222222222222
+0422 2222222222222222222222222222222222222222222222222222222
+0423 2222222222222222222222222222222222222222222222222222222
+0424 2222222222222222222222222222222222222222222222222222222
+0425 2222222222222222222222222222222222222222222222222222222
+0426 2222222222222222222222222222222222222222222222222222222
+0427 2222222222222222222222222222222222222222222222222222222
+0428 2222222222222222222222222222222222222222222222222222222
+0429 2222222222222222222222222222222222222222222222222222222
+0430 2222222222222222222222222222222222222222222222222222222
+0431 2222222222222222222222222222222222222222222222222222222
+0432 2222222222222222222222222222222222222222222222222222222
+0433 2222222222222222222222222222222222222222222222222222222
+0434 2222222222222222222222222222222222222222222222222222222
+0435 2222222222222222222222222222222222222222222222222222222
+0436 2222222222222222222222222222222222222222222222222222222
+0437 2222222222222222222222222222222222222222222222222222222
+0438 2222222222222222222222222222222222222222222222222222222
+0439 2222222222222222222222222222222222222222222222222222222
+0440 2222222222222222222222222222222222222222222222222222222
+0441 2222222222222222222222222222222222222222222222222222222
+0442 2222222222222222222222222222222222222222222222222222222
+0443 2222222222222222222222222222222222222222222222222222222
+0444 2222222222222222222222222222222222222222222222222222222
+0445 2222222222222222222222222222222222222222222222222222222
+0446 2222222222222222222222222222222222222222222222222222222
+0447 2222222222222222222222222222222222222222222222222222222
+0448 2222222222222222222222222222222222222222222222222222222
+0449 2222222222222222222222222222222222222222222222222222222
+0450 2222222222222222222222222222222222222222222222222222222
+0451 2222222222222222222222222222222222222222222222222222222
+0452 2222222222222222222222222222222222222222222222222222222
+0453 2222222222222222222222222222222222222222222222222222222
+0454 2222222222222222222222222222222222222222222222222222222
+0455 2222222222222222222222222222222222222222222222222222222
+0456 2222222222222222222222222222222222222222222222222222222
+0457 2222222222222222222222222222222222222222222222222222222
+0458 2222222222222222222222222222222222222222222222222222222
+0459 2222222222222222222222222222222222222222222222222222222
+0460 2222222222222222222222222222222222222222222222222222222
+0461 2222222222222222222222222222222222222222222222222222222
+0462 2222222222222222222222222222222222222222222222222222222
+0463 2222222222222222222222222222222222222222222222222222222
+0464 2222222222222222222222222222222222222222222222222222222
+0465 2222222222222222222222222222222222222222222222222222222
+0466 2222222222222222222222222222222222222222222222222222222
+0467 2222222222222222222222222222222222222222222222222222222
+0468 2222222222222222222222222222222222222222222222222222222
+0469 2222222222222222222222222222222222222222222222222222222
+0470 2222222222222222222222222222222222222222222222222222222
+0471 2222222222222222222222222222222222222222222222222222222
+0472 2222222222222222222222222222222222222222222222222222222
+0473 2222222222222222222222222222222222222222222222222222222
+0474 2222222222222222222222222222222222222222222222222222222
+0475 2222222222222222222222222222222222222222222222222222222
+0476 2222222222222222222222222222222222222222222222222222222
+0477 2222222222222222222222222222222222222222222222222222222
+0478 2222222222222222222222222222222222222222222222222222222
+0479 2222222222222222222222222222222222222222222222222222222
+0480 2222222222222222222222222222222222222222222222222222222
+0481 2222222222222222222222222222222222222222222222222222222
+0482 2222222222222222222222222222222222222222222222222222222
+0483 2222222222222222222222222222222222222222222222222222222
+0484 2222222222222222222222222222222222222222222222222222222
+0485 2222222222222222222222222222222222222222222222222222222
+0486 2222222222222222222222222222222222222222222222222222222
+0487 2222222222222222222222222222222222222222222222222222222
+0488 2222222222222222222222222222222222222222222222222222222
+0489 2222222222222222222222222222222222222222222222222222222
+0490 2222222222222222222222222222222222222222222222222222222
+0491 2222222222222222222222222222222222222222222222222222222
+0492 2222222222222222222222222222222222222222222222222222222
+0493 2222222222222222222222222222222222222222222222222222222
+0494 2222222222222222222222222222222222222222222222222222222
+0495 2222222222222222222222222222222222222222222222222222222
+0496 2222222222222222222222222222222222222222222222222222222
+0497 2222222222222222222222222222222222222222222222222222222
+0498 2222222222222222222222222222222222222222222222222222222
+0499 2222222222222222222222222222222222222222222222222222222
+0500 2222222222222222222222222222222222222222222222222222222
+0501 2222222222222222222222222222222222222222222222222222222
+0502 2222222222222222222222222222222222222222222222222222222
+0503 2222222222222222222222222222222222222222222222222222222
+0504 2222222222222222222222222222222222222222222222222222222
+0505 2222222222222222222222222222222222222222222222222222222
+0506 2222222222222222222222222222222222222222222222222222222
+0507 2222222222222222222222222222222222222222222222222222222
+0508 2222222222222222222222222222222222222222222222222222222
+0509 2222222222222222222222222222222222222222222222222222222
+0510 2222222222222222222222222222222222222222222222222222222
+0511 2222222222222222222222222222222222222222222222222222222
+0512 2222222222222222222222222222222222222222222222222222222
+0513 2222222222222222222222222222222222222222222222222222222
+0514 2222222222222222222222222222222222222222222222222222222
+0515 2222222222222222222222222222222222222222222222222222222
+0516 2222222222222222222222222222222222222222222222222222222
+0517 2222222222222222222222222222222222222222222222222222222
+0518 2222222222222222222222222222222222222222222222222222222
+0519 2222222222222222222222222222222222222222222222222222222
+0520 2222222222222222222222222222222222222222222222222222222
+0521 2222222222222222222222222222222222222222222222222222222
+0522 2222222222222222222222222222222222222222222222222222222
+0523 2222222222222222222222222222222222222222222222222222222
+0524 2222222222222222222222222222222222222222222222222222222
+0525 2222222222222222222222222222222222222222222222222222222
+0526 2222222222222222222222222222222222222222222222222222222
+0527 2222222222222222222222222222222222222222222222222222222
+0528 2222222222222222222222222222222222222222222222222222222
+0529 2222222222222222222222222222222222222222222222222222222
+0530 2222222222222222222222222222222222222222222222222222222
+0531 2222222222222222222222222222222222222222222222222222222
+0532 2222222222222222222222222222222222222222222222222222222
+0533 2222222222222222222222222222222222222222222222222222222
+0534 2222222222222222222222222222222222222222222222222222222
+0535 2222222222222222222222222222222222222222222222222222222
+0536 2222222222222222222222222222222222222222222222222222222
+0537 2222222222222222222222222222222222222222222222222222222
+0538 2222222222222222222222222222222222222222222222222222222
+0539 2222222222222222222222222222222222222222222222222222222
+0540 2222222222222222222222222222222222222222222222222222222
+0541 2222222222222222222222222222222222222222222222222222222
+0542 2222222222222222222222222222222222222222222222222222222
+0543 2222222222222222222222222222222222222222222222222222222
+0544 2222222222222222222222222222222222222222222222222222222
+0545 2222222222222222222222222222222222222222222222222222222
+0546 2222222222222222222222222222222222222222222222222222222
+0547 2222222222222222222222222222222222222222222222222222222
+0548 2222222222222222222222222222222222222222222222222222222
+0549 2222222222222222222222222222222222222222222222222222222
+0550 2222222222222222222222222222222222222222222222222222222
+0551 2222222222222222222222222222222222222222222222222222222
+0552 2222222222222222222222222222222222222222222222222222222
+0553 2222222222222222222222222222222222222222222222222222222
+0554 2222222222222222222222222222222222222222222222222222222
+0555 2222222222222222222222222222222222222222222222222222222
+0556 2222222222222222222222222222222222222222222222222222222
+0557 2222222222222222222222222222222222222222222222222222222
+0558 2222222222222222222222222222222222222222222222222222222
+0559 2222222222222222222222222222222222222222222222222222222
+0560 2222222222222222222222222222222222222222222222222222222
+0561 2222222222222222222222222222222222222222222222222222222
+0562 2222222222222222222222222222222222222222222222222222222
+0563 2222222222222222222222222222222222222222222222222222222
+0564 2222222222222222222222222222222222222222222222222222222
+0565 2222222222222222222222222222222222222222222222222222222
+0566 2222222222222222222222222222222222222222222222222222222
+0567 2222222222222222222222222222222222222222222222222222222
+0568 2222222222222222222222222222222222222222222222222222222
+0569 2222222222222222222222222222222222222222222222222222222
+0570 2222222222222222222222222222222222222222222222222222222
+0571 2222222222222222222222222222222222222222222222222222222
+0572 2222222222222222222222222222222222222222222222222222222
+0573 2222222222222222222222222222222222222222222222222222222
+0574 2222222222222222222222222222222222222222222222222222222
+0575 2222222222222222222222222222222222222222222222222222222
+0576 2222222222222222222222222222222222222222222222222222222
+0577 2222222222222222222222222222222222222222222222222222222
+0578 2222222222222222222222222222222222222222222222222222222
+0579 2222222222222222222222222222222222222222222222222222222
+0580 2222222222222222222222222222222222222222222222222222222
+0581 2222222222222222222222222222222222222222222222222222222
+0582 2222222222222222222222222222222222222222222222222222222
+0583 2222222222222222222222222222222222222222222222222222222
+0584 2222222222222222222222222222222222222222222222222222222
+0585 2222222222222222222222222222222222222222222222222222222
+0586 2222222222222222222222222222222222222222222222222222222
+0587 2222222222222222222222222222222222222222222222222222222
+0588 2222222222222222222222222222222222222222222222222222222
+0589 2222222222222222222222222222222222222222222222222222222
+0590 2222222222222222222222222222222222222222222222222222222
+0591 2222222222222222222222222222222222222222222222222222222
+0592 2222222222222222222222222222222222222222222222222222222
+0593 2222222222222222222222222222222222222222222222222222222
+0594 2222222222222222222222222222222222222222222222222222222
+0595 2222222222222222222222222222222222222222222222222222222
+0596 2222222222222222222222222222222222222222222222222222222
+0597 2222222222222222222222222222222222222222222222222222222
+0598 2222222222222222222222222222222222222222222222222222222
+0599 2222222222222222222222222222222222222222222222222222222
+0600 2222222222222222222222222222222222222222222222222222222
+0601 2222222222222222222222222222222222222222222222222222222
+0602 2222222222222222222222222222222222222222222222222222222
+0603 2222222222222222222222222222222222222222222222222222222
+0604 2222222222222222222222222222222222222222222222222222222
+0605 2222222222222222222222222222222222222222222222222222222
+0606 2222222222222222222222222222222222222222222222222222222
+0607 2222222222222222222222222222222222222222222222222222222
+0608 2222222222222222222222222222222222222222222222222222222
+0609 2222222222222222222222222222222222222222222222222222222
+0610 2222222222222222222222222222222222222222222222222222222
+0611 2222222222222222222222222222222222222222222222222222222
+0612 2222222222222222222222222222222222222222222222222222222
+0613 2222222222222222222222222222222222222222222222222222222
+0614 2222222222222222222222222222222222222222222222222222222
+0615 2222222222222222222222222222222222222222222222222222222
+0616 2222222222222222222222222222222222222222222222222222222
+0617 2222222222222222222222222222222222222222222222222222222
+0618 2222222222222222222222222222222222222222222222222222222
+0619 2222222222222222222222222222222222222222222222222222222
+0620 2222222222222222222222222222222222222222222222222222222
+0621 2222222222222222222222222222222222222222222222222222222
+0622 2222222222222222222222222222222222222222222222222222222
+0623 2222222222222222222222222222222222222222222222222222222
+0624 2222222222222222222222222222222222222222222222222222222
+0625 2222222222222222222222222222222222222222222222222222222
+0626 2222222222222222222222222222222222222222222222222222222
+0627 2222222222222222222222222222222222222222222222222222222
+0628 2222222222222222222222222222222222222222222222222222222
+0629 2222222222222222222222222222222222222222222222222222222
+0630 2222222222222222222222222222222222222222222222222222222
+0631 2222222222222222222222222222222222222222222222222222222
+0632 2222222222222222222222222222222222222222222222222222222
+0633 2222222222222222222222222222222222222222222222222222222
+0634 2222222222222222222222222222222222222222222222222222222
+0635 2222222222222222222222222222222222222222222222222222222
+0636 2222222222222222222222222222222222222222222222222222222
+0637 2222222222222222222222222222222222222222222222222222222
+0638 2222222222222222222222222222222222222222222222222222222
+0639 2222222222222222222222222222222222222222222222222222222
+0640 2222222222222222222222222222222222222222222222222222222
+0641 2222222222222222222222222222222222222222222222222222222
+0642 2222222222222222222222222222222222222222222222222222222
+0643 2222222222222222222222222222222222222222222222222222222
+0644 2222222222222222222222222222222222222222222222222222222
+0645 2222222222222222222222222222222222222222222222222222222
+0646 2222222222222222222222222222222222222222222222222222222
+0647 2222222222222222222222222222222222222222222222222222222
+0648 2222222222222222222222222222222222222222222222222222222
+0649 2222222222222222222222222222222222222222222222222222222
+0650 2222222222222222222222222222222222222222222222222222222
+0651 2222222222222222222222222222222222222222222222222222222
+0652 2222222222222222222222222222222222222222222222222222222
+0653 2222222222222222222222222222222222222222222222222222222
+0654 2222222222222222222222222222222222222222222222222222222
+0655 2222222222222222222222222222222222222222222222222222222
+0656 2222222222222222222222222222222222222222222222222222222
+0657 2222222222222222222222222222222222222222222222222222222
+0658 2222222222222222222222222222222222222222222222222222222
+0659 2222222222222222222222222222222222222222222222222222222
+0660 2222222222222222222222222222222222222222222222222222222
+0661 2222222222222222222222222222222222222222222222222222222
+0662 2222222222222222222222222222222222222222222222222222222
+0663 2222222222222222222222222222222222222222222222222222222
+0664 2222222222222222222222222222222222222222222222222222222
+0665 2222222222222222222222222222222222222222222222222222222
+0666 2222222222222222222222222222222222222222222222222222222
+0667 2222222222222222222222222222222222222222222222222222222
+0668 2222222222222222222222222222222222222222222222222222222
+0669 2222222222222222222222222222222222222222222222222222222
+0670 2222222222222222222222222222222222222222222222222222222
+0671 2222222222222222222222222222222222222222222222222222222
+0672 2222222222222222222222222222222222222222222222222222222
+0673 2222222222222222222222222222222222222222222222222222222
+0674 2222222222222222222222222222222222222222222222222222222
+0675 2222222222222222222222222222222222222222222222222222222
+0676 2222222222222222222222222222222222222222222222222222222
+0677 2222222222222222222222222222222222222222222222222222222
+0678 2222222222222222222222222222222222222222222222222222222
+0679 2222222222222222222222222222222222222222222222222222222
+0680 2222222222222222222222222222222222222222222222222222222
+0681 2222222222222222222222222222222222222222222222222222222
+0682 2222222222222222222222222222222222222222222222222222222
+0683 2222222222222222222222222222222222222222222222222222222
+0684 2222222222222222222222222222222222222222222222222222222
+0685 2222222222222222222222222222222222222222222222222222222
+0686 2222222222222222222222222222222222222222222222222222222
+0687 2222222222222222222222222222222222222222222222222222222
+0688 2222222222222222222222222222222222222222222222222222222
+0689 2222222222222222222222222222222222222222222222222222222
+0690 2222222222222222222222222222222222222222222222222222222
+0691 2222222222222222222222222222222222222222222222222222222
+0692 2222222222222222222222222222222222222222222222222222222
+0693 2222222222222222222222222222222222222222222222222222222
+0694 2222222222222222222222222222222222222222222222222222222
+0695 2222222222222222222222222222222222222222222222222222222
+0696 2222222222222222222222222222222222222222222222222222222
+0697 2222222222222222222222222222222222222222222222222222222
+0698 2222222222222222222222222222222222222222222222222222222
+0699 2222222222222222222222222222222222222222222222222222222
+0700 2222222222222222222222222222222222222222222222222222222
+0701 2222222222222222222222222222222222222222222222222222222
+0702 2222222222222222222222222222222222222222222222222222222
+0703 2222222222222222222222222222222222222222222222222222222
+0704 2222222222222222222222222222222222222222222222222222222
+0705 2222222222222222222222222222222222222222222222222222222
+0706 2222222222222222222222222222222222222222222222222222222
+0707 2222222222222222222222222222222222222222222222222222222
+0708 2222222222222222222222222222222222222222222222222222222
+0709 2222222222222222222222222222222222222222222222222222222
+0710 2222222222222222222222222222222222222222222222222222222
+0711 2222222222222222222222222222222222222222222222222222222
+0712 2222222222222222222222222222222222222222222222222222222
+0713 2222222222222222222222222222222222222222222222222222222
+0714 2222222222222222222222222222222222222222222222222222222
+0715 2222222222222222222222222222222222222222222222222222222
+0716 2222222222222222222222222222222222222222222222222222222
+0717 2222222222222222222222222222222222222222222222222222222
+0718 2222222222222222222222222222222222222222222222222222222
+0719 2222222222222222222222222222222222222222222222222222222
+0720 2222222222222222222222222222222222222222222222222222222
+0721 2222222222222222222222222222222222222222222222222222222
+0722 2222222222222222222222222222222222222222222222222222222
+0723 2222222222222222222222222222222222222222222222222222222
+0724 2222222222222222222222222222222222222222222222222222222
+0725 2222222222222222222222222222222222222222222222222222222
+0726 2222222222222222222222222222222222222222222222222222222
+0727 2222222222222222222222222222222222222222222222222222222
+0728 2222222222222222222222222222222222222222222222222222222
+0729 2222222222222222222222222222222222222222222222222222222
+0730 2222222222222222222222222222222222222222222222222222222
+0731 2222222222222222222222222222222222222222222222222222222
+0732 2222222222222222222222222222222222222222222222222222222
+0733 2222222222222222222222222222222222222222222222222222222
+0734 2222222222222222222222222222222222222222222222222222222
+0735 2222222222222222222222222222222222222222222222222222222
+0736 2222222222222222222222222222222222222222222222222222222
+0737 2222222222222222222222222222222222222222222222222222222
+0738 2222222222222222222222222222222222222222222222222222222
+0739 2222222222222222222222222222222222222222222222222222222
+0740 2222222222222222222222222222222222222222222222222222222
+0741 2222222222222222222222222222222222222222222222222222222
+0742 2222222222222222222222222222222222222222222222222222222
+0743 2222222222222222222222222222222222222222222222222222222
+0744 2222222222222222222222222222222222222222222222222222222
+0745 2222222222222222222222222222222222222222222222222222222
+0746 2222222222222222222222222222222222222222222222222222222
+0747 2222222222222222222222222222222222222222222222222222222
+0748 2222222222222222222222222222222222222222222222222222222
+0749 2222222222222222222222222222222222222222222222222222222
+0750 2222222222222222222222222222222222222222222222222222222
+0751 2222222222222222222222222222222222222222222222222222222
+0752 2222222222222222222222222222222222222222222222222222222
+0753 2222222222222222222222222222222222222222222222222222222
+0754 2222222222222222222222222222222222222222222222222222222
+0755 2222222222222222222222222222222222222222222222222222222
+0756 2222222222222222222222222222222222222222222222222222222
+0757 2222222222222222222222222222222222222222222222222222222
+0758 2222222222222222222222222222222222222222222222222222222
+0759 2222222222222222222222222222222222222222222222222222222
+0760 2222222222222222222222222222222222222222222222222222222
+0761 2222222222222222222222222222222222222222222222222222222
+0762 2222222222222222222222222222222222222222222222222222222
+0763 2222222222222222222222222222222222222222222222222222222
+0764 2222222222222222222222222222222222222222222222222222222
+0765 2222222222222222222222222222222222222222222222222222222
+0766 2222222222222222222222222222222222222222222222222222222
+0767 2222222222222222222222222222222222222222222222222222222
+0768 2222222222222222222222222222222222222222222222222222222
+0769 2222222222222222222222222222222222222222222222222222222
+0770 2222222222222222222222222222222222222222222222222222222
+0771 2222222222222222222222222222222222222222222222222222222
+0772 2222222222222222222222222222222222222222222222222222222
+0773 2222222222222222222222222222222222222222222222222222222
+0774 2222222222222222222222222222222222222222222222222222222
+0775 2222222222222222222222222222222222222222222222222222222
+0776 2222222222222222222222222222222222222222222222222222222
+0777 2222222222222222222222222222222222222222222222222222222
+0778 2222222222222222222222222222222222222222222222222222222
+0779 2222222222222222222222222222222222222222222222222222222
+0780 2222222222222222222222222222222222222222222222222222222
+0781 2222222222222222222222222222222222222222222222222222222
+0782 2222222222222222222222222222222222222222222222222222222
+0783 2222222222222222222222222222222222222222222222222222222
+0784 2222222222222222222222222222222222222222222222222222222
+0785 2222222222222222222222222222222222222222222222222222222
+0786 2222222222222222222222222222222222222222222222222222222
+0787 2222222222222222222222222222222222222222222222222222222
+0788 2222222222222222222222222222222222222222222222222222222
+0789 2222222222222222222222222222222222222222222222222222222
+0790 2222222222222222222222222222222222222222222222222222222
+0791 2222222222222222222222222222222222222222222222222222222
+0792 2222222222222222222222222222222222222222222222222222222
+0793 2222222222222222222222222222222222222222222222222222222
+0794 2222222222222222222222222222222222222222222222222222222
+0795 2222222222222222222222222222222222222222222222222222222
+0796 2222222222222222222222222222222222222222222222222222222
+0797 2222222222222222222222222222222222222222222222222222222
+0798 2222222222222222222222222222222222222222222222222222222
+0799 2222222222222222222222222222222222222222222222222222222
+0800 2222222222222222222222222222222222222222222222222222222
+0801 2222222222222222222222222222222222222222222222222222222
+0802 2222222222222222222222222222222222222222222222222222222
+0803 2222222222222222222222222222222222222222222222222222222
+0804 2222222222222222222222222222222222222222222222222222222
+0805 2222222222222222222222222222222222222222222222222222222
+0806 2222222222222222222222222222222222222222222222222222222
+0807 2222222222222222222222222222222222222222222222222222222
+0808 2222222222222222222222222222222222222222222222222222222
+0809 2222222222222222222222222222222222222222222222222222222
+0810 2222222222222222222222222222222222222222222222222222222
+0811 2222222222222222222222222222222222222222222222222222222
+0812 2222222222222222222222222222222222222222222222222222222
+0813 2222222222222222222222222222222222222222222222222222222
+0814 2222222222222222222222222222222222222222222222222222222
+0815 2222222222222222222222222222222222222222222222222222222
+0816 2222222222222222222222222222222222222222222222222222222
+0817 2222222222222222222222222222222222222222222222222222222
+0818 2222222222222222222222222222222222222222222222222222222
+0819 2222222222222222222222222222222222222222222222222222222
+0820 2222222222222222222222222222222222222222222222222222222
+0821 2222222222222222222222222222222222222222222222222222222
+0822 2222222222222222222222222222222222222222222222222222222
+0823 2222222222222222222222222222222222222222222222222222222
+0824 2222222222222222222222222222222222222222222222222222222
+0825 2222222222222222222222222222222222222222222222222222222
+0826 2222222222222222222222222222222222222222222222222222222
+0827 2222222222222222222222222222222222222222222222222222222
+0828 2222222222222222222222222222222222222222222222222222222
+0829 2222222222222222222222222222222222222222222222222222222
+0830 2222222222222222222222222222222222222222222222222222222
+0831 2222222222222222222222222222222222222222222222222222222
+0832 2222222222222222222222222222222222222222222222222222222
+0833 2222222222222222222222222222222222222222222222222222222
+0834 2222222222222222222222222222222222222222222222222222222
+0835 2222222222222222222222222222222222222222222222222222222
+0836 2222222222222222222222222222222222222222222222222222222
+0837 2222222222222222222222222222222222222222222222222222222
+0838 2222222222222222222222222222222222222222222222222222222
+0839 2222222222222222222222222222222222222222222222222222222
+0840 2222222222222222222222222222222222222222222222222222222
+0841 2222222222222222222222222222222222222222222222222222222
+0842 2222222222222222222222222222222222222222222222222222222
+0843 2222222222222222222222222222222222222222222222222222222
+0844 2222222222222222222222222222222222222222222222222222222
+0845 2222222222222222222222222222222222222222222222222222222
+0846 2222222222222222222222222222222222222222222222222222222
+0847 2222222222222222222222222222222222222222222222222222222
+0848 2222222222222222222222222222222222222222222222222222222
+0849 2222222222222222222222222222222222222222222222222222222
+0850 2222222222222222222222222222222222222222222222222222222
+0851 2222222222222222222222222222222222222222222222222222222
+0852 2222222222222222222222222222222222222222222222222222222
+0853 2222222222222222222222222222222222222222222222222222222
+0854 2222222222222222222222222222222222222222222222222222222
+0855 2222222222222222222222222222222222222222222222222222222
+0856 2222222222222222222222222222222222222222222222222222222
+0857 2222222222222222222222222222222222222222222222222222222
+0858 2222222222222222222222222222222222222222222222222222222
+0859 2222222222222222222222222222222222222222222222222222222
+0860 2222222222222222222222222222222222222222222222222222222
+0861 2222222222222222222222222222222222222222222222222222222
+0862 2222222222222222222222222222222222222222222222222222222
+0863 2222222222222222222222222222222222222222222222222222222
+0864 2222222222222222222222222222222222222222222222222222222
+0865 2222222222222222222222222222222222222222222222222222222
+0866 2222222222222222222222222222222222222222222222222222222
+0867 2222222222222222222222222222222222222222222222222222222
+0868 2222222222222222222222222222222222222222222222222222222
+0869 2222222222222222222222222222222222222222222222222222222
+0870 2222222222222222222222222222222222222222222222222222222
+0871 2222222222222222222222222222222222222222222222222222222
+0872 2222222222222222222222222222222222222222222222222222222
+0873 2222222222222222222222222222222222222222222222222222222
+0874 2222222222222222222222222222222222222222222222222222222
+0875 2222222222222222222222222222222222222222222222222222222
+0876 2222222222222222222222222222222222222222222222222222222
+0877 2222222222222222222222222222222222222222222222222222222
+0878 2222222222222222222222222222222222222222222222222222222
+0879 2222222222222222222222222222222222222222222222222222222
+0880 2222222222222222222222222222222222222222222222222222222
+0881 2222222222222222222222222222222222222222222222222222222
+0882 2222222222222222222222222222222222222222222222222222222
+0883 2222222222222222222222222222222222222222222222222222222
+0884 2222222222222222222222222222222222222222222222222222222
+0885 2222222222222222222222222222222222222222222222222222222
+0886 2222222222222222222222222222222222222222222222222222222
+0887 2222222222222222222222222222222222222222222222222222222
+0888 2222222222222222222222222222222222222222222222222222222
+0889 2222222222222222222222222222222222222222222222222222222
+0890 2222222222222222222222222222222222222222222222222222222
+0891 2222222222222222222222222222222222222222222222222222222
+0892 2222222222222222222222222222222222222222222222222222222
+0893 2222222222222222222222222222222222222222222222222222222
+0894 2222222222222222222222222222222222222222222222222222222
+0895 2222222222222222222222222222222222222222222222222222222
+0896 2222222222222222222222222222222222222222222222222222222
+0897 2222222222222222222222222222222222222222222222222222222
+0898 2222222222222222222222222222222222222222222222222222222
+0899 2222222222222222222222222222222222222222222222222222222
+0900 2222222222222222222222222222222222222222222222222222222
+0901 2222222222222222222222222222222222222222222222222222222
+0902 2222222222222222222222222222222222222222222222222222222
+0903 2222222222222222222222222222222222222222222222222222222
+0904 2222222222222222222222222222222222222222222222222222222
+0905 2222222222222222222222222222222222222222222222222222222
+0906 2222222222222222222222222222222222222222222222222222222
+0907 2222222222222222222222222222222222222222222222222222222
+0908 2222222222222222222222222222222222222222222222222222222
+0909 2222222222222222222222222222222222222222222222222222222
+0910 2222222222222222222222222222222222222222222222222222222
+0911 2222222222222222222222222222222222222222222222222222222
+0912 2222222222222222222222222222222222222222222222222222222
+0913 2222222222222222222222222222222222222222222222222222222
+0914 2222222222222222222222222222222222222222222222222222222
+0915 2222222222222222222222222222222222222222222222222222222
+0916 2222222222222222222222222222222222222222222222222222222
+0917 2222222222222222222222222222222222222222222222222222222
+0918 2222222222222222222222222222222222222222222222222222222
+0919 2222222222222222222222222222222222222222222222222222222
+0920 2222222222222222222222222222222222222222222222222222222
+0921 2222222222222222222222222222222222222222222222222222222
+0922 2222222222222222222222222222222222222222222222222222222
+0923 2222222222222222222222222222222222222222222222222222222
+0924 2222222222222222222222222222222222222222222222222222222
+0925 2222222222222222222222222222222222222222222222222222222
+0926 2222222222222222222222222222222222222222222222222222222
+0927 2222222222222222222222222222222222222222222222222222222
+0928 2222222222222222222222222222222222222222222222222222222
+0929 2222222222222222222222222222222222222222222222222222222
+0930 2222222222222222222222222222222222222222222222222222222
+0931 2222222222222222222222222222222222222222222222222222222
+0932 2222222222222222222222222222222222222222222222222222222
+0933 2222222222222222222222222222222222222222222222222222222
+0934 2222222222222222222222222222222222222222222222222222222
+0935 2222222222222222222222222222222222222222222222222222222
+0936 2222222222222222222222222222222222222222222222222222222
+0937 2222222222222222222222222222222222222222222222222222222
+0938 2222222222222222222222222222222222222222222222222222222
+0939 2222222222222222222222222222222222222222222222222222222
+0940 2222222222222222222222222222222222222222222222222222222
+0941 2222222222222222222222222222222222222222222222222222222
+0942 2222222222222222222222222222222222222222222222222222222
+0943 2222222222222222222222222222222222222222222222222222222
+0944 2222222222222222222222222222222222222222222222222222222
+0945 2222222222222222222222222222222222222222222222222222222
+0946 2222222222222222222222222222222222222222222222222222222
+0947 2222222222222222222222222222222222222222222222222222222
+0948 2222222222222222222222222222222222222222222222222222222
+0949 2222222222222222222222222222222222222222222222222222222
+0950 2222222222222222222222222222222222222222222222222222222
+0951 2222222222222222222222222222222222222222222222222222222
+0952 2222222222222222222222222222222222222222222222222222222
+0953 2222222222222222222222222222222222222222222222222222222
+0954 2222222222222222222222222222222222222222222222222222222
+0955 2222222222222222222222222222222222222222222222222222222
+0956 2222222222222222222222222222222222222222222222222222222
+0957 2222222222222222222222222222222222222222222222222222222
+0958 2222222222222222222222222222222222222222222222222222222
+0959 2222222222222222222222222222222222222222222222222222222
+0960 2222222222222222222222222222222222222222222222222222222
+0961 2222222222222222222222222222222222222222222222222222222
+0962 2222222222222222222222222222222222222222222222222222222
+0963 2222222222222222222222222222222222222222222222222222222
+0964 2222222222222222222222222222222222222222222222222222222
+0965 2222222222222222222222222222222222222222222222222222222
+0966 2222222222222222222222222222222222222222222222222222222
+0967 2222222222222222222222222222222222222222222222222222222
+0968 2222222222222222222222222222222222222222222222222222222
+0969 2222222222222222222222222222222222222222222222222222222
+0970 2222222222222222222222222222222222222222222222222222222
+0971 2222222222222222222222222222222222222222222222222222222
+0972 2222222222222222222222222222222222222222222222222222222
+0973 2222222222222222222222222222222222222222222222222222222
+0974 2222222222222222222222222222222222222222222222222222222
+0975 2222222222222222222222222222222222222222222222222222222
+0976 2222222222222222222222222222222222222222222222222222222
+0977 2222222222222222222222222222222222222222222222222222222
+0978 2222222222222222222222222222222222222222222222222222222
+0979 2222222222222222222222222222222222222222222222222222222
+0980 2222222222222222222222222222222222222222222222222222222
+0981 2222222222222222222222222222222222222222222222222222222
+0982 2222222222222222222222222222222222222222222222222222222
+0983 2222222222222222222222222222222222222222222222222222222
+0984 2222222222222222222222222222222222222222222222222222222
+0985 2222222222222222222222222222222222222222222222222222222
+0986 2222222222222222222222222222222222222222222222222222222
+0987 2222222222222222222222222222222222222222222222222222222
+0988 2222222222222222222222222222222222222222222222222222222
+0989 2222222222222222222222222222222222222222222222222222222
+0990 2222222222222222222222222222222222222222222222222222222
+0991 2222222222222222222222222222222222222222222222222222222
+0992 2222222222222222222222222222222222222222222222222222222
+0993 2222222222222222222222222222222222222222222222222222222
+0994 2222222222222222222222222222222222222222222222222222222
+0995 2222222222222222222222222222222222222222222222222222222
+0996 2222222222222222222222222222222222222222222222222222222
+0997 2222222222222222222222222222222222222222222222222222222
+0998 2222222222222222222222222222222222222222222222222222222
+0999 2222222222222222222222222222222222222222222222222222222
+1000 2222222222222222222222222222222222222222222222222222222
+1001 2222222222222222222222222222222222222222222222222222222
+1002 2222222222222222222222222222222222222222222222222222222
+1003 2222222222222222222222222222222222222222222222222222222
+1004 2222222222222222222222222222222222222222222222222222222
+1005 2222222222222222222222222222222222222222222222222222222
+1006 2222222222222222222222222222222222222222222222222222222
+1007 2222222222222222222222222222222222222222222222222222222
+1008 2222222222222222222222222222222222222222222222222222222
+1009 2222222222222222222222222222222222222222222222222222222
+1010 2222222222222222222222222222222222222222222222222222222
+1011 2222222222222222222222222222222222222222222222222222222
+1012 2222222222222222222222222222222222222222222222222222222
+1013 2222222222222222222222222222222222222222222222222222222
+1014 2222222222222222222222222222222222222222222222222222222
+1015 2222222222222222222222222222222222222222222222222222222
+1016 2222222222222222222222222222222222222222222222222222222
+1017 2222222222222222222222222222222222222222222222222222222
+1018 2222222222222222222222222222222222222222222222222222222
+1019 2222222222222222222222222222222222222222222222222222222
+1020 2222222222222222222222222222222222222222222222222222222
+1021 2222222222222222222222222222222222222222222222222222222
+1022 2222222222222222222222222222222222222222222222222222222
+1023 2222222222222222222222222222222222222222222222222222222
+1024 2222222222222222222222222222222222222222222222222222222
+1025 2222222222222222222222222222222222222222222222222222222
+1026 2222222222222222222222222222222222222222222222222222222
+1027 2222222222222222222222222222222222222222222222222222222
+1028 2222222222222222222222222222222222222222222222222222222
+1029 2222222222222222222222222222222222222222222222222222222
+1030 2222222222222222222222222222222222222222222222222222222
+1031 2222222222222222222222222222222222222222222222222222222
+1032 2222222222222222222222222222222222222222222222222222222
+1033 2222222222222222222222222222222222222222222222222222222
+1034 2222222222222222222222222222222222222222222222222222222
+1035 2222222222222222222222222222222222222222222222222222222
+1036 2222222222222222222222222222222222222222222222222222222
+1037 2222222222222222222222222222222222222222222222222222222
+1038 2222222222222222222222222222222222222222222222222222222
+1039 2222222222222222222222222222222222222222222222222222222
+1040 2222222222222222222222222222222222222222222222222222222
+1041 2222222222222222222222222222222222222222222222222222222
+1042 2222222222222222222222222222222222222222222222222222222
+1043 2222222222222222222222222222222222222222222222222222222
+1044 2222222222222222222222222222222222222222222222222222222
+1045 2222222222222222222222222222222222222222222222222222222
+1046 2222222222222222222222222222222222222222222222222222222
+1047 2222222222222222222222222222222222222222222222222222222
+1048 2222222222222222222222222222222222222222222222222222222
+1049 2222222222222222222222222222222222222222222222222222222
+1050 2222222222222222222222222222222222222222222222222222222
+1051 2222222222222222222222222222222222222222222222222222222
+1052 2222222222222222222222222222222222222222222222222222222
+1053 2222222222222222222222222222222222222222222222222222222
+1054 2222222222222222222222222222222222222222222222222222222
+1055 2222222222222222222222222222222222222222222222222222222
+1056 2222222222222222222222222222222222222222222222222222222
+1057 2222222222222222222222222222222222222222222222222222222
+1058 2222222222222222222222222222222222222222222222222222222
+1059 2222222222222222222222222222222222222222222222222222222
+1060 2222222222222222222222222222222222222222222222222222222
+1061 2222222222222222222222222222222222222222222222222222222
+1062 2222222222222222222222222222222222222222222222222222222
+1063 2222222222222222222222222222222222222222222222222222222
+1064 2222222222222222222222222222222222222222222222222222222
+1065 2222222222222222222222222222222222222222222222222222222
+1066 2222222222222222222222222222222222222222222222222222222
+1067 2222222222222222222222222222222222222222222222222222222
+1068 2222222222222222222222222222222222222222222222222222222
+1069 2222222222222222222222222222222222222222222222222222222
+1070 2222222222222222222222222222222222222222222222222222222
+1071 2222222222222222222222222222222222222222222222222222222
+1072 2222222222222222222222222222222222222222222222222222222
+1073 2222222222222222222222222222222222222222222222222222222
+1074 2222222222222222222222222222222222222222222222222222222
+1075 2222222222222222222222222222222222222222222222222222222
+1076 2222222222222222222222222222222222222222222222222222222
+1077 2222222222222222222222222222222222222222222222222222222
+1078 2222222222222222222222222222222222222222222222222222222
+1079 2222222222222222222222222222222222222222222222222222222
+1080 2222222222222222222222222222222222222222222222222222222
+1081 2222222222222222222222222222222222222222222222222222222
+1082 2222222222222222222222222222222222222222222222222222222
+1083 2222222222222222222222222222222222222222222222222222222
+1084 2222222222222222222222222222222222222222222222222222222
+1085 2222222222222222222222222222222222222222222222222222222
+1086 2222222222222222222222222222222222222222222222222222222
+1087 2222222222222222222222222222222222222222222222222222222
+1088 2222222222222222222222222222222222222222222222222222222
+1089 2222222222222222222222222222222222222222222222222222222
+1090 2222222222222222222222222222222222222222222222222222222
+1091 2222222222222222222222222222222222222222222222222222222
+1092 2222222222222222222222222222222222222222222222222222222
+1093 2222222222222222222222222222222222222222222222222222222
+1094 2222222222222222222222222222222222222222222222222222222
+1095 2222222222222222222222222222222222222222222222222222222
+1096 2222222222222222222222222222222222222222222222222222222
+1097 2222222222222222222222222222222222222222222222222222222
+1098 2222222222222222222222222222222222222222222222222222222
+1099 2222222222222222222222222222222222222222222222222222222
+1100 2222222222222222222222222222222222222222222222222222222
+1101 2222222222222222222222222222222222222222222222222222222
+1102 2222222222222222222222222222222222222222222222222222222
+1103 2222222222222222222222222222222222222222222222222222222
+1104 2222222222222222222222222222222222222222222222222222222
+1105 2222222222222222222222222222222222222222222222222222222
+1106 2222222222222222222222222222222222222222222222222222222
+1107 2222222222222222222222222222222222222222222222222222222
+1108 2222222222222222222222222222222222222222222222222222222
+1109 2222222222222222222222222222222222222222222222222222222
+1110 2222222222222222222222222222222222222222222222222222222
+1111 2222222222222222222222222222222222222222222222222222222
+1112 2222222222222222222222222222222222222222222222222222222
+1113 2222222222222222222222222222222222222222222222222222222
+1114 2222222222222222222222222222222222222222222222222222222
+1115 2222222222222222222222222222222222222222222222222222222
+1116 2222222222222222222222222222222222222222222222222222222
+1117 2222222222222222222222222222222222222222222222222222222
+1118 2222222222222222222222222222222222222222222222222222222
+1119 2222222222222222222222222222222222222222222222222222222
+1120 2222222222222222222222222222222222222222222222222222222
+1121 2222222222222222222222222222222222222222222222222222222
+1122 2222222222222222222222222222222222222222222222222222222
+1123 2222222222222222222222222222222222222222222222222222222
+1124 2222222222222222222222222222222222222222222222222222222
+1125 2222222222222222222222222222222222222222222222222222222
+1126 2222222222222222222222222222222222222222222222222222222
+1127 2222222222222222222222222222222222222222222222222222222
+1128 2222222222222222222222222222222222222222222222222222222
+1129 2222222222222222222222222222222222222222222222222222222
+1130 2222222222222222222222222222222222222222222222222222222
+1131 2222222222222222222222222222222222222222222222222222222
+1132 2222222222222222222222222222222222222222222222222222222
+1133 2222222222222222222222222222222222222222222222222222222
+1134 2222222222222222222222222222222222222222222222222222222
+1135 2222222222222222222222222222222222222222222222222222222
+1136 2222222222222222222222222222222222222222222222222222222
+1137 2222222222222222222222222222222222222222222222222222222
+1138 2222222222222222222222222222222222222222222222222222222
+1139 2222222222222222222222222222222222222222222222222222222
+1140 2222222222222222222222222222222222222222222222222222222
+1141 2222222222222222222222222222222222222222222222222222222
+1142 2222222222222222222222222222222222222222222222222222222
+1143 2222222222222222222222222222222222222222222222222222222
+1144 2222222222222222222222222222222222222222222222222222222
+1145 2222222222222222222222222222222222222222222222222222222
+1146 2222222222222222222222222222222222222222222222222222222
+1147 2222222222222222222222222222222222222222222222222222222
+1148 2222222222222222222222222222222222222222222222222222222
+1149 2222222222222222222222222222222222222222222222222222222
+1150 2222222222222222222222222222222222222222222222222222222
+1151 2222222222222222222222222222222222222222222222222222222
+1152 2222222222222222222222222222222222222222222222222222222
+1153 2222222222222222222222222222222222222222222222222222222
+1154 2222222222222222222222222222222222222222222222222222222
+1155 2222222222222222222222222222222222222222222222222222222
+1156 2222222222222222222222222222222222222222222222222222222
+1157 2222222222222222222222222222222222222222222222222222222
+1158 2222222222222222222222222222222222222222222222222222222
+1159 2222222222222222222222222222222222222222222222222222222
+1160 2222222222222222222222222222222222222222222222222222222
+1161 2222222222222222222222222222222222222222222222222222222
+1162 2222222222222222222222222222222222222222222222222222222
+1163 2222222222222222222222222222222222222222222222222222222
+1164 2222222222222222222222222222222222222222222222222222222
+1165 2222222222222222222222222222222222222222222222222222222
+1166 2222222222222222222222222222222222222222222222222222222
+1167 2222222222222222222222222222222222222222222222222222222
+1168 2222222222222222222222222222222222222222222222222222222
+1169 2222222222222222222222222222222222222222222222222222222
+1170 2222222222222222222222222222222222222222222222222222222
+1171 2222222222222222222222222222222222222222222222222222222
+1172 2222222222222222222222222222222222222222222222222222222
+1173 2222222222222222222222222222222222222222222222222222222
+1174 2222222222222222222222222222222222222222222222222222222
+1175 2222222222222222222222222222222222222222222222222222222
+1176 2222222222222222222222222222222222222222222222222222222
+1177 2222222222222222222222222222222222222222222222222222222
+1178 2222222222222222222222222222222222222222222222222222222
+1179 2222222222222222222222222222222222222222222222222222222
+1180 2222222222222222222222222222222222222222222222222222222
+1181 2222222222222222222222222222222222222222222222222222222
+1182 2222222222222222222222222222222222222222222222222222222
+1183 2222222222222222222222222222222222222222222222222222222
+1184 2222222222222222222222222222222222222222222222222222222
+1185 2222222222222222222222222222222222222222222222222222222
+1186 2222222222222222222222222222222222222222222222222222222
+1187 2222222222222222222222222222222222222222222222222222222
+1188 2222222222222222222222222222222222222222222222222222222
+1189 2222222222222222222222222222222222222222222222222222222
+1190 2222222222222222222222222222222222222222222222222222222
+1191 2222222222222222222222222222222222222222222222222222222
+1192 2222222222222222222222222222222222222222222222222222222
+1193 2222222222222222222222222222222222222222222222222222222
+1194 2222222222222222222222222222222222222222222222222222222
+1195 2222222222222222222222222222222222222222222222222222222
+1196 2222222222222222222222222222222222222222222222222222222
+1197 2222222222222222222222222222222222222222222222222222222
+1198 2222222222222222222222222222222222222222222222222222222
+1199 2222222222222222222222222222222222222222222222222222222
+1200 2222222222222222222222222222222222222222222222222222222
+1201 2222222222222222222222222222222222222222222222222222222
+1202 2222222222222222222222222222222222222222222222222222222
+1203 2222222222222222222222222222222222222222222222222222222
+1204 2222222222222222222222222222222222222222222222222222222
+1205 2222222222222222222222222222222222222222222222222222222
+1206 2222222222222222222222222222222222222222222222222222222
+1207 2222222222222222222222222222222222222222222222222222222
+1208 2222222222222222222222222222222222222222222222222222222
+1209 2222222222222222222222222222222222222222222222222222222
+1210 2222222222222222222222222222222222222222222222222222222
+1211 2222222222222222222222222222222222222222222222222222222
+1212 2222222222222222222222222222222222222222222222222222222
+1213 2222222222222222222222222222222222222222222222222222222
+1214 2222222222222222222222222222222222222222222222222222222
+1215 2222222222222222222222222222222222222222222222222222222
+1216 2222222222222222222222222222222222222222222222222222222
+1217 2222222222222222222222222222222222222222222222222222222
+1218 2222222222222222222222222222222222222222222222222222222
+1219 2222222222222222222222222222222222222222222222222222222
+1220 2222222222222222222222222222222222222222222222222222222
+1221 2222222222222222222222222222222222222222222222222222222
+1222 2222222222222222222222222222222222222222222222222222222
+1223 2222222222222222222222222222222222222222222222222222222
+1224 2222222222222222222222222222222222222222222222222222222
+1225 2222222222222222222222222222222222222222222222222222222
+1226 2222222222222222222222222222222222222222222222222222222
+1227 2222222222222222222222222222222222222222222222222222222
+1228 2222222222222222222222222222222222222222222222222222222
+1229 2222222222222222222222222222222222222222222222222222222
+1230 2222222222222222222222222222222222222222222222222222222
+1231 2222222222222222222222222222222222222222222222222222222
+1232 2222222222222222222222222222222222222222222222222222222
+1233 2222222222222222222222222222222222222222222222222222222
+1234 2222222222222222222222222222222222222222222222222222222
+1235 2222222222222222222222222222222222222222222222222222222
+1236 2222222222222222222222222222222222222222222222222222222
+1237 2222222222222222222222222222222222222222222222222222222
+1238 2222222222222222222222222222222222222222222222222222222
+1239 2222222222222222222222222222222222222222222222222222222
+1240 2222222222222222222222222222222222222222222222222222222
+1241 2222222222222222222222222222222222222222222222222222222
+1242 2222222222222222222222222222222222222222222222222222222
+1243 2222222222222222222222222222222222222222222222222222222
+1244 2222222222222222222222222222222222222222222222222222222
+1245 2222222222222222222222222222222222222222222222222222222
+1246 2222222222222222222222222222222222222222222222222222222
+1247 2222222222222222222222222222222222222222222222222222222
+1248 2222222222222222222222222222222222222222222222222222222
+1249 2222222222222222222222222222222222222222222222222222222
+1250 2222222222222222222222222222222222222222222222222222222
+1251 2222222222222222222222222222222222222222222222222222222
+1252 2222222222222222222222222222222222222222222222222222222
+1253 2222222222222222222222222222222222222222222222222222222
+1254 2222222222222222222222222222222222222222222222222222222
+1255 2222222222222222222222222222222222222222222222222222222
+1256 2222222222222222222222222222222222222222222222222222222
+1257 2222222222222222222222222222222222222222222222222222222
+1258 2222222222222222222222222222222222222222222222222222222
+1259 2222222222222222222222222222222222222222222222222222222
+1260 2222222222222222222222222222222222222222222222222222222
+1261 2222222222222222222222222222222222222222222222222222222
+1262 2222222222222222222222222222222222222222222222222222222
+1263 2222222222222222222222222222222222222222222222222222222
+1264 2222222222222222222222222222222222222222222222222222222
+1265 2222222222222222222222222222222222222222222222222222222
+1266 2222222222222222222222222222222222222222222222222222222
+1267 2222222222222222222222222222222222222222222222222222222
+1268 2222222222222222222222222222222222222222222222222222222
+1269 2222222222222222222222222222222222222222222222222222222
+1270 2222222222222222222222222222222222222222222222222222222
+1271 2222222222222222222222222222222222222222222222222222222
+1272 2222222222222222222222222222222222222222222222222222222
+1273 2222222222222222222222222222222222222222222222222222222
+1274 2222222222222222222222222222222222222222222222222222222
+1275 2222222222222222222222222222222222222222222222222222222
+1276 2222222222222222222222222222222222222222222222222222222
+1277 2222222222222222222222222222222222222222222222222222222
+1278 2222222222222222222222222222222222222222222222222222222
+1279 2222222222222222222222222222222222222222222222222222222
+1280 2222222222222222222222222222222222222222222222222222222
+1281 2222222222222222222222222222222222222222222222222222222
+1282 2222222222222222222222222222222222222222222222222222222
+1283 2222222222222222222222222222222222222222222222222222222
+1284 2222222222222222222222222222222222222222222222222222222
+1285 2222222222222222222222222222222222222222222222222222222
+1286 2222222222222222222222222222222222222222222222222222222
+1287 2222222222222222222222222222222222222222222222222222222
+1288 2222222222222222222222222222222222222222222222222222222
+1289 2222222222222222222222222222222222222222222222222222222
+1290 2222222222222222222222222222222222222222222222222222222
+1291 2222222222222222222222222222222222222222222222222222222
+1292 2222222222222222222222222222222222222222222222222222222
+1293 2222222222222222222222222222222222222222222222222222222
+1294 2222222222222222222222222222222222222222222222222222222
+1295 2222222222222222222222222222222222222222222222222222222
+1296 2222222222222222222222222222222222222222222222222222222
+1297 2222222222222222222222222222222222222222222222222222222
+1298 2222222222222222222222222222222222222222222222222222222
+1299 2222222222222222222222222222222222222222222222222222222
+1300 2222222222222222222222222222222222222222222222222222222
+1301 2222222222222222222222222222222222222222222222222222222
+1302 2222222222222222222222222222222222222222222222222222222
+1303 2222222222222222222222222222222222222222222222222222222
+1304 2222222222222222222222222222222222222222222222222222222
+1305 2222222222222222222222222222222222222222222222222222222
+1306 2222222222222222222222222222222222222222222222222222222
+1307 2222222222222222222222222222222222222222222222222222222
+1308 2222222222222222222222222222222222222222222222222222222
+1309 2222222222222222222222222222222222222222222222222222222
+1310 2222222222222222222222222222222222222222222222222222222
+1311 2222222222222222222222222222222222222222222222222222222
+1312 2222222222222222222222222222222222222222222222222222222
+1313 2222222222222222222222222222222222222222222222222222222
+1314 2222222222222222222222222222222222222222222222222222222
+1315 2222222222222222222222222222222222222222222222222222222
+1316 2222222222222222222222222222222222222222222222222222222
+1317 2222222222222222222222222222222222222222222222222222222
+1318 2222222222222222222222222222222222222222222222222222222
+1319 2222222222222222222222222222222222222222222222222222222
+1320 2222222222222222222222222222222222222222222222222222222
+1321 2222222222222222222222222222222222222222222222222222222
+1322 2222222222222222222222222222222222222222222222222222222
+1323 2222222222222222222222222222222222222222222222222222222
+1324 2222222222222222222222222222222222222222222222222222222
+1325 2222222222222222222222222222222222222222222222222222222
+1326 2222222222222222222222222222222222222222222222222222222
+1327 2222222222222222222222222222222222222222222222222222222
+1328 2222222222222222222222222222222222222222222222222222222
+1329 2222222222222222222222222222222222222222222222222222222
+1330 2222222222222222222222222222222222222222222222222222222
+1331 2222222222222222222222222222222222222222222222222222222
+1332 2222222222222222222222222222222222222222222222222222222
+1333 2222222222222222222222222222222222222222222222222222222
+1334 2222222222222222222222222222222222222222222222222222222
+1335 2222222222222222222222222222222222222222222222222222222
+1336 2222222222222222222222222222222222222222222222222222222
+1337 2222222222222222222222222222222222222222222222222222222
+1338 2222222222222222222222222222222222222222222222222222222
+1339 2222222222222222222222222222222222222222222222222222222
+1340 2222222222222222222222222222222222222222222222222222222
+1341 2222222222222222222222222222222222222222222222222222222
+1342 2222222222222222222222222222222222222222222222222222222
+1343 2222222222222222222222222222222222222222222222222222222
+1344 2222222222222222222222222222222222222222222222222222222
+1345 2222222222222222222222222222222222222222222222222222222
+1346 2222222222222222222222222222222222222222222222222222222
+1347 2222222222222222222222222222222222222222222222222222222
+1348 2222222222222222222222222222222222222222222222222222222
+1349 2222222222222222222222222222222222222222222222222222222
+1350 2222222222222222222222222222222222222222222222222222222
+1351 2222222222222222222222222222222222222222222222222222222
+1352 2222222222222222222222222222222222222222222222222222222
+1353 2222222222222222222222222222222222222222222222222222222
+1354 2222222222222222222222222222222222222222222222222222222
+1355 2222222222222222222222222222222222222222222222222222222
+1356 2222222222222222222222222222222222222222222222222222222
+1357 2222222222222222222222222222222222222222222222222222222
+1358 2222222222222222222222222222222222222222222222222222222
+1359 2222222222222222222222222222222222222222222222222222222
+1360 2222222222222222222222222222222222222222222222222222222
+1361 2222222222222222222222222222222222222222222222222222222
+1362 2222222222222222222222222222222222222222222222222222222
+1363 2222222222222222222222222222222222222222222222222222222
+1364 2222222222222222222222222222222222222222222222222222222
+1365 2222222222222222222222222222222222222222222222222222222
+1366 2222222222222222222222222222222222222222222222222222222
+1367 2222222222222222222222222222222222222222222222222222222
+1368 2222222222222222222222222222222222222222222222222222222
+1369 2222222222222222222222222222222222222222222222222222222
+1370 2222222222222222222222222222222222222222222222222222222
+1371 2222222222222222222222222222222222222222222222222222222
+1372 2222222222222222222222222222222222222222222222222222222
+1373 2222222222222222222222222222222222222222222222222222222
+1374 2222222222222222222222222222222222222222222222222222222
+1375 2222222222222222222222222222222222222222222222222222222
+1376 2222222222222222222222222222222222222222222222222222222
+1377 2222222222222222222222222222222222222222222222222222222
+1378 2222222222222222222222222222222222222222222222222222222
+1379 2222222222222222222222222222222222222222222222222222222
+1380 2222222222222222222222222222222222222222222222222222222
+1381 2222222222222222222222222222222222222222222222222222222
+1382 2222222222222222222222222222222222222222222222222222222
+1383 2222222222222222222222222222222222222222222222222222222
+1384 2222222222222222222222222222222222222222222222222222222
+1385 2222222222222222222222222222222222222222222222222222222
+1386 2222222222222222222222222222222222222222222222222222222
+1387 2222222222222222222222222222222222222222222222222222222
+1388 2222222222222222222222222222222222222222222222222222222
+1389 2222222222222222222222222222222222222222222222222222222
+1390 2222222222222222222222222222222222222222222222222222222
+1391 2222222222222222222222222222222222222222222222222222222
+1392 2222222222222222222222222222222222222222222222222222222
+1393 2222222222222222222222222222222222222222222222222222222
+1394 2222222222222222222222222222222222222222222222222222222
+1395 2222222222222222222222222222222222222222222222222222222
+1396 2222222222222222222222222222222222222222222222222222222
+1397 2222222222222222222222222222222222222222222222222222222
+1398 2222222222222222222222222222222222222222222222222222222
+1399 2222222222222222222222222222222222222222222222222222222
+1400 2222222222222222222222222222222222222222222222222222222
+1401 2222222222222222222222222222222222222222222222222222222
+1402 2222222222222222222222222222222222222222222222222222222
+1403 2222222222222222222222222222222222222222222222222222222
+1404 2222222222222222222222222222222222222222222222222222222
+1405 2222222222222222222222222222222222222222222222222222222
+1406 2222222222222222222222222222222222222222222222222222222
+1407 2222222222222222222222222222222222222222222222222222222
+1408 2222222222222222222222222222222222222222222222222222222
+1409 2222222222222222222222222222222222222222222222222222222
+1410 2222222222222222222222222222222222222222222222222222222
+1411 2222222222222222222222222222222222222222222222222222222
+1412 2222222222222222222222222222222222222222222222222222222
+1413 2222222222222222222222222222222222222222222222222222222
+1414 2222222222222222222222222222222222222222222222222222222
+1415 2222222222222222222222222222222222222222222222222222222
+1416 2222222222222222222222222222222222222222222222222222222
+1417 2222222222222222222222222222222222222222222222222222222
+1418 2222222222222222222222222222222222222222222222222222222
+1419 2222222222222222222222222222222222222222222222222222222
+1420 2222222222222222222222222222222222222222222222222222222
+1421 2222222222222222222222222222222222222222222222222222222
+1422 2222222222222222222222222222222222222222222222222222222
+1423 2222222222222222222222222222222222222222222222222222222
+1424 2222222222222222222222222222222222222222222222222222222
+1425 2222222222222222222222222222222222222222222222222222222
+1426 2222222222222222222222222222222222222222222222222222222
+1427 2222222222222222222222222222222222222222222222222222222
+1428 2222222222222222222222222222222222222222222222222222222
+1429 2222222222222222222222222222222222222222222222222222222
+1430 2222222222222222222222222222222222222222222222222222222
+1431 2222222222222222222222222222222222222222222222222222222
+1432 2222222222222222222222222222222222222222222222222222222
+1433 2222222222222222222222222222222222222222222222222222222
+1434 2222222222222222222222222222222222222222222222222222222
+1435 2222222222222222222222222222222222222222222222222222222
+1436 2222222222222222222222222222222222222222222222222222222
+1437 2222222222222222222222222222222222222222222222222222222
+1438 2222222222222222222222222222222222222222222222222222222
+1439 2222222222222222222222222222222222222222222222222222222
+1440 2222222222222222222222222222222222222222222222222222222
+1441 2222222222222222222222222222222222222222222222222222222
+1442 2222222222222222222222222222222222222222222222222222222
+1443 2222222222222222222222222222222222222222222222222222222
+1444 2222222222222222222222222222222222222222222222222222222
+1445 2222222222222222222222222222222222222222222222222222222
+1446 2222222222222222222222222222222222222222222222222222222
+1447 2222222222222222222222222222222222222222222222222222222
+1448 2222222222222222222222222222222222222222222222222222222
+1449 2222222222222222222222222222222222222222222222222222222
+1450 2222222222222222222222222222222222222222222222222222222
+1451 2222222222222222222222222222222222222222222222222222222
+1452 2222222222222222222222222222222222222222222222222222222
+1453 2222222222222222222222222222222222222222222222222222222
+1454 2222222222222222222222222222222222222222222222222222222
+1455 2222222222222222222222222222222222222222222222222222222
+1456 2222222222222222222222222222222222222222222222222222222
+1457 2222222222222222222222222222222222222222222222222222222
+1458 2222222222222222222222222222222222222222222222222222222
+1459 2222222222222222222222222222222222222222222222222222222
+1460 2222222222222222222222222222222222222222222222222222222
+1461 2222222222222222222222222222222222222222222222222222222
+1462 2222222222222222222222222222222222222222222222222222222
+1463 2222222222222222222222222222222222222222222222222222222
+1464 2222222222222222222222222222222222222222222222222222222
+1465 2222222222222222222222222222222222222222222222222222222
+1466 2222222222222222222222222222222222222222222222222222222
+1467 2222222222222222222222222222222222222222222222222222222
+1468 2222222222222222222222222222222222222222222222222222222
+1469 2222222222222222222222222222222222222222222222222222222
+1470 2222222222222222222222222222222222222222222222222222222
+1471 2222222222222222222222222222222222222222222222222222222
+1472 2222222222222222222222222222222222222222222222222222222
+1473 2222222222222222222222222222222222222222222222222222222
+1474 2222222222222222222222222222222222222222222222222222222
+1475 2222222222222222222222222222222222222222222222222222222
+1476 2222222222222222222222222222222222222222222222222222222
+1477 2222222222222222222222222222222222222222222222222222222
+1478 2222222222222222222222222222222222222222222222222222222
+1479 2222222222222222222222222222222222222222222222222222222
+1480 2222222222222222222222222222222222222222222222222222222
+1481 2222222222222222222222222222222222222222222222222222222
+1482 2222222222222222222222222222222222222222222222222222222
+1483 2222222222222222222222222222222222222222222222222222222
+1484 2222222222222222222222222222222222222222222222222222222
+1485 2222222222222222222222222222222222222222222222222222222
+1486 2222222222222222222222222222222222222222222222222222222
+1487 2222222222222222222222222222222222222222222222222222222
+1488 2222222222222222222222222222222222222222222222222222222
+1489 2222222222222222222222222222222222222222222222222222222
+1490 2222222222222222222222222222222222222222222222222222222
+1491 2222222222222222222222222222222222222222222222222222222
+1492 2222222222222222222222222222222222222222222222222222222
+1493 2222222222222222222222222222222222222222222222222222222
+1494 2222222222222222222222222222222222222222222222222222222
+1495 2222222222222222222222222222222222222222222222222222222
+1496 2222222222222222222222222222222222222222222222222222222
+1497 2222222222222222222222222222222222222222222222222222222
+1498 2222222222222222222222222222222222222222222222222222222
+1499 2222222222222222222222222222222222222222222222222222222
+1500 2222222222222222222222222222222222222222222222222222222
+1501 2222222222222222222222222222222222222222222222222222222
+1502 2222222222222222222222222222222222222222222222222222222
+1503 2222222222222222222222222222222222222222222222222222222
+1504 2222222222222222222222222222222222222222222222222222222
+1505 2222222222222222222222222222222222222222222222222222222
+1506 2222222222222222222222222222222222222222222222222222222
+1507 2222222222222222222222222222222222222222222222222222222
+1508 2222222222222222222222222222222222222222222222222222222
+1509 2222222222222222222222222222222222222222222222222222222
+1510 2222222222222222222222222222222222222222222222222222222
+1511 2222222222222222222222222222222222222222222222222222222
+1512 2222222222222222222222222222222222222222222222222222222
+1513 2222222222222222222222222222222222222222222222222222222
+1514 2222222222222222222222222222222222222222222222222222222
+1515 2222222222222222222222222222222222222222222222222222222
+1516 2222222222222222222222222222222222222222222222222222222
+1517 2222222222222222222222222222222222222222222222222222222
+1518 2222222222222222222222222222222222222222222222222222222
+1519 2222222222222222222222222222222222222222222222222222222
+1520 2222222222222222222222222222222222222222222222222222222
+1521 2222222222222222222222222222222222222222222222222222222
+1522 2222222222222222222222222222222222222222222222222222222
+1523 2222222222222222222222222222222222222222222222222222222
+1524 2222222222222222222222222222222222222222222222222222222
+1525 2222222222222222222222222222222222222222222222222222222
+1526 2222222222222222222222222222222222222222222222222222222
+1527 2222222222222222222222222222222222222222222222222222222
+1528 2222222222222222222222222222222222222222222222222222222
+1529 2222222222222222222222222222222222222222222222222222222
+1530 2222222222222222222222222222222222222222222222222222222
+1531 2222222222222222222222222222222222222222222222222222222
+1532 2222222222222222222222222222222222222222222222222222222
+1533 2222222222222222222222222222222222222222222222222222222
+1534 2222222222222222222222222222222222222222222222222222222
+1535 2222222222222222222222222222222222222222222222222222222
+1536 2222222222222222222222222222222222222222222222222222222
+1537 2222222222222222222222222222222222222222222222222222222
+1538 2222222222222222222222222222222222222222222222222222222
+1539 2222222222222222222222222222222222222222222222222222222
+1540 2222222222222222222222222222222222222222222222222222222
+1541 2222222222222222222222222222222222222222222222222222222
+1542 2222222222222222222222222222222222222222222222222222222
+1543 2222222222222222222222222222222222222222222222222222222
+1544 2222222222222222222222222222222222222222222222222222222
+1545 2222222222222222222222222222222222222222222222222222222
+1546 2222222222222222222222222222222222222222222222222222222
+1547 2222222222222222222222222222222222222222222222222222222
+1548 2222222222222222222222222222222222222222222222222222222
+1549 2222222222222222222222222222222222222222222222222222222
+1550 2222222222222222222222222222222222222222222222222222222
+1551 2222222222222222222222222222222222222222222222222222222
+1552 2222222222222222222222222222222222222222222222222222222
+1553 2222222222222222222222222222222222222222222222222222222
+1554 2222222222222222222222222222222222222222222222222222222
+1555 2222222222222222222222222222222222222222222222222222222
+1556 2222222222222222222222222222222222222222222222222222222
+1557 2222222222222222222222222222222222222222222222222222222
+1558 2222222222222222222222222222222222222222222222222222222
+1559 2222222222222222222222222222222222222222222222222222222
+1560 2222222222222222222222222222222222222222222222222222222
+1561 2222222222222222222222222222222222222222222222222222222
+1562 2222222222222222222222222222222222222222222222222222222
+1563 2222222222222222222222222222222222222222222222222222222
+1564 2222222222222222222222222222222222222222222222222222222
+1565 2222222222222222222222222222222222222222222222222222222
+1566 2222222222222222222222222222222222222222222222222222222
+1567 2222222222222222222222222222222222222222222222222222222
+1568 2222222222222222222222222222222222222222222222222222222
+1569 2222222222222222222222222222222222222222222222222222222
+1570 2222222222222222222222222222222222222222222222222222222
+1571 2222222222222222222222222222222222222222222222222222222
+1572 2222222222222222222222222222222222222222222222222222222
+1573 2222222222222222222222222222222222222222222222222222222
+1574 2222222222222222222222222222222222222222222222222222222
+1575 2222222222222222222222222222222222222222222222222222222
+1576 2222222222222222222222222222222222222222222222222222222
+1577 2222222222222222222222222222222222222222222222222222222
+1578 2222222222222222222222222222222222222222222222222222222
+1579 2222222222222222222222222222222222222222222222222222222
+1580 2222222222222222222222222222222222222222222222222222222
+1581 2222222222222222222222222222222222222222222222222222222
+1582 2222222222222222222222222222222222222222222222222222222
+1583 2222222222222222222222222222222222222222222222222222222
+1584 2222222222222222222222222222222222222222222222222222222
+1585 2222222222222222222222222222222222222222222222222222222
+1586 2222222222222222222222222222222222222222222222222222222
+1587 2222222222222222222222222222222222222222222222222222222
+1588 2222222222222222222222222222222222222222222222222222222
+1589 2222222222222222222222222222222222222222222222222222222
+1590 2222222222222222222222222222222222222222222222222222222
+1591 2222222222222222222222222222222222222222222222222222222
+1592 2222222222222222222222222222222222222222222222222222222
+1593 2222222222222222222222222222222222222222222222222222222
+1594 2222222222222222222222222222222222222222222222222222222
+1595 2222222222222222222222222222222222222222222222222222222
+1596 2222222222222222222222222222222222222222222222222222222
+1597 2222222222222222222222222222222222222222222222222222222
+1598 2222222222222222222222222222222222222222222222222222222
+1599 2222222222222222222222222222222222222222222222222222222
+1600 2222222222222222222222222222222222222222222222222222222
+1601 2222222222222222222222222222222222222222222222222222222
+1602 2222222222222222222222222222222222222222222222222222222
+1603 2222222222222222222222222222222222222222222222222222222
+1604 2222222222222222222222222222222222222222222222222222222
+1605 2222222222222222222222222222222222222222222222222222222
+1606 2222222222222222222222222222222222222222222222222222222
+1607 2222222222222222222222222222222222222222222222222222222
+1608 2222222222222222222222222222222222222222222222222222222
+1609 2222222222222222222222222222222222222222222222222222222
+1610 2222222222222222222222222222222222222222222222222222222
+1611 2222222222222222222222222222222222222222222222222222222
+1612 2222222222222222222222222222222222222222222222222222222
+1613 2222222222222222222222222222222222222222222222222222222
+1614 2222222222222222222222222222222222222222222222222222222
+1615 2222222222222222222222222222222222222222222222222222222
+1616 2222222222222222222222222222222222222222222222222222222
+1617 2222222222222222222222222222222222222222222222222222222
+1618 2222222222222222222222222222222222222222222222222222222
+1619 2222222222222222222222222222222222222222222222222222222
+1620 2222222222222222222222222222222222222222222222222222222
+1621 2222222222222222222222222222222222222222222222222222222
+1622 2222222222222222222222222222222222222222222222222222222
+1623 2222222222222222222222222222222222222222222222222222222
+1624 2222222222222222222222222222222222222222222222222222222
+1625 2222222222222222222222222222222222222222222222222222222
+1626 2222222222222222222222222222222222222222222222222222222
+1627 2222222222222222222222222222222222222222222222222222222
+1628 2222222222222222222222222222222222222222222222222222222
+1629 2222222222222222222222222222222222222222222222222222222
+1630 2222222222222222222222222222222222222222222222222222222
+1631 2222222222222222222222222222222222222222222222222222222
+1632 2222222222222222222222222222222222222222222222222222222
+1633 2222222222222222222222222222222222222222222222222222222
+1634 2222222222222222222222222222222222222222222222222222222
+1635 2222222222222222222222222222222222222222222222222222222
+1636 2222222222222222222222222222222222222222222222222222222
+1637 2222222222222222222222222222222222222222222222222222222
+1638 2222222222222222222222222222222222222222222222222222222
+1639 2222222222222222222222222222222222222222222222222222222
+1640 2222222222222222222222222222222222222222222222222222222
+1641 2222222222222222222222222222222222222222222222222222222
+1642 2222222222222222222222222222222222222222222222222222222
+1643 2222222222222222222222222222222222222222222222222222222
+1644 2222222222222222222222222222222222222222222222222222222
+1645 2222222222222222222222222222222222222222222222222222222
+1646 2222222222222222222222222222222222222222222222222222222
+1647 2222222222222222222222222222222222222222222222222222222
+1648 2222222222222222222222222222222222222222222222222222222
+1649 2222222222222222222222222222222222222222222222222222222
+1650 2222222222222222222222222222222222222222222222222222222
+1651 2222222222222222222222222222222222222222222222222222222
+1652 2222222222222222222222222222222222222222222222222222222
+1653 2222222222222222222222222222222222222222222222222222222
+1654 2222222222222222222222222222222222222222222222222222222
+1655 2222222222222222222222222222222222222222222222222222222
+1656 2222222222222222222222222222222222222222222222222222222
+1657 2222222222222222222222222222222222222222222222222222222
+1658 2222222222222222222222222222222222222222222222222222222
+1659 2222222222222222222222222222222222222222222222222222222
+1660 2222222222222222222222222222222222222222222222222222222
+1661 2222222222222222222222222222222222222222222222222222222
+1662 2222222222222222222222222222222222222222222222222222222
+1663 2222222222222222222222222222222222222222222222222222222
+1664 2222222222222222222222222222222222222222222222222222222
+1665 2222222222222222222222222222222222222222222222222222222
+1666 2222222222222222222222222222222222222222222222222222222
+1667 2222222222222222222222222222222222222222222222222222222
+1668 2222222222222222222222222222222222222222222222222222222
+1669 2222222222222222222222222222222222222222222222222222222
+1670 2222222222222222222222222222222222222222222222222222222
+1671 2222222222222222222222222222222222222222222222222222222
+1672 2222222222222222222222222222222222222222222222222222222
+1673 2222222222222222222222222222222222222222222222222222222
+1674 2222222222222222222222222222222222222222222222222222222
+1675 2222222222222222222222222222222222222222222222222222222
+1676 2222222222222222222222222222222222222222222222222222222
+1677 2222222222222222222222222222222222222222222222222222222
+1678 2222222222222222222222222222222222222222222222222222222
+1679 2222222222222222222222222222222222222222222222222222222
+1680 2222222222222222222222222222222222222222222222222222222
+1681 2222222222222222222222222222222222222222222222222222222
+1682 2222222222222222222222222222222222222222222222222222222
+1683 2222222222222222222222222222222222222222222222222222222
+1684 2222222222222222222222222222222222222222222222222222222
+1685 2222222222222222222222222222222222222222222222222222222
+1686 2222222222222222222222222222222222222222222222222222222
+1687 2222222222222222222222222222222222222222222222222222222
+1688 2222222222222222222222222222222222222222222222222222222
+1689 2222222222222222222222222222222222222222222222222222222
+1690 2222222222222222222222222222222222222222222222222222222
+1691 2222222222222222222222222222222222222222222222222222222
+1692 2222222222222222222222222222222222222222222222222222222
+1693 2222222222222222222222222222222222222222222222222222222
+1694 2222222222222222222222222222222222222222222222222222222
+1695 2222222222222222222222222222222222222222222222222222222
+1696 2222222222222222222222222222222222222222222222222222222
+1697 2222222222222222222222222222222222222222222222222222222
+1698 2222222222222222222222222222222222222222222222222222222
+1699 2222222222222222222222222222222222222222222222222222222
+1700 2222222222222222222222222222222222222222222222222222222
+1701 2222222222222222222222222222222222222222222222222222222
+1702 2222222222222222222222222222222222222222222222222222222
+1703 2222222222222222222222222222222222222222222222222222222
+1704 2222222222222222222222222222222222222222222222222222222
+1705 2222222222222222222222222222222222222222222222222222222
+1706 2222222222222222222222222222222222222222222222222222222
+1707 2222222222222222222222222222222222222222222222222222222
+1708 2222222222222222222222222222222222222222222222222222222
+1709 2222222222222222222222222222222222222222222222222222222
+1710 2222222222222222222222222222222222222222222222222222222
+1711 2222222222222222222222222222222222222222222222222222222
+1712 2222222222222222222222222222222222222222222222222222222
+1713 2222222222222222222222222222222222222222222222222222222
+1714 2222222222222222222222222222222222222222222222222222222
+1715 2222222222222222222222222222222222222222222222222222222
+1716 2222222222222222222222222222222222222222222222222222222
+1717 2222222222222222222222222222222222222222222222222222222
+1718 2222222222222222222222222222222222222222222222222222222
+1719 2222222222222222222222222222222222222222222222222222222
+1720 2222222222222222222222222222222222222222222222222222222
+1721 2222222222222222222222222222222222222222222222222222222
+1722 2222222222222222222222222222222222222222222222222222222
+1723 2222222222222222222222222222222222222222222222222222222
+1724 2222222222222222222222222222222222222222222222222222222
+1725 2222222222222222222222222222222222222222222222222222222
+1726 2222222222222222222222222222222222222222222222222222222
+1727 2222222222222222222222222222222222222222222222222222222
+1728 2222222222222222222222222222222222222222222222222222222
+1729 2222222222222222222222222222222222222222222222222222222
+1730 2222222222222222222222222222222222222222222222222222222
+1731 2222222222222222222222222222222222222222222222222222222
+1732 2222222222222222222222222222222222222222222222222222222
+1733 2222222222222222222222222222222222222222222222222222222
+1734 2222222222222222222222222222222222222222222222222222222
+1735 2222222222222222222222222222222222222222222222222222222
+1736 2222222222222222222222222222222222222222222222222222222
+1737 2222222222222222222222222222222222222222222222222222222
+1738 2222222222222222222222222222222222222222222222222222222
+1739 2222222222222222222222222222222222222222222222222222222
+1740 2222222222222222222222222222222222222222222222222222222
+1741 2222222222222222222222222222222222222222222222222222222
+1742 2222222222222222222222222222222222222222222222222222222
+1743 2222222222222222222222222222222222222222222222222222222
+1744 2222222222222222222222222222222222222222222222222222222
+1745 2222222222222222222222222222222222222222222222222222222
+1746 2222222222222222222222222222222222222222222222222222222
+1747 2222222222222222222222222222222222222222222222222222222
+1748 2222222222222222222222222222222222222222222222222222222
+1749 2222222222222222222222222222222222222222222222222222222
+1750 2222222222222222222222222222222222222222222222222222222
+1751 2222222222222222222222222222222222222222222222222222222
+1752 2222222222222222222222222222222222222222222222222222222
+1753 2222222222222222222222222222222222222222222222222222222
+1754 2222222222222222222222222222222222222222222222222222222
+1755 2222222222222222222222222222222222222222222222222222222
+1756 2222222222222222222222222222222222222222222222222222222
+1757 2222222222222222222222222222222222222222222222222222222
+1758 2222222222222222222222222222222222222222222222222222222
+1759 2222222222222222222222222222222222222222222222222222222
+1760 2222222222222222222222222222222222222222222222222222222
+1761 2222222222222222222222222222222222222222222222222222222
+1762 2222222222222222222222222222222222222222222222222222222
+1763 2222222222222222222222222222222222222222222222222222222
+1764 2222222222222222222222222222222222222222222222222222222
+1765 2222222222222222222222222222222222222222222222222222222
+1766 2222222222222222222222222222222222222222222222222222222
+1767 2222222222222222222222222222222222222222222222222222222
+1768 2222222222222222222222222222222222222222222222222222222
+1769 2222222222222222222222222222222222222222222222222222222
+1770 2222222222222222222222222222222222222222222222222222222
+1771 2222222222222222222222222222222222222222222222222222222
+1772 2222222222222222222222222222222222222222222222222222222
+1773 2222222222222222222222222222222222222222222222222222222
+1774 2222222222222222222222222222222222222222222222222222222
+1775 2222222222222222222222222222222222222222222222222222222
+1776 2222222222222222222222222222222222222222222222222222222
+1777 2222222222222222222222222222222222222222222222222222222
+1778 2222222222222222222222222222222222222222222222222222222
+1779 2222222222222222222222222222222222222222222222222222222
+1780 2222222222222222222222222222222222222222222222222222222
+1781 2222222222222222222222222222222222222222222222222222222
+1782 2222222222222222222222222222222222222222222222222222222
+1783 2222222222222222222222222222222222222222222222222222222
+1784 2222222222222222222222222222222222222222222222222222222
+1785 2222222222222222222222222222222222222222222222222222222
+1786 2222222222222222222222222222222222222222222222222222222
+1787 2222222222222222222222222222222222222222222222222222222
+1788 2222222222222222222222222222222222222222222222222222222
+1789 2222222222222222222222222222222222222222222222222222222
+1790 2222222222222222222222222222222222222222222222222222222
+1791 2222222222222222222222222222222222222222222222222222222
+1792 2222222222222222222222222222222222222222222222222222222
+1793 2222222222222222222222222222222222222222222222222222222
+1794 2222222222222222222222222222222222222222222222222222222
+1795 2222222222222222222222222222222222222222222222222222222
+1796 2222222222222222222222222222222222222222222222222222222
+1797 2222222222222222222222222222222222222222222222222222222
+1798 2222222222222222222222222222222222222222222222222222222
+1799 2222222222222222222222222222222222222222222222222222222
+1800 2222222222222222222222222222222222222222222222222222222
+1801 2222222222222222222222222222222222222222222222222222222
+1802 2222222222222222222222222222222222222222222222222222222
+1803 2222222222222222222222222222222222222222222222222222222
+1804 2222222222222222222222222222222222222222222222222222222
+1805 2222222222222222222222222222222222222222222222222222222
+1806 2222222222222222222222222222222222222222222222222222222
+1807 2222222222222222222222222222222222222222222222222222222
+1808 2222222222222222222222222222222222222222222222222222222
+1809 2222222222222222222222222222222222222222222222222222222
+1810 2222222222222222222222222222222222222222222222222222222
+1811 2222222222222222222222222222222222222222222222222222222
+1812 2222222222222222222222222222222222222222222222222222222
+1813 2222222222222222222222222222222222222222222222222222222
+1814 2222222222222222222222222222222222222222222222222222222
+1815 2222222222222222222222222222222222222222222222222222222
+1816 2222222222222222222222222222222222222222222222222222222
+1817 2222222222222222222222222222222222222222222222222222222
+1818 2222222222222222222222222222222222222222222222222222222
+1819 2222222222222222222222222222222222222222222222222222222
+1820 2222222222222222222222222222222222222222222222222222222
+1821 2222222222222222222222222222222222222222222222222222222
+1822 2222222222222222222222222222222222222222222222222222222
+1823 2222222222222222222222222222222222222222222222222222222
+1824 2222222222222222222222222222222222222222222222222222222
+1825 2222222222222222222222222222222222222222222222222222222
+1826 2222222222222222222222222222222222222222222222222222222
+1827 2222222222222222222222222222222222222222222222222222222
+1828 2222222222222222222222222222222222222222222222222222222
+1829 2222222222222222222222222222222222222222222222222222222
+1830 2222222222222222222222222222222222222222222222222222222
+1831 2222222222222222222222222222222222222222222222222222222
+1832 2222222222222222222222222222222222222222222222222222222
+1833 2222222222222222222222222222222222222222222222222222222
+1834 2222222222222222222222222222222222222222222222222222222
+1835 2222222222222222222222222222222222222222222222222222222
+1836 2222222222222222222222222222222222222222222222222222222
+1837 2222222222222222222222222222222222222222222222222222222
+1838 2222222222222222222222222222222222222222222222222222222
+1839 2222222222222222222222222222222222222222222222222222222
+1840 2222222222222222222222222222222222222222222222222222222
+1841 2222222222222222222222222222222222222222222222222222222
+1842 2222222222222222222222222222222222222222222222222222222
+1843 2222222222222222222222222222222222222222222222222222222
+1844 2222222222222222222222222222222222222222222222222222222
+1845 2222222222222222222222222222222222222222222222222222222
+1846 2222222222222222222222222222222222222222222222222222222
+1847 2222222222222222222222222222222222222222222222222222222
+1848 2222222222222222222222222222222222222222222222222222222
+1849 2222222222222222222222222222222222222222222222222222222
+1850 2222222222222222222222222222222222222222222222222222222
+1851 2222222222222222222222222222222222222222222222222222222
+1852 2222222222222222222222222222222222222222222222222222222
+1853 2222222222222222222222222222222222222222222222222222222
+1854 2222222222222222222222222222222222222222222222222222222
+1855 2222222222222222222222222222222222222222222222222222222
+1856 2222222222222222222222222222222222222222222222222222222
+1857 2222222222222222222222222222222222222222222222222222222
+1858 2222222222222222222222222222222222222222222222222222222
+1859 2222222222222222222222222222222222222222222222222222222
+1860 2222222222222222222222222222222222222222222222222222222
+1861 2222222222222222222222222222222222222222222222222222222
+1862 2222222222222222222222222222222222222222222222222222222
+1863 2222222222222222222222222222222222222222222222222222222
+1864 2222222222222222222222222222222222222222222222222222222
+1865 2222222222222222222222222222222222222222222222222222222
+1866 2222222222222222222222222222222222222222222222222222222
+1867 2222222222222222222222222222222222222222222222222222222
+1868 2222222222222222222222222222222222222222222222222222222
+1869 2222222222222222222222222222222222222222222222222222222
+1870 2222222222222222222222222222222222222222222222222222222
+1871 2222222222222222222222222222222222222222222222222222222
+1872 2222222222222222222222222222222222222222222222222222222
+1873 2222222222222222222222222222222222222222222222222222222
+1874 2222222222222222222222222222222222222222222222222222222
+1875 2222222222222222222222222222222222222222222222222222222
+1876 2222222222222222222222222222222222222222222222222222222
+1877 2222222222222222222222222222222222222222222222222222222
+1878 2222222222222222222222222222222222222222222222222222222
+1879 2222222222222222222222222222222222222222222222222222222
+1880 2222222222222222222222222222222222222222222222222222222
+1881 2222222222222222222222222222222222222222222222222222222
+1882 2222222222222222222222222222222222222222222222222222222
+1883 2222222222222222222222222222222222222222222222222222222
+1884 2222222222222222222222222222222222222222222222222222222
+1885 2222222222222222222222222222222222222222222222222222222
+1886 2222222222222222222222222222222222222222222222222222222
+1887 2222222222222222222222222222222222222222222222222222222
+1888 2222222222222222222222222222222222222222222222222222222
+1889 2222222222222222222222222222222222222222222222222222222
+1890 2222222222222222222222222222222222222222222222222222222
+1891 2222222222222222222222222222222222222222222222222222222
+1892 2222222222222222222222222222222222222222222222222222222
+1893 2222222222222222222222222222222222222222222222222222222
+1894 2222222222222222222222222222222222222222222222222222222
+1895 2222222222222222222222222222222222222222222222222222222
+1896 2222222222222222222222222222222222222222222222222222222
+1897 2222222222222222222222222222222222222222222222222222222
+1898 2222222222222222222222222222222222222222222222222222222
+1899 2222222222222222222222222222222222222222222222222222222
+1900 2222222222222222222222222222222222222222222222222222222
+1901 2222222222222222222222222222222222222222222222222222222
+1902 2222222222222222222222222222222222222222222222222222222
+1903 2222222222222222222222222222222222222222222222222222222
+1904 2222222222222222222222222222222222222222222222222222222
+1905 2222222222222222222222222222222222222222222222222222222
+1906 2222222222222222222222222222222222222222222222222222222
+1907 2222222222222222222222222222222222222222222222222222222
+1908 2222222222222222222222222222222222222222222222222222222
+1909 2222222222222222222222222222222222222222222222222222222
+1910 2222222222222222222222222222222222222222222222222222222
+1911 2222222222222222222222222222222222222222222222222222222
+1912 2222222222222222222222222222222222222222222222222222222
+1913 2222222222222222222222222222222222222222222222222222222
+1914 2222222222222222222222222222222222222222222222222222222
+1915 2222222222222222222222222222222222222222222222222222222
+1916 2222222222222222222222222222222222222222222222222222222
+1917 2222222222222222222222222222222222222222222222222222222
+1918 2222222222222222222222222222222222222222222222222222222
+1919 2222222222222222222222222222222222222222222222222222222
+1920 2222222222222222222222222222222222222222222222222222222
+1921 2222222222222222222222222222222222222222222222222222222
+1922 2222222222222222222222222222222222222222222222222222222
+1923 2222222222222222222222222222222222222222222222222222222
+1924 2222222222222222222222222222222222222222222222222222222
+1925 2222222222222222222222222222222222222222222222222222222
+1926 2222222222222222222222222222222222222222222222222222222
+1927 2222222222222222222222222222222222222222222222222222222
+1928 2222222222222222222222222222222222222222222222222222222
+1929 2222222222222222222222222222222222222222222222222222222
+1930 2222222222222222222222222222222222222222222222222222222
+1931 2222222222222222222222222222222222222222222222222222222
+1932 2222222222222222222222222222222222222222222222222222222
+1933 2222222222222222222222222222222222222222222222222222222
+1934 2222222222222222222222222222222222222222222222222222222
+1935 2222222222222222222222222222222222222222222222222222222
+1936 2222222222222222222222222222222222222222222222222222222
+1937 2222222222222222222222222222222222222222222222222222222
+1938 2222222222222222222222222222222222222222222222222222222
+1939 2222222222222222222222222222222222222222222222222222222
+1940 2222222222222222222222222222222222222222222222222222222
+1941 2222222222222222222222222222222222222222222222222222222
+1942 2222222222222222222222222222222222222222222222222222222
+1943 2222222222222222222222222222222222222222222222222222222
+1944 2222222222222222222222222222222222222222222222222222222
+1945 2222222222222222222222222222222222222222222222222222222
+1946 2222222222222222222222222222222222222222222222222222222
+1947 2222222222222222222222222222222222222222222222222222222
+1948 2222222222222222222222222222222222222222222222222222222
+1949 2222222222222222222222222222222222222222222222222222222
+1950 2222222222222222222222222222222222222222222222222222222
+1951 2222222222222222222222222222222222222222222222222222222
+1952 2222222222222222222222222222222222222222222222222222222
+1953 2222222222222222222222222222222222222222222222222222222
+1954 2222222222222222222222222222222222222222222222222222222
+1955 2222222222222222222222222222222222222222222222222222222
+1956 2222222222222222222222222222222222222222222222222222222
+1957 2222222222222222222222222222222222222222222222222222222
+1958 2222222222222222222222222222222222222222222222222222222
+1959 2222222222222222222222222222222222222222222222222222222
+1960 2222222222222222222222222222222222222222222222222222222
+1961 2222222222222222222222222222222222222222222222222222222
+1962 2222222222222222222222222222222222222222222222222222222
+1963 2222222222222222222222222222222222222222222222222222222
+1964 2222222222222222222222222222222222222222222222222222222
+1965 2222222222222222222222222222222222222222222222222222222
+1966 2222222222222222222222222222222222222222222222222222222
+1967 2222222222222222222222222222222222222222222222222222222
+1968 2222222222222222222222222222222222222222222222222222222
+1969 2222222222222222222222222222222222222222222222222222222
+1970 2222222222222222222222222222222222222222222222222222222
+1971 2222222222222222222222222222222222222222222222222222222
+1972 2222222222222222222222222222222222222222222222222222222
+1973 2222222222222222222222222222222222222222222222222222222
+1974 2222222222222222222222222222222222222222222222222222222
+1975 2222222222222222222222222222222222222222222222222222222
+1976 2222222222222222222222222222222222222222222222222222222
+1977 2222222222222222222222222222222222222222222222222222222
+1978 2222222222222222222222222222222222222222222222222222222
+1979 2222222222222222222222222222222222222222222222222222222
+1980 2222222222222222222222222222222222222222222222222222222
+1981 2222222222222222222222222222222222222222222222222222222
+1982 2222222222222222222222222222222222222222222222222222222
+1983 2222222222222222222222222222222222222222222222222222222
+1984 2222222222222222222222222222222222222222222222222222222
+1985 2222222222222222222222222222222222222222222222222222222
+1986 2222222222222222222222222222222222222222222222222222222
+1987 2222222222222222222222222222222222222222222222222222222
+1988 2222222222222222222222222222222222222222222222222222222
+1989 2222222222222222222222222222222222222222222222222222222
+1990 2222222222222222222222222222222222222222222222222222222
+1991 2222222222222222222222222222222222222222222222222222222
+1992 2222222222222222222222222222222222222222222222222222222
+1993 2222222222222222222222222222222222222222222222222222222
+1994 2222222222222222222222222222222222222222222222222222222
+1995 2222222222222222222222222222222222222222222222222222222
+1996 2222222222222222222222222222222222222222222222222222222
+1997 2222222222222222222222222222222222222222222222222222222
+1998 2222222222222222222222222222222222222222222222222222222
+1999 2222222222222222222222222222222222222222222222222222222
+2000 2222222222222222222222222222222222222222222222222222222
+2001 2222222222222222222222222222222222222222222222222222222
+2002 2222222222222222222222222222222222222222222222222222222
+2003 2222222222222222222222222222222222222222222222222222222
+2004 2222222222222222222222222222222222222222222222222222222
+2005 2222222222222222222222222222222222222222222222222222222
+2006 2222222222222222222222222222222222222222222222222222222
+2007 2222222222222222222222222222222222222222222222222222222
+2008 2222222222222222222222222222222222222222222222222222222
+2009 2222222222222222222222222222222222222222222222222222222
+2010 2222222222222222222222222222222222222222222222222222222
+2011 2222222222222222222222222222222222222222222222222222222
+2012 2222222222222222222222222222222222222222222222222222222
+2013 2222222222222222222222222222222222222222222222222222222
+2014 2222222222222222222222222222222222222222222222222222222
+2015 2222222222222222222222222222222222222222222222222222222
+2016 2222222222222222222222222222222222222222222222222222222
+2017 2222222222222222222222222222222222222222222222222222222
+2018 2222222222222222222222222222222222222222222222222222222
+2019 2222222222222222222222222222222222222222222222222222222
+2020 2222222222222222222222222222222222222222222222222222222
+2021 2222222222222222222222222222222222222222222222222222222
+2022 2222222222222222222222222222222222222222222222222222222
+2023 2222222222222222222222222222222222222222222222222222222
+2024 2222222222222222222222222222222222222222222222222222222
+2025 2222222222222222222222222222222222222222222222222222222
+2026 2222222222222222222222222222222222222222222222222222222
+2027 2222222222222222222222222222222222222222222222222222222
+2028 2222222222222222222222222222222222222222222222222222222
+2029 2222222222222222222222222222222222222222222222222222222
+2030 2222222222222222222222222222222222222222222222222222222
+2031 2222222222222222222222222222222222222222222222222222222
+2032 2222222222222222222222222222222222222222222222222222222
+2033 2222222222222222222222222222222222222222222222222222222
+2034 2222222222222222222222222222222222222222222222222222222
+2035 2222222222222222222222222222222222222222222222222222222
+2036 2222222222222222222222222222222222222222222222222222222
+2037 2222222222222222222222222222222222222222222222222222222
+2038 2222222222222222222222222222222222222222222222222222222
+2039 2222222222222222222222222222222222222222222222222222222
+2040 2222222222222222222222222222222222222222222222222222222
+2041 2222222222222222222222222222222222222222222222222222222
+2042 2222222222222222222222222222222222222222222222222222222
+2043 2222222222222222222222222222222222222222222222222222222
+2044 2222222222222222222222222222222222222222222222222222222
+2045 2222222222222222222222222222222222222222222222222222222
+2046 2222222222222222222222222222222222222222222222222222222
+2047 2222222222222222222222222222222222222222222222222222222
+2048 2222222222222222222222222222222222222222222222222222222
+2049 2222222222222222222222222222222222222222222222222222222
+2050 2222222222222222222222222222222222222222222222222222222
+2051 2222222222222222222222222222222222222222222222222222222
+2052 2222222222222222222222222222222222222222222222222222222
+2053 2222222222222222222222222222222222222222222222222222222
+2054 2222222222222222222222222222222222222222222222222222222
+2055 2222222222222222222222222222222222222222222222222222222
+2056 2222222222222222222222222222222222222222222222222222222
+2057 2222222222222222222222222222222222222222222222222222222
+2058 2222222222222222222222222222222222222222222222222222222
+2059 2222222222222222222222222222222222222222222222222222222
+2060 2222222222222222222222222222222222222222222222222222222
+2061 2222222222222222222222222222222222222222222222222222222
+2062 2222222222222222222222222222222222222222222222222222222
+2063 2222222222222222222222222222222222222222222222222222222
+2064 2222222222222222222222222222222222222222222222222222222
+2065 2222222222222222222222222222222222222222222222222222222
+2066 2222222222222222222222222222222222222222222222222222222
+2067 2222222222222222222222222222222222222222222222222222222
+2068 2222222222222222222222222222222222222222222222222222222
+2069 2222222222222222222222222222222222222222222222222222222
+2070 2222222222222222222222222222222222222222222222222222222
+2071 2222222222222222222222222222222222222222222222222222222
+2072 2222222222222222222222222222222222222222222222222222222
+2073 2222222222222222222222222222222222222222222222222222222
+2074 2222222222222222222222222222222222222222222222222222222
+2075 2222222222222222222222222222222222222222222222222222222
+2076 2222222222222222222222222222222222222222222222222222222
+2077 2222222222222222222222222222222222222222222222222222222
+2078 2222222222222222222222222222222222222222222222222222222
+2079 2222222222222222222222222222222222222222222222222222222
+2080 2222222222222222222222222222222222222222222222222222222
+2081 2222222222222222222222222222222222222222222222222222222
+2082 2222222222222222222222222222222222222222222222222222222
+2083 2222222222222222222222222222222222222222222222222222222
+2084 2222222222222222222222222222222222222222222222222222222
+2085 2222222222222222222222222222222222222222222222222222222
+2086 2222222222222222222222222222222222222222222222222222222
+2087 2222222222222222222222222222222222222222222222222222222
+2088 2222222222222222222222222222222222222222222222222222222
+2089 2222222222222222222222222222222222222222222222222222222
+2090 2222222222222222222222222222222222222222222222222222222
+2091 2222222222222222222222222222222222222222222222222222222
+2092 2222222222222222222222222222222222222222222222222222222
+2093 2222222222222222222222222222222222222222222222222222222
+2094 2222222222222222222222222222222222222222222222222222222
+2095 2222222222222222222222222222222222222222222222222222222
+2096 2222222222222222222222222222222222222222222222222222222
+2097 2222222222222222222222222222222222222222222222222222222
+2098 2222222222222222222222222222222222222222222222222222222
+2099 2222222222222222222222222222222222222222222222222222222
+2100 2222222222222222222222222222222222222222222222222222222
+2101 2222222222222222222222222222222222222222222222222222222
+2102 2222222222222222222222222222222222222222222222222222222
+2103 2222222222222222222222222222222222222222222222222222222
+2104 2222222222222222222222222222222222222222222222222222222
+2105 2222222222222222222222222222222222222222222222222222222
+2106 2222222222222222222222222222222222222222222222222222222
+2107 2222222222222222222222222222222222222222222222222222222
+2108 2222222222222222222222222222222222222222222222222222222
+2109 2222222222222222222222222222222222222222222222222222222
+2110 2222222222222222222222222222222222222222222222222222222
+2111 2222222222222222222222222222222222222222222222222222222
+2112 2222222222222222222222222222222222222222222222222222222
+2113 2222222222222222222222222222222222222222222222222222222
+2114 2222222222222222222222222222222222222222222222222222222
+2115 2222222222222222222222222222222222222222222222222222222
+2116 2222222222222222222222222222222222222222222222222222222
+2117 2222222222222222222222222222222222222222222222222222222
+2118 2222222222222222222222222222222222222222222222222222222
+2119 2222222222222222222222222222222222222222222222222222222
+2120 2222222222222222222222222222222222222222222222222222222
+2121 2222222222222222222222222222222222222222222222222222222
+2122 2222222222222222222222222222222222222222222222222222222
+2123 2222222222222222222222222222222222222222222222222222222
+2124 2222222222222222222222222222222222222222222222222222222
+2125 2222222222222222222222222222222222222222222222222222222
+2126 2222222222222222222222222222222222222222222222222222222
+2127 2222222222222222222222222222222222222222222222222222222
+2128 2222222222222222222222222222222222222222222222222222222
+2129 2222222222222222222222222222222222222222222222222222222
+2130 2222222222222222222222222222222222222222222222222222222
+2131 2222222222222222222222222222222222222222222222222222222
+2132 2222222222222222222222222222222222222222222222222222222
+2133 2222222222222222222222222222222222222222222222222222222
+2134 2222222222222222222222222222222222222222222222222222222
+2135 2222222222222222222222222222222222222222222222222222222
+2136 2222222222222222222222222222222222222222222222222222222
+2137 2222222222222222222222222222222222222222222222222222222
+2138 2222222222222222222222222222222222222222222222222222222
+2139 2222222222222222222222222222222222222222222222222222222
+2140 2222222222222222222222222222222222222222222222222222222
+2141 2222222222222222222222222222222222222222222222222222222
+2142 2222222222222222222222222222222222222222222222222222222
+2143 2222222222222222222222222222222222222222222222222222222
+2144 2222222222222222222222222222222222222222222222222222222
+2145 2222222222222222222222222222222222222222222222222222222
+2146 2222222222222222222222222222222222222222222222222222222
+2147 2222222222222222222222222222222222222222222222222222222
+2148 2222222222222222222222222222222222222222222222222222222
+2149 2222222222222222222222222222222222222222222222222222222
+2150 2222222222222222222222222222222222222222222222222222222
+2151 2222222222222222222222222222222222222222222222222222222
+2152 2222222222222222222222222222222222222222222222222222222
+2153 2222222222222222222222222222222222222222222222222222222
+2154 2222222222222222222222222222222222222222222222222222222
+2155 2222222222222222222222222222222222222222222222222222222
+2156 2222222222222222222222222222222222222222222222222222222
+2157 2222222222222222222222222222222222222222222222222222222
+2158 2222222222222222222222222222222222222222222222222222222
+2159 2222222222222222222222222222222222222222222222222222222
+2160 2222222222222222222222222222222222222222222222222222222
+2161 2222222222222222222222222222222222222222222222222222222
+2162 2222222222222222222222222222222222222222222222222222222
+2163 2222222222222222222222222222222222222222222222222222222
+2164 2222222222222222222222222222222222222222222222222222222
+2165 2222222222222222222222222222222222222222222222222222222
+2166 2222222222222222222222222222222222222222222222222222222
+2167 2222222222222222222222222222222222222222222222222222222
+2168 2222222222222222222222222222222222222222222222222222222
+2169 2222222222222222222222222222222222222222222222222222222
+2170 2222222222222222222222222222222222222222222222222222222
+2171 2222222222222222222222222222222222222222222222222222222
+2172 2222222222222222222222222222222222222222222222222222222
+2173 2222222222222222222222222222222222222222222222222222222
+2174 2222222222222222222222222222222222222222222222222222222
+2175 2222222222222222222222222222222222222222222222222222222
+2176 2222222222222222222222222222222222222222222222222222222
+2177 2222222222222222222222222222222222222222222222222222222
+2178 2222222222222222222222222222222222222222222222222222222
+2179 2222222222222222222222222222222222222222222222222222222
+2180 2222222222222222222222222222222222222222222222222222222
+2181 2222222222222222222222222222222222222222222222222222222
+2182 2222222222222222222222222222222222222222222222222222222
+2183 2222222222222222222222222222222222222222222222222222222
+2184 2222222222222222222222222222222222222222222222222222222
+2185 2222222222222222222222222222222222222222222222222222222
+2186 2222222222222222222222222222222222222222222222222222222
+2187 2222222222222222222222222222222222222222222222222222222
+2188 2222222222222222222222222222222222222222222222222222222
+2189 2222222222222222222222222222222222222222222222222222222
+2190 2222222222222222222222222222222222222222222222222222222
+2191 2222222222222222222222222222222222222222222222222222222
+2192 2222222222222222222222222222222222222222222222222222222
+2193 2222222222222222222222222222222222222222222222222222222
+2194 2222222222222222222222222222222222222222222222222222222
+2195 2222222222222222222222222222222222222222222222222222222
+2196 2222222222222222222222222222222222222222222222222222222
+2197 2222222222222222222222222222222222222222222222222222222
+2198 2222222222222222222222222222222222222222222222222222222
+2199 2222222222222222222222222222222222222222222222222222222
+2200 2222222222222222222222222222222222222222222222222222222
+2201 2222222222222222222222222222222222222222222222222222222
+2202 2222222222222222222222222222222222222222222222222222222
+2203 2222222222222222222222222222222222222222222222222222222
+2204 2222222222222222222222222222222222222222222222222222222
+2205 2222222222222222222222222222222222222222222222222222222
+2206 2222222222222222222222222222222222222222222222222222222
+2207 2222222222222222222222222222222222222222222222222222222
+2208 2222222222222222222222222222222222222222222222222222222
+2209 2222222222222222222222222222222222222222222222222222222
+2210 2222222222222222222222222222222222222222222222222222222
+2211 2222222222222222222222222222222222222222222222222222222
+2212 2222222222222222222222222222222222222222222222222222222
+2213 2222222222222222222222222222222222222222222222222222222
+2214 2222222222222222222222222222222222222222222222222222222
+2215 2222222222222222222222222222222222222222222222222222222
+2216 2222222222222222222222222222222222222222222222222222222
+2217 2222222222222222222222222222222222222222222222222222222
+2218 2222222222222222222222222222222222222222222222222222222
+2219 2222222222222222222222222222222222222222222222222222222
+2220 2222222222222222222222222222222222222222222222222222222
+2221 2222222222222222222222222222222222222222222222222222222
+2222 2222222222222222222222222222222222222222222222222222222
+2223 2222222222222222222222222222222222222222222222222222222
+2224 2222222222222222222222222222222222222222222222222222222
+2225 2222222222222222222222222222222222222222222222222222222
+2226 2222222222222222222222222222222222222222222222222222222
+2227 2222222222222222222222222222222222222222222222222222222
+2228 2222222222222222222222222222222222222222222222222222222
+2229 2222222222222222222222222222222222222222222222222222222
+2230 2222222222222222222222222222222222222222222222222222222
+2231 2222222222222222222222222222222222222222222222222222222
+2232 2222222222222222222222222222222222222222222222222222222
+2233 2222222222222222222222222222222222222222222222222222222
+2234 2222222222222222222222222222222222222222222222222222222
+2235 2222222222222222222222222222222222222222222222222222222
+2236 2222222222222222222222222222222222222222222222222222222
+2237 2222222222222222222222222222222222222222222222222222222
+2238 2222222222222222222222222222222222222222222222222222222
+2239 2222222222222222222222222222222222222222222222222222222
+2240 2222222222222222222222222222222222222222222222222222222
+2241 2222222222222222222222222222222222222222222222222222222
+2242 2222222222222222222222222222222222222222222222222222222
+2243 2222222222222222222222222222222222222222222222222222222
+2244 2222222222222222222222222222222222222222222222222222222
+2245 2222222222222222222222222222222222222222222222222222222
+2246 2222222222222222222222222222222222222222222222222222222
+2247 2222222222222222222222222222222222222222222222222222222
+2248 2222222222222222222222222222222222222222222222222222222
+2249 2222222222222222222222222222222222222222222222222222222
+2250 2222222222222222222222222222222222222222222222222222222
+2251 2222222222222222222222222222222222222222222222222222222
+2252 2222222222222222222222222222222222222222222222222222222
+2253 2222222222222222222222222222222222222222222222222222222
+2254 2222222222222222222222222222222222222222222222222222222
+2255 2222222222222222222222222222222222222222222222222222222
+2256 2222222222222222222222222222222222222222222222222222222
+2257 2222222222222222222222222222222222222222222222222222222
+2258 2222222222222222222222222222222222222222222222222222222
+2259 2222222222222222222222222222222222222222222222222222222
+2260 2222222222222222222222222222222222222222222222222222222
+2261 2222222222222222222222222222222222222222222222222222222
+2262 2222222222222222222222222222222222222222222222222222222
+2263 2222222222222222222222222222222222222222222222222222222
+2264 2222222222222222222222222222222222222222222222222222222
+2265 2222222222222222222222222222222222222222222222222222222
+2266 2222222222222222222222222222222222222222222222222222222
+2267 2222222222222222222222222222222222222222222222222222222
+2268 2222222222222222222222222222222222222222222222222222222
+2269 2222222222222222222222222222222222222222222222222222222
+2270 2222222222222222222222222222222222222222222222222222222
+2271 2222222222222222222222222222222222222222222222222222222
+2272 2222222222222222222222222222222222222222222222222222222
+2273 2222222222222222222222222222222222222222222222222222222
+2274 2222222222222222222222222222222222222222222222222222222
+2275 2222222222222222222222222222222222222222222222222222222
+2276 2222222222222222222222222222222222222222222222222222222
+2277 2222222222222222222222222222222222222222222222222222222
+2278 2222222222222222222222222222222222222222222222222222222
+2279 2222222222222222222222222222222222222222222222222222222
+2280 2222222222222222222222222222222222222222222222222222222
+2281 2222222222222222222222222222222222222222222222222222222
+2282 2222222222222222222222222222222222222222222222222222222
+2283 2222222222222222222222222222222222222222222222222222222
+2284 2222222222222222222222222222222222222222222222222222222
+2285 2222222222222222222222222222222222222222222222222222222
+2286 2222222222222222222222222222222222222222222222222222222
+2287 2222222222222222222222222222222222222222222222222222222
+2288 2222222222222222222222222222222222222222222222222222222
+2289 2222222222222222222222222222222222222222222222222222222
+2290 2222222222222222222222222222222222222222222222222222222
+2291 2222222222222222222222222222222222222222222222222222222
+2292 2222222222222222222222222222222222222222222222222222222
+2293 2222222222222222222222222222222222222222222222222222222
+2294 2222222222222222222222222222222222222222222222222222222
+2295 2222222222222222222222222222222222222222222222222222222
+2296 2222222222222222222222222222222222222222222222222222222
+2297 2222222222222222222222222222222222222222222222222222222
+2298 2222222222222222222222222222222222222222222222222222222
+2299 2222222222222222222222222222222222222222222222222222222
+2300 2222222222222222222222222222222222222222222222222222222
+2301 2222222222222222222222222222222222222222222222222222222
+2302 2222222222222222222222222222222222222222222222222222222
+2303 2222222222222222222222222222222222222222222222222222222
+2304 2222222222222222222222222222222222222222222222222222222
+2305 2222222222222222222222222222222222222222222222222222222
+2306 2222222222222222222222222222222222222222222222222222222
+2307 2222222222222222222222222222222222222222222222222222222
+2308 2222222222222222222222222222222222222222222222222222222
+2309 2222222222222222222222222222222222222222222222222222222
+2310 2222222222222222222222222222222222222222222222222222222
+2311 2222222222222222222222222222222222222222222222222222222
+2312 2222222222222222222222222222222222222222222222222222222
+2313 2222222222222222222222222222222222222222222222222222222
+2314 2222222222222222222222222222222222222222222222222222222
+2315 2222222222222222222222222222222222222222222222222222222
+2316 2222222222222222222222222222222222222222222222222222222
+2317 2222222222222222222222222222222222222222222222222222222
+2318 2222222222222222222222222222222222222222222222222222222
+2319 2222222222222222222222222222222222222222222222222222222
+2320 2222222222222222222222222222222222222222222222222222222
+2321 2222222222222222222222222222222222222222222222222222222
+2322 2222222222222222222222222222222222222222222222222222222
+2323 2222222222222222222222222222222222222222222222222222222
+2324 2222222222222222222222222222222222222222222222222222222
+2325 2222222222222222222222222222222222222222222222222222222
+2326 2222222222222222222222222222222222222222222222222222222
+2327 2222222222222222222222222222222222222222222222222222222
+2328 2222222222222222222222222222222222222222222222222222222
+2329 2222222222222222222222222222222222222222222222222222222
+2330 2222222222222222222222222222222222222222222222222222222
+2331 2222222222222222222222222222222222222222222222222222222
+2332 2222222222222222222222222222222222222222222222222222222
+2333 2222222222222222222222222222222222222222222222222222222
+2334 2222222222222222222222222222222222222222222222222222222
+2335 2222222222222222222222222222222222222222222222222222222
+2336 2222222222222222222222222222222222222222222222222222222
+2337 2222222222222222222222222222222222222222222222222222222
+2338 2222222222222222222222222222222222222222222222222222222
+2339 2222222222222222222222222222222222222222222222222222222
+2340 2222222222222222222222222222222222222222222222222222222
+2341 2222222222222222222222222222222222222222222222222222222
+2342 2222222222222222222222222222222222222222222222222222222
+2343 2222222222222222222222222222222222222222222222222222222
+2344 2222222222222222222222222222222222222222222222222222222
+2345 2222222222222222222222222222222222222222222222222222222
+2346 2222222222222222222222222222222222222222222222222222222
+2347 2222222222222222222222222222222222222222222222222222222
+2348 2222222222222222222222222222222222222222222222222222222
+2349 2222222222222222222222222222222222222222222222222222222
+2350 2222222222222222222222222222222222222222222222222222222
+2351 2222222222222222222222222222222222222222222222222222222
+2352 2222222222222222222222222222222222222222222222222222222
+2353 2222222222222222222222222222222222222222222222222222222
+2354 2222222222222222222222222222222222222222222222222222222
+2355 2222222222222222222222222222222222222222222222222222222
+2356 2222222222222222222222222222222222222222222222222222222
+2357 2222222222222222222222222222222222222222222222222222222
+2358 2222222222222222222222222222222222222222222222222222222
+2359 2222222222222222222222222222222222222222222222222222222
+2360 2222222222222222222222222222222222222222222222222222222
+2361 2222222222222222222222222222222222222222222222222222222
+2362 2222222222222222222222222222222222222222222222222222222
+2363 2222222222222222222222222222222222222222222222222222222
+2364 2222222222222222222222222222222222222222222222222222222
+2365 2222222222222222222222222222222222222222222222222222222
+2366 2222222222222222222222222222222222222222222222222222222
+2367 2222222222222222222222222222222222222222222222222222222
+2368 2222222222222222222222222222222222222222222222222222222
+2369 2222222222222222222222222222222222222222222222222222222
+2370 2222222222222222222222222222222222222222222222222222222
+2371 2222222222222222222222222222222222222222222222222222222
+2372 2222222222222222222222222222222222222222222222222222222
+2373 2222222222222222222222222222222222222222222222222222222
+2374 2222222222222222222222222222222222222222222222222222222
+2375 2222222222222222222222222222222222222222222222222222222
+2376 2222222222222222222222222222222222222222222222222222222
+2377 2222222222222222222222222222222222222222222222222222222
+2378 2222222222222222222222222222222222222222222222222222222
+2379 2222222222222222222222222222222222222222222222222222222
+2380 2222222222222222222222222222222222222222222222222222222
+2381 2222222222222222222222222222222222222222222222222222222
+2382 2222222222222222222222222222222222222222222222222222222
+2383 2222222222222222222222222222222222222222222222222222222
+2384 2222222222222222222222222222222222222222222222222222222
+2385 2222222222222222222222222222222222222222222222222222222
+2386 2222222222222222222222222222222222222222222222222222222
+2387 2222222222222222222222222222222222222222222222222222222
+2388 2222222222222222222222222222222222222222222222222222222
+2389 2222222222222222222222222222222222222222222222222222222
+2390 2222222222222222222222222222222222222222222222222222222
+2391 2222222222222222222222222222222222222222222222222222222
+2392 2222222222222222222222222222222222222222222222222222222
+2393 2222222222222222222222222222222222222222222222222222222
+2394 2222222222222222222222222222222222222222222222222222222
+2395 2222222222222222222222222222222222222222222222222222222
+2396 2222222222222222222222222222222222222222222222222222222
+2397 2222222222222222222222222222222222222222222222222222222
+2398 2222222222222222222222222222222222222222222222222222222
+2399 2222222222222222222222222222222222222222222222222222222
+2400 2222222222222222222222222222222222222222222222222222222
+2401 2222222222222222222222222222222222222222222222222222222
+2402 2222222222222222222222222222222222222222222222222222222
+2403 2222222222222222222222222222222222222222222222222222222
+2404 2222222222222222222222222222222222222222222222222222222
+2405 2222222222222222222222222222222222222222222222222222222
+2406 2222222222222222222222222222222222222222222222222222222
+2407 2222222222222222222222222222222222222222222222222222222
+2408 2222222222222222222222222222222222222222222222222222222
+2409 2222222222222222222222222222222222222222222222222222222
+2410 2222222222222222222222222222222222222222222222222222222
+2411 2222222222222222222222222222222222222222222222222222222
+2412 2222222222222222222222222222222222222222222222222222222
+2413 2222222222222222222222222222222222222222222222222222222
+2414 2222222222222222222222222222222222222222222222222222222
+2415 2222222222222222222222222222222222222222222222222222222
+2416 2222222222222222222222222222222222222222222222222222222
+2417 2222222222222222222222222222222222222222222222222222222
+2418 2222222222222222222222222222222222222222222222222222222
+2419 2222222222222222222222222222222222222222222222222222222
+2420 2222222222222222222222222222222222222222222222222222222
+2421 2222222222222222222222222222222222222222222222222222222
+2422 2222222222222222222222222222222222222222222222222222222
+2423 2222222222222222222222222222222222222222222222222222222
+2424 2222222222222222222222222222222222222222222222222222222
+2425 2222222222222222222222222222222222222222222222222222222
+2426 2222222222222222222222222222222222222222222222222222222
+2427 2222222222222222222222222222222222222222222222222222222
+2428 2222222222222222222222222222222222222222222222222222222
+2429 2222222222222222222222222222222222222222222222222222222
+2430 2222222222222222222222222222222222222222222222222222222
+2431 2222222222222222222222222222222222222222222222222222222
+2432 2222222222222222222222222222222222222222222222222222222
+2433 2222222222222222222222222222222222222222222222222222222
+2434 2222222222222222222222222222222222222222222222222222222
+2435 2222222222222222222222222222222222222222222222222222222
+2436 2222222222222222222222222222222222222222222222222222222
+2437 2222222222222222222222222222222222222222222222222222222
+2438 2222222222222222222222222222222222222222222222222222222
+2439 2222222222222222222222222222222222222222222222222222222
+2440 2222222222222222222222222222222222222222222222222222222
+2441 2222222222222222222222222222222222222222222222222222222
+2442 2222222222222222222222222222222222222222222222222222222
+2443 2222222222222222222222222222222222222222222222222222222
+2444 2222222222222222222222222222222222222222222222222222222
+2445 2222222222222222222222222222222222222222222222222222222
+2446 2222222222222222222222222222222222222222222222222222222
+2447 2222222222222222222222222222222222222222222222222222222
+2448 2222222222222222222222222222222222222222222222222222222
+2449 2222222222222222222222222222222222222222222222222222222
+2450 2222222222222222222222222222222222222222222222222222222
+2451 2222222222222222222222222222222222222222222222222222222
+2452 2222222222222222222222222222222222222222222222222222222
+2453 2222222222222222222222222222222222222222222222222222222
+2454 2222222222222222222222222222222222222222222222222222222
+2455 2222222222222222222222222222222222222222222222222222222
+2456 2222222222222222222222222222222222222222222222222222222
+2457 2222222222222222222222222222222222222222222222222222222
+2458 2222222222222222222222222222222222222222222222222222222
+2459 2222222222222222222222222222222222222222222222222222222
+2460 2222222222222222222222222222222222222222222222222222222
+2461 2222222222222222222222222222222222222222222222222222222
+2462 2222222222222222222222222222222222222222222222222222222
+2463 2222222222222222222222222222222222222222222222222222222
+2464 2222222222222222222222222222222222222222222222222222222
+2465 2222222222222222222222222222222222222222222222222222222
+2466 2222222222222222222222222222222222222222222222222222222
+2467 2222222222222222222222222222222222222222222222222222222
+2468 2222222222222222222222222222222222222222222222222222222
+2469 2222222222222222222222222222222222222222222222222222222
+2470 2222222222222222222222222222222222222222222222222222222
+2471 2222222222222222222222222222222222222222222222222222222
+2472 2222222222222222222222222222222222222222222222222222222
+2473 2222222222222222222222222222222222222222222222222222222
+2474 2222222222222222222222222222222222222222222222222222222
+2475 2222222222222222222222222222222222222222222222222222222
+2476 2222222222222222222222222222222222222222222222222222222
+2477 2222222222222222222222222222222222222222222222222222222
+2478 2222222222222222222222222222222222222222222222222222222
+2479 2222222222222222222222222222222222222222222222222222222
+2480 2222222222222222222222222222222222222222222222222222222
+2481 2222222222222222222222222222222222222222222222222222222
+2482 2222222222222222222222222222222222222222222222222222222
+2483 2222222222222222222222222222222222222222222222222222222
+2484 2222222222222222222222222222222222222222222222222222222
+2485 2222222222222222222222222222222222222222222222222222222
+2486 2222222222222222222222222222222222222222222222222222222
+2487 2222222222222222222222222222222222222222222222222222222
+2488 2222222222222222222222222222222222222222222222222222222
+2489 2222222222222222222222222222222222222222222222222222222
+2490 2222222222222222222222222222222222222222222222222222222
+2491 2222222222222222222222222222222222222222222222222222222
+2492 2222222222222222222222222222222222222222222222222222222
+2493 2222222222222222222222222222222222222222222222222222222
+2494 2222222222222222222222222222222222222222222222222222222
+2495 2222222222222222222222222222222222222222222222222222222
+2496 2222222222222222222222222222222222222222222222222222222
+2497 2222222222222222222222222222222222222222222222222222222
+2498 2222222222222222222222222222222222222222222222222222222
+2499 2222222222222222222222222222222222222222222222222222222
+2500 2222222222222222222222222222222222222222222222222222222
+2501 2222222222222222222222222222222222222222222222222222222
+2502 2222222222222222222222222222222222222222222222222222222
+2503 2222222222222222222222222222222222222222222222222222222
+2504 2222222222222222222222222222222222222222222222222222222
+2505 2222222222222222222222222222222222222222222222222222222
+2506 2222222222222222222222222222222222222222222222222222222
+2507 2222222222222222222222222222222222222222222222222222222
+2508 2222222222222222222222222222222222222222222222222222222
+2509 2222222222222222222222222222222222222222222222222222222
+2510 2222222222222222222222222222222222222222222222222222222
+2511 2222222222222222222222222222222222222222222222222222222
+2512 2222222222222222222222222222222222222222222222222222222
+2513 2222222222222222222222222222222222222222222222222222222
+2514 2222222222222222222222222222222222222222222222222222222
+2515 2222222222222222222222222222222222222222222222222222222
+2516 2222222222222222222222222222222222222222222222222222222
+2517 2222222222222222222222222222222222222222222222222222222
+2518 2222222222222222222222222222222222222222222222222222222
+2519 2222222222222222222222222222222222222222222222222222222
+2520 2222222222222222222222222222222222222222222222222222222
+2521 2222222222222222222222222222222222222222222222222222222
+2522 2222222222222222222222222222222222222222222222222222222
+2523 2222222222222222222222222222222222222222222222222222222
+2524 2222222222222222222222222222222222222222222222222222222
+2525 2222222222222222222222222222222222222222222222222222222
+2526 2222222222222222222222222222222222222222222222222222222
+2527 2222222222222222222222222222222222222222222222222222222
+2528 2222222222222222222222222222222222222222222222222222222
+2529 2222222222222222222222222222222222222222222222222222222
+2530 2222222222222222222222222222222222222222222222222222222
+2531 2222222222222222222222222222222222222222222222222222222
+2532 2222222222222222222222222222222222222222222222222222222
+2533 2222222222222222222222222222222222222222222222222222222
+2534 2222222222222222222222222222222222222222222222222222222
+2535 2222222222222222222222222222222222222222222222222222222
+2536 2222222222222222222222222222222222222222222222222222222
+2537 2222222222222222222222222222222222222222222222222222222
+2538 2222222222222222222222222222222222222222222222222222222
+2539 2222222222222222222222222222222222222222222222222222222
+2540 2222222222222222222222222222222222222222222222222222222
+2541 2222222222222222222222222222222222222222222222222222222
+2542 2222222222222222222222222222222222222222222222222222222
+2543 2222222222222222222222222222222222222222222222222222222
+2544 2222222222222222222222222222222222222222222222222222222
+2545 2222222222222222222222222222222222222222222222222222222
+2546 2222222222222222222222222222222222222222222222222222222
+2547 2222222222222222222222222222222222222222222222222222222
+2548 2222222222222222222222222222222222222222222222222222222
+2549 2222222222222222222222222222222222222222222222222222222
+2550 2222222222222222222222222222222222222222222222222222222
+2551 2222222222222222222222222222222222222222222222222222222
+2552 2222222222222222222222222222222222222222222222222222222
+2553 2222222222222222222222222222222222222222222222222222222
+2554 2222222222222222222222222222222222222222222222222222222
+2555 2222222222222222222222222222222222222222222222222222222
+2556 2222222222222222222222222222222222222222222222222222222
+2557 2222222222222222222222222222222222222222222222222222222
+2558 2222222222222222222222222222222222222222222222222222222
+2559 2222222222222222222222222222222222222222222222222222222
+2560 2222222222222222222222222222222222222222222222222222222
+2561 2222222222222222222222222222222222222222222222222222222
+2562 2222222222222222222222222222222222222222222222222222222
+2563 2222222222222222222222222222222222222222222222222222222
+2564 2222222222222222222222222222222222222222222222222222222
+2565 2222222222222222222222222222222222222222222222222222222
+2566 2222222222222222222222222222222222222222222222222222222
+2567 2222222222222222222222222222222222222222222222222222222
+2568 2222222222222222222222222222222222222222222222222222222
+2569 2222222222222222222222222222222222222222222222222222222
+2570 2222222222222222222222222222222222222222222222222222222
+2571 2222222222222222222222222222222222222222222222222222222
+2572 2222222222222222222222222222222222222222222222222222222
+2573 2222222222222222222222222222222222222222222222222222222
+2574 2222222222222222222222222222222222222222222222222222222
+2575 2222222222222222222222222222222222222222222222222222222
+2576 2222222222222222222222222222222222222222222222222222222
+2577 2222222222222222222222222222222222222222222222222222222
+2578 2222222222222222222222222222222222222222222222222222222
+2579 2222222222222222222222222222222222222222222222222222222
+2580 2222222222222222222222222222222222222222222222222222222
+2581 2222222222222222222222222222222222222222222222222222222
+2582 2222222222222222222222222222222222222222222222222222222
+2583 2222222222222222222222222222222222222222222222222222222
+2584 2222222222222222222222222222222222222222222222222222222
+2585 2222222222222222222222222222222222222222222222222222222
+2586 2222222222222222222222222222222222222222222222222222222
+2587 2222222222222222222222222222222222222222222222222222222
+2588 2222222222222222222222222222222222222222222222222222222
+2589 2222222222222222222222222222222222222222222222222222222
+2590 2222222222222222222222222222222222222222222222222222222
+2591 2222222222222222222222222222222222222222222222222222222
+2592 2222222222222222222222222222222222222222222222222222222
+2593 2222222222222222222222222222222222222222222222222222222
+2594 2222222222222222222222222222222222222222222222222222222
+2595 2222222222222222222222222222222222222222222222222222222
+2596 2222222222222222222222222222222222222222222222222222222
+2597 2222222222222222222222222222222222222222222222222222222
+2598 2222222222222222222222222222222222222222222222222222222
+2599 2222222222222222222222222222222222222222222222222222222
+2600 2222222222222222222222222222222222222222222222222222222
+2601 2222222222222222222222222222222222222222222222222222222
+2602 2222222222222222222222222222222222222222222222222222222
+2603 2222222222222222222222222222222222222222222222222222222
+2604 2222222222222222222222222222222222222222222222222222222
+2605 2222222222222222222222222222222222222222222222222222222
+2606 2222222222222222222222222222222222222222222222222222222
+2607 2222222222222222222222222222222222222222222222222222222
+2608 2222222222222222222222222222222222222222222222222222222
+2609 2222222222222222222222222222222222222222222222222222222
+2610 2222222222222222222222222222222222222222222222222222222
+2611 2222222222222222222222222222222222222222222222222222222
+2612 2222222222222222222222222222222222222222222222222222222
+2613 2222222222222222222222222222222222222222222222222222222
+2614 2222222222222222222222222222222222222222222222222222222
+2615 2222222222222222222222222222222222222222222222222222222
+2616 2222222222222222222222222222222222222222222222222222222
+2617 2222222222222222222222222222222222222222222222222222222
+2618 2222222222222222222222222222222222222222222222222222222
+2619 2222222222222222222222222222222222222222222222222222222
+2620 2222222222222222222222222222222222222222222222222222222
+2621 2222222222222222222222222222222222222222222222222222222
+2622 2222222222222222222222222222222222222222222222222222222
+2623 2222222222222222222222222222222222222222222222222222222
+2624 2222222222222222222222222222222222222222222222222222222
+2625 2222222222222222222222222222222222222222222222222222222
+2626 2222222222222222222222222222222222222222222222222222222
+2627 2222222222222222222222222222222222222222222222222222222
+2628 2222222222222222222222222222222222222222222222222222222
+2629 2222222222222222222222222222222222222222222222222222222
+2630 2222222222222222222222222222222222222222222222222222222
+2631 2222222222222222222222222222222222222222222222222222222
+2632 2222222222222222222222222222222222222222222222222222222
+2633 2222222222222222222222222222222222222222222222222222222
+2634 2222222222222222222222222222222222222222222222222222222
+2635 2222222222222222222222222222222222222222222222222222222
+2636 2222222222222222222222222222222222222222222222222222222
+2637 2222222222222222222222222222222222222222222222222222222
+2638 2222222222222222222222222222222222222222222222222222222
+2639 2222222222222222222222222222222222222222222222222222222
+2640 2222222222222222222222222222222222222222222222222222222
+2641 2222222222222222222222222222222222222222222222222222222
+2642 2222222222222222222222222222222222222222222222222222222
+2643 2222222222222222222222222222222222222222222222222222222
+2644 2222222222222222222222222222222222222222222222222222222
+2645 2222222222222222222222222222222222222222222222222222222
+2646 2222222222222222222222222222222222222222222222222222222
+2647 2222222222222222222222222222222222222222222222222222222
+2648 2222222222222222222222222222222222222222222222222222222
+2649 2222222222222222222222222222222222222222222222222222222
+2650 2222222222222222222222222222222222222222222222222222222
+2651 2222222222222222222222222222222222222222222222222222222
+2652 2222222222222222222222222222222222222222222222222222222
+2653 2222222222222222222222222222222222222222222222222222222
+2654 2222222222222222222222222222222222222222222222222222222
+2655 2222222222222222222222222222222222222222222222222222222
+2656 2222222222222222222222222222222222222222222222222222222
+2657 2222222222222222222222222222222222222222222222222222222
+2658 2222222222222222222222222222222222222222222222222222222
+2659 2222222222222222222222222222222222222222222222222222222
+2660 2222222222222222222222222222222222222222222222222222222
+2661 2222222222222222222222222222222222222222222222222222222
+2662 2222222222222222222222222222222222222222222222222222222
+2663 2222222222222222222222222222222222222222222222222222222
+2664 2222222222222222222222222222222222222222222222222222222
+2665 2222222222222222222222222222222222222222222222222222222
+2666 2222222222222222222222222222222222222222222222222222222
+2667 2222222222222222222222222222222222222222222222222222222
+2668 2222222222222222222222222222222222222222222222222222222
+2669 2222222222222222222222222222222222222222222222222222222
+2670 2222222222222222222222222222222222222222222222222222222
+2671 2222222222222222222222222222222222222222222222222222222
+2672 2222222222222222222222222222222222222222222222222222222
+2673 2222222222222222222222222222222222222222222222222222222
+2674 2222222222222222222222222222222222222222222222222222222
+2675 2222222222222222222222222222222222222222222222222222222
+2676 2222222222222222222222222222222222222222222222222222222
+2677 2222222222222222222222222222222222222222222222222222222
+2678 2222222222222222222222222222222222222222222222222222222
+2679 2222222222222222222222222222222222222222222222222222222
+2680 2222222222222222222222222222222222222222222222222222222
+2681 2222222222222222222222222222222222222222222222222222222
+2682 2222222222222222222222222222222222222222222222222222222
+2683 2222222222222222222222222222222222222222222222222222222
+2684 2222222222222222222222222222222222222222222222222222222
+2685 2222222222222222222222222222222222222222222222222222222
+2686 2222222222222222222222222222222222222222222222222222222
+2687 2222222222222222222222222222222222222222222222222222222
+2688 2222222222222222222222222222222222222222222222222222222
+2689 2222222222222222222222222222222222222222222222222222222
+2690 2222222222222222222222222222222222222222222222222222222
+2691 2222222222222222222222222222222222222222222222222222222
+2692 2222222222222222222222222222222222222222222222222222222
+2693 2222222222222222222222222222222222222222222222222222222
+2694 2222222222222222222222222222222222222222222222222222222
+2695 2222222222222222222222222222222222222222222222222222222
+2696 2222222222222222222222222222222222222222222222222222222
+2697 2222222222222222222222222222222222222222222222222222222
+2698 2222222222222222222222222222222222222222222222222222222
+2699 2222222222222222222222222222222222222222222222222222222
+2700 2222222222222222222222222222222222222222222222222222222
+2701 2222222222222222222222222222222222222222222222222222222
+2702 2222222222222222222222222222222222222222222222222222222
+2703 2222222222222222222222222222222222222222222222222222222
+2704 2222222222222222222222222222222222222222222222222222222
+2705 2222222222222222222222222222222222222222222222222222222
+2706 2222222222222222222222222222222222222222222222222222222
+2707 2222222222222222222222222222222222222222222222222222222
+2708 2222222222222222222222222222222222222222222222222222222
+2709 2222222222222222222222222222222222222222222222222222222
+2710 2222222222222222222222222222222222222222222222222222222
+2711 2222222222222222222222222222222222222222222222222222222
+2712 2222222222222222222222222222222222222222222222222222222
+2713 2222222222222222222222222222222222222222222222222222222
+2714 2222222222222222222222222222222222222222222222222222222
+2715 2222222222222222222222222222222222222222222222222222222
+2716 2222222222222222222222222222222222222222222222222222222
+2717 2222222222222222222222222222222222222222222222222222222
+2718 2222222222222222222222222222222222222222222222222222222
+2719 2222222222222222222222222222222222222222222222222222222
+2720 2222222222222222222222222222222222222222222222222222222
+2721 2222222222222222222222222222222222222222222222222222222
+2722 2222222222222222222222222222222222222222222222222222222
+2723 2222222222222222222222222222222222222222222222222222222
+2724 2222222222222222222222222222222222222222222222222222222
+2725 2222222222222222222222222222222222222222222222222222222
+2726 2222222222222222222222222222222222222222222222222222222
+2727 2222222222222222222222222222222222222222222222222222222
+2728 2222222222222222222222222222222222222222222222222222222
+2729 2222222222222222222222222222222222222222222222222222222
+2730 2222222222222222222222222222222222222222222222222222222
+2731 2222222222222222222222222222222222222222222222222222222
+2732 2222222222222222222222222222222222222222222222222222222
+2733 2222222222222222222222222222222222222222222222222222222
+2734 2222222222222222222222222222222222222222222222222222222
+2735 2222222222222222222222222222222222222222222222222222222
+2736 2222222222222222222222222222222222222222222222222222222
+2737 2222222222222222222222222222222222222222222222222222222
+2738 2222222222222222222222222222222222222222222222222222222
+2739 2222222222222222222222222222222222222222222222222222222
+2740 2222222222222222222222222222222222222222222222222222222
+2741 2222222222222222222222222222222222222222222222222222222
+2742 2222222222222222222222222222222222222222222222222222222
+2743 2222222222222222222222222222222222222222222222222222222
+2744 2222222222222222222222222222222222222222222222222222222
+2745 2222222222222222222222222222222222222222222222222222222
+2746 2222222222222222222222222222222222222222222222222222222
+2747 2222222222222222222222222222222222222222222222222222222
+2748 2222222222222222222222222222222222222222222222222222222
+2749 2222222222222222222222222222222222222222222222222222222
+2750 2222222222222222222222222222222222222222222222222222222
+2751 2222222222222222222222222222222222222222222222222222222
+2752 2222222222222222222222222222222222222222222222222222222
+2753 2222222222222222222222222222222222222222222222222222222
+2754 2222222222222222222222222222222222222222222222222222222
+2755 2222222222222222222222222222222222222222222222222222222
+2756 2222222222222222222222222222222222222222222222222222222
+2757 2222222222222222222222222222222222222222222222222222222
+2758 2222222222222222222222222222222222222222222222222222222
+2759 2222222222222222222222222222222222222222222222222222222
+2760 2222222222222222222222222222222222222222222222222222222
+2761 2222222222222222222222222222222222222222222222222222222
+2762 2222222222222222222222222222222222222222222222222222222
+2763 2222222222222222222222222222222222222222222222222222222
+2764 2222222222222222222222222222222222222222222222222222222
+2765 2222222222222222222222222222222222222222222222222222222
+2766 2222222222222222222222222222222222222222222222222222222
+2767 2222222222222222222222222222222222222222222222222222222
+2768 2222222222222222222222222222222222222222222222222222222
+2769 2222222222222222222222222222222222222222222222222222222
+2770 2222222222222222222222222222222222222222222222222222222
+2771 2222222222222222222222222222222222222222222222222222222
+2772 2222222222222222222222222222222222222222222222222222222
+2773 2222222222222222222222222222222222222222222222222222222
+2774 2222222222222222222222222222222222222222222222222222222
+2775 2222222222222222222222222222222222222222222222222222222
+2776 2222222222222222222222222222222222222222222222222222222
+2777 2222222222222222222222222222222222222222222222222222222
+2778 2222222222222222222222222222222222222222222222222222222
+2779 2222222222222222222222222222222222222222222222222222222
+2780 2222222222222222222222222222222222222222222222222222222
+2781 2222222222222222222222222222222222222222222222222222222
+2782 2222222222222222222222222222222222222222222222222222222
+2783 2222222222222222222222222222222222222222222222222222222
+2784 2222222222222222222222222222222222222222222222222222222
+2785 2222222222222222222222222222222222222222222222222222222
+2786 2222222222222222222222222222222222222222222222222222222
+2787 2222222222222222222222222222222222222222222222222222222
+2788 2222222222222222222222222222222222222222222222222222222
+2789 2222222222222222222222222222222222222222222222222222222
+2790 2222222222222222222222222222222222222222222222222222222
+2791 2222222222222222222222222222222222222222222222222222222
+2792 2222222222222222222222222222222222222222222222222222222
+2793 2222222222222222222222222222222222222222222222222222222
+2794 2222222222222222222222222222222222222222222222222222222
+2795 2222222222222222222222222222222222222222222222222222222
+2796 2222222222222222222222222222222222222222222222222222222
+2797 2222222222222222222222222222222222222222222222222222222
+2798 2222222222222222222222222222222222222222222222222222222
+2799 2222222222222222222222222222222222222222222222222222222
+2800 2222222222222222222222222222222222222222222222222222222
+2801 2222222222222222222222222222222222222222222222222222222
+2802 2222222222222222222222222222222222222222222222222222222
+2803 2222222222222222222222222222222222222222222222222222222
+2804 2222222222222222222222222222222222222222222222222222222
+2805 2222222222222222222222222222222222222222222222222222222
+2806 2222222222222222222222222222222222222222222222222222222
+2807 2222222222222222222222222222222222222222222222222222222
+2808 2222222222222222222222222222222222222222222222222222222
+2809 2222222222222222222222222222222222222222222222222222222
+2810 2222222222222222222222222222222222222222222222222222222
+2811 2222222222222222222222222222222222222222222222222222222
+2812 2222222222222222222222222222222222222222222222222222222
+2813 2222222222222222222222222222222222222222222222222222222
+2814 2222222222222222222222222222222222222222222222222222222
+2815 2222222222222222222222222222222222222222222222222222222
+2816 2222222222222222222222222222222222222222222222222222222
+2817 2222222222222222222222222222222222222222222222222222222
+2818 2222222222222222222222222222222222222222222222222222222
+2819 2222222222222222222222222222222222222222222222222222222
+2820 2222222222222222222222222222222222222222222222222222222
+2821 2222222222222222222222222222222222222222222222222222222
+2822 2222222222222222222222222222222222222222222222222222222
+2823 2222222222222222222222222222222222222222222222222222222
+2824 2222222222222222222222222222222222222222222222222222222
+2825 2222222222222222222222222222222222222222222222222222222
+2826 2222222222222222222222222222222222222222222222222222222
+2827 2222222222222222222222222222222222222222222222222222222
+2828 2222222222222222222222222222222222222222222222222222222
+2829 2222222222222222222222222222222222222222222222222222222
+2830 2222222222222222222222222222222222222222222222222222222
+2831 2222222222222222222222222222222222222222222222222222222
+2832 2222222222222222222222222222222222222222222222222222222
+2833 2222222222222222222222222222222222222222222222222222222
+2834 2222222222222222222222222222222222222222222222222222222
+2835 2222222222222222222222222222222222222222222222222222222
+2836 2222222222222222222222222222222222222222222222222222222
+2837 2222222222222222222222222222222222222222222222222222222
+2838 2222222222222222222222222222222222222222222222222222222
+2839 2222222222222222222222222222222222222222222222222222222
+2840 2222222222222222222222222222222222222222222222222222222
+2841 2222222222222222222222222222222222222222222222222222222
+2842 2222222222222222222222222222222222222222222222222222222
+2843 2222222222222222222222222222222222222222222222222222222
+2844 2222222222222222222222222222222222222222222222222222222
+2845 2222222222222222222222222222222222222222222222222222222
+2846 2222222222222222222222222222222222222222222222222222222
+2847 2222222222222222222222222222222222222222222222222222222
+2848 2222222222222222222222222222222222222222222222222222222
+2849 2222222222222222222222222222222222222222222222222222222
+2850 2222222222222222222222222222222222222222222222222222222
+2851 2222222222222222222222222222222222222222222222222222222
+2852 2222222222222222222222222222222222222222222222222222222
+2853 2222222222222222222222222222222222222222222222222222222
+2854 2222222222222222222222222222222222222222222222222222222
+2855 2222222222222222222222222222222222222222222222222222222
+2856 2222222222222222222222222222222222222222222222222222222
+2857 2222222222222222222222222222222222222222222222222222222
+2858 2222222222222222222222222222222222222222222222222222222
+2859 2222222222222222222222222222222222222222222222222222222
+2860 2222222222222222222222222222222222222222222222222222222
+2861 2222222222222222222222222222222222222222222222222222222
+2862 2222222222222222222222222222222222222222222222222222222
+2863 2222222222222222222222222222222222222222222222222222222
+2864 2222222222222222222222222222222222222222222222222222222
+2865 2222222222222222222222222222222222222222222222222222222
+2866 2222222222222222222222222222222222222222222222222222222
+2867 2222222222222222222222222222222222222222222222222222222
+2868 2222222222222222222222222222222222222222222222222222222
+2869 2222222222222222222222222222222222222222222222222222222
+2870 2222222222222222222222222222222222222222222222222222222
+2871 2222222222222222222222222222222222222222222222222222222
+2872 2222222222222222222222222222222222222222222222222222222
+2873 2222222222222222222222222222222222222222222222222222222
+2874 2222222222222222222222222222222222222222222222222222222
+2875 2222222222222222222222222222222222222222222222222222222
+2876 2222222222222222222222222222222222222222222222222222222
+2877 2222222222222222222222222222222222222222222222222222222
+2878 2222222222222222222222222222222222222222222222222222222
+2879 2222222222222222222222222222222222222222222222222222222
+2880 2222222222222222222222222222222222222222222222222222222
+2881 2222222222222222222222222222222222222222222222222222222
+2882 2222222222222222222222222222222222222222222222222222222
+2883 2222222222222222222222222222222222222222222222222222222
+2884 2222222222222222222222222222222222222222222222222222222
+2885 2222222222222222222222222222222222222222222222222222222
+2886 2222222222222222222222222222222222222222222222222222222
+2887 2222222222222222222222222222222222222222222222222222222
+2888 2222222222222222222222222222222222222222222222222222222
+2889 2222222222222222222222222222222222222222222222222222222
+2890 2222222222222222222222222222222222222222222222222222222
+2891 2222222222222222222222222222222222222222222222222222222
+2892 2222222222222222222222222222222222222222222222222222222
+2893 2222222222222222222222222222222222222222222222222222222
+2894 2222222222222222222222222222222222222222222222222222222
+2895 2222222222222222222222222222222222222222222222222222222
+2896 2222222222222222222222222222222222222222222222222222222
+2897 2222222222222222222222222222222222222222222222222222222
+2898 2222222222222222222222222222222222222222222222222222222
+2899 2222222222222222222222222222222222222222222222222222222
+2900 2222222222222222222222222222222222222222222222222222222
+2901 2222222222222222222222222222222222222222222222222222222
+2902 2222222222222222222222222222222222222222222222222222222
+2903 2222222222222222222222222222222222222222222222222222222
+2904 2222222222222222222222222222222222222222222222222222222
+2905 2222222222222222222222222222222222222222222222222222222
+2906 2222222222222222222222222222222222222222222222222222222
+2907 2222222222222222222222222222222222222222222222222222222
+2908 2222222222222222222222222222222222222222222222222222222
+2909 2222222222222222222222222222222222222222222222222222222
+2910 2222222222222222222222222222222222222222222222222222222
+2911 2222222222222222222222222222222222222222222222222222222
+2912 2222222222222222222222222222222222222222222222222222222
+2913 2222222222222222222222222222222222222222222222222222222
+2914 2222222222222222222222222222222222222222222222222222222
+2915 2222222222222222222222222222222222222222222222222222222
+2916 2222222222222222222222222222222222222222222222222222222
+2917 2222222222222222222222222222222222222222222222222222222
+2918 2222222222222222222222222222222222222222222222222222222
+2919 2222222222222222222222222222222222222222222222222222222
+2920 2222222222222222222222222222222222222222222222222222222
+2921 2222222222222222222222222222222222222222222222222222222
+2922 2222222222222222222222222222222222222222222222222222222
+2923 2222222222222222222222222222222222222222222222222222222
+2924 2222222222222222222222222222222222222222222222222222222
+2925 2222222222222222222222222222222222222222222222222222222
+2926 2222222222222222222222222222222222222222222222222222222
+2927 2222222222222222222222222222222222222222222222222222222
+2928 2222222222222222222222222222222222222222222222222222222
+2929 2222222222222222222222222222222222222222222222222222222
+2930 2222222222222222222222222222222222222222222222222222222
+2931 2222222222222222222222222222222222222222222222222222222
+2932 2222222222222222222222222222222222222222222222222222222
+2933 2222222222222222222222222222222222222222222222222222222
+2934 2222222222222222222222222222222222222222222222222222222
+2935 2222222222222222222222222222222222222222222222222222222
+2936 2222222222222222222222222222222222222222222222222222222
+2937 2222222222222222222222222222222222222222222222222222222
+2938 2222222222222222222222222222222222222222222222222222222
+2939 2222222222222222222222222222222222222222222222222222222
+2940 2222222222222222222222222222222222222222222222222222222
+2941 2222222222222222222222222222222222222222222222222222222
+2942 2222222222222222222222222222222222222222222222222222222
+2943 2222222222222222222222222222222222222222222222222222222
+2944 2222222222222222222222222222222222222222222222222222222
+2945 2222222222222222222222222222222222222222222222222222222
+2946 2222222222222222222222222222222222222222222222222222222
+2947 2222222222222222222222222222222222222222222222222222222
+2948 2222222222222222222222222222222222222222222222222222222
+2949 2222222222222222222222222222222222222222222222222222222
+2950 2222222222222222222222222222222222222222222222222222222
+2951 2222222222222222222222222222222222222222222222222222222
+2952 2222222222222222222222222222222222222222222222222222222
+2953 2222222222222222222222222222222222222222222222222222222
+2954 2222222222222222222222222222222222222222222222222222222
+2955 2222222222222222222222222222222222222222222222222222222
+2956 2222222222222222222222222222222222222222222222222222222
+2957 2222222222222222222222222222222222222222222222222222222
+2958 2222222222222222222222222222222222222222222222222222222
+2959 2222222222222222222222222222222222222222222222222222222
+2960 2222222222222222222222222222222222222222222222222222222
+2961 2222222222222222222222222222222222222222222222222222222
+2962 2222222222222222222222222222222222222222222222222222222
+2963 2222222222222222222222222222222222222222222222222222222
+2964 2222222222222222222222222222222222222222222222222222222
+2965 2222222222222222222222222222222222222222222222222222222
+2966 2222222222222222222222222222222222222222222222222222222
+2967 2222222222222222222222222222222222222222222222222222222
+2968 2222222222222222222222222222222222222222222222222222222
+2969 2222222222222222222222222222222222222222222222222222222
+2970 2222222222222222222222222222222222222222222222222222222
+2971 2222222222222222222222222222222222222222222222222222222
+2972 2222222222222222222222222222222222222222222222222222222
+2973 2222222222222222222222222222222222222222222222222222222
+2974 2222222222222222222222222222222222222222222222222222222
+2975 2222222222222222222222222222222222222222222222222222222
+2976 2222222222222222222222222222222222222222222222222222222
+2977 2222222222222222222222222222222222222222222222222222222
+2978 2222222222222222222222222222222222222222222222222222222
+2979 2222222222222222222222222222222222222222222222222222222
+2980 2222222222222222222222222222222222222222222222222222222
+2981 2222222222222222222222222222222222222222222222222222222
+2982 2222222222222222222222222222222222222222222222222222222
+2983 2222222222222222222222222222222222222222222222222222222
+2984 2222222222222222222222222222222222222222222222222222222
+2985 2222222222222222222222222222222222222222222222222222222
+2986 2222222222222222222222222222222222222222222222222222222
+2987 2222222222222222222222222222222222222222222222222222222
+2988 2222222222222222222222222222222222222222222222222222222
+2989 2222222222222222222222222222222222222222222222222222222
+2990 2222222222222222222222222222222222222222222222222222222
+2991 2222222222222222222222222222222222222222222222222222222
+2992 2222222222222222222222222222222222222222222222222222222
+2993 2222222222222222222222222222222222222222222222222222222
+2994 2222222222222222222222222222222222222222222222222222222
+2995 2222222222222222222222222222222222222222222222222222222
+2996 2222222222222222222222222222222222222222222222222222222
+2997 2222222222222222222222222222222222222222222222222222222
+2998 2222222222222222222222222222222222222222222222222222222
+2999 2222222222222222222222222222222222222222222222222222222
+3000 2222222222222222222222222222222222222222222222222222222
+3001 2222222222222222222222222222222222222222222222222222222
+3002 2222222222222222222222222222222222222222222222222222222
+3003 2222222222222222222222222222222222222222222222222222222
+3004 2222222222222222222222222222222222222222222222222222222
+3005 2222222222222222222222222222222222222222222222222222222
+3006 2222222222222222222222222222222222222222222222222222222
+3007 2222222222222222222222222222222222222222222222222222222
+3008 2222222222222222222222222222222222222222222222222222222
+3009 2222222222222222222222222222222222222222222222222222222
+3010 2222222222222222222222222222222222222222222222222222222
+3011 2222222222222222222222222222222222222222222222222222222
+3012 2222222222222222222222222222222222222222222222222222222
+3013 2222222222222222222222222222222222222222222222222222222
+3014 2222222222222222222222222222222222222222222222222222222
+3015 2222222222222222222222222222222222222222222222222222222
+3016 2222222222222222222222222222222222222222222222222222222
+3017 2222222222222222222222222222222222222222222222222222222
+3018 2222222222222222222222222222222222222222222222222222222
+3019 2222222222222222222222222222222222222222222222222222222
+3020 2222222222222222222222222222222222222222222222222222222
+3021 2222222222222222222222222222222222222222222222222222222
+3022 2222222222222222222222222222222222222222222222222222222
+3023 2222222222222222222222222222222222222222222222222222222
+3024 2222222222222222222222222222222222222222222222222222222
+3025 2222222222222222222222222222222222222222222222222222222
+3026 2222222222222222222222222222222222222222222222222222222
+3027 2222222222222222222222222222222222222222222222222222222
+3028 2222222222222222222222222222222222222222222222222222222
+3029 2222222222222222222222222222222222222222222222222222222
+3030 2222222222222222222222222222222222222222222222222222222
+3031 2222222222222222222222222222222222222222222222222222222
+3032 2222222222222222222222222222222222222222222222222222222
+3033 2222222222222222222222222222222222222222222222222222222
+3034 2222222222222222222222222222222222222222222222222222222
+3035 2222222222222222222222222222222222222222222222222222222
+3036 2222222222222222222222222222222222222222222222222222222
+3037 2222222222222222222222222222222222222222222222222222222
+3038 2222222222222222222222222222222222222222222222222222222
+3039 2222222222222222222222222222222222222222222222222222222
+3040 2222222222222222222222222222222222222222222222222222222
+3041 2222222222222222222222222222222222222222222222222222222
+3042 2222222222222222222222222222222222222222222222222222222
+3043 2222222222222222222222222222222222222222222222222222222
+3044 2222222222222222222222222222222222222222222222222222222
+3045 2222222222222222222222222222222222222222222222222222222
+3046 2222222222222222222222222222222222222222222222222222222
+3047 2222222222222222222222222222222222222222222222222222222
+3048 2222222222222222222222222222222222222222222222222222222
+3049 2222222222222222222222222222222222222222222222222222222
+3050 2222222222222222222222222222222222222222222222222222222
+3051 2222222222222222222222222222222222222222222222222222222
+3052 2222222222222222222222222222222222222222222222222222222
+3053 2222222222222222222222222222222222222222222222222222222
+3054 2222222222222222222222222222222222222222222222222222222
+3055 2222222222222222222222222222222222222222222222222222222
+3056 2222222222222222222222222222222222222222222222222222222
+3057 2222222222222222222222222222222222222222222222222222222
+3058 2222222222222222222222222222222222222222222222222222222
+3059 2222222222222222222222222222222222222222222222222222222
+3060 2222222222222222222222222222222222222222222222222222222
+3061 2222222222222222222222222222222222222222222222222222222
+3062 2222222222222222222222222222222222222222222222222222222
+3063 2222222222222222222222222222222222222222222222222222222
+3064 2222222222222222222222222222222222222222222222222222222
+3065 2222222222222222222222222222222222222222222222222222222
+3066 2222222222222222222222222222222222222222222222222222222
+3067 2222222222222222222222222222222222222222222222222222222
+3068 2222222222222222222222222222222222222222222222222222222
+3069 2222222222222222222222222222222222222222222222222222222
+3070 2222222222222222222222222222222222222222222222222222222
+3071 2222222222222222222222222222222222222222222222222222222
+3072 2222222222222222222222222222222222222222222222222222222
+3073 2222222222222222222222222222222222222222222222222222222
+3074 2222222222222222222222222222222222222222222222222222222
+3075 2222222222222222222222222222222222222222222222222222222
+3076 2222222222222222222222222222222222222222222222222222222
+3077 2222222222222222222222222222222222222222222222222222222
+3078 2222222222222222222222222222222222222222222222222222222
+3079 2222222222222222222222222222222222222222222222222222222
+3080 2222222222222222222222222222222222222222222222222222222
+3081 2222222222222222222222222222222222222222222222222222222
+3082 2222222222222222222222222222222222222222222222222222222
+3083 2222222222222222222222222222222222222222222222222222222
+3084 2222222222222222222222222222222222222222222222222222222
+3085 2222222222222222222222222222222222222222222222222222222
+3086 2222222222222222222222222222222222222222222222222222222
+3087 2222222222222222222222222222222222222222222222222222222
+3088 2222222222222222222222222222222222222222222222222222222
+3089 2222222222222222222222222222222222222222222222222222222
+3090 2222222222222222222222222222222222222222222222222222222
+3091 2222222222222222222222222222222222222222222222222222222
+3092 2222222222222222222222222222222222222222222222222222222
+3093 2222222222222222222222222222222222222222222222222222222
+3094 2222222222222222222222222222222222222222222222222222222
+3095 2222222222222222222222222222222222222222222222222222222
+3096 2222222222222222222222222222222222222222222222222222222
+3097 2222222222222222222222222222222222222222222222222222222
+3098 2222222222222222222222222222222222222222222222222222222
+3099 2222222222222222222222222222222222222222222222222222222
+3100 2222222222222222222222222222222222222222222222222222222
+3101 2222222222222222222222222222222222222222222222222222222
+3102 2222222222222222222222222222222222222222222222222222222
+3103 2222222222222222222222222222222222222222222222222222222
+3104 2222222222222222222222222222222222222222222222222222222
+3105 2222222222222222222222222222222222222222222222222222222
+3106 2222222222222222222222222222222222222222222222222222222
+3107 2222222222222222222222222222222222222222222222222222222
+3108 2222222222222222222222222222222222222222222222222222222
+3109 2222222222222222222222222222222222222222222222222222222
+3110 2222222222222222222222222222222222222222222222222222222
+3111 2222222222222222222222222222222222222222222222222222222
+3112 2222222222222222222222222222222222222222222222222222222
+3113 2222222222222222222222222222222222222222222222222222222
+3114 2222222222222222222222222222222222222222222222222222222
+3115 2222222222222222222222222222222222222222222222222222222
+3116 2222222222222222222222222222222222222222222222222222222
+3117 2222222222222222222222222222222222222222222222222222222
+3118 2222222222222222222222222222222222222222222222222222222
+3119 2222222222222222222222222222222222222222222222222222222
+3120 2222222222222222222222222222222222222222222222222222222
+3121 2222222222222222222222222222222222222222222222222222222
+3122 2222222222222222222222222222222222222222222222222222222
+3123 2222222222222222222222222222222222222222222222222222222
+3124 2222222222222222222222222222222222222222222222222222222
+3125 2222222222222222222222222222222222222222222222222222222
+3126 2222222222222222222222222222222222222222222222222222222
+3127 2222222222222222222222222222222222222222222222222222222
+3128 2222222222222222222222222222222222222222222222222222222
+3129 2222222222222222222222222222222222222222222222222222222
+3130 2222222222222222222222222222222222222222222222222222222
+3131 2222222222222222222222222222222222222222222222222222222
+3132 2222222222222222222222222222222222222222222222222222222
+3133 2222222222222222222222222222222222222222222222222222222
+3134 2222222222222222222222222222222222222222222222222222222
+3135 2222222222222222222222222222222222222222222222222222222
+3136 2222222222222222222222222222222222222222222222222222222
+3137 2222222222222222222222222222222222222222222222222222222
+3138 2222222222222222222222222222222222222222222222222222222
+3139 2222222222222222222222222222222222222222222222222222222
+3140 2222222222222222222222222222222222222222222222222222222
+3141 2222222222222222222222222222222222222222222222222222222
+3142 2222222222222222222222222222222222222222222222222222222
+3143 2222222222222222222222222222222222222222222222222222222
+3144 2222222222222222222222222222222222222222222222222222222
+3145 2222222222222222222222222222222222222222222222222222222
+3146 2222222222222222222222222222222222222222222222222222222
+3147 2222222222222222222222222222222222222222222222222222222
+3148 2222222222222222222222222222222222222222222222222222222
+3149 2222222222222222222222222222222222222222222222222222222
+3150 2222222222222222222222222222222222222222222222222222222
+3151 2222222222222222222222222222222222222222222222222222222
+3152 2222222222222222222222222222222222222222222222222222222
+3153 2222222222222222222222222222222222222222222222222222222
+3154 2222222222222222222222222222222222222222222222222222222
+3155 2222222222222222222222222222222222222222222222222222222
+3156 2222222222222222222222222222222222222222222222222222222
+3157 2222222222222222222222222222222222222222222222222222222
+3158 2222222222222222222222222222222222222222222222222222222
+3159 2222222222222222222222222222222222222222222222222222222
+3160 2222222222222222222222222222222222222222222222222222222
+3161 2222222222222222222222222222222222222222222222222222222
+3162 2222222222222222222222222222222222222222222222222222222
+3163 2222222222222222222222222222222222222222222222222222222
+3164 2222222222222222222222222222222222222222222222222222222
+3165 2222222222222222222222222222222222222222222222222222222
+3166 2222222222222222222222222222222222222222222222222222222
+3167 2222222222222222222222222222222222222222222222222222222
+3168 2222222222222222222222222222222222222222222222222222222
+3169 2222222222222222222222222222222222222222222222222222222
+3170 2222222222222222222222222222222222222222222222222222222
+3171 2222222222222222222222222222222222222222222222222222222
+3172 2222222222222222222222222222222222222222222222222222222
+3173 2222222222222222222222222222222222222222222222222222222
+3174 2222222222222222222222222222222222222222222222222222222
+3175 2222222222222222222222222222222222222222222222222222222
+3176 2222222222222222222222222222222222222222222222222222222
+3177 2222222222222222222222222222222222222222222222222222222
+3178 2222222222222222222222222222222222222222222222222222222
+3179 2222222222222222222222222222222222222222222222222222222
+3180 2222222222222222222222222222222222222222222222222222222
+3181 2222222222222222222222222222222222222222222222222222222
+3182 2222222222222222222222222222222222222222222222222222222
+3183 2222222222222222222222222222222222222222222222222222222
+3184 2222222222222222222222222222222222222222222222222222222
+3185 2222222222222222222222222222222222222222222222222222222
+3186 2222222222222222222222222222222222222222222222222222222
+3187 2222222222222222222222222222222222222222222222222222222
+3188 2222222222222222222222222222222222222222222222222222222
+3189 2222222222222222222222222222222222222222222222222222222
+3190 2222222222222222222222222222222222222222222222222222222
+3191 2222222222222222222222222222222222222222222222222222222
+3192 2222222222222222222222222222222222222222222222222222222
+3193 2222222222222222222222222222222222222222222222222222222
+3194 2222222222222222222222222222222222222222222222222222222
+3195 2222222222222222222222222222222222222222222222222222222
+3196 2222222222222222222222222222222222222222222222222222222
+3197 2222222222222222222222222222222222222222222222222222222
+3198 2222222222222222222222222222222222222222222222222222222
+3199 2222222222222222222222222222222222222222222222222222222
+3200 2222222222222222222222222222222222222222222222222222222
+3201 2222222222222222222222222222222222222222222222222222222
+3202 2222222222222222222222222222222222222222222222222222222
+3203 2222222222222222222222222222222222222222222222222222222
+3204 2222222222222222222222222222222222222222222222222222222
+3205 2222222222222222222222222222222222222222222222222222222
+3206 2222222222222222222222222222222222222222222222222222222
+3207 2222222222222222222222222222222222222222222222222222222
+3208 2222222222222222222222222222222222222222222222222222222
+3209 2222222222222222222222222222222222222222222222222222222
+3210 2222222222222222222222222222222222222222222222222222222
+3211 2222222222222222222222222222222222222222222222222222222
+3212 2222222222222222222222222222222222222222222222222222222
+3213 2222222222222222222222222222222222222222222222222222222
+3214 2222222222222222222222222222222222222222222222222222222
+3215 2222222222222222222222222222222222222222222222222222222
+3216 2222222222222222222222222222222222222222222222222222222
+3217 2222222222222222222222222222222222222222222222222222222
+3218 2222222222222222222222222222222222222222222222222222222
+3219 2222222222222222222222222222222222222222222222222222222
+3220 2222222222222222222222222222222222222222222222222222222
+3221 2222222222222222222222222222222222222222222222222222222
+3222 2222222222222222222222222222222222222222222222222222222
+3223 2222222222222222222222222222222222222222222222222222222
+3224 2222222222222222222222222222222222222222222222222222222
+3225 2222222222222222222222222222222222222222222222222222222
+3226 2222222222222222222222222222222222222222222222222222222
+3227 2222222222222222222222222222222222222222222222222222222
+3228 2222222222222222222222222222222222222222222222222222222
+3229 2222222222222222222222222222222222222222222222222222222
+3230 2222222222222222222222222222222222222222222222222222222
+3231 2222222222222222222222222222222222222222222222222222222
+3232 2222222222222222222222222222222222222222222222222222222
+3233 2222222222222222222222222222222222222222222222222222222
+3234 2222222222222222222222222222222222222222222222222222222
+3235 2222222222222222222222222222222222222222222222222222222
+3236 2222222222222222222222222222222222222222222222222222222
+3237 2222222222222222222222222222222222222222222222222222222
+3238 2222222222222222222222222222222222222222222222222222222
+3239 2222222222222222222222222222222222222222222222222222222
+3240 2222222222222222222222222222222222222222222222222222222
+3241 2222222222222222222222222222222222222222222222222222222
+3242 2222222222222222222222222222222222222222222222222222222
+3243 2222222222222222222222222222222222222222222222222222222
+3244 2222222222222222222222222222222222222222222222222222222
+3245 2222222222222222222222222222222222222222222222222222222
+3246 2222222222222222222222222222222222222222222222222222222
+3247 2222222222222222222222222222222222222222222222222222222
+3248 2222222222222222222222222222222222222222222222222222222
+3249 2222222222222222222222222222222222222222222222222222222
+3250 2222222222222222222222222222222222222222222222222222222
+3251 2222222222222222222222222222222222222222222222222222222
+3252 2222222222222222222222222222222222222222222222222222222
+3253 2222222222222222222222222222222222222222222222222222222
+3254 2222222222222222222222222222222222222222222222222222222
+3255 2222222222222222222222222222222222222222222222222222222
+3256 2222222222222222222222222222222222222222222222222222222
+3257 2222222222222222222222222222222222222222222222222222222
+3258 2222222222222222222222222222222222222222222222222222222
+3259 2222222222222222222222222222222222222222222222222222222
+3260 2222222222222222222222222222222222222222222222222222222
+3261 2222222222222222222222222222222222222222222222222222222
+3262 2222222222222222222222222222222222222222222222222222222
+3263 2222222222222222222222222222222222222222222222222222222
+3264 2222222222222222222222222222222222222222222222222222222
+3265 2222222222222222222222222222222222222222222222222222222
+3266 2222222222222222222222222222222222222222222222222222222
+3267 2222222222222222222222222222222222222222222222222222222
+3268 2222222222222222222222222222222222222222222222222222222
+3269 2222222222222222222222222222222222222222222222222222222
+3270 2222222222222222222222222222222222222222222222222222222
+3271 2222222222222222222222222222222222222222222222222222222
+3272 2222222222222222222222222222222222222222222222222222222
+3273 2222222222222222222222222222222222222222222222222222222
+3274 2222222222222222222222222222222222222222222222222222222
+3275 2222222222222222222222222222222222222222222222222222222
+3276 2222222222222222222222222222222222222222222222222222222
+3277 2222222222222222222222222222222222222222222222222222222
+3278 2222222222222222222222222222222222222222222222222222222
+3279 2222222222222222222222222222222222222222222222222222222
+3280 2222222222222222222222222222222222222222222222222222222
+3281 2222222222222222222222222222222222222222222222222222222
+3282 2222222222222222222222222222222222222222222222222222222
+3283 2222222222222222222222222222222222222222222222222222222
+3284 2222222222222222222222222222222222222222222222222222222
+3285 2222222222222222222222222222222222222222222222222222222
+3286 2222222222222222222222222222222222222222222222222222222
+3287 2222222222222222222222222222222222222222222222222222222
+3288 2222222222222222222222222222222222222222222222222222222
+3289 2222222222222222222222222222222222222222222222222222222
+3290 2222222222222222222222222222222222222222222222222222222
+3291 2222222222222222222222222222222222222222222222222222222
+3292 2222222222222222222222222222222222222222222222222222222
+3293 2222222222222222222222222222222222222222222222222222222
+3294 2222222222222222222222222222222222222222222222222222222
+3295 2222222222222222222222222222222222222222222222222222222
+3296 2222222222222222222222222222222222222222222222222222222
+3297 2222222222222222222222222222222222222222222222222222222
+3298 2222222222222222222222222222222222222222222222222222222
+3299 2222222222222222222222222222222222222222222222222222222
+3300 2222222222222222222222222222222222222222222222222222222
+3301 2222222222222222222222222222222222222222222222222222222
+3302 2222222222222222222222222222222222222222222222222222222
+3303 2222222222222222222222222222222222222222222222222222222
+3304 2222222222222222222222222222222222222222222222222222222
+3305 2222222222222222222222222222222222222222222222222222222
+3306 2222222222222222222222222222222222222222222222222222222
+3307 2222222222222222222222222222222222222222222222222222222
+3308 2222222222222222222222222222222222222222222222222222222
+3309 2222222222222222222222222222222222222222222222222222222
+3310 2222222222222222222222222222222222222222222222222222222
+3311 2222222222222222222222222222222222222222222222222222222
+3312 2222222222222222222222222222222222222222222222222222222
+3313 2222222222222222222222222222222222222222222222222222222
+3314 2222222222222222222222222222222222222222222222222222222
+3315 2222222222222222222222222222222222222222222222222222222
+3316 2222222222222222222222222222222222222222222222222222222
+3317 2222222222222222222222222222222222222222222222222222222
+3318 2222222222222222222222222222222222222222222222222222222
+3319 2222222222222222222222222222222222222222222222222222222
+3320 2222222222222222222222222222222222222222222222222222222
+3321 2222222222222222222222222222222222222222222222222222222
+3322 2222222222222222222222222222222222222222222222222222222
+3323 2222222222222222222222222222222222222222222222222222222
+3324 2222222222222222222222222222222222222222222222222222222
+3325 2222222222222222222222222222222222222222222222222222222
+3326 2222222222222222222222222222222222222222222222222222222
+3327 2222222222222222222222222222222222222222222222222222222
+3328 2222222222222222222222222222222222222222222222222222222
+3329 2222222222222222222222222222222222222222222222222222222
+3330 2222222222222222222222222222222222222222222222222222222
+3331 2222222222222222222222222222222222222222222222222222222
+3332 2222222222222222222222222222222222222222222222222222222
+3333 2222222222222222222222222222222222222222222222222222222
+3334 2222222222222222222222222222222222222222222222222222222
+3335 2222222222222222222222222222222222222222222222222222222
+3336 2222222222222222222222222222222222222222222222222222222
+3337 2222222222222222222222222222222222222222222222222222222
+3338 2222222222222222222222222222222222222222222222222222222
+3339 2222222222222222222222222222222222222222222222222222222
+3340 2222222222222222222222222222222222222222222222222222222
+3341 2222222222222222222222222222222222222222222222222222222
+3342 2222222222222222222222222222222222222222222222222222222
+3343 2222222222222222222222222222222222222222222222222222222
+3344 2222222222222222222222222222222222222222222222222222222
+3345 2222222222222222222222222222222222222222222222222222222
+3346 2222222222222222222222222222222222222222222222222222222
+3347 2222222222222222222222222222222222222222222222222222222
+3348 2222222222222222222222222222222222222222222222222222222
+3349 2222222222222222222222222222222222222222222222222222222
+3350 2222222222222222222222222222222222222222222222222222222
+3351 2222222222222222222222222222222222222222222222222222222
+3352 2222222222222222222222222222222222222222222222222222222
+3353 2222222222222222222222222222222222222222222222222222222
+3354 2222222222222222222222222222222222222222222222222222222
+3355 2222222222222222222222222222222222222222222222222222222
+3356 2222222222222222222222222222222222222222222222222222222
+3357 2222222222222222222222222222222222222222222222222222222
+3358 2222222222222222222222222222222222222222222222222222222
+3359 2222222222222222222222222222222222222222222222222222222
+3360 2222222222222222222222222222222222222222222222222222222
+3361 2222222222222222222222222222222222222222222222222222222
+3362 2222222222222222222222222222222222222222222222222222222
+3363 2222222222222222222222222222222222222222222222222222222
+3364 2222222222222222222222222222222222222222222222222222222
+3365 2222222222222222222222222222222222222222222222222222222
+3366 2222222222222222222222222222222222222222222222222222222
+3367 2222222222222222222222222222222222222222222222222222222
+3368 2222222222222222222222222222222222222222222222222222222
+3369 2222222222222222222222222222222222222222222222222222222
+3370 2222222222222222222222222222222222222222222222222222222
+3371 2222222222222222222222222222222222222222222222222222222
+3372 2222222222222222222222222222222222222222222222222222222
+3373 2222222222222222222222222222222222222222222222222222222
+3374 2222222222222222222222222222222222222222222222222222222
+3375 2222222222222222222222222222222222222222222222222222222
+3376 2222222222222222222222222222222222222222222222222222222
+3377 2222222222222222222222222222222222222222222222222222222
+3378 2222222222222222222222222222222222222222222222222222222
+3379 2222222222222222222222222222222222222222222222222222222
+3380 2222222222222222222222222222222222222222222222222222222
+3381 2222222222222222222222222222222222222222222222222222222
+3382 2222222222222222222222222222222222222222222222222222222
+3383 2222222222222222222222222222222222222222222222222222222
+3384 2222222222222222222222222222222222222222222222222222222
+3385 2222222222222222222222222222222222222222222222222222222
+3386 2222222222222222222222222222222222222222222222222222222
+3387 2222222222222222222222222222222222222222222222222222222
+3388 2222222222222222222222222222222222222222222222222222222
+3389 2222222222222222222222222222222222222222222222222222222
+3390 2222222222222222222222222222222222222222222222222222222
+3391 2222222222222222222222222222222222222222222222222222222
+3392 2222222222222222222222222222222222222222222222222222222
+3393 2222222222222222222222222222222222222222222222222222222
+3394 2222222222222222222222222222222222222222222222222222222
+3395 2222222222222222222222222222222222222222222222222222222
+3396 2222222222222222222222222222222222222222222222222222222
+3397 2222222222222222222222222222222222222222222222222222222
+3398 2222222222222222222222222222222222222222222222222222222
+3399 2222222222222222222222222222222222222222222222222222222
+3400 2222222222222222222222222222222222222222222222222222222
+3401 2222222222222222222222222222222222222222222222222222222
+3402 2222222222222222222222222222222222222222222222222222222
+3403 2222222222222222222222222222222222222222222222222222222
+3404 2222222222222222222222222222222222222222222222222222222
+3405 2222222222222222222222222222222222222222222222222222222
+3406 2222222222222222222222222222222222222222222222222222222
+3407 2222222222222222222222222222222222222222222222222222222
+3408 2222222222222222222222222222222222222222222222222222222
+3409 2222222222222222222222222222222222222222222222222222222
+3410 2222222222222222222222222222222222222222222222222222222
+3411 2222222222222222222222222222222222222222222222222222222
+3412 2222222222222222222222222222222222222222222222222222222
+3413 2222222222222222222222222222222222222222222222222222222
+3414 2222222222222222222222222222222222222222222222222222222
+3415 2222222222222222222222222222222222222222222222222222222
+3416 2222222222222222222222222222222222222222222222222222222
+3417 2222222222222222222222222222222222222222222222222222222
+3418 2222222222222222222222222222222222222222222222222222222
+3419 2222222222222222222222222222222222222222222222222222222
+3420 2222222222222222222222222222222222222222222222222222222
+3421 2222222222222222222222222222222222222222222222222222222
+3422 2222222222222222222222222222222222222222222222222222222
+3423 2222222222222222222222222222222222222222222222222222222
+3424 2222222222222222222222222222222222222222222222222222222
+3425 2222222222222222222222222222222222222222222222222222222
+3426 2222222222222222222222222222222222222222222222222222222
+3427 2222222222222222222222222222222222222222222222222222222
+3428 2222222222222222222222222222222222222222222222222222222
+3429 2222222222222222222222222222222222222222222222222222222
+3430 2222222222222222222222222222222222222222222222222222222
+3431 2222222222222222222222222222222222222222222222222222222
+3432 2222222222222222222222222222222222222222222222222222222
+3433 2222222222222222222222222222222222222222222222222222222
+3434 2222222222222222222222222222222222222222222222222222222
+3435 2222222222222222222222222222222222222222222222222222222
+3436 2222222222222222222222222222222222222222222222222222222
+3437 2222222222222222222222222222222222222222222222222222222
+3438 2222222222222222222222222222222222222222222222222222222
+3439 2222222222222222222222222222222222222222222222222222222
+3440 2222222222222222222222222222222222222222222222222222222
+3441 2222222222222222222222222222222222222222222222222222222
+3442 2222222222222222222222222222222222222222222222222222222
+3443 2222222222222222222222222222222222222222222222222222222
+3444 2222222222222222222222222222222222222222222222222222222
+3445 2222222222222222222222222222222222222222222222222222222
+3446 2222222222222222222222222222222222222222222222222222222
+3447 2222222222222222222222222222222222222222222222222222222
+3448 2222222222222222222222222222222222222222222222222222222
+3449 2222222222222222222222222222222222222222222222222222222
+3450 2222222222222222222222222222222222222222222222222222222
+3451 2222222222222222222222222222222222222222222222222222222
+3452 2222222222222222222222222222222222222222222222222222222
+3453 2222222222222222222222222222222222222222222222222222222
+3454 2222222222222222222222222222222222222222222222222222222
+3455 2222222222222222222222222222222222222222222222222222222
+3456 2222222222222222222222222222222222222222222222222222222
+3457 2222222222222222222222222222222222222222222222222222222
+3458 2222222222222222222222222222222222222222222222222222222
+3459 2222222222222222222222222222222222222222222222222222222
+3460 2222222222222222222222222222222222222222222222222222222
+3461 2222222222222222222222222222222222222222222222222222222
+3462 2222222222222222222222222222222222222222222222222222222
+3463 2222222222222222222222222222222222222222222222222222222
+3464 2222222222222222222222222222222222222222222222222222222
+3465 2222222222222222222222222222222222222222222222222222222
+3466 2222222222222222222222222222222222222222222222222222222
+3467 2222222222222222222222222222222222222222222222222222222
+3468 2222222222222222222222222222222222222222222222222222222
+3469 2222222222222222222222222222222222222222222222222222222
+3470 2222222222222222222222222222222222222222222222222222222
+3471 2222222222222222222222222222222222222222222222222222222
+3472 2222222222222222222222222222222222222222222222222222222
+3473 2222222222222222222222222222222222222222222222222222222
+3474 2222222222222222222222222222222222222222222222222222222
+3475 2222222222222222222222222222222222222222222222222222222
+3476 2222222222222222222222222222222222222222222222222222222
+3477 2222222222222222222222222222222222222222222222222222222
+3478 2222222222222222222222222222222222222222222222222222222
+3479 2222222222222222222222222222222222222222222222222222222
+3480 2222222222222222222222222222222222222222222222222222222
+3481 2222222222222222222222222222222222222222222222222222222
+3482 2222222222222222222222222222222222222222222222222222222
+3483 2222222222222222222222222222222222222222222222222222222
+3484 2222222222222222222222222222222222222222222222222222222
+3485 2222222222222222222222222222222222222222222222222222222
+3486 2222222222222222222222222222222222222222222222222222222
+3487 2222222222222222222222222222222222222222222222222222222
+3488 2222222222222222222222222222222222222222222222222222222
+3489 2222222222222222222222222222222222222222222222222222222
+3490 2222222222222222222222222222222222222222222222222222222
+3491 2222222222222222222222222222222222222222222222222222222
+3492 2222222222222222222222222222222222222222222222222222222
+3493 2222222222222222222222222222222222222222222222222222222
+3494 2222222222222222222222222222222222222222222222222222222
+3495 2222222222222222222222222222222222222222222222222222222
+3496 2222222222222222222222222222222222222222222222222222222
+3497 2222222222222222222222222222222222222222222222222222222
+3498 2222222222222222222222222222222222222222222222222222222
+3499 2222222222222222222222222222222222222222222222222222222
+3500 2222222222222222222222222222222222222222222222222222222
+3501 2222222222222222222222222222222222222222222222222222222
+3502 2222222222222222222222222222222222222222222222222222222
+3503 2222222222222222222222222222222222222222222222222222222
+3504 2222222222222222222222222222222222222222222222222222222
+3505 2222222222222222222222222222222222222222222222222222222
+3506 2222222222222222222222222222222222222222222222222222222
+3507 2222222222222222222222222222222222222222222222222222222
+3508 2222222222222222222222222222222222222222222222222222222
+3509 2222222222222222222222222222222222222222222222222222222
+3510 2222222222222222222222222222222222222222222222222222222
+3511 2222222222222222222222222222222222222222222222222222222
+3512 2222222222222222222222222222222222222222222222222222222
+3513 2222222222222222222222222222222222222222222222222222222
+3514 2222222222222222222222222222222222222222222222222222222
+3515 2222222222222222222222222222222222222222222222222222222
+3516 2222222222222222222222222222222222222222222222222222222
+3517 2222222222222222222222222222222222222222222222222222222
+3518 2222222222222222222222222222222222222222222222222222222
+3519 2222222222222222222222222222222222222222222222222222222
+3520 2222222222222222222222222222222222222222222222222222222
+3521 2222222222222222222222222222222222222222222222222222222
+3522 2222222222222222222222222222222222222222222222222222222
+3523 2222222222222222222222222222222222222222222222222222222
+3524 2222222222222222222222222222222222222222222222222222222
+3525 2222222222222222222222222222222222222222222222222222222
+3526 2222222222222222222222222222222222222222222222222222222
+3527 2222222222222222222222222222222222222222222222222222222
+3528 2222222222222222222222222222222222222222222222222222222
+3529 2222222222222222222222222222222222222222222222222222222
+3530 2222222222222222222222222222222222222222222222222222222
+3531 2222222222222222222222222222222222222222222222222222222
+3532 2222222222222222222222222222222222222222222222222222222
+3533 2222222222222222222222222222222222222222222222222222222
+3534 2222222222222222222222222222222222222222222222222222222
+3535 2222222222222222222222222222222222222222222222222222222
+3536 2222222222222222222222222222222222222222222222222222222
+3537 2222222222222222222222222222222222222222222222222222222
+3538 2222222222222222222222222222222222222222222222222222222
+3539 2222222222222222222222222222222222222222222222222222222
+3540 2222222222222222222222222222222222222222222222222222222
+3541 2222222222222222222222222222222222222222222222222222222
+3542 2222222222222222222222222222222222222222222222222222222
+3543 2222222222222222222222222222222222222222222222222222222
+3544 2222222222222222222222222222222222222222222222222222222
+3545 2222222222222222222222222222222222222222222222222222222
+3546 2222222222222222222222222222222222222222222222222222222
+3547 2222222222222222222222222222222222222222222222222222222
+3548 2222222222222222222222222222222222222222222222222222222
+3549 2222222222222222222222222222222222222222222222222222222
+3550 2222222222222222222222222222222222222222222222222222222
+3551 2222222222222222222222222222222222222222222222222222222
+3552 2222222222222222222222222222222222222222222222222222222
+3553 2222222222222222222222222222222222222222222222222222222
+3554 2222222222222222222222222222222222222222222222222222222
+3555 2222222222222222222222222222222222222222222222222222222
+3556 2222222222222222222222222222222222222222222222222222222
+3557 2222222222222222222222222222222222222222222222222222222
+3558 2222222222222222222222222222222222222222222222222222222
+3559 2222222222222222222222222222222222222222222222222222222
+3560 2222222222222222222222222222222222222222222222222222222
+3561 2222222222222222222222222222222222222222222222222222222
+3562 2222222222222222222222222222222222222222222222222222222
+3563 2222222222222222222222222222222222222222222222222222222
+3564 2222222222222222222222222222222222222222222222222222222
+3565 2222222222222222222222222222222222222222222222222222222
+3566 2222222222222222222222222222222222222222222222222222222
+3567 2222222222222222222222222222222222222222222222222222222
+3568 2222222222222222222222222222222222222222222222222222222
+3569 2222222222222222222222222222222222222222222222222222222
+3570 2222222222222222222222222222222222222222222222222222222
+3571 2222222222222222222222222222222222222222222222222222222
+3572 2222222222222222222222222222222222222222222222222222222
+3573 2222222222222222222222222222222222222222222222222222222
+3574 2222222222222222222222222222222222222222222222222222222
+3575 2222222222222222222222222222222222222222222222222222222
+3576 2222222222222222222222222222222222222222222222222222222
+3577 2222222222222222222222222222222222222222222222222222222
+3578 2222222222222222222222222222222222222222222222222222222
+3579 2222222222222222222222222222222222222222222222222222222
+3580 2222222222222222222222222222222222222222222222222222222
+3581 2222222222222222222222222222222222222222222222222222222
+3582 2222222222222222222222222222222222222222222222222222222
+3583 2222222222222222222222222222222222222222222222222222222
+3584 2222222222222222222222222222222222222222222222222222222
+3585 2222222222222222222222222222222222222222222222222222222
+3586 2222222222222222222222222222222222222222222222222222222
+3587 2222222222222222222222222222222222222222222222222222222
+3588 2222222222222222222222222222222222222222222222222222222
+3589 2222222222222222222222222222222222222222222222222222222
+3590 2222222222222222222222222222222222222222222222222222222
+3591 2222222222222222222222222222222222222222222222222222222
+3592 2222222222222222222222222222222222222222222222222222222
+3593 2222222222222222222222222222222222222222222222222222222
+3594 2222222222222222222222222222222222222222222222222222222
+3595 2222222222222222222222222222222222222222222222222222222
+3596 2222222222222222222222222222222222222222222222222222222
+3597 2222222222222222222222222222222222222222222222222222222
+3598 2222222222222222222222222222222222222222222222222222222
+3599 2222222222222222222222222222222222222222222222222222222
+3600 2222222222222222222222222222222222222222222222222222222
+3601 2222222222222222222222222222222222222222222222222222222
+3602 2222222222222222222222222222222222222222222222222222222
+3603 2222222222222222222222222222222222222222222222222222222
+3604 2222222222222222222222222222222222222222222222222222222
+3605 2222222222222222222222222222222222222222222222222222222
+3606 2222222222222222222222222222222222222222222222222222222
+3607 2222222222222222222222222222222222222222222222222222222
+3608 2222222222222222222222222222222222222222222222222222222
+3609 2222222222222222222222222222222222222222222222222222222
+3610 2222222222222222222222222222222222222222222222222222222
+3611 2222222222222222222222222222222222222222222222222222222
+3612 2222222222222222222222222222222222222222222222222222222
+3613 2222222222222222222222222222222222222222222222222222222
+3614 2222222222222222222222222222222222222222222222222222222
+3615 2222222222222222222222222222222222222222222222222222222
+3616 2222222222222222222222222222222222222222222222222222222
+3617 2222222222222222222222222222222222222222222222222222222
+3618 2222222222222222222222222222222222222222222222222222222
+3619 2222222222222222222222222222222222222222222222222222222
+3620 2222222222222222222222222222222222222222222222222222222
+3621 2222222222222222222222222222222222222222222222222222222
+3622 2222222222222222222222222222222222222222222222222222222
+3623 2222222222222222222222222222222222222222222222222222222
+3624 2222222222222222222222222222222222222222222222222222222
+3625 2222222222222222222222222222222222222222222222222222222
+3626 2222222222222222222222222222222222222222222222222222222
+3627 2222222222222222222222222222222222222222222222222222222
+3628 2222222222222222222222222222222222222222222222222222222
+3629 2222222222222222222222222222222222222222222222222222222
+3630 2222222222222222222222222222222222222222222222222222222
+3631 2222222222222222222222222222222222222222222222222222222
+3632 2222222222222222222222222222222222222222222222222222222
+3633 2222222222222222222222222222222222222222222222222222222
+3634 2222222222222222222222222222222222222222222222222222222
+3635 2222222222222222222222222222222222222222222222222222222
+3636 2222222222222222222222222222222222222222222222222222222
+3637 2222222222222222222222222222222222222222222222222222222
+3638 2222222222222222222222222222222222222222222222222222222
+3639 2222222222222222222222222222222222222222222222222222222
+3640 2222222222222222222222222222222222222222222222222222222
+3641 2222222222222222222222222222222222222222222222222222222
+3642 2222222222222222222222222222222222222222222222222222222
+3643 2222222222222222222222222222222222222222222222222222222
+3644 2222222222222222222222222222222222222222222222222222222
+3645 2222222222222222222222222222222222222222222222222222222
+3646 2222222222222222222222222222222222222222222222222222222
+3647 2222222222222222222222222222222222222222222222222222222
+3648 2222222222222222222222222222222222222222222222222222222
+3649 2222222222222222222222222222222222222222222222222222222
+3650 2222222222222222222222222222222222222222222222222222222
+3651 2222222222222222222222222222222222222222222222222222222
+3652 2222222222222222222222222222222222222222222222222222222
+3653 2222222222222222222222222222222222222222222222222222222
+3654 2222222222222222222222222222222222222222222222222222222
+3655 2222222222222222222222222222222222222222222222222222222
+3656 2222222222222222222222222222222222222222222222222222222
+3657 2222222222222222222222222222222222222222222222222222222
+3658 2222222222222222222222222222222222222222222222222222222
+3659 2222222222222222222222222222222222222222222222222222222
+3660 2222222222222222222222222222222222222222222222222222222
+3661 2222222222222222222222222222222222222222222222222222222
+3662 2222222222222222222222222222222222222222222222222222222
+3663 2222222222222222222222222222222222222222222222222222222
+3664 2222222222222222222222222222222222222222222222222222222
+3665 2222222222222222222222222222222222222222222222222222222
+3666 2222222222222222222222222222222222222222222222222222222
+3667 2222222222222222222222222222222222222222222222222222222
+3668 2222222222222222222222222222222222222222222222222222222
+3669 2222222222222222222222222222222222222222222222222222222
+3670 2222222222222222222222222222222222222222222222222222222
+3671 2222222222222222222222222222222222222222222222222222222
+3672 2222222222222222222222222222222222222222222222222222222
+3673 2222222222222222222222222222222222222222222222222222222
+3674 2222222222222222222222222222222222222222222222222222222
+3675 2222222222222222222222222222222222222222222222222222222
+3676 2222222222222222222222222222222222222222222222222222222
+3677 2222222222222222222222222222222222222222222222222222222
+3678 2222222222222222222222222222222222222222222222222222222
+3679 2222222222222222222222222222222222222222222222222222222
+3680 2222222222222222222222222222222222222222222222222222222
+3681 2222222222222222222222222222222222222222222222222222222
+3682 2222222222222222222222222222222222222222222222222222222
+3683 2222222222222222222222222222222222222222222222222222222
+3684 2222222222222222222222222222222222222222222222222222222
+3685 2222222222222222222222222222222222222222222222222222222
+3686 2222222222222222222222222222222222222222222222222222222
+3687 2222222222222222222222222222222222222222222222222222222
+3688 2222222222222222222222222222222222222222222222222222222
+3689 2222222222222222222222222222222222222222222222222222222
+3690 2222222222222222222222222222222222222222222222222222222
+3691 2222222222222222222222222222222222222222222222222222222
+3692 2222222222222222222222222222222222222222222222222222222
+3693 2222222222222222222222222222222222222222222222222222222
+3694 2222222222222222222222222222222222222222222222222222222
+3695 2222222222222222222222222222222222222222222222222222222
+3696 2222222222222222222222222222222222222222222222222222222
+3697 2222222222222222222222222222222222222222222222222222222
+3698 2222222222222222222222222222222222222222222222222222222
+3699 2222222222222222222222222222222222222222222222222222222
+3700 2222222222222222222222222222222222222222222222222222222
+3701 2222222222222222222222222222222222222222222222222222222
+3702 2222222222222222222222222222222222222222222222222222222
+3703 2222222222222222222222222222222222222222222222222222222
+3704 2222222222222222222222222222222222222222222222222222222
+3705 2222222222222222222222222222222222222222222222222222222
+3706 2222222222222222222222222222222222222222222222222222222
+3707 2222222222222222222222222222222222222222222222222222222
+3708 2222222222222222222222222222222222222222222222222222222
+3709 2222222222222222222222222222222222222222222222222222222
+3710 2222222222222222222222222222222222222222222222222222222
+3711 2222222222222222222222222222222222222222222222222222222
+3712 2222222222222222222222222222222222222222222222222222222
+3713 2222222222222222222222222222222222222222222222222222222
+3714 2222222222222222222222222222222222222222222222222222222
+3715 2222222222222222222222222222222222222222222222222222222
+3716 2222222222222222222222222222222222222222222222222222222
+3717 2222222222222222222222222222222222222222222222222222222
+3718 2222222222222222222222222222222222222222222222222222222
+3719 2222222222222222222222222222222222222222222222222222222
+3720 2222222222222222222222222222222222222222222222222222222
+3721 2222222222222222222222222222222222222222222222222222222
+3722 2222222222222222222222222222222222222222222222222222222
+3723 2222222222222222222222222222222222222222222222222222222
+3724 2222222222222222222222222222222222222222222222222222222
+3725 2222222222222222222222222222222222222222222222222222222
+3726 2222222222222222222222222222222222222222222222222222222
+3727 2222222222222222222222222222222222222222222222222222222
+3728 2222222222222222222222222222222222222222222222222222222
+3729 2222222222222222222222222222222222222222222222222222222
+3730 2222222222222222222222222222222222222222222222222222222
+3731 2222222222222222222222222222222222222222222222222222222
+3732 2222222222222222222222222222222222222222222222222222222
+3733 2222222222222222222222222222222222222222222222222222222
+3734 2222222222222222222222222222222222222222222222222222222
+3735 2222222222222222222222222222222222222222222222222222222
+3736 2222222222222222222222222222222222222222222222222222222
+3737 2222222222222222222222222222222222222222222222222222222
+3738 2222222222222222222222222222222222222222222222222222222
+3739 2222222222222222222222222222222222222222222222222222222
+3740 2222222222222222222222222222222222222222222222222222222
+3741 2222222222222222222222222222222222222222222222222222222
+3742 2222222222222222222222222222222222222222222222222222222
+3743 2222222222222222222222222222222222222222222222222222222
+3744 2222222222222222222222222222222222222222222222222222222
+3745 2222222222222222222222222222222222222222222222222222222
+3746 2222222222222222222222222222222222222222222222222222222
+3747 2222222222222222222222222222222222222222222222222222222
+3748 2222222222222222222222222222222222222222222222222222222
+3749 2222222222222222222222222222222222222222222222222222222
+3750 2222222222222222222222222222222222222222222222222222222
+3751 2222222222222222222222222222222222222222222222222222222
+3752 2222222222222222222222222222222222222222222222222222222
+3753 2222222222222222222222222222222222222222222222222222222
+3754 2222222222222222222222222222222222222222222222222222222
+3755 2222222222222222222222222222222222222222222222222222222
+3756 2222222222222222222222222222222222222222222222222222222
+3757 2222222222222222222222222222222222222222222222222222222
+3758 2222222222222222222222222222222222222222222222222222222
+3759 2222222222222222222222222222222222222222222222222222222
+3760 2222222222222222222222222222222222222222222222222222222
+3761 2222222222222222222222222222222222222222222222222222222
+3762 2222222222222222222222222222222222222222222222222222222
+3763 2222222222222222222222222222222222222222222222222222222
+3764 2222222222222222222222222222222222222222222222222222222
+3765 2222222222222222222222222222222222222222222222222222222
+3766 2222222222222222222222222222222222222222222222222222222
+3767 2222222222222222222222222222222222222222222222222222222
+3768 2222222222222222222222222222222222222222222222222222222
+3769 2222222222222222222222222222222222222222222222222222222
+3770 2222222222222222222222222222222222222222222222222222222
+3771 2222222222222222222222222222222222222222222222222222222
+3772 2222222222222222222222222222222222222222222222222222222
+3773 2222222222222222222222222222222222222222222222222222222
+3774 2222222222222222222222222222222222222222222222222222222
+3775 2222222222222222222222222222222222222222222222222222222
+3776 2222222222222222222222222222222222222222222222222222222
+3777 2222222222222222222222222222222222222222222222222222222
+3778 2222222222222222222222222222222222222222222222222222222
+3779 2222222222222222222222222222222222222222222222222222222
+3780 2222222222222222222222222222222222222222222222222222222
+3781 2222222222222222222222222222222222222222222222222222222
+3782 2222222222222222222222222222222222222222222222222222222
+3783 2222222222222222222222222222222222222222222222222222222
+3784 2222222222222222222222222222222222222222222222222222222
+3785 2222222222222222222222222222222222222222222222222222222
+3786 2222222222222222222222222222222222222222222222222222222
+3787 2222222222222222222222222222222222222222222222222222222
+3788 2222222222222222222222222222222222222222222222222222222
+3789 2222222222222222222222222222222222222222222222222222222
+3790 2222222222222222222222222222222222222222222222222222222
+3791 2222222222222222222222222222222222222222222222222222222
+3792 2222222222222222222222222222222222222222222222222222222
+3793 2222222222222222222222222222222222222222222222222222222
+3794 2222222222222222222222222222222222222222222222222222222
+3795 2222222222222222222222222222222222222222222222222222222
+3796 2222222222222222222222222222222222222222222222222222222
+3797 2222222222222222222222222222222222222222222222222222222
+3798 2222222222222222222222222222222222222222222222222222222
+3799 2222222222222222222222222222222222222222222222222222222
+3800 2222222222222222222222222222222222222222222222222222222
+3801 2222222222222222222222222222222222222222222222222222222
+3802 2222222222222222222222222222222222222222222222222222222
+3803 2222222222222222222222222222222222222222222222222222222
+3804 2222222222222222222222222222222222222222222222222222222
+3805 2222222222222222222222222222222222222222222222222222222
+3806 2222222222222222222222222222222222222222222222222222222
+3807 2222222222222222222222222222222222222222222222222222222
+3808 2222222222222222222222222222222222222222222222222222222
+3809 2222222222222222222222222222222222222222222222222222222
+3810 2222222222222222222222222222222222222222222222222222222
+3811 2222222222222222222222222222222222222222222222222222222
+3812 2222222222222222222222222222222222222222222222222222222
+3813 2222222222222222222222222222222222222222222222222222222
+3814 2222222222222222222222222222222222222222222222222222222
+3815 2222222222222222222222222222222222222222222222222222222
+3816 2222222222222222222222222222222222222222222222222222222
+3817 2222222222222222222222222222222222222222222222222222222
+3818 2222222222222222222222222222222222222222222222222222222
+3819 2222222222222222222222222222222222222222222222222222222
+3820 2222222222222222222222222222222222222222222222222222222
+3821 2222222222222222222222222222222222222222222222222222222
+3822 2222222222222222222222222222222222222222222222222222222
+3823 2222222222222222222222222222222222222222222222222222222
+3824 2222222222222222222222222222222222222222222222222222222
+3825 2222222222222222222222222222222222222222222222222222222
+3826 2222222222222222222222222222222222222222222222222222222
+3827 2222222222222222222222222222222222222222222222222222222
+3828 2222222222222222222222222222222222222222222222222222222
+3829 2222222222222222222222222222222222222222222222222222222
+3830 2222222222222222222222222222222222222222222222222222222
+3831 2222222222222222222222222222222222222222222222222222222
+3832 2222222222222222222222222222222222222222222222222222222
+3833 2222222222222222222222222222222222222222222222222222222
+3834 2222222222222222222222222222222222222222222222222222222
+3835 2222222222222222222222222222222222222222222222222222222
+3836 2222222222222222222222222222222222222222222222222222222
+3837 2222222222222222222222222222222222222222222222222222222
+3838 2222222222222222222222222222222222222222222222222222222
+3839 2222222222222222222222222222222222222222222222222222222
+3840 2222222222222222222222222222222222222222222222222222222
+3841 2222222222222222222222222222222222222222222222222222222
+3842 2222222222222222222222222222222222222222222222222222222
+3843 2222222222222222222222222222222222222222222222222222222
+3844 2222222222222222222222222222222222222222222222222222222
+3845 2222222222222222222222222222222222222222222222222222222
+3846 2222222222222222222222222222222222222222222222222222222
+3847 2222222222222222222222222222222222222222222222222222222
+3848 2222222222222222222222222222222222222222222222222222222
+3849 2222222222222222222222222222222222222222222222222222222
+3850 2222222222222222222222222222222222222222222222222222222
+3851 2222222222222222222222222222222222222222222222222222222
+3852 2222222222222222222222222222222222222222222222222222222
+3853 2222222222222222222222222222222222222222222222222222222
+3854 2222222222222222222222222222222222222222222222222222222
+3855 2222222222222222222222222222222222222222222222222222222
+3856 2222222222222222222222222222222222222222222222222222222
+3857 2222222222222222222222222222222222222222222222222222222
+3858 2222222222222222222222222222222222222222222222222222222
+3859 2222222222222222222222222222222222222222222222222222222
+3860 2222222222222222222222222222222222222222222222222222222
+3861 2222222222222222222222222222222222222222222222222222222
+3862 2222222222222222222222222222222222222222222222222222222
+3863 2222222222222222222222222222222222222222222222222222222
+3864 2222222222222222222222222222222222222222222222222222222
+3865 2222222222222222222222222222222222222222222222222222222
+3866 2222222222222222222222222222222222222222222222222222222
+3867 2222222222222222222222222222222222222222222222222222222
+3868 2222222222222222222222222222222222222222222222222222222
+3869 2222222222222222222222222222222222222222222222222222222
+3870 2222222222222222222222222222222222222222222222222222222
+3871 2222222222222222222222222222222222222222222222222222222
+3872 2222222222222222222222222222222222222222222222222222222
+3873 2222222222222222222222222222222222222222222222222222222
+3874 2222222222222222222222222222222222222222222222222222222
+3875 2222222222222222222222222222222222222222222222222222222
+3876 2222222222222222222222222222222222222222222222222222222
+3877 2222222222222222222222222222222222222222222222222222222
+3878 2222222222222222222222222222222222222222222222222222222
+3879 2222222222222222222222222222222222222222222222222222222
+3880 2222222222222222222222222222222222222222222222222222222
+3881 2222222222222222222222222222222222222222222222222222222
+3882 2222222222222222222222222222222222222222222222222222222
+3883 2222222222222222222222222222222222222222222222222222222
+3884 2222222222222222222222222222222222222222222222222222222
+3885 2222222222222222222222222222222222222222222222222222222
+3886 2222222222222222222222222222222222222222222222222222222
+3887 2222222222222222222222222222222222222222222222222222222
+3888 2222222222222222222222222222222222222222222222222222222
+3889 2222222222222222222222222222222222222222222222222222222
+3890 2222222222222222222222222222222222222222222222222222222
+3891 2222222222222222222222222222222222222222222222222222222
+3892 2222222222222222222222222222222222222222222222222222222
+3893 2222222222222222222222222222222222222222222222222222222
+3894 2222222222222222222222222222222222222222222222222222222
+3895 2222222222222222222222222222222222222222222222222222222
+3896 2222222222222222222222222222222222222222222222222222222
+3897 2222222222222222222222222222222222222222222222222222222
+3898 2222222222222222222222222222222222222222222222222222222
+3899 2222222222222222222222222222222222222222222222222222222
+3900 2222222222222222222222222222222222222222222222222222222
+3901 2222222222222222222222222222222222222222222222222222222
+3902 2222222222222222222222222222222222222222222222222222222
+3903 2222222222222222222222222222222222222222222222222222222
+3904 2222222222222222222222222222222222222222222222222222222
+3905 2222222222222222222222222222222222222222222222222222222
+3906 2222222222222222222222222222222222222222222222222222222
+3907 2222222222222222222222222222222222222222222222222222222
+3908 2222222222222222222222222222222222222222222222222222222
+3909 2222222222222222222222222222222222222222222222222222222
+3910 2222222222222222222222222222222222222222222222222222222
+3911 2222222222222222222222222222222222222222222222222222222
+3912 2222222222222222222222222222222222222222222222222222222
+3913 2222222222222222222222222222222222222222222222222222222
+3914 2222222222222222222222222222222222222222222222222222222
+3915 2222222222222222222222222222222222222222222222222222222
+3916 2222222222222222222222222222222222222222222222222222222
+3917 2222222222222222222222222222222222222222222222222222222
+3918 2222222222222222222222222222222222222222222222222222222
+3919 2222222222222222222222222222222222222222222222222222222
+3920 2222222222222222222222222222222222222222222222222222222
+3921 2222222222222222222222222222222222222222222222222222222
+3922 2222222222222222222222222222222222222222222222222222222
+3923 2222222222222222222222222222222222222222222222222222222
+3924 2222222222222222222222222222222222222222222222222222222
+3925 2222222222222222222222222222222222222222222222222222222
+3926 2222222222222222222222222222222222222222222222222222222
+3927 2222222222222222222222222222222222222222222222222222222
+3928 2222222222222222222222222222222222222222222222222222222
+3929 2222222222222222222222222222222222222222222222222222222
+3930 2222222222222222222222222222222222222222222222222222222
+3931 2222222222222222222222222222222222222222222222222222222
+3932 2222222222222222222222222222222222222222222222222222222
+3933 2222222222222222222222222222222222222222222222222222222
+3934 2222222222222222222222222222222222222222222222222222222
+3935 2222222222222222222222222222222222222222222222222222222
+3936 2222222222222222222222222222222222222222222222222222222
+3937 2222222222222222222222222222222222222222222222222222222
+3938 2222222222222222222222222222222222222222222222222222222
+3939 2222222222222222222222222222222222222222222222222222222
+3940 2222222222222222222222222222222222222222222222222222222
+3941 2222222222222222222222222222222222222222222222222222222
+3942 2222222222222222222222222222222222222222222222222222222
+3943 2222222222222222222222222222222222222222222222222222222
+3944 2222222222222222222222222222222222222222222222222222222
+3945 2222222222222222222222222222222222222222222222222222222
+3946 2222222222222222222222222222222222222222222222222222222
+3947 2222222222222222222222222222222222222222222222222222222
+3948 2222222222222222222222222222222222222222222222222222222
+3949 2222222222222222222222222222222222222222222222222222222
+3950 2222222222222222222222222222222222222222222222222222222
+3951 2222222222222222222222222222222222222222222222222222222
+3952 2222222222222222222222222222222222222222222222222222222
+3953 2222222222222222222222222222222222222222222222222222222
+3954 2222222222222222222222222222222222222222222222222222222
+3955 2222222222222222222222222222222222222222222222222222222
+3956 2222222222222222222222222222222222222222222222222222222
+3957 2222222222222222222222222222222222222222222222222222222
+3958 2222222222222222222222222222222222222222222222222222222
+3959 2222222222222222222222222222222222222222222222222222222
+3960 2222222222222222222222222222222222222222222222222222222
+3961 2222222222222222222222222222222222222222222222222222222
+3962 2222222222222222222222222222222222222222222222222222222
+3963 2222222222222222222222222222222222222222222222222222222
+3964 2222222222222222222222222222222222222222222222222222222
+3965 2222222222222222222222222222222222222222222222222222222
+3966 2222222222222222222222222222222222222222222222222222222
+3967 2222222222222222222222222222222222222222222222222222222
+3968 2222222222222222222222222222222222222222222222222222222
+3969 2222222222222222222222222222222222222222222222222222222
+3970 2222222222222222222222222222222222222222222222222222222
+3971 2222222222222222222222222222222222222222222222222222222
+3972 2222222222222222222222222222222222222222222222222222222
+3973 2222222222222222222222222222222222222222222222222222222
+3974 2222222222222222222222222222222222222222222222222222222
+3975 2222222222222222222222222222222222222222222222222222222
+3976 2222222222222222222222222222222222222222222222222222222
+3977 2222222222222222222222222222222222222222222222222222222
+3978 2222222222222222222222222222222222222222222222222222222
+3979 2222222222222222222222222222222222222222222222222222222
+3980 2222222222222222222222222222222222222222222222222222222
+3981 2222222222222222222222222222222222222222222222222222222
+3982 2222222222222222222222222222222222222222222222222222222
+3983 2222222222222222222222222222222222222222222222222222222
+3984 2222222222222222222222222222222222222222222222222222222
+3985 2222222222222222222222222222222222222222222222222222222
+3986 2222222222222222222222222222222222222222222222222222222
+3987 2222222222222222222222222222222222222222222222222222222
+3988 2222222222222222222222222222222222222222222222222222222
+3989 2222222222222222222222222222222222222222222222222222222
+3990 2222222222222222222222222222222222222222222222222222222
+3991 2222222222222222222222222222222222222222222222222222222
+3992 2222222222222222222222222222222222222222222222222222222
+3993 2222222222222222222222222222222222222222222222222222222
+3994 2222222222222222222222222222222222222222222222222222222
+3995 2222222222222222222222222222222222222222222222222222222
+3996 2222222222222222222222222222222222222222222222222222222
+3997 2222222222222222222222222222222222222222222222222222222
+3998 2222222222222222222222222222222222222222222222222222222
+3999 2222222222222222222222222222222222222222222222222222222

Added: trunk/main/planet/web/test/webapps/test/data.txt
===================================================================
--- trunk/main/planet/web/test/webapps/test/data.txt 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/data.txt 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,10000 @@
+0000 3333333333333333333333333333333333333333333333333333333
+0001 3333333333333333333333333333333333333333333333333333333
+0002 3333333333333333333333333333333333333333333333333333333
+0003 3333333333333333333333333333333333333333333333333333333
+0004 3333333333333333333333333333333333333333333333333333333
+0005 3333333333333333333333333333333333333333333333333333333
+0006 3333333333333333333333333333333333333333333333333333333
+0007 3333333333333333333333333333333333333333333333333333333
+0008 3333333333333333333333333333333333333333333333333333333
+0009 3333333333333333333333333333333333333333333333333333333
+0010 3333333333333333333333333333333333333333333333333333333
+0011 3333333333333333333333333333333333333333333333333333333
+0012 3333333333333333333333333333333333333333333333333333333
+0013 3333333333333333333333333333333333333333333333333333333
+0014 3333333333333333333333333333333333333333333333333333333
+0015 3333333333333333333333333333333333333333333333333333333
+0016 3333333333333333333333333333333333333333333333333333333
+0017 3333333333333333333333333333333333333333333333333333333
+0018 3333333333333333333333333333333333333333333333333333333
+0019 3333333333333333333333333333333333333333333333333333333
+0020 3333333333333333333333333333333333333333333333333333333
+0021 3333333333333333333333333333333333333333333333333333333
+0022 3333333333333333333333333333333333333333333333333333333
+0023 3333333333333333333333333333333333333333333333333333333
+0024 3333333333333333333333333333333333333333333333333333333
+0025 3333333333333333333333333333333333333333333333333333333
+0026 3333333333333333333333333333333333333333333333333333333
+0027 3333333333333333333333333333333333333333333333333333333
+0028 3333333333333333333333333333333333333333333333333333333
+0029 3333333333333333333333333333333333333333333333333333333
+0030 3333333333333333333333333333333333333333333333333333333
+0031 3333333333333333333333333333333333333333333333333333333
+0032 3333333333333333333333333333333333333333333333333333333
+0033 3333333333333333333333333333333333333333333333333333333
+0034 3333333333333333333333333333333333333333333333333333333
+0035 3333333333333333333333333333333333333333333333333333333
+0036 3333333333333333333333333333333333333333333333333333333
+0037 3333333333333333333333333333333333333333333333333333333
+0038 3333333333333333333333333333333333333333333333333333333
+0039 3333333333333333333333333333333333333333333333333333333
+0040 3333333333333333333333333333333333333333333333333333333
+0041 3333333333333333333333333333333333333333333333333333333
+0042 3333333333333333333333333333333333333333333333333333333
+0043 3333333333333333333333333333333333333333333333333333333
+0044 3333333333333333333333333333333333333333333333333333333
+0045 3333333333333333333333333333333333333333333333333333333
+0046 3333333333333333333333333333333333333333333333333333333
+0047 3333333333333333333333333333333333333333333333333333333
+0048 3333333333333333333333333333333333333333333333333333333
+0049 3333333333333333333333333333333333333333333333333333333
+0050 3333333333333333333333333333333333333333333333333333333
+0051 3333333333333333333333333333333333333333333333333333333
+0052 3333333333333333333333333333333333333333333333333333333
+0053 3333333333333333333333333333333333333333333333333333333
+0054 3333333333333333333333333333333333333333333333333333333
+0055 3333333333333333333333333333333333333333333333333333333
+0056 3333333333333333333333333333333333333333333333333333333
+0057 3333333333333333333333333333333333333333333333333333333
+0058 3333333333333333333333333333333333333333333333333333333
+0059 3333333333333333333333333333333333333333333333333333333
+0060 3333333333333333333333333333333333333333333333333333333
+0061 3333333333333333333333333333333333333333333333333333333
+0062 3333333333333333333333333333333333333333333333333333333
+0063 3333333333333333333333333333333333333333333333333333333
+0064 3333333333333333333333333333333333333333333333333333333
+0065 3333333333333333333333333333333333333333333333333333333
+0066 3333333333333333333333333333333333333333333333333333333
+0067 3333333333333333333333333333333333333333333333333333333
+0068 3333333333333333333333333333333333333333333333333333333
+0069 3333333333333333333333333333333333333333333333333333333
+0070 3333333333333333333333333333333333333333333333333333333
+0071 3333333333333333333333333333333333333333333333333333333
+0072 3333333333333333333333333333333333333333333333333333333
+0073 3333333333333333333333333333333333333333333333333333333
+0074 3333333333333333333333333333333333333333333333333333333
+0075 3333333333333333333333333333333333333333333333333333333
+0076 3333333333333333333333333333333333333333333333333333333
+0077 3333333333333333333333333333333333333333333333333333333
+0078 3333333333333333333333333333333333333333333333333333333
+0079 3333333333333333333333333333333333333333333333333333333
+0080 3333333333333333333333333333333333333333333333333333333
+0081 3333333333333333333333333333333333333333333333333333333
+0082 3333333333333333333333333333333333333333333333333333333
+0083 3333333333333333333333333333333333333333333333333333333
+0084 3333333333333333333333333333333333333333333333333333333
+0085 3333333333333333333333333333333333333333333333333333333
+0086 3333333333333333333333333333333333333333333333333333333
+0087 3333333333333333333333333333333333333333333333333333333
+0088 3333333333333333333333333333333333333333333333333333333
+0089 3333333333333333333333333333333333333333333333333333333
+0090 3333333333333333333333333333333333333333333333333333333
+0091 3333333333333333333333333333333333333333333333333333333
+0092 3333333333333333333333333333333333333333333333333333333
+0093 3333333333333333333333333333333333333333333333333333333
+0094 3333333333333333333333333333333333333333333333333333333
+0095 3333333333333333333333333333333333333333333333333333333
+0096 3333333333333333333333333333333333333333333333333333333
+0097 3333333333333333333333333333333333333333333333333333333
+0098 3333333333333333333333333333333333333333333333333333333
+0099 3333333333333333333333333333333333333333333333333333333
+0100 3333333333333333333333333333333333333333333333333333333
+0101 3333333333333333333333333333333333333333333333333333333
+0102 3333333333333333333333333333333333333333333333333333333
+0103 3333333333333333333333333333333333333333333333333333333
+0104 3333333333333333333333333333333333333333333333333333333
+0105 3333333333333333333333333333333333333333333333333333333
+0106 3333333333333333333333333333333333333333333333333333333
+0107 3333333333333333333333333333333333333333333333333333333
+0108 3333333333333333333333333333333333333333333333333333333
+0109 3333333333333333333333333333333333333333333333333333333
+0110 3333333333333333333333333333333333333333333333333333333
+0111 3333333333333333333333333333333333333333333333333333333
+0112 3333333333333333333333333333333333333333333333333333333
+0113 3333333333333333333333333333333333333333333333333333333
+0114 3333333333333333333333333333333333333333333333333333333
+0115 3333333333333333333333333333333333333333333333333333333
+0116 3333333333333333333333333333333333333333333333333333333
+0117 3333333333333333333333333333333333333333333333333333333
+0118 3333333333333333333333333333333333333333333333333333333
+0119 3333333333333333333333333333333333333333333333333333333
+0120 3333333333333333333333333333333333333333333333333333333
+0121 3333333333333333333333333333333333333333333333333333333
+0122 3333333333333333333333333333333333333333333333333333333
+0123 3333333333333333333333333333333333333333333333333333333
+0124 3333333333333333333333333333333333333333333333333333333
+0125 3333333333333333333333333333333333333333333333333333333
+0126 3333333333333333333333333333333333333333333333333333333
+0127 3333333333333333333333333333333333333333333333333333333
+0128 3333333333333333333333333333333333333333333333333333333
+0129 3333333333333333333333333333333333333333333333333333333
+0130 3333333333333333333333333333333333333333333333333333333
+0131 3333333333333333333333333333333333333333333333333333333
+0132 3333333333333333333333333333333333333333333333333333333
+0133 3333333333333333333333333333333333333333333333333333333
+0134 3333333333333333333333333333333333333333333333333333333
+0135 3333333333333333333333333333333333333333333333333333333
+0136 3333333333333333333333333333333333333333333333333333333
+0137 3333333333333333333333333333333333333333333333333333333
+0138 3333333333333333333333333333333333333333333333333333333
+0139 3333333333333333333333333333333333333333333333333333333
+0140 3333333333333333333333333333333333333333333333333333333
+0141 3333333333333333333333333333333333333333333333333333333
+0142 3333333333333333333333333333333333333333333333333333333
+0143 3333333333333333333333333333333333333333333333333333333
+0144 3333333333333333333333333333333333333333333333333333333
+0145 3333333333333333333333333333333333333333333333333333333
+0146 3333333333333333333333333333333333333333333333333333333
+0147 3333333333333333333333333333333333333333333333333333333
+0148 3333333333333333333333333333333333333333333333333333333
+0149 3333333333333333333333333333333333333333333333333333333
+0150 3333333333333333333333333333333333333333333333333333333
+0151 3333333333333333333333333333333333333333333333333333333
+0152 3333333333333333333333333333333333333333333333333333333
+0153 3333333333333333333333333333333333333333333333333333333
+0154 3333333333333333333333333333333333333333333333333333333
+0155 3333333333333333333333333333333333333333333333333333333
+0156 3333333333333333333333333333333333333333333333333333333
+0157 3333333333333333333333333333333333333333333333333333333
+0158 3333333333333333333333333333333333333333333333333333333
+0159 3333333333333333333333333333333333333333333333333333333
+0160 3333333333333333333333333333333333333333333333333333333
+0161 3333333333333333333333333333333333333333333333333333333
+0162 3333333333333333333333333333333333333333333333333333333
+0163 3333333333333333333333333333333333333333333333333333333
+0164 3333333333333333333333333333333333333333333333333333333
+0165 3333333333333333333333333333333333333333333333333333333
+0166 3333333333333333333333333333333333333333333333333333333
+0167 3333333333333333333333333333333333333333333333333333333
+0168 3333333333333333333333333333333333333333333333333333333
+0169 3333333333333333333333333333333333333333333333333333333
+0170 3333333333333333333333333333333333333333333333333333333
+0171 3333333333333333333333333333333333333333333333333333333
+0172 3333333333333333333333333333333333333333333333333333333
+0173 3333333333333333333333333333333333333333333333333333333
+0174 3333333333333333333333333333333333333333333333333333333
+0175 3333333333333333333333333333333333333333333333333333333
+0176 3333333333333333333333333333333333333333333333333333333
+0177 3333333333333333333333333333333333333333333333333333333
+0178 3333333333333333333333333333333333333333333333333333333
+0179 3333333333333333333333333333333333333333333333333333333
+0180 3333333333333333333333333333333333333333333333333333333
+0181 3333333333333333333333333333333333333333333333333333333
+0182 3333333333333333333333333333333333333333333333333333333
+0183 3333333333333333333333333333333333333333333333333333333
+0184 3333333333333333333333333333333333333333333333333333333
+0185 3333333333333333333333333333333333333333333333333333333
+0186 3333333333333333333333333333333333333333333333333333333
+0187 3333333333333333333333333333333333333333333333333333333
+0188 3333333333333333333333333333333333333333333333333333333
+0189 3333333333333333333333333333333333333333333333333333333
+0190 3333333333333333333333333333333333333333333333333333333
+0191 3333333333333333333333333333333333333333333333333333333
+0192 3333333333333333333333333333333333333333333333333333333
+0193 3333333333333333333333333333333333333333333333333333333
+0194 3333333333333333333333333333333333333333333333333333333
+0195 3333333333333333333333333333333333333333333333333333333
+0196 3333333333333333333333333333333333333333333333333333333
+0197 3333333333333333333333333333333333333333333333333333333
+0198 3333333333333333333333333333333333333333333333333333333
+0199 3333333333333333333333333333333333333333333333333333333
+0200 3333333333333333333333333333333333333333333333333333333
+0201 3333333333333333333333333333333333333333333333333333333
+0202 3333333333333333333333333333333333333333333333333333333
+0203 3333333333333333333333333333333333333333333333333333333
+0204 3333333333333333333333333333333333333333333333333333333
+0205 3333333333333333333333333333333333333333333333333333333
+0206 3333333333333333333333333333333333333333333333333333333
+0207 3333333333333333333333333333333333333333333333333333333
+0208 3333333333333333333333333333333333333333333333333333333
+0209 3333333333333333333333333333333333333333333333333333333
+0210 3333333333333333333333333333333333333333333333333333333
+0211 3333333333333333333333333333333333333333333333333333333
+0212 3333333333333333333333333333333333333333333333333333333
+0213 3333333333333333333333333333333333333333333333333333333
+0214 3333333333333333333333333333333333333333333333333333333
+0215 3333333333333333333333333333333333333333333333333333333
+0216 3333333333333333333333333333333333333333333333333333333
+0217 3333333333333333333333333333333333333333333333333333333
+0218 3333333333333333333333333333333333333333333333333333333
+0219 3333333333333333333333333333333333333333333333333333333
+0220 3333333333333333333333333333333333333333333333333333333
+0221 3333333333333333333333333333333333333333333333333333333
+0222 3333333333333333333333333333333333333333333333333333333
+0223 3333333333333333333333333333333333333333333333333333333
+0224 3333333333333333333333333333333333333333333333333333333
+0225 3333333333333333333333333333333333333333333333333333333
+0226 3333333333333333333333333333333333333333333333333333333
+0227 3333333333333333333333333333333333333333333333333333333
+0228 3333333333333333333333333333333333333333333333333333333
+0229 3333333333333333333333333333333333333333333333333333333
+0230 3333333333333333333333333333333333333333333333333333333
+0231 3333333333333333333333333333333333333333333333333333333
+0232 3333333333333333333333333333333333333333333333333333333
+0233 3333333333333333333333333333333333333333333333333333333
+0234 3333333333333333333333333333333333333333333333333333333
+0235 3333333333333333333333333333333333333333333333333333333
+0236 3333333333333333333333333333333333333333333333333333333
+0237 3333333333333333333333333333333333333333333333333333333
+0238 3333333333333333333333333333333333333333333333333333333
+0239 3333333333333333333333333333333333333333333333333333333
+0240 3333333333333333333333333333333333333333333333333333333
+0241 3333333333333333333333333333333333333333333333333333333
+0242 3333333333333333333333333333333333333333333333333333333
+0243 3333333333333333333333333333333333333333333333333333333
+0244 3333333333333333333333333333333333333333333333333333333
+0245 3333333333333333333333333333333333333333333333333333333
+0246 3333333333333333333333333333333333333333333333333333333
+0247 3333333333333333333333333333333333333333333333333333333
+0248 3333333333333333333333333333333333333333333333333333333
+0249 3333333333333333333333333333333333333333333333333333333
+0250 3333333333333333333333333333333333333333333333333333333
+0251 3333333333333333333333333333333333333333333333333333333
+0252 3333333333333333333333333333333333333333333333333333333
+0253 3333333333333333333333333333333333333333333333333333333
+0254 3333333333333333333333333333333333333333333333333333333
+0255 3333333333333333333333333333333333333333333333333333333
+0256 3333333333333333333333333333333333333333333333333333333
+0257 3333333333333333333333333333333333333333333333333333333
+0258 3333333333333333333333333333333333333333333333333333333
+0259 3333333333333333333333333333333333333333333333333333333
+0260 3333333333333333333333333333333333333333333333333333333
+0261 3333333333333333333333333333333333333333333333333333333
+0262 3333333333333333333333333333333333333333333333333333333
+0263 3333333333333333333333333333333333333333333333333333333
+0264 3333333333333333333333333333333333333333333333333333333
+0265 3333333333333333333333333333333333333333333333333333333
+0266 3333333333333333333333333333333333333333333333333333333
+0267 3333333333333333333333333333333333333333333333333333333
+0268 3333333333333333333333333333333333333333333333333333333
+0269 3333333333333333333333333333333333333333333333333333333
+0270 3333333333333333333333333333333333333333333333333333333
+0271 3333333333333333333333333333333333333333333333333333333
+0272 3333333333333333333333333333333333333333333333333333333
+0273 3333333333333333333333333333333333333333333333333333333
+0274 3333333333333333333333333333333333333333333333333333333
+0275 3333333333333333333333333333333333333333333333333333333
+0276 3333333333333333333333333333333333333333333333333333333
+0277 3333333333333333333333333333333333333333333333333333333
+0278 3333333333333333333333333333333333333333333333333333333
+0279 3333333333333333333333333333333333333333333333333333333
+0280 3333333333333333333333333333333333333333333333333333333
+0281 3333333333333333333333333333333333333333333333333333333
+0282 3333333333333333333333333333333333333333333333333333333
+0283 3333333333333333333333333333333333333333333333333333333
+0284 3333333333333333333333333333333333333333333333333333333
+0285 3333333333333333333333333333333333333333333333333333333
+0286 3333333333333333333333333333333333333333333333333333333
+0287 3333333333333333333333333333333333333333333333333333333
+0288 3333333333333333333333333333333333333333333333333333333
+0289 3333333333333333333333333333333333333333333333333333333
+0290 3333333333333333333333333333333333333333333333333333333
+0291 3333333333333333333333333333333333333333333333333333333
+0292 3333333333333333333333333333333333333333333333333333333
+0293 3333333333333333333333333333333333333333333333333333333
+0294 3333333333333333333333333333333333333333333333333333333
+0295 3333333333333333333333333333333333333333333333333333333
+0296 3333333333333333333333333333333333333333333333333333333
+0297 3333333333333333333333333333333333333333333333333333333
+0298 3333333333333333333333333333333333333333333333333333333
+0299 3333333333333333333333333333333333333333333333333333333
+0300 3333333333333333333333333333333333333333333333333333333
+0301 3333333333333333333333333333333333333333333333333333333
+0302 3333333333333333333333333333333333333333333333333333333
+0303 3333333333333333333333333333333333333333333333333333333
+0304 3333333333333333333333333333333333333333333333333333333
+0305 3333333333333333333333333333333333333333333333333333333
+0306 3333333333333333333333333333333333333333333333333333333
+0307 3333333333333333333333333333333333333333333333333333333
+0308 3333333333333333333333333333333333333333333333333333333
+0309 3333333333333333333333333333333333333333333333333333333
+0310 3333333333333333333333333333333333333333333333333333333
+0311 3333333333333333333333333333333333333333333333333333333
+0312 3333333333333333333333333333333333333333333333333333333
+0313 3333333333333333333333333333333333333333333333333333333
+0314 3333333333333333333333333333333333333333333333333333333
+0315 3333333333333333333333333333333333333333333333333333333
+0316 3333333333333333333333333333333333333333333333333333333
+0317 3333333333333333333333333333333333333333333333333333333
+0318 3333333333333333333333333333333333333333333333333333333
+0319 3333333333333333333333333333333333333333333333333333333
+0320 3333333333333333333333333333333333333333333333333333333
+0321 3333333333333333333333333333333333333333333333333333333
+0322 3333333333333333333333333333333333333333333333333333333
+0323 3333333333333333333333333333333333333333333333333333333
+0324 3333333333333333333333333333333333333333333333333333333
+0325 3333333333333333333333333333333333333333333333333333333
+0326 3333333333333333333333333333333333333333333333333333333
+0327 3333333333333333333333333333333333333333333333333333333
+0328 3333333333333333333333333333333333333333333333333333333
+0329 3333333333333333333333333333333333333333333333333333333
+0330 3333333333333333333333333333333333333333333333333333333
+0331 3333333333333333333333333333333333333333333333333333333
+0332 3333333333333333333333333333333333333333333333333333333
+0333 3333333333333333333333333333333333333333333333333333333
+0334 3333333333333333333333333333333333333333333333333333333
+0335 3333333333333333333333333333333333333333333333333333333
+0336 3333333333333333333333333333333333333333333333333333333
+0337 3333333333333333333333333333333333333333333333333333333
+0338 3333333333333333333333333333333333333333333333333333333
+0339 3333333333333333333333333333333333333333333333333333333
+0340 3333333333333333333333333333333333333333333333333333333
+0341 3333333333333333333333333333333333333333333333333333333
+0342 3333333333333333333333333333333333333333333333333333333
+0343 3333333333333333333333333333333333333333333333333333333
+0344 3333333333333333333333333333333333333333333333333333333
+0345 3333333333333333333333333333333333333333333333333333333
+0346 3333333333333333333333333333333333333333333333333333333
+0347 3333333333333333333333333333333333333333333333333333333
+0348 3333333333333333333333333333333333333333333333333333333
+0349 3333333333333333333333333333333333333333333333333333333
+0350 3333333333333333333333333333333333333333333333333333333
+0351 3333333333333333333333333333333333333333333333333333333
+0352 3333333333333333333333333333333333333333333333333333333
+0353 3333333333333333333333333333333333333333333333333333333
+0354 3333333333333333333333333333333333333333333333333333333
+0355 3333333333333333333333333333333333333333333333333333333
+0356 3333333333333333333333333333333333333333333333333333333
+0357 3333333333333333333333333333333333333333333333333333333
+0358 3333333333333333333333333333333333333333333333333333333
+0359 3333333333333333333333333333333333333333333333333333333
+0360 3333333333333333333333333333333333333333333333333333333
+0361 3333333333333333333333333333333333333333333333333333333
+0362 3333333333333333333333333333333333333333333333333333333
+0363 3333333333333333333333333333333333333333333333333333333
+0364 3333333333333333333333333333333333333333333333333333333
+0365 3333333333333333333333333333333333333333333333333333333
+0366 3333333333333333333333333333333333333333333333333333333
+0367 3333333333333333333333333333333333333333333333333333333
+0368 3333333333333333333333333333333333333333333333333333333
+0369 3333333333333333333333333333333333333333333333333333333
+0370 3333333333333333333333333333333333333333333333333333333
+0371 3333333333333333333333333333333333333333333333333333333
+0372 3333333333333333333333333333333333333333333333333333333
+0373 3333333333333333333333333333333333333333333333333333333
+0374 3333333333333333333333333333333333333333333333333333333
+0375 3333333333333333333333333333333333333333333333333333333
+0376 3333333333333333333333333333333333333333333333333333333
+0377 3333333333333333333333333333333333333333333333333333333
+0378 3333333333333333333333333333333333333333333333333333333
+0379 3333333333333333333333333333333333333333333333333333333
+0380 3333333333333333333333333333333333333333333333333333333
+0381 3333333333333333333333333333333333333333333333333333333
+0382 3333333333333333333333333333333333333333333333333333333
+0383 3333333333333333333333333333333333333333333333333333333
+0384 3333333333333333333333333333333333333333333333333333333
+0385 3333333333333333333333333333333333333333333333333333333
+0386 3333333333333333333333333333333333333333333333333333333
+0387 3333333333333333333333333333333333333333333333333333333
+0388 3333333333333333333333333333333333333333333333333333333
+0389 3333333333333333333333333333333333333333333333333333333
+0390 3333333333333333333333333333333333333333333333333333333
+0391 3333333333333333333333333333333333333333333333333333333
+0392 3333333333333333333333333333333333333333333333333333333
+0393 3333333333333333333333333333333333333333333333333333333
+0394 3333333333333333333333333333333333333333333333333333333
+0395 3333333333333333333333333333333333333333333333333333333
+0396 3333333333333333333333333333333333333333333333333333333
+0397 3333333333333333333333333333333333333333333333333333333
+0398 3333333333333333333333333333333333333333333333333333333
+0399 3333333333333333333333333333333333333333333333333333333
+0400 3333333333333333333333333333333333333333333333333333333
+0401 3333333333333333333333333333333333333333333333333333333
+0402 3333333333333333333333333333333333333333333333333333333
+0403 3333333333333333333333333333333333333333333333333333333
+0404 3333333333333333333333333333333333333333333333333333333
+0405 3333333333333333333333333333333333333333333333333333333
+0406 3333333333333333333333333333333333333333333333333333333
+0407 3333333333333333333333333333333333333333333333333333333
+0408 3333333333333333333333333333333333333333333333333333333
+0409 3333333333333333333333333333333333333333333333333333333
+0410 3333333333333333333333333333333333333333333333333333333
+0411 3333333333333333333333333333333333333333333333333333333
+0412 3333333333333333333333333333333333333333333333333333333
+0413 3333333333333333333333333333333333333333333333333333333
+0414 3333333333333333333333333333333333333333333333333333333
+0415 3333333333333333333333333333333333333333333333333333333
+0416 3333333333333333333333333333333333333333333333333333333
+0417 3333333333333333333333333333333333333333333333333333333
+0418 3333333333333333333333333333333333333333333333333333333
+0419 3333333333333333333333333333333333333333333333333333333
+0420 3333333333333333333333333333333333333333333333333333333
+0421 3333333333333333333333333333333333333333333333333333333
+0422 3333333333333333333333333333333333333333333333333333333
+0423 3333333333333333333333333333333333333333333333333333333
+0424 3333333333333333333333333333333333333333333333333333333
+0425 3333333333333333333333333333333333333333333333333333333
+0426 3333333333333333333333333333333333333333333333333333333
+0427 3333333333333333333333333333333333333333333333333333333
+0428 3333333333333333333333333333333333333333333333333333333
+0429 3333333333333333333333333333333333333333333333333333333
+0430 3333333333333333333333333333333333333333333333333333333
+0431 3333333333333333333333333333333333333333333333333333333
+0432 3333333333333333333333333333333333333333333333333333333
+0433 3333333333333333333333333333333333333333333333333333333
+0434 3333333333333333333333333333333333333333333333333333333
+0435 3333333333333333333333333333333333333333333333333333333
+0436 3333333333333333333333333333333333333333333333333333333
+0437 3333333333333333333333333333333333333333333333333333333
+0438 3333333333333333333333333333333333333333333333333333333
+0439 3333333333333333333333333333333333333333333333333333333
+0440 3333333333333333333333333333333333333333333333333333333
+0441 3333333333333333333333333333333333333333333333333333333
+0442 3333333333333333333333333333333333333333333333333333333
+0443 3333333333333333333333333333333333333333333333333333333
+0444 3333333333333333333333333333333333333333333333333333333
+0445 3333333333333333333333333333333333333333333333333333333
+0446 3333333333333333333333333333333333333333333333333333333
+0447 3333333333333333333333333333333333333333333333333333333
+0448 3333333333333333333333333333333333333333333333333333333
+0449 3333333333333333333333333333333333333333333333333333333
+0450 3333333333333333333333333333333333333333333333333333333
+0451 3333333333333333333333333333333333333333333333333333333
+0452 3333333333333333333333333333333333333333333333333333333
+0453 3333333333333333333333333333333333333333333333333333333
+0454 3333333333333333333333333333333333333333333333333333333
+0455 3333333333333333333333333333333333333333333333333333333
+0456 3333333333333333333333333333333333333333333333333333333
+0457 3333333333333333333333333333333333333333333333333333333
+0458 3333333333333333333333333333333333333333333333333333333
+0459 3333333333333333333333333333333333333333333333333333333
+0460 3333333333333333333333333333333333333333333333333333333
+0461 3333333333333333333333333333333333333333333333333333333
+0462 3333333333333333333333333333333333333333333333333333333
+0463 3333333333333333333333333333333333333333333333333333333
+0464 3333333333333333333333333333333333333333333333333333333
+0465 3333333333333333333333333333333333333333333333333333333
+0466 3333333333333333333333333333333333333333333333333333333
+0467 3333333333333333333333333333333333333333333333333333333
+0468 3333333333333333333333333333333333333333333333333333333
+0469 3333333333333333333333333333333333333333333333333333333
+0470 3333333333333333333333333333333333333333333333333333333
+0471 3333333333333333333333333333333333333333333333333333333
+0472 3333333333333333333333333333333333333333333333333333333
+0473 3333333333333333333333333333333333333333333333333333333
+0474 3333333333333333333333333333333333333333333333333333333
+0475 3333333333333333333333333333333333333333333333333333333
+0476 3333333333333333333333333333333333333333333333333333333
+0477 3333333333333333333333333333333333333333333333333333333
+0478 3333333333333333333333333333333333333333333333333333333
+0479 3333333333333333333333333333333333333333333333333333333
+0480 3333333333333333333333333333333333333333333333333333333
+0481 3333333333333333333333333333333333333333333333333333333
+0482 3333333333333333333333333333333333333333333333333333333
+0483 3333333333333333333333333333333333333333333333333333333
+0484 3333333333333333333333333333333333333333333333333333333
+0485 3333333333333333333333333333333333333333333333333333333
+0486 3333333333333333333333333333333333333333333333333333333
+0487 3333333333333333333333333333333333333333333333333333333
+0488 3333333333333333333333333333333333333333333333333333333
+0489 3333333333333333333333333333333333333333333333333333333
+0490 3333333333333333333333333333333333333333333333333333333
+0491 3333333333333333333333333333333333333333333333333333333
+0492 3333333333333333333333333333333333333333333333333333333
+0493 3333333333333333333333333333333333333333333333333333333
+0494 3333333333333333333333333333333333333333333333333333333
+0495 3333333333333333333333333333333333333333333333333333333
+0496 3333333333333333333333333333333333333333333333333333333
+0497 3333333333333333333333333333333333333333333333333333333
+0498 3333333333333333333333333333333333333333333333333333333
+0499 3333333333333333333333333333333333333333333333333333333
+0500 3333333333333333333333333333333333333333333333333333333
+0501 3333333333333333333333333333333333333333333333333333333
+0502 3333333333333333333333333333333333333333333333333333333
+0503 3333333333333333333333333333333333333333333333333333333
+0504 3333333333333333333333333333333333333333333333333333333
+0505 3333333333333333333333333333333333333333333333333333333
+0506 3333333333333333333333333333333333333333333333333333333
+0507 3333333333333333333333333333333333333333333333333333333
+0508 3333333333333333333333333333333333333333333333333333333
+0509 3333333333333333333333333333333333333333333333333333333
+0510 3333333333333333333333333333333333333333333333333333333
+0511 3333333333333333333333333333333333333333333333333333333
+0512 3333333333333333333333333333333333333333333333333333333
+0513 3333333333333333333333333333333333333333333333333333333
+0514 3333333333333333333333333333333333333333333333333333333
+0515 3333333333333333333333333333333333333333333333333333333
+0516 3333333333333333333333333333333333333333333333333333333
+0517 3333333333333333333333333333333333333333333333333333333
+0518 3333333333333333333333333333333333333333333333333333333
+0519 3333333333333333333333333333333333333333333333333333333
+0520 3333333333333333333333333333333333333333333333333333333
+0521 3333333333333333333333333333333333333333333333333333333
+0522 3333333333333333333333333333333333333333333333333333333
+0523 3333333333333333333333333333333333333333333333333333333
+0524 3333333333333333333333333333333333333333333333333333333
+0525 3333333333333333333333333333333333333333333333333333333
+0526 3333333333333333333333333333333333333333333333333333333
+0527 3333333333333333333333333333333333333333333333333333333
+0528 3333333333333333333333333333333333333333333333333333333
+0529 3333333333333333333333333333333333333333333333333333333
+0530 3333333333333333333333333333333333333333333333333333333
+0531 3333333333333333333333333333333333333333333333333333333
+0532 3333333333333333333333333333333333333333333333333333333
+0533 3333333333333333333333333333333333333333333333333333333
+0534 3333333333333333333333333333333333333333333333333333333
+0535 3333333333333333333333333333333333333333333333333333333
+0536 3333333333333333333333333333333333333333333333333333333
+0537 3333333333333333333333333333333333333333333333333333333
+0538 3333333333333333333333333333333333333333333333333333333
+0539 3333333333333333333333333333333333333333333333333333333
+0540 3333333333333333333333333333333333333333333333333333333
+0541 3333333333333333333333333333333333333333333333333333333
+0542 3333333333333333333333333333333333333333333333333333333
+0543 3333333333333333333333333333333333333333333333333333333
+0544 3333333333333333333333333333333333333333333333333333333
+0545 3333333333333333333333333333333333333333333333333333333
+0546 3333333333333333333333333333333333333333333333333333333
+0547 3333333333333333333333333333333333333333333333333333333
+0548 3333333333333333333333333333333333333333333333333333333
+0549 3333333333333333333333333333333333333333333333333333333
+0550 3333333333333333333333333333333333333333333333333333333
+0551 3333333333333333333333333333333333333333333333333333333
+0552 3333333333333333333333333333333333333333333333333333333
+0553 3333333333333333333333333333333333333333333333333333333
+0554 3333333333333333333333333333333333333333333333333333333
+0555 3333333333333333333333333333333333333333333333333333333
+0556 3333333333333333333333333333333333333333333333333333333
+0557 3333333333333333333333333333333333333333333333333333333
+0558 3333333333333333333333333333333333333333333333333333333
+0559 3333333333333333333333333333333333333333333333333333333
+0560 3333333333333333333333333333333333333333333333333333333
+0561 3333333333333333333333333333333333333333333333333333333
+0562 3333333333333333333333333333333333333333333333333333333
+0563 3333333333333333333333333333333333333333333333333333333
+0564 3333333333333333333333333333333333333333333333333333333
+0565 3333333333333333333333333333333333333333333333333333333
+0566 3333333333333333333333333333333333333333333333333333333
+0567 3333333333333333333333333333333333333333333333333333333
+0568 3333333333333333333333333333333333333333333333333333333
+0569 3333333333333333333333333333333333333333333333333333333
+0570 3333333333333333333333333333333333333333333333333333333
+0571 3333333333333333333333333333333333333333333333333333333
+0572 3333333333333333333333333333333333333333333333333333333
+0573 3333333333333333333333333333333333333333333333333333333
+0574 3333333333333333333333333333333333333333333333333333333
+0575 3333333333333333333333333333333333333333333333333333333
+0576 3333333333333333333333333333333333333333333333333333333
+0577 3333333333333333333333333333333333333333333333333333333
+0578 3333333333333333333333333333333333333333333333333333333
+0579 3333333333333333333333333333333333333333333333333333333
+0580 3333333333333333333333333333333333333333333333333333333
+0581 3333333333333333333333333333333333333333333333333333333
+0582 3333333333333333333333333333333333333333333333333333333
+0583 3333333333333333333333333333333333333333333333333333333
+0584 3333333333333333333333333333333333333333333333333333333
+0585 3333333333333333333333333333333333333333333333333333333
+0586 3333333333333333333333333333333333333333333333333333333
+0587 3333333333333333333333333333333333333333333333333333333
+0588 3333333333333333333333333333333333333333333333333333333
+0589 3333333333333333333333333333333333333333333333333333333
+0590 3333333333333333333333333333333333333333333333333333333
+0591 3333333333333333333333333333333333333333333333333333333
+0592 3333333333333333333333333333333333333333333333333333333
+0593 3333333333333333333333333333333333333333333333333333333
+0594 3333333333333333333333333333333333333333333333333333333
+0595 3333333333333333333333333333333333333333333333333333333
+0596 3333333333333333333333333333333333333333333333333333333
+0597 3333333333333333333333333333333333333333333333333333333
+0598 3333333333333333333333333333333333333333333333333333333
+0599 3333333333333333333333333333333333333333333333333333333
+0600 3333333333333333333333333333333333333333333333333333333
+0601 3333333333333333333333333333333333333333333333333333333
+0602 3333333333333333333333333333333333333333333333333333333
+0603 3333333333333333333333333333333333333333333333333333333
+0604 3333333333333333333333333333333333333333333333333333333
+0605 3333333333333333333333333333333333333333333333333333333
+0606 3333333333333333333333333333333333333333333333333333333
+0607 3333333333333333333333333333333333333333333333333333333
+0608 3333333333333333333333333333333333333333333333333333333
+0609 3333333333333333333333333333333333333333333333333333333
+0610 3333333333333333333333333333333333333333333333333333333
+0611 3333333333333333333333333333333333333333333333333333333
+0612 3333333333333333333333333333333333333333333333333333333
+0613 3333333333333333333333333333333333333333333333333333333
+0614 3333333333333333333333333333333333333333333333333333333
+0615 3333333333333333333333333333333333333333333333333333333
+0616 3333333333333333333333333333333333333333333333333333333
+0617 3333333333333333333333333333333333333333333333333333333
+0618 3333333333333333333333333333333333333333333333333333333
+0619 3333333333333333333333333333333333333333333333333333333
+0620 3333333333333333333333333333333333333333333333333333333
+0621 3333333333333333333333333333333333333333333333333333333
+0622 3333333333333333333333333333333333333333333333333333333
+0623 3333333333333333333333333333333333333333333333333333333
+0624 3333333333333333333333333333333333333333333333333333333
+0625 3333333333333333333333333333333333333333333333333333333
+0626 3333333333333333333333333333333333333333333333333333333
+0627 3333333333333333333333333333333333333333333333333333333
+0628 3333333333333333333333333333333333333333333333333333333
+0629 3333333333333333333333333333333333333333333333333333333
+0630 3333333333333333333333333333333333333333333333333333333
+0631 3333333333333333333333333333333333333333333333333333333
+0632 3333333333333333333333333333333333333333333333333333333
+0633 3333333333333333333333333333333333333333333333333333333
+0634 3333333333333333333333333333333333333333333333333333333
+0635 3333333333333333333333333333333333333333333333333333333
+0636 3333333333333333333333333333333333333333333333333333333
+0637 3333333333333333333333333333333333333333333333333333333
+0638 3333333333333333333333333333333333333333333333333333333
+0639 3333333333333333333333333333333333333333333333333333333
+0640 3333333333333333333333333333333333333333333333333333333
+0641 3333333333333333333333333333333333333333333333333333333
+0642 3333333333333333333333333333333333333333333333333333333
+0643 3333333333333333333333333333333333333333333333333333333
+0644 3333333333333333333333333333333333333333333333333333333
+0645 3333333333333333333333333333333333333333333333333333333
+0646 3333333333333333333333333333333333333333333333333333333
+0647 3333333333333333333333333333333333333333333333333333333
+0648 3333333333333333333333333333333333333333333333333333333
+0649 3333333333333333333333333333333333333333333333333333333
+0650 3333333333333333333333333333333333333333333333333333333
+0651 3333333333333333333333333333333333333333333333333333333
+0652 3333333333333333333333333333333333333333333333333333333
+0653 3333333333333333333333333333333333333333333333333333333
+0654 3333333333333333333333333333333333333333333333333333333
+0655 3333333333333333333333333333333333333333333333333333333
+0656 3333333333333333333333333333333333333333333333333333333
+0657 3333333333333333333333333333333333333333333333333333333
+0658 3333333333333333333333333333333333333333333333333333333
+0659 3333333333333333333333333333333333333333333333333333333
+0660 3333333333333333333333333333333333333333333333333333333
+0661 3333333333333333333333333333333333333333333333333333333
+0662 3333333333333333333333333333333333333333333333333333333
+0663 3333333333333333333333333333333333333333333333333333333
+0664 3333333333333333333333333333333333333333333333333333333
+0665 3333333333333333333333333333333333333333333333333333333
+0666 3333333333333333333333333333333333333333333333333333333
+0667 3333333333333333333333333333333333333333333333333333333
+0668 3333333333333333333333333333333333333333333333333333333
+0669 3333333333333333333333333333333333333333333333333333333
+0670 3333333333333333333333333333333333333333333333333333333
+0671 3333333333333333333333333333333333333333333333333333333
+0672 3333333333333333333333333333333333333333333333333333333
+0673 3333333333333333333333333333333333333333333333333333333
+0674 3333333333333333333333333333333333333333333333333333333
+0675 3333333333333333333333333333333333333333333333333333333
+0676 3333333333333333333333333333333333333333333333333333333
+0677 3333333333333333333333333333333333333333333333333333333
+0678 3333333333333333333333333333333333333333333333333333333
+0679 3333333333333333333333333333333333333333333333333333333
+0680 3333333333333333333333333333333333333333333333333333333
+0681 3333333333333333333333333333333333333333333333333333333
+0682 3333333333333333333333333333333333333333333333333333333
+0683 3333333333333333333333333333333333333333333333333333333
+0684 3333333333333333333333333333333333333333333333333333333
+0685 3333333333333333333333333333333333333333333333333333333
+0686 3333333333333333333333333333333333333333333333333333333
+0687 3333333333333333333333333333333333333333333333333333333
+0688 3333333333333333333333333333333333333333333333333333333
+0689 3333333333333333333333333333333333333333333333333333333
+0690 3333333333333333333333333333333333333333333333333333333
+0691 3333333333333333333333333333333333333333333333333333333
+0692 3333333333333333333333333333333333333333333333333333333
+0693 3333333333333333333333333333333333333333333333333333333
+0694 3333333333333333333333333333333333333333333333333333333
+0695 3333333333333333333333333333333333333333333333333333333
+0696 3333333333333333333333333333333333333333333333333333333
+0697 3333333333333333333333333333333333333333333333333333333
+0698 3333333333333333333333333333333333333333333333333333333
+0699 3333333333333333333333333333333333333333333333333333333
+0700 3333333333333333333333333333333333333333333333333333333
+0701 3333333333333333333333333333333333333333333333333333333
+0702 3333333333333333333333333333333333333333333333333333333
+0703 3333333333333333333333333333333333333333333333333333333
+0704 3333333333333333333333333333333333333333333333333333333
+0705 3333333333333333333333333333333333333333333333333333333
+0706 3333333333333333333333333333333333333333333333333333333
+0707 3333333333333333333333333333333333333333333333333333333
+0708 3333333333333333333333333333333333333333333333333333333
+0709 3333333333333333333333333333333333333333333333333333333
+0710 3333333333333333333333333333333333333333333333333333333
+0711 3333333333333333333333333333333333333333333333333333333
+0712 3333333333333333333333333333333333333333333333333333333
+0713 3333333333333333333333333333333333333333333333333333333
+0714 3333333333333333333333333333333333333333333333333333333
+0715 3333333333333333333333333333333333333333333333333333333
+0716 3333333333333333333333333333333333333333333333333333333
+0717 3333333333333333333333333333333333333333333333333333333
+0718 3333333333333333333333333333333333333333333333333333333
+0719 3333333333333333333333333333333333333333333333333333333
+0720 3333333333333333333333333333333333333333333333333333333
+0721 3333333333333333333333333333333333333333333333333333333
+0722 3333333333333333333333333333333333333333333333333333333
+0723 3333333333333333333333333333333333333333333333333333333
+0724 3333333333333333333333333333333333333333333333333333333
+0725 3333333333333333333333333333333333333333333333333333333
+0726 3333333333333333333333333333333333333333333333333333333
+0727 3333333333333333333333333333333333333333333333333333333
+0728 3333333333333333333333333333333333333333333333333333333
+0729 3333333333333333333333333333333333333333333333333333333
+0730 3333333333333333333333333333333333333333333333333333333
+0731 3333333333333333333333333333333333333333333333333333333
+0732 3333333333333333333333333333333333333333333333333333333
+0733 3333333333333333333333333333333333333333333333333333333
+0734 3333333333333333333333333333333333333333333333333333333
+0735 3333333333333333333333333333333333333333333333333333333
+0736 3333333333333333333333333333333333333333333333333333333
+0737 3333333333333333333333333333333333333333333333333333333
+0738 3333333333333333333333333333333333333333333333333333333
+0739 3333333333333333333333333333333333333333333333333333333
+0740 3333333333333333333333333333333333333333333333333333333
+0741 3333333333333333333333333333333333333333333333333333333
+0742 3333333333333333333333333333333333333333333333333333333
+0743 3333333333333333333333333333333333333333333333333333333
+0744 3333333333333333333333333333333333333333333333333333333
+0745 3333333333333333333333333333333333333333333333333333333
+0746 3333333333333333333333333333333333333333333333333333333
+0747 3333333333333333333333333333333333333333333333333333333
+0748 3333333333333333333333333333333333333333333333333333333
+0749 3333333333333333333333333333333333333333333333333333333
+0750 3333333333333333333333333333333333333333333333333333333
+0751 3333333333333333333333333333333333333333333333333333333
+0752 3333333333333333333333333333333333333333333333333333333
+0753 3333333333333333333333333333333333333333333333333333333
+0754 3333333333333333333333333333333333333333333333333333333
+0755 3333333333333333333333333333333333333333333333333333333
+0756 3333333333333333333333333333333333333333333333333333333
+0757 3333333333333333333333333333333333333333333333333333333
+0758 3333333333333333333333333333333333333333333333333333333
+0759 3333333333333333333333333333333333333333333333333333333
+0760 3333333333333333333333333333333333333333333333333333333
+0761 3333333333333333333333333333333333333333333333333333333
+0762 3333333333333333333333333333333333333333333333333333333
+0763 3333333333333333333333333333333333333333333333333333333
+0764 3333333333333333333333333333333333333333333333333333333
+0765 3333333333333333333333333333333333333333333333333333333
+0766 3333333333333333333333333333333333333333333333333333333
+0767 3333333333333333333333333333333333333333333333333333333
+0768 3333333333333333333333333333333333333333333333333333333
+0769 3333333333333333333333333333333333333333333333333333333
+0770 3333333333333333333333333333333333333333333333333333333
+0771 3333333333333333333333333333333333333333333333333333333
+0772 3333333333333333333333333333333333333333333333333333333
+0773 3333333333333333333333333333333333333333333333333333333
+0774 3333333333333333333333333333333333333333333333333333333
+0775 3333333333333333333333333333333333333333333333333333333
+0776 3333333333333333333333333333333333333333333333333333333
+0777 3333333333333333333333333333333333333333333333333333333
+0778 3333333333333333333333333333333333333333333333333333333
+0779 3333333333333333333333333333333333333333333333333333333
+0780 3333333333333333333333333333333333333333333333333333333
+0781 3333333333333333333333333333333333333333333333333333333
+0782 3333333333333333333333333333333333333333333333333333333
+0783 3333333333333333333333333333333333333333333333333333333
+0784 3333333333333333333333333333333333333333333333333333333
+0785 3333333333333333333333333333333333333333333333333333333
+0786 3333333333333333333333333333333333333333333333333333333
+0787 3333333333333333333333333333333333333333333333333333333
+0788 3333333333333333333333333333333333333333333333333333333
+0789 3333333333333333333333333333333333333333333333333333333
+0790 3333333333333333333333333333333333333333333333333333333
+0791 3333333333333333333333333333333333333333333333333333333
+0792 3333333333333333333333333333333333333333333333333333333
+0793 3333333333333333333333333333333333333333333333333333333
+0794 3333333333333333333333333333333333333333333333333333333
+0795 3333333333333333333333333333333333333333333333333333333
+0796 3333333333333333333333333333333333333333333333333333333
+0797 3333333333333333333333333333333333333333333333333333333
+0798 3333333333333333333333333333333333333333333333333333333
+0799 3333333333333333333333333333333333333333333333333333333
+0800 3333333333333333333333333333333333333333333333333333333
+0801 3333333333333333333333333333333333333333333333333333333
+0802 3333333333333333333333333333333333333333333333333333333
+0803 3333333333333333333333333333333333333333333333333333333
+0804 3333333333333333333333333333333333333333333333333333333
+0805 3333333333333333333333333333333333333333333333333333333
+0806 3333333333333333333333333333333333333333333333333333333
+0807 3333333333333333333333333333333333333333333333333333333
+0808 3333333333333333333333333333333333333333333333333333333
+0809 3333333333333333333333333333333333333333333333333333333
+0810 3333333333333333333333333333333333333333333333333333333
+0811 3333333333333333333333333333333333333333333333333333333
+0812 3333333333333333333333333333333333333333333333333333333
+0813 3333333333333333333333333333333333333333333333333333333
+0814 3333333333333333333333333333333333333333333333333333333
+0815 3333333333333333333333333333333333333333333333333333333
+0816 3333333333333333333333333333333333333333333333333333333
+0817 3333333333333333333333333333333333333333333333333333333
+0818 3333333333333333333333333333333333333333333333333333333
+0819 3333333333333333333333333333333333333333333333333333333
+0820 3333333333333333333333333333333333333333333333333333333
+0821 3333333333333333333333333333333333333333333333333333333
+0822 3333333333333333333333333333333333333333333333333333333
+0823 3333333333333333333333333333333333333333333333333333333
+0824 3333333333333333333333333333333333333333333333333333333
+0825 3333333333333333333333333333333333333333333333333333333
+0826 3333333333333333333333333333333333333333333333333333333
+0827 3333333333333333333333333333333333333333333333333333333
+0828 3333333333333333333333333333333333333333333333333333333
+0829 3333333333333333333333333333333333333333333333333333333
+0830 3333333333333333333333333333333333333333333333333333333
+0831 3333333333333333333333333333333333333333333333333333333
+0832 3333333333333333333333333333333333333333333333333333333
+0833 3333333333333333333333333333333333333333333333333333333
+0834 3333333333333333333333333333333333333333333333333333333
+0835 3333333333333333333333333333333333333333333333333333333
+0836 3333333333333333333333333333333333333333333333333333333
+0837 3333333333333333333333333333333333333333333333333333333
+0838 3333333333333333333333333333333333333333333333333333333
+0839 3333333333333333333333333333333333333333333333333333333
+0840 3333333333333333333333333333333333333333333333333333333
+0841 3333333333333333333333333333333333333333333333333333333
+0842 3333333333333333333333333333333333333333333333333333333
+0843 3333333333333333333333333333333333333333333333333333333
+0844 3333333333333333333333333333333333333333333333333333333
+0845 3333333333333333333333333333333333333333333333333333333
+0846 3333333333333333333333333333333333333333333333333333333
+0847 3333333333333333333333333333333333333333333333333333333
+0848 3333333333333333333333333333333333333333333333333333333
+0849 3333333333333333333333333333333333333333333333333333333
+0850 3333333333333333333333333333333333333333333333333333333
+0851 3333333333333333333333333333333333333333333333333333333
+0852 3333333333333333333333333333333333333333333333333333333
+0853 3333333333333333333333333333333333333333333333333333333
+0854 3333333333333333333333333333333333333333333333333333333
+0855 3333333333333333333333333333333333333333333333333333333
+0856 3333333333333333333333333333333333333333333333333333333
+0857 3333333333333333333333333333333333333333333333333333333
+0858 3333333333333333333333333333333333333333333333333333333
+0859 3333333333333333333333333333333333333333333333333333333
+0860 3333333333333333333333333333333333333333333333333333333
+0861 3333333333333333333333333333333333333333333333333333333
+0862 3333333333333333333333333333333333333333333333333333333
+0863 3333333333333333333333333333333333333333333333333333333
+0864 3333333333333333333333333333333333333333333333333333333
+0865 3333333333333333333333333333333333333333333333333333333
+0866 3333333333333333333333333333333333333333333333333333333
+0867 3333333333333333333333333333333333333333333333333333333
+0868 3333333333333333333333333333333333333333333333333333333
+0869 3333333333333333333333333333333333333333333333333333333
+0870 3333333333333333333333333333333333333333333333333333333
+0871 3333333333333333333333333333333333333333333333333333333
+0872 3333333333333333333333333333333333333333333333333333333
+0873 3333333333333333333333333333333333333333333333333333333
+0874 3333333333333333333333333333333333333333333333333333333
+0875 3333333333333333333333333333333333333333333333333333333
+0876 3333333333333333333333333333333333333333333333333333333
+0877 3333333333333333333333333333333333333333333333333333333
+0878 3333333333333333333333333333333333333333333333333333333
+0879 3333333333333333333333333333333333333333333333333333333
+0880 3333333333333333333333333333333333333333333333333333333
+0881 3333333333333333333333333333333333333333333333333333333
+0882 3333333333333333333333333333333333333333333333333333333
+0883 3333333333333333333333333333333333333333333333333333333
+0884 3333333333333333333333333333333333333333333333333333333
+0885 3333333333333333333333333333333333333333333333333333333
+0886 3333333333333333333333333333333333333333333333333333333
+0887 3333333333333333333333333333333333333333333333333333333
+0888 3333333333333333333333333333333333333333333333333333333
+0889 3333333333333333333333333333333333333333333333333333333
+0890 3333333333333333333333333333333333333333333333333333333
+0891 3333333333333333333333333333333333333333333333333333333
+0892 3333333333333333333333333333333333333333333333333333333
+0893 3333333333333333333333333333333333333333333333333333333
+0894 3333333333333333333333333333333333333333333333333333333
+0895 3333333333333333333333333333333333333333333333333333333
+0896 3333333333333333333333333333333333333333333333333333333
+0897 3333333333333333333333333333333333333333333333333333333
+0898 3333333333333333333333333333333333333333333333333333333
+0899 3333333333333333333333333333333333333333333333333333333
+0900 3333333333333333333333333333333333333333333333333333333
+0901 3333333333333333333333333333333333333333333333333333333
+0902 3333333333333333333333333333333333333333333333333333333
+0903 3333333333333333333333333333333333333333333333333333333
+0904 3333333333333333333333333333333333333333333333333333333
+0905 3333333333333333333333333333333333333333333333333333333
+0906 3333333333333333333333333333333333333333333333333333333
+0907 3333333333333333333333333333333333333333333333333333333
+0908 3333333333333333333333333333333333333333333333333333333
+0909 3333333333333333333333333333333333333333333333333333333
+0910 3333333333333333333333333333333333333333333333333333333
+0911 3333333333333333333333333333333333333333333333333333333
+0912 3333333333333333333333333333333333333333333333333333333
+0913 3333333333333333333333333333333333333333333333333333333
+0914 3333333333333333333333333333333333333333333333333333333
+0915 3333333333333333333333333333333333333333333333333333333
+0916 3333333333333333333333333333333333333333333333333333333
+0917 3333333333333333333333333333333333333333333333333333333
+0918 3333333333333333333333333333333333333333333333333333333
+0919 3333333333333333333333333333333333333333333333333333333
+0920 3333333333333333333333333333333333333333333333333333333
+0921 3333333333333333333333333333333333333333333333333333333
+0922 3333333333333333333333333333333333333333333333333333333
+0923 3333333333333333333333333333333333333333333333333333333
+0924 3333333333333333333333333333333333333333333333333333333
+0925 3333333333333333333333333333333333333333333333333333333
+0926 3333333333333333333333333333333333333333333333333333333
+0927 3333333333333333333333333333333333333333333333333333333
+0928 3333333333333333333333333333333333333333333333333333333
+0929 3333333333333333333333333333333333333333333333333333333
+0930 3333333333333333333333333333333333333333333333333333333
+0931 3333333333333333333333333333333333333333333333333333333
+0932 3333333333333333333333333333333333333333333333333333333
+0933 3333333333333333333333333333333333333333333333333333333
+0934 3333333333333333333333333333333333333333333333333333333
+0935 3333333333333333333333333333333333333333333333333333333
+0936 3333333333333333333333333333333333333333333333333333333
+0937 3333333333333333333333333333333333333333333333333333333
+0938 3333333333333333333333333333333333333333333333333333333
+0939 3333333333333333333333333333333333333333333333333333333
+0940 3333333333333333333333333333333333333333333333333333333
+0941 3333333333333333333333333333333333333333333333333333333
+0942 3333333333333333333333333333333333333333333333333333333
+0943 3333333333333333333333333333333333333333333333333333333
+0944 3333333333333333333333333333333333333333333333333333333
+0945 3333333333333333333333333333333333333333333333333333333
+0946 3333333333333333333333333333333333333333333333333333333
+0947 3333333333333333333333333333333333333333333333333333333
+0948 3333333333333333333333333333333333333333333333333333333
+0949 3333333333333333333333333333333333333333333333333333333
+0950 3333333333333333333333333333333333333333333333333333333
+0951 3333333333333333333333333333333333333333333333333333333
+0952 3333333333333333333333333333333333333333333333333333333
+0953 3333333333333333333333333333333333333333333333333333333
+0954 3333333333333333333333333333333333333333333333333333333
+0955 3333333333333333333333333333333333333333333333333333333
+0956 3333333333333333333333333333333333333333333333333333333
+0957 3333333333333333333333333333333333333333333333333333333
+0958 3333333333333333333333333333333333333333333333333333333
+0959 3333333333333333333333333333333333333333333333333333333
+0960 3333333333333333333333333333333333333333333333333333333
+0961 3333333333333333333333333333333333333333333333333333333
+0962 3333333333333333333333333333333333333333333333333333333
+0963 3333333333333333333333333333333333333333333333333333333
+0964 3333333333333333333333333333333333333333333333333333333
+0965 3333333333333333333333333333333333333333333333333333333
+0966 3333333333333333333333333333333333333333333333333333333
+0967 3333333333333333333333333333333333333333333333333333333
+0968 3333333333333333333333333333333333333333333333333333333
+0969 3333333333333333333333333333333333333333333333333333333
+0970 3333333333333333333333333333333333333333333333333333333
+0971 3333333333333333333333333333333333333333333333333333333
+0972 3333333333333333333333333333333333333333333333333333333
+0973 3333333333333333333333333333333333333333333333333333333
+0974 3333333333333333333333333333333333333333333333333333333
+0975 3333333333333333333333333333333333333333333333333333333
+0976 3333333333333333333333333333333333333333333333333333333
+0977 3333333333333333333333333333333333333333333333333333333
+0978 3333333333333333333333333333333333333333333333333333333
+0979 3333333333333333333333333333333333333333333333333333333
+0980 3333333333333333333333333333333333333333333333333333333
+0981 3333333333333333333333333333333333333333333333333333333
+0982 3333333333333333333333333333333333333333333333333333333
+0983 3333333333333333333333333333333333333333333333333333333
+0984 3333333333333333333333333333333333333333333333333333333
+0985 3333333333333333333333333333333333333333333333333333333
+0986 3333333333333333333333333333333333333333333333333333333
+0987 3333333333333333333333333333333333333333333333333333333
+0988 3333333333333333333333333333333333333333333333333333333
+0989 3333333333333333333333333333333333333333333333333333333
+0990 3333333333333333333333333333333333333333333333333333333
+0991 3333333333333333333333333333333333333333333333333333333
+0992 3333333333333333333333333333333333333333333333333333333
+0993 3333333333333333333333333333333333333333333333333333333
+0994 3333333333333333333333333333333333333333333333333333333
+0995 3333333333333333333333333333333333333333333333333333333
+0996 3333333333333333333333333333333333333333333333333333333
+0997 3333333333333333333333333333333333333333333333333333333
+0998 3333333333333333333333333333333333333333333333333333333
+0999 3333333333333333333333333333333333333333333333333333333
+1000 3333333333333333333333333333333333333333333333333333333
+1001 3333333333333333333333333333333333333333333333333333333
+1002 3333333333333333333333333333333333333333333333333333333
+1003 3333333333333333333333333333333333333333333333333333333
+1004 3333333333333333333333333333333333333333333333333333333
+1005 3333333333333333333333333333333333333333333333333333333
+1006 3333333333333333333333333333333333333333333333333333333
+1007 3333333333333333333333333333333333333333333333333333333
+1008 3333333333333333333333333333333333333333333333333333333
+1009 3333333333333333333333333333333333333333333333333333333
+1010 3333333333333333333333333333333333333333333333333333333
+1011 3333333333333333333333333333333333333333333333333333333
+1012 3333333333333333333333333333333333333333333333333333333
+1013 3333333333333333333333333333333333333333333333333333333
+1014 3333333333333333333333333333333333333333333333333333333
+1015 3333333333333333333333333333333333333333333333333333333
+1016 3333333333333333333333333333333333333333333333333333333
+1017 3333333333333333333333333333333333333333333333333333333
+1018 3333333333333333333333333333333333333333333333333333333
+1019 3333333333333333333333333333333333333333333333333333333
+1020 3333333333333333333333333333333333333333333333333333333
+1021 3333333333333333333333333333333333333333333333333333333
+1022 3333333333333333333333333333333333333333333333333333333
+1023 3333333333333333333333333333333333333333333333333333333
+1024 3333333333333333333333333333333333333333333333333333333
+1025 3333333333333333333333333333333333333333333333333333333
+1026 3333333333333333333333333333333333333333333333333333333
+1027 3333333333333333333333333333333333333333333333333333333
+1028 3333333333333333333333333333333333333333333333333333333
+1029 3333333333333333333333333333333333333333333333333333333
+1030 3333333333333333333333333333333333333333333333333333333
+1031 3333333333333333333333333333333333333333333333333333333
+1032 3333333333333333333333333333333333333333333333333333333
+1033 3333333333333333333333333333333333333333333333333333333
+1034 3333333333333333333333333333333333333333333333333333333
+1035 3333333333333333333333333333333333333333333333333333333
+1036 3333333333333333333333333333333333333333333333333333333
+1037 3333333333333333333333333333333333333333333333333333333
+1038 3333333333333333333333333333333333333333333333333333333
+1039 3333333333333333333333333333333333333333333333333333333
+1040 3333333333333333333333333333333333333333333333333333333
+1041 3333333333333333333333333333333333333333333333333333333
+1042 3333333333333333333333333333333333333333333333333333333
+1043 3333333333333333333333333333333333333333333333333333333
+1044 3333333333333333333333333333333333333333333333333333333
+1045 3333333333333333333333333333333333333333333333333333333
+1046 3333333333333333333333333333333333333333333333333333333
+1047 3333333333333333333333333333333333333333333333333333333
+1048 3333333333333333333333333333333333333333333333333333333
+1049 3333333333333333333333333333333333333333333333333333333
+1050 3333333333333333333333333333333333333333333333333333333
+1051 3333333333333333333333333333333333333333333333333333333
+1052 3333333333333333333333333333333333333333333333333333333
+1053 3333333333333333333333333333333333333333333333333333333
+1054 3333333333333333333333333333333333333333333333333333333
+1055 3333333333333333333333333333333333333333333333333333333
+1056 3333333333333333333333333333333333333333333333333333333
+1057 3333333333333333333333333333333333333333333333333333333
+1058 3333333333333333333333333333333333333333333333333333333
+1059 3333333333333333333333333333333333333333333333333333333
+1060 3333333333333333333333333333333333333333333333333333333
+1061 3333333333333333333333333333333333333333333333333333333
+1062 3333333333333333333333333333333333333333333333333333333
+1063 3333333333333333333333333333333333333333333333333333333
+1064 3333333333333333333333333333333333333333333333333333333
+1065 3333333333333333333333333333333333333333333333333333333
+1066 3333333333333333333333333333333333333333333333333333333
+1067 3333333333333333333333333333333333333333333333333333333
+1068 3333333333333333333333333333333333333333333333333333333
+1069 3333333333333333333333333333333333333333333333333333333
+1070 3333333333333333333333333333333333333333333333333333333
+1071 3333333333333333333333333333333333333333333333333333333
+1072 3333333333333333333333333333333333333333333333333333333
+1073 3333333333333333333333333333333333333333333333333333333
+1074 3333333333333333333333333333333333333333333333333333333
+1075 3333333333333333333333333333333333333333333333333333333
+1076 3333333333333333333333333333333333333333333333333333333
+1077 3333333333333333333333333333333333333333333333333333333
+1078 3333333333333333333333333333333333333333333333333333333
+1079 3333333333333333333333333333333333333333333333333333333
+1080 3333333333333333333333333333333333333333333333333333333
+1081 3333333333333333333333333333333333333333333333333333333
+1082 3333333333333333333333333333333333333333333333333333333
+1083 3333333333333333333333333333333333333333333333333333333
+1084 3333333333333333333333333333333333333333333333333333333
+1085 3333333333333333333333333333333333333333333333333333333
+1086 3333333333333333333333333333333333333333333333333333333
+1087 3333333333333333333333333333333333333333333333333333333
+1088 3333333333333333333333333333333333333333333333333333333
+1089 3333333333333333333333333333333333333333333333333333333
+1090 3333333333333333333333333333333333333333333333333333333
+1091 3333333333333333333333333333333333333333333333333333333
+1092 3333333333333333333333333333333333333333333333333333333
+1093 3333333333333333333333333333333333333333333333333333333
+1094 3333333333333333333333333333333333333333333333333333333
+1095 3333333333333333333333333333333333333333333333333333333
+1096 3333333333333333333333333333333333333333333333333333333
+1097 3333333333333333333333333333333333333333333333333333333
+1098 3333333333333333333333333333333333333333333333333333333
+1099 3333333333333333333333333333333333333333333333333333333
+1100 3333333333333333333333333333333333333333333333333333333
+1101 3333333333333333333333333333333333333333333333333333333
+1102 3333333333333333333333333333333333333333333333333333333
+1103 3333333333333333333333333333333333333333333333333333333
+1104 3333333333333333333333333333333333333333333333333333333
+1105 3333333333333333333333333333333333333333333333333333333
+1106 3333333333333333333333333333333333333333333333333333333
+1107 3333333333333333333333333333333333333333333333333333333
+1108 3333333333333333333333333333333333333333333333333333333
+1109 3333333333333333333333333333333333333333333333333333333
+1110 3333333333333333333333333333333333333333333333333333333
+1111 3333333333333333333333333333333333333333333333333333333
+1112 3333333333333333333333333333333333333333333333333333333
+1113 3333333333333333333333333333333333333333333333333333333
+1114 3333333333333333333333333333333333333333333333333333333
+1115 3333333333333333333333333333333333333333333333333333333
+1116 3333333333333333333333333333333333333333333333333333333
+1117 3333333333333333333333333333333333333333333333333333333
+1118 3333333333333333333333333333333333333333333333333333333
+1119 3333333333333333333333333333333333333333333333333333333
+1120 3333333333333333333333333333333333333333333333333333333
+1121 3333333333333333333333333333333333333333333333333333333
+1122 3333333333333333333333333333333333333333333333333333333
+1123 3333333333333333333333333333333333333333333333333333333
+1124 3333333333333333333333333333333333333333333333333333333
+1125 3333333333333333333333333333333333333333333333333333333
+1126 3333333333333333333333333333333333333333333333333333333
+1127 3333333333333333333333333333333333333333333333333333333
+1128 3333333333333333333333333333333333333333333333333333333
+1129 3333333333333333333333333333333333333333333333333333333
+1130 3333333333333333333333333333333333333333333333333333333
+1131 3333333333333333333333333333333333333333333333333333333
+1132 3333333333333333333333333333333333333333333333333333333
+1133 3333333333333333333333333333333333333333333333333333333
+1134 3333333333333333333333333333333333333333333333333333333
+1135 3333333333333333333333333333333333333333333333333333333
+1136 3333333333333333333333333333333333333333333333333333333
+1137 3333333333333333333333333333333333333333333333333333333
+1138 3333333333333333333333333333333333333333333333333333333
+1139 3333333333333333333333333333333333333333333333333333333
+1140 3333333333333333333333333333333333333333333333333333333
+1141 3333333333333333333333333333333333333333333333333333333
+1142 3333333333333333333333333333333333333333333333333333333
+1143 3333333333333333333333333333333333333333333333333333333
+1144 3333333333333333333333333333333333333333333333333333333
+1145 3333333333333333333333333333333333333333333333333333333
+1146 3333333333333333333333333333333333333333333333333333333
+1147 3333333333333333333333333333333333333333333333333333333
+1148 3333333333333333333333333333333333333333333333333333333
+1149 3333333333333333333333333333333333333333333333333333333
+1150 3333333333333333333333333333333333333333333333333333333
+1151 3333333333333333333333333333333333333333333333333333333
+1152 3333333333333333333333333333333333333333333333333333333
+1153 3333333333333333333333333333333333333333333333333333333
+1154 3333333333333333333333333333333333333333333333333333333
+1155 3333333333333333333333333333333333333333333333333333333
+1156 3333333333333333333333333333333333333333333333333333333
+1157 3333333333333333333333333333333333333333333333333333333
+1158 3333333333333333333333333333333333333333333333333333333
+1159 3333333333333333333333333333333333333333333333333333333
+1160 3333333333333333333333333333333333333333333333333333333
+1161 3333333333333333333333333333333333333333333333333333333
+1162 3333333333333333333333333333333333333333333333333333333
+1163 3333333333333333333333333333333333333333333333333333333
+1164 3333333333333333333333333333333333333333333333333333333
+1165 3333333333333333333333333333333333333333333333333333333
+1166 3333333333333333333333333333333333333333333333333333333
+1167 3333333333333333333333333333333333333333333333333333333
+1168 3333333333333333333333333333333333333333333333333333333
+1169 3333333333333333333333333333333333333333333333333333333
+1170 3333333333333333333333333333333333333333333333333333333
+1171 3333333333333333333333333333333333333333333333333333333
+1172 3333333333333333333333333333333333333333333333333333333
+1173 3333333333333333333333333333333333333333333333333333333
+1174 3333333333333333333333333333333333333333333333333333333
+1175 3333333333333333333333333333333333333333333333333333333
+1176 3333333333333333333333333333333333333333333333333333333
+1177 3333333333333333333333333333333333333333333333333333333
+1178 3333333333333333333333333333333333333333333333333333333
+1179 3333333333333333333333333333333333333333333333333333333
+1180 3333333333333333333333333333333333333333333333333333333
+1181 3333333333333333333333333333333333333333333333333333333
+1182 3333333333333333333333333333333333333333333333333333333
+1183 3333333333333333333333333333333333333333333333333333333
+1184 3333333333333333333333333333333333333333333333333333333
+1185 3333333333333333333333333333333333333333333333333333333
+1186 3333333333333333333333333333333333333333333333333333333
+1187 3333333333333333333333333333333333333333333333333333333
+1188 3333333333333333333333333333333333333333333333333333333
+1189 3333333333333333333333333333333333333333333333333333333
+1190 3333333333333333333333333333333333333333333333333333333
+1191 3333333333333333333333333333333333333333333333333333333
+1192 3333333333333333333333333333333333333333333333333333333
+1193 3333333333333333333333333333333333333333333333333333333
+1194 3333333333333333333333333333333333333333333333333333333
+1195 3333333333333333333333333333333333333333333333333333333
+1196 3333333333333333333333333333333333333333333333333333333
+1197 3333333333333333333333333333333333333333333333333333333
+1198 3333333333333333333333333333333333333333333333333333333
+1199 3333333333333333333333333333333333333333333333333333333
+1200 3333333333333333333333333333333333333333333333333333333
+1201 3333333333333333333333333333333333333333333333333333333
+1202 3333333333333333333333333333333333333333333333333333333
+1203 3333333333333333333333333333333333333333333333333333333
+1204 3333333333333333333333333333333333333333333333333333333
+1205 3333333333333333333333333333333333333333333333333333333
+1206 3333333333333333333333333333333333333333333333333333333
+1207 3333333333333333333333333333333333333333333333333333333
+1208 3333333333333333333333333333333333333333333333333333333
+1209 3333333333333333333333333333333333333333333333333333333
+1210 3333333333333333333333333333333333333333333333333333333
+1211 3333333333333333333333333333333333333333333333333333333
+1212 3333333333333333333333333333333333333333333333333333333
+1213 3333333333333333333333333333333333333333333333333333333
+1214 3333333333333333333333333333333333333333333333333333333
+1215 3333333333333333333333333333333333333333333333333333333
+1216 3333333333333333333333333333333333333333333333333333333
+1217 3333333333333333333333333333333333333333333333333333333
+1218 3333333333333333333333333333333333333333333333333333333
+1219 3333333333333333333333333333333333333333333333333333333
+1220 3333333333333333333333333333333333333333333333333333333
+1221 3333333333333333333333333333333333333333333333333333333
+1222 3333333333333333333333333333333333333333333333333333333
+1223 3333333333333333333333333333333333333333333333333333333
+1224 3333333333333333333333333333333333333333333333333333333
+1225 3333333333333333333333333333333333333333333333333333333
+1226 3333333333333333333333333333333333333333333333333333333
+1227 3333333333333333333333333333333333333333333333333333333
+1228 3333333333333333333333333333333333333333333333333333333
+1229 3333333333333333333333333333333333333333333333333333333
+1230 3333333333333333333333333333333333333333333333333333333
+1231 3333333333333333333333333333333333333333333333333333333
+1232 3333333333333333333333333333333333333333333333333333333
+1233 3333333333333333333333333333333333333333333333333333333
+1234 3333333333333333333333333333333333333333333333333333333
+1235 3333333333333333333333333333333333333333333333333333333
+1236 3333333333333333333333333333333333333333333333333333333
+1237 3333333333333333333333333333333333333333333333333333333
+1238 3333333333333333333333333333333333333333333333333333333
+1239 3333333333333333333333333333333333333333333333333333333
+1240 3333333333333333333333333333333333333333333333333333333
+1241 3333333333333333333333333333333333333333333333333333333
+1242 3333333333333333333333333333333333333333333333333333333
+1243 3333333333333333333333333333333333333333333333333333333
+1244 3333333333333333333333333333333333333333333333333333333
+1245 3333333333333333333333333333333333333333333333333333333
+1246 3333333333333333333333333333333333333333333333333333333
+1247 3333333333333333333333333333333333333333333333333333333
+1248 3333333333333333333333333333333333333333333333333333333
+1249 3333333333333333333333333333333333333333333333333333333
+1250 3333333333333333333333333333333333333333333333333333333
+1251 3333333333333333333333333333333333333333333333333333333
+1252 3333333333333333333333333333333333333333333333333333333
+1253 3333333333333333333333333333333333333333333333333333333
+1254 3333333333333333333333333333333333333333333333333333333
+1255 3333333333333333333333333333333333333333333333333333333
+1256 3333333333333333333333333333333333333333333333333333333
+1257 3333333333333333333333333333333333333333333333333333333
+1258 3333333333333333333333333333333333333333333333333333333
+1259 3333333333333333333333333333333333333333333333333333333
+1260 3333333333333333333333333333333333333333333333333333333
+1261 3333333333333333333333333333333333333333333333333333333
+1262 3333333333333333333333333333333333333333333333333333333
+1263 3333333333333333333333333333333333333333333333333333333
+1264 3333333333333333333333333333333333333333333333333333333
+1265 3333333333333333333333333333333333333333333333333333333
+1266 3333333333333333333333333333333333333333333333333333333
+1267 3333333333333333333333333333333333333333333333333333333
+1268 3333333333333333333333333333333333333333333333333333333
+1269 3333333333333333333333333333333333333333333333333333333
+1270 3333333333333333333333333333333333333333333333333333333
+1271 3333333333333333333333333333333333333333333333333333333
+1272 3333333333333333333333333333333333333333333333333333333
+1273 3333333333333333333333333333333333333333333333333333333
+1274 3333333333333333333333333333333333333333333333333333333
+1275 3333333333333333333333333333333333333333333333333333333
+1276 3333333333333333333333333333333333333333333333333333333
+1277 3333333333333333333333333333333333333333333333333333333
+1278 3333333333333333333333333333333333333333333333333333333
+1279 3333333333333333333333333333333333333333333333333333333
+1280 3333333333333333333333333333333333333333333333333333333
+1281 3333333333333333333333333333333333333333333333333333333
+1282 3333333333333333333333333333333333333333333333333333333
+1283 3333333333333333333333333333333333333333333333333333333
+1284 3333333333333333333333333333333333333333333333333333333
+1285 3333333333333333333333333333333333333333333333333333333
+1286 3333333333333333333333333333333333333333333333333333333
+1287 3333333333333333333333333333333333333333333333333333333
+1288 3333333333333333333333333333333333333333333333333333333
+1289 3333333333333333333333333333333333333333333333333333333
+1290 3333333333333333333333333333333333333333333333333333333
+1291 3333333333333333333333333333333333333333333333333333333
+1292 3333333333333333333333333333333333333333333333333333333
+1293 3333333333333333333333333333333333333333333333333333333
+1294 3333333333333333333333333333333333333333333333333333333
+1295 3333333333333333333333333333333333333333333333333333333
+1296 3333333333333333333333333333333333333333333333333333333
+1297 3333333333333333333333333333333333333333333333333333333
+1298 3333333333333333333333333333333333333333333333333333333
+1299 3333333333333333333333333333333333333333333333333333333
+1300 3333333333333333333333333333333333333333333333333333333
+1301 3333333333333333333333333333333333333333333333333333333
+1302 3333333333333333333333333333333333333333333333333333333
+1303 3333333333333333333333333333333333333333333333333333333
+1304 3333333333333333333333333333333333333333333333333333333
+1305 3333333333333333333333333333333333333333333333333333333
+1306 3333333333333333333333333333333333333333333333333333333
+1307 3333333333333333333333333333333333333333333333333333333
+1308 3333333333333333333333333333333333333333333333333333333
+1309 3333333333333333333333333333333333333333333333333333333
+1310 3333333333333333333333333333333333333333333333333333333
+1311 3333333333333333333333333333333333333333333333333333333
+1312 3333333333333333333333333333333333333333333333333333333
+1313 3333333333333333333333333333333333333333333333333333333
+1314 3333333333333333333333333333333333333333333333333333333
+1315 3333333333333333333333333333333333333333333333333333333
+1316 3333333333333333333333333333333333333333333333333333333
+1317 3333333333333333333333333333333333333333333333333333333
+1318 3333333333333333333333333333333333333333333333333333333
+1319 3333333333333333333333333333333333333333333333333333333
+1320 3333333333333333333333333333333333333333333333333333333
+1321 3333333333333333333333333333333333333333333333333333333
+1322 3333333333333333333333333333333333333333333333333333333
+1323 3333333333333333333333333333333333333333333333333333333
+1324 3333333333333333333333333333333333333333333333333333333
+1325 3333333333333333333333333333333333333333333333333333333
+1326 3333333333333333333333333333333333333333333333333333333
+1327 3333333333333333333333333333333333333333333333333333333
+1328 3333333333333333333333333333333333333333333333333333333
+1329 3333333333333333333333333333333333333333333333333333333
+1330 3333333333333333333333333333333333333333333333333333333
+1331 3333333333333333333333333333333333333333333333333333333
+1332 3333333333333333333333333333333333333333333333333333333
+1333 3333333333333333333333333333333333333333333333333333333
+1334 3333333333333333333333333333333333333333333333333333333
+1335 3333333333333333333333333333333333333333333333333333333
+1336 3333333333333333333333333333333333333333333333333333333
+1337 3333333333333333333333333333333333333333333333333333333
+1338 3333333333333333333333333333333333333333333333333333333
+1339 3333333333333333333333333333333333333333333333333333333
+1340 3333333333333333333333333333333333333333333333333333333
+1341 3333333333333333333333333333333333333333333333333333333
+1342 3333333333333333333333333333333333333333333333333333333
+1343 3333333333333333333333333333333333333333333333333333333
+1344 3333333333333333333333333333333333333333333333333333333
+1345 3333333333333333333333333333333333333333333333333333333
+1346 3333333333333333333333333333333333333333333333333333333
+1347 3333333333333333333333333333333333333333333333333333333
+1348 3333333333333333333333333333333333333333333333333333333
+1349 3333333333333333333333333333333333333333333333333333333
+1350 3333333333333333333333333333333333333333333333333333333
+1351 3333333333333333333333333333333333333333333333333333333
+1352 3333333333333333333333333333333333333333333333333333333
+1353 3333333333333333333333333333333333333333333333333333333
+1354 3333333333333333333333333333333333333333333333333333333
+1355 3333333333333333333333333333333333333333333333333333333
+1356 3333333333333333333333333333333333333333333333333333333
+1357 3333333333333333333333333333333333333333333333333333333
+1358 3333333333333333333333333333333333333333333333333333333
+1359 3333333333333333333333333333333333333333333333333333333
+1360 3333333333333333333333333333333333333333333333333333333
+1361 3333333333333333333333333333333333333333333333333333333
+1362 3333333333333333333333333333333333333333333333333333333
+1363 3333333333333333333333333333333333333333333333333333333
+1364 3333333333333333333333333333333333333333333333333333333
+1365 3333333333333333333333333333333333333333333333333333333
+1366 3333333333333333333333333333333333333333333333333333333
+1367 3333333333333333333333333333333333333333333333333333333
+1368 3333333333333333333333333333333333333333333333333333333
+1369 3333333333333333333333333333333333333333333333333333333
+1370 3333333333333333333333333333333333333333333333333333333
+1371 3333333333333333333333333333333333333333333333333333333
+1372 3333333333333333333333333333333333333333333333333333333
+1373 3333333333333333333333333333333333333333333333333333333
+1374 3333333333333333333333333333333333333333333333333333333
+1375 3333333333333333333333333333333333333333333333333333333
+1376 3333333333333333333333333333333333333333333333333333333
+1377 3333333333333333333333333333333333333333333333333333333
+1378 3333333333333333333333333333333333333333333333333333333
+1379 3333333333333333333333333333333333333333333333333333333
+1380 3333333333333333333333333333333333333333333333333333333
+1381 3333333333333333333333333333333333333333333333333333333
+1382 3333333333333333333333333333333333333333333333333333333
+1383 3333333333333333333333333333333333333333333333333333333
+1384 3333333333333333333333333333333333333333333333333333333
+1385 3333333333333333333333333333333333333333333333333333333
+1386 3333333333333333333333333333333333333333333333333333333
+1387 3333333333333333333333333333333333333333333333333333333
+1388 3333333333333333333333333333333333333333333333333333333
+1389 3333333333333333333333333333333333333333333333333333333
+1390 3333333333333333333333333333333333333333333333333333333
+1391 3333333333333333333333333333333333333333333333333333333
+1392 3333333333333333333333333333333333333333333333333333333
+1393 3333333333333333333333333333333333333333333333333333333
+1394 3333333333333333333333333333333333333333333333333333333
+1395 3333333333333333333333333333333333333333333333333333333
+1396 3333333333333333333333333333333333333333333333333333333
+1397 3333333333333333333333333333333333333333333333333333333
+1398 3333333333333333333333333333333333333333333333333333333
+1399 3333333333333333333333333333333333333333333333333333333
+1400 3333333333333333333333333333333333333333333333333333333
+1401 3333333333333333333333333333333333333333333333333333333
+1402 3333333333333333333333333333333333333333333333333333333
+1403 3333333333333333333333333333333333333333333333333333333
+1404 3333333333333333333333333333333333333333333333333333333
+1405 3333333333333333333333333333333333333333333333333333333
+1406 3333333333333333333333333333333333333333333333333333333
+1407 3333333333333333333333333333333333333333333333333333333
+1408 3333333333333333333333333333333333333333333333333333333
+1409 3333333333333333333333333333333333333333333333333333333
+1410 3333333333333333333333333333333333333333333333333333333
+1411 3333333333333333333333333333333333333333333333333333333
+1412 3333333333333333333333333333333333333333333333333333333
+1413 3333333333333333333333333333333333333333333333333333333
+1414 3333333333333333333333333333333333333333333333333333333
+1415 3333333333333333333333333333333333333333333333333333333
+1416 3333333333333333333333333333333333333333333333333333333
+1417 3333333333333333333333333333333333333333333333333333333
+1418 3333333333333333333333333333333333333333333333333333333
+1419 3333333333333333333333333333333333333333333333333333333
+1420 3333333333333333333333333333333333333333333333333333333
+1421 3333333333333333333333333333333333333333333333333333333
+1422 3333333333333333333333333333333333333333333333333333333
+1423 3333333333333333333333333333333333333333333333333333333
+1424 3333333333333333333333333333333333333333333333333333333
+1425 3333333333333333333333333333333333333333333333333333333
+1426 3333333333333333333333333333333333333333333333333333333
+1427 3333333333333333333333333333333333333333333333333333333
+1428 3333333333333333333333333333333333333333333333333333333
+1429 3333333333333333333333333333333333333333333333333333333
+1430 3333333333333333333333333333333333333333333333333333333
+1431 3333333333333333333333333333333333333333333333333333333
+1432 3333333333333333333333333333333333333333333333333333333
+1433 3333333333333333333333333333333333333333333333333333333
+1434 3333333333333333333333333333333333333333333333333333333
+1435 3333333333333333333333333333333333333333333333333333333
+1436 3333333333333333333333333333333333333333333333333333333
+1437 3333333333333333333333333333333333333333333333333333333
+1438 3333333333333333333333333333333333333333333333333333333
+1439 3333333333333333333333333333333333333333333333333333333
+1440 3333333333333333333333333333333333333333333333333333333
+1441 3333333333333333333333333333333333333333333333333333333
+1442 3333333333333333333333333333333333333333333333333333333
+1443 3333333333333333333333333333333333333333333333333333333
+1444 3333333333333333333333333333333333333333333333333333333
+1445 3333333333333333333333333333333333333333333333333333333
+1446 3333333333333333333333333333333333333333333333333333333
+1447 3333333333333333333333333333333333333333333333333333333
+1448 3333333333333333333333333333333333333333333333333333333
+1449 3333333333333333333333333333333333333333333333333333333
+1450 3333333333333333333333333333333333333333333333333333333
+1451 3333333333333333333333333333333333333333333333333333333
+1452 3333333333333333333333333333333333333333333333333333333
+1453 3333333333333333333333333333333333333333333333333333333
+1454 3333333333333333333333333333333333333333333333333333333
+1455 3333333333333333333333333333333333333333333333333333333
+1456 3333333333333333333333333333333333333333333333333333333
+1457 3333333333333333333333333333333333333333333333333333333
+1458 3333333333333333333333333333333333333333333333333333333
+1459 3333333333333333333333333333333333333333333333333333333
+1460 3333333333333333333333333333333333333333333333333333333
+1461 3333333333333333333333333333333333333333333333333333333
+1462 3333333333333333333333333333333333333333333333333333333
+1463 3333333333333333333333333333333333333333333333333333333
+1464 3333333333333333333333333333333333333333333333333333333
+1465 3333333333333333333333333333333333333333333333333333333
+1466 3333333333333333333333333333333333333333333333333333333
+1467 3333333333333333333333333333333333333333333333333333333
+1468 3333333333333333333333333333333333333333333333333333333
+1469 3333333333333333333333333333333333333333333333333333333
+1470 3333333333333333333333333333333333333333333333333333333
+1471 3333333333333333333333333333333333333333333333333333333
+1472 3333333333333333333333333333333333333333333333333333333
+1473 3333333333333333333333333333333333333333333333333333333
+1474 3333333333333333333333333333333333333333333333333333333
+1475 3333333333333333333333333333333333333333333333333333333
+1476 3333333333333333333333333333333333333333333333333333333
+1477 3333333333333333333333333333333333333333333333333333333
+1478 3333333333333333333333333333333333333333333333333333333
+1479 3333333333333333333333333333333333333333333333333333333
+1480 3333333333333333333333333333333333333333333333333333333
+1481 3333333333333333333333333333333333333333333333333333333
+1482 3333333333333333333333333333333333333333333333333333333
+1483 3333333333333333333333333333333333333333333333333333333
+1484 3333333333333333333333333333333333333333333333333333333
+1485 3333333333333333333333333333333333333333333333333333333
+1486 3333333333333333333333333333333333333333333333333333333
+1487 3333333333333333333333333333333333333333333333333333333
+1488 3333333333333333333333333333333333333333333333333333333
+1489 3333333333333333333333333333333333333333333333333333333
+1490 3333333333333333333333333333333333333333333333333333333
+1491 3333333333333333333333333333333333333333333333333333333
+1492 3333333333333333333333333333333333333333333333333333333
+1493 3333333333333333333333333333333333333333333333333333333
+1494 3333333333333333333333333333333333333333333333333333333
+1495 3333333333333333333333333333333333333333333333333333333
+1496 3333333333333333333333333333333333333333333333333333333
+1497 3333333333333333333333333333333333333333333333333333333
+1498 3333333333333333333333333333333333333333333333333333333
+1499 3333333333333333333333333333333333333333333333333333333
+1500 3333333333333333333333333333333333333333333333333333333
+1501 3333333333333333333333333333333333333333333333333333333
+1502 3333333333333333333333333333333333333333333333333333333
+1503 3333333333333333333333333333333333333333333333333333333
+1504 3333333333333333333333333333333333333333333333333333333
+1505 3333333333333333333333333333333333333333333333333333333
+1506 3333333333333333333333333333333333333333333333333333333
+1507 3333333333333333333333333333333333333333333333333333333
+1508 3333333333333333333333333333333333333333333333333333333
+1509 3333333333333333333333333333333333333333333333333333333
+1510 3333333333333333333333333333333333333333333333333333333
+1511 3333333333333333333333333333333333333333333333333333333
+1512 3333333333333333333333333333333333333333333333333333333
+1513 3333333333333333333333333333333333333333333333333333333
+1514 3333333333333333333333333333333333333333333333333333333
+1515 3333333333333333333333333333333333333333333333333333333
+1516 3333333333333333333333333333333333333333333333333333333
+1517 3333333333333333333333333333333333333333333333333333333
+1518 3333333333333333333333333333333333333333333333333333333
+1519 3333333333333333333333333333333333333333333333333333333
+1520 3333333333333333333333333333333333333333333333333333333
+1521 3333333333333333333333333333333333333333333333333333333
+1522 3333333333333333333333333333333333333333333333333333333
+1523 3333333333333333333333333333333333333333333333333333333
+1524 3333333333333333333333333333333333333333333333333333333
+1525 3333333333333333333333333333333333333333333333333333333
+1526 3333333333333333333333333333333333333333333333333333333
+1527 3333333333333333333333333333333333333333333333333333333
+1528 3333333333333333333333333333333333333333333333333333333
+1529 3333333333333333333333333333333333333333333333333333333
+1530 3333333333333333333333333333333333333333333333333333333
+1531 3333333333333333333333333333333333333333333333333333333
+1532 3333333333333333333333333333333333333333333333333333333
+1533 3333333333333333333333333333333333333333333333333333333
+1534 3333333333333333333333333333333333333333333333333333333
+1535 3333333333333333333333333333333333333333333333333333333
+1536 3333333333333333333333333333333333333333333333333333333
+1537 3333333333333333333333333333333333333333333333333333333
+1538 3333333333333333333333333333333333333333333333333333333
+1539 3333333333333333333333333333333333333333333333333333333
+1540 3333333333333333333333333333333333333333333333333333333
+1541 3333333333333333333333333333333333333333333333333333333
+1542 3333333333333333333333333333333333333333333333333333333
+1543 3333333333333333333333333333333333333333333333333333333
+1544 3333333333333333333333333333333333333333333333333333333
+1545 3333333333333333333333333333333333333333333333333333333
+1546 3333333333333333333333333333333333333333333333333333333
+1547 3333333333333333333333333333333333333333333333333333333
+1548 3333333333333333333333333333333333333333333333333333333
+1549 3333333333333333333333333333333333333333333333333333333
+1550 3333333333333333333333333333333333333333333333333333333
+1551 3333333333333333333333333333333333333333333333333333333
+1552 3333333333333333333333333333333333333333333333333333333
+1553 3333333333333333333333333333333333333333333333333333333
+1554 3333333333333333333333333333333333333333333333333333333
+1555 3333333333333333333333333333333333333333333333333333333
+1556 3333333333333333333333333333333333333333333333333333333
+1557 3333333333333333333333333333333333333333333333333333333
+1558 3333333333333333333333333333333333333333333333333333333
+1559 3333333333333333333333333333333333333333333333333333333
+1560 3333333333333333333333333333333333333333333333333333333
+1561 3333333333333333333333333333333333333333333333333333333
+1562 3333333333333333333333333333333333333333333333333333333
+1563 3333333333333333333333333333333333333333333333333333333
+1564 3333333333333333333333333333333333333333333333333333333
+1565 3333333333333333333333333333333333333333333333333333333
+1566 3333333333333333333333333333333333333333333333333333333
+1567 3333333333333333333333333333333333333333333333333333333
+1568 3333333333333333333333333333333333333333333333333333333
+1569 3333333333333333333333333333333333333333333333333333333
+1570 3333333333333333333333333333333333333333333333333333333
+1571 3333333333333333333333333333333333333333333333333333333
+1572 3333333333333333333333333333333333333333333333333333333
+1573 3333333333333333333333333333333333333333333333333333333
+1574 3333333333333333333333333333333333333333333333333333333
+1575 3333333333333333333333333333333333333333333333333333333
+1576 3333333333333333333333333333333333333333333333333333333
+1577 3333333333333333333333333333333333333333333333333333333
+1578 3333333333333333333333333333333333333333333333333333333
+1579 3333333333333333333333333333333333333333333333333333333
+1580 3333333333333333333333333333333333333333333333333333333
+1581 3333333333333333333333333333333333333333333333333333333
+1582 3333333333333333333333333333333333333333333333333333333
+1583 3333333333333333333333333333333333333333333333333333333
+1584 3333333333333333333333333333333333333333333333333333333
+1585 3333333333333333333333333333333333333333333333333333333
+1586 3333333333333333333333333333333333333333333333333333333
+1587 3333333333333333333333333333333333333333333333333333333
+1588 3333333333333333333333333333333333333333333333333333333
+1589 3333333333333333333333333333333333333333333333333333333
+1590 3333333333333333333333333333333333333333333333333333333
+1591 3333333333333333333333333333333333333333333333333333333
+1592 3333333333333333333333333333333333333333333333333333333
+1593 3333333333333333333333333333333333333333333333333333333
+1594 3333333333333333333333333333333333333333333333333333333
+1595 3333333333333333333333333333333333333333333333333333333
+1596 3333333333333333333333333333333333333333333333333333333
+1597 3333333333333333333333333333333333333333333333333333333
+1598 3333333333333333333333333333333333333333333333333333333
+1599 3333333333333333333333333333333333333333333333333333333
+1600 3333333333333333333333333333333333333333333333333333333
+1601 3333333333333333333333333333333333333333333333333333333
+1602 3333333333333333333333333333333333333333333333333333333
+1603 3333333333333333333333333333333333333333333333333333333
+1604 3333333333333333333333333333333333333333333333333333333
+1605 3333333333333333333333333333333333333333333333333333333
+1606 3333333333333333333333333333333333333333333333333333333
+1607 3333333333333333333333333333333333333333333333333333333
+1608 3333333333333333333333333333333333333333333333333333333
+1609 3333333333333333333333333333333333333333333333333333333
+1610 3333333333333333333333333333333333333333333333333333333
+1611 3333333333333333333333333333333333333333333333333333333
+1612 3333333333333333333333333333333333333333333333333333333
+1613 3333333333333333333333333333333333333333333333333333333
+1614 3333333333333333333333333333333333333333333333333333333
+1615 3333333333333333333333333333333333333333333333333333333
+1616 3333333333333333333333333333333333333333333333333333333
+1617 3333333333333333333333333333333333333333333333333333333
+1618 3333333333333333333333333333333333333333333333333333333
+1619 3333333333333333333333333333333333333333333333333333333
+1620 3333333333333333333333333333333333333333333333333333333
+1621 3333333333333333333333333333333333333333333333333333333
+1622 3333333333333333333333333333333333333333333333333333333
+1623 3333333333333333333333333333333333333333333333333333333
+1624 3333333333333333333333333333333333333333333333333333333
+1625 3333333333333333333333333333333333333333333333333333333
+1626 3333333333333333333333333333333333333333333333333333333
+1627 3333333333333333333333333333333333333333333333333333333
+1628 3333333333333333333333333333333333333333333333333333333
+1629 3333333333333333333333333333333333333333333333333333333
+1630 3333333333333333333333333333333333333333333333333333333
+1631 3333333333333333333333333333333333333333333333333333333
+1632 3333333333333333333333333333333333333333333333333333333
+1633 3333333333333333333333333333333333333333333333333333333
+1634 3333333333333333333333333333333333333333333333333333333
+1635 3333333333333333333333333333333333333333333333333333333
+1636 3333333333333333333333333333333333333333333333333333333
+1637 3333333333333333333333333333333333333333333333333333333
+1638 3333333333333333333333333333333333333333333333333333333
+1639 3333333333333333333333333333333333333333333333333333333
+1640 3333333333333333333333333333333333333333333333333333333
+1641 3333333333333333333333333333333333333333333333333333333
+1642 3333333333333333333333333333333333333333333333333333333
+1643 3333333333333333333333333333333333333333333333333333333
+1644 3333333333333333333333333333333333333333333333333333333
+1645 3333333333333333333333333333333333333333333333333333333
+1646 3333333333333333333333333333333333333333333333333333333
+1647 3333333333333333333333333333333333333333333333333333333
+1648 3333333333333333333333333333333333333333333333333333333
+1649 3333333333333333333333333333333333333333333333333333333
+1650 3333333333333333333333333333333333333333333333333333333
+1651 3333333333333333333333333333333333333333333333333333333
+1652 3333333333333333333333333333333333333333333333333333333
+1653 3333333333333333333333333333333333333333333333333333333
+1654 3333333333333333333333333333333333333333333333333333333
+1655 3333333333333333333333333333333333333333333333333333333
+1656 3333333333333333333333333333333333333333333333333333333
+1657 3333333333333333333333333333333333333333333333333333333
+1658 3333333333333333333333333333333333333333333333333333333
+1659 3333333333333333333333333333333333333333333333333333333
+1660 3333333333333333333333333333333333333333333333333333333
+1661 3333333333333333333333333333333333333333333333333333333
+1662 3333333333333333333333333333333333333333333333333333333
+1663 3333333333333333333333333333333333333333333333333333333
+1664 3333333333333333333333333333333333333333333333333333333
+1665 3333333333333333333333333333333333333333333333333333333
+1666 3333333333333333333333333333333333333333333333333333333
+1667 3333333333333333333333333333333333333333333333333333333
+1668 3333333333333333333333333333333333333333333333333333333
+1669 3333333333333333333333333333333333333333333333333333333
+1670 3333333333333333333333333333333333333333333333333333333
+1671 3333333333333333333333333333333333333333333333333333333
+1672 3333333333333333333333333333333333333333333333333333333
+1673 3333333333333333333333333333333333333333333333333333333
+1674 3333333333333333333333333333333333333333333333333333333
+1675 3333333333333333333333333333333333333333333333333333333
+1676 3333333333333333333333333333333333333333333333333333333
+1677 3333333333333333333333333333333333333333333333333333333
+1678 3333333333333333333333333333333333333333333333333333333
+1679 3333333333333333333333333333333333333333333333333333333
+1680 3333333333333333333333333333333333333333333333333333333
+1681 3333333333333333333333333333333333333333333333333333333
+1682 3333333333333333333333333333333333333333333333333333333
+1683 3333333333333333333333333333333333333333333333333333333
+1684 3333333333333333333333333333333333333333333333333333333
+1685 3333333333333333333333333333333333333333333333333333333
+1686 3333333333333333333333333333333333333333333333333333333
+1687 3333333333333333333333333333333333333333333333333333333
+1688 3333333333333333333333333333333333333333333333333333333
+1689 3333333333333333333333333333333333333333333333333333333
+1690 3333333333333333333333333333333333333333333333333333333
+1691 3333333333333333333333333333333333333333333333333333333
+1692 3333333333333333333333333333333333333333333333333333333
+1693 3333333333333333333333333333333333333333333333333333333
+1694 3333333333333333333333333333333333333333333333333333333
+1695 3333333333333333333333333333333333333333333333333333333
+1696 3333333333333333333333333333333333333333333333333333333
+1697 3333333333333333333333333333333333333333333333333333333
+1698 3333333333333333333333333333333333333333333333333333333
+1699 3333333333333333333333333333333333333333333333333333333
+1700 3333333333333333333333333333333333333333333333333333333
+1701 3333333333333333333333333333333333333333333333333333333
+1702 3333333333333333333333333333333333333333333333333333333
+1703 3333333333333333333333333333333333333333333333333333333
+1704 3333333333333333333333333333333333333333333333333333333
+1705 3333333333333333333333333333333333333333333333333333333
+1706 3333333333333333333333333333333333333333333333333333333
+1707 3333333333333333333333333333333333333333333333333333333
+1708 3333333333333333333333333333333333333333333333333333333
+1709 3333333333333333333333333333333333333333333333333333333
+1710 3333333333333333333333333333333333333333333333333333333
+1711 3333333333333333333333333333333333333333333333333333333
+1712 3333333333333333333333333333333333333333333333333333333
+1713 3333333333333333333333333333333333333333333333333333333
+1714 3333333333333333333333333333333333333333333333333333333
+1715 3333333333333333333333333333333333333333333333333333333
+1716 3333333333333333333333333333333333333333333333333333333
+1717 3333333333333333333333333333333333333333333333333333333
+1718 3333333333333333333333333333333333333333333333333333333
+1719 3333333333333333333333333333333333333333333333333333333
+1720 3333333333333333333333333333333333333333333333333333333
+1721 3333333333333333333333333333333333333333333333333333333
+1722 3333333333333333333333333333333333333333333333333333333
+1723 3333333333333333333333333333333333333333333333333333333
+1724 3333333333333333333333333333333333333333333333333333333
+1725 3333333333333333333333333333333333333333333333333333333
+1726 3333333333333333333333333333333333333333333333333333333
+1727 3333333333333333333333333333333333333333333333333333333
+1728 3333333333333333333333333333333333333333333333333333333
+1729 3333333333333333333333333333333333333333333333333333333
+1730 3333333333333333333333333333333333333333333333333333333
+1731 3333333333333333333333333333333333333333333333333333333
+1732 3333333333333333333333333333333333333333333333333333333
+1733 3333333333333333333333333333333333333333333333333333333
+1734 3333333333333333333333333333333333333333333333333333333
+1735 3333333333333333333333333333333333333333333333333333333
+1736 3333333333333333333333333333333333333333333333333333333
+1737 3333333333333333333333333333333333333333333333333333333
+1738 3333333333333333333333333333333333333333333333333333333
+1739 3333333333333333333333333333333333333333333333333333333
+1740 3333333333333333333333333333333333333333333333333333333
+1741 3333333333333333333333333333333333333333333333333333333
+1742 3333333333333333333333333333333333333333333333333333333
+1743 3333333333333333333333333333333333333333333333333333333
+1744 3333333333333333333333333333333333333333333333333333333
+1745 3333333333333333333333333333333333333333333333333333333
+1746 3333333333333333333333333333333333333333333333333333333
+1747 3333333333333333333333333333333333333333333333333333333
+1748 3333333333333333333333333333333333333333333333333333333
+1749 3333333333333333333333333333333333333333333333333333333
+1750 3333333333333333333333333333333333333333333333333333333
+1751 3333333333333333333333333333333333333333333333333333333
+1752 3333333333333333333333333333333333333333333333333333333
+1753 3333333333333333333333333333333333333333333333333333333
+1754 3333333333333333333333333333333333333333333333333333333
+1755 3333333333333333333333333333333333333333333333333333333
+1756 3333333333333333333333333333333333333333333333333333333
+1757 3333333333333333333333333333333333333333333333333333333
+1758 3333333333333333333333333333333333333333333333333333333
+1759 3333333333333333333333333333333333333333333333333333333
+1760 3333333333333333333333333333333333333333333333333333333
+1761 3333333333333333333333333333333333333333333333333333333
+1762 3333333333333333333333333333333333333333333333333333333
+1763 3333333333333333333333333333333333333333333333333333333
+1764 3333333333333333333333333333333333333333333333333333333
+1765 3333333333333333333333333333333333333333333333333333333
+1766 3333333333333333333333333333333333333333333333333333333
+1767 3333333333333333333333333333333333333333333333333333333
+1768 3333333333333333333333333333333333333333333333333333333
+1769 3333333333333333333333333333333333333333333333333333333
+1770 3333333333333333333333333333333333333333333333333333333
+1771 3333333333333333333333333333333333333333333333333333333
+1772 3333333333333333333333333333333333333333333333333333333
+1773 3333333333333333333333333333333333333333333333333333333
+1774 3333333333333333333333333333333333333333333333333333333
+1775 3333333333333333333333333333333333333333333333333333333
+1776 3333333333333333333333333333333333333333333333333333333
+1777 3333333333333333333333333333333333333333333333333333333
+1778 3333333333333333333333333333333333333333333333333333333
+1779 3333333333333333333333333333333333333333333333333333333
+1780 3333333333333333333333333333333333333333333333333333333
+1781 3333333333333333333333333333333333333333333333333333333
+1782 3333333333333333333333333333333333333333333333333333333
+1783 3333333333333333333333333333333333333333333333333333333
+1784 3333333333333333333333333333333333333333333333333333333
+1785 3333333333333333333333333333333333333333333333333333333
+1786 3333333333333333333333333333333333333333333333333333333
+1787 3333333333333333333333333333333333333333333333333333333
+1788 3333333333333333333333333333333333333333333333333333333
+1789 3333333333333333333333333333333333333333333333333333333
+1790 3333333333333333333333333333333333333333333333333333333
+1791 3333333333333333333333333333333333333333333333333333333
+1792 3333333333333333333333333333333333333333333333333333333
+1793 3333333333333333333333333333333333333333333333333333333
+1794 3333333333333333333333333333333333333333333333333333333
+1795 3333333333333333333333333333333333333333333333333333333
+1796 3333333333333333333333333333333333333333333333333333333
+1797 3333333333333333333333333333333333333333333333333333333
+1798 3333333333333333333333333333333333333333333333333333333
+1799 3333333333333333333333333333333333333333333333333333333
+1800 3333333333333333333333333333333333333333333333333333333
+1801 3333333333333333333333333333333333333333333333333333333
+1802 3333333333333333333333333333333333333333333333333333333
+1803 3333333333333333333333333333333333333333333333333333333
+1804 3333333333333333333333333333333333333333333333333333333
+1805 3333333333333333333333333333333333333333333333333333333
+1806 3333333333333333333333333333333333333333333333333333333
+1807 3333333333333333333333333333333333333333333333333333333
+1808 3333333333333333333333333333333333333333333333333333333
+1809 3333333333333333333333333333333333333333333333333333333
+1810 3333333333333333333333333333333333333333333333333333333
+1811 3333333333333333333333333333333333333333333333333333333
+1812 3333333333333333333333333333333333333333333333333333333
+1813 3333333333333333333333333333333333333333333333333333333
+1814 3333333333333333333333333333333333333333333333333333333
+1815 3333333333333333333333333333333333333333333333333333333
+1816 3333333333333333333333333333333333333333333333333333333
+1817 3333333333333333333333333333333333333333333333333333333
+1818 3333333333333333333333333333333333333333333333333333333
+1819 3333333333333333333333333333333333333333333333333333333
+1820 3333333333333333333333333333333333333333333333333333333
+1821 3333333333333333333333333333333333333333333333333333333
+1822 3333333333333333333333333333333333333333333333333333333
+1823 3333333333333333333333333333333333333333333333333333333
+1824 3333333333333333333333333333333333333333333333333333333
+1825 3333333333333333333333333333333333333333333333333333333
+1826 3333333333333333333333333333333333333333333333333333333
+1827 3333333333333333333333333333333333333333333333333333333
+1828 3333333333333333333333333333333333333333333333333333333
+1829 3333333333333333333333333333333333333333333333333333333
+1830 3333333333333333333333333333333333333333333333333333333
+1831 3333333333333333333333333333333333333333333333333333333
+1832 3333333333333333333333333333333333333333333333333333333
+1833 3333333333333333333333333333333333333333333333333333333
+1834 3333333333333333333333333333333333333333333333333333333
+1835 3333333333333333333333333333333333333333333333333333333
+1836 3333333333333333333333333333333333333333333333333333333
+1837 3333333333333333333333333333333333333333333333333333333
+1838 3333333333333333333333333333333333333333333333333333333
+1839 3333333333333333333333333333333333333333333333333333333
+1840 3333333333333333333333333333333333333333333333333333333
+1841 3333333333333333333333333333333333333333333333333333333
+1842 3333333333333333333333333333333333333333333333333333333
+1843 3333333333333333333333333333333333333333333333333333333
+1844 3333333333333333333333333333333333333333333333333333333
+1845 3333333333333333333333333333333333333333333333333333333
+1846 3333333333333333333333333333333333333333333333333333333
+1847 3333333333333333333333333333333333333333333333333333333
+1848 3333333333333333333333333333333333333333333333333333333
+1849 3333333333333333333333333333333333333333333333333333333
+1850 3333333333333333333333333333333333333333333333333333333
+1851 3333333333333333333333333333333333333333333333333333333
+1852 3333333333333333333333333333333333333333333333333333333
+1853 3333333333333333333333333333333333333333333333333333333
+1854 3333333333333333333333333333333333333333333333333333333
+1855 3333333333333333333333333333333333333333333333333333333
+1856 3333333333333333333333333333333333333333333333333333333
+1857 3333333333333333333333333333333333333333333333333333333
+1858 3333333333333333333333333333333333333333333333333333333
+1859 3333333333333333333333333333333333333333333333333333333
+1860 3333333333333333333333333333333333333333333333333333333
+1861 3333333333333333333333333333333333333333333333333333333
+1862 3333333333333333333333333333333333333333333333333333333
+1863 3333333333333333333333333333333333333333333333333333333
+1864 3333333333333333333333333333333333333333333333333333333
+1865 3333333333333333333333333333333333333333333333333333333
+1866 3333333333333333333333333333333333333333333333333333333
+1867 3333333333333333333333333333333333333333333333333333333
+1868 3333333333333333333333333333333333333333333333333333333
+1869 3333333333333333333333333333333333333333333333333333333
+1870 3333333333333333333333333333333333333333333333333333333
+1871 3333333333333333333333333333333333333333333333333333333
+1872 3333333333333333333333333333333333333333333333333333333
+1873 3333333333333333333333333333333333333333333333333333333
+1874 3333333333333333333333333333333333333333333333333333333
+1875 3333333333333333333333333333333333333333333333333333333
+1876 3333333333333333333333333333333333333333333333333333333
+1877 3333333333333333333333333333333333333333333333333333333
+1878 3333333333333333333333333333333333333333333333333333333
+1879 3333333333333333333333333333333333333333333333333333333
+1880 3333333333333333333333333333333333333333333333333333333
+1881 3333333333333333333333333333333333333333333333333333333
+1882 3333333333333333333333333333333333333333333333333333333
+1883 3333333333333333333333333333333333333333333333333333333
+1884 3333333333333333333333333333333333333333333333333333333
+1885 3333333333333333333333333333333333333333333333333333333
+1886 3333333333333333333333333333333333333333333333333333333
+1887 3333333333333333333333333333333333333333333333333333333
+1888 3333333333333333333333333333333333333333333333333333333
+1889 3333333333333333333333333333333333333333333333333333333
+1890 3333333333333333333333333333333333333333333333333333333
+1891 3333333333333333333333333333333333333333333333333333333
+1892 3333333333333333333333333333333333333333333333333333333
+1893 3333333333333333333333333333333333333333333333333333333
+1894 3333333333333333333333333333333333333333333333333333333
+1895 3333333333333333333333333333333333333333333333333333333
+1896 3333333333333333333333333333333333333333333333333333333
+1897 3333333333333333333333333333333333333333333333333333333
+1898 3333333333333333333333333333333333333333333333333333333
+1899 3333333333333333333333333333333333333333333333333333333
+1900 3333333333333333333333333333333333333333333333333333333
+1901 3333333333333333333333333333333333333333333333333333333
+1902 3333333333333333333333333333333333333333333333333333333
+1903 3333333333333333333333333333333333333333333333333333333
+1904 3333333333333333333333333333333333333333333333333333333
+1905 3333333333333333333333333333333333333333333333333333333
+1906 3333333333333333333333333333333333333333333333333333333
+1907 3333333333333333333333333333333333333333333333333333333
+1908 3333333333333333333333333333333333333333333333333333333
+1909 3333333333333333333333333333333333333333333333333333333
+1910 3333333333333333333333333333333333333333333333333333333
+1911 3333333333333333333333333333333333333333333333333333333
+1912 3333333333333333333333333333333333333333333333333333333
+1913 3333333333333333333333333333333333333333333333333333333
+1914 3333333333333333333333333333333333333333333333333333333
+1915 3333333333333333333333333333333333333333333333333333333
+1916 3333333333333333333333333333333333333333333333333333333
+1917 3333333333333333333333333333333333333333333333333333333
+1918 3333333333333333333333333333333333333333333333333333333
+1919 3333333333333333333333333333333333333333333333333333333
+1920 3333333333333333333333333333333333333333333333333333333
+1921 3333333333333333333333333333333333333333333333333333333
+1922 3333333333333333333333333333333333333333333333333333333
+1923 3333333333333333333333333333333333333333333333333333333
+1924 3333333333333333333333333333333333333333333333333333333
+1925 3333333333333333333333333333333333333333333333333333333
+1926 3333333333333333333333333333333333333333333333333333333
+1927 3333333333333333333333333333333333333333333333333333333
+1928 3333333333333333333333333333333333333333333333333333333
+1929 3333333333333333333333333333333333333333333333333333333
+1930 3333333333333333333333333333333333333333333333333333333
+1931 3333333333333333333333333333333333333333333333333333333
+1932 3333333333333333333333333333333333333333333333333333333
+1933 3333333333333333333333333333333333333333333333333333333
+1934 3333333333333333333333333333333333333333333333333333333
+1935 3333333333333333333333333333333333333333333333333333333
+1936 3333333333333333333333333333333333333333333333333333333
+1937 3333333333333333333333333333333333333333333333333333333
+1938 3333333333333333333333333333333333333333333333333333333
+1939 3333333333333333333333333333333333333333333333333333333
+1940 3333333333333333333333333333333333333333333333333333333
+1941 3333333333333333333333333333333333333333333333333333333
+1942 3333333333333333333333333333333333333333333333333333333
+1943 3333333333333333333333333333333333333333333333333333333
+1944 3333333333333333333333333333333333333333333333333333333
+1945 3333333333333333333333333333333333333333333333333333333
+1946 3333333333333333333333333333333333333333333333333333333
+1947 3333333333333333333333333333333333333333333333333333333
+1948 3333333333333333333333333333333333333333333333333333333
+1949 3333333333333333333333333333333333333333333333333333333
+1950 3333333333333333333333333333333333333333333333333333333
+1951 3333333333333333333333333333333333333333333333333333333
+1952 3333333333333333333333333333333333333333333333333333333
+1953 3333333333333333333333333333333333333333333333333333333
+1954 3333333333333333333333333333333333333333333333333333333
+1955 3333333333333333333333333333333333333333333333333333333
+1956 3333333333333333333333333333333333333333333333333333333
+1957 3333333333333333333333333333333333333333333333333333333
+1958 3333333333333333333333333333333333333333333333333333333
+1959 3333333333333333333333333333333333333333333333333333333
+1960 3333333333333333333333333333333333333333333333333333333
+1961 3333333333333333333333333333333333333333333333333333333
+1962 3333333333333333333333333333333333333333333333333333333
+1963 3333333333333333333333333333333333333333333333333333333
+1964 3333333333333333333333333333333333333333333333333333333
+1965 3333333333333333333333333333333333333333333333333333333
+1966 3333333333333333333333333333333333333333333333333333333
+1967 3333333333333333333333333333333333333333333333333333333
+1968 3333333333333333333333333333333333333333333333333333333
+1969 3333333333333333333333333333333333333333333333333333333
+1970 3333333333333333333333333333333333333333333333333333333
+1971 3333333333333333333333333333333333333333333333333333333
+1972 3333333333333333333333333333333333333333333333333333333
+1973 3333333333333333333333333333333333333333333333333333333
+1974 3333333333333333333333333333333333333333333333333333333
+1975 3333333333333333333333333333333333333333333333333333333
+1976 3333333333333333333333333333333333333333333333333333333
+1977 3333333333333333333333333333333333333333333333333333333
+1978 3333333333333333333333333333333333333333333333333333333
+1979 3333333333333333333333333333333333333333333333333333333
+1980 3333333333333333333333333333333333333333333333333333333
+1981 3333333333333333333333333333333333333333333333333333333
+1982 3333333333333333333333333333333333333333333333333333333
+1983 3333333333333333333333333333333333333333333333333333333
+1984 3333333333333333333333333333333333333333333333333333333
+1985 3333333333333333333333333333333333333333333333333333333
+1986 3333333333333333333333333333333333333333333333333333333
+1987 3333333333333333333333333333333333333333333333333333333
+1988 3333333333333333333333333333333333333333333333333333333
+1989 3333333333333333333333333333333333333333333333333333333
+1990 3333333333333333333333333333333333333333333333333333333
+1991 3333333333333333333333333333333333333333333333333333333
+1992 3333333333333333333333333333333333333333333333333333333
+1993 3333333333333333333333333333333333333333333333333333333
+1994 3333333333333333333333333333333333333333333333333333333
+1995 3333333333333333333333333333333333333333333333333333333
+1996 3333333333333333333333333333333333333333333333333333333
+1997 3333333333333333333333333333333333333333333333333333333
+1998 3333333333333333333333333333333333333333333333333333333
+1999 3333333333333333333333333333333333333333333333333333333
+2000 3333333333333333333333333333333333333333333333333333333
+2001 3333333333333333333333333333333333333333333333333333333
+2002 3333333333333333333333333333333333333333333333333333333
+2003 3333333333333333333333333333333333333333333333333333333
+2004 3333333333333333333333333333333333333333333333333333333
+2005 3333333333333333333333333333333333333333333333333333333
+2006 3333333333333333333333333333333333333333333333333333333
+2007 3333333333333333333333333333333333333333333333333333333
+2008 3333333333333333333333333333333333333333333333333333333
+2009 3333333333333333333333333333333333333333333333333333333
+2010 3333333333333333333333333333333333333333333333333333333
+2011 3333333333333333333333333333333333333333333333333333333
+2012 3333333333333333333333333333333333333333333333333333333
+2013 3333333333333333333333333333333333333333333333333333333
+2014 3333333333333333333333333333333333333333333333333333333
+2015 3333333333333333333333333333333333333333333333333333333
+2016 3333333333333333333333333333333333333333333333333333333
+2017 3333333333333333333333333333333333333333333333333333333
+2018 3333333333333333333333333333333333333333333333333333333
+2019 3333333333333333333333333333333333333333333333333333333
+2020 3333333333333333333333333333333333333333333333333333333
+2021 3333333333333333333333333333333333333333333333333333333
+2022 3333333333333333333333333333333333333333333333333333333
+2023 3333333333333333333333333333333333333333333333333333333
+2024 3333333333333333333333333333333333333333333333333333333
+2025 3333333333333333333333333333333333333333333333333333333
+2026 3333333333333333333333333333333333333333333333333333333
+2027 3333333333333333333333333333333333333333333333333333333
+2028 3333333333333333333333333333333333333333333333333333333
+2029 3333333333333333333333333333333333333333333333333333333
+2030 3333333333333333333333333333333333333333333333333333333
+2031 3333333333333333333333333333333333333333333333333333333
+2032 3333333333333333333333333333333333333333333333333333333
+2033 3333333333333333333333333333333333333333333333333333333
+2034 3333333333333333333333333333333333333333333333333333333
+2035 3333333333333333333333333333333333333333333333333333333
+2036 3333333333333333333333333333333333333333333333333333333
+2037 3333333333333333333333333333333333333333333333333333333
+2038 3333333333333333333333333333333333333333333333333333333
+2039 3333333333333333333333333333333333333333333333333333333
+2040 3333333333333333333333333333333333333333333333333333333
+2041 3333333333333333333333333333333333333333333333333333333
+2042 3333333333333333333333333333333333333333333333333333333
+2043 3333333333333333333333333333333333333333333333333333333
+2044 3333333333333333333333333333333333333333333333333333333
+2045 3333333333333333333333333333333333333333333333333333333
+2046 3333333333333333333333333333333333333333333333333333333
+2047 3333333333333333333333333333333333333333333333333333333
+2048 3333333333333333333333333333333333333333333333333333333
+2049 3333333333333333333333333333333333333333333333333333333
+2050 3333333333333333333333333333333333333333333333333333333
+2051 3333333333333333333333333333333333333333333333333333333
+2052 3333333333333333333333333333333333333333333333333333333
+2053 3333333333333333333333333333333333333333333333333333333
+2054 3333333333333333333333333333333333333333333333333333333
+2055 3333333333333333333333333333333333333333333333333333333
+2056 3333333333333333333333333333333333333333333333333333333
+2057 3333333333333333333333333333333333333333333333333333333
+2058 3333333333333333333333333333333333333333333333333333333
+2059 3333333333333333333333333333333333333333333333333333333
+2060 3333333333333333333333333333333333333333333333333333333
+2061 3333333333333333333333333333333333333333333333333333333
+2062 3333333333333333333333333333333333333333333333333333333
+2063 3333333333333333333333333333333333333333333333333333333
+2064 3333333333333333333333333333333333333333333333333333333
+2065 3333333333333333333333333333333333333333333333333333333
+2066 3333333333333333333333333333333333333333333333333333333
+2067 3333333333333333333333333333333333333333333333333333333
+2068 3333333333333333333333333333333333333333333333333333333
+2069 3333333333333333333333333333333333333333333333333333333
+2070 3333333333333333333333333333333333333333333333333333333
+2071 3333333333333333333333333333333333333333333333333333333
+2072 3333333333333333333333333333333333333333333333333333333
+2073 3333333333333333333333333333333333333333333333333333333
+2074 3333333333333333333333333333333333333333333333333333333
+2075 3333333333333333333333333333333333333333333333333333333
+2076 3333333333333333333333333333333333333333333333333333333
+2077 3333333333333333333333333333333333333333333333333333333
+2078 3333333333333333333333333333333333333333333333333333333
+2079 3333333333333333333333333333333333333333333333333333333
+2080 3333333333333333333333333333333333333333333333333333333
+2081 3333333333333333333333333333333333333333333333333333333
+2082 3333333333333333333333333333333333333333333333333333333
+2083 3333333333333333333333333333333333333333333333333333333
+2084 3333333333333333333333333333333333333333333333333333333
+2085 3333333333333333333333333333333333333333333333333333333
+2086 3333333333333333333333333333333333333333333333333333333
+2087 3333333333333333333333333333333333333333333333333333333
+2088 3333333333333333333333333333333333333333333333333333333
+2089 3333333333333333333333333333333333333333333333333333333
+2090 3333333333333333333333333333333333333333333333333333333
+2091 3333333333333333333333333333333333333333333333333333333
+2092 3333333333333333333333333333333333333333333333333333333
+2093 3333333333333333333333333333333333333333333333333333333
+2094 3333333333333333333333333333333333333333333333333333333
+2095 3333333333333333333333333333333333333333333333333333333
+2096 3333333333333333333333333333333333333333333333333333333
+2097 3333333333333333333333333333333333333333333333333333333
+2098 3333333333333333333333333333333333333333333333333333333
+2099 3333333333333333333333333333333333333333333333333333333
+2100 3333333333333333333333333333333333333333333333333333333
+2101 3333333333333333333333333333333333333333333333333333333
+2102 3333333333333333333333333333333333333333333333333333333
+2103 3333333333333333333333333333333333333333333333333333333
+2104 3333333333333333333333333333333333333333333333333333333
+2105 3333333333333333333333333333333333333333333333333333333
+2106 3333333333333333333333333333333333333333333333333333333
+2107 3333333333333333333333333333333333333333333333333333333
+2108 3333333333333333333333333333333333333333333333333333333
+2109 3333333333333333333333333333333333333333333333333333333
+2110 3333333333333333333333333333333333333333333333333333333
+2111 3333333333333333333333333333333333333333333333333333333
+2112 3333333333333333333333333333333333333333333333333333333
+2113 3333333333333333333333333333333333333333333333333333333
+2114 3333333333333333333333333333333333333333333333333333333
+2115 3333333333333333333333333333333333333333333333333333333
+2116 3333333333333333333333333333333333333333333333333333333
+2117 3333333333333333333333333333333333333333333333333333333
+2118 3333333333333333333333333333333333333333333333333333333
+2119 3333333333333333333333333333333333333333333333333333333
+2120 3333333333333333333333333333333333333333333333333333333
+2121 3333333333333333333333333333333333333333333333333333333
+2122 3333333333333333333333333333333333333333333333333333333
+2123 3333333333333333333333333333333333333333333333333333333
+2124 3333333333333333333333333333333333333333333333333333333
+2125 3333333333333333333333333333333333333333333333333333333
+2126 3333333333333333333333333333333333333333333333333333333
+2127 3333333333333333333333333333333333333333333333333333333
+2128 3333333333333333333333333333333333333333333333333333333
+2129 3333333333333333333333333333333333333333333333333333333
+2130 3333333333333333333333333333333333333333333333333333333
+2131 3333333333333333333333333333333333333333333333333333333
+2132 3333333333333333333333333333333333333333333333333333333
+2133 3333333333333333333333333333333333333333333333333333333
+2134 3333333333333333333333333333333333333333333333333333333
+2135 3333333333333333333333333333333333333333333333333333333
+2136 3333333333333333333333333333333333333333333333333333333
+2137 3333333333333333333333333333333333333333333333333333333
+2138 3333333333333333333333333333333333333333333333333333333
+2139 3333333333333333333333333333333333333333333333333333333
+2140 3333333333333333333333333333333333333333333333333333333
+2141 3333333333333333333333333333333333333333333333333333333
+2142 3333333333333333333333333333333333333333333333333333333
+2143 3333333333333333333333333333333333333333333333333333333
+2144 3333333333333333333333333333333333333333333333333333333
+2145 3333333333333333333333333333333333333333333333333333333
+2146 3333333333333333333333333333333333333333333333333333333
+2147 3333333333333333333333333333333333333333333333333333333
+2148 3333333333333333333333333333333333333333333333333333333
+2149 3333333333333333333333333333333333333333333333333333333
+2150 3333333333333333333333333333333333333333333333333333333
+2151 3333333333333333333333333333333333333333333333333333333
+2152 3333333333333333333333333333333333333333333333333333333
+2153 3333333333333333333333333333333333333333333333333333333
+2154 3333333333333333333333333333333333333333333333333333333
+2155 3333333333333333333333333333333333333333333333333333333
+2156 3333333333333333333333333333333333333333333333333333333
+2157 3333333333333333333333333333333333333333333333333333333
+2158 3333333333333333333333333333333333333333333333333333333
+2159 3333333333333333333333333333333333333333333333333333333
+2160 3333333333333333333333333333333333333333333333333333333
+2161 3333333333333333333333333333333333333333333333333333333
+2162 3333333333333333333333333333333333333333333333333333333
+2163 3333333333333333333333333333333333333333333333333333333
+2164 3333333333333333333333333333333333333333333333333333333
+2165 3333333333333333333333333333333333333333333333333333333
+2166 3333333333333333333333333333333333333333333333333333333
+2167 3333333333333333333333333333333333333333333333333333333
+2168 3333333333333333333333333333333333333333333333333333333
+2169 3333333333333333333333333333333333333333333333333333333
+2170 3333333333333333333333333333333333333333333333333333333
+2171 3333333333333333333333333333333333333333333333333333333
+2172 3333333333333333333333333333333333333333333333333333333
+2173 3333333333333333333333333333333333333333333333333333333
+2174 3333333333333333333333333333333333333333333333333333333
+2175 3333333333333333333333333333333333333333333333333333333
+2176 3333333333333333333333333333333333333333333333333333333
+2177 3333333333333333333333333333333333333333333333333333333
+2178 3333333333333333333333333333333333333333333333333333333
+2179 3333333333333333333333333333333333333333333333333333333
+2180 3333333333333333333333333333333333333333333333333333333
+2181 3333333333333333333333333333333333333333333333333333333
+2182 3333333333333333333333333333333333333333333333333333333
+2183 3333333333333333333333333333333333333333333333333333333
+2184 3333333333333333333333333333333333333333333333333333333
+2185 3333333333333333333333333333333333333333333333333333333
+2186 3333333333333333333333333333333333333333333333333333333
+2187 3333333333333333333333333333333333333333333333333333333
+2188 3333333333333333333333333333333333333333333333333333333
+2189 3333333333333333333333333333333333333333333333333333333
+2190 3333333333333333333333333333333333333333333333333333333
+2191 3333333333333333333333333333333333333333333333333333333
+2192 3333333333333333333333333333333333333333333333333333333
+2193 3333333333333333333333333333333333333333333333333333333
+2194 3333333333333333333333333333333333333333333333333333333
+2195 3333333333333333333333333333333333333333333333333333333
+2196 3333333333333333333333333333333333333333333333333333333
+2197 3333333333333333333333333333333333333333333333333333333
+2198 3333333333333333333333333333333333333333333333333333333
+2199 3333333333333333333333333333333333333333333333333333333
+2200 3333333333333333333333333333333333333333333333333333333
+2201 3333333333333333333333333333333333333333333333333333333
+2202 3333333333333333333333333333333333333333333333333333333
+2203 3333333333333333333333333333333333333333333333333333333
+2204 3333333333333333333333333333333333333333333333333333333
+2205 3333333333333333333333333333333333333333333333333333333
+2206 3333333333333333333333333333333333333333333333333333333
+2207 3333333333333333333333333333333333333333333333333333333
+2208 3333333333333333333333333333333333333333333333333333333
+2209 3333333333333333333333333333333333333333333333333333333
+2210 3333333333333333333333333333333333333333333333333333333
+2211 3333333333333333333333333333333333333333333333333333333
+2212 3333333333333333333333333333333333333333333333333333333
+2213 3333333333333333333333333333333333333333333333333333333
+2214 3333333333333333333333333333333333333333333333333333333
+2215 3333333333333333333333333333333333333333333333333333333
+2216 3333333333333333333333333333333333333333333333333333333
+2217 3333333333333333333333333333333333333333333333333333333
+2218 3333333333333333333333333333333333333333333333333333333
+2219 3333333333333333333333333333333333333333333333333333333
+2220 3333333333333333333333333333333333333333333333333333333
+2221 3333333333333333333333333333333333333333333333333333333
+2222 3333333333333333333333333333333333333333333333333333333
+2223 3333333333333333333333333333333333333333333333333333333
+2224 3333333333333333333333333333333333333333333333333333333
+2225 3333333333333333333333333333333333333333333333333333333
+2226 3333333333333333333333333333333333333333333333333333333
+2227 3333333333333333333333333333333333333333333333333333333
+2228 3333333333333333333333333333333333333333333333333333333
+2229 3333333333333333333333333333333333333333333333333333333
+2230 3333333333333333333333333333333333333333333333333333333
+2231 3333333333333333333333333333333333333333333333333333333
+2232 3333333333333333333333333333333333333333333333333333333
+2233 3333333333333333333333333333333333333333333333333333333
+2234 3333333333333333333333333333333333333333333333333333333
+2235 3333333333333333333333333333333333333333333333333333333
+2236 3333333333333333333333333333333333333333333333333333333
+2237 3333333333333333333333333333333333333333333333333333333
+2238 3333333333333333333333333333333333333333333333333333333
+2239 3333333333333333333333333333333333333333333333333333333
+2240 3333333333333333333333333333333333333333333333333333333
+2241 3333333333333333333333333333333333333333333333333333333
+2242 3333333333333333333333333333333333333333333333333333333
+2243 3333333333333333333333333333333333333333333333333333333
+2244 3333333333333333333333333333333333333333333333333333333
+2245 3333333333333333333333333333333333333333333333333333333
+2246 3333333333333333333333333333333333333333333333333333333
+2247 3333333333333333333333333333333333333333333333333333333
+2248 3333333333333333333333333333333333333333333333333333333
+2249 3333333333333333333333333333333333333333333333333333333
+2250 3333333333333333333333333333333333333333333333333333333
+2251 3333333333333333333333333333333333333333333333333333333
+2252 3333333333333333333333333333333333333333333333333333333
+2253 3333333333333333333333333333333333333333333333333333333
+2254 3333333333333333333333333333333333333333333333333333333
+2255 3333333333333333333333333333333333333333333333333333333
+2256 3333333333333333333333333333333333333333333333333333333
+2257 3333333333333333333333333333333333333333333333333333333
+2258 3333333333333333333333333333333333333333333333333333333
+2259 3333333333333333333333333333333333333333333333333333333
+2260 3333333333333333333333333333333333333333333333333333333
+2261 3333333333333333333333333333333333333333333333333333333
+2262 3333333333333333333333333333333333333333333333333333333
+2263 3333333333333333333333333333333333333333333333333333333
+2264 3333333333333333333333333333333333333333333333333333333
+2265 3333333333333333333333333333333333333333333333333333333
+2266 3333333333333333333333333333333333333333333333333333333
+2267 3333333333333333333333333333333333333333333333333333333
+2268 3333333333333333333333333333333333333333333333333333333
+2269 3333333333333333333333333333333333333333333333333333333
+2270 3333333333333333333333333333333333333333333333333333333
+2271 3333333333333333333333333333333333333333333333333333333
+2272 3333333333333333333333333333333333333333333333333333333
+2273 3333333333333333333333333333333333333333333333333333333
+2274 3333333333333333333333333333333333333333333333333333333
+2275 3333333333333333333333333333333333333333333333333333333
+2276 3333333333333333333333333333333333333333333333333333333
+2277 3333333333333333333333333333333333333333333333333333333
+2278 3333333333333333333333333333333333333333333333333333333
+2279 3333333333333333333333333333333333333333333333333333333
+2280 3333333333333333333333333333333333333333333333333333333
+2281 3333333333333333333333333333333333333333333333333333333
+2282 3333333333333333333333333333333333333333333333333333333
+2283 3333333333333333333333333333333333333333333333333333333
+2284 3333333333333333333333333333333333333333333333333333333
+2285 3333333333333333333333333333333333333333333333333333333
+2286 3333333333333333333333333333333333333333333333333333333
+2287 3333333333333333333333333333333333333333333333333333333
+2288 3333333333333333333333333333333333333333333333333333333
+2289 3333333333333333333333333333333333333333333333333333333
+2290 3333333333333333333333333333333333333333333333333333333
+2291 3333333333333333333333333333333333333333333333333333333
+2292 3333333333333333333333333333333333333333333333333333333
+2293 3333333333333333333333333333333333333333333333333333333
+2294 3333333333333333333333333333333333333333333333333333333
+2295 3333333333333333333333333333333333333333333333333333333
+2296 3333333333333333333333333333333333333333333333333333333
+2297 3333333333333333333333333333333333333333333333333333333
+2298 3333333333333333333333333333333333333333333333333333333
+2299 3333333333333333333333333333333333333333333333333333333
+2300 3333333333333333333333333333333333333333333333333333333
+2301 3333333333333333333333333333333333333333333333333333333
+2302 3333333333333333333333333333333333333333333333333333333
+2303 3333333333333333333333333333333333333333333333333333333
+2304 3333333333333333333333333333333333333333333333333333333
+2305 3333333333333333333333333333333333333333333333333333333
+2306 3333333333333333333333333333333333333333333333333333333
+2307 3333333333333333333333333333333333333333333333333333333
+2308 3333333333333333333333333333333333333333333333333333333
+2309 3333333333333333333333333333333333333333333333333333333
+2310 3333333333333333333333333333333333333333333333333333333
+2311 3333333333333333333333333333333333333333333333333333333
+2312 3333333333333333333333333333333333333333333333333333333
+2313 3333333333333333333333333333333333333333333333333333333
+2314 3333333333333333333333333333333333333333333333333333333
+2315 3333333333333333333333333333333333333333333333333333333
+2316 3333333333333333333333333333333333333333333333333333333
+2317 3333333333333333333333333333333333333333333333333333333
+2318 3333333333333333333333333333333333333333333333333333333
+2319 3333333333333333333333333333333333333333333333333333333
+2320 3333333333333333333333333333333333333333333333333333333
+2321 3333333333333333333333333333333333333333333333333333333
+2322 3333333333333333333333333333333333333333333333333333333
+2323 3333333333333333333333333333333333333333333333333333333
+2324 3333333333333333333333333333333333333333333333333333333
+2325 3333333333333333333333333333333333333333333333333333333
+2326 3333333333333333333333333333333333333333333333333333333
+2327 3333333333333333333333333333333333333333333333333333333
+2328 3333333333333333333333333333333333333333333333333333333
+2329 3333333333333333333333333333333333333333333333333333333
+2330 3333333333333333333333333333333333333333333333333333333
+2331 3333333333333333333333333333333333333333333333333333333
+2332 3333333333333333333333333333333333333333333333333333333
+2333 3333333333333333333333333333333333333333333333333333333
+2334 3333333333333333333333333333333333333333333333333333333
+2335 3333333333333333333333333333333333333333333333333333333
+2336 3333333333333333333333333333333333333333333333333333333
+2337 3333333333333333333333333333333333333333333333333333333
+2338 3333333333333333333333333333333333333333333333333333333
+2339 3333333333333333333333333333333333333333333333333333333
+2340 3333333333333333333333333333333333333333333333333333333
+2341 3333333333333333333333333333333333333333333333333333333
+2342 3333333333333333333333333333333333333333333333333333333
+2343 3333333333333333333333333333333333333333333333333333333
+2344 3333333333333333333333333333333333333333333333333333333
+2345 3333333333333333333333333333333333333333333333333333333
+2346 3333333333333333333333333333333333333333333333333333333
+2347 3333333333333333333333333333333333333333333333333333333
+2348 3333333333333333333333333333333333333333333333333333333
+2349 3333333333333333333333333333333333333333333333333333333
+2350 3333333333333333333333333333333333333333333333333333333
+2351 3333333333333333333333333333333333333333333333333333333
+2352 3333333333333333333333333333333333333333333333333333333
+2353 3333333333333333333333333333333333333333333333333333333
+2354 3333333333333333333333333333333333333333333333333333333
+2355 3333333333333333333333333333333333333333333333333333333
+2356 3333333333333333333333333333333333333333333333333333333
+2357 3333333333333333333333333333333333333333333333333333333
+2358 3333333333333333333333333333333333333333333333333333333
+2359 3333333333333333333333333333333333333333333333333333333
+2360 3333333333333333333333333333333333333333333333333333333
+2361 3333333333333333333333333333333333333333333333333333333
+2362 3333333333333333333333333333333333333333333333333333333
+2363 3333333333333333333333333333333333333333333333333333333
+2364 3333333333333333333333333333333333333333333333333333333
+2365 3333333333333333333333333333333333333333333333333333333
+2366 3333333333333333333333333333333333333333333333333333333
+2367 3333333333333333333333333333333333333333333333333333333
+2368 3333333333333333333333333333333333333333333333333333333
+2369 3333333333333333333333333333333333333333333333333333333
+2370 3333333333333333333333333333333333333333333333333333333
+2371 3333333333333333333333333333333333333333333333333333333
+2372 3333333333333333333333333333333333333333333333333333333
+2373 3333333333333333333333333333333333333333333333333333333
+2374 3333333333333333333333333333333333333333333333333333333
+2375 3333333333333333333333333333333333333333333333333333333
+2376 3333333333333333333333333333333333333333333333333333333
+2377 3333333333333333333333333333333333333333333333333333333
+2378 3333333333333333333333333333333333333333333333333333333
+2379 3333333333333333333333333333333333333333333333333333333
+2380 3333333333333333333333333333333333333333333333333333333
+2381 3333333333333333333333333333333333333333333333333333333
+2382 3333333333333333333333333333333333333333333333333333333
+2383 3333333333333333333333333333333333333333333333333333333
+2384 3333333333333333333333333333333333333333333333333333333
+2385 3333333333333333333333333333333333333333333333333333333
+2386 3333333333333333333333333333333333333333333333333333333
+2387 3333333333333333333333333333333333333333333333333333333
+2388 3333333333333333333333333333333333333333333333333333333
+2389 3333333333333333333333333333333333333333333333333333333
+2390 3333333333333333333333333333333333333333333333333333333
+2391 3333333333333333333333333333333333333333333333333333333
+2392 3333333333333333333333333333333333333333333333333333333
+2393 3333333333333333333333333333333333333333333333333333333
+2394 3333333333333333333333333333333333333333333333333333333
+2395 3333333333333333333333333333333333333333333333333333333
+2396 3333333333333333333333333333333333333333333333333333333
+2397 3333333333333333333333333333333333333333333333333333333
+2398 3333333333333333333333333333333333333333333333333333333
+2399 3333333333333333333333333333333333333333333333333333333
+2400 3333333333333333333333333333333333333333333333333333333
+2401 3333333333333333333333333333333333333333333333333333333
+2402 3333333333333333333333333333333333333333333333333333333
+2403 3333333333333333333333333333333333333333333333333333333
+2404 3333333333333333333333333333333333333333333333333333333
+2405 3333333333333333333333333333333333333333333333333333333
+2406 3333333333333333333333333333333333333333333333333333333
+2407 3333333333333333333333333333333333333333333333333333333
+2408 3333333333333333333333333333333333333333333333333333333
+2409 3333333333333333333333333333333333333333333333333333333
+2410 3333333333333333333333333333333333333333333333333333333
+2411 3333333333333333333333333333333333333333333333333333333
+2412 3333333333333333333333333333333333333333333333333333333
+2413 3333333333333333333333333333333333333333333333333333333
+2414 3333333333333333333333333333333333333333333333333333333
+2415 3333333333333333333333333333333333333333333333333333333
+2416 3333333333333333333333333333333333333333333333333333333
+2417 3333333333333333333333333333333333333333333333333333333
+2418 3333333333333333333333333333333333333333333333333333333
+2419 3333333333333333333333333333333333333333333333333333333
+2420 3333333333333333333333333333333333333333333333333333333
+2421 3333333333333333333333333333333333333333333333333333333
+2422 3333333333333333333333333333333333333333333333333333333
+2423 3333333333333333333333333333333333333333333333333333333
+2424 3333333333333333333333333333333333333333333333333333333
+2425 3333333333333333333333333333333333333333333333333333333
+2426 3333333333333333333333333333333333333333333333333333333
+2427 3333333333333333333333333333333333333333333333333333333
+2428 3333333333333333333333333333333333333333333333333333333
+2429 3333333333333333333333333333333333333333333333333333333
+2430 3333333333333333333333333333333333333333333333333333333
+2431 3333333333333333333333333333333333333333333333333333333
+2432 3333333333333333333333333333333333333333333333333333333
+2433 3333333333333333333333333333333333333333333333333333333
+2434 3333333333333333333333333333333333333333333333333333333
+2435 3333333333333333333333333333333333333333333333333333333
+2436 3333333333333333333333333333333333333333333333333333333
+2437 3333333333333333333333333333333333333333333333333333333
+2438 3333333333333333333333333333333333333333333333333333333
+2439 3333333333333333333333333333333333333333333333333333333
+2440 3333333333333333333333333333333333333333333333333333333
+2441 3333333333333333333333333333333333333333333333333333333
+2442 3333333333333333333333333333333333333333333333333333333
+2443 3333333333333333333333333333333333333333333333333333333
+2444 3333333333333333333333333333333333333333333333333333333
+2445 3333333333333333333333333333333333333333333333333333333
+2446 3333333333333333333333333333333333333333333333333333333
+2447 3333333333333333333333333333333333333333333333333333333
+2448 3333333333333333333333333333333333333333333333333333333
+2449 3333333333333333333333333333333333333333333333333333333
+2450 3333333333333333333333333333333333333333333333333333333
+2451 3333333333333333333333333333333333333333333333333333333
+2452 3333333333333333333333333333333333333333333333333333333
+2453 3333333333333333333333333333333333333333333333333333333
+2454 3333333333333333333333333333333333333333333333333333333
+2455 3333333333333333333333333333333333333333333333333333333
+2456 3333333333333333333333333333333333333333333333333333333
+2457 3333333333333333333333333333333333333333333333333333333
+2458 3333333333333333333333333333333333333333333333333333333
+2459 3333333333333333333333333333333333333333333333333333333
+2460 3333333333333333333333333333333333333333333333333333333
+2461 3333333333333333333333333333333333333333333333333333333
+2462 3333333333333333333333333333333333333333333333333333333
+2463 3333333333333333333333333333333333333333333333333333333
+2464 3333333333333333333333333333333333333333333333333333333
+2465 3333333333333333333333333333333333333333333333333333333
+2466 3333333333333333333333333333333333333333333333333333333
+2467 3333333333333333333333333333333333333333333333333333333
+2468 3333333333333333333333333333333333333333333333333333333
+2469 3333333333333333333333333333333333333333333333333333333
+2470 3333333333333333333333333333333333333333333333333333333
+2471 3333333333333333333333333333333333333333333333333333333
+2472 3333333333333333333333333333333333333333333333333333333
+2473 3333333333333333333333333333333333333333333333333333333
+2474 3333333333333333333333333333333333333333333333333333333
+2475 3333333333333333333333333333333333333333333333333333333
+2476 3333333333333333333333333333333333333333333333333333333
+2477 3333333333333333333333333333333333333333333333333333333
+2478 3333333333333333333333333333333333333333333333333333333
+2479 3333333333333333333333333333333333333333333333333333333
+2480 3333333333333333333333333333333333333333333333333333333
+2481 3333333333333333333333333333333333333333333333333333333
+2482 3333333333333333333333333333333333333333333333333333333
+2483 3333333333333333333333333333333333333333333333333333333
+2484 3333333333333333333333333333333333333333333333333333333
+2485 3333333333333333333333333333333333333333333333333333333
+2486 3333333333333333333333333333333333333333333333333333333
+2487 3333333333333333333333333333333333333333333333333333333
+2488 3333333333333333333333333333333333333333333333333333333
+2489 3333333333333333333333333333333333333333333333333333333
+2490 3333333333333333333333333333333333333333333333333333333
+2491 3333333333333333333333333333333333333333333333333333333
+2492 3333333333333333333333333333333333333333333333333333333
+2493 3333333333333333333333333333333333333333333333333333333
+2494 3333333333333333333333333333333333333333333333333333333
+2495 3333333333333333333333333333333333333333333333333333333
+2496 3333333333333333333333333333333333333333333333333333333
+2497 3333333333333333333333333333333333333333333333333333333
+2498 3333333333333333333333333333333333333333333333333333333
+2499 3333333333333333333333333333333333333333333333333333333
+2500 3333333333333333333333333333333333333333333333333333333
+2501 3333333333333333333333333333333333333333333333333333333
+2502 3333333333333333333333333333333333333333333333333333333
+2503 3333333333333333333333333333333333333333333333333333333
+2504 3333333333333333333333333333333333333333333333333333333
+2505 3333333333333333333333333333333333333333333333333333333
+2506 3333333333333333333333333333333333333333333333333333333
+2507 3333333333333333333333333333333333333333333333333333333
+2508 3333333333333333333333333333333333333333333333333333333
+2509 3333333333333333333333333333333333333333333333333333333
+2510 3333333333333333333333333333333333333333333333333333333
+2511 3333333333333333333333333333333333333333333333333333333
+2512 3333333333333333333333333333333333333333333333333333333
+2513 3333333333333333333333333333333333333333333333333333333
+2514 3333333333333333333333333333333333333333333333333333333
+2515 3333333333333333333333333333333333333333333333333333333
+2516 3333333333333333333333333333333333333333333333333333333
+2517 3333333333333333333333333333333333333333333333333333333
+2518 3333333333333333333333333333333333333333333333333333333
+2519 3333333333333333333333333333333333333333333333333333333
+2520 3333333333333333333333333333333333333333333333333333333
+2521 3333333333333333333333333333333333333333333333333333333
+2522 3333333333333333333333333333333333333333333333333333333
+2523 3333333333333333333333333333333333333333333333333333333
+2524 3333333333333333333333333333333333333333333333333333333
+2525 3333333333333333333333333333333333333333333333333333333
+2526 3333333333333333333333333333333333333333333333333333333
+2527 3333333333333333333333333333333333333333333333333333333
+2528 3333333333333333333333333333333333333333333333333333333
+2529 3333333333333333333333333333333333333333333333333333333
+2530 3333333333333333333333333333333333333333333333333333333
+2531 3333333333333333333333333333333333333333333333333333333
+2532 3333333333333333333333333333333333333333333333333333333
+2533 3333333333333333333333333333333333333333333333333333333
+2534 3333333333333333333333333333333333333333333333333333333
+2535 3333333333333333333333333333333333333333333333333333333
+2536 3333333333333333333333333333333333333333333333333333333
+2537 3333333333333333333333333333333333333333333333333333333
+2538 3333333333333333333333333333333333333333333333333333333
+2539 3333333333333333333333333333333333333333333333333333333
+2540 3333333333333333333333333333333333333333333333333333333
+2541 3333333333333333333333333333333333333333333333333333333
+2542 3333333333333333333333333333333333333333333333333333333
+2543 3333333333333333333333333333333333333333333333333333333
+2544 3333333333333333333333333333333333333333333333333333333
+2545 3333333333333333333333333333333333333333333333333333333
+2546 3333333333333333333333333333333333333333333333333333333
+2547 3333333333333333333333333333333333333333333333333333333
+2548 3333333333333333333333333333333333333333333333333333333
+2549 3333333333333333333333333333333333333333333333333333333
+2550 3333333333333333333333333333333333333333333333333333333
+2551 3333333333333333333333333333333333333333333333333333333
+2552 3333333333333333333333333333333333333333333333333333333
+2553 3333333333333333333333333333333333333333333333333333333
+2554 3333333333333333333333333333333333333333333333333333333
+2555 3333333333333333333333333333333333333333333333333333333
+2556 3333333333333333333333333333333333333333333333333333333
+2557 3333333333333333333333333333333333333333333333333333333
+2558 3333333333333333333333333333333333333333333333333333333
+2559 3333333333333333333333333333333333333333333333333333333
+2560 3333333333333333333333333333333333333333333333333333333
+2561 3333333333333333333333333333333333333333333333333333333
+2562 3333333333333333333333333333333333333333333333333333333
+2563 3333333333333333333333333333333333333333333333333333333
+2564 3333333333333333333333333333333333333333333333333333333
+2565 3333333333333333333333333333333333333333333333333333333
+2566 3333333333333333333333333333333333333333333333333333333
+2567 3333333333333333333333333333333333333333333333333333333
+2568 3333333333333333333333333333333333333333333333333333333
+2569 3333333333333333333333333333333333333333333333333333333
+2570 3333333333333333333333333333333333333333333333333333333
+2571 3333333333333333333333333333333333333333333333333333333
+2572 3333333333333333333333333333333333333333333333333333333
+2573 3333333333333333333333333333333333333333333333333333333
+2574 3333333333333333333333333333333333333333333333333333333
+2575 3333333333333333333333333333333333333333333333333333333
+2576 3333333333333333333333333333333333333333333333333333333
+2577 3333333333333333333333333333333333333333333333333333333
+2578 3333333333333333333333333333333333333333333333333333333
+2579 3333333333333333333333333333333333333333333333333333333
+2580 3333333333333333333333333333333333333333333333333333333
+2581 3333333333333333333333333333333333333333333333333333333
+2582 3333333333333333333333333333333333333333333333333333333
+2583 3333333333333333333333333333333333333333333333333333333
+2584 3333333333333333333333333333333333333333333333333333333
+2585 3333333333333333333333333333333333333333333333333333333
+2586 3333333333333333333333333333333333333333333333333333333
+2587 3333333333333333333333333333333333333333333333333333333
+2588 3333333333333333333333333333333333333333333333333333333
+2589 3333333333333333333333333333333333333333333333333333333
+2590 3333333333333333333333333333333333333333333333333333333
+2591 3333333333333333333333333333333333333333333333333333333
+2592 3333333333333333333333333333333333333333333333333333333
+2593 3333333333333333333333333333333333333333333333333333333
+2594 3333333333333333333333333333333333333333333333333333333
+2595 3333333333333333333333333333333333333333333333333333333
+2596 3333333333333333333333333333333333333333333333333333333
+2597 3333333333333333333333333333333333333333333333333333333
+2598 3333333333333333333333333333333333333333333333333333333
+2599 3333333333333333333333333333333333333333333333333333333
+2600 3333333333333333333333333333333333333333333333333333333
+2601 3333333333333333333333333333333333333333333333333333333
+2602 3333333333333333333333333333333333333333333333333333333
+2603 3333333333333333333333333333333333333333333333333333333
+2604 3333333333333333333333333333333333333333333333333333333
+2605 3333333333333333333333333333333333333333333333333333333
+2606 3333333333333333333333333333333333333333333333333333333
+2607 3333333333333333333333333333333333333333333333333333333
+2608 3333333333333333333333333333333333333333333333333333333
+2609 3333333333333333333333333333333333333333333333333333333
+2610 3333333333333333333333333333333333333333333333333333333
+2611 3333333333333333333333333333333333333333333333333333333
+2612 3333333333333333333333333333333333333333333333333333333
+2613 3333333333333333333333333333333333333333333333333333333
+2614 3333333333333333333333333333333333333333333333333333333
+2615 3333333333333333333333333333333333333333333333333333333
+2616 3333333333333333333333333333333333333333333333333333333
+2617 3333333333333333333333333333333333333333333333333333333
+2618 3333333333333333333333333333333333333333333333333333333
+2619 3333333333333333333333333333333333333333333333333333333
+2620 3333333333333333333333333333333333333333333333333333333
+2621 3333333333333333333333333333333333333333333333333333333
+2622 3333333333333333333333333333333333333333333333333333333
+2623 3333333333333333333333333333333333333333333333333333333
+2624 3333333333333333333333333333333333333333333333333333333
+2625 3333333333333333333333333333333333333333333333333333333
+2626 3333333333333333333333333333333333333333333333333333333
+2627 3333333333333333333333333333333333333333333333333333333
+2628 3333333333333333333333333333333333333333333333333333333
+2629 3333333333333333333333333333333333333333333333333333333
+2630 3333333333333333333333333333333333333333333333333333333
+2631 3333333333333333333333333333333333333333333333333333333
+2632 3333333333333333333333333333333333333333333333333333333
+2633 3333333333333333333333333333333333333333333333333333333
+2634 3333333333333333333333333333333333333333333333333333333
+2635 3333333333333333333333333333333333333333333333333333333
+2636 3333333333333333333333333333333333333333333333333333333
+2637 3333333333333333333333333333333333333333333333333333333
+2638 3333333333333333333333333333333333333333333333333333333
+2639 3333333333333333333333333333333333333333333333333333333
+2640 3333333333333333333333333333333333333333333333333333333
+2641 3333333333333333333333333333333333333333333333333333333
+2642 3333333333333333333333333333333333333333333333333333333
+2643 3333333333333333333333333333333333333333333333333333333
+2644 3333333333333333333333333333333333333333333333333333333
+2645 3333333333333333333333333333333333333333333333333333333
+2646 3333333333333333333333333333333333333333333333333333333
+2647 3333333333333333333333333333333333333333333333333333333
+2648 3333333333333333333333333333333333333333333333333333333
+2649 3333333333333333333333333333333333333333333333333333333
+2650 3333333333333333333333333333333333333333333333333333333
+2651 3333333333333333333333333333333333333333333333333333333
+2652 3333333333333333333333333333333333333333333333333333333
+2653 3333333333333333333333333333333333333333333333333333333
+2654 3333333333333333333333333333333333333333333333333333333
+2655 3333333333333333333333333333333333333333333333333333333
+2656 3333333333333333333333333333333333333333333333333333333
+2657 3333333333333333333333333333333333333333333333333333333
+2658 3333333333333333333333333333333333333333333333333333333
+2659 3333333333333333333333333333333333333333333333333333333
+2660 3333333333333333333333333333333333333333333333333333333
+2661 3333333333333333333333333333333333333333333333333333333
+2662 3333333333333333333333333333333333333333333333333333333
+2663 3333333333333333333333333333333333333333333333333333333
+2664 3333333333333333333333333333333333333333333333333333333
+2665 3333333333333333333333333333333333333333333333333333333
+2666 3333333333333333333333333333333333333333333333333333333
+2667 3333333333333333333333333333333333333333333333333333333
+2668 3333333333333333333333333333333333333333333333333333333
+2669 3333333333333333333333333333333333333333333333333333333
+2670 3333333333333333333333333333333333333333333333333333333
+2671 3333333333333333333333333333333333333333333333333333333
+2672 3333333333333333333333333333333333333333333333333333333
+2673 3333333333333333333333333333333333333333333333333333333
+2674 3333333333333333333333333333333333333333333333333333333
+2675 3333333333333333333333333333333333333333333333333333333
+2676 3333333333333333333333333333333333333333333333333333333
+2677 3333333333333333333333333333333333333333333333333333333
+2678 3333333333333333333333333333333333333333333333333333333
+2679 3333333333333333333333333333333333333333333333333333333
+2680 3333333333333333333333333333333333333333333333333333333
+2681 3333333333333333333333333333333333333333333333333333333
+2682 3333333333333333333333333333333333333333333333333333333
+2683 3333333333333333333333333333333333333333333333333333333
+2684 3333333333333333333333333333333333333333333333333333333
+2685 3333333333333333333333333333333333333333333333333333333
+2686 3333333333333333333333333333333333333333333333333333333
+2687 3333333333333333333333333333333333333333333333333333333
+2688 3333333333333333333333333333333333333333333333333333333
+2689 3333333333333333333333333333333333333333333333333333333
+2690 3333333333333333333333333333333333333333333333333333333
+2691 3333333333333333333333333333333333333333333333333333333
+2692 3333333333333333333333333333333333333333333333333333333
+2693 3333333333333333333333333333333333333333333333333333333
+2694 3333333333333333333333333333333333333333333333333333333
+2695 3333333333333333333333333333333333333333333333333333333
+2696 3333333333333333333333333333333333333333333333333333333
+2697 3333333333333333333333333333333333333333333333333333333
+2698 3333333333333333333333333333333333333333333333333333333
+2699 3333333333333333333333333333333333333333333333333333333
+2700 3333333333333333333333333333333333333333333333333333333
+2701 3333333333333333333333333333333333333333333333333333333
+2702 3333333333333333333333333333333333333333333333333333333
+2703 3333333333333333333333333333333333333333333333333333333
+2704 3333333333333333333333333333333333333333333333333333333
+2705 3333333333333333333333333333333333333333333333333333333
+2706 3333333333333333333333333333333333333333333333333333333
+2707 3333333333333333333333333333333333333333333333333333333
+2708 3333333333333333333333333333333333333333333333333333333
+2709 3333333333333333333333333333333333333333333333333333333
+2710 3333333333333333333333333333333333333333333333333333333
+2711 3333333333333333333333333333333333333333333333333333333
+2712 3333333333333333333333333333333333333333333333333333333
+2713 3333333333333333333333333333333333333333333333333333333
+2714 3333333333333333333333333333333333333333333333333333333
+2715 3333333333333333333333333333333333333333333333333333333
+2716 3333333333333333333333333333333333333333333333333333333
+2717 3333333333333333333333333333333333333333333333333333333
+2718 3333333333333333333333333333333333333333333333333333333
+2719 3333333333333333333333333333333333333333333333333333333
+2720 3333333333333333333333333333333333333333333333333333333
+2721 3333333333333333333333333333333333333333333333333333333
+2722 3333333333333333333333333333333333333333333333333333333
+2723 3333333333333333333333333333333333333333333333333333333
+2724 3333333333333333333333333333333333333333333333333333333
+2725 3333333333333333333333333333333333333333333333333333333
+2726 3333333333333333333333333333333333333333333333333333333
+2727 3333333333333333333333333333333333333333333333333333333
+2728 3333333333333333333333333333333333333333333333333333333
+2729 3333333333333333333333333333333333333333333333333333333
+2730 3333333333333333333333333333333333333333333333333333333
+2731 3333333333333333333333333333333333333333333333333333333
+2732 3333333333333333333333333333333333333333333333333333333
+2733 3333333333333333333333333333333333333333333333333333333
+2734 3333333333333333333333333333333333333333333333333333333
+2735 3333333333333333333333333333333333333333333333333333333
+2736 3333333333333333333333333333333333333333333333333333333
+2737 3333333333333333333333333333333333333333333333333333333
+2738 3333333333333333333333333333333333333333333333333333333
+2739 3333333333333333333333333333333333333333333333333333333
+2740 3333333333333333333333333333333333333333333333333333333
+2741 3333333333333333333333333333333333333333333333333333333
+2742 3333333333333333333333333333333333333333333333333333333
+2743 3333333333333333333333333333333333333333333333333333333
+2744 3333333333333333333333333333333333333333333333333333333
+2745 3333333333333333333333333333333333333333333333333333333
+2746 3333333333333333333333333333333333333333333333333333333
+2747 3333333333333333333333333333333333333333333333333333333
+2748 3333333333333333333333333333333333333333333333333333333
+2749 3333333333333333333333333333333333333333333333333333333
+2750 3333333333333333333333333333333333333333333333333333333
+2751 3333333333333333333333333333333333333333333333333333333
+2752 3333333333333333333333333333333333333333333333333333333
+2753 3333333333333333333333333333333333333333333333333333333
+2754 3333333333333333333333333333333333333333333333333333333
+2755 3333333333333333333333333333333333333333333333333333333
+2756 3333333333333333333333333333333333333333333333333333333
+2757 3333333333333333333333333333333333333333333333333333333
+2758 3333333333333333333333333333333333333333333333333333333
+2759 3333333333333333333333333333333333333333333333333333333
+2760 3333333333333333333333333333333333333333333333333333333
+2761 3333333333333333333333333333333333333333333333333333333
+2762 3333333333333333333333333333333333333333333333333333333
+2763 3333333333333333333333333333333333333333333333333333333
+2764 3333333333333333333333333333333333333333333333333333333
+2765 3333333333333333333333333333333333333333333333333333333
+2766 3333333333333333333333333333333333333333333333333333333
+2767 3333333333333333333333333333333333333333333333333333333
+2768 3333333333333333333333333333333333333333333333333333333
+2769 3333333333333333333333333333333333333333333333333333333
+2770 3333333333333333333333333333333333333333333333333333333
+2771 3333333333333333333333333333333333333333333333333333333
+2772 3333333333333333333333333333333333333333333333333333333
+2773 3333333333333333333333333333333333333333333333333333333
+2774 3333333333333333333333333333333333333333333333333333333
+2775 3333333333333333333333333333333333333333333333333333333
+2776 3333333333333333333333333333333333333333333333333333333
+2777 3333333333333333333333333333333333333333333333333333333
+2778 3333333333333333333333333333333333333333333333333333333
+2779 3333333333333333333333333333333333333333333333333333333
+2780 3333333333333333333333333333333333333333333333333333333
+2781 3333333333333333333333333333333333333333333333333333333
+2782 3333333333333333333333333333333333333333333333333333333
+2783 3333333333333333333333333333333333333333333333333333333
+2784 3333333333333333333333333333333333333333333333333333333
+2785 3333333333333333333333333333333333333333333333333333333
+2786 3333333333333333333333333333333333333333333333333333333
+2787 3333333333333333333333333333333333333333333333333333333
+2788 3333333333333333333333333333333333333333333333333333333
+2789 3333333333333333333333333333333333333333333333333333333
+2790 3333333333333333333333333333333333333333333333333333333
+2791 3333333333333333333333333333333333333333333333333333333
+2792 3333333333333333333333333333333333333333333333333333333
+2793 3333333333333333333333333333333333333333333333333333333
+2794 3333333333333333333333333333333333333333333333333333333
+2795 3333333333333333333333333333333333333333333333333333333
+2796 3333333333333333333333333333333333333333333333333333333
+2797 3333333333333333333333333333333333333333333333333333333
+2798 3333333333333333333333333333333333333333333333333333333
+2799 3333333333333333333333333333333333333333333333333333333
+2800 3333333333333333333333333333333333333333333333333333333
+2801 3333333333333333333333333333333333333333333333333333333
+2802 3333333333333333333333333333333333333333333333333333333
+2803 3333333333333333333333333333333333333333333333333333333
+2804 3333333333333333333333333333333333333333333333333333333
+2805 3333333333333333333333333333333333333333333333333333333
+2806 3333333333333333333333333333333333333333333333333333333
+2807 3333333333333333333333333333333333333333333333333333333
+2808 3333333333333333333333333333333333333333333333333333333
+2809 3333333333333333333333333333333333333333333333333333333
+2810 3333333333333333333333333333333333333333333333333333333
+2811 3333333333333333333333333333333333333333333333333333333
+2812 3333333333333333333333333333333333333333333333333333333
+2813 3333333333333333333333333333333333333333333333333333333
+2814 3333333333333333333333333333333333333333333333333333333
+2815 3333333333333333333333333333333333333333333333333333333
+2816 3333333333333333333333333333333333333333333333333333333
+2817 3333333333333333333333333333333333333333333333333333333
+2818 3333333333333333333333333333333333333333333333333333333
+2819 3333333333333333333333333333333333333333333333333333333
+2820 3333333333333333333333333333333333333333333333333333333
+2821 3333333333333333333333333333333333333333333333333333333
+2822 3333333333333333333333333333333333333333333333333333333
+2823 3333333333333333333333333333333333333333333333333333333
+2824 3333333333333333333333333333333333333333333333333333333
+2825 3333333333333333333333333333333333333333333333333333333
+2826 3333333333333333333333333333333333333333333333333333333
+2827 3333333333333333333333333333333333333333333333333333333
+2828 3333333333333333333333333333333333333333333333333333333
+2829 3333333333333333333333333333333333333333333333333333333
+2830 3333333333333333333333333333333333333333333333333333333
+2831 3333333333333333333333333333333333333333333333333333333
+2832 3333333333333333333333333333333333333333333333333333333
+2833 3333333333333333333333333333333333333333333333333333333
+2834 3333333333333333333333333333333333333333333333333333333
+2835 3333333333333333333333333333333333333333333333333333333
+2836 3333333333333333333333333333333333333333333333333333333
+2837 3333333333333333333333333333333333333333333333333333333
+2838 3333333333333333333333333333333333333333333333333333333
+2839 3333333333333333333333333333333333333333333333333333333
+2840 3333333333333333333333333333333333333333333333333333333
+2841 3333333333333333333333333333333333333333333333333333333
+2842 3333333333333333333333333333333333333333333333333333333
+2843 3333333333333333333333333333333333333333333333333333333
+2844 3333333333333333333333333333333333333333333333333333333
+2845 3333333333333333333333333333333333333333333333333333333
+2846 3333333333333333333333333333333333333333333333333333333
+2847 3333333333333333333333333333333333333333333333333333333
+2848 3333333333333333333333333333333333333333333333333333333
+2849 3333333333333333333333333333333333333333333333333333333
+2850 3333333333333333333333333333333333333333333333333333333
+2851 3333333333333333333333333333333333333333333333333333333
+2852 3333333333333333333333333333333333333333333333333333333
+2853 3333333333333333333333333333333333333333333333333333333
+2854 3333333333333333333333333333333333333333333333333333333
+2855 3333333333333333333333333333333333333333333333333333333
+2856 3333333333333333333333333333333333333333333333333333333
+2857 3333333333333333333333333333333333333333333333333333333
+2858 3333333333333333333333333333333333333333333333333333333
+2859 3333333333333333333333333333333333333333333333333333333
+2860 3333333333333333333333333333333333333333333333333333333
+2861 3333333333333333333333333333333333333333333333333333333
+2862 3333333333333333333333333333333333333333333333333333333
+2863 3333333333333333333333333333333333333333333333333333333
+2864 3333333333333333333333333333333333333333333333333333333
+2865 3333333333333333333333333333333333333333333333333333333
+2866 3333333333333333333333333333333333333333333333333333333
+2867 3333333333333333333333333333333333333333333333333333333
+2868 3333333333333333333333333333333333333333333333333333333
+2869 3333333333333333333333333333333333333333333333333333333
+2870 3333333333333333333333333333333333333333333333333333333
+2871 3333333333333333333333333333333333333333333333333333333
+2872 3333333333333333333333333333333333333333333333333333333
+2873 3333333333333333333333333333333333333333333333333333333
+2874 3333333333333333333333333333333333333333333333333333333
+2875 3333333333333333333333333333333333333333333333333333333
+2876 3333333333333333333333333333333333333333333333333333333
+2877 3333333333333333333333333333333333333333333333333333333
+2878 3333333333333333333333333333333333333333333333333333333
+2879 3333333333333333333333333333333333333333333333333333333
+2880 3333333333333333333333333333333333333333333333333333333
+2881 3333333333333333333333333333333333333333333333333333333
+2882 3333333333333333333333333333333333333333333333333333333
+2883 3333333333333333333333333333333333333333333333333333333
+2884 3333333333333333333333333333333333333333333333333333333
+2885 3333333333333333333333333333333333333333333333333333333
+2886 3333333333333333333333333333333333333333333333333333333
+2887 3333333333333333333333333333333333333333333333333333333
+2888 3333333333333333333333333333333333333333333333333333333
+2889 3333333333333333333333333333333333333333333333333333333
+2890 3333333333333333333333333333333333333333333333333333333
+2891 3333333333333333333333333333333333333333333333333333333
+2892 3333333333333333333333333333333333333333333333333333333
+2893 3333333333333333333333333333333333333333333333333333333
+2894 3333333333333333333333333333333333333333333333333333333
+2895 3333333333333333333333333333333333333333333333333333333
+2896 3333333333333333333333333333333333333333333333333333333
+2897 3333333333333333333333333333333333333333333333333333333
+2898 3333333333333333333333333333333333333333333333333333333
+2899 3333333333333333333333333333333333333333333333333333333
+2900 3333333333333333333333333333333333333333333333333333333
+2901 3333333333333333333333333333333333333333333333333333333
+2902 3333333333333333333333333333333333333333333333333333333
+2903 3333333333333333333333333333333333333333333333333333333
+2904 3333333333333333333333333333333333333333333333333333333
+2905 3333333333333333333333333333333333333333333333333333333
+2906 3333333333333333333333333333333333333333333333333333333
+2907 3333333333333333333333333333333333333333333333333333333
+2908 3333333333333333333333333333333333333333333333333333333
+2909 3333333333333333333333333333333333333333333333333333333
+2910 3333333333333333333333333333333333333333333333333333333
+2911 3333333333333333333333333333333333333333333333333333333
+2912 3333333333333333333333333333333333333333333333333333333
+2913 3333333333333333333333333333333333333333333333333333333
+2914 3333333333333333333333333333333333333333333333333333333
+2915 3333333333333333333333333333333333333333333333333333333
+2916 3333333333333333333333333333333333333333333333333333333
+2917 3333333333333333333333333333333333333333333333333333333
+2918 3333333333333333333333333333333333333333333333333333333
+2919 3333333333333333333333333333333333333333333333333333333
+2920 3333333333333333333333333333333333333333333333333333333
+2921 3333333333333333333333333333333333333333333333333333333
+2922 3333333333333333333333333333333333333333333333333333333
+2923 3333333333333333333333333333333333333333333333333333333
+2924 3333333333333333333333333333333333333333333333333333333
+2925 3333333333333333333333333333333333333333333333333333333
+2926 3333333333333333333333333333333333333333333333333333333
+2927 3333333333333333333333333333333333333333333333333333333
+2928 3333333333333333333333333333333333333333333333333333333
+2929 3333333333333333333333333333333333333333333333333333333
+2930 3333333333333333333333333333333333333333333333333333333
+2931 3333333333333333333333333333333333333333333333333333333
+2932 3333333333333333333333333333333333333333333333333333333
+2933 3333333333333333333333333333333333333333333333333333333
+2934 3333333333333333333333333333333333333333333333333333333
+2935 3333333333333333333333333333333333333333333333333333333
+2936 3333333333333333333333333333333333333333333333333333333
+2937 3333333333333333333333333333333333333333333333333333333
+2938 3333333333333333333333333333333333333333333333333333333
+2939 3333333333333333333333333333333333333333333333333333333
+2940 3333333333333333333333333333333333333333333333333333333
+2941 3333333333333333333333333333333333333333333333333333333
+2942 3333333333333333333333333333333333333333333333333333333
+2943 3333333333333333333333333333333333333333333333333333333
+2944 3333333333333333333333333333333333333333333333333333333
+2945 3333333333333333333333333333333333333333333333333333333
+2946 3333333333333333333333333333333333333333333333333333333
+2947 3333333333333333333333333333333333333333333333333333333
+2948 3333333333333333333333333333333333333333333333333333333
+2949 3333333333333333333333333333333333333333333333333333333
+2950 3333333333333333333333333333333333333333333333333333333
+2951 3333333333333333333333333333333333333333333333333333333
+2952 3333333333333333333333333333333333333333333333333333333
+2953 3333333333333333333333333333333333333333333333333333333
+2954 3333333333333333333333333333333333333333333333333333333
+2955 3333333333333333333333333333333333333333333333333333333
+2956 3333333333333333333333333333333333333333333333333333333
+2957 3333333333333333333333333333333333333333333333333333333
+2958 3333333333333333333333333333333333333333333333333333333
+2959 3333333333333333333333333333333333333333333333333333333
+2960 3333333333333333333333333333333333333333333333333333333
+2961 3333333333333333333333333333333333333333333333333333333
+2962 3333333333333333333333333333333333333333333333333333333
+2963 3333333333333333333333333333333333333333333333333333333
+2964 3333333333333333333333333333333333333333333333333333333
+2965 3333333333333333333333333333333333333333333333333333333
+2966 3333333333333333333333333333333333333333333333333333333
+2967 3333333333333333333333333333333333333333333333333333333
+2968 3333333333333333333333333333333333333333333333333333333
+2969 3333333333333333333333333333333333333333333333333333333
+2970 3333333333333333333333333333333333333333333333333333333
+2971 3333333333333333333333333333333333333333333333333333333
+2972 3333333333333333333333333333333333333333333333333333333
+2973 3333333333333333333333333333333333333333333333333333333
+2974 3333333333333333333333333333333333333333333333333333333
+2975 3333333333333333333333333333333333333333333333333333333
+2976 3333333333333333333333333333333333333333333333333333333
+2977 3333333333333333333333333333333333333333333333333333333
+2978 3333333333333333333333333333333333333333333333333333333
+2979 3333333333333333333333333333333333333333333333333333333
+2980 3333333333333333333333333333333333333333333333333333333
+2981 3333333333333333333333333333333333333333333333333333333
+2982 3333333333333333333333333333333333333333333333333333333
+2983 3333333333333333333333333333333333333333333333333333333
+2984 3333333333333333333333333333333333333333333333333333333
+2985 3333333333333333333333333333333333333333333333333333333
+2986 3333333333333333333333333333333333333333333333333333333
+2987 3333333333333333333333333333333333333333333333333333333
+2988 3333333333333333333333333333333333333333333333333333333
+2989 3333333333333333333333333333333333333333333333333333333
+2990 3333333333333333333333333333333333333333333333333333333
+2991 3333333333333333333333333333333333333333333333333333333
+2992 3333333333333333333333333333333333333333333333333333333
+2993 3333333333333333333333333333333333333333333333333333333
+2994 3333333333333333333333333333333333333333333333333333333
+2995 3333333333333333333333333333333333333333333333333333333
+2996 3333333333333333333333333333333333333333333333333333333
+2997 3333333333333333333333333333333333333333333333333333333
+2998 3333333333333333333333333333333333333333333333333333333
+2999 3333333333333333333333333333333333333333333333333333333
+3000 3333333333333333333333333333333333333333333333333333333
+3001 3333333333333333333333333333333333333333333333333333333
+3002 3333333333333333333333333333333333333333333333333333333
+3003 3333333333333333333333333333333333333333333333333333333
+3004 3333333333333333333333333333333333333333333333333333333
+3005 3333333333333333333333333333333333333333333333333333333
+3006 3333333333333333333333333333333333333333333333333333333
+3007 3333333333333333333333333333333333333333333333333333333
+3008 3333333333333333333333333333333333333333333333333333333
+3009 3333333333333333333333333333333333333333333333333333333
+3010 3333333333333333333333333333333333333333333333333333333
+3011 3333333333333333333333333333333333333333333333333333333
+3012 3333333333333333333333333333333333333333333333333333333
+3013 3333333333333333333333333333333333333333333333333333333
+3014 3333333333333333333333333333333333333333333333333333333
+3015 3333333333333333333333333333333333333333333333333333333
+3016 3333333333333333333333333333333333333333333333333333333
+3017 3333333333333333333333333333333333333333333333333333333
+3018 3333333333333333333333333333333333333333333333333333333
+3019 3333333333333333333333333333333333333333333333333333333
+3020 3333333333333333333333333333333333333333333333333333333
+3021 3333333333333333333333333333333333333333333333333333333
+3022 3333333333333333333333333333333333333333333333333333333
+3023 3333333333333333333333333333333333333333333333333333333
+3024 3333333333333333333333333333333333333333333333333333333
+3025 3333333333333333333333333333333333333333333333333333333
+3026 3333333333333333333333333333333333333333333333333333333
+3027 3333333333333333333333333333333333333333333333333333333
+3028 3333333333333333333333333333333333333333333333333333333
+3029 3333333333333333333333333333333333333333333333333333333
+3030 3333333333333333333333333333333333333333333333333333333
+3031 3333333333333333333333333333333333333333333333333333333
+3032 3333333333333333333333333333333333333333333333333333333
+3033 3333333333333333333333333333333333333333333333333333333
+3034 3333333333333333333333333333333333333333333333333333333
+3035 3333333333333333333333333333333333333333333333333333333
+3036 3333333333333333333333333333333333333333333333333333333
+3037 3333333333333333333333333333333333333333333333333333333
+3038 3333333333333333333333333333333333333333333333333333333
+3039 3333333333333333333333333333333333333333333333333333333
+3040 3333333333333333333333333333333333333333333333333333333
+3041 3333333333333333333333333333333333333333333333333333333
+3042 3333333333333333333333333333333333333333333333333333333
+3043 3333333333333333333333333333333333333333333333333333333
+3044 3333333333333333333333333333333333333333333333333333333
+3045 3333333333333333333333333333333333333333333333333333333
+3046 3333333333333333333333333333333333333333333333333333333
+3047 3333333333333333333333333333333333333333333333333333333
+3048 3333333333333333333333333333333333333333333333333333333
+3049 3333333333333333333333333333333333333333333333333333333
+3050 3333333333333333333333333333333333333333333333333333333
+3051 3333333333333333333333333333333333333333333333333333333
+3052 3333333333333333333333333333333333333333333333333333333
+3053 3333333333333333333333333333333333333333333333333333333
+3054 3333333333333333333333333333333333333333333333333333333
+3055 3333333333333333333333333333333333333333333333333333333
+3056 3333333333333333333333333333333333333333333333333333333
+3057 3333333333333333333333333333333333333333333333333333333
+3058 3333333333333333333333333333333333333333333333333333333
+3059 3333333333333333333333333333333333333333333333333333333
+3060 3333333333333333333333333333333333333333333333333333333
+3061 3333333333333333333333333333333333333333333333333333333
+3062 3333333333333333333333333333333333333333333333333333333
+3063 3333333333333333333333333333333333333333333333333333333
+3064 3333333333333333333333333333333333333333333333333333333
+3065 3333333333333333333333333333333333333333333333333333333
+3066 3333333333333333333333333333333333333333333333333333333
+3067 3333333333333333333333333333333333333333333333333333333
+3068 3333333333333333333333333333333333333333333333333333333
+3069 3333333333333333333333333333333333333333333333333333333
+3070 3333333333333333333333333333333333333333333333333333333
+3071 3333333333333333333333333333333333333333333333333333333
+3072 3333333333333333333333333333333333333333333333333333333
+3073 3333333333333333333333333333333333333333333333333333333
+3074 3333333333333333333333333333333333333333333333333333333
+3075 3333333333333333333333333333333333333333333333333333333
+3076 3333333333333333333333333333333333333333333333333333333
+3077 3333333333333333333333333333333333333333333333333333333
+3078 3333333333333333333333333333333333333333333333333333333
+3079 3333333333333333333333333333333333333333333333333333333
+3080 3333333333333333333333333333333333333333333333333333333
+3081 3333333333333333333333333333333333333333333333333333333
+3082 3333333333333333333333333333333333333333333333333333333
+3083 3333333333333333333333333333333333333333333333333333333
+3084 3333333333333333333333333333333333333333333333333333333
+3085 3333333333333333333333333333333333333333333333333333333
+3086 3333333333333333333333333333333333333333333333333333333
+3087 3333333333333333333333333333333333333333333333333333333
+3088 3333333333333333333333333333333333333333333333333333333
+3089 3333333333333333333333333333333333333333333333333333333
+3090 3333333333333333333333333333333333333333333333333333333
+3091 3333333333333333333333333333333333333333333333333333333
+3092 3333333333333333333333333333333333333333333333333333333
+3093 3333333333333333333333333333333333333333333333333333333
+3094 3333333333333333333333333333333333333333333333333333333
+3095 3333333333333333333333333333333333333333333333333333333
+3096 3333333333333333333333333333333333333333333333333333333
+3097 3333333333333333333333333333333333333333333333333333333
+3098 3333333333333333333333333333333333333333333333333333333
+3099 3333333333333333333333333333333333333333333333333333333
+3100 3333333333333333333333333333333333333333333333333333333
+3101 3333333333333333333333333333333333333333333333333333333
+3102 3333333333333333333333333333333333333333333333333333333
+3103 3333333333333333333333333333333333333333333333333333333
+3104 3333333333333333333333333333333333333333333333333333333
+3105 3333333333333333333333333333333333333333333333333333333
+3106 3333333333333333333333333333333333333333333333333333333
+3107 3333333333333333333333333333333333333333333333333333333
+3108 3333333333333333333333333333333333333333333333333333333
+3109 3333333333333333333333333333333333333333333333333333333
+3110 3333333333333333333333333333333333333333333333333333333
+3111 3333333333333333333333333333333333333333333333333333333
+3112 3333333333333333333333333333333333333333333333333333333
+3113 3333333333333333333333333333333333333333333333333333333
+3114 3333333333333333333333333333333333333333333333333333333
+3115 3333333333333333333333333333333333333333333333333333333
+3116 3333333333333333333333333333333333333333333333333333333
+3117 3333333333333333333333333333333333333333333333333333333
+3118 3333333333333333333333333333333333333333333333333333333
+3119 3333333333333333333333333333333333333333333333333333333
+3120 3333333333333333333333333333333333333333333333333333333
+3121 3333333333333333333333333333333333333333333333333333333
+3122 3333333333333333333333333333333333333333333333333333333
+3123 3333333333333333333333333333333333333333333333333333333
+3124 3333333333333333333333333333333333333333333333333333333
+3125 3333333333333333333333333333333333333333333333333333333
+3126 3333333333333333333333333333333333333333333333333333333
+3127 3333333333333333333333333333333333333333333333333333333
+3128 3333333333333333333333333333333333333333333333333333333
+3129 3333333333333333333333333333333333333333333333333333333
+3130 3333333333333333333333333333333333333333333333333333333
+3131 3333333333333333333333333333333333333333333333333333333
+3132 3333333333333333333333333333333333333333333333333333333
+3133 3333333333333333333333333333333333333333333333333333333
+3134 3333333333333333333333333333333333333333333333333333333
+3135 3333333333333333333333333333333333333333333333333333333
+3136 3333333333333333333333333333333333333333333333333333333
+3137 3333333333333333333333333333333333333333333333333333333
+3138 3333333333333333333333333333333333333333333333333333333
+3139 3333333333333333333333333333333333333333333333333333333
+3140 3333333333333333333333333333333333333333333333333333333
+3141 3333333333333333333333333333333333333333333333333333333
+3142 3333333333333333333333333333333333333333333333333333333
+3143 3333333333333333333333333333333333333333333333333333333
+3144 3333333333333333333333333333333333333333333333333333333
+3145 3333333333333333333333333333333333333333333333333333333
+3146 3333333333333333333333333333333333333333333333333333333
+3147 3333333333333333333333333333333333333333333333333333333
+3148 3333333333333333333333333333333333333333333333333333333
+3149 3333333333333333333333333333333333333333333333333333333
+3150 3333333333333333333333333333333333333333333333333333333
+3151 3333333333333333333333333333333333333333333333333333333
+3152 3333333333333333333333333333333333333333333333333333333
+3153 3333333333333333333333333333333333333333333333333333333
+3154 3333333333333333333333333333333333333333333333333333333
+3155 3333333333333333333333333333333333333333333333333333333
+3156 3333333333333333333333333333333333333333333333333333333
+3157 3333333333333333333333333333333333333333333333333333333
+3158 3333333333333333333333333333333333333333333333333333333
+3159 3333333333333333333333333333333333333333333333333333333
+3160 3333333333333333333333333333333333333333333333333333333
+3161 3333333333333333333333333333333333333333333333333333333
+3162 3333333333333333333333333333333333333333333333333333333
+3163 3333333333333333333333333333333333333333333333333333333
+3164 3333333333333333333333333333333333333333333333333333333
+3165 3333333333333333333333333333333333333333333333333333333
+3166 3333333333333333333333333333333333333333333333333333333
+3167 3333333333333333333333333333333333333333333333333333333
+3168 3333333333333333333333333333333333333333333333333333333
+3169 3333333333333333333333333333333333333333333333333333333
+3170 3333333333333333333333333333333333333333333333333333333
+3171 3333333333333333333333333333333333333333333333333333333
+3172 3333333333333333333333333333333333333333333333333333333
+3173 3333333333333333333333333333333333333333333333333333333
+3174 3333333333333333333333333333333333333333333333333333333
+3175 3333333333333333333333333333333333333333333333333333333
+3176 3333333333333333333333333333333333333333333333333333333
+3177 3333333333333333333333333333333333333333333333333333333
+3178 3333333333333333333333333333333333333333333333333333333
+3179 3333333333333333333333333333333333333333333333333333333
+3180 3333333333333333333333333333333333333333333333333333333
+3181 3333333333333333333333333333333333333333333333333333333
+3182 3333333333333333333333333333333333333333333333333333333
+3183 3333333333333333333333333333333333333333333333333333333
+3184 3333333333333333333333333333333333333333333333333333333
+3185 3333333333333333333333333333333333333333333333333333333
+3186 3333333333333333333333333333333333333333333333333333333
+3187 3333333333333333333333333333333333333333333333333333333
+3188 3333333333333333333333333333333333333333333333333333333
+3189 3333333333333333333333333333333333333333333333333333333
+3190 3333333333333333333333333333333333333333333333333333333
+3191 3333333333333333333333333333333333333333333333333333333
+3192 3333333333333333333333333333333333333333333333333333333
+3193 3333333333333333333333333333333333333333333333333333333
+3194 3333333333333333333333333333333333333333333333333333333
+3195 3333333333333333333333333333333333333333333333333333333
+3196 3333333333333333333333333333333333333333333333333333333
+3197 3333333333333333333333333333333333333333333333333333333
+3198 3333333333333333333333333333333333333333333333333333333
+3199 3333333333333333333333333333333333333333333333333333333
+3200 3333333333333333333333333333333333333333333333333333333
+3201 3333333333333333333333333333333333333333333333333333333
+3202 3333333333333333333333333333333333333333333333333333333
+3203 3333333333333333333333333333333333333333333333333333333
+3204 3333333333333333333333333333333333333333333333333333333
+3205 3333333333333333333333333333333333333333333333333333333
+3206 3333333333333333333333333333333333333333333333333333333
+3207 3333333333333333333333333333333333333333333333333333333
+3208 3333333333333333333333333333333333333333333333333333333
+3209 3333333333333333333333333333333333333333333333333333333
+3210 3333333333333333333333333333333333333333333333333333333
+3211 3333333333333333333333333333333333333333333333333333333
+3212 3333333333333333333333333333333333333333333333333333333
+3213 3333333333333333333333333333333333333333333333333333333
+3214 3333333333333333333333333333333333333333333333333333333
+3215 3333333333333333333333333333333333333333333333333333333
+3216 3333333333333333333333333333333333333333333333333333333
+3217 3333333333333333333333333333333333333333333333333333333
+3218 3333333333333333333333333333333333333333333333333333333
+3219 3333333333333333333333333333333333333333333333333333333
+3220 3333333333333333333333333333333333333333333333333333333
+3221 3333333333333333333333333333333333333333333333333333333
+3222 3333333333333333333333333333333333333333333333333333333
+3223 3333333333333333333333333333333333333333333333333333333
+3224 3333333333333333333333333333333333333333333333333333333
+3225 3333333333333333333333333333333333333333333333333333333
+3226 3333333333333333333333333333333333333333333333333333333
+3227 3333333333333333333333333333333333333333333333333333333
+3228 3333333333333333333333333333333333333333333333333333333
+3229 3333333333333333333333333333333333333333333333333333333
+3230 3333333333333333333333333333333333333333333333333333333
+3231 3333333333333333333333333333333333333333333333333333333
+3232 3333333333333333333333333333333333333333333333333333333
+3233 3333333333333333333333333333333333333333333333333333333
+3234 3333333333333333333333333333333333333333333333333333333
+3235 3333333333333333333333333333333333333333333333333333333
+3236 3333333333333333333333333333333333333333333333333333333
+3237 3333333333333333333333333333333333333333333333333333333
+3238 3333333333333333333333333333333333333333333333333333333
+3239 3333333333333333333333333333333333333333333333333333333
+3240 3333333333333333333333333333333333333333333333333333333
+3241 3333333333333333333333333333333333333333333333333333333
+3242 3333333333333333333333333333333333333333333333333333333
+3243 3333333333333333333333333333333333333333333333333333333
+3244 3333333333333333333333333333333333333333333333333333333
+3245 3333333333333333333333333333333333333333333333333333333
+3246 3333333333333333333333333333333333333333333333333333333
+3247 3333333333333333333333333333333333333333333333333333333
+3248 3333333333333333333333333333333333333333333333333333333
+3249 3333333333333333333333333333333333333333333333333333333
+3250 3333333333333333333333333333333333333333333333333333333
+3251 3333333333333333333333333333333333333333333333333333333
+3252 3333333333333333333333333333333333333333333333333333333
+3253 3333333333333333333333333333333333333333333333333333333
+3254 3333333333333333333333333333333333333333333333333333333
+3255 3333333333333333333333333333333333333333333333333333333
+3256 3333333333333333333333333333333333333333333333333333333
+3257 3333333333333333333333333333333333333333333333333333333
+3258 3333333333333333333333333333333333333333333333333333333
+3259 3333333333333333333333333333333333333333333333333333333
+3260 3333333333333333333333333333333333333333333333333333333
+3261 3333333333333333333333333333333333333333333333333333333
+3262 3333333333333333333333333333333333333333333333333333333
+3263 3333333333333333333333333333333333333333333333333333333
+3264 3333333333333333333333333333333333333333333333333333333
+3265 3333333333333333333333333333333333333333333333333333333
+3266 3333333333333333333333333333333333333333333333333333333
+3267 3333333333333333333333333333333333333333333333333333333
+3268 3333333333333333333333333333333333333333333333333333333
+3269 3333333333333333333333333333333333333333333333333333333
+3270 3333333333333333333333333333333333333333333333333333333
+3271 3333333333333333333333333333333333333333333333333333333
+3272 3333333333333333333333333333333333333333333333333333333
+3273 3333333333333333333333333333333333333333333333333333333
+3274 3333333333333333333333333333333333333333333333333333333
+3275 3333333333333333333333333333333333333333333333333333333
+3276 3333333333333333333333333333333333333333333333333333333
+3277 3333333333333333333333333333333333333333333333333333333
+3278 3333333333333333333333333333333333333333333333333333333
+3279 3333333333333333333333333333333333333333333333333333333
+3280 3333333333333333333333333333333333333333333333333333333
+3281 3333333333333333333333333333333333333333333333333333333
+3282 3333333333333333333333333333333333333333333333333333333
+3283 3333333333333333333333333333333333333333333333333333333
+3284 3333333333333333333333333333333333333333333333333333333
+3285 3333333333333333333333333333333333333333333333333333333
+3286 3333333333333333333333333333333333333333333333333333333
+3287 3333333333333333333333333333333333333333333333333333333
+3288 3333333333333333333333333333333333333333333333333333333
+3289 3333333333333333333333333333333333333333333333333333333
+3290 3333333333333333333333333333333333333333333333333333333
+3291 3333333333333333333333333333333333333333333333333333333
+3292 3333333333333333333333333333333333333333333333333333333
+3293 3333333333333333333333333333333333333333333333333333333
+3294 3333333333333333333333333333333333333333333333333333333
+3295 3333333333333333333333333333333333333333333333333333333
+3296 3333333333333333333333333333333333333333333333333333333
+3297 3333333333333333333333333333333333333333333333333333333
+3298 3333333333333333333333333333333333333333333333333333333
+3299 3333333333333333333333333333333333333333333333333333333
+3300 3333333333333333333333333333333333333333333333333333333
+3301 3333333333333333333333333333333333333333333333333333333
+3302 3333333333333333333333333333333333333333333333333333333
+3303 3333333333333333333333333333333333333333333333333333333
+3304 3333333333333333333333333333333333333333333333333333333
+3305 3333333333333333333333333333333333333333333333333333333
+3306 3333333333333333333333333333333333333333333333333333333
+3307 3333333333333333333333333333333333333333333333333333333
+3308 3333333333333333333333333333333333333333333333333333333
+3309 3333333333333333333333333333333333333333333333333333333
+3310 3333333333333333333333333333333333333333333333333333333
+3311 3333333333333333333333333333333333333333333333333333333
+3312 3333333333333333333333333333333333333333333333333333333
+3313 3333333333333333333333333333333333333333333333333333333
+3314 3333333333333333333333333333333333333333333333333333333
+3315 3333333333333333333333333333333333333333333333333333333
+3316 3333333333333333333333333333333333333333333333333333333
+3317 3333333333333333333333333333333333333333333333333333333
+3318 3333333333333333333333333333333333333333333333333333333
+3319 3333333333333333333333333333333333333333333333333333333
+3320 3333333333333333333333333333333333333333333333333333333
+3321 3333333333333333333333333333333333333333333333333333333
+3322 3333333333333333333333333333333333333333333333333333333
+3323 3333333333333333333333333333333333333333333333333333333
+3324 3333333333333333333333333333333333333333333333333333333
+3325 3333333333333333333333333333333333333333333333333333333
+3326 3333333333333333333333333333333333333333333333333333333
+3327 3333333333333333333333333333333333333333333333333333333
+3328 3333333333333333333333333333333333333333333333333333333
+3329 3333333333333333333333333333333333333333333333333333333
+3330 3333333333333333333333333333333333333333333333333333333
+3331 3333333333333333333333333333333333333333333333333333333
+3332 3333333333333333333333333333333333333333333333333333333
+3333 3333333333333333333333333333333333333333333333333333333
+3334 3333333333333333333333333333333333333333333333333333333
+3335 3333333333333333333333333333333333333333333333333333333
+3336 3333333333333333333333333333333333333333333333333333333
+3337 3333333333333333333333333333333333333333333333333333333
+3338 3333333333333333333333333333333333333333333333333333333
+3339 3333333333333333333333333333333333333333333333333333333
+3340 3333333333333333333333333333333333333333333333333333333
+3341 3333333333333333333333333333333333333333333333333333333
+3342 3333333333333333333333333333333333333333333333333333333
+3343 3333333333333333333333333333333333333333333333333333333
+3344 3333333333333333333333333333333333333333333333333333333
+3345 3333333333333333333333333333333333333333333333333333333
+3346 3333333333333333333333333333333333333333333333333333333
+3347 3333333333333333333333333333333333333333333333333333333
+3348 3333333333333333333333333333333333333333333333333333333
+3349 3333333333333333333333333333333333333333333333333333333
+3350 3333333333333333333333333333333333333333333333333333333
+3351 3333333333333333333333333333333333333333333333333333333
+3352 3333333333333333333333333333333333333333333333333333333
+3353 3333333333333333333333333333333333333333333333333333333
+3354 3333333333333333333333333333333333333333333333333333333
+3355 3333333333333333333333333333333333333333333333333333333
+3356 3333333333333333333333333333333333333333333333333333333
+3357 3333333333333333333333333333333333333333333333333333333
+3358 3333333333333333333333333333333333333333333333333333333
+3359 3333333333333333333333333333333333333333333333333333333
+3360 3333333333333333333333333333333333333333333333333333333
+3361 3333333333333333333333333333333333333333333333333333333
+3362 3333333333333333333333333333333333333333333333333333333
+3363 3333333333333333333333333333333333333333333333333333333
+3364 3333333333333333333333333333333333333333333333333333333
+3365 3333333333333333333333333333333333333333333333333333333
+3366 3333333333333333333333333333333333333333333333333333333
+3367 3333333333333333333333333333333333333333333333333333333
+3368 3333333333333333333333333333333333333333333333333333333
+3369 3333333333333333333333333333333333333333333333333333333
+3370 3333333333333333333333333333333333333333333333333333333
+3371 3333333333333333333333333333333333333333333333333333333
+3372 3333333333333333333333333333333333333333333333333333333
+3373 3333333333333333333333333333333333333333333333333333333
+3374 3333333333333333333333333333333333333333333333333333333
+3375 3333333333333333333333333333333333333333333333333333333
+3376 3333333333333333333333333333333333333333333333333333333
+3377 3333333333333333333333333333333333333333333333333333333
+3378 3333333333333333333333333333333333333333333333333333333
+3379 3333333333333333333333333333333333333333333333333333333
+3380 3333333333333333333333333333333333333333333333333333333
+3381 3333333333333333333333333333333333333333333333333333333
+3382 3333333333333333333333333333333333333333333333333333333
+3383 3333333333333333333333333333333333333333333333333333333
+3384 3333333333333333333333333333333333333333333333333333333
+3385 3333333333333333333333333333333333333333333333333333333
+3386 3333333333333333333333333333333333333333333333333333333
+3387 3333333333333333333333333333333333333333333333333333333
+3388 3333333333333333333333333333333333333333333333333333333
+3389 3333333333333333333333333333333333333333333333333333333
+3390 3333333333333333333333333333333333333333333333333333333
+3391 3333333333333333333333333333333333333333333333333333333
+3392 3333333333333333333333333333333333333333333333333333333
+3393 3333333333333333333333333333333333333333333333333333333
+3394 3333333333333333333333333333333333333333333333333333333
+3395 3333333333333333333333333333333333333333333333333333333
+3396 3333333333333333333333333333333333333333333333333333333
+3397 3333333333333333333333333333333333333333333333333333333
+3398 3333333333333333333333333333333333333333333333333333333
+3399 3333333333333333333333333333333333333333333333333333333
+3400 3333333333333333333333333333333333333333333333333333333
+3401 3333333333333333333333333333333333333333333333333333333
+3402 3333333333333333333333333333333333333333333333333333333
+3403 3333333333333333333333333333333333333333333333333333333
+3404 3333333333333333333333333333333333333333333333333333333
+3405 3333333333333333333333333333333333333333333333333333333
+3406 3333333333333333333333333333333333333333333333333333333
+3407 3333333333333333333333333333333333333333333333333333333
+3408 3333333333333333333333333333333333333333333333333333333
+3409 3333333333333333333333333333333333333333333333333333333
+3410 3333333333333333333333333333333333333333333333333333333
+3411 3333333333333333333333333333333333333333333333333333333
+3412 3333333333333333333333333333333333333333333333333333333
+3413 3333333333333333333333333333333333333333333333333333333
+3414 3333333333333333333333333333333333333333333333333333333
+3415 3333333333333333333333333333333333333333333333333333333
+3416 3333333333333333333333333333333333333333333333333333333
+3417 3333333333333333333333333333333333333333333333333333333
+3418 3333333333333333333333333333333333333333333333333333333
+3419 3333333333333333333333333333333333333333333333333333333
+3420 3333333333333333333333333333333333333333333333333333333
+3421 3333333333333333333333333333333333333333333333333333333
+3422 3333333333333333333333333333333333333333333333333333333
+3423 3333333333333333333333333333333333333333333333333333333
+3424 3333333333333333333333333333333333333333333333333333333
+3425 3333333333333333333333333333333333333333333333333333333
+3426 3333333333333333333333333333333333333333333333333333333
+3427 3333333333333333333333333333333333333333333333333333333
+3428 3333333333333333333333333333333333333333333333333333333
+3429 3333333333333333333333333333333333333333333333333333333
+3430 3333333333333333333333333333333333333333333333333333333
+3431 3333333333333333333333333333333333333333333333333333333
+3432 3333333333333333333333333333333333333333333333333333333
+3433 3333333333333333333333333333333333333333333333333333333
+3434 3333333333333333333333333333333333333333333333333333333
+3435 3333333333333333333333333333333333333333333333333333333
+3436 3333333333333333333333333333333333333333333333333333333
+3437 3333333333333333333333333333333333333333333333333333333
+3438 3333333333333333333333333333333333333333333333333333333
+3439 3333333333333333333333333333333333333333333333333333333
+3440 3333333333333333333333333333333333333333333333333333333
+3441 3333333333333333333333333333333333333333333333333333333
+3442 3333333333333333333333333333333333333333333333333333333
+3443 3333333333333333333333333333333333333333333333333333333
+3444 3333333333333333333333333333333333333333333333333333333
+3445 3333333333333333333333333333333333333333333333333333333
+3446 3333333333333333333333333333333333333333333333333333333
+3447 3333333333333333333333333333333333333333333333333333333
+3448 3333333333333333333333333333333333333333333333333333333
+3449 3333333333333333333333333333333333333333333333333333333
+3450 3333333333333333333333333333333333333333333333333333333
+3451 3333333333333333333333333333333333333333333333333333333
+3452 3333333333333333333333333333333333333333333333333333333
+3453 3333333333333333333333333333333333333333333333333333333
+3454 3333333333333333333333333333333333333333333333333333333
+3455 3333333333333333333333333333333333333333333333333333333
+3456 3333333333333333333333333333333333333333333333333333333
+3457 3333333333333333333333333333333333333333333333333333333
+3458 3333333333333333333333333333333333333333333333333333333
+3459 3333333333333333333333333333333333333333333333333333333
+3460 3333333333333333333333333333333333333333333333333333333
+3461 3333333333333333333333333333333333333333333333333333333
+3462 3333333333333333333333333333333333333333333333333333333
+3463 3333333333333333333333333333333333333333333333333333333
+3464 3333333333333333333333333333333333333333333333333333333
+3465 3333333333333333333333333333333333333333333333333333333
+3466 3333333333333333333333333333333333333333333333333333333
+3467 3333333333333333333333333333333333333333333333333333333
+3468 3333333333333333333333333333333333333333333333333333333
+3469 3333333333333333333333333333333333333333333333333333333
+3470 3333333333333333333333333333333333333333333333333333333
+3471 3333333333333333333333333333333333333333333333333333333
+3472 3333333333333333333333333333333333333333333333333333333
+3473 3333333333333333333333333333333333333333333333333333333
+3474 3333333333333333333333333333333333333333333333333333333
+3475 3333333333333333333333333333333333333333333333333333333
+3476 3333333333333333333333333333333333333333333333333333333
+3477 3333333333333333333333333333333333333333333333333333333
+3478 3333333333333333333333333333333333333333333333333333333
+3479 3333333333333333333333333333333333333333333333333333333
+3480 3333333333333333333333333333333333333333333333333333333
+3481 3333333333333333333333333333333333333333333333333333333
+3482 3333333333333333333333333333333333333333333333333333333
+3483 3333333333333333333333333333333333333333333333333333333
+3484 3333333333333333333333333333333333333333333333333333333
+3485 3333333333333333333333333333333333333333333333333333333
+3486 3333333333333333333333333333333333333333333333333333333
+3487 3333333333333333333333333333333333333333333333333333333
+3488 3333333333333333333333333333333333333333333333333333333
+3489 3333333333333333333333333333333333333333333333333333333
+3490 3333333333333333333333333333333333333333333333333333333
+3491 3333333333333333333333333333333333333333333333333333333
+3492 3333333333333333333333333333333333333333333333333333333
+3493 3333333333333333333333333333333333333333333333333333333
+3494 3333333333333333333333333333333333333333333333333333333
+3495 3333333333333333333333333333333333333333333333333333333
+3496 3333333333333333333333333333333333333333333333333333333
+3497 3333333333333333333333333333333333333333333333333333333
+3498 3333333333333333333333333333333333333333333333333333333
+3499 3333333333333333333333333333333333333333333333333333333
+3500 3333333333333333333333333333333333333333333333333333333
+3501 3333333333333333333333333333333333333333333333333333333
+3502 3333333333333333333333333333333333333333333333333333333
+3503 3333333333333333333333333333333333333333333333333333333
+3504 3333333333333333333333333333333333333333333333333333333
+3505 3333333333333333333333333333333333333333333333333333333
+3506 3333333333333333333333333333333333333333333333333333333
+3507 3333333333333333333333333333333333333333333333333333333
+3508 3333333333333333333333333333333333333333333333333333333
+3509 3333333333333333333333333333333333333333333333333333333
+3510 3333333333333333333333333333333333333333333333333333333
+3511 3333333333333333333333333333333333333333333333333333333
+3512 3333333333333333333333333333333333333333333333333333333
+3513 3333333333333333333333333333333333333333333333333333333
+3514 3333333333333333333333333333333333333333333333333333333
+3515 3333333333333333333333333333333333333333333333333333333
+3516 3333333333333333333333333333333333333333333333333333333
+3517 3333333333333333333333333333333333333333333333333333333
+3518 3333333333333333333333333333333333333333333333333333333
+3519 3333333333333333333333333333333333333333333333333333333
+3520 3333333333333333333333333333333333333333333333333333333
+3521 3333333333333333333333333333333333333333333333333333333
+3522 3333333333333333333333333333333333333333333333333333333
+3523 3333333333333333333333333333333333333333333333333333333
+3524 3333333333333333333333333333333333333333333333333333333
+3525 3333333333333333333333333333333333333333333333333333333
+3526 3333333333333333333333333333333333333333333333333333333
+3527 3333333333333333333333333333333333333333333333333333333
+3528 3333333333333333333333333333333333333333333333333333333
+3529 3333333333333333333333333333333333333333333333333333333
+3530 3333333333333333333333333333333333333333333333333333333
+3531 3333333333333333333333333333333333333333333333333333333
+3532 3333333333333333333333333333333333333333333333333333333
+3533 3333333333333333333333333333333333333333333333333333333
+3534 3333333333333333333333333333333333333333333333333333333
+3535 3333333333333333333333333333333333333333333333333333333
+3536 3333333333333333333333333333333333333333333333333333333
+3537 3333333333333333333333333333333333333333333333333333333
+3538 3333333333333333333333333333333333333333333333333333333
+3539 3333333333333333333333333333333333333333333333333333333
+3540 3333333333333333333333333333333333333333333333333333333
+3541 3333333333333333333333333333333333333333333333333333333
+3542 3333333333333333333333333333333333333333333333333333333
+3543 3333333333333333333333333333333333333333333333333333333
+3544 3333333333333333333333333333333333333333333333333333333
+3545 3333333333333333333333333333333333333333333333333333333
+3546 3333333333333333333333333333333333333333333333333333333
+3547 3333333333333333333333333333333333333333333333333333333
+3548 3333333333333333333333333333333333333333333333333333333
+3549 3333333333333333333333333333333333333333333333333333333
+3550 3333333333333333333333333333333333333333333333333333333
+3551 3333333333333333333333333333333333333333333333333333333
+3552 3333333333333333333333333333333333333333333333333333333
+3553 3333333333333333333333333333333333333333333333333333333
+3554 3333333333333333333333333333333333333333333333333333333
+3555 3333333333333333333333333333333333333333333333333333333
+3556 3333333333333333333333333333333333333333333333333333333
+3557 3333333333333333333333333333333333333333333333333333333
+3558 3333333333333333333333333333333333333333333333333333333
+3559 3333333333333333333333333333333333333333333333333333333
+3560 3333333333333333333333333333333333333333333333333333333
+3561 3333333333333333333333333333333333333333333333333333333
+3562 3333333333333333333333333333333333333333333333333333333
+3563 3333333333333333333333333333333333333333333333333333333
+3564 3333333333333333333333333333333333333333333333333333333
+3565 3333333333333333333333333333333333333333333333333333333
+3566 3333333333333333333333333333333333333333333333333333333
+3567 3333333333333333333333333333333333333333333333333333333
+3568 3333333333333333333333333333333333333333333333333333333
+3569 3333333333333333333333333333333333333333333333333333333
+3570 3333333333333333333333333333333333333333333333333333333
+3571 3333333333333333333333333333333333333333333333333333333
+3572 3333333333333333333333333333333333333333333333333333333
+3573 3333333333333333333333333333333333333333333333333333333
+3574 3333333333333333333333333333333333333333333333333333333
+3575 3333333333333333333333333333333333333333333333333333333
+3576 3333333333333333333333333333333333333333333333333333333
+3577 3333333333333333333333333333333333333333333333333333333
+3578 3333333333333333333333333333333333333333333333333333333
+3579 3333333333333333333333333333333333333333333333333333333
+3580 3333333333333333333333333333333333333333333333333333333
+3581 3333333333333333333333333333333333333333333333333333333
+3582 3333333333333333333333333333333333333333333333333333333
+3583 3333333333333333333333333333333333333333333333333333333
+3584 3333333333333333333333333333333333333333333333333333333
+3585 3333333333333333333333333333333333333333333333333333333
+3586 3333333333333333333333333333333333333333333333333333333
+3587 3333333333333333333333333333333333333333333333333333333
+3588 3333333333333333333333333333333333333333333333333333333
+3589 3333333333333333333333333333333333333333333333333333333
+3590 3333333333333333333333333333333333333333333333333333333
+3591 3333333333333333333333333333333333333333333333333333333
+3592 3333333333333333333333333333333333333333333333333333333
+3593 3333333333333333333333333333333333333333333333333333333
+3594 3333333333333333333333333333333333333333333333333333333
+3595 3333333333333333333333333333333333333333333333333333333
+3596 3333333333333333333333333333333333333333333333333333333
+3597 3333333333333333333333333333333333333333333333333333333
+3598 3333333333333333333333333333333333333333333333333333333
+3599 3333333333333333333333333333333333333333333333333333333
+3600 3333333333333333333333333333333333333333333333333333333
+3601 3333333333333333333333333333333333333333333333333333333
+3602 3333333333333333333333333333333333333333333333333333333
+3603 3333333333333333333333333333333333333333333333333333333
+3604 3333333333333333333333333333333333333333333333333333333
+3605 3333333333333333333333333333333333333333333333333333333
+3606 3333333333333333333333333333333333333333333333333333333
+3607 3333333333333333333333333333333333333333333333333333333
+3608 3333333333333333333333333333333333333333333333333333333
+3609 3333333333333333333333333333333333333333333333333333333
+3610 3333333333333333333333333333333333333333333333333333333
+3611 3333333333333333333333333333333333333333333333333333333
+3612 3333333333333333333333333333333333333333333333333333333
+3613 3333333333333333333333333333333333333333333333333333333
+3614 3333333333333333333333333333333333333333333333333333333
+3615 3333333333333333333333333333333333333333333333333333333
+3616 3333333333333333333333333333333333333333333333333333333
+3617 3333333333333333333333333333333333333333333333333333333
+3618 3333333333333333333333333333333333333333333333333333333
+3619 3333333333333333333333333333333333333333333333333333333
+3620 3333333333333333333333333333333333333333333333333333333
+3621 3333333333333333333333333333333333333333333333333333333
+3622 3333333333333333333333333333333333333333333333333333333
+3623 3333333333333333333333333333333333333333333333333333333
+3624 3333333333333333333333333333333333333333333333333333333
+3625 3333333333333333333333333333333333333333333333333333333
+3626 3333333333333333333333333333333333333333333333333333333
+3627 3333333333333333333333333333333333333333333333333333333
+3628 3333333333333333333333333333333333333333333333333333333
+3629 3333333333333333333333333333333333333333333333333333333
+3630 3333333333333333333333333333333333333333333333333333333
+3631 3333333333333333333333333333333333333333333333333333333
+3632 3333333333333333333333333333333333333333333333333333333
+3633 3333333333333333333333333333333333333333333333333333333
+3634 3333333333333333333333333333333333333333333333333333333
+3635 3333333333333333333333333333333333333333333333333333333
+3636 3333333333333333333333333333333333333333333333333333333
+3637 3333333333333333333333333333333333333333333333333333333
+3638 3333333333333333333333333333333333333333333333333333333
+3639 3333333333333333333333333333333333333333333333333333333
+3640 3333333333333333333333333333333333333333333333333333333
+3641 3333333333333333333333333333333333333333333333333333333
+3642 3333333333333333333333333333333333333333333333333333333
+3643 3333333333333333333333333333333333333333333333333333333
+3644 3333333333333333333333333333333333333333333333333333333
+3645 3333333333333333333333333333333333333333333333333333333
+3646 3333333333333333333333333333333333333333333333333333333
+3647 3333333333333333333333333333333333333333333333333333333
+3648 3333333333333333333333333333333333333333333333333333333
+3649 3333333333333333333333333333333333333333333333333333333
+3650 3333333333333333333333333333333333333333333333333333333
+3651 3333333333333333333333333333333333333333333333333333333
+3652 3333333333333333333333333333333333333333333333333333333
+3653 3333333333333333333333333333333333333333333333333333333
+3654 3333333333333333333333333333333333333333333333333333333
+3655 3333333333333333333333333333333333333333333333333333333
+3656 3333333333333333333333333333333333333333333333333333333
+3657 3333333333333333333333333333333333333333333333333333333
+3658 3333333333333333333333333333333333333333333333333333333
+3659 3333333333333333333333333333333333333333333333333333333
+3660 3333333333333333333333333333333333333333333333333333333
+3661 3333333333333333333333333333333333333333333333333333333
+3662 3333333333333333333333333333333333333333333333333333333
+3663 3333333333333333333333333333333333333333333333333333333
+3664 3333333333333333333333333333333333333333333333333333333
+3665 3333333333333333333333333333333333333333333333333333333
+3666 3333333333333333333333333333333333333333333333333333333
+3667 3333333333333333333333333333333333333333333333333333333
+3668 3333333333333333333333333333333333333333333333333333333
+3669 3333333333333333333333333333333333333333333333333333333
+3670 3333333333333333333333333333333333333333333333333333333
+3671 3333333333333333333333333333333333333333333333333333333
+3672 3333333333333333333333333333333333333333333333333333333
+3673 3333333333333333333333333333333333333333333333333333333
+3674 3333333333333333333333333333333333333333333333333333333
+3675 3333333333333333333333333333333333333333333333333333333
+3676 3333333333333333333333333333333333333333333333333333333
+3677 3333333333333333333333333333333333333333333333333333333
+3678 3333333333333333333333333333333333333333333333333333333
+3679 3333333333333333333333333333333333333333333333333333333
+3680 3333333333333333333333333333333333333333333333333333333
+3681 3333333333333333333333333333333333333333333333333333333
+3682 3333333333333333333333333333333333333333333333333333333
+3683 3333333333333333333333333333333333333333333333333333333
+3684 3333333333333333333333333333333333333333333333333333333
+3685 3333333333333333333333333333333333333333333333333333333
+3686 3333333333333333333333333333333333333333333333333333333
+3687 3333333333333333333333333333333333333333333333333333333
+3688 3333333333333333333333333333333333333333333333333333333
+3689 3333333333333333333333333333333333333333333333333333333
+3690 3333333333333333333333333333333333333333333333333333333
+3691 3333333333333333333333333333333333333333333333333333333
+3692 3333333333333333333333333333333333333333333333333333333
+3693 3333333333333333333333333333333333333333333333333333333
+3694 3333333333333333333333333333333333333333333333333333333
+3695 3333333333333333333333333333333333333333333333333333333
+3696 3333333333333333333333333333333333333333333333333333333
+3697 3333333333333333333333333333333333333333333333333333333
+3698 3333333333333333333333333333333333333333333333333333333
+3699 3333333333333333333333333333333333333333333333333333333
+3700 3333333333333333333333333333333333333333333333333333333
+3701 3333333333333333333333333333333333333333333333333333333
+3702 3333333333333333333333333333333333333333333333333333333
+3703 3333333333333333333333333333333333333333333333333333333
+3704 3333333333333333333333333333333333333333333333333333333
+3705 3333333333333333333333333333333333333333333333333333333
+3706 3333333333333333333333333333333333333333333333333333333
+3707 3333333333333333333333333333333333333333333333333333333
+3708 3333333333333333333333333333333333333333333333333333333
+3709 3333333333333333333333333333333333333333333333333333333
+3710 3333333333333333333333333333333333333333333333333333333
+3711 3333333333333333333333333333333333333333333333333333333
+3712 3333333333333333333333333333333333333333333333333333333
+3713 3333333333333333333333333333333333333333333333333333333
+3714 3333333333333333333333333333333333333333333333333333333
+3715 3333333333333333333333333333333333333333333333333333333
+3716 3333333333333333333333333333333333333333333333333333333
+3717 3333333333333333333333333333333333333333333333333333333
+3718 3333333333333333333333333333333333333333333333333333333
+3719 3333333333333333333333333333333333333333333333333333333
+3720 3333333333333333333333333333333333333333333333333333333
+3721 3333333333333333333333333333333333333333333333333333333
+3722 3333333333333333333333333333333333333333333333333333333
+3723 3333333333333333333333333333333333333333333333333333333
+3724 3333333333333333333333333333333333333333333333333333333
+3725 3333333333333333333333333333333333333333333333333333333
+3726 3333333333333333333333333333333333333333333333333333333
+3727 3333333333333333333333333333333333333333333333333333333
+3728 3333333333333333333333333333333333333333333333333333333
+3729 3333333333333333333333333333333333333333333333333333333
+3730 3333333333333333333333333333333333333333333333333333333
+3731 3333333333333333333333333333333333333333333333333333333
+3732 3333333333333333333333333333333333333333333333333333333
+3733 3333333333333333333333333333333333333333333333333333333
+3734 3333333333333333333333333333333333333333333333333333333
+3735 3333333333333333333333333333333333333333333333333333333
+3736 3333333333333333333333333333333333333333333333333333333
+3737 3333333333333333333333333333333333333333333333333333333
+3738 3333333333333333333333333333333333333333333333333333333
+3739 3333333333333333333333333333333333333333333333333333333
+3740 3333333333333333333333333333333333333333333333333333333
+3741 3333333333333333333333333333333333333333333333333333333
+3742 3333333333333333333333333333333333333333333333333333333
+3743 3333333333333333333333333333333333333333333333333333333
+3744 3333333333333333333333333333333333333333333333333333333
+3745 3333333333333333333333333333333333333333333333333333333
+3746 3333333333333333333333333333333333333333333333333333333
+3747 3333333333333333333333333333333333333333333333333333333
+3748 3333333333333333333333333333333333333333333333333333333
+3749 3333333333333333333333333333333333333333333333333333333
+3750 3333333333333333333333333333333333333333333333333333333
+3751 3333333333333333333333333333333333333333333333333333333
+3752 3333333333333333333333333333333333333333333333333333333
+3753 3333333333333333333333333333333333333333333333333333333
+3754 3333333333333333333333333333333333333333333333333333333
+3755 3333333333333333333333333333333333333333333333333333333
+3756 3333333333333333333333333333333333333333333333333333333
+3757 3333333333333333333333333333333333333333333333333333333
+3758 3333333333333333333333333333333333333333333333333333333
+3759 3333333333333333333333333333333333333333333333333333333
+3760 3333333333333333333333333333333333333333333333333333333
+3761 3333333333333333333333333333333333333333333333333333333
+3762 3333333333333333333333333333333333333333333333333333333
+3763 3333333333333333333333333333333333333333333333333333333
+3764 3333333333333333333333333333333333333333333333333333333
+3765 3333333333333333333333333333333333333333333333333333333
+3766 3333333333333333333333333333333333333333333333333333333
+3767 3333333333333333333333333333333333333333333333333333333
+3768 3333333333333333333333333333333333333333333333333333333
+3769 3333333333333333333333333333333333333333333333333333333
+3770 3333333333333333333333333333333333333333333333333333333
+3771 3333333333333333333333333333333333333333333333333333333
+3772 3333333333333333333333333333333333333333333333333333333
+3773 3333333333333333333333333333333333333333333333333333333
+3774 3333333333333333333333333333333333333333333333333333333
+3775 3333333333333333333333333333333333333333333333333333333
+3776 3333333333333333333333333333333333333333333333333333333
+3777 3333333333333333333333333333333333333333333333333333333
+3778 3333333333333333333333333333333333333333333333333333333
+3779 3333333333333333333333333333333333333333333333333333333
+3780 3333333333333333333333333333333333333333333333333333333
+3781 3333333333333333333333333333333333333333333333333333333
+3782 3333333333333333333333333333333333333333333333333333333
+3783 3333333333333333333333333333333333333333333333333333333
+3784 3333333333333333333333333333333333333333333333333333333
+3785 3333333333333333333333333333333333333333333333333333333
+3786 3333333333333333333333333333333333333333333333333333333
+3787 3333333333333333333333333333333333333333333333333333333
+3788 3333333333333333333333333333333333333333333333333333333
+3789 3333333333333333333333333333333333333333333333333333333
+3790 3333333333333333333333333333333333333333333333333333333
+3791 3333333333333333333333333333333333333333333333333333333
+3792 3333333333333333333333333333333333333333333333333333333
+3793 3333333333333333333333333333333333333333333333333333333
+3794 3333333333333333333333333333333333333333333333333333333
+3795 3333333333333333333333333333333333333333333333333333333
+3796 3333333333333333333333333333333333333333333333333333333
+3797 3333333333333333333333333333333333333333333333333333333
+3798 3333333333333333333333333333333333333333333333333333333
+3799 3333333333333333333333333333333333333333333333333333333
+3800 3333333333333333333333333333333333333333333333333333333
+3801 3333333333333333333333333333333333333333333333333333333
+3802 3333333333333333333333333333333333333333333333333333333
+3803 3333333333333333333333333333333333333333333333333333333
+3804 3333333333333333333333333333333333333333333333333333333
+3805 3333333333333333333333333333333333333333333333333333333
+3806 3333333333333333333333333333333333333333333333333333333
+3807 3333333333333333333333333333333333333333333333333333333
+3808 3333333333333333333333333333333333333333333333333333333
+3809 3333333333333333333333333333333333333333333333333333333
+3810 3333333333333333333333333333333333333333333333333333333
+3811 3333333333333333333333333333333333333333333333333333333
+3812 3333333333333333333333333333333333333333333333333333333
+3813 3333333333333333333333333333333333333333333333333333333
+3814 3333333333333333333333333333333333333333333333333333333
+3815 3333333333333333333333333333333333333333333333333333333
+3816 3333333333333333333333333333333333333333333333333333333
+3817 3333333333333333333333333333333333333333333333333333333
+3818 3333333333333333333333333333333333333333333333333333333
+3819 3333333333333333333333333333333333333333333333333333333
+3820 3333333333333333333333333333333333333333333333333333333
+3821 3333333333333333333333333333333333333333333333333333333
+3822 3333333333333333333333333333333333333333333333333333333
+3823 3333333333333333333333333333333333333333333333333333333
+3824 3333333333333333333333333333333333333333333333333333333
+3825 3333333333333333333333333333333333333333333333333333333
+3826 3333333333333333333333333333333333333333333333333333333
+3827 3333333333333333333333333333333333333333333333333333333
+3828 3333333333333333333333333333333333333333333333333333333
+3829 3333333333333333333333333333333333333333333333333333333
+3830 3333333333333333333333333333333333333333333333333333333
+3831 3333333333333333333333333333333333333333333333333333333
+3832 3333333333333333333333333333333333333333333333333333333
+3833 3333333333333333333333333333333333333333333333333333333
+3834 3333333333333333333333333333333333333333333333333333333
+3835 3333333333333333333333333333333333333333333333333333333
+3836 3333333333333333333333333333333333333333333333333333333
+3837 3333333333333333333333333333333333333333333333333333333
+3838 3333333333333333333333333333333333333333333333333333333
+3839 3333333333333333333333333333333333333333333333333333333
+3840 3333333333333333333333333333333333333333333333333333333
+3841 3333333333333333333333333333333333333333333333333333333
+3842 3333333333333333333333333333333333333333333333333333333
+3843 3333333333333333333333333333333333333333333333333333333
+3844 3333333333333333333333333333333333333333333333333333333
+3845 3333333333333333333333333333333333333333333333333333333
+3846 3333333333333333333333333333333333333333333333333333333
+3847 3333333333333333333333333333333333333333333333333333333
+3848 3333333333333333333333333333333333333333333333333333333
+3849 3333333333333333333333333333333333333333333333333333333
+3850 3333333333333333333333333333333333333333333333333333333
+3851 3333333333333333333333333333333333333333333333333333333
+3852 3333333333333333333333333333333333333333333333333333333
+3853 3333333333333333333333333333333333333333333333333333333
+3854 3333333333333333333333333333333333333333333333333333333
+3855 3333333333333333333333333333333333333333333333333333333
+3856 3333333333333333333333333333333333333333333333333333333
+3857 3333333333333333333333333333333333333333333333333333333
+3858 3333333333333333333333333333333333333333333333333333333
+3859 3333333333333333333333333333333333333333333333333333333
+3860 3333333333333333333333333333333333333333333333333333333
+3861 3333333333333333333333333333333333333333333333333333333
+3862 3333333333333333333333333333333333333333333333333333333
+3863 3333333333333333333333333333333333333333333333333333333
+3864 3333333333333333333333333333333333333333333333333333333
+3865 3333333333333333333333333333333333333333333333333333333
+3866 3333333333333333333333333333333333333333333333333333333
+3867 3333333333333333333333333333333333333333333333333333333
+3868 3333333333333333333333333333333333333333333333333333333
+3869 3333333333333333333333333333333333333333333333333333333
+3870 3333333333333333333333333333333333333333333333333333333
+3871 3333333333333333333333333333333333333333333333333333333
+3872 3333333333333333333333333333333333333333333333333333333
+3873 3333333333333333333333333333333333333333333333333333333
+3874 3333333333333333333333333333333333333333333333333333333
+3875 3333333333333333333333333333333333333333333333333333333
+3876 3333333333333333333333333333333333333333333333333333333
+3877 3333333333333333333333333333333333333333333333333333333
+3878 3333333333333333333333333333333333333333333333333333333
+3879 3333333333333333333333333333333333333333333333333333333
+3880 3333333333333333333333333333333333333333333333333333333
+3881 3333333333333333333333333333333333333333333333333333333
+3882 3333333333333333333333333333333333333333333333333333333
+3883 3333333333333333333333333333333333333333333333333333333
+3884 3333333333333333333333333333333333333333333333333333333
+3885 3333333333333333333333333333333333333333333333333333333
+3886 3333333333333333333333333333333333333333333333333333333
+3887 3333333333333333333333333333333333333333333333333333333
+3888 3333333333333333333333333333333333333333333333333333333
+3889 3333333333333333333333333333333333333333333333333333333
+3890 3333333333333333333333333333333333333333333333333333333
+3891 3333333333333333333333333333333333333333333333333333333
+3892 3333333333333333333333333333333333333333333333333333333
+3893 3333333333333333333333333333333333333333333333333333333
+3894 3333333333333333333333333333333333333333333333333333333
+3895 3333333333333333333333333333333333333333333333333333333
+3896 3333333333333333333333333333333333333333333333333333333
+3897 3333333333333333333333333333333333333333333333333333333
+3898 3333333333333333333333333333333333333333333333333333333
+3899 3333333333333333333333333333333333333333333333333333333
+3900 3333333333333333333333333333333333333333333333333333333
+3901 3333333333333333333333333333333333333333333333333333333
+3902 3333333333333333333333333333333333333333333333333333333
+3903 3333333333333333333333333333333333333333333333333333333
+3904 3333333333333333333333333333333333333333333333333333333
+3905 3333333333333333333333333333333333333333333333333333333
+3906 3333333333333333333333333333333333333333333333333333333
+3907 3333333333333333333333333333333333333333333333333333333
+3908 3333333333333333333333333333333333333333333333333333333
+3909 3333333333333333333333333333333333333333333333333333333
+3910 3333333333333333333333333333333333333333333333333333333
+3911 3333333333333333333333333333333333333333333333333333333
+3912 3333333333333333333333333333333333333333333333333333333
+3913 3333333333333333333333333333333333333333333333333333333
+3914 3333333333333333333333333333333333333333333333333333333
+3915 3333333333333333333333333333333333333333333333333333333
+3916 3333333333333333333333333333333333333333333333333333333
+3917 3333333333333333333333333333333333333333333333333333333
+3918 3333333333333333333333333333333333333333333333333333333
+3919 3333333333333333333333333333333333333333333333333333333
+3920 3333333333333333333333333333333333333333333333333333333
+3921 3333333333333333333333333333333333333333333333333333333
+3922 3333333333333333333333333333333333333333333333333333333
+3923 3333333333333333333333333333333333333333333333333333333
+3924 3333333333333333333333333333333333333333333333333333333
+3925 3333333333333333333333333333333333333333333333333333333
+3926 3333333333333333333333333333333333333333333333333333333
+3927 3333333333333333333333333333333333333333333333333333333
+3928 3333333333333333333333333333333333333333333333333333333
+3929 3333333333333333333333333333333333333333333333333333333
+3930 3333333333333333333333333333333333333333333333333333333
+3931 3333333333333333333333333333333333333333333333333333333
+3932 3333333333333333333333333333333333333333333333333333333
+3933 3333333333333333333333333333333333333333333333333333333
+3934 3333333333333333333333333333333333333333333333333333333
+3935 3333333333333333333333333333333333333333333333333333333
+3936 3333333333333333333333333333333333333333333333333333333
+3937 3333333333333333333333333333333333333333333333333333333
+3938 3333333333333333333333333333333333333333333333333333333
+3939 3333333333333333333333333333333333333333333333333333333
+3940 3333333333333333333333333333333333333333333333333333333
+3941 3333333333333333333333333333333333333333333333333333333
+3942 3333333333333333333333333333333333333333333333333333333
+3943 3333333333333333333333333333333333333333333333333333333
+3944 3333333333333333333333333333333333333333333333333333333
+3945 3333333333333333333333333333333333333333333333333333333
+3946 3333333333333333333333333333333333333333333333333333333
+3947 3333333333333333333333333333333333333333333333333333333
+3948 3333333333333333333333333333333333333333333333333333333
+3949 3333333333333333333333333333333333333333333333333333333
+3950 3333333333333333333333333333333333333333333333333333333
+3951 3333333333333333333333333333333333333333333333333333333
+3952 3333333333333333333333333333333333333333333333333333333
+3953 3333333333333333333333333333333333333333333333333333333
+3954 3333333333333333333333333333333333333333333333333333333
+3955 3333333333333333333333333333333333333333333333333333333
+3956 3333333333333333333333333333333333333333333333333333333
+3957 3333333333333333333333333333333333333333333333333333333
+3958 3333333333333333333333333333333333333333333333333333333
+3959 3333333333333333333333333333333333333333333333333333333
+3960 3333333333333333333333333333333333333333333333333333333
+3961 3333333333333333333333333333333333333333333333333333333
+3962 3333333333333333333333333333333333333333333333333333333
+3963 3333333333333333333333333333333333333333333333333333333
+3964 3333333333333333333333333333333333333333333333333333333
+3965 3333333333333333333333333333333333333333333333333333333
+3966 3333333333333333333333333333333333333333333333333333333
+3967 3333333333333333333333333333333333333333333333333333333
+3968 3333333333333333333333333333333333333333333333333333333
+3969 3333333333333333333333333333333333333333333333333333333
+3970 3333333333333333333333333333333333333333333333333333333
+3971 3333333333333333333333333333333333333333333333333333333
+3972 3333333333333333333333333333333333333333333333333333333
+3973 3333333333333333333333333333333333333333333333333333333
+3974 3333333333333333333333333333333333333333333333333333333
+3975 3333333333333333333333333333333333333333333333333333333
+3976 3333333333333333333333333333333333333333333333333333333
+3977 3333333333333333333333333333333333333333333333333333333
+3978 3333333333333333333333333333333333333333333333333333333
+3979 3333333333333333333333333333333333333333333333333333333
+3980 3333333333333333333333333333333333333333333333333333333
+3981 3333333333333333333333333333333333333333333333333333333
+3982 3333333333333333333333333333333333333333333333333333333
+3983 3333333333333333333333333333333333333333333333333333333
+3984 3333333333333333333333333333333333333333333333333333333
+3985 3333333333333333333333333333333333333333333333333333333
+3986 3333333333333333333333333333333333333333333333333333333
+3987 3333333333333333333333333333333333333333333333333333333
+3988 3333333333333333333333333333333333333333333333333333333
+3989 3333333333333333333333333333333333333333333333333333333
+3990 3333333333333333333333333333333333333333333333333333333
+3991 3333333333333333333333333333333333333333333333333333333
+3992 3333333333333333333333333333333333333333333333333333333
+3993 3333333333333333333333333333333333333333333333333333333
+3994 3333333333333333333333333333333333333333333333333333333
+3995 3333333333333333333333333333333333333333333333333333333
+3996 3333333333333333333333333333333333333333333333333333333
+3997 3333333333333333333333333333333333333333333333333333333
+3998 3333333333333333333333333333333333333333333333333333333
+3999 3333333333333333333333333333333333333333333333333333333
+4000 3333333333333333333333333333333333333333333333333333333
+4001 3333333333333333333333333333333333333333333333333333333
+4002 3333333333333333333333333333333333333333333333333333333
+4003 3333333333333333333333333333333333333333333333333333333
+4004 3333333333333333333333333333333333333333333333333333333
+4005 3333333333333333333333333333333333333333333333333333333
+4006 3333333333333333333333333333333333333333333333333333333
+4007 3333333333333333333333333333333333333333333333333333333
+4008 3333333333333333333333333333333333333333333333333333333
+4009 3333333333333333333333333333333333333333333333333333333
+4010 3333333333333333333333333333333333333333333333333333333
+4011 3333333333333333333333333333333333333333333333333333333
+4012 3333333333333333333333333333333333333333333333333333333
+4013 3333333333333333333333333333333333333333333333333333333
+4014 3333333333333333333333333333333333333333333333333333333
+4015 3333333333333333333333333333333333333333333333333333333
+4016 3333333333333333333333333333333333333333333333333333333
+4017 3333333333333333333333333333333333333333333333333333333
+4018 3333333333333333333333333333333333333333333333333333333
+4019 3333333333333333333333333333333333333333333333333333333
+4020 3333333333333333333333333333333333333333333333333333333
+4021 3333333333333333333333333333333333333333333333333333333
+4022 3333333333333333333333333333333333333333333333333333333
+4023 3333333333333333333333333333333333333333333333333333333
+4024 3333333333333333333333333333333333333333333333333333333
+4025 3333333333333333333333333333333333333333333333333333333
+4026 3333333333333333333333333333333333333333333333333333333
+4027 3333333333333333333333333333333333333333333333333333333
+4028 3333333333333333333333333333333333333333333333333333333
+4029 3333333333333333333333333333333333333333333333333333333
+4030 3333333333333333333333333333333333333333333333333333333
+4031 3333333333333333333333333333333333333333333333333333333
+4032 3333333333333333333333333333333333333333333333333333333
+4033 3333333333333333333333333333333333333333333333333333333
+4034 3333333333333333333333333333333333333333333333333333333
+4035 3333333333333333333333333333333333333333333333333333333
+4036 3333333333333333333333333333333333333333333333333333333
+4037 3333333333333333333333333333333333333333333333333333333
+4038 3333333333333333333333333333333333333333333333333333333
+4039 3333333333333333333333333333333333333333333333333333333
+4040 3333333333333333333333333333333333333333333333333333333
+4041 3333333333333333333333333333333333333333333333333333333
+4042 3333333333333333333333333333333333333333333333333333333
+4043 3333333333333333333333333333333333333333333333333333333
+4044 3333333333333333333333333333333333333333333333333333333
+4045 3333333333333333333333333333333333333333333333333333333
+4046 3333333333333333333333333333333333333333333333333333333
+4047 3333333333333333333333333333333333333333333333333333333
+4048 3333333333333333333333333333333333333333333333333333333
+4049 3333333333333333333333333333333333333333333333333333333
+4050 3333333333333333333333333333333333333333333333333333333
+4051 3333333333333333333333333333333333333333333333333333333
+4052 3333333333333333333333333333333333333333333333333333333
+4053 3333333333333333333333333333333333333333333333333333333
+4054 3333333333333333333333333333333333333333333333333333333
+4055 3333333333333333333333333333333333333333333333333333333
+4056 3333333333333333333333333333333333333333333333333333333
+4057 3333333333333333333333333333333333333333333333333333333
+4058 3333333333333333333333333333333333333333333333333333333
+4059 3333333333333333333333333333333333333333333333333333333
+4060 3333333333333333333333333333333333333333333333333333333
+4061 3333333333333333333333333333333333333333333333333333333
+4062 3333333333333333333333333333333333333333333333333333333
+4063 3333333333333333333333333333333333333333333333333333333
+4064 3333333333333333333333333333333333333333333333333333333
+4065 3333333333333333333333333333333333333333333333333333333
+4066 3333333333333333333333333333333333333333333333333333333
+4067 3333333333333333333333333333333333333333333333333333333
+4068 3333333333333333333333333333333333333333333333333333333
+4069 3333333333333333333333333333333333333333333333333333333
+4070 3333333333333333333333333333333333333333333333333333333
+4071 3333333333333333333333333333333333333333333333333333333
+4072 3333333333333333333333333333333333333333333333333333333
+4073 3333333333333333333333333333333333333333333333333333333
+4074 3333333333333333333333333333333333333333333333333333333
+4075 3333333333333333333333333333333333333333333333333333333
+4076 3333333333333333333333333333333333333333333333333333333
+4077 3333333333333333333333333333333333333333333333333333333
+4078 3333333333333333333333333333333333333333333333333333333
+4079 3333333333333333333333333333333333333333333333333333333
+4080 3333333333333333333333333333333333333333333333333333333
+4081 3333333333333333333333333333333333333333333333333333333
+4082 3333333333333333333333333333333333333333333333333333333
+4083 3333333333333333333333333333333333333333333333333333333
+4084 3333333333333333333333333333333333333333333333333333333
+4085 3333333333333333333333333333333333333333333333333333333
+4086 3333333333333333333333333333333333333333333333333333333
+4087 3333333333333333333333333333333333333333333333333333333
+4088 3333333333333333333333333333333333333333333333333333333
+4089 3333333333333333333333333333333333333333333333333333333
+4090 3333333333333333333333333333333333333333333333333333333
+4091 3333333333333333333333333333333333333333333333333333333
+4092 3333333333333333333333333333333333333333333333333333333
+4093 3333333333333333333333333333333333333333333333333333333
+4094 3333333333333333333333333333333333333333333333333333333
+4095 3333333333333333333333333333333333333333333333333333333
+4096 3333333333333333333333333333333333333333333333333333333
+4097 3333333333333333333333333333333333333333333333333333333
+4098 3333333333333333333333333333333333333333333333333333333
+4099 3333333333333333333333333333333333333333333333333333333
+4100 3333333333333333333333333333333333333333333333333333333
+4101 3333333333333333333333333333333333333333333333333333333
+4102 3333333333333333333333333333333333333333333333333333333
+4103 3333333333333333333333333333333333333333333333333333333
+4104 3333333333333333333333333333333333333333333333333333333
+4105 3333333333333333333333333333333333333333333333333333333
+4106 3333333333333333333333333333333333333333333333333333333
+4107 3333333333333333333333333333333333333333333333333333333
+4108 3333333333333333333333333333333333333333333333333333333
+4109 3333333333333333333333333333333333333333333333333333333
+4110 3333333333333333333333333333333333333333333333333333333
+4111 3333333333333333333333333333333333333333333333333333333
+4112 3333333333333333333333333333333333333333333333333333333
+4113 3333333333333333333333333333333333333333333333333333333
+4114 3333333333333333333333333333333333333333333333333333333
+4115 3333333333333333333333333333333333333333333333333333333
+4116 3333333333333333333333333333333333333333333333333333333
+4117 3333333333333333333333333333333333333333333333333333333
+4118 3333333333333333333333333333333333333333333333333333333
+4119 3333333333333333333333333333333333333333333333333333333
+4120 3333333333333333333333333333333333333333333333333333333
+4121 3333333333333333333333333333333333333333333333333333333
+4122 3333333333333333333333333333333333333333333333333333333
+4123 3333333333333333333333333333333333333333333333333333333
+4124 3333333333333333333333333333333333333333333333333333333
+4125 3333333333333333333333333333333333333333333333333333333
+4126 3333333333333333333333333333333333333333333333333333333
+4127 3333333333333333333333333333333333333333333333333333333
+4128 3333333333333333333333333333333333333333333333333333333
+4129 3333333333333333333333333333333333333333333333333333333
+4130 3333333333333333333333333333333333333333333333333333333
+4131 3333333333333333333333333333333333333333333333333333333
+4132 3333333333333333333333333333333333333333333333333333333
+4133 3333333333333333333333333333333333333333333333333333333
+4134 3333333333333333333333333333333333333333333333333333333
+4135 3333333333333333333333333333333333333333333333333333333
+4136 3333333333333333333333333333333333333333333333333333333
+4137 3333333333333333333333333333333333333333333333333333333
+4138 3333333333333333333333333333333333333333333333333333333
+4139 3333333333333333333333333333333333333333333333333333333
+4140 3333333333333333333333333333333333333333333333333333333
+4141 3333333333333333333333333333333333333333333333333333333
+4142 3333333333333333333333333333333333333333333333333333333
+4143 3333333333333333333333333333333333333333333333333333333
+4144 3333333333333333333333333333333333333333333333333333333
+4145 3333333333333333333333333333333333333333333333333333333
+4146 3333333333333333333333333333333333333333333333333333333
+4147 3333333333333333333333333333333333333333333333333333333
+4148 3333333333333333333333333333333333333333333333333333333
+4149 3333333333333333333333333333333333333333333333333333333
+4150 3333333333333333333333333333333333333333333333333333333
+4151 3333333333333333333333333333333333333333333333333333333
+4152 3333333333333333333333333333333333333333333333333333333
+4153 3333333333333333333333333333333333333333333333333333333
+4154 3333333333333333333333333333333333333333333333333333333
+4155 3333333333333333333333333333333333333333333333333333333
+4156 3333333333333333333333333333333333333333333333333333333
+4157 3333333333333333333333333333333333333333333333333333333
+4158 3333333333333333333333333333333333333333333333333333333
+4159 3333333333333333333333333333333333333333333333333333333
+4160 3333333333333333333333333333333333333333333333333333333
+4161 3333333333333333333333333333333333333333333333333333333
+4162 3333333333333333333333333333333333333333333333333333333
+4163 3333333333333333333333333333333333333333333333333333333
+4164 3333333333333333333333333333333333333333333333333333333
+4165 3333333333333333333333333333333333333333333333333333333
+4166 3333333333333333333333333333333333333333333333333333333
+4167 3333333333333333333333333333333333333333333333333333333
+4168 3333333333333333333333333333333333333333333333333333333
+4169 3333333333333333333333333333333333333333333333333333333
+4170 3333333333333333333333333333333333333333333333333333333
+4171 3333333333333333333333333333333333333333333333333333333
+4172 3333333333333333333333333333333333333333333333333333333
+4173 3333333333333333333333333333333333333333333333333333333
+4174 3333333333333333333333333333333333333333333333333333333
+4175 3333333333333333333333333333333333333333333333333333333
+4176 3333333333333333333333333333333333333333333333333333333
+4177 3333333333333333333333333333333333333333333333333333333
+4178 3333333333333333333333333333333333333333333333333333333
+4179 3333333333333333333333333333333333333333333333333333333
+4180 3333333333333333333333333333333333333333333333333333333
+4181 3333333333333333333333333333333333333333333333333333333
+4182 3333333333333333333333333333333333333333333333333333333
+4183 3333333333333333333333333333333333333333333333333333333
+4184 3333333333333333333333333333333333333333333333333333333
+4185 3333333333333333333333333333333333333333333333333333333
+4186 3333333333333333333333333333333333333333333333333333333
+4187 3333333333333333333333333333333333333333333333333333333
+4188 3333333333333333333333333333333333333333333333333333333
+4189 3333333333333333333333333333333333333333333333333333333
+4190 3333333333333333333333333333333333333333333333333333333
+4191 3333333333333333333333333333333333333333333333333333333
+4192 3333333333333333333333333333333333333333333333333333333
+4193 3333333333333333333333333333333333333333333333333333333
+4194 3333333333333333333333333333333333333333333333333333333
+4195 3333333333333333333333333333333333333333333333333333333
+4196 3333333333333333333333333333333333333333333333333333333
+4197 3333333333333333333333333333333333333333333333333333333
+4198 3333333333333333333333333333333333333333333333333333333
+4199 3333333333333333333333333333333333333333333333333333333
+4200 3333333333333333333333333333333333333333333333333333333
+4201 3333333333333333333333333333333333333333333333333333333
+4202 3333333333333333333333333333333333333333333333333333333
+4203 3333333333333333333333333333333333333333333333333333333
+4204 3333333333333333333333333333333333333333333333333333333
+4205 3333333333333333333333333333333333333333333333333333333
+4206 3333333333333333333333333333333333333333333333333333333
+4207 3333333333333333333333333333333333333333333333333333333
+4208 3333333333333333333333333333333333333333333333333333333
+4209 3333333333333333333333333333333333333333333333333333333
+4210 3333333333333333333333333333333333333333333333333333333
+4211 3333333333333333333333333333333333333333333333333333333
+4212 3333333333333333333333333333333333333333333333333333333
+4213 3333333333333333333333333333333333333333333333333333333
+4214 3333333333333333333333333333333333333333333333333333333
+4215 3333333333333333333333333333333333333333333333333333333
+4216 3333333333333333333333333333333333333333333333333333333
+4217 3333333333333333333333333333333333333333333333333333333
+4218 3333333333333333333333333333333333333333333333333333333
+4219 3333333333333333333333333333333333333333333333333333333
+4220 3333333333333333333333333333333333333333333333333333333
+4221 3333333333333333333333333333333333333333333333333333333
+4222 3333333333333333333333333333333333333333333333333333333
+4223 3333333333333333333333333333333333333333333333333333333
+4224 3333333333333333333333333333333333333333333333333333333
+4225 3333333333333333333333333333333333333333333333333333333
+4226 3333333333333333333333333333333333333333333333333333333
+4227 3333333333333333333333333333333333333333333333333333333
+4228 3333333333333333333333333333333333333333333333333333333
+4229 3333333333333333333333333333333333333333333333333333333
+4230 3333333333333333333333333333333333333333333333333333333
+4231 3333333333333333333333333333333333333333333333333333333
+4232 3333333333333333333333333333333333333333333333333333333
+4233 3333333333333333333333333333333333333333333333333333333
+4234 3333333333333333333333333333333333333333333333333333333
+4235 3333333333333333333333333333333333333333333333333333333
+4236 3333333333333333333333333333333333333333333333333333333
+4237 3333333333333333333333333333333333333333333333333333333
+4238 3333333333333333333333333333333333333333333333333333333
+4239 3333333333333333333333333333333333333333333333333333333
+4240 3333333333333333333333333333333333333333333333333333333
+4241 3333333333333333333333333333333333333333333333333333333
+4242 3333333333333333333333333333333333333333333333333333333
+4243 3333333333333333333333333333333333333333333333333333333
+4244 3333333333333333333333333333333333333333333333333333333
+4245 3333333333333333333333333333333333333333333333333333333
+4246 3333333333333333333333333333333333333333333333333333333
+4247 3333333333333333333333333333333333333333333333333333333
+4248 3333333333333333333333333333333333333333333333333333333
+4249 3333333333333333333333333333333333333333333333333333333
+4250 3333333333333333333333333333333333333333333333333333333
+4251 3333333333333333333333333333333333333333333333333333333
+4252 3333333333333333333333333333333333333333333333333333333
+4253 3333333333333333333333333333333333333333333333333333333
+4254 3333333333333333333333333333333333333333333333333333333
+4255 3333333333333333333333333333333333333333333333333333333
+4256 3333333333333333333333333333333333333333333333333333333
+4257 3333333333333333333333333333333333333333333333333333333
+4258 3333333333333333333333333333333333333333333333333333333
+4259 3333333333333333333333333333333333333333333333333333333
+4260 3333333333333333333333333333333333333333333333333333333
+4261 3333333333333333333333333333333333333333333333333333333
+4262 3333333333333333333333333333333333333333333333333333333
+4263 3333333333333333333333333333333333333333333333333333333
+4264 3333333333333333333333333333333333333333333333333333333
+4265 3333333333333333333333333333333333333333333333333333333
+4266 3333333333333333333333333333333333333333333333333333333
+4267 3333333333333333333333333333333333333333333333333333333
+4268 3333333333333333333333333333333333333333333333333333333
+4269 3333333333333333333333333333333333333333333333333333333
+4270 3333333333333333333333333333333333333333333333333333333
+4271 3333333333333333333333333333333333333333333333333333333
+4272 3333333333333333333333333333333333333333333333333333333
+4273 3333333333333333333333333333333333333333333333333333333
+4274 3333333333333333333333333333333333333333333333333333333
+4275 3333333333333333333333333333333333333333333333333333333
+4276 3333333333333333333333333333333333333333333333333333333
+4277 3333333333333333333333333333333333333333333333333333333
+4278 3333333333333333333333333333333333333333333333333333333
+4279 3333333333333333333333333333333333333333333333333333333
+4280 3333333333333333333333333333333333333333333333333333333
+4281 3333333333333333333333333333333333333333333333333333333
+4282 3333333333333333333333333333333333333333333333333333333
+4283 3333333333333333333333333333333333333333333333333333333
+4284 3333333333333333333333333333333333333333333333333333333
+4285 3333333333333333333333333333333333333333333333333333333
+4286 3333333333333333333333333333333333333333333333333333333
+4287 3333333333333333333333333333333333333333333333333333333
+4288 3333333333333333333333333333333333333333333333333333333
+4289 3333333333333333333333333333333333333333333333333333333
+4290 3333333333333333333333333333333333333333333333333333333
+4291 3333333333333333333333333333333333333333333333333333333
+4292 3333333333333333333333333333333333333333333333333333333
+4293 3333333333333333333333333333333333333333333333333333333
+4294 3333333333333333333333333333333333333333333333333333333
+4295 3333333333333333333333333333333333333333333333333333333
+4296 3333333333333333333333333333333333333333333333333333333
+4297 3333333333333333333333333333333333333333333333333333333
+4298 3333333333333333333333333333333333333333333333333333333
+4299 3333333333333333333333333333333333333333333333333333333
+4300 3333333333333333333333333333333333333333333333333333333
+4301 3333333333333333333333333333333333333333333333333333333
+4302 3333333333333333333333333333333333333333333333333333333
+4303 3333333333333333333333333333333333333333333333333333333
+4304 3333333333333333333333333333333333333333333333333333333
+4305 3333333333333333333333333333333333333333333333333333333
+4306 3333333333333333333333333333333333333333333333333333333
+4307 3333333333333333333333333333333333333333333333333333333
+4308 3333333333333333333333333333333333333333333333333333333
+4309 3333333333333333333333333333333333333333333333333333333
+4310 3333333333333333333333333333333333333333333333333333333
+4311 3333333333333333333333333333333333333333333333333333333
+4312 3333333333333333333333333333333333333333333333333333333
+4313 3333333333333333333333333333333333333333333333333333333
+4314 3333333333333333333333333333333333333333333333333333333
+4315 3333333333333333333333333333333333333333333333333333333
+4316 3333333333333333333333333333333333333333333333333333333
+4317 3333333333333333333333333333333333333333333333333333333
+4318 3333333333333333333333333333333333333333333333333333333
+4319 3333333333333333333333333333333333333333333333333333333
+4320 3333333333333333333333333333333333333333333333333333333
+4321 3333333333333333333333333333333333333333333333333333333
+4322 3333333333333333333333333333333333333333333333333333333
+4323 3333333333333333333333333333333333333333333333333333333
+4324 3333333333333333333333333333333333333333333333333333333
+4325 3333333333333333333333333333333333333333333333333333333
+4326 3333333333333333333333333333333333333333333333333333333
+4327 3333333333333333333333333333333333333333333333333333333
+4328 3333333333333333333333333333333333333333333333333333333
+4329 3333333333333333333333333333333333333333333333333333333
+4330 3333333333333333333333333333333333333333333333333333333
+4331 3333333333333333333333333333333333333333333333333333333
+4332 3333333333333333333333333333333333333333333333333333333
+4333 3333333333333333333333333333333333333333333333333333333
+4334 3333333333333333333333333333333333333333333333333333333
+4335 3333333333333333333333333333333333333333333333333333333
+4336 3333333333333333333333333333333333333333333333333333333
+4337 3333333333333333333333333333333333333333333333333333333
+4338 3333333333333333333333333333333333333333333333333333333
+4339 3333333333333333333333333333333333333333333333333333333
+4340 3333333333333333333333333333333333333333333333333333333
+4341 3333333333333333333333333333333333333333333333333333333
+4342 3333333333333333333333333333333333333333333333333333333
+4343 3333333333333333333333333333333333333333333333333333333
+4344 3333333333333333333333333333333333333333333333333333333
+4345 3333333333333333333333333333333333333333333333333333333
+4346 3333333333333333333333333333333333333333333333333333333
+4347 3333333333333333333333333333333333333333333333333333333
+4348 3333333333333333333333333333333333333333333333333333333
+4349 3333333333333333333333333333333333333333333333333333333
+4350 3333333333333333333333333333333333333333333333333333333
+4351 3333333333333333333333333333333333333333333333333333333
+4352 3333333333333333333333333333333333333333333333333333333
+4353 3333333333333333333333333333333333333333333333333333333
+4354 3333333333333333333333333333333333333333333333333333333
+4355 3333333333333333333333333333333333333333333333333333333
+4356 3333333333333333333333333333333333333333333333333333333
+4357 3333333333333333333333333333333333333333333333333333333
+4358 3333333333333333333333333333333333333333333333333333333
+4359 3333333333333333333333333333333333333333333333333333333
+4360 3333333333333333333333333333333333333333333333333333333
+4361 3333333333333333333333333333333333333333333333333333333
+4362 3333333333333333333333333333333333333333333333333333333
+4363 3333333333333333333333333333333333333333333333333333333
+4364 3333333333333333333333333333333333333333333333333333333
+4365 3333333333333333333333333333333333333333333333333333333
+4366 3333333333333333333333333333333333333333333333333333333
+4367 3333333333333333333333333333333333333333333333333333333
+4368 3333333333333333333333333333333333333333333333333333333
+4369 3333333333333333333333333333333333333333333333333333333
+4370 3333333333333333333333333333333333333333333333333333333
+4371 3333333333333333333333333333333333333333333333333333333
+4372 3333333333333333333333333333333333333333333333333333333
+4373 3333333333333333333333333333333333333333333333333333333
+4374 3333333333333333333333333333333333333333333333333333333
+4375 3333333333333333333333333333333333333333333333333333333
+4376 3333333333333333333333333333333333333333333333333333333
+4377 3333333333333333333333333333333333333333333333333333333
+4378 3333333333333333333333333333333333333333333333333333333
+4379 3333333333333333333333333333333333333333333333333333333
+4380 3333333333333333333333333333333333333333333333333333333
+4381 3333333333333333333333333333333333333333333333333333333
+4382 3333333333333333333333333333333333333333333333333333333
+4383 3333333333333333333333333333333333333333333333333333333
+4384 3333333333333333333333333333333333333333333333333333333
+4385 3333333333333333333333333333333333333333333333333333333
+4386 3333333333333333333333333333333333333333333333333333333
+4387 3333333333333333333333333333333333333333333333333333333
+4388 3333333333333333333333333333333333333333333333333333333
+4389 3333333333333333333333333333333333333333333333333333333
+4390 3333333333333333333333333333333333333333333333333333333
+4391 3333333333333333333333333333333333333333333333333333333
+4392 3333333333333333333333333333333333333333333333333333333
+4393 3333333333333333333333333333333333333333333333333333333
+4394 3333333333333333333333333333333333333333333333333333333
+4395 3333333333333333333333333333333333333333333333333333333
+4396 3333333333333333333333333333333333333333333333333333333
+4397 3333333333333333333333333333333333333333333333333333333
+4398 3333333333333333333333333333333333333333333333333333333
+4399 3333333333333333333333333333333333333333333333333333333
+4400 3333333333333333333333333333333333333333333333333333333
+4401 3333333333333333333333333333333333333333333333333333333
+4402 3333333333333333333333333333333333333333333333333333333
+4403 3333333333333333333333333333333333333333333333333333333
+4404 3333333333333333333333333333333333333333333333333333333
+4405 3333333333333333333333333333333333333333333333333333333
+4406 3333333333333333333333333333333333333333333333333333333
+4407 3333333333333333333333333333333333333333333333333333333
+4408 3333333333333333333333333333333333333333333333333333333
+4409 3333333333333333333333333333333333333333333333333333333
+4410 3333333333333333333333333333333333333333333333333333333
+4411 3333333333333333333333333333333333333333333333333333333
+4412 3333333333333333333333333333333333333333333333333333333
+4413 3333333333333333333333333333333333333333333333333333333
+4414 3333333333333333333333333333333333333333333333333333333
+4415 3333333333333333333333333333333333333333333333333333333
+4416 3333333333333333333333333333333333333333333333333333333
+4417 3333333333333333333333333333333333333333333333333333333
+4418 3333333333333333333333333333333333333333333333333333333
+4419 3333333333333333333333333333333333333333333333333333333
+4420 3333333333333333333333333333333333333333333333333333333
+4421 3333333333333333333333333333333333333333333333333333333
+4422 3333333333333333333333333333333333333333333333333333333
+4423 3333333333333333333333333333333333333333333333333333333
+4424 3333333333333333333333333333333333333333333333333333333
+4425 3333333333333333333333333333333333333333333333333333333
+4426 3333333333333333333333333333333333333333333333333333333
+4427 3333333333333333333333333333333333333333333333333333333
+4428 3333333333333333333333333333333333333333333333333333333
+4429 3333333333333333333333333333333333333333333333333333333
+4430 3333333333333333333333333333333333333333333333333333333
+4431 3333333333333333333333333333333333333333333333333333333
+4432 3333333333333333333333333333333333333333333333333333333
+4433 3333333333333333333333333333333333333333333333333333333
+4434 3333333333333333333333333333333333333333333333333333333
+4435 3333333333333333333333333333333333333333333333333333333
+4436 3333333333333333333333333333333333333333333333333333333
+4437 3333333333333333333333333333333333333333333333333333333
+4438 3333333333333333333333333333333333333333333333333333333
+4439 3333333333333333333333333333333333333333333333333333333
+4440 3333333333333333333333333333333333333333333333333333333
+4441 3333333333333333333333333333333333333333333333333333333
+4442 3333333333333333333333333333333333333333333333333333333
+4443 3333333333333333333333333333333333333333333333333333333
+4444 3333333333333333333333333333333333333333333333333333333
+4445 3333333333333333333333333333333333333333333333333333333
+4446 3333333333333333333333333333333333333333333333333333333
+4447 3333333333333333333333333333333333333333333333333333333
+4448 3333333333333333333333333333333333333333333333333333333
+4449 3333333333333333333333333333333333333333333333333333333
+4450 3333333333333333333333333333333333333333333333333333333
+4451 3333333333333333333333333333333333333333333333333333333
+4452 3333333333333333333333333333333333333333333333333333333
+4453 3333333333333333333333333333333333333333333333333333333
+4454 3333333333333333333333333333333333333333333333333333333
+4455 3333333333333333333333333333333333333333333333333333333
+4456 3333333333333333333333333333333333333333333333333333333
+4457 3333333333333333333333333333333333333333333333333333333
+4458 3333333333333333333333333333333333333333333333333333333
+4459 3333333333333333333333333333333333333333333333333333333
+4460 3333333333333333333333333333333333333333333333333333333
+4461 3333333333333333333333333333333333333333333333333333333
+4462 3333333333333333333333333333333333333333333333333333333
+4463 3333333333333333333333333333333333333333333333333333333
+4464 3333333333333333333333333333333333333333333333333333333
+4465 3333333333333333333333333333333333333333333333333333333
+4466 3333333333333333333333333333333333333333333333333333333
+4467 3333333333333333333333333333333333333333333333333333333
+4468 3333333333333333333333333333333333333333333333333333333
+4469 3333333333333333333333333333333333333333333333333333333
+4470 3333333333333333333333333333333333333333333333333333333
+4471 3333333333333333333333333333333333333333333333333333333
+4472 3333333333333333333333333333333333333333333333333333333
+4473 3333333333333333333333333333333333333333333333333333333
+4474 3333333333333333333333333333333333333333333333333333333
+4475 3333333333333333333333333333333333333333333333333333333
+4476 3333333333333333333333333333333333333333333333333333333
+4477 3333333333333333333333333333333333333333333333333333333
+4478 3333333333333333333333333333333333333333333333333333333
+4479 3333333333333333333333333333333333333333333333333333333
+4480 3333333333333333333333333333333333333333333333333333333
+4481 3333333333333333333333333333333333333333333333333333333
+4482 3333333333333333333333333333333333333333333333333333333
+4483 3333333333333333333333333333333333333333333333333333333
+4484 3333333333333333333333333333333333333333333333333333333
+4485 3333333333333333333333333333333333333333333333333333333
+4486 3333333333333333333333333333333333333333333333333333333
+4487 3333333333333333333333333333333333333333333333333333333
+4488 3333333333333333333333333333333333333333333333333333333
+4489 3333333333333333333333333333333333333333333333333333333
+4490 3333333333333333333333333333333333333333333333333333333
+4491 3333333333333333333333333333333333333333333333333333333
+4492 3333333333333333333333333333333333333333333333333333333
+4493 3333333333333333333333333333333333333333333333333333333
+4494 3333333333333333333333333333333333333333333333333333333
+4495 3333333333333333333333333333333333333333333333333333333
+4496 3333333333333333333333333333333333333333333333333333333
+4497 3333333333333333333333333333333333333333333333333333333
+4498 3333333333333333333333333333333333333333333333333333333
+4499 3333333333333333333333333333333333333333333333333333333
+4500 3333333333333333333333333333333333333333333333333333333
+4501 3333333333333333333333333333333333333333333333333333333
+4502 3333333333333333333333333333333333333333333333333333333
+4503 3333333333333333333333333333333333333333333333333333333
+4504 3333333333333333333333333333333333333333333333333333333
+4505 3333333333333333333333333333333333333333333333333333333
+4506 3333333333333333333333333333333333333333333333333333333
+4507 3333333333333333333333333333333333333333333333333333333
+4508 3333333333333333333333333333333333333333333333333333333
+4509 3333333333333333333333333333333333333333333333333333333
+4510 3333333333333333333333333333333333333333333333333333333
+4511 3333333333333333333333333333333333333333333333333333333
+4512 3333333333333333333333333333333333333333333333333333333
+4513 3333333333333333333333333333333333333333333333333333333
+4514 3333333333333333333333333333333333333333333333333333333
+4515 3333333333333333333333333333333333333333333333333333333
+4516 3333333333333333333333333333333333333333333333333333333
+4517 3333333333333333333333333333333333333333333333333333333
+4518 3333333333333333333333333333333333333333333333333333333
+4519 3333333333333333333333333333333333333333333333333333333
+4520 3333333333333333333333333333333333333333333333333333333
+4521 3333333333333333333333333333333333333333333333333333333
+4522 3333333333333333333333333333333333333333333333333333333
+4523 3333333333333333333333333333333333333333333333333333333
+4524 3333333333333333333333333333333333333333333333333333333
+4525 3333333333333333333333333333333333333333333333333333333
+4526 3333333333333333333333333333333333333333333333333333333
+4527 3333333333333333333333333333333333333333333333333333333
+4528 3333333333333333333333333333333333333333333333333333333
+4529 3333333333333333333333333333333333333333333333333333333
+4530 3333333333333333333333333333333333333333333333333333333
+4531 3333333333333333333333333333333333333333333333333333333
+4532 3333333333333333333333333333333333333333333333333333333
+4533 3333333333333333333333333333333333333333333333333333333
+4534 3333333333333333333333333333333333333333333333333333333
+4535 3333333333333333333333333333333333333333333333333333333
+4536 3333333333333333333333333333333333333333333333333333333
+4537 3333333333333333333333333333333333333333333333333333333
+4538 3333333333333333333333333333333333333333333333333333333
+4539 3333333333333333333333333333333333333333333333333333333
+4540 3333333333333333333333333333333333333333333333333333333
+4541 3333333333333333333333333333333333333333333333333333333
+4542 3333333333333333333333333333333333333333333333333333333
+4543 3333333333333333333333333333333333333333333333333333333
+4544 3333333333333333333333333333333333333333333333333333333
+4545 3333333333333333333333333333333333333333333333333333333
+4546 3333333333333333333333333333333333333333333333333333333
+4547 3333333333333333333333333333333333333333333333333333333
+4548 3333333333333333333333333333333333333333333333333333333
+4549 3333333333333333333333333333333333333333333333333333333
+4550 3333333333333333333333333333333333333333333333333333333
+4551 3333333333333333333333333333333333333333333333333333333
+4552 3333333333333333333333333333333333333333333333333333333
+4553 3333333333333333333333333333333333333333333333333333333
+4554 3333333333333333333333333333333333333333333333333333333
+4555 3333333333333333333333333333333333333333333333333333333
+4556 3333333333333333333333333333333333333333333333333333333
+4557 3333333333333333333333333333333333333333333333333333333
+4558 3333333333333333333333333333333333333333333333333333333
+4559 3333333333333333333333333333333333333333333333333333333
+4560 3333333333333333333333333333333333333333333333333333333
+4561 3333333333333333333333333333333333333333333333333333333
+4562 3333333333333333333333333333333333333333333333333333333
+4563 3333333333333333333333333333333333333333333333333333333
+4564 3333333333333333333333333333333333333333333333333333333
+4565 3333333333333333333333333333333333333333333333333333333
+4566 3333333333333333333333333333333333333333333333333333333
+4567 3333333333333333333333333333333333333333333333333333333
+4568 3333333333333333333333333333333333333333333333333333333
+4569 3333333333333333333333333333333333333333333333333333333
+4570 3333333333333333333333333333333333333333333333333333333
+4571 3333333333333333333333333333333333333333333333333333333
+4572 3333333333333333333333333333333333333333333333333333333
+4573 3333333333333333333333333333333333333333333333333333333
+4574 3333333333333333333333333333333333333333333333333333333
+4575 3333333333333333333333333333333333333333333333333333333
+4576 3333333333333333333333333333333333333333333333333333333
+4577 3333333333333333333333333333333333333333333333333333333
+4578 3333333333333333333333333333333333333333333333333333333
+4579 3333333333333333333333333333333333333333333333333333333
+4580 3333333333333333333333333333333333333333333333333333333
+4581 3333333333333333333333333333333333333333333333333333333
+4582 3333333333333333333333333333333333333333333333333333333
+4583 3333333333333333333333333333333333333333333333333333333
+4584 3333333333333333333333333333333333333333333333333333333
+4585 3333333333333333333333333333333333333333333333333333333
+4586 3333333333333333333333333333333333333333333333333333333
+4587 3333333333333333333333333333333333333333333333333333333
+4588 3333333333333333333333333333333333333333333333333333333
+4589 3333333333333333333333333333333333333333333333333333333
+4590 3333333333333333333333333333333333333333333333333333333
+4591 3333333333333333333333333333333333333333333333333333333
+4592 3333333333333333333333333333333333333333333333333333333
+4593 3333333333333333333333333333333333333333333333333333333
+4594 3333333333333333333333333333333333333333333333333333333
+4595 3333333333333333333333333333333333333333333333333333333
+4596 3333333333333333333333333333333333333333333333333333333
+4597 3333333333333333333333333333333333333333333333333333333
+4598 3333333333333333333333333333333333333333333333333333333
+4599 3333333333333333333333333333333333333333333333333333333
+4600 3333333333333333333333333333333333333333333333333333333
+4601 3333333333333333333333333333333333333333333333333333333
+4602 3333333333333333333333333333333333333333333333333333333
+4603 3333333333333333333333333333333333333333333333333333333
+4604 3333333333333333333333333333333333333333333333333333333
+4605 3333333333333333333333333333333333333333333333333333333
+4606 3333333333333333333333333333333333333333333333333333333
+4607 3333333333333333333333333333333333333333333333333333333
+4608 3333333333333333333333333333333333333333333333333333333
+4609 3333333333333333333333333333333333333333333333333333333
+4610 3333333333333333333333333333333333333333333333333333333
+4611 3333333333333333333333333333333333333333333333333333333
+4612 3333333333333333333333333333333333333333333333333333333
+4613 3333333333333333333333333333333333333333333333333333333
+4614 3333333333333333333333333333333333333333333333333333333
+4615 3333333333333333333333333333333333333333333333333333333
+4616 3333333333333333333333333333333333333333333333333333333
+4617 3333333333333333333333333333333333333333333333333333333
+4618 3333333333333333333333333333333333333333333333333333333
+4619 3333333333333333333333333333333333333333333333333333333
+4620 3333333333333333333333333333333333333333333333333333333
+4621 3333333333333333333333333333333333333333333333333333333
+4622 3333333333333333333333333333333333333333333333333333333
+4623 3333333333333333333333333333333333333333333333333333333
+4624 3333333333333333333333333333333333333333333333333333333
+4625 3333333333333333333333333333333333333333333333333333333
+4626 3333333333333333333333333333333333333333333333333333333
+4627 3333333333333333333333333333333333333333333333333333333
+4628 3333333333333333333333333333333333333333333333333333333
+4629 3333333333333333333333333333333333333333333333333333333
+4630 3333333333333333333333333333333333333333333333333333333
+4631 3333333333333333333333333333333333333333333333333333333
+4632 3333333333333333333333333333333333333333333333333333333
+4633 3333333333333333333333333333333333333333333333333333333
+4634 3333333333333333333333333333333333333333333333333333333
+4635 3333333333333333333333333333333333333333333333333333333
+4636 3333333333333333333333333333333333333333333333333333333
+4637 3333333333333333333333333333333333333333333333333333333
+4638 3333333333333333333333333333333333333333333333333333333
+4639 3333333333333333333333333333333333333333333333333333333
+4640 3333333333333333333333333333333333333333333333333333333
+4641 3333333333333333333333333333333333333333333333333333333
+4642 3333333333333333333333333333333333333333333333333333333
+4643 3333333333333333333333333333333333333333333333333333333
+4644 3333333333333333333333333333333333333333333333333333333
+4645 3333333333333333333333333333333333333333333333333333333
+4646 3333333333333333333333333333333333333333333333333333333
+4647 3333333333333333333333333333333333333333333333333333333
+4648 3333333333333333333333333333333333333333333333333333333
+4649 3333333333333333333333333333333333333333333333333333333
+4650 3333333333333333333333333333333333333333333333333333333
+4651 3333333333333333333333333333333333333333333333333333333
+4652 3333333333333333333333333333333333333333333333333333333
+4653 3333333333333333333333333333333333333333333333333333333
+4654 3333333333333333333333333333333333333333333333333333333
+4655 3333333333333333333333333333333333333333333333333333333
+4656 3333333333333333333333333333333333333333333333333333333
+4657 3333333333333333333333333333333333333333333333333333333
+4658 3333333333333333333333333333333333333333333333333333333
+4659 3333333333333333333333333333333333333333333333333333333
+4660 3333333333333333333333333333333333333333333333333333333
+4661 3333333333333333333333333333333333333333333333333333333
+4662 3333333333333333333333333333333333333333333333333333333
+4663 3333333333333333333333333333333333333333333333333333333
+4664 3333333333333333333333333333333333333333333333333333333
+4665 3333333333333333333333333333333333333333333333333333333
+4666 3333333333333333333333333333333333333333333333333333333
+4667 3333333333333333333333333333333333333333333333333333333
+4668 3333333333333333333333333333333333333333333333333333333
+4669 3333333333333333333333333333333333333333333333333333333
+4670 3333333333333333333333333333333333333333333333333333333
+4671 3333333333333333333333333333333333333333333333333333333
+4672 3333333333333333333333333333333333333333333333333333333
+4673 3333333333333333333333333333333333333333333333333333333
+4674 3333333333333333333333333333333333333333333333333333333
+4675 3333333333333333333333333333333333333333333333333333333
+4676 3333333333333333333333333333333333333333333333333333333
+4677 3333333333333333333333333333333333333333333333333333333
+4678 3333333333333333333333333333333333333333333333333333333
+4679 3333333333333333333333333333333333333333333333333333333
+4680 3333333333333333333333333333333333333333333333333333333
+4681 3333333333333333333333333333333333333333333333333333333
+4682 3333333333333333333333333333333333333333333333333333333
+4683 3333333333333333333333333333333333333333333333333333333
+4684 3333333333333333333333333333333333333333333333333333333
+4685 3333333333333333333333333333333333333333333333333333333
+4686 3333333333333333333333333333333333333333333333333333333
+4687 3333333333333333333333333333333333333333333333333333333
+4688 3333333333333333333333333333333333333333333333333333333
+4689 3333333333333333333333333333333333333333333333333333333
+4690 3333333333333333333333333333333333333333333333333333333
+4691 3333333333333333333333333333333333333333333333333333333
+4692 3333333333333333333333333333333333333333333333333333333
+4693 3333333333333333333333333333333333333333333333333333333
+4694 3333333333333333333333333333333333333333333333333333333
+4695 3333333333333333333333333333333333333333333333333333333
+4696 3333333333333333333333333333333333333333333333333333333
+4697 3333333333333333333333333333333333333333333333333333333
+4698 3333333333333333333333333333333333333333333333333333333
+4699 3333333333333333333333333333333333333333333333333333333
+4700 3333333333333333333333333333333333333333333333333333333
+4701 3333333333333333333333333333333333333333333333333333333
+4702 3333333333333333333333333333333333333333333333333333333
+4703 3333333333333333333333333333333333333333333333333333333
+4704 3333333333333333333333333333333333333333333333333333333
+4705 3333333333333333333333333333333333333333333333333333333
+4706 3333333333333333333333333333333333333333333333333333333
+4707 3333333333333333333333333333333333333333333333333333333
+4708 3333333333333333333333333333333333333333333333333333333
+4709 3333333333333333333333333333333333333333333333333333333
+4710 3333333333333333333333333333333333333333333333333333333
+4711 3333333333333333333333333333333333333333333333333333333
+4712 3333333333333333333333333333333333333333333333333333333
+4713 3333333333333333333333333333333333333333333333333333333
+4714 3333333333333333333333333333333333333333333333333333333
+4715 3333333333333333333333333333333333333333333333333333333
+4716 3333333333333333333333333333333333333333333333333333333
+4717 3333333333333333333333333333333333333333333333333333333
+4718 3333333333333333333333333333333333333333333333333333333
+4719 3333333333333333333333333333333333333333333333333333333
+4720 3333333333333333333333333333333333333333333333333333333
+4721 3333333333333333333333333333333333333333333333333333333
+4722 3333333333333333333333333333333333333333333333333333333
+4723 3333333333333333333333333333333333333333333333333333333
+4724 3333333333333333333333333333333333333333333333333333333
+4725 3333333333333333333333333333333333333333333333333333333
+4726 3333333333333333333333333333333333333333333333333333333
+4727 3333333333333333333333333333333333333333333333333333333
+4728 3333333333333333333333333333333333333333333333333333333
+4729 3333333333333333333333333333333333333333333333333333333
+4730 3333333333333333333333333333333333333333333333333333333
+4731 3333333333333333333333333333333333333333333333333333333
+4732 3333333333333333333333333333333333333333333333333333333
+4733 3333333333333333333333333333333333333333333333333333333
+4734 3333333333333333333333333333333333333333333333333333333
+4735 3333333333333333333333333333333333333333333333333333333
+4736 3333333333333333333333333333333333333333333333333333333
+4737 3333333333333333333333333333333333333333333333333333333
+4738 3333333333333333333333333333333333333333333333333333333
+4739 3333333333333333333333333333333333333333333333333333333
+4740 3333333333333333333333333333333333333333333333333333333
+4741 3333333333333333333333333333333333333333333333333333333
+4742 3333333333333333333333333333333333333333333333333333333
+4743 3333333333333333333333333333333333333333333333333333333
+4744 3333333333333333333333333333333333333333333333333333333
+4745 3333333333333333333333333333333333333333333333333333333
+4746 3333333333333333333333333333333333333333333333333333333
+4747 3333333333333333333333333333333333333333333333333333333
+4748 3333333333333333333333333333333333333333333333333333333
+4749 3333333333333333333333333333333333333333333333333333333
+4750 3333333333333333333333333333333333333333333333333333333
+4751 3333333333333333333333333333333333333333333333333333333
+4752 3333333333333333333333333333333333333333333333333333333
+4753 3333333333333333333333333333333333333333333333333333333
+4754 3333333333333333333333333333333333333333333333333333333
+4755 3333333333333333333333333333333333333333333333333333333
+4756 3333333333333333333333333333333333333333333333333333333
+4757 3333333333333333333333333333333333333333333333333333333
+4758 3333333333333333333333333333333333333333333333333333333
+4759 3333333333333333333333333333333333333333333333333333333
+4760 3333333333333333333333333333333333333333333333333333333
+4761 3333333333333333333333333333333333333333333333333333333
+4762 3333333333333333333333333333333333333333333333333333333
+4763 3333333333333333333333333333333333333333333333333333333
+4764 3333333333333333333333333333333333333333333333333333333
+4765 3333333333333333333333333333333333333333333333333333333
+4766 3333333333333333333333333333333333333333333333333333333
+4767 3333333333333333333333333333333333333333333333333333333
+4768 3333333333333333333333333333333333333333333333333333333
+4769 3333333333333333333333333333333333333333333333333333333
+4770 3333333333333333333333333333333333333333333333333333333
+4771 3333333333333333333333333333333333333333333333333333333
+4772 3333333333333333333333333333333333333333333333333333333
+4773 3333333333333333333333333333333333333333333333333333333
+4774 3333333333333333333333333333333333333333333333333333333
+4775 3333333333333333333333333333333333333333333333333333333
+4776 3333333333333333333333333333333333333333333333333333333
+4777 3333333333333333333333333333333333333333333333333333333
+4778 3333333333333333333333333333333333333333333333333333333
+4779 3333333333333333333333333333333333333333333333333333333
+4780 3333333333333333333333333333333333333333333333333333333
+4781 3333333333333333333333333333333333333333333333333333333
+4782 3333333333333333333333333333333333333333333333333333333
+4783 3333333333333333333333333333333333333333333333333333333
+4784 3333333333333333333333333333333333333333333333333333333
+4785 3333333333333333333333333333333333333333333333333333333
+4786 3333333333333333333333333333333333333333333333333333333
+4787 3333333333333333333333333333333333333333333333333333333
+4788 3333333333333333333333333333333333333333333333333333333
+4789 3333333333333333333333333333333333333333333333333333333
+4790 3333333333333333333333333333333333333333333333333333333
+4791 3333333333333333333333333333333333333333333333333333333
+4792 3333333333333333333333333333333333333333333333333333333
+4793 3333333333333333333333333333333333333333333333333333333
+4794 3333333333333333333333333333333333333333333333333333333
+4795 3333333333333333333333333333333333333333333333333333333
+4796 3333333333333333333333333333333333333333333333333333333
+4797 3333333333333333333333333333333333333333333333333333333
+4798 3333333333333333333333333333333333333333333333333333333
+4799 3333333333333333333333333333333333333333333333333333333
+4800 3333333333333333333333333333333333333333333333333333333
+4801 3333333333333333333333333333333333333333333333333333333
+4802 3333333333333333333333333333333333333333333333333333333
+4803 3333333333333333333333333333333333333333333333333333333
+4804 3333333333333333333333333333333333333333333333333333333
+4805 3333333333333333333333333333333333333333333333333333333
+4806 3333333333333333333333333333333333333333333333333333333
+4807 3333333333333333333333333333333333333333333333333333333
+4808 3333333333333333333333333333333333333333333333333333333
+4809 3333333333333333333333333333333333333333333333333333333
+4810 3333333333333333333333333333333333333333333333333333333
+4811 3333333333333333333333333333333333333333333333333333333
+4812 3333333333333333333333333333333333333333333333333333333
+4813 3333333333333333333333333333333333333333333333333333333
+4814 3333333333333333333333333333333333333333333333333333333
+4815 3333333333333333333333333333333333333333333333333333333
+4816 3333333333333333333333333333333333333333333333333333333
+4817 3333333333333333333333333333333333333333333333333333333
+4818 3333333333333333333333333333333333333333333333333333333
+4819 3333333333333333333333333333333333333333333333333333333
+4820 3333333333333333333333333333333333333333333333333333333
+4821 3333333333333333333333333333333333333333333333333333333
+4822 3333333333333333333333333333333333333333333333333333333
+4823 3333333333333333333333333333333333333333333333333333333
+4824 3333333333333333333333333333333333333333333333333333333
+4825 3333333333333333333333333333333333333333333333333333333
+4826 3333333333333333333333333333333333333333333333333333333
+4827 3333333333333333333333333333333333333333333333333333333
+4828 3333333333333333333333333333333333333333333333333333333
+4829 3333333333333333333333333333333333333333333333333333333
+4830 3333333333333333333333333333333333333333333333333333333
+4831 3333333333333333333333333333333333333333333333333333333
+4832 3333333333333333333333333333333333333333333333333333333
+4833 3333333333333333333333333333333333333333333333333333333
+4834 3333333333333333333333333333333333333333333333333333333
+4835 3333333333333333333333333333333333333333333333333333333
+4836 3333333333333333333333333333333333333333333333333333333
+4837 3333333333333333333333333333333333333333333333333333333
+4838 3333333333333333333333333333333333333333333333333333333
+4839 3333333333333333333333333333333333333333333333333333333
+4840 3333333333333333333333333333333333333333333333333333333
+4841 3333333333333333333333333333333333333333333333333333333
+4842 3333333333333333333333333333333333333333333333333333333
+4843 3333333333333333333333333333333333333333333333333333333
+4844 3333333333333333333333333333333333333333333333333333333
+4845 3333333333333333333333333333333333333333333333333333333
+4846 3333333333333333333333333333333333333333333333333333333
+4847 3333333333333333333333333333333333333333333333333333333
+4848 3333333333333333333333333333333333333333333333333333333
+4849 3333333333333333333333333333333333333333333333333333333
+4850 3333333333333333333333333333333333333333333333333333333
+4851 3333333333333333333333333333333333333333333333333333333
+4852 3333333333333333333333333333333333333333333333333333333
+4853 3333333333333333333333333333333333333333333333333333333
+4854 3333333333333333333333333333333333333333333333333333333
+4855 3333333333333333333333333333333333333333333333333333333
+4856 3333333333333333333333333333333333333333333333333333333
+4857 3333333333333333333333333333333333333333333333333333333
+4858 3333333333333333333333333333333333333333333333333333333
+4859 3333333333333333333333333333333333333333333333333333333
+4860 3333333333333333333333333333333333333333333333333333333
+4861 3333333333333333333333333333333333333333333333333333333
+4862 3333333333333333333333333333333333333333333333333333333
+4863 3333333333333333333333333333333333333333333333333333333
+4864 3333333333333333333333333333333333333333333333333333333
+4865 3333333333333333333333333333333333333333333333333333333
+4866 3333333333333333333333333333333333333333333333333333333
+4867 3333333333333333333333333333333333333333333333333333333
+4868 3333333333333333333333333333333333333333333333333333333
+4869 3333333333333333333333333333333333333333333333333333333
+4870 3333333333333333333333333333333333333333333333333333333
+4871 3333333333333333333333333333333333333333333333333333333
+4872 3333333333333333333333333333333333333333333333333333333
+4873 3333333333333333333333333333333333333333333333333333333
+4874 3333333333333333333333333333333333333333333333333333333
+4875 3333333333333333333333333333333333333333333333333333333
+4876 3333333333333333333333333333333333333333333333333333333
+4877 3333333333333333333333333333333333333333333333333333333
+4878 3333333333333333333333333333333333333333333333333333333
+4879 3333333333333333333333333333333333333333333333333333333
+4880 3333333333333333333333333333333333333333333333333333333
+4881 3333333333333333333333333333333333333333333333333333333
+4882 3333333333333333333333333333333333333333333333333333333
+4883 3333333333333333333333333333333333333333333333333333333
+4884 3333333333333333333333333333333333333333333333333333333
+4885 3333333333333333333333333333333333333333333333333333333
+4886 3333333333333333333333333333333333333333333333333333333
+4887 3333333333333333333333333333333333333333333333333333333
+4888 3333333333333333333333333333333333333333333333333333333
+4889 3333333333333333333333333333333333333333333333333333333
+4890 3333333333333333333333333333333333333333333333333333333
+4891 3333333333333333333333333333333333333333333333333333333
+4892 3333333333333333333333333333333333333333333333333333333
+4893 3333333333333333333333333333333333333333333333333333333
+4894 3333333333333333333333333333333333333333333333333333333
+4895 3333333333333333333333333333333333333333333333333333333
+4896 3333333333333333333333333333333333333333333333333333333
+4897 3333333333333333333333333333333333333333333333333333333
+4898 3333333333333333333333333333333333333333333333333333333
+4899 3333333333333333333333333333333333333333333333333333333
+4900 3333333333333333333333333333333333333333333333333333333
+4901 3333333333333333333333333333333333333333333333333333333
+4902 3333333333333333333333333333333333333333333333333333333
+4903 3333333333333333333333333333333333333333333333333333333
+4904 3333333333333333333333333333333333333333333333333333333
+4905 3333333333333333333333333333333333333333333333333333333
+4906 3333333333333333333333333333333333333333333333333333333
+4907 3333333333333333333333333333333333333333333333333333333
+4908 3333333333333333333333333333333333333333333333333333333
+4909 3333333333333333333333333333333333333333333333333333333
+4910 3333333333333333333333333333333333333333333333333333333
+4911 3333333333333333333333333333333333333333333333333333333
+4912 3333333333333333333333333333333333333333333333333333333
+4913 3333333333333333333333333333333333333333333333333333333
+4914 3333333333333333333333333333333333333333333333333333333
+4915 3333333333333333333333333333333333333333333333333333333
+4916 3333333333333333333333333333333333333333333333333333333
+4917 3333333333333333333333333333333333333333333333333333333
+4918 3333333333333333333333333333333333333333333333333333333
+4919 3333333333333333333333333333333333333333333333333333333
+4920 3333333333333333333333333333333333333333333333333333333
+4921 3333333333333333333333333333333333333333333333333333333
+4922 3333333333333333333333333333333333333333333333333333333
+4923 3333333333333333333333333333333333333333333333333333333
+4924 3333333333333333333333333333333333333333333333333333333
+4925 3333333333333333333333333333333333333333333333333333333
+4926 3333333333333333333333333333333333333333333333333333333
+4927 3333333333333333333333333333333333333333333333333333333
+4928 3333333333333333333333333333333333333333333333333333333
+4929 3333333333333333333333333333333333333333333333333333333
+4930 3333333333333333333333333333333333333333333333333333333
+4931 3333333333333333333333333333333333333333333333333333333
+4932 3333333333333333333333333333333333333333333333333333333
+4933 3333333333333333333333333333333333333333333333333333333
+4934 3333333333333333333333333333333333333333333333333333333
+4935 3333333333333333333333333333333333333333333333333333333
+4936 3333333333333333333333333333333333333333333333333333333
+4937 3333333333333333333333333333333333333333333333333333333
+4938 3333333333333333333333333333333333333333333333333333333
+4939 3333333333333333333333333333333333333333333333333333333
+4940 3333333333333333333333333333333333333333333333333333333
+4941 3333333333333333333333333333333333333333333333333333333
+4942 3333333333333333333333333333333333333333333333333333333
+4943 3333333333333333333333333333333333333333333333333333333
+4944 3333333333333333333333333333333333333333333333333333333
+4945 3333333333333333333333333333333333333333333333333333333
+4946 3333333333333333333333333333333333333333333333333333333
+4947 3333333333333333333333333333333333333333333333333333333
+4948 3333333333333333333333333333333333333333333333333333333
+4949 3333333333333333333333333333333333333333333333333333333
+4950 3333333333333333333333333333333333333333333333333333333
+4951 3333333333333333333333333333333333333333333333333333333
+4952 3333333333333333333333333333333333333333333333333333333
+4953 3333333333333333333333333333333333333333333333333333333
+4954 3333333333333333333333333333333333333333333333333333333
+4955 3333333333333333333333333333333333333333333333333333333
+4956 3333333333333333333333333333333333333333333333333333333
+4957 3333333333333333333333333333333333333333333333333333333
+4958 3333333333333333333333333333333333333333333333333333333
+4959 3333333333333333333333333333333333333333333333333333333
+4960 3333333333333333333333333333333333333333333333333333333
+4961 3333333333333333333333333333333333333333333333333333333
+4962 3333333333333333333333333333333333333333333333333333333
+4963 3333333333333333333333333333333333333333333333333333333
+4964 3333333333333333333333333333333333333333333333333333333
+4965 3333333333333333333333333333333333333333333333333333333
+4966 3333333333333333333333333333333333333333333333333333333
+4967 3333333333333333333333333333333333333333333333333333333
+4968 3333333333333333333333333333333333333333333333333333333
+4969 3333333333333333333333333333333333333333333333333333333
+4970 3333333333333333333333333333333333333333333333333333333
+4971 3333333333333333333333333333333333333333333333333333333
+4972 3333333333333333333333333333333333333333333333333333333
+4973 3333333333333333333333333333333333333333333333333333333
+4974 3333333333333333333333333333333333333333333333333333333
+4975 3333333333333333333333333333333333333333333333333333333
+4976 3333333333333333333333333333333333333333333333333333333
+4977 3333333333333333333333333333333333333333333333333333333
+4978 3333333333333333333333333333333333333333333333333333333
+4979 3333333333333333333333333333333333333333333333333333333
+4980 3333333333333333333333333333333333333333333333333333333
+4981 3333333333333333333333333333333333333333333333333333333
+4982 3333333333333333333333333333333333333333333333333333333
+4983 3333333333333333333333333333333333333333333333333333333
+4984 3333333333333333333333333333333333333333333333333333333
+4985 3333333333333333333333333333333333333333333333333333333
+4986 3333333333333333333333333333333333333333333333333333333
+4987 3333333333333333333333333333333333333333333333333333333
+4988 3333333333333333333333333333333333333333333333333333333
+4989 3333333333333333333333333333333333333333333333333333333
+4990 3333333333333333333333333333333333333333333333333333333
+4991 3333333333333333333333333333333333333333333333333333333
+4992 3333333333333333333333333333333333333333333333333333333
+4993 3333333333333333333333333333333333333333333333333333333
+4994 3333333333333333333333333333333333333333333333333333333
+4995 3333333333333333333333333333333333333333333333333333333
+4996 3333333333333333333333333333333333333333333333333333333
+4997 3333333333333333333333333333333333333333333333333333333
+4998 3333333333333333333333333333333333333333333333333333333
+4999 3333333333333333333333333333333333333333333333333333333
+5000 3333333333333333333333333333333333333333333333333333333
+5001 3333333333333333333333333333333333333333333333333333333
+5002 3333333333333333333333333333333333333333333333333333333
+5003 3333333333333333333333333333333333333333333333333333333
+5004 3333333333333333333333333333333333333333333333333333333
+5005 3333333333333333333333333333333333333333333333333333333
+5006 3333333333333333333333333333333333333333333333333333333
+5007 3333333333333333333333333333333333333333333333333333333
+5008 3333333333333333333333333333333333333333333333333333333
+5009 3333333333333333333333333333333333333333333333333333333
+5010 3333333333333333333333333333333333333333333333333333333
+5011 3333333333333333333333333333333333333333333333333333333
+5012 3333333333333333333333333333333333333333333333333333333
+5013 3333333333333333333333333333333333333333333333333333333
+5014 3333333333333333333333333333333333333333333333333333333
+5015 3333333333333333333333333333333333333333333333333333333
+5016 3333333333333333333333333333333333333333333333333333333
+5017 3333333333333333333333333333333333333333333333333333333
+5018 3333333333333333333333333333333333333333333333333333333
+5019 3333333333333333333333333333333333333333333333333333333
+5020 3333333333333333333333333333333333333333333333333333333
+5021 3333333333333333333333333333333333333333333333333333333
+5022 3333333333333333333333333333333333333333333333333333333
+5023 3333333333333333333333333333333333333333333333333333333
+5024 3333333333333333333333333333333333333333333333333333333
+5025 3333333333333333333333333333333333333333333333333333333
+5026 3333333333333333333333333333333333333333333333333333333
+5027 3333333333333333333333333333333333333333333333333333333
+5028 3333333333333333333333333333333333333333333333333333333
+5029 3333333333333333333333333333333333333333333333333333333
+5030 3333333333333333333333333333333333333333333333333333333
+5031 3333333333333333333333333333333333333333333333333333333
+5032 3333333333333333333333333333333333333333333333333333333
+5033 3333333333333333333333333333333333333333333333333333333
+5034 3333333333333333333333333333333333333333333333333333333
+5035 3333333333333333333333333333333333333333333333333333333
+5036 3333333333333333333333333333333333333333333333333333333
+5037 3333333333333333333333333333333333333333333333333333333
+5038 3333333333333333333333333333333333333333333333333333333
+5039 3333333333333333333333333333333333333333333333333333333
+5040 3333333333333333333333333333333333333333333333333333333
+5041 3333333333333333333333333333333333333333333333333333333
+5042 3333333333333333333333333333333333333333333333333333333
+5043 3333333333333333333333333333333333333333333333333333333
+5044 3333333333333333333333333333333333333333333333333333333
+5045 3333333333333333333333333333333333333333333333333333333
+5046 3333333333333333333333333333333333333333333333333333333
+5047 3333333333333333333333333333333333333333333333333333333
+5048 3333333333333333333333333333333333333333333333333333333
+5049 3333333333333333333333333333333333333333333333333333333
+5050 3333333333333333333333333333333333333333333333333333333
+5051 3333333333333333333333333333333333333333333333333333333
+5052 3333333333333333333333333333333333333333333333333333333
+5053 3333333333333333333333333333333333333333333333333333333
+5054 3333333333333333333333333333333333333333333333333333333
+5055 3333333333333333333333333333333333333333333333333333333
+5056 3333333333333333333333333333333333333333333333333333333
+5057 3333333333333333333333333333333333333333333333333333333
+5058 3333333333333333333333333333333333333333333333333333333
+5059 3333333333333333333333333333333333333333333333333333333
+5060 3333333333333333333333333333333333333333333333333333333
+5061 3333333333333333333333333333333333333333333333333333333
+5062 3333333333333333333333333333333333333333333333333333333
+5063 3333333333333333333333333333333333333333333333333333333
+5064 3333333333333333333333333333333333333333333333333333333
+5065 3333333333333333333333333333333333333333333333333333333
+5066 3333333333333333333333333333333333333333333333333333333
+5067 3333333333333333333333333333333333333333333333333333333
+5068 3333333333333333333333333333333333333333333333333333333
+5069 3333333333333333333333333333333333333333333333333333333
+5070 3333333333333333333333333333333333333333333333333333333
+5071 3333333333333333333333333333333333333333333333333333333
+5072 3333333333333333333333333333333333333333333333333333333
+5073 3333333333333333333333333333333333333333333333333333333
+5074 3333333333333333333333333333333333333333333333333333333
+5075 3333333333333333333333333333333333333333333333333333333
+5076 3333333333333333333333333333333333333333333333333333333
+5077 3333333333333333333333333333333333333333333333333333333
+5078 3333333333333333333333333333333333333333333333333333333
+5079 3333333333333333333333333333333333333333333333333333333
+5080 3333333333333333333333333333333333333333333333333333333
+5081 3333333333333333333333333333333333333333333333333333333
+5082 3333333333333333333333333333333333333333333333333333333
+5083 3333333333333333333333333333333333333333333333333333333
+5084 3333333333333333333333333333333333333333333333333333333
+5085 3333333333333333333333333333333333333333333333333333333
+5086 3333333333333333333333333333333333333333333333333333333
+5087 3333333333333333333333333333333333333333333333333333333
+5088 3333333333333333333333333333333333333333333333333333333
+5089 3333333333333333333333333333333333333333333333333333333
+5090 3333333333333333333333333333333333333333333333333333333
+5091 3333333333333333333333333333333333333333333333333333333
+5092 3333333333333333333333333333333333333333333333333333333
+5093 3333333333333333333333333333333333333333333333333333333
+5094 3333333333333333333333333333333333333333333333333333333
+5095 3333333333333333333333333333333333333333333333333333333
+5096 3333333333333333333333333333333333333333333333333333333
+5097 3333333333333333333333333333333333333333333333333333333
+5098 3333333333333333333333333333333333333333333333333333333
+5099 3333333333333333333333333333333333333333333333333333333
+5100 3333333333333333333333333333333333333333333333333333333
+5101 3333333333333333333333333333333333333333333333333333333
+5102 3333333333333333333333333333333333333333333333333333333
+5103 3333333333333333333333333333333333333333333333333333333
+5104 3333333333333333333333333333333333333333333333333333333
+5105 3333333333333333333333333333333333333333333333333333333
+5106 3333333333333333333333333333333333333333333333333333333
+5107 3333333333333333333333333333333333333333333333333333333
+5108 3333333333333333333333333333333333333333333333333333333
+5109 3333333333333333333333333333333333333333333333333333333
+5110 3333333333333333333333333333333333333333333333333333333
+5111 3333333333333333333333333333333333333333333333333333333
+5112 3333333333333333333333333333333333333333333333333333333
+5113 3333333333333333333333333333333333333333333333333333333
+5114 3333333333333333333333333333333333333333333333333333333
+5115 3333333333333333333333333333333333333333333333333333333
+5116 3333333333333333333333333333333333333333333333333333333
+5117 3333333333333333333333333333333333333333333333333333333
+5118 3333333333333333333333333333333333333333333333333333333
+5119 3333333333333333333333333333333333333333333333333333333
+5120 3333333333333333333333333333333333333333333333333333333
+5121 3333333333333333333333333333333333333333333333333333333
+5122 3333333333333333333333333333333333333333333333333333333
+5123 3333333333333333333333333333333333333333333333333333333
+5124 3333333333333333333333333333333333333333333333333333333
+5125 3333333333333333333333333333333333333333333333333333333
+5126 3333333333333333333333333333333333333333333333333333333
+5127 3333333333333333333333333333333333333333333333333333333
+5128 3333333333333333333333333333333333333333333333333333333
+5129 3333333333333333333333333333333333333333333333333333333
+5130 3333333333333333333333333333333333333333333333333333333
+5131 3333333333333333333333333333333333333333333333333333333
+5132 3333333333333333333333333333333333333333333333333333333
+5133 3333333333333333333333333333333333333333333333333333333
+5134 3333333333333333333333333333333333333333333333333333333
+5135 3333333333333333333333333333333333333333333333333333333
+5136 3333333333333333333333333333333333333333333333333333333
+5137 3333333333333333333333333333333333333333333333333333333
+5138 3333333333333333333333333333333333333333333333333333333
+5139 3333333333333333333333333333333333333333333333333333333
+5140 3333333333333333333333333333333333333333333333333333333
+5141 3333333333333333333333333333333333333333333333333333333
+5142 3333333333333333333333333333333333333333333333333333333
+5143 3333333333333333333333333333333333333333333333333333333
+5144 3333333333333333333333333333333333333333333333333333333
+5145 3333333333333333333333333333333333333333333333333333333
+5146 3333333333333333333333333333333333333333333333333333333
+5147 3333333333333333333333333333333333333333333333333333333
+5148 3333333333333333333333333333333333333333333333333333333
+5149 3333333333333333333333333333333333333333333333333333333
+5150 3333333333333333333333333333333333333333333333333333333
+5151 3333333333333333333333333333333333333333333333333333333
+5152 3333333333333333333333333333333333333333333333333333333
+5153 3333333333333333333333333333333333333333333333333333333
+5154 3333333333333333333333333333333333333333333333333333333
+5155 3333333333333333333333333333333333333333333333333333333
+5156 3333333333333333333333333333333333333333333333333333333
+5157 3333333333333333333333333333333333333333333333333333333
+5158 3333333333333333333333333333333333333333333333333333333
+5159 3333333333333333333333333333333333333333333333333333333
+5160 3333333333333333333333333333333333333333333333333333333
+5161 3333333333333333333333333333333333333333333333333333333
+5162 3333333333333333333333333333333333333333333333333333333
+5163 3333333333333333333333333333333333333333333333333333333
+5164 3333333333333333333333333333333333333333333333333333333
+5165 3333333333333333333333333333333333333333333333333333333
+5166 3333333333333333333333333333333333333333333333333333333
+5167 3333333333333333333333333333333333333333333333333333333
+5168 3333333333333333333333333333333333333333333333333333333
+5169 3333333333333333333333333333333333333333333333333333333
+5170 3333333333333333333333333333333333333333333333333333333
+5171 3333333333333333333333333333333333333333333333333333333
+5172 3333333333333333333333333333333333333333333333333333333
+5173 3333333333333333333333333333333333333333333333333333333
+5174 3333333333333333333333333333333333333333333333333333333
+5175 3333333333333333333333333333333333333333333333333333333
+5176 3333333333333333333333333333333333333333333333333333333
+5177 3333333333333333333333333333333333333333333333333333333
+5178 3333333333333333333333333333333333333333333333333333333
+5179 3333333333333333333333333333333333333333333333333333333
+5180 3333333333333333333333333333333333333333333333333333333
+5181 3333333333333333333333333333333333333333333333333333333
+5182 3333333333333333333333333333333333333333333333333333333
+5183 3333333333333333333333333333333333333333333333333333333
+5184 3333333333333333333333333333333333333333333333333333333
+5185 3333333333333333333333333333333333333333333333333333333
+5186 3333333333333333333333333333333333333333333333333333333
+5187 3333333333333333333333333333333333333333333333333333333
+5188 3333333333333333333333333333333333333333333333333333333
+5189 3333333333333333333333333333333333333333333333333333333
+5190 3333333333333333333333333333333333333333333333333333333
+5191 3333333333333333333333333333333333333333333333333333333
+5192 3333333333333333333333333333333333333333333333333333333
+5193 3333333333333333333333333333333333333333333333333333333
+5194 3333333333333333333333333333333333333333333333333333333
+5195 3333333333333333333333333333333333333333333333333333333
+5196 3333333333333333333333333333333333333333333333333333333
+5197 3333333333333333333333333333333333333333333333333333333
+5198 3333333333333333333333333333333333333333333333333333333
+5199 3333333333333333333333333333333333333333333333333333333
+5200 3333333333333333333333333333333333333333333333333333333
+5201 3333333333333333333333333333333333333333333333333333333
+5202 3333333333333333333333333333333333333333333333333333333
+5203 3333333333333333333333333333333333333333333333333333333
+5204 3333333333333333333333333333333333333333333333333333333
+5205 3333333333333333333333333333333333333333333333333333333
+5206 3333333333333333333333333333333333333333333333333333333
+5207 3333333333333333333333333333333333333333333333333333333
+5208 3333333333333333333333333333333333333333333333333333333
+5209 3333333333333333333333333333333333333333333333333333333
+5210 3333333333333333333333333333333333333333333333333333333
+5211 3333333333333333333333333333333333333333333333333333333
+5212 3333333333333333333333333333333333333333333333333333333
+5213 3333333333333333333333333333333333333333333333333333333
+5214 3333333333333333333333333333333333333333333333333333333
+5215 3333333333333333333333333333333333333333333333333333333
+5216 3333333333333333333333333333333333333333333333333333333
+5217 3333333333333333333333333333333333333333333333333333333
+5218 3333333333333333333333333333333333333333333333333333333
+5219 3333333333333333333333333333333333333333333333333333333
+5220 3333333333333333333333333333333333333333333333333333333
+5221 3333333333333333333333333333333333333333333333333333333
+5222 3333333333333333333333333333333333333333333333333333333
+5223 3333333333333333333333333333333333333333333333333333333
+5224 3333333333333333333333333333333333333333333333333333333
+5225 3333333333333333333333333333333333333333333333333333333
+5226 3333333333333333333333333333333333333333333333333333333
+5227 3333333333333333333333333333333333333333333333333333333
+5228 3333333333333333333333333333333333333333333333333333333
+5229 3333333333333333333333333333333333333333333333333333333
+5230 3333333333333333333333333333333333333333333333333333333
+5231 3333333333333333333333333333333333333333333333333333333
+5232 3333333333333333333333333333333333333333333333333333333
+5233 3333333333333333333333333333333333333333333333333333333
+5234 3333333333333333333333333333333333333333333333333333333
+5235 3333333333333333333333333333333333333333333333333333333
+5236 3333333333333333333333333333333333333333333333333333333
+5237 3333333333333333333333333333333333333333333333333333333
+5238 3333333333333333333333333333333333333333333333333333333
+5239 3333333333333333333333333333333333333333333333333333333
+5240 3333333333333333333333333333333333333333333333333333333
+5241 3333333333333333333333333333333333333333333333333333333
+5242 3333333333333333333333333333333333333333333333333333333
+5243 3333333333333333333333333333333333333333333333333333333
+5244 3333333333333333333333333333333333333333333333333333333
+5245 3333333333333333333333333333333333333333333333333333333
+5246 3333333333333333333333333333333333333333333333333333333
+5247 3333333333333333333333333333333333333333333333333333333
+5248 3333333333333333333333333333333333333333333333333333333
+5249 3333333333333333333333333333333333333333333333333333333
+5250 3333333333333333333333333333333333333333333333333333333
+5251 3333333333333333333333333333333333333333333333333333333
+5252 3333333333333333333333333333333333333333333333333333333
+5253 3333333333333333333333333333333333333333333333333333333
+5254 3333333333333333333333333333333333333333333333333333333
+5255 3333333333333333333333333333333333333333333333333333333
+5256 3333333333333333333333333333333333333333333333333333333
+5257 3333333333333333333333333333333333333333333333333333333
+5258 3333333333333333333333333333333333333333333333333333333
+5259 3333333333333333333333333333333333333333333333333333333
+5260 3333333333333333333333333333333333333333333333333333333
+5261 3333333333333333333333333333333333333333333333333333333
+5262 3333333333333333333333333333333333333333333333333333333
+5263 3333333333333333333333333333333333333333333333333333333
+5264 3333333333333333333333333333333333333333333333333333333
+5265 3333333333333333333333333333333333333333333333333333333
+5266 3333333333333333333333333333333333333333333333333333333
+5267 3333333333333333333333333333333333333333333333333333333
+5268 3333333333333333333333333333333333333333333333333333333
+5269 3333333333333333333333333333333333333333333333333333333
+5270 3333333333333333333333333333333333333333333333333333333
+5271 3333333333333333333333333333333333333333333333333333333
+5272 3333333333333333333333333333333333333333333333333333333
+5273 3333333333333333333333333333333333333333333333333333333
+5274 3333333333333333333333333333333333333333333333333333333
+5275 3333333333333333333333333333333333333333333333333333333
+5276 3333333333333333333333333333333333333333333333333333333
+5277 3333333333333333333333333333333333333333333333333333333
+5278 3333333333333333333333333333333333333333333333333333333
+5279 3333333333333333333333333333333333333333333333333333333
+5280 3333333333333333333333333333333333333333333333333333333
+5281 3333333333333333333333333333333333333333333333333333333
+5282 3333333333333333333333333333333333333333333333333333333
+5283 3333333333333333333333333333333333333333333333333333333
+5284 3333333333333333333333333333333333333333333333333333333
+5285 3333333333333333333333333333333333333333333333333333333
+5286 3333333333333333333333333333333333333333333333333333333
+5287 3333333333333333333333333333333333333333333333333333333
+5288 3333333333333333333333333333333333333333333333333333333
+5289 3333333333333333333333333333333333333333333333333333333
+5290 3333333333333333333333333333333333333333333333333333333
+5291 3333333333333333333333333333333333333333333333333333333
+5292 3333333333333333333333333333333333333333333333333333333
+5293 3333333333333333333333333333333333333333333333333333333
+5294 3333333333333333333333333333333333333333333333333333333
+5295 3333333333333333333333333333333333333333333333333333333
+5296 3333333333333333333333333333333333333333333333333333333
+5297 3333333333333333333333333333333333333333333333333333333
+5298 3333333333333333333333333333333333333333333333333333333
+5299 3333333333333333333333333333333333333333333333333333333
+5300 3333333333333333333333333333333333333333333333333333333
+5301 3333333333333333333333333333333333333333333333333333333
+5302 3333333333333333333333333333333333333333333333333333333
+5303 3333333333333333333333333333333333333333333333333333333
+5304 3333333333333333333333333333333333333333333333333333333
+5305 3333333333333333333333333333333333333333333333333333333
+5306 3333333333333333333333333333333333333333333333333333333
+5307 3333333333333333333333333333333333333333333333333333333
+5308 3333333333333333333333333333333333333333333333333333333
+5309 3333333333333333333333333333333333333333333333333333333
+5310 3333333333333333333333333333333333333333333333333333333
+5311 3333333333333333333333333333333333333333333333333333333
+5312 3333333333333333333333333333333333333333333333333333333
+5313 3333333333333333333333333333333333333333333333333333333
+5314 3333333333333333333333333333333333333333333333333333333
+5315 3333333333333333333333333333333333333333333333333333333
+5316 3333333333333333333333333333333333333333333333333333333
+5317 3333333333333333333333333333333333333333333333333333333
+5318 3333333333333333333333333333333333333333333333333333333
+5319 3333333333333333333333333333333333333333333333333333333
+5320 3333333333333333333333333333333333333333333333333333333
+5321 3333333333333333333333333333333333333333333333333333333
+5322 3333333333333333333333333333333333333333333333333333333
+5323 3333333333333333333333333333333333333333333333333333333
+5324 3333333333333333333333333333333333333333333333333333333
+5325 3333333333333333333333333333333333333333333333333333333
+5326 3333333333333333333333333333333333333333333333333333333
+5327 3333333333333333333333333333333333333333333333333333333
+5328 3333333333333333333333333333333333333333333333333333333
+5329 3333333333333333333333333333333333333333333333333333333
+5330 3333333333333333333333333333333333333333333333333333333
+5331 3333333333333333333333333333333333333333333333333333333
+5332 3333333333333333333333333333333333333333333333333333333
+5333 3333333333333333333333333333333333333333333333333333333
+5334 3333333333333333333333333333333333333333333333333333333
+5335 3333333333333333333333333333333333333333333333333333333
+5336 3333333333333333333333333333333333333333333333333333333
+5337 3333333333333333333333333333333333333333333333333333333
+5338 3333333333333333333333333333333333333333333333333333333
+5339 3333333333333333333333333333333333333333333333333333333
+5340 3333333333333333333333333333333333333333333333333333333
+5341 3333333333333333333333333333333333333333333333333333333
+5342 3333333333333333333333333333333333333333333333333333333
+5343 3333333333333333333333333333333333333333333333333333333
+5344 3333333333333333333333333333333333333333333333333333333
+5345 3333333333333333333333333333333333333333333333333333333
+5346 3333333333333333333333333333333333333333333333333333333
+5347 3333333333333333333333333333333333333333333333333333333
+5348 3333333333333333333333333333333333333333333333333333333
+5349 3333333333333333333333333333333333333333333333333333333
+5350 3333333333333333333333333333333333333333333333333333333
+5351 3333333333333333333333333333333333333333333333333333333
+5352 3333333333333333333333333333333333333333333333333333333
+5353 3333333333333333333333333333333333333333333333333333333
+5354 3333333333333333333333333333333333333333333333333333333
+5355 3333333333333333333333333333333333333333333333333333333
+5356 3333333333333333333333333333333333333333333333333333333
+5357 3333333333333333333333333333333333333333333333333333333
+5358 3333333333333333333333333333333333333333333333333333333
+5359 3333333333333333333333333333333333333333333333333333333
+5360 3333333333333333333333333333333333333333333333333333333
+5361 3333333333333333333333333333333333333333333333333333333
+5362 3333333333333333333333333333333333333333333333333333333
+5363 3333333333333333333333333333333333333333333333333333333
+5364 3333333333333333333333333333333333333333333333333333333
+5365 3333333333333333333333333333333333333333333333333333333
+5366 3333333333333333333333333333333333333333333333333333333
+5367 3333333333333333333333333333333333333333333333333333333
+5368 3333333333333333333333333333333333333333333333333333333
+5369 3333333333333333333333333333333333333333333333333333333
+5370 3333333333333333333333333333333333333333333333333333333
+5371 3333333333333333333333333333333333333333333333333333333
+5372 3333333333333333333333333333333333333333333333333333333
+5373 3333333333333333333333333333333333333333333333333333333
+5374 3333333333333333333333333333333333333333333333333333333
+5375 3333333333333333333333333333333333333333333333333333333
+5376 3333333333333333333333333333333333333333333333333333333
+5377 3333333333333333333333333333333333333333333333333333333
+5378 3333333333333333333333333333333333333333333333333333333
+5379 3333333333333333333333333333333333333333333333333333333
+5380 3333333333333333333333333333333333333333333333333333333
+5381 3333333333333333333333333333333333333333333333333333333
+5382 3333333333333333333333333333333333333333333333333333333
+5383 3333333333333333333333333333333333333333333333333333333
+5384 3333333333333333333333333333333333333333333333333333333
+5385 3333333333333333333333333333333333333333333333333333333
+5386 3333333333333333333333333333333333333333333333333333333
+5387 3333333333333333333333333333333333333333333333333333333
+5388 3333333333333333333333333333333333333333333333333333333
+5389 3333333333333333333333333333333333333333333333333333333
+5390 3333333333333333333333333333333333333333333333333333333
+5391 3333333333333333333333333333333333333333333333333333333
+5392 3333333333333333333333333333333333333333333333333333333
+5393 3333333333333333333333333333333333333333333333333333333
+5394 3333333333333333333333333333333333333333333333333333333
+5395 3333333333333333333333333333333333333333333333333333333
+5396 3333333333333333333333333333333333333333333333333333333
+5397 3333333333333333333333333333333333333333333333333333333
+5398 3333333333333333333333333333333333333333333333333333333
+5399 3333333333333333333333333333333333333333333333333333333
+5400 3333333333333333333333333333333333333333333333333333333
+5401 3333333333333333333333333333333333333333333333333333333
+5402 3333333333333333333333333333333333333333333333333333333
+5403 3333333333333333333333333333333333333333333333333333333
+5404 3333333333333333333333333333333333333333333333333333333
+5405 3333333333333333333333333333333333333333333333333333333
+5406 3333333333333333333333333333333333333333333333333333333
+5407 3333333333333333333333333333333333333333333333333333333
+5408 3333333333333333333333333333333333333333333333333333333
+5409 3333333333333333333333333333333333333333333333333333333
+5410 3333333333333333333333333333333333333333333333333333333
+5411 3333333333333333333333333333333333333333333333333333333
+5412 3333333333333333333333333333333333333333333333333333333
+5413 3333333333333333333333333333333333333333333333333333333
+5414 3333333333333333333333333333333333333333333333333333333
+5415 3333333333333333333333333333333333333333333333333333333
+5416 3333333333333333333333333333333333333333333333333333333
+5417 3333333333333333333333333333333333333333333333333333333
+5418 3333333333333333333333333333333333333333333333333333333
+5419 3333333333333333333333333333333333333333333333333333333
+5420 3333333333333333333333333333333333333333333333333333333
+5421 3333333333333333333333333333333333333333333333333333333
+5422 3333333333333333333333333333333333333333333333333333333
+5423 3333333333333333333333333333333333333333333333333333333
+5424 3333333333333333333333333333333333333333333333333333333
+5425 3333333333333333333333333333333333333333333333333333333
+5426 3333333333333333333333333333333333333333333333333333333
+5427 3333333333333333333333333333333333333333333333333333333
+5428 3333333333333333333333333333333333333333333333333333333
+5429 3333333333333333333333333333333333333333333333333333333
+5430 3333333333333333333333333333333333333333333333333333333
+5431 3333333333333333333333333333333333333333333333333333333
+5432 3333333333333333333333333333333333333333333333333333333
+5433 3333333333333333333333333333333333333333333333333333333
+5434 3333333333333333333333333333333333333333333333333333333
+5435 3333333333333333333333333333333333333333333333333333333
+5436 3333333333333333333333333333333333333333333333333333333
+5437 3333333333333333333333333333333333333333333333333333333
+5438 3333333333333333333333333333333333333333333333333333333
+5439 3333333333333333333333333333333333333333333333333333333
+5440 3333333333333333333333333333333333333333333333333333333
+5441 3333333333333333333333333333333333333333333333333333333
+5442 3333333333333333333333333333333333333333333333333333333
+5443 3333333333333333333333333333333333333333333333333333333
+5444 3333333333333333333333333333333333333333333333333333333
+5445 3333333333333333333333333333333333333333333333333333333
+5446 3333333333333333333333333333333333333333333333333333333
+5447 3333333333333333333333333333333333333333333333333333333
+5448 3333333333333333333333333333333333333333333333333333333
+5449 3333333333333333333333333333333333333333333333333333333
+5450 3333333333333333333333333333333333333333333333333333333
+5451 3333333333333333333333333333333333333333333333333333333
+5452 3333333333333333333333333333333333333333333333333333333
+5453 3333333333333333333333333333333333333333333333333333333
+5454 3333333333333333333333333333333333333333333333333333333
+5455 3333333333333333333333333333333333333333333333333333333
+5456 3333333333333333333333333333333333333333333333333333333
+5457 3333333333333333333333333333333333333333333333333333333
+5458 3333333333333333333333333333333333333333333333333333333
+5459 3333333333333333333333333333333333333333333333333333333
+5460 3333333333333333333333333333333333333333333333333333333
+5461 3333333333333333333333333333333333333333333333333333333
+5462 3333333333333333333333333333333333333333333333333333333
+5463 3333333333333333333333333333333333333333333333333333333
+5464 3333333333333333333333333333333333333333333333333333333
+5465 3333333333333333333333333333333333333333333333333333333
+5466 3333333333333333333333333333333333333333333333333333333
+5467 3333333333333333333333333333333333333333333333333333333
+5468 3333333333333333333333333333333333333333333333333333333
+5469 3333333333333333333333333333333333333333333333333333333
+5470 3333333333333333333333333333333333333333333333333333333
+5471 3333333333333333333333333333333333333333333333333333333
+5472 3333333333333333333333333333333333333333333333333333333
+5473 3333333333333333333333333333333333333333333333333333333
+5474 3333333333333333333333333333333333333333333333333333333
+5475 3333333333333333333333333333333333333333333333333333333
+5476 3333333333333333333333333333333333333333333333333333333
+5477 3333333333333333333333333333333333333333333333333333333
+5478 3333333333333333333333333333333333333333333333333333333
+5479 3333333333333333333333333333333333333333333333333333333
+5480 3333333333333333333333333333333333333333333333333333333
+5481 3333333333333333333333333333333333333333333333333333333
+5482 3333333333333333333333333333333333333333333333333333333
+5483 3333333333333333333333333333333333333333333333333333333
+5484 3333333333333333333333333333333333333333333333333333333
+5485 3333333333333333333333333333333333333333333333333333333
+5486 3333333333333333333333333333333333333333333333333333333
+5487 3333333333333333333333333333333333333333333333333333333
+5488 3333333333333333333333333333333333333333333333333333333
+5489 3333333333333333333333333333333333333333333333333333333
+5490 3333333333333333333333333333333333333333333333333333333
+5491 3333333333333333333333333333333333333333333333333333333
+5492 3333333333333333333333333333333333333333333333333333333
+5493 3333333333333333333333333333333333333333333333333333333
+5494 3333333333333333333333333333333333333333333333333333333
+5495 3333333333333333333333333333333333333333333333333333333
+5496 3333333333333333333333333333333333333333333333333333333
+5497 3333333333333333333333333333333333333333333333333333333
+5498 3333333333333333333333333333333333333333333333333333333
+5499 3333333333333333333333333333333333333333333333333333333
+5500 3333333333333333333333333333333333333333333333333333333
+5501 3333333333333333333333333333333333333333333333333333333
+5502 3333333333333333333333333333333333333333333333333333333
+5503 3333333333333333333333333333333333333333333333333333333
+5504 3333333333333333333333333333333333333333333333333333333
+5505 3333333333333333333333333333333333333333333333333333333
+5506 3333333333333333333333333333333333333333333333333333333
+5507 3333333333333333333333333333333333333333333333333333333
+5508 3333333333333333333333333333333333333333333333333333333
+5509 3333333333333333333333333333333333333333333333333333333
+5510 3333333333333333333333333333333333333333333333333333333
+5511 3333333333333333333333333333333333333333333333333333333
+5512 3333333333333333333333333333333333333333333333333333333
+5513 3333333333333333333333333333333333333333333333333333333
+5514 3333333333333333333333333333333333333333333333333333333
+5515 3333333333333333333333333333333333333333333333333333333
+5516 3333333333333333333333333333333333333333333333333333333
+5517 3333333333333333333333333333333333333333333333333333333
+5518 3333333333333333333333333333333333333333333333333333333
+5519 3333333333333333333333333333333333333333333333333333333
+5520 3333333333333333333333333333333333333333333333333333333
+5521 3333333333333333333333333333333333333333333333333333333
+5522 3333333333333333333333333333333333333333333333333333333
+5523 3333333333333333333333333333333333333333333333333333333
+5524 3333333333333333333333333333333333333333333333333333333
+5525 3333333333333333333333333333333333333333333333333333333
+5526 3333333333333333333333333333333333333333333333333333333
+5527 3333333333333333333333333333333333333333333333333333333
+5528 3333333333333333333333333333333333333333333333333333333
+5529 3333333333333333333333333333333333333333333333333333333
+5530 3333333333333333333333333333333333333333333333333333333
+5531 3333333333333333333333333333333333333333333333333333333
+5532 3333333333333333333333333333333333333333333333333333333
+5533 3333333333333333333333333333333333333333333333333333333
+5534 3333333333333333333333333333333333333333333333333333333
+5535 3333333333333333333333333333333333333333333333333333333
+5536 3333333333333333333333333333333333333333333333333333333
+5537 3333333333333333333333333333333333333333333333333333333
+5538 3333333333333333333333333333333333333333333333333333333
+5539 3333333333333333333333333333333333333333333333333333333
+5540 3333333333333333333333333333333333333333333333333333333
+5541 3333333333333333333333333333333333333333333333333333333
+5542 3333333333333333333333333333333333333333333333333333333
+5543 3333333333333333333333333333333333333333333333333333333
+5544 3333333333333333333333333333333333333333333333333333333
+5545 3333333333333333333333333333333333333333333333333333333
+5546 3333333333333333333333333333333333333333333333333333333
+5547 3333333333333333333333333333333333333333333333333333333
+5548 3333333333333333333333333333333333333333333333333333333
+5549 3333333333333333333333333333333333333333333333333333333
+5550 3333333333333333333333333333333333333333333333333333333
+5551 3333333333333333333333333333333333333333333333333333333
+5552 3333333333333333333333333333333333333333333333333333333
+5553 3333333333333333333333333333333333333333333333333333333
+5554 3333333333333333333333333333333333333333333333333333333
+5555 3333333333333333333333333333333333333333333333333333333
+5556 3333333333333333333333333333333333333333333333333333333
+5557 3333333333333333333333333333333333333333333333333333333
+5558 3333333333333333333333333333333333333333333333333333333
+5559 3333333333333333333333333333333333333333333333333333333
+5560 3333333333333333333333333333333333333333333333333333333
+5561 3333333333333333333333333333333333333333333333333333333
+5562 3333333333333333333333333333333333333333333333333333333
+5563 3333333333333333333333333333333333333333333333333333333
+5564 3333333333333333333333333333333333333333333333333333333
+5565 3333333333333333333333333333333333333333333333333333333
+5566 3333333333333333333333333333333333333333333333333333333
+5567 3333333333333333333333333333333333333333333333333333333
+5568 3333333333333333333333333333333333333333333333333333333
+5569 3333333333333333333333333333333333333333333333333333333
+5570 3333333333333333333333333333333333333333333333333333333
+5571 3333333333333333333333333333333333333333333333333333333
+5572 3333333333333333333333333333333333333333333333333333333
+5573 3333333333333333333333333333333333333333333333333333333
+5574 3333333333333333333333333333333333333333333333333333333
+5575 3333333333333333333333333333333333333333333333333333333
+5576 3333333333333333333333333333333333333333333333333333333
+5577 3333333333333333333333333333333333333333333333333333333
+5578 3333333333333333333333333333333333333333333333333333333
+5579 3333333333333333333333333333333333333333333333333333333
+5580 3333333333333333333333333333333333333333333333333333333
+5581 3333333333333333333333333333333333333333333333333333333
+5582 3333333333333333333333333333333333333333333333333333333
+5583 3333333333333333333333333333333333333333333333333333333
+5584 3333333333333333333333333333333333333333333333333333333
+5585 3333333333333333333333333333333333333333333333333333333
+5586 3333333333333333333333333333333333333333333333333333333
+5587 3333333333333333333333333333333333333333333333333333333
+5588 3333333333333333333333333333333333333333333333333333333
+5589 3333333333333333333333333333333333333333333333333333333
+5590 3333333333333333333333333333333333333333333333333333333
+5591 3333333333333333333333333333333333333333333333333333333
+5592 3333333333333333333333333333333333333333333333333333333
+5593 3333333333333333333333333333333333333333333333333333333
+5594 3333333333333333333333333333333333333333333333333333333
+5595 3333333333333333333333333333333333333333333333333333333
+5596 3333333333333333333333333333333333333333333333333333333
+5597 3333333333333333333333333333333333333333333333333333333
+5598 3333333333333333333333333333333333333333333333333333333
+5599 3333333333333333333333333333333333333333333333333333333
+5600 3333333333333333333333333333333333333333333333333333333
+5601 3333333333333333333333333333333333333333333333333333333
+5602 3333333333333333333333333333333333333333333333333333333
+5603 3333333333333333333333333333333333333333333333333333333
+5604 3333333333333333333333333333333333333333333333333333333
+5605 3333333333333333333333333333333333333333333333333333333
+5606 3333333333333333333333333333333333333333333333333333333
+5607 3333333333333333333333333333333333333333333333333333333
+5608 3333333333333333333333333333333333333333333333333333333
+5609 3333333333333333333333333333333333333333333333333333333
+5610 3333333333333333333333333333333333333333333333333333333
+5611 3333333333333333333333333333333333333333333333333333333
+5612 3333333333333333333333333333333333333333333333333333333
+5613 3333333333333333333333333333333333333333333333333333333
+5614 3333333333333333333333333333333333333333333333333333333
+5615 3333333333333333333333333333333333333333333333333333333
+5616 3333333333333333333333333333333333333333333333333333333
+5617 3333333333333333333333333333333333333333333333333333333
+5618 3333333333333333333333333333333333333333333333333333333
+5619 3333333333333333333333333333333333333333333333333333333
+5620 3333333333333333333333333333333333333333333333333333333
+5621 3333333333333333333333333333333333333333333333333333333
+5622 3333333333333333333333333333333333333333333333333333333
+5623 3333333333333333333333333333333333333333333333333333333
+5624 3333333333333333333333333333333333333333333333333333333
+5625 3333333333333333333333333333333333333333333333333333333
+5626 3333333333333333333333333333333333333333333333333333333
+5627 3333333333333333333333333333333333333333333333333333333
+5628 3333333333333333333333333333333333333333333333333333333
+5629 3333333333333333333333333333333333333333333333333333333
+5630 3333333333333333333333333333333333333333333333333333333
+5631 3333333333333333333333333333333333333333333333333333333
+5632 3333333333333333333333333333333333333333333333333333333
+5633 3333333333333333333333333333333333333333333333333333333
+5634 3333333333333333333333333333333333333333333333333333333
+5635 3333333333333333333333333333333333333333333333333333333
+5636 3333333333333333333333333333333333333333333333333333333
+5637 3333333333333333333333333333333333333333333333333333333
+5638 3333333333333333333333333333333333333333333333333333333
+5639 3333333333333333333333333333333333333333333333333333333
+5640 3333333333333333333333333333333333333333333333333333333
+5641 3333333333333333333333333333333333333333333333333333333
+5642 3333333333333333333333333333333333333333333333333333333
+5643 3333333333333333333333333333333333333333333333333333333
+5644 3333333333333333333333333333333333333333333333333333333
+5645 3333333333333333333333333333333333333333333333333333333
+5646 3333333333333333333333333333333333333333333333333333333
+5647 3333333333333333333333333333333333333333333333333333333
+5648 3333333333333333333333333333333333333333333333333333333
+5649 3333333333333333333333333333333333333333333333333333333
+5650 3333333333333333333333333333333333333333333333333333333
+5651 3333333333333333333333333333333333333333333333333333333
+5652 3333333333333333333333333333333333333333333333333333333
+5653 3333333333333333333333333333333333333333333333333333333
+5654 3333333333333333333333333333333333333333333333333333333
+5655 3333333333333333333333333333333333333333333333333333333
+5656 3333333333333333333333333333333333333333333333333333333
+5657 3333333333333333333333333333333333333333333333333333333
+5658 3333333333333333333333333333333333333333333333333333333
+5659 3333333333333333333333333333333333333333333333333333333
+5660 3333333333333333333333333333333333333333333333333333333
+5661 3333333333333333333333333333333333333333333333333333333
+5662 3333333333333333333333333333333333333333333333333333333
+5663 3333333333333333333333333333333333333333333333333333333
+5664 3333333333333333333333333333333333333333333333333333333
+5665 3333333333333333333333333333333333333333333333333333333
+5666 3333333333333333333333333333333333333333333333333333333
+5667 3333333333333333333333333333333333333333333333333333333
+5668 3333333333333333333333333333333333333333333333333333333
+5669 3333333333333333333333333333333333333333333333333333333
+5670 3333333333333333333333333333333333333333333333333333333
+5671 3333333333333333333333333333333333333333333333333333333
+5672 3333333333333333333333333333333333333333333333333333333
+5673 3333333333333333333333333333333333333333333333333333333
+5674 3333333333333333333333333333333333333333333333333333333
+5675 3333333333333333333333333333333333333333333333333333333
+5676 3333333333333333333333333333333333333333333333333333333
+5677 3333333333333333333333333333333333333333333333333333333
+5678 3333333333333333333333333333333333333333333333333333333
+5679 3333333333333333333333333333333333333333333333333333333
+5680 3333333333333333333333333333333333333333333333333333333
+5681 3333333333333333333333333333333333333333333333333333333
+5682 3333333333333333333333333333333333333333333333333333333
+5683 3333333333333333333333333333333333333333333333333333333
+5684 3333333333333333333333333333333333333333333333333333333
+5685 3333333333333333333333333333333333333333333333333333333
+5686 3333333333333333333333333333333333333333333333333333333
+5687 3333333333333333333333333333333333333333333333333333333
+5688 3333333333333333333333333333333333333333333333333333333
+5689 3333333333333333333333333333333333333333333333333333333
+5690 3333333333333333333333333333333333333333333333333333333
+5691 3333333333333333333333333333333333333333333333333333333
+5692 3333333333333333333333333333333333333333333333333333333
+5693 3333333333333333333333333333333333333333333333333333333
+5694 3333333333333333333333333333333333333333333333333333333
+5695 3333333333333333333333333333333333333333333333333333333
+5696 3333333333333333333333333333333333333333333333333333333
+5697 3333333333333333333333333333333333333333333333333333333
+5698 3333333333333333333333333333333333333333333333333333333
+5699 3333333333333333333333333333333333333333333333333333333
+5700 3333333333333333333333333333333333333333333333333333333
+5701 3333333333333333333333333333333333333333333333333333333
+5702 3333333333333333333333333333333333333333333333333333333
+5703 3333333333333333333333333333333333333333333333333333333
+5704 3333333333333333333333333333333333333333333333333333333
+5705 3333333333333333333333333333333333333333333333333333333
+5706 3333333333333333333333333333333333333333333333333333333
+5707 3333333333333333333333333333333333333333333333333333333
+5708 3333333333333333333333333333333333333333333333333333333
+5709 3333333333333333333333333333333333333333333333333333333
+5710 3333333333333333333333333333333333333333333333333333333
+5711 3333333333333333333333333333333333333333333333333333333
+5712 3333333333333333333333333333333333333333333333333333333
+5713 3333333333333333333333333333333333333333333333333333333
+5714 3333333333333333333333333333333333333333333333333333333
+5715 3333333333333333333333333333333333333333333333333333333
+5716 3333333333333333333333333333333333333333333333333333333
+5717 3333333333333333333333333333333333333333333333333333333
+5718 3333333333333333333333333333333333333333333333333333333
+5719 3333333333333333333333333333333333333333333333333333333
+5720 3333333333333333333333333333333333333333333333333333333
+5721 3333333333333333333333333333333333333333333333333333333
+5722 3333333333333333333333333333333333333333333333333333333
+5723 3333333333333333333333333333333333333333333333333333333
+5724 3333333333333333333333333333333333333333333333333333333
+5725 3333333333333333333333333333333333333333333333333333333
+5726 3333333333333333333333333333333333333333333333333333333
+5727 3333333333333333333333333333333333333333333333333333333
+5728 3333333333333333333333333333333333333333333333333333333
+5729 3333333333333333333333333333333333333333333333333333333
+5730 3333333333333333333333333333333333333333333333333333333
+5731 3333333333333333333333333333333333333333333333333333333
+5732 3333333333333333333333333333333333333333333333333333333
+5733 3333333333333333333333333333333333333333333333333333333
+5734 3333333333333333333333333333333333333333333333333333333
+5735 3333333333333333333333333333333333333333333333333333333
+5736 3333333333333333333333333333333333333333333333333333333
+5737 3333333333333333333333333333333333333333333333333333333
+5738 3333333333333333333333333333333333333333333333333333333
+5739 3333333333333333333333333333333333333333333333333333333
+5740 3333333333333333333333333333333333333333333333333333333
+5741 3333333333333333333333333333333333333333333333333333333
+5742 3333333333333333333333333333333333333333333333333333333
+5743 3333333333333333333333333333333333333333333333333333333
+5744 3333333333333333333333333333333333333333333333333333333
+5745 3333333333333333333333333333333333333333333333333333333
+5746 3333333333333333333333333333333333333333333333333333333
+5747 3333333333333333333333333333333333333333333333333333333
+5748 3333333333333333333333333333333333333333333333333333333
+5749 3333333333333333333333333333333333333333333333333333333
+5750 3333333333333333333333333333333333333333333333333333333
+5751 3333333333333333333333333333333333333333333333333333333
+5752 3333333333333333333333333333333333333333333333333333333
+5753 3333333333333333333333333333333333333333333333333333333
+5754 3333333333333333333333333333333333333333333333333333333
+5755 3333333333333333333333333333333333333333333333333333333
+5756 3333333333333333333333333333333333333333333333333333333
+5757 3333333333333333333333333333333333333333333333333333333
+5758 3333333333333333333333333333333333333333333333333333333
+5759 3333333333333333333333333333333333333333333333333333333
+5760 3333333333333333333333333333333333333333333333333333333
+5761 3333333333333333333333333333333333333333333333333333333
+5762 3333333333333333333333333333333333333333333333333333333
+5763 3333333333333333333333333333333333333333333333333333333
+5764 3333333333333333333333333333333333333333333333333333333
+5765 3333333333333333333333333333333333333333333333333333333
+5766 3333333333333333333333333333333333333333333333333333333
+5767 3333333333333333333333333333333333333333333333333333333
+5768 3333333333333333333333333333333333333333333333333333333
+5769 3333333333333333333333333333333333333333333333333333333
+5770 3333333333333333333333333333333333333333333333333333333
+5771 3333333333333333333333333333333333333333333333333333333
+5772 3333333333333333333333333333333333333333333333333333333
+5773 3333333333333333333333333333333333333333333333333333333
+5774 3333333333333333333333333333333333333333333333333333333
+5775 3333333333333333333333333333333333333333333333333333333
+5776 3333333333333333333333333333333333333333333333333333333
+5777 3333333333333333333333333333333333333333333333333333333
+5778 3333333333333333333333333333333333333333333333333333333
+5779 3333333333333333333333333333333333333333333333333333333
+5780 3333333333333333333333333333333333333333333333333333333
+5781 3333333333333333333333333333333333333333333333333333333
+5782 3333333333333333333333333333333333333333333333333333333
+5783 3333333333333333333333333333333333333333333333333333333
+5784 3333333333333333333333333333333333333333333333333333333
+5785 3333333333333333333333333333333333333333333333333333333
+5786 3333333333333333333333333333333333333333333333333333333
+5787 3333333333333333333333333333333333333333333333333333333
+5788 3333333333333333333333333333333333333333333333333333333
+5789 3333333333333333333333333333333333333333333333333333333
+5790 3333333333333333333333333333333333333333333333333333333
+5791 3333333333333333333333333333333333333333333333333333333
+5792 3333333333333333333333333333333333333333333333333333333
+5793 3333333333333333333333333333333333333333333333333333333
+5794 3333333333333333333333333333333333333333333333333333333
+5795 3333333333333333333333333333333333333333333333333333333
+5796 3333333333333333333333333333333333333333333333333333333
+5797 3333333333333333333333333333333333333333333333333333333
+5798 3333333333333333333333333333333333333333333333333333333
+5799 3333333333333333333333333333333333333333333333333333333
+5800 3333333333333333333333333333333333333333333333333333333
+5801 3333333333333333333333333333333333333333333333333333333
+5802 3333333333333333333333333333333333333333333333333333333
+5803 3333333333333333333333333333333333333333333333333333333
+5804 3333333333333333333333333333333333333333333333333333333
+5805 3333333333333333333333333333333333333333333333333333333
+5806 3333333333333333333333333333333333333333333333333333333
+5807 3333333333333333333333333333333333333333333333333333333
+5808 3333333333333333333333333333333333333333333333333333333
+5809 3333333333333333333333333333333333333333333333333333333
+5810 3333333333333333333333333333333333333333333333333333333
+5811 3333333333333333333333333333333333333333333333333333333
+5812 3333333333333333333333333333333333333333333333333333333
+5813 3333333333333333333333333333333333333333333333333333333
+5814 3333333333333333333333333333333333333333333333333333333
+5815 3333333333333333333333333333333333333333333333333333333
+5816 3333333333333333333333333333333333333333333333333333333
+5817 3333333333333333333333333333333333333333333333333333333
+5818 3333333333333333333333333333333333333333333333333333333
+5819 3333333333333333333333333333333333333333333333333333333
+5820 3333333333333333333333333333333333333333333333333333333
+5821 3333333333333333333333333333333333333333333333333333333
+5822 3333333333333333333333333333333333333333333333333333333
+5823 3333333333333333333333333333333333333333333333333333333
+5824 3333333333333333333333333333333333333333333333333333333
+5825 3333333333333333333333333333333333333333333333333333333
+5826 3333333333333333333333333333333333333333333333333333333
+5827 3333333333333333333333333333333333333333333333333333333
+5828 3333333333333333333333333333333333333333333333333333333
+5829 3333333333333333333333333333333333333333333333333333333
+5830 3333333333333333333333333333333333333333333333333333333
+5831 3333333333333333333333333333333333333333333333333333333
+5832 3333333333333333333333333333333333333333333333333333333
+5833 3333333333333333333333333333333333333333333333333333333
+5834 3333333333333333333333333333333333333333333333333333333
+5835 3333333333333333333333333333333333333333333333333333333
+5836 3333333333333333333333333333333333333333333333333333333
+5837 3333333333333333333333333333333333333333333333333333333
+5838 3333333333333333333333333333333333333333333333333333333
+5839 3333333333333333333333333333333333333333333333333333333
+5840 3333333333333333333333333333333333333333333333333333333
+5841 3333333333333333333333333333333333333333333333333333333
+5842 3333333333333333333333333333333333333333333333333333333
+5843 3333333333333333333333333333333333333333333333333333333
+5844 3333333333333333333333333333333333333333333333333333333
+5845 3333333333333333333333333333333333333333333333333333333
+5846 3333333333333333333333333333333333333333333333333333333
+5847 3333333333333333333333333333333333333333333333333333333
+5848 3333333333333333333333333333333333333333333333333333333
+5849 3333333333333333333333333333333333333333333333333333333
+5850 3333333333333333333333333333333333333333333333333333333
+5851 3333333333333333333333333333333333333333333333333333333
+5852 3333333333333333333333333333333333333333333333333333333
+5853 3333333333333333333333333333333333333333333333333333333
+5854 3333333333333333333333333333333333333333333333333333333
+5855 3333333333333333333333333333333333333333333333333333333
+5856 3333333333333333333333333333333333333333333333333333333
+5857 3333333333333333333333333333333333333333333333333333333
+5858 3333333333333333333333333333333333333333333333333333333
+5859 3333333333333333333333333333333333333333333333333333333
+5860 3333333333333333333333333333333333333333333333333333333
+5861 3333333333333333333333333333333333333333333333333333333
+5862 3333333333333333333333333333333333333333333333333333333
+5863 3333333333333333333333333333333333333333333333333333333
+5864 3333333333333333333333333333333333333333333333333333333
+5865 3333333333333333333333333333333333333333333333333333333
+5866 3333333333333333333333333333333333333333333333333333333
+5867 3333333333333333333333333333333333333333333333333333333
+5868 3333333333333333333333333333333333333333333333333333333
+5869 3333333333333333333333333333333333333333333333333333333
+5870 3333333333333333333333333333333333333333333333333333333
+5871 3333333333333333333333333333333333333333333333333333333
+5872 3333333333333333333333333333333333333333333333333333333
+5873 3333333333333333333333333333333333333333333333333333333
+5874 3333333333333333333333333333333333333333333333333333333
+5875 3333333333333333333333333333333333333333333333333333333
+5876 3333333333333333333333333333333333333333333333333333333
+5877 3333333333333333333333333333333333333333333333333333333
+5878 3333333333333333333333333333333333333333333333333333333
+5879 3333333333333333333333333333333333333333333333333333333
+5880 3333333333333333333333333333333333333333333333333333333
+5881 3333333333333333333333333333333333333333333333333333333
+5882 3333333333333333333333333333333333333333333333333333333
+5883 3333333333333333333333333333333333333333333333333333333
+5884 3333333333333333333333333333333333333333333333333333333
+5885 3333333333333333333333333333333333333333333333333333333
+5886 3333333333333333333333333333333333333333333333333333333
+5887 3333333333333333333333333333333333333333333333333333333
+5888 3333333333333333333333333333333333333333333333333333333
+5889 3333333333333333333333333333333333333333333333333333333
+5890 3333333333333333333333333333333333333333333333333333333
+5891 3333333333333333333333333333333333333333333333333333333
+5892 3333333333333333333333333333333333333333333333333333333
+5893 3333333333333333333333333333333333333333333333333333333
+5894 3333333333333333333333333333333333333333333333333333333
+5895 3333333333333333333333333333333333333333333333333333333
+5896 3333333333333333333333333333333333333333333333333333333
+5897 3333333333333333333333333333333333333333333333333333333
+5898 3333333333333333333333333333333333333333333333333333333
+5899 3333333333333333333333333333333333333333333333333333333
+5900 3333333333333333333333333333333333333333333333333333333
+5901 3333333333333333333333333333333333333333333333333333333
+5902 3333333333333333333333333333333333333333333333333333333
+5903 3333333333333333333333333333333333333333333333333333333
+5904 3333333333333333333333333333333333333333333333333333333
+5905 3333333333333333333333333333333333333333333333333333333
+5906 3333333333333333333333333333333333333333333333333333333
+5907 3333333333333333333333333333333333333333333333333333333
+5908 3333333333333333333333333333333333333333333333333333333
+5909 3333333333333333333333333333333333333333333333333333333
+5910 3333333333333333333333333333333333333333333333333333333
+5911 3333333333333333333333333333333333333333333333333333333
+5912 3333333333333333333333333333333333333333333333333333333
+5913 3333333333333333333333333333333333333333333333333333333
+5914 3333333333333333333333333333333333333333333333333333333
+5915 3333333333333333333333333333333333333333333333333333333
+5916 3333333333333333333333333333333333333333333333333333333
+5917 3333333333333333333333333333333333333333333333333333333
+5918 3333333333333333333333333333333333333333333333333333333
+5919 3333333333333333333333333333333333333333333333333333333
+5920 3333333333333333333333333333333333333333333333333333333
+5921 3333333333333333333333333333333333333333333333333333333
+5922 3333333333333333333333333333333333333333333333333333333
+5923 3333333333333333333333333333333333333333333333333333333
+5924 3333333333333333333333333333333333333333333333333333333
+5925 3333333333333333333333333333333333333333333333333333333
+5926 3333333333333333333333333333333333333333333333333333333
+5927 3333333333333333333333333333333333333333333333333333333
+5928 3333333333333333333333333333333333333333333333333333333
+5929 3333333333333333333333333333333333333333333333333333333
+5930 3333333333333333333333333333333333333333333333333333333
+5931 3333333333333333333333333333333333333333333333333333333
+5932 3333333333333333333333333333333333333333333333333333333
+5933 3333333333333333333333333333333333333333333333333333333
+5934 3333333333333333333333333333333333333333333333333333333
+5935 3333333333333333333333333333333333333333333333333333333
+5936 3333333333333333333333333333333333333333333333333333333
+5937 3333333333333333333333333333333333333333333333333333333
+5938 3333333333333333333333333333333333333333333333333333333
+5939 3333333333333333333333333333333333333333333333333333333
+5940 3333333333333333333333333333333333333333333333333333333
+5941 3333333333333333333333333333333333333333333333333333333
+5942 3333333333333333333333333333333333333333333333333333333
+5943 3333333333333333333333333333333333333333333333333333333
+5944 3333333333333333333333333333333333333333333333333333333
+5945 3333333333333333333333333333333333333333333333333333333
+5946 3333333333333333333333333333333333333333333333333333333
+5947 3333333333333333333333333333333333333333333333333333333
+5948 3333333333333333333333333333333333333333333333333333333
+5949 3333333333333333333333333333333333333333333333333333333
+5950 3333333333333333333333333333333333333333333333333333333
+5951 3333333333333333333333333333333333333333333333333333333
+5952 3333333333333333333333333333333333333333333333333333333
+5953 3333333333333333333333333333333333333333333333333333333
+5954 3333333333333333333333333333333333333333333333333333333
+5955 3333333333333333333333333333333333333333333333333333333
+5956 3333333333333333333333333333333333333333333333333333333
+5957 3333333333333333333333333333333333333333333333333333333
+5958 3333333333333333333333333333333333333333333333333333333
+5959 3333333333333333333333333333333333333333333333333333333
+5960 3333333333333333333333333333333333333333333333333333333
+5961 3333333333333333333333333333333333333333333333333333333
+5962 3333333333333333333333333333333333333333333333333333333
+5963 3333333333333333333333333333333333333333333333333333333
+5964 3333333333333333333333333333333333333333333333333333333
+5965 3333333333333333333333333333333333333333333333333333333
+5966 3333333333333333333333333333333333333333333333333333333
+5967 3333333333333333333333333333333333333333333333333333333
+5968 3333333333333333333333333333333333333333333333333333333
+5969 3333333333333333333333333333333333333333333333333333333
+5970 3333333333333333333333333333333333333333333333333333333
+5971 3333333333333333333333333333333333333333333333333333333
+5972 3333333333333333333333333333333333333333333333333333333
+5973 3333333333333333333333333333333333333333333333333333333
+5974 3333333333333333333333333333333333333333333333333333333
+5975 3333333333333333333333333333333333333333333333333333333
+5976 3333333333333333333333333333333333333333333333333333333
+5977 3333333333333333333333333333333333333333333333333333333
+5978 3333333333333333333333333333333333333333333333333333333
+5979 3333333333333333333333333333333333333333333333333333333
+5980 3333333333333333333333333333333333333333333333333333333
+5981 3333333333333333333333333333333333333333333333333333333
+5982 3333333333333333333333333333333333333333333333333333333
+5983 3333333333333333333333333333333333333333333333333333333
+5984 3333333333333333333333333333333333333333333333333333333
+5985 3333333333333333333333333333333333333333333333333333333
+5986 3333333333333333333333333333333333333333333333333333333
+5987 3333333333333333333333333333333333333333333333333333333
+5988 3333333333333333333333333333333333333333333333333333333
+5989 3333333333333333333333333333333333333333333333333333333
+5990 3333333333333333333333333333333333333333333333333333333
+5991 3333333333333333333333333333333333333333333333333333333
+5992 3333333333333333333333333333333333333333333333333333333
+5993 3333333333333333333333333333333333333333333333333333333
+5994 3333333333333333333333333333333333333333333333333333333
+5995 3333333333333333333333333333333333333333333333333333333
+5996 3333333333333333333333333333333333333333333333333333333
+5997 3333333333333333333333333333333333333333333333333333333
+5998 3333333333333333333333333333333333333333333333333333333
+5999 3333333333333333333333333333333333333333333333333333333
+6000 3333333333333333333333333333333333333333333333333333333
+6001 3333333333333333333333333333333333333333333333333333333
+6002 3333333333333333333333333333333333333333333333333333333
+6003 3333333333333333333333333333333333333333333333333333333
+6004 3333333333333333333333333333333333333333333333333333333
+6005 3333333333333333333333333333333333333333333333333333333
+6006 3333333333333333333333333333333333333333333333333333333
+6007 3333333333333333333333333333333333333333333333333333333
+6008 3333333333333333333333333333333333333333333333333333333
+6009 3333333333333333333333333333333333333333333333333333333
+6010 3333333333333333333333333333333333333333333333333333333
+6011 3333333333333333333333333333333333333333333333333333333
+6012 3333333333333333333333333333333333333333333333333333333
+6013 3333333333333333333333333333333333333333333333333333333
+6014 3333333333333333333333333333333333333333333333333333333
+6015 3333333333333333333333333333333333333333333333333333333
+6016 3333333333333333333333333333333333333333333333333333333
+6017 3333333333333333333333333333333333333333333333333333333
+6018 3333333333333333333333333333333333333333333333333333333
+6019 3333333333333333333333333333333333333333333333333333333
+6020 3333333333333333333333333333333333333333333333333333333
+6021 3333333333333333333333333333333333333333333333333333333
+6022 3333333333333333333333333333333333333333333333333333333
+6023 3333333333333333333333333333333333333333333333333333333
+6024 3333333333333333333333333333333333333333333333333333333
+6025 3333333333333333333333333333333333333333333333333333333
+6026 3333333333333333333333333333333333333333333333333333333
+6027 3333333333333333333333333333333333333333333333333333333
+6028 3333333333333333333333333333333333333333333333333333333
+6029 3333333333333333333333333333333333333333333333333333333
+6030 3333333333333333333333333333333333333333333333333333333
+6031 3333333333333333333333333333333333333333333333333333333
+6032 3333333333333333333333333333333333333333333333333333333
+6033 3333333333333333333333333333333333333333333333333333333
+6034 3333333333333333333333333333333333333333333333333333333
+6035 3333333333333333333333333333333333333333333333333333333
+6036 3333333333333333333333333333333333333333333333333333333
+6037 3333333333333333333333333333333333333333333333333333333
+6038 3333333333333333333333333333333333333333333333333333333
+6039 3333333333333333333333333333333333333333333333333333333
+6040 3333333333333333333333333333333333333333333333333333333
+6041 3333333333333333333333333333333333333333333333333333333
+6042 3333333333333333333333333333333333333333333333333333333
+6043 3333333333333333333333333333333333333333333333333333333
+6044 3333333333333333333333333333333333333333333333333333333
+6045 3333333333333333333333333333333333333333333333333333333
+6046 3333333333333333333333333333333333333333333333333333333
+6047 3333333333333333333333333333333333333333333333333333333
+6048 3333333333333333333333333333333333333333333333333333333
+6049 3333333333333333333333333333333333333333333333333333333
+6050 3333333333333333333333333333333333333333333333333333333
+6051 3333333333333333333333333333333333333333333333333333333
+6052 3333333333333333333333333333333333333333333333333333333
+6053 3333333333333333333333333333333333333333333333333333333
+6054 3333333333333333333333333333333333333333333333333333333
+6055 3333333333333333333333333333333333333333333333333333333
+6056 3333333333333333333333333333333333333333333333333333333
+6057 3333333333333333333333333333333333333333333333333333333
+6058 3333333333333333333333333333333333333333333333333333333
+6059 3333333333333333333333333333333333333333333333333333333
+6060 3333333333333333333333333333333333333333333333333333333
+6061 3333333333333333333333333333333333333333333333333333333
+6062 3333333333333333333333333333333333333333333333333333333
+6063 3333333333333333333333333333333333333333333333333333333
+6064 3333333333333333333333333333333333333333333333333333333
+6065 3333333333333333333333333333333333333333333333333333333
+6066 3333333333333333333333333333333333333333333333333333333
+6067 3333333333333333333333333333333333333333333333333333333
+6068 3333333333333333333333333333333333333333333333333333333
+6069 3333333333333333333333333333333333333333333333333333333
+6070 3333333333333333333333333333333333333333333333333333333
+6071 3333333333333333333333333333333333333333333333333333333
+6072 3333333333333333333333333333333333333333333333333333333
+6073 3333333333333333333333333333333333333333333333333333333
+6074 3333333333333333333333333333333333333333333333333333333
+6075 3333333333333333333333333333333333333333333333333333333
+6076 3333333333333333333333333333333333333333333333333333333
+6077 3333333333333333333333333333333333333333333333333333333
+6078 3333333333333333333333333333333333333333333333333333333
+6079 3333333333333333333333333333333333333333333333333333333
+6080 3333333333333333333333333333333333333333333333333333333
+6081 3333333333333333333333333333333333333333333333333333333
+6082 3333333333333333333333333333333333333333333333333333333
+6083 3333333333333333333333333333333333333333333333333333333
+6084 3333333333333333333333333333333333333333333333333333333
+6085 3333333333333333333333333333333333333333333333333333333
+6086 3333333333333333333333333333333333333333333333333333333
+6087 3333333333333333333333333333333333333333333333333333333
+6088 3333333333333333333333333333333333333333333333333333333
+6089 3333333333333333333333333333333333333333333333333333333
+6090 3333333333333333333333333333333333333333333333333333333
+6091 3333333333333333333333333333333333333333333333333333333
+6092 3333333333333333333333333333333333333333333333333333333
+6093 3333333333333333333333333333333333333333333333333333333
+6094 3333333333333333333333333333333333333333333333333333333
+6095 3333333333333333333333333333333333333333333333333333333
+6096 3333333333333333333333333333333333333333333333333333333
+6097 3333333333333333333333333333333333333333333333333333333
+6098 3333333333333333333333333333333333333333333333333333333
+6099 3333333333333333333333333333333333333333333333333333333
+6100 3333333333333333333333333333333333333333333333333333333
+6101 3333333333333333333333333333333333333333333333333333333
+6102 3333333333333333333333333333333333333333333333333333333
+6103 3333333333333333333333333333333333333333333333333333333
+6104 3333333333333333333333333333333333333333333333333333333
+6105 3333333333333333333333333333333333333333333333333333333
+6106 3333333333333333333333333333333333333333333333333333333
+6107 3333333333333333333333333333333333333333333333333333333
+6108 3333333333333333333333333333333333333333333333333333333
+6109 3333333333333333333333333333333333333333333333333333333
+6110 3333333333333333333333333333333333333333333333333333333
+6111 3333333333333333333333333333333333333333333333333333333
+6112 3333333333333333333333333333333333333333333333333333333
+6113 3333333333333333333333333333333333333333333333333333333
+6114 3333333333333333333333333333333333333333333333333333333
+6115 3333333333333333333333333333333333333333333333333333333
+6116 3333333333333333333333333333333333333333333333333333333
+6117 3333333333333333333333333333333333333333333333333333333
+6118 3333333333333333333333333333333333333333333333333333333
+6119 3333333333333333333333333333333333333333333333333333333
+6120 3333333333333333333333333333333333333333333333333333333
+6121 3333333333333333333333333333333333333333333333333333333
+6122 3333333333333333333333333333333333333333333333333333333
+6123 3333333333333333333333333333333333333333333333333333333
+6124 3333333333333333333333333333333333333333333333333333333
+6125 3333333333333333333333333333333333333333333333333333333
+6126 3333333333333333333333333333333333333333333333333333333
+6127 3333333333333333333333333333333333333333333333333333333
+6128 3333333333333333333333333333333333333333333333333333333
+6129 3333333333333333333333333333333333333333333333333333333
+6130 3333333333333333333333333333333333333333333333333333333
+6131 3333333333333333333333333333333333333333333333333333333
+6132 3333333333333333333333333333333333333333333333333333333
+6133 3333333333333333333333333333333333333333333333333333333
+6134 3333333333333333333333333333333333333333333333333333333
+6135 3333333333333333333333333333333333333333333333333333333
+6136 3333333333333333333333333333333333333333333333333333333
+6137 3333333333333333333333333333333333333333333333333333333
+6138 3333333333333333333333333333333333333333333333333333333
+6139 3333333333333333333333333333333333333333333333333333333
+6140 3333333333333333333333333333333333333333333333333333333
+6141 3333333333333333333333333333333333333333333333333333333
+6142 3333333333333333333333333333333333333333333333333333333
+6143 3333333333333333333333333333333333333333333333333333333
+6144 3333333333333333333333333333333333333333333333333333333
+6145 3333333333333333333333333333333333333333333333333333333
+6146 3333333333333333333333333333333333333333333333333333333
+6147 3333333333333333333333333333333333333333333333333333333
+6148 3333333333333333333333333333333333333333333333333333333
+6149 3333333333333333333333333333333333333333333333333333333
+6150 3333333333333333333333333333333333333333333333333333333
+6151 3333333333333333333333333333333333333333333333333333333
+6152 3333333333333333333333333333333333333333333333333333333
+6153 3333333333333333333333333333333333333333333333333333333
+6154 3333333333333333333333333333333333333333333333333333333
+6155 3333333333333333333333333333333333333333333333333333333
+6156 3333333333333333333333333333333333333333333333333333333
+6157 3333333333333333333333333333333333333333333333333333333
+6158 3333333333333333333333333333333333333333333333333333333
+6159 3333333333333333333333333333333333333333333333333333333
+6160 3333333333333333333333333333333333333333333333333333333
+6161 3333333333333333333333333333333333333333333333333333333
+6162 3333333333333333333333333333333333333333333333333333333
+6163 3333333333333333333333333333333333333333333333333333333
+6164 3333333333333333333333333333333333333333333333333333333
+6165 3333333333333333333333333333333333333333333333333333333
+6166 3333333333333333333333333333333333333333333333333333333
+6167 3333333333333333333333333333333333333333333333333333333
+6168 3333333333333333333333333333333333333333333333333333333
+6169 3333333333333333333333333333333333333333333333333333333
+6170 3333333333333333333333333333333333333333333333333333333
+6171 3333333333333333333333333333333333333333333333333333333
+6172 3333333333333333333333333333333333333333333333333333333
+6173 3333333333333333333333333333333333333333333333333333333
+6174 3333333333333333333333333333333333333333333333333333333
+6175 3333333333333333333333333333333333333333333333333333333
+6176 3333333333333333333333333333333333333333333333333333333
+6177 3333333333333333333333333333333333333333333333333333333
+6178 3333333333333333333333333333333333333333333333333333333
+6179 3333333333333333333333333333333333333333333333333333333
+6180 3333333333333333333333333333333333333333333333333333333
+6181 3333333333333333333333333333333333333333333333333333333
+6182 3333333333333333333333333333333333333333333333333333333
+6183 3333333333333333333333333333333333333333333333333333333
+6184 3333333333333333333333333333333333333333333333333333333
+6185 3333333333333333333333333333333333333333333333333333333
+6186 3333333333333333333333333333333333333333333333333333333
+6187 3333333333333333333333333333333333333333333333333333333
+6188 3333333333333333333333333333333333333333333333333333333
+6189 3333333333333333333333333333333333333333333333333333333
+6190 3333333333333333333333333333333333333333333333333333333
+6191 3333333333333333333333333333333333333333333333333333333
+6192 3333333333333333333333333333333333333333333333333333333
+6193 3333333333333333333333333333333333333333333333333333333
+6194 3333333333333333333333333333333333333333333333333333333
+6195 3333333333333333333333333333333333333333333333333333333
+6196 3333333333333333333333333333333333333333333333333333333
+6197 3333333333333333333333333333333333333333333333333333333
+6198 3333333333333333333333333333333333333333333333333333333
+6199 3333333333333333333333333333333333333333333333333333333
+6200 3333333333333333333333333333333333333333333333333333333
+6201 3333333333333333333333333333333333333333333333333333333
+6202 3333333333333333333333333333333333333333333333333333333
+6203 3333333333333333333333333333333333333333333333333333333
+6204 3333333333333333333333333333333333333333333333333333333
+6205 3333333333333333333333333333333333333333333333333333333
+6206 3333333333333333333333333333333333333333333333333333333
+6207 3333333333333333333333333333333333333333333333333333333
+6208 3333333333333333333333333333333333333333333333333333333
+6209 3333333333333333333333333333333333333333333333333333333
+6210 3333333333333333333333333333333333333333333333333333333
+6211 3333333333333333333333333333333333333333333333333333333
+6212 3333333333333333333333333333333333333333333333333333333
+6213 3333333333333333333333333333333333333333333333333333333
+6214 3333333333333333333333333333333333333333333333333333333
+6215 3333333333333333333333333333333333333333333333333333333
+6216 3333333333333333333333333333333333333333333333333333333
+6217 3333333333333333333333333333333333333333333333333333333
+6218 3333333333333333333333333333333333333333333333333333333
+6219 3333333333333333333333333333333333333333333333333333333
+6220 3333333333333333333333333333333333333333333333333333333
+6221 3333333333333333333333333333333333333333333333333333333
+6222 3333333333333333333333333333333333333333333333333333333
+6223 3333333333333333333333333333333333333333333333333333333
+6224 3333333333333333333333333333333333333333333333333333333
+6225 3333333333333333333333333333333333333333333333333333333
+6226 3333333333333333333333333333333333333333333333333333333
+6227 3333333333333333333333333333333333333333333333333333333
+6228 3333333333333333333333333333333333333333333333333333333
+6229 3333333333333333333333333333333333333333333333333333333
+6230 3333333333333333333333333333333333333333333333333333333
+6231 3333333333333333333333333333333333333333333333333333333
+6232 3333333333333333333333333333333333333333333333333333333
+6233 3333333333333333333333333333333333333333333333333333333
+6234 3333333333333333333333333333333333333333333333333333333
+6235 3333333333333333333333333333333333333333333333333333333
+6236 3333333333333333333333333333333333333333333333333333333
+6237 3333333333333333333333333333333333333333333333333333333
+6238 3333333333333333333333333333333333333333333333333333333
+6239 3333333333333333333333333333333333333333333333333333333
+6240 3333333333333333333333333333333333333333333333333333333
+6241 3333333333333333333333333333333333333333333333333333333
+6242 3333333333333333333333333333333333333333333333333333333
+6243 3333333333333333333333333333333333333333333333333333333
+6244 3333333333333333333333333333333333333333333333333333333
+6245 3333333333333333333333333333333333333333333333333333333
+6246 3333333333333333333333333333333333333333333333333333333
+6247 3333333333333333333333333333333333333333333333333333333
+6248 3333333333333333333333333333333333333333333333333333333
+6249 3333333333333333333333333333333333333333333333333333333
+6250 3333333333333333333333333333333333333333333333333333333
+6251 3333333333333333333333333333333333333333333333333333333
+6252 3333333333333333333333333333333333333333333333333333333
+6253 3333333333333333333333333333333333333333333333333333333
+6254 3333333333333333333333333333333333333333333333333333333
+6255 3333333333333333333333333333333333333333333333333333333
+6256 3333333333333333333333333333333333333333333333333333333
+6257 3333333333333333333333333333333333333333333333333333333
+6258 3333333333333333333333333333333333333333333333333333333
+6259 3333333333333333333333333333333333333333333333333333333
+6260 3333333333333333333333333333333333333333333333333333333
+6261 3333333333333333333333333333333333333333333333333333333
+6262 3333333333333333333333333333333333333333333333333333333
+6263 3333333333333333333333333333333333333333333333333333333
+6264 3333333333333333333333333333333333333333333333333333333
+6265 3333333333333333333333333333333333333333333333333333333
+6266 3333333333333333333333333333333333333333333333333333333
+6267 3333333333333333333333333333333333333333333333333333333
+6268 3333333333333333333333333333333333333333333333333333333
+6269 3333333333333333333333333333333333333333333333333333333
+6270 3333333333333333333333333333333333333333333333333333333
+6271 3333333333333333333333333333333333333333333333333333333
+6272 3333333333333333333333333333333333333333333333333333333
+6273 3333333333333333333333333333333333333333333333333333333
+6274 3333333333333333333333333333333333333333333333333333333
+6275 3333333333333333333333333333333333333333333333333333333
+6276 3333333333333333333333333333333333333333333333333333333
+6277 3333333333333333333333333333333333333333333333333333333
+6278 3333333333333333333333333333333333333333333333333333333
+6279 3333333333333333333333333333333333333333333333333333333
+6280 3333333333333333333333333333333333333333333333333333333
+6281 3333333333333333333333333333333333333333333333333333333
+6282 3333333333333333333333333333333333333333333333333333333
+6283 3333333333333333333333333333333333333333333333333333333
+6284 3333333333333333333333333333333333333333333333333333333
+6285 3333333333333333333333333333333333333333333333333333333
+6286 3333333333333333333333333333333333333333333333333333333
+6287 3333333333333333333333333333333333333333333333333333333
+6288 3333333333333333333333333333333333333333333333333333333
+6289 3333333333333333333333333333333333333333333333333333333
+6290 3333333333333333333333333333333333333333333333333333333
+6291 3333333333333333333333333333333333333333333333333333333
+6292 3333333333333333333333333333333333333333333333333333333
+6293 3333333333333333333333333333333333333333333333333333333
+6294 3333333333333333333333333333333333333333333333333333333
+6295 3333333333333333333333333333333333333333333333333333333
+6296 3333333333333333333333333333333333333333333333333333333
+6297 3333333333333333333333333333333333333333333333333333333
+6298 3333333333333333333333333333333333333333333333333333333
+6299 3333333333333333333333333333333333333333333333333333333
+6300 3333333333333333333333333333333333333333333333333333333
+6301 3333333333333333333333333333333333333333333333333333333
+6302 3333333333333333333333333333333333333333333333333333333
+6303 3333333333333333333333333333333333333333333333333333333
+6304 3333333333333333333333333333333333333333333333333333333
+6305 3333333333333333333333333333333333333333333333333333333
+6306 3333333333333333333333333333333333333333333333333333333
+6307 3333333333333333333333333333333333333333333333333333333
+6308 3333333333333333333333333333333333333333333333333333333
+6309 3333333333333333333333333333333333333333333333333333333
+6310 3333333333333333333333333333333333333333333333333333333
+6311 3333333333333333333333333333333333333333333333333333333
+6312 3333333333333333333333333333333333333333333333333333333
+6313 3333333333333333333333333333333333333333333333333333333
+6314 3333333333333333333333333333333333333333333333333333333
+6315 3333333333333333333333333333333333333333333333333333333
+6316 3333333333333333333333333333333333333333333333333333333
+6317 3333333333333333333333333333333333333333333333333333333
+6318 3333333333333333333333333333333333333333333333333333333
+6319 3333333333333333333333333333333333333333333333333333333
+6320 3333333333333333333333333333333333333333333333333333333
+6321 3333333333333333333333333333333333333333333333333333333
+6322 3333333333333333333333333333333333333333333333333333333
+6323 3333333333333333333333333333333333333333333333333333333
+6324 3333333333333333333333333333333333333333333333333333333
+6325 3333333333333333333333333333333333333333333333333333333
+6326 3333333333333333333333333333333333333333333333333333333
+6327 3333333333333333333333333333333333333333333333333333333
+6328 3333333333333333333333333333333333333333333333333333333
+6329 3333333333333333333333333333333333333333333333333333333
+6330 3333333333333333333333333333333333333333333333333333333
+6331 3333333333333333333333333333333333333333333333333333333
+6332 3333333333333333333333333333333333333333333333333333333
+6333 3333333333333333333333333333333333333333333333333333333
+6334 3333333333333333333333333333333333333333333333333333333
+6335 3333333333333333333333333333333333333333333333333333333
+6336 3333333333333333333333333333333333333333333333333333333
+6337 3333333333333333333333333333333333333333333333333333333
+6338 3333333333333333333333333333333333333333333333333333333
+6339 3333333333333333333333333333333333333333333333333333333
+6340 3333333333333333333333333333333333333333333333333333333
+6341 3333333333333333333333333333333333333333333333333333333
+6342 3333333333333333333333333333333333333333333333333333333
+6343 3333333333333333333333333333333333333333333333333333333
+6344 3333333333333333333333333333333333333333333333333333333
+6345 3333333333333333333333333333333333333333333333333333333
+6346 3333333333333333333333333333333333333333333333333333333
+6347 3333333333333333333333333333333333333333333333333333333
+6348 3333333333333333333333333333333333333333333333333333333
+6349 3333333333333333333333333333333333333333333333333333333
+6350 3333333333333333333333333333333333333333333333333333333
+6351 3333333333333333333333333333333333333333333333333333333
+6352 3333333333333333333333333333333333333333333333333333333
+6353 3333333333333333333333333333333333333333333333333333333
+6354 3333333333333333333333333333333333333333333333333333333
+6355 3333333333333333333333333333333333333333333333333333333
+6356 3333333333333333333333333333333333333333333333333333333
+6357 3333333333333333333333333333333333333333333333333333333
+6358 3333333333333333333333333333333333333333333333333333333
+6359 3333333333333333333333333333333333333333333333333333333
+6360 3333333333333333333333333333333333333333333333333333333
+6361 3333333333333333333333333333333333333333333333333333333
+6362 3333333333333333333333333333333333333333333333333333333
+6363 3333333333333333333333333333333333333333333333333333333
+6364 3333333333333333333333333333333333333333333333333333333
+6365 3333333333333333333333333333333333333333333333333333333
+6366 3333333333333333333333333333333333333333333333333333333
+6367 3333333333333333333333333333333333333333333333333333333
+6368 3333333333333333333333333333333333333333333333333333333
+6369 3333333333333333333333333333333333333333333333333333333
+6370 3333333333333333333333333333333333333333333333333333333
+6371 3333333333333333333333333333333333333333333333333333333
+6372 3333333333333333333333333333333333333333333333333333333
+6373 3333333333333333333333333333333333333333333333333333333
+6374 3333333333333333333333333333333333333333333333333333333
+6375 3333333333333333333333333333333333333333333333333333333
+6376 3333333333333333333333333333333333333333333333333333333
+6377 3333333333333333333333333333333333333333333333333333333
+6378 3333333333333333333333333333333333333333333333333333333
+6379 3333333333333333333333333333333333333333333333333333333
+6380 3333333333333333333333333333333333333333333333333333333
+6381 3333333333333333333333333333333333333333333333333333333
+6382 3333333333333333333333333333333333333333333333333333333
+6383 3333333333333333333333333333333333333333333333333333333
+6384 3333333333333333333333333333333333333333333333333333333
+6385 3333333333333333333333333333333333333333333333333333333
+6386 3333333333333333333333333333333333333333333333333333333
+6387 3333333333333333333333333333333333333333333333333333333
+6388 3333333333333333333333333333333333333333333333333333333
+6389 3333333333333333333333333333333333333333333333333333333
+6390 3333333333333333333333333333333333333333333333333333333
+6391 3333333333333333333333333333333333333333333333333333333
+6392 3333333333333333333333333333333333333333333333333333333
+6393 3333333333333333333333333333333333333333333333333333333
+6394 3333333333333333333333333333333333333333333333333333333
+6395 3333333333333333333333333333333333333333333333333333333
+6396 3333333333333333333333333333333333333333333333333333333
+6397 3333333333333333333333333333333333333333333333333333333
+6398 3333333333333333333333333333333333333333333333333333333
+6399 3333333333333333333333333333333333333333333333333333333
+6400 3333333333333333333333333333333333333333333333333333333
+6401 3333333333333333333333333333333333333333333333333333333
+6402 3333333333333333333333333333333333333333333333333333333
+6403 3333333333333333333333333333333333333333333333333333333
+6404 3333333333333333333333333333333333333333333333333333333
+6405 3333333333333333333333333333333333333333333333333333333
+6406 3333333333333333333333333333333333333333333333333333333
+6407 3333333333333333333333333333333333333333333333333333333
+6408 3333333333333333333333333333333333333333333333333333333
+6409 3333333333333333333333333333333333333333333333333333333
+6410 3333333333333333333333333333333333333333333333333333333
+6411 3333333333333333333333333333333333333333333333333333333
+6412 3333333333333333333333333333333333333333333333333333333
+6413 3333333333333333333333333333333333333333333333333333333
+6414 3333333333333333333333333333333333333333333333333333333
+6415 3333333333333333333333333333333333333333333333333333333
+6416 3333333333333333333333333333333333333333333333333333333
+6417 3333333333333333333333333333333333333333333333333333333
+6418 3333333333333333333333333333333333333333333333333333333
+6419 3333333333333333333333333333333333333333333333333333333
+6420 3333333333333333333333333333333333333333333333333333333
+6421 3333333333333333333333333333333333333333333333333333333
+6422 3333333333333333333333333333333333333333333333333333333
+6423 3333333333333333333333333333333333333333333333333333333
+6424 3333333333333333333333333333333333333333333333333333333
+6425 3333333333333333333333333333333333333333333333333333333
+6426 3333333333333333333333333333333333333333333333333333333
+6427 3333333333333333333333333333333333333333333333333333333
+6428 3333333333333333333333333333333333333333333333333333333
+6429 3333333333333333333333333333333333333333333333333333333
+6430 3333333333333333333333333333333333333333333333333333333
+6431 3333333333333333333333333333333333333333333333333333333
+6432 3333333333333333333333333333333333333333333333333333333
+6433 3333333333333333333333333333333333333333333333333333333
+6434 3333333333333333333333333333333333333333333333333333333
+6435 3333333333333333333333333333333333333333333333333333333
+6436 3333333333333333333333333333333333333333333333333333333
+6437 3333333333333333333333333333333333333333333333333333333
+6438 3333333333333333333333333333333333333333333333333333333
+6439 3333333333333333333333333333333333333333333333333333333
+6440 3333333333333333333333333333333333333333333333333333333
+6441 3333333333333333333333333333333333333333333333333333333
+6442 3333333333333333333333333333333333333333333333333333333
+6443 3333333333333333333333333333333333333333333333333333333
+6444 3333333333333333333333333333333333333333333333333333333
+6445 3333333333333333333333333333333333333333333333333333333
+6446 3333333333333333333333333333333333333333333333333333333
+6447 3333333333333333333333333333333333333333333333333333333
+6448 3333333333333333333333333333333333333333333333333333333
+6449 3333333333333333333333333333333333333333333333333333333
+6450 3333333333333333333333333333333333333333333333333333333
+6451 3333333333333333333333333333333333333333333333333333333
+6452 3333333333333333333333333333333333333333333333333333333
+6453 3333333333333333333333333333333333333333333333333333333
+6454 3333333333333333333333333333333333333333333333333333333
+6455 3333333333333333333333333333333333333333333333333333333
+6456 3333333333333333333333333333333333333333333333333333333
+6457 3333333333333333333333333333333333333333333333333333333
+6458 3333333333333333333333333333333333333333333333333333333
+6459 3333333333333333333333333333333333333333333333333333333
+6460 3333333333333333333333333333333333333333333333333333333
+6461 3333333333333333333333333333333333333333333333333333333
+6462 3333333333333333333333333333333333333333333333333333333
+6463 3333333333333333333333333333333333333333333333333333333
+6464 3333333333333333333333333333333333333333333333333333333
+6465 3333333333333333333333333333333333333333333333333333333
+6466 3333333333333333333333333333333333333333333333333333333
+6467 3333333333333333333333333333333333333333333333333333333
+6468 3333333333333333333333333333333333333333333333333333333
+6469 3333333333333333333333333333333333333333333333333333333
+6470 3333333333333333333333333333333333333333333333333333333
+6471 3333333333333333333333333333333333333333333333333333333
+6472 3333333333333333333333333333333333333333333333333333333
+6473 3333333333333333333333333333333333333333333333333333333
+6474 3333333333333333333333333333333333333333333333333333333
+6475 3333333333333333333333333333333333333333333333333333333
+6476 3333333333333333333333333333333333333333333333333333333
+6477 3333333333333333333333333333333333333333333333333333333
+6478 3333333333333333333333333333333333333333333333333333333
+6479 3333333333333333333333333333333333333333333333333333333
+6480 3333333333333333333333333333333333333333333333333333333
+6481 3333333333333333333333333333333333333333333333333333333
+6482 3333333333333333333333333333333333333333333333333333333
+6483 3333333333333333333333333333333333333333333333333333333
+6484 3333333333333333333333333333333333333333333333333333333
+6485 3333333333333333333333333333333333333333333333333333333
+6486 3333333333333333333333333333333333333333333333333333333
+6487 3333333333333333333333333333333333333333333333333333333
+6488 3333333333333333333333333333333333333333333333333333333
+6489 3333333333333333333333333333333333333333333333333333333
+6490 3333333333333333333333333333333333333333333333333333333
+6491 3333333333333333333333333333333333333333333333333333333
+6492 3333333333333333333333333333333333333333333333333333333
+6493 3333333333333333333333333333333333333333333333333333333
+6494 3333333333333333333333333333333333333333333333333333333
+6495 3333333333333333333333333333333333333333333333333333333
+6496 3333333333333333333333333333333333333333333333333333333
+6497 3333333333333333333333333333333333333333333333333333333
+6498 3333333333333333333333333333333333333333333333333333333
+6499 3333333333333333333333333333333333333333333333333333333
+6500 3333333333333333333333333333333333333333333333333333333
+6501 3333333333333333333333333333333333333333333333333333333
+6502 3333333333333333333333333333333333333333333333333333333
+6503 3333333333333333333333333333333333333333333333333333333
+6504 3333333333333333333333333333333333333333333333333333333
+6505 3333333333333333333333333333333333333333333333333333333
+6506 3333333333333333333333333333333333333333333333333333333
+6507 3333333333333333333333333333333333333333333333333333333
+6508 3333333333333333333333333333333333333333333333333333333
+6509 3333333333333333333333333333333333333333333333333333333
+6510 3333333333333333333333333333333333333333333333333333333
+6511 3333333333333333333333333333333333333333333333333333333
+6512 3333333333333333333333333333333333333333333333333333333
+6513 3333333333333333333333333333333333333333333333333333333
+6514 3333333333333333333333333333333333333333333333333333333
+6515 3333333333333333333333333333333333333333333333333333333
+6516 3333333333333333333333333333333333333333333333333333333
+6517 3333333333333333333333333333333333333333333333333333333
+6518 3333333333333333333333333333333333333333333333333333333
+6519 3333333333333333333333333333333333333333333333333333333
+6520 3333333333333333333333333333333333333333333333333333333
+6521 3333333333333333333333333333333333333333333333333333333
+6522 3333333333333333333333333333333333333333333333333333333
+6523 3333333333333333333333333333333333333333333333333333333
+6524 3333333333333333333333333333333333333333333333333333333
+6525 3333333333333333333333333333333333333333333333333333333
+6526 3333333333333333333333333333333333333333333333333333333
+6527 3333333333333333333333333333333333333333333333333333333
+6528 3333333333333333333333333333333333333333333333333333333
+6529 3333333333333333333333333333333333333333333333333333333
+6530 3333333333333333333333333333333333333333333333333333333
+6531 3333333333333333333333333333333333333333333333333333333
+6532 3333333333333333333333333333333333333333333333333333333
+6533 3333333333333333333333333333333333333333333333333333333
+6534 3333333333333333333333333333333333333333333333333333333
+6535 3333333333333333333333333333333333333333333333333333333
+6536 3333333333333333333333333333333333333333333333333333333
+6537 3333333333333333333333333333333333333333333333333333333
+6538 3333333333333333333333333333333333333333333333333333333
+6539 3333333333333333333333333333333333333333333333333333333
+6540 3333333333333333333333333333333333333333333333333333333
+6541 3333333333333333333333333333333333333333333333333333333
+6542 3333333333333333333333333333333333333333333333333333333
+6543 3333333333333333333333333333333333333333333333333333333
+6544 3333333333333333333333333333333333333333333333333333333
+6545 3333333333333333333333333333333333333333333333333333333
+6546 3333333333333333333333333333333333333333333333333333333
+6547 3333333333333333333333333333333333333333333333333333333
+6548 3333333333333333333333333333333333333333333333333333333
+6549 3333333333333333333333333333333333333333333333333333333
+6550 3333333333333333333333333333333333333333333333333333333
+6551 3333333333333333333333333333333333333333333333333333333
+6552 3333333333333333333333333333333333333333333333333333333
+6553 3333333333333333333333333333333333333333333333333333333
+6554 3333333333333333333333333333333333333333333333333333333
+6555 3333333333333333333333333333333333333333333333333333333
+6556 3333333333333333333333333333333333333333333333333333333
+6557 3333333333333333333333333333333333333333333333333333333
+6558 3333333333333333333333333333333333333333333333333333333
+6559 3333333333333333333333333333333333333333333333333333333
+6560 3333333333333333333333333333333333333333333333333333333
+6561 3333333333333333333333333333333333333333333333333333333
+6562 3333333333333333333333333333333333333333333333333333333
+6563 3333333333333333333333333333333333333333333333333333333
+6564 3333333333333333333333333333333333333333333333333333333
+6565 3333333333333333333333333333333333333333333333333333333
+6566 3333333333333333333333333333333333333333333333333333333
+6567 3333333333333333333333333333333333333333333333333333333
+6568 3333333333333333333333333333333333333333333333333333333
+6569 3333333333333333333333333333333333333333333333333333333
+6570 3333333333333333333333333333333333333333333333333333333
+6571 3333333333333333333333333333333333333333333333333333333
+6572 3333333333333333333333333333333333333333333333333333333
+6573 3333333333333333333333333333333333333333333333333333333
+6574 3333333333333333333333333333333333333333333333333333333
+6575 3333333333333333333333333333333333333333333333333333333
+6576 3333333333333333333333333333333333333333333333333333333
+6577 3333333333333333333333333333333333333333333333333333333
+6578 3333333333333333333333333333333333333333333333333333333
+6579 3333333333333333333333333333333333333333333333333333333
+6580 3333333333333333333333333333333333333333333333333333333
+6581 3333333333333333333333333333333333333333333333333333333
+6582 3333333333333333333333333333333333333333333333333333333
+6583 3333333333333333333333333333333333333333333333333333333
+6584 3333333333333333333333333333333333333333333333333333333
+6585 3333333333333333333333333333333333333333333333333333333
+6586 3333333333333333333333333333333333333333333333333333333
+6587 3333333333333333333333333333333333333333333333333333333
+6588 3333333333333333333333333333333333333333333333333333333
+6589 3333333333333333333333333333333333333333333333333333333
+6590 3333333333333333333333333333333333333333333333333333333
+6591 3333333333333333333333333333333333333333333333333333333
+6592 3333333333333333333333333333333333333333333333333333333
+6593 3333333333333333333333333333333333333333333333333333333
+6594 3333333333333333333333333333333333333333333333333333333
+6595 3333333333333333333333333333333333333333333333333333333
+6596 3333333333333333333333333333333333333333333333333333333
+6597 3333333333333333333333333333333333333333333333333333333
+6598 3333333333333333333333333333333333333333333333333333333
+6599 3333333333333333333333333333333333333333333333333333333
+6600 3333333333333333333333333333333333333333333333333333333
+6601 3333333333333333333333333333333333333333333333333333333
+6602 3333333333333333333333333333333333333333333333333333333
+6603 3333333333333333333333333333333333333333333333333333333
+6604 3333333333333333333333333333333333333333333333333333333
+6605 3333333333333333333333333333333333333333333333333333333
+6606 3333333333333333333333333333333333333333333333333333333
+6607 3333333333333333333333333333333333333333333333333333333
+6608 3333333333333333333333333333333333333333333333333333333
+6609 3333333333333333333333333333333333333333333333333333333
+6610 3333333333333333333333333333333333333333333333333333333
+6611 3333333333333333333333333333333333333333333333333333333
+6612 3333333333333333333333333333333333333333333333333333333
+6613 3333333333333333333333333333333333333333333333333333333
+6614 3333333333333333333333333333333333333333333333333333333
+6615 3333333333333333333333333333333333333333333333333333333
+6616 3333333333333333333333333333333333333333333333333333333
+6617 3333333333333333333333333333333333333333333333333333333
+6618 3333333333333333333333333333333333333333333333333333333
+6619 3333333333333333333333333333333333333333333333333333333
+6620 3333333333333333333333333333333333333333333333333333333
+6621 3333333333333333333333333333333333333333333333333333333
+6622 3333333333333333333333333333333333333333333333333333333
+6623 3333333333333333333333333333333333333333333333333333333
+6624 3333333333333333333333333333333333333333333333333333333
+6625 3333333333333333333333333333333333333333333333333333333
+6626 3333333333333333333333333333333333333333333333333333333
+6627 3333333333333333333333333333333333333333333333333333333
+6628 3333333333333333333333333333333333333333333333333333333
+6629 3333333333333333333333333333333333333333333333333333333
+6630 3333333333333333333333333333333333333333333333333333333
+6631 3333333333333333333333333333333333333333333333333333333
+6632 3333333333333333333333333333333333333333333333333333333
+6633 3333333333333333333333333333333333333333333333333333333
+6634 3333333333333333333333333333333333333333333333333333333
+6635 3333333333333333333333333333333333333333333333333333333
+6636 3333333333333333333333333333333333333333333333333333333
+6637 3333333333333333333333333333333333333333333333333333333
+6638 3333333333333333333333333333333333333333333333333333333
+6639 3333333333333333333333333333333333333333333333333333333
+6640 3333333333333333333333333333333333333333333333333333333
+6641 3333333333333333333333333333333333333333333333333333333
+6642 3333333333333333333333333333333333333333333333333333333
+6643 3333333333333333333333333333333333333333333333333333333
+6644 3333333333333333333333333333333333333333333333333333333
+6645 3333333333333333333333333333333333333333333333333333333
+6646 3333333333333333333333333333333333333333333333333333333
+6647 3333333333333333333333333333333333333333333333333333333
+6648 3333333333333333333333333333333333333333333333333333333
+6649 3333333333333333333333333333333333333333333333333333333
+6650 3333333333333333333333333333333333333333333333333333333
+6651 3333333333333333333333333333333333333333333333333333333
+6652 3333333333333333333333333333333333333333333333333333333
+6653 3333333333333333333333333333333333333333333333333333333
+6654 3333333333333333333333333333333333333333333333333333333
+6655 3333333333333333333333333333333333333333333333333333333
+6656 3333333333333333333333333333333333333333333333333333333
+6657 3333333333333333333333333333333333333333333333333333333
+6658 3333333333333333333333333333333333333333333333333333333
+6659 3333333333333333333333333333333333333333333333333333333
+6660 3333333333333333333333333333333333333333333333333333333
+6661 3333333333333333333333333333333333333333333333333333333
+6662 3333333333333333333333333333333333333333333333333333333
+6663 3333333333333333333333333333333333333333333333333333333
+6664 3333333333333333333333333333333333333333333333333333333
+6665 3333333333333333333333333333333333333333333333333333333
+6666 3333333333333333333333333333333333333333333333333333333
+6667 3333333333333333333333333333333333333333333333333333333
+6668 3333333333333333333333333333333333333333333333333333333
+6669 3333333333333333333333333333333333333333333333333333333
+6670 3333333333333333333333333333333333333333333333333333333
+6671 3333333333333333333333333333333333333333333333333333333
+6672 3333333333333333333333333333333333333333333333333333333
+6673 3333333333333333333333333333333333333333333333333333333
+6674 3333333333333333333333333333333333333333333333333333333
+6675 3333333333333333333333333333333333333333333333333333333
+6676 3333333333333333333333333333333333333333333333333333333
+6677 3333333333333333333333333333333333333333333333333333333
+6678 3333333333333333333333333333333333333333333333333333333
+6679 3333333333333333333333333333333333333333333333333333333
+6680 3333333333333333333333333333333333333333333333333333333
+6681 3333333333333333333333333333333333333333333333333333333
+6682 3333333333333333333333333333333333333333333333333333333
+6683 3333333333333333333333333333333333333333333333333333333
+6684 3333333333333333333333333333333333333333333333333333333
+6685 3333333333333333333333333333333333333333333333333333333
+6686 3333333333333333333333333333333333333333333333333333333
+6687 3333333333333333333333333333333333333333333333333333333
+6688 3333333333333333333333333333333333333333333333333333333
+6689 3333333333333333333333333333333333333333333333333333333
+6690 3333333333333333333333333333333333333333333333333333333
+6691 3333333333333333333333333333333333333333333333333333333
+6692 3333333333333333333333333333333333333333333333333333333
+6693 3333333333333333333333333333333333333333333333333333333
+6694 3333333333333333333333333333333333333333333333333333333
+6695 3333333333333333333333333333333333333333333333333333333
+6696 3333333333333333333333333333333333333333333333333333333
+6697 3333333333333333333333333333333333333333333333333333333
+6698 3333333333333333333333333333333333333333333333333333333
+6699 3333333333333333333333333333333333333333333333333333333
+6700 3333333333333333333333333333333333333333333333333333333
+6701 3333333333333333333333333333333333333333333333333333333
+6702 3333333333333333333333333333333333333333333333333333333
+6703 3333333333333333333333333333333333333333333333333333333
+6704 3333333333333333333333333333333333333333333333333333333
+6705 3333333333333333333333333333333333333333333333333333333
+6706 3333333333333333333333333333333333333333333333333333333
+6707 3333333333333333333333333333333333333333333333333333333
+6708 3333333333333333333333333333333333333333333333333333333
+6709 3333333333333333333333333333333333333333333333333333333
+6710 3333333333333333333333333333333333333333333333333333333
+6711 3333333333333333333333333333333333333333333333333333333
+6712 3333333333333333333333333333333333333333333333333333333
+6713 3333333333333333333333333333333333333333333333333333333
+6714 3333333333333333333333333333333333333333333333333333333
+6715 3333333333333333333333333333333333333333333333333333333
+6716 3333333333333333333333333333333333333333333333333333333
+6717 3333333333333333333333333333333333333333333333333333333
+6718 3333333333333333333333333333333333333333333333333333333
+6719 3333333333333333333333333333333333333333333333333333333
+6720 3333333333333333333333333333333333333333333333333333333
+6721 3333333333333333333333333333333333333333333333333333333
+6722 3333333333333333333333333333333333333333333333333333333
+6723 3333333333333333333333333333333333333333333333333333333
+6724 3333333333333333333333333333333333333333333333333333333
+6725 3333333333333333333333333333333333333333333333333333333
+6726 3333333333333333333333333333333333333333333333333333333
+6727 3333333333333333333333333333333333333333333333333333333
+6728 3333333333333333333333333333333333333333333333333333333
+6729 3333333333333333333333333333333333333333333333333333333
+6730 3333333333333333333333333333333333333333333333333333333
+6731 3333333333333333333333333333333333333333333333333333333
+6732 3333333333333333333333333333333333333333333333333333333
+6733 3333333333333333333333333333333333333333333333333333333
+6734 3333333333333333333333333333333333333333333333333333333
+6735 3333333333333333333333333333333333333333333333333333333
+6736 3333333333333333333333333333333333333333333333333333333
+6737 3333333333333333333333333333333333333333333333333333333
+6738 3333333333333333333333333333333333333333333333333333333
+6739 3333333333333333333333333333333333333333333333333333333
+6740 3333333333333333333333333333333333333333333333333333333
+6741 3333333333333333333333333333333333333333333333333333333
+6742 3333333333333333333333333333333333333333333333333333333
+6743 3333333333333333333333333333333333333333333333333333333
+6744 3333333333333333333333333333333333333333333333333333333
+6745 3333333333333333333333333333333333333333333333333333333
+6746 3333333333333333333333333333333333333333333333333333333
+6747 3333333333333333333333333333333333333333333333333333333
+6748 3333333333333333333333333333333333333333333333333333333
+6749 3333333333333333333333333333333333333333333333333333333
+6750 3333333333333333333333333333333333333333333333333333333
+6751 3333333333333333333333333333333333333333333333333333333
+6752 3333333333333333333333333333333333333333333333333333333
+6753 3333333333333333333333333333333333333333333333333333333
+6754 3333333333333333333333333333333333333333333333333333333
+6755 3333333333333333333333333333333333333333333333333333333
+6756 3333333333333333333333333333333333333333333333333333333
+6757 3333333333333333333333333333333333333333333333333333333
+6758 3333333333333333333333333333333333333333333333333333333
+6759 3333333333333333333333333333333333333333333333333333333
+6760 3333333333333333333333333333333333333333333333333333333
+6761 3333333333333333333333333333333333333333333333333333333
+6762 3333333333333333333333333333333333333333333333333333333
+6763 3333333333333333333333333333333333333333333333333333333
+6764 3333333333333333333333333333333333333333333333333333333
+6765 3333333333333333333333333333333333333333333333333333333
+6766 3333333333333333333333333333333333333333333333333333333
+6767 3333333333333333333333333333333333333333333333333333333
+6768 3333333333333333333333333333333333333333333333333333333
+6769 3333333333333333333333333333333333333333333333333333333
+6770 3333333333333333333333333333333333333333333333333333333
+6771 3333333333333333333333333333333333333333333333333333333
+6772 3333333333333333333333333333333333333333333333333333333
+6773 3333333333333333333333333333333333333333333333333333333
+6774 3333333333333333333333333333333333333333333333333333333
+6775 3333333333333333333333333333333333333333333333333333333
+6776 3333333333333333333333333333333333333333333333333333333
+6777 3333333333333333333333333333333333333333333333333333333
+6778 3333333333333333333333333333333333333333333333333333333
+6779 3333333333333333333333333333333333333333333333333333333
+6780 3333333333333333333333333333333333333333333333333333333
+6781 3333333333333333333333333333333333333333333333333333333
+6782 3333333333333333333333333333333333333333333333333333333
+6783 3333333333333333333333333333333333333333333333333333333
+6784 3333333333333333333333333333333333333333333333333333333
+6785 3333333333333333333333333333333333333333333333333333333
+6786 3333333333333333333333333333333333333333333333333333333
+6787 3333333333333333333333333333333333333333333333333333333
+6788 3333333333333333333333333333333333333333333333333333333
+6789 3333333333333333333333333333333333333333333333333333333
+6790 3333333333333333333333333333333333333333333333333333333
+6791 3333333333333333333333333333333333333333333333333333333
+6792 3333333333333333333333333333333333333333333333333333333
+6793 3333333333333333333333333333333333333333333333333333333
+6794 3333333333333333333333333333333333333333333333333333333
+6795 3333333333333333333333333333333333333333333333333333333
+6796 3333333333333333333333333333333333333333333333333333333
+6797 3333333333333333333333333333333333333333333333333333333
+6798 3333333333333333333333333333333333333333333333333333333
+6799 3333333333333333333333333333333333333333333333333333333
+6800 3333333333333333333333333333333333333333333333333333333
+6801 3333333333333333333333333333333333333333333333333333333
+6802 3333333333333333333333333333333333333333333333333333333
+6803 3333333333333333333333333333333333333333333333333333333
+6804 3333333333333333333333333333333333333333333333333333333
+6805 3333333333333333333333333333333333333333333333333333333
+6806 3333333333333333333333333333333333333333333333333333333
+6807 3333333333333333333333333333333333333333333333333333333
+6808 3333333333333333333333333333333333333333333333333333333
+6809 3333333333333333333333333333333333333333333333333333333
+6810 3333333333333333333333333333333333333333333333333333333
+6811 3333333333333333333333333333333333333333333333333333333
+6812 3333333333333333333333333333333333333333333333333333333
+6813 3333333333333333333333333333333333333333333333333333333
+6814 3333333333333333333333333333333333333333333333333333333
+6815 3333333333333333333333333333333333333333333333333333333
+6816 3333333333333333333333333333333333333333333333333333333
+6817 3333333333333333333333333333333333333333333333333333333
+6818 3333333333333333333333333333333333333333333333333333333
+6819 3333333333333333333333333333333333333333333333333333333
+6820 3333333333333333333333333333333333333333333333333333333
+6821 3333333333333333333333333333333333333333333333333333333
+6822 3333333333333333333333333333333333333333333333333333333
+6823 3333333333333333333333333333333333333333333333333333333
+6824 3333333333333333333333333333333333333333333333333333333
+6825 3333333333333333333333333333333333333333333333333333333
+6826 3333333333333333333333333333333333333333333333333333333
+6827 3333333333333333333333333333333333333333333333333333333
+6828 3333333333333333333333333333333333333333333333333333333
+6829 3333333333333333333333333333333333333333333333333333333
+6830 3333333333333333333333333333333333333333333333333333333
+6831 3333333333333333333333333333333333333333333333333333333
+6832 3333333333333333333333333333333333333333333333333333333
+6833 3333333333333333333333333333333333333333333333333333333
+6834 3333333333333333333333333333333333333333333333333333333
+6835 3333333333333333333333333333333333333333333333333333333
+6836 3333333333333333333333333333333333333333333333333333333
+6837 3333333333333333333333333333333333333333333333333333333
+6838 3333333333333333333333333333333333333333333333333333333
+6839 3333333333333333333333333333333333333333333333333333333
+6840 3333333333333333333333333333333333333333333333333333333
+6841 3333333333333333333333333333333333333333333333333333333
+6842 3333333333333333333333333333333333333333333333333333333
+6843 3333333333333333333333333333333333333333333333333333333
+6844 3333333333333333333333333333333333333333333333333333333
+6845 3333333333333333333333333333333333333333333333333333333
+6846 3333333333333333333333333333333333333333333333333333333
+6847 3333333333333333333333333333333333333333333333333333333
+6848 3333333333333333333333333333333333333333333333333333333
+6849 3333333333333333333333333333333333333333333333333333333
+6850 3333333333333333333333333333333333333333333333333333333
+6851 3333333333333333333333333333333333333333333333333333333
+6852 3333333333333333333333333333333333333333333333333333333
+6853 3333333333333333333333333333333333333333333333333333333
+6854 3333333333333333333333333333333333333333333333333333333
+6855 3333333333333333333333333333333333333333333333333333333
+6856 3333333333333333333333333333333333333333333333333333333
+6857 3333333333333333333333333333333333333333333333333333333
+6858 3333333333333333333333333333333333333333333333333333333
+6859 3333333333333333333333333333333333333333333333333333333
+6860 3333333333333333333333333333333333333333333333333333333
+6861 3333333333333333333333333333333333333333333333333333333
+6862 3333333333333333333333333333333333333333333333333333333
+6863 3333333333333333333333333333333333333333333333333333333
+6864 3333333333333333333333333333333333333333333333333333333
+6865 3333333333333333333333333333333333333333333333333333333
+6866 3333333333333333333333333333333333333333333333333333333
+6867 3333333333333333333333333333333333333333333333333333333
+6868 3333333333333333333333333333333333333333333333333333333
+6869 3333333333333333333333333333333333333333333333333333333
+6870 3333333333333333333333333333333333333333333333333333333
+6871 3333333333333333333333333333333333333333333333333333333
+6872 3333333333333333333333333333333333333333333333333333333
+6873 3333333333333333333333333333333333333333333333333333333
+6874 3333333333333333333333333333333333333333333333333333333
+6875 3333333333333333333333333333333333333333333333333333333
+6876 3333333333333333333333333333333333333333333333333333333
+6877 3333333333333333333333333333333333333333333333333333333
+6878 3333333333333333333333333333333333333333333333333333333
+6879 3333333333333333333333333333333333333333333333333333333
+6880 3333333333333333333333333333333333333333333333333333333
+6881 3333333333333333333333333333333333333333333333333333333
+6882 3333333333333333333333333333333333333333333333333333333
+6883 3333333333333333333333333333333333333333333333333333333
+6884 3333333333333333333333333333333333333333333333333333333
+6885 3333333333333333333333333333333333333333333333333333333
+6886 3333333333333333333333333333333333333333333333333333333
+6887 3333333333333333333333333333333333333333333333333333333
+6888 3333333333333333333333333333333333333333333333333333333
+6889 3333333333333333333333333333333333333333333333333333333
+6890 3333333333333333333333333333333333333333333333333333333
+6891 3333333333333333333333333333333333333333333333333333333
+6892 3333333333333333333333333333333333333333333333333333333
+6893 3333333333333333333333333333333333333333333333333333333
+6894 3333333333333333333333333333333333333333333333333333333
+6895 3333333333333333333333333333333333333333333333333333333
+6896 3333333333333333333333333333333333333333333333333333333
+6897 3333333333333333333333333333333333333333333333333333333
+6898 3333333333333333333333333333333333333333333333333333333
+6899 3333333333333333333333333333333333333333333333333333333
+6900 3333333333333333333333333333333333333333333333333333333
+6901 3333333333333333333333333333333333333333333333333333333
+6902 3333333333333333333333333333333333333333333333333333333
+6903 3333333333333333333333333333333333333333333333333333333
+6904 3333333333333333333333333333333333333333333333333333333
+6905 3333333333333333333333333333333333333333333333333333333
+6906 3333333333333333333333333333333333333333333333333333333
+6907 3333333333333333333333333333333333333333333333333333333
+6908 3333333333333333333333333333333333333333333333333333333
+6909 3333333333333333333333333333333333333333333333333333333
+6910 3333333333333333333333333333333333333333333333333333333
+6911 3333333333333333333333333333333333333333333333333333333
+6912 3333333333333333333333333333333333333333333333333333333
+6913 3333333333333333333333333333333333333333333333333333333
+6914 3333333333333333333333333333333333333333333333333333333
+6915 3333333333333333333333333333333333333333333333333333333
+6916 3333333333333333333333333333333333333333333333333333333
+6917 3333333333333333333333333333333333333333333333333333333
+6918 3333333333333333333333333333333333333333333333333333333
+6919 3333333333333333333333333333333333333333333333333333333
+6920 3333333333333333333333333333333333333333333333333333333
+6921 3333333333333333333333333333333333333333333333333333333
+6922 3333333333333333333333333333333333333333333333333333333
+6923 3333333333333333333333333333333333333333333333333333333
+6924 3333333333333333333333333333333333333333333333333333333
+6925 3333333333333333333333333333333333333333333333333333333
+6926 3333333333333333333333333333333333333333333333333333333
+6927 3333333333333333333333333333333333333333333333333333333
+6928 3333333333333333333333333333333333333333333333333333333
+6929 3333333333333333333333333333333333333333333333333333333
+6930 3333333333333333333333333333333333333333333333333333333
+6931 3333333333333333333333333333333333333333333333333333333
+6932 3333333333333333333333333333333333333333333333333333333
+6933 3333333333333333333333333333333333333333333333333333333
+6934 3333333333333333333333333333333333333333333333333333333
+6935 3333333333333333333333333333333333333333333333333333333
+6936 3333333333333333333333333333333333333333333333333333333
+6937 3333333333333333333333333333333333333333333333333333333
+6938 3333333333333333333333333333333333333333333333333333333
+6939 3333333333333333333333333333333333333333333333333333333
+6940 3333333333333333333333333333333333333333333333333333333
+6941 3333333333333333333333333333333333333333333333333333333
+6942 3333333333333333333333333333333333333333333333333333333
+6943 3333333333333333333333333333333333333333333333333333333
+6944 3333333333333333333333333333333333333333333333333333333
+6945 3333333333333333333333333333333333333333333333333333333
+6946 3333333333333333333333333333333333333333333333333333333
+6947 3333333333333333333333333333333333333333333333333333333
+6948 3333333333333333333333333333333333333333333333333333333
+6949 3333333333333333333333333333333333333333333333333333333
+6950 3333333333333333333333333333333333333333333333333333333
+6951 3333333333333333333333333333333333333333333333333333333
+6952 3333333333333333333333333333333333333333333333333333333
+6953 3333333333333333333333333333333333333333333333333333333
+6954 3333333333333333333333333333333333333333333333333333333
+6955 3333333333333333333333333333333333333333333333333333333
+6956 3333333333333333333333333333333333333333333333333333333
+6957 3333333333333333333333333333333333333333333333333333333
+6958 3333333333333333333333333333333333333333333333333333333
+6959 3333333333333333333333333333333333333333333333333333333
+6960 3333333333333333333333333333333333333333333333333333333
+6961 3333333333333333333333333333333333333333333333333333333
+6962 3333333333333333333333333333333333333333333333333333333
+6963 3333333333333333333333333333333333333333333333333333333
+6964 3333333333333333333333333333333333333333333333333333333
+6965 3333333333333333333333333333333333333333333333333333333
+6966 3333333333333333333333333333333333333333333333333333333
+6967 3333333333333333333333333333333333333333333333333333333
+6968 3333333333333333333333333333333333333333333333333333333
+6969 3333333333333333333333333333333333333333333333333333333
+6970 3333333333333333333333333333333333333333333333333333333
+6971 3333333333333333333333333333333333333333333333333333333
+6972 3333333333333333333333333333333333333333333333333333333
+6973 3333333333333333333333333333333333333333333333333333333
+6974 3333333333333333333333333333333333333333333333333333333
+6975 3333333333333333333333333333333333333333333333333333333
+6976 3333333333333333333333333333333333333333333333333333333
+6977 3333333333333333333333333333333333333333333333333333333
+6978 3333333333333333333333333333333333333333333333333333333
+6979 3333333333333333333333333333333333333333333333333333333
+6980 3333333333333333333333333333333333333333333333333333333
+6981 3333333333333333333333333333333333333333333333333333333
+6982 3333333333333333333333333333333333333333333333333333333
+6983 3333333333333333333333333333333333333333333333333333333
+6984 3333333333333333333333333333333333333333333333333333333
+6985 3333333333333333333333333333333333333333333333333333333
+6986 3333333333333333333333333333333333333333333333333333333
+6987 3333333333333333333333333333333333333333333333333333333
+6988 3333333333333333333333333333333333333333333333333333333
+6989 3333333333333333333333333333333333333333333333333333333
+6990 3333333333333333333333333333333333333333333333333333333
+6991 3333333333333333333333333333333333333333333333333333333
+6992 3333333333333333333333333333333333333333333333333333333
+6993 3333333333333333333333333333333333333333333333333333333
+6994 3333333333333333333333333333333333333333333333333333333
+6995 3333333333333333333333333333333333333333333333333333333
+6996 3333333333333333333333333333333333333333333333333333333
+6997 3333333333333333333333333333333333333333333333333333333
+6998 3333333333333333333333333333333333333333333333333333333
+6999 3333333333333333333333333333333333333333333333333333333
+7000 3333333333333333333333333333333333333333333333333333333
+7001 3333333333333333333333333333333333333333333333333333333
+7002 3333333333333333333333333333333333333333333333333333333
+7003 3333333333333333333333333333333333333333333333333333333
+7004 3333333333333333333333333333333333333333333333333333333
+7005 3333333333333333333333333333333333333333333333333333333
+7006 3333333333333333333333333333333333333333333333333333333
+7007 3333333333333333333333333333333333333333333333333333333
+7008 3333333333333333333333333333333333333333333333333333333
+7009 3333333333333333333333333333333333333333333333333333333
+7010 3333333333333333333333333333333333333333333333333333333
+7011 3333333333333333333333333333333333333333333333333333333
+7012 3333333333333333333333333333333333333333333333333333333
+7013 3333333333333333333333333333333333333333333333333333333
+7014 3333333333333333333333333333333333333333333333333333333
+7015 3333333333333333333333333333333333333333333333333333333
+7016 3333333333333333333333333333333333333333333333333333333
+7017 3333333333333333333333333333333333333333333333333333333
+7018 3333333333333333333333333333333333333333333333333333333
+7019 3333333333333333333333333333333333333333333333333333333
+7020 3333333333333333333333333333333333333333333333333333333
+7021 3333333333333333333333333333333333333333333333333333333
+7022 3333333333333333333333333333333333333333333333333333333
+7023 3333333333333333333333333333333333333333333333333333333
+7024 3333333333333333333333333333333333333333333333333333333
+7025 3333333333333333333333333333333333333333333333333333333
+7026 3333333333333333333333333333333333333333333333333333333
+7027 3333333333333333333333333333333333333333333333333333333
+7028 3333333333333333333333333333333333333333333333333333333
+7029 3333333333333333333333333333333333333333333333333333333
+7030 3333333333333333333333333333333333333333333333333333333
+7031 3333333333333333333333333333333333333333333333333333333
+7032 3333333333333333333333333333333333333333333333333333333
+7033 3333333333333333333333333333333333333333333333333333333
+7034 3333333333333333333333333333333333333333333333333333333
+7035 3333333333333333333333333333333333333333333333333333333
+7036 3333333333333333333333333333333333333333333333333333333
+7037 3333333333333333333333333333333333333333333333333333333
+7038 3333333333333333333333333333333333333333333333333333333
+7039 3333333333333333333333333333333333333333333333333333333
+7040 3333333333333333333333333333333333333333333333333333333
+7041 3333333333333333333333333333333333333333333333333333333
+7042 3333333333333333333333333333333333333333333333333333333
+7043 3333333333333333333333333333333333333333333333333333333
+7044 3333333333333333333333333333333333333333333333333333333
+7045 3333333333333333333333333333333333333333333333333333333
+7046 3333333333333333333333333333333333333333333333333333333
+7047 3333333333333333333333333333333333333333333333333333333
+7048 3333333333333333333333333333333333333333333333333333333
+7049 3333333333333333333333333333333333333333333333333333333
+7050 3333333333333333333333333333333333333333333333333333333
+7051 3333333333333333333333333333333333333333333333333333333
+7052 3333333333333333333333333333333333333333333333333333333
+7053 3333333333333333333333333333333333333333333333333333333
+7054 3333333333333333333333333333333333333333333333333333333
+7055 3333333333333333333333333333333333333333333333333333333
+7056 3333333333333333333333333333333333333333333333333333333
+7057 3333333333333333333333333333333333333333333333333333333
+7058 3333333333333333333333333333333333333333333333333333333
+7059 3333333333333333333333333333333333333333333333333333333
+7060 3333333333333333333333333333333333333333333333333333333
+7061 3333333333333333333333333333333333333333333333333333333
+7062 3333333333333333333333333333333333333333333333333333333
+7063 3333333333333333333333333333333333333333333333333333333
+7064 3333333333333333333333333333333333333333333333333333333
+7065 3333333333333333333333333333333333333333333333333333333
+7066 3333333333333333333333333333333333333333333333333333333
+7067 3333333333333333333333333333333333333333333333333333333
+7068 3333333333333333333333333333333333333333333333333333333
+7069 3333333333333333333333333333333333333333333333333333333
+7070 3333333333333333333333333333333333333333333333333333333
+7071 3333333333333333333333333333333333333333333333333333333
+7072 3333333333333333333333333333333333333333333333333333333
+7073 3333333333333333333333333333333333333333333333333333333
+7074 3333333333333333333333333333333333333333333333333333333
+7075 3333333333333333333333333333333333333333333333333333333
+7076 3333333333333333333333333333333333333333333333333333333
+7077 3333333333333333333333333333333333333333333333333333333
+7078 3333333333333333333333333333333333333333333333333333333
+7079 3333333333333333333333333333333333333333333333333333333
+7080 3333333333333333333333333333333333333333333333333333333
+7081 3333333333333333333333333333333333333333333333333333333
+7082 3333333333333333333333333333333333333333333333333333333
+7083 3333333333333333333333333333333333333333333333333333333
+7084 3333333333333333333333333333333333333333333333333333333
+7085 3333333333333333333333333333333333333333333333333333333
+7086 3333333333333333333333333333333333333333333333333333333
+7087 3333333333333333333333333333333333333333333333333333333
+7088 3333333333333333333333333333333333333333333333333333333
+7089 3333333333333333333333333333333333333333333333333333333
+7090 3333333333333333333333333333333333333333333333333333333
+7091 3333333333333333333333333333333333333333333333333333333
+7092 3333333333333333333333333333333333333333333333333333333
+7093 3333333333333333333333333333333333333333333333333333333
+7094 3333333333333333333333333333333333333333333333333333333
+7095 3333333333333333333333333333333333333333333333333333333
+7096 3333333333333333333333333333333333333333333333333333333
+7097 3333333333333333333333333333333333333333333333333333333
+7098 3333333333333333333333333333333333333333333333333333333
+7099 3333333333333333333333333333333333333333333333333333333
+7100 3333333333333333333333333333333333333333333333333333333
+7101 3333333333333333333333333333333333333333333333333333333
+7102 3333333333333333333333333333333333333333333333333333333
+7103 3333333333333333333333333333333333333333333333333333333
+7104 3333333333333333333333333333333333333333333333333333333
+7105 3333333333333333333333333333333333333333333333333333333
+7106 3333333333333333333333333333333333333333333333333333333
+7107 3333333333333333333333333333333333333333333333333333333
+7108 3333333333333333333333333333333333333333333333333333333
+7109 3333333333333333333333333333333333333333333333333333333
+7110 3333333333333333333333333333333333333333333333333333333
+7111 3333333333333333333333333333333333333333333333333333333
+7112 3333333333333333333333333333333333333333333333333333333
+7113 3333333333333333333333333333333333333333333333333333333
+7114 3333333333333333333333333333333333333333333333333333333
+7115 3333333333333333333333333333333333333333333333333333333
+7116 3333333333333333333333333333333333333333333333333333333
+7117 3333333333333333333333333333333333333333333333333333333
+7118 3333333333333333333333333333333333333333333333333333333
+7119 3333333333333333333333333333333333333333333333333333333
+7120 3333333333333333333333333333333333333333333333333333333
+7121 3333333333333333333333333333333333333333333333333333333
+7122 3333333333333333333333333333333333333333333333333333333
+7123 3333333333333333333333333333333333333333333333333333333
+7124 3333333333333333333333333333333333333333333333333333333
+7125 3333333333333333333333333333333333333333333333333333333
+7126 3333333333333333333333333333333333333333333333333333333
+7127 3333333333333333333333333333333333333333333333333333333
+7128 3333333333333333333333333333333333333333333333333333333
+7129 3333333333333333333333333333333333333333333333333333333
+7130 3333333333333333333333333333333333333333333333333333333
+7131 3333333333333333333333333333333333333333333333333333333
+7132 3333333333333333333333333333333333333333333333333333333
+7133 3333333333333333333333333333333333333333333333333333333
+7134 3333333333333333333333333333333333333333333333333333333
+7135 3333333333333333333333333333333333333333333333333333333
+7136 3333333333333333333333333333333333333333333333333333333
+7137 3333333333333333333333333333333333333333333333333333333
+7138 3333333333333333333333333333333333333333333333333333333
+7139 3333333333333333333333333333333333333333333333333333333
+7140 3333333333333333333333333333333333333333333333333333333
+7141 3333333333333333333333333333333333333333333333333333333
+7142 3333333333333333333333333333333333333333333333333333333
+7143 3333333333333333333333333333333333333333333333333333333
+7144 3333333333333333333333333333333333333333333333333333333
+7145 3333333333333333333333333333333333333333333333333333333
+7146 3333333333333333333333333333333333333333333333333333333
+7147 3333333333333333333333333333333333333333333333333333333
+7148 3333333333333333333333333333333333333333333333333333333
+7149 3333333333333333333333333333333333333333333333333333333
+7150 3333333333333333333333333333333333333333333333333333333
+7151 3333333333333333333333333333333333333333333333333333333
+7152 3333333333333333333333333333333333333333333333333333333
+7153 3333333333333333333333333333333333333333333333333333333
+7154 3333333333333333333333333333333333333333333333333333333
+7155 3333333333333333333333333333333333333333333333333333333
+7156 3333333333333333333333333333333333333333333333333333333
+7157 3333333333333333333333333333333333333333333333333333333
+7158 3333333333333333333333333333333333333333333333333333333
+7159 3333333333333333333333333333333333333333333333333333333
+7160 3333333333333333333333333333333333333333333333333333333
+7161 3333333333333333333333333333333333333333333333333333333
+7162 3333333333333333333333333333333333333333333333333333333
+7163 3333333333333333333333333333333333333333333333333333333
+7164 3333333333333333333333333333333333333333333333333333333
+7165 3333333333333333333333333333333333333333333333333333333
+7166 3333333333333333333333333333333333333333333333333333333
+7167 3333333333333333333333333333333333333333333333333333333
+7168 3333333333333333333333333333333333333333333333333333333
+7169 3333333333333333333333333333333333333333333333333333333
+7170 3333333333333333333333333333333333333333333333333333333
+7171 3333333333333333333333333333333333333333333333333333333
+7172 3333333333333333333333333333333333333333333333333333333
+7173 3333333333333333333333333333333333333333333333333333333
+7174 3333333333333333333333333333333333333333333333333333333
+7175 3333333333333333333333333333333333333333333333333333333
+7176 3333333333333333333333333333333333333333333333333333333
+7177 3333333333333333333333333333333333333333333333333333333
+7178 3333333333333333333333333333333333333333333333333333333
+7179 3333333333333333333333333333333333333333333333333333333
+7180 3333333333333333333333333333333333333333333333333333333
+7181 3333333333333333333333333333333333333333333333333333333
+7182 3333333333333333333333333333333333333333333333333333333
+7183 3333333333333333333333333333333333333333333333333333333
+7184 3333333333333333333333333333333333333333333333333333333
+7185 3333333333333333333333333333333333333333333333333333333
+7186 3333333333333333333333333333333333333333333333333333333
+7187 3333333333333333333333333333333333333333333333333333333
+7188 3333333333333333333333333333333333333333333333333333333
+7189 3333333333333333333333333333333333333333333333333333333
+7190 3333333333333333333333333333333333333333333333333333333
+7191 3333333333333333333333333333333333333333333333333333333
+7192 3333333333333333333333333333333333333333333333333333333
+7193 3333333333333333333333333333333333333333333333333333333
+7194 3333333333333333333333333333333333333333333333333333333
+7195 3333333333333333333333333333333333333333333333333333333
+7196 3333333333333333333333333333333333333333333333333333333
+7197 3333333333333333333333333333333333333333333333333333333
+7198 3333333333333333333333333333333333333333333333333333333
+7199 3333333333333333333333333333333333333333333333333333333
+7200 3333333333333333333333333333333333333333333333333333333
+7201 3333333333333333333333333333333333333333333333333333333
+7202 3333333333333333333333333333333333333333333333333333333
+7203 3333333333333333333333333333333333333333333333333333333
+7204 3333333333333333333333333333333333333333333333333333333
+7205 3333333333333333333333333333333333333333333333333333333
+7206 3333333333333333333333333333333333333333333333333333333
+7207 3333333333333333333333333333333333333333333333333333333
+7208 3333333333333333333333333333333333333333333333333333333
+7209 3333333333333333333333333333333333333333333333333333333
+7210 3333333333333333333333333333333333333333333333333333333
+7211 3333333333333333333333333333333333333333333333333333333
+7212 3333333333333333333333333333333333333333333333333333333
+7213 3333333333333333333333333333333333333333333333333333333
+7214 3333333333333333333333333333333333333333333333333333333
+7215 3333333333333333333333333333333333333333333333333333333
+7216 3333333333333333333333333333333333333333333333333333333
+7217 3333333333333333333333333333333333333333333333333333333
+7218 3333333333333333333333333333333333333333333333333333333
+7219 3333333333333333333333333333333333333333333333333333333
+7220 3333333333333333333333333333333333333333333333333333333
+7221 3333333333333333333333333333333333333333333333333333333
+7222 3333333333333333333333333333333333333333333333333333333
+7223 3333333333333333333333333333333333333333333333333333333
+7224 3333333333333333333333333333333333333333333333333333333
+7225 3333333333333333333333333333333333333333333333333333333
+7226 3333333333333333333333333333333333333333333333333333333
+7227 3333333333333333333333333333333333333333333333333333333
+7228 3333333333333333333333333333333333333333333333333333333
+7229 3333333333333333333333333333333333333333333333333333333
+7230 3333333333333333333333333333333333333333333333333333333
+7231 3333333333333333333333333333333333333333333333333333333
+7232 3333333333333333333333333333333333333333333333333333333
+7233 3333333333333333333333333333333333333333333333333333333
+7234 3333333333333333333333333333333333333333333333333333333
+7235 3333333333333333333333333333333333333333333333333333333
+7236 3333333333333333333333333333333333333333333333333333333
+7237 3333333333333333333333333333333333333333333333333333333
+7238 3333333333333333333333333333333333333333333333333333333
+7239 3333333333333333333333333333333333333333333333333333333
+7240 3333333333333333333333333333333333333333333333333333333
+7241 3333333333333333333333333333333333333333333333333333333
+7242 3333333333333333333333333333333333333333333333333333333
+7243 3333333333333333333333333333333333333333333333333333333
+7244 3333333333333333333333333333333333333333333333333333333
+7245 3333333333333333333333333333333333333333333333333333333
+7246 3333333333333333333333333333333333333333333333333333333
+7247 3333333333333333333333333333333333333333333333333333333
+7248 3333333333333333333333333333333333333333333333333333333
+7249 3333333333333333333333333333333333333333333333333333333
+7250 3333333333333333333333333333333333333333333333333333333
+7251 3333333333333333333333333333333333333333333333333333333
+7252 3333333333333333333333333333333333333333333333333333333
+7253 3333333333333333333333333333333333333333333333333333333
+7254 3333333333333333333333333333333333333333333333333333333
+7255 3333333333333333333333333333333333333333333333333333333
+7256 3333333333333333333333333333333333333333333333333333333
+7257 3333333333333333333333333333333333333333333333333333333
+7258 3333333333333333333333333333333333333333333333333333333
+7259 3333333333333333333333333333333333333333333333333333333
+7260 3333333333333333333333333333333333333333333333333333333
+7261 3333333333333333333333333333333333333333333333333333333
+7262 3333333333333333333333333333333333333333333333333333333
+7263 3333333333333333333333333333333333333333333333333333333
+7264 3333333333333333333333333333333333333333333333333333333
+7265 3333333333333333333333333333333333333333333333333333333
+7266 3333333333333333333333333333333333333333333333333333333
+7267 3333333333333333333333333333333333333333333333333333333
+7268 3333333333333333333333333333333333333333333333333333333
+7269 3333333333333333333333333333333333333333333333333333333
+7270 3333333333333333333333333333333333333333333333333333333
+7271 3333333333333333333333333333333333333333333333333333333
+7272 3333333333333333333333333333333333333333333333333333333
+7273 3333333333333333333333333333333333333333333333333333333
+7274 3333333333333333333333333333333333333333333333333333333
+7275 3333333333333333333333333333333333333333333333333333333
+7276 3333333333333333333333333333333333333333333333333333333
+7277 3333333333333333333333333333333333333333333333333333333
+7278 3333333333333333333333333333333333333333333333333333333
+7279 3333333333333333333333333333333333333333333333333333333
+7280 3333333333333333333333333333333333333333333333333333333
+7281 3333333333333333333333333333333333333333333333333333333
+7282 3333333333333333333333333333333333333333333333333333333
+7283 3333333333333333333333333333333333333333333333333333333
+7284 3333333333333333333333333333333333333333333333333333333
+7285 3333333333333333333333333333333333333333333333333333333
+7286 3333333333333333333333333333333333333333333333333333333
+7287 3333333333333333333333333333333333333333333333333333333
+7288 3333333333333333333333333333333333333333333333333333333
+7289 3333333333333333333333333333333333333333333333333333333
+7290 3333333333333333333333333333333333333333333333333333333
+7291 3333333333333333333333333333333333333333333333333333333
+7292 3333333333333333333333333333333333333333333333333333333
+7293 3333333333333333333333333333333333333333333333333333333
+7294 3333333333333333333333333333333333333333333333333333333
+7295 3333333333333333333333333333333333333333333333333333333
+7296 3333333333333333333333333333333333333333333333333333333
+7297 3333333333333333333333333333333333333333333333333333333
+7298 3333333333333333333333333333333333333333333333333333333
+7299 3333333333333333333333333333333333333333333333333333333
+7300 3333333333333333333333333333333333333333333333333333333
+7301 3333333333333333333333333333333333333333333333333333333
+7302 3333333333333333333333333333333333333333333333333333333
+7303 3333333333333333333333333333333333333333333333333333333
+7304 3333333333333333333333333333333333333333333333333333333
+7305 3333333333333333333333333333333333333333333333333333333
+7306 3333333333333333333333333333333333333333333333333333333
+7307 3333333333333333333333333333333333333333333333333333333
+7308 3333333333333333333333333333333333333333333333333333333
+7309 3333333333333333333333333333333333333333333333333333333
+7310 3333333333333333333333333333333333333333333333333333333
+7311 3333333333333333333333333333333333333333333333333333333
+7312 3333333333333333333333333333333333333333333333333333333
+7313 3333333333333333333333333333333333333333333333333333333
+7314 3333333333333333333333333333333333333333333333333333333
+7315 3333333333333333333333333333333333333333333333333333333
+7316 3333333333333333333333333333333333333333333333333333333
+7317 3333333333333333333333333333333333333333333333333333333
+7318 3333333333333333333333333333333333333333333333333333333
+7319 3333333333333333333333333333333333333333333333333333333
+7320 3333333333333333333333333333333333333333333333333333333
+7321 3333333333333333333333333333333333333333333333333333333
+7322 3333333333333333333333333333333333333333333333333333333
+7323 3333333333333333333333333333333333333333333333333333333
+7324 3333333333333333333333333333333333333333333333333333333
+7325 3333333333333333333333333333333333333333333333333333333
+7326 3333333333333333333333333333333333333333333333333333333
+7327 3333333333333333333333333333333333333333333333333333333
+7328 3333333333333333333333333333333333333333333333333333333
+7329 3333333333333333333333333333333333333333333333333333333
+7330 3333333333333333333333333333333333333333333333333333333
+7331 3333333333333333333333333333333333333333333333333333333
+7332 3333333333333333333333333333333333333333333333333333333
+7333 3333333333333333333333333333333333333333333333333333333
+7334 3333333333333333333333333333333333333333333333333333333
+7335 3333333333333333333333333333333333333333333333333333333
+7336 3333333333333333333333333333333333333333333333333333333
+7337 3333333333333333333333333333333333333333333333333333333
+7338 3333333333333333333333333333333333333333333333333333333
+7339 3333333333333333333333333333333333333333333333333333333
+7340 3333333333333333333333333333333333333333333333333333333
+7341 3333333333333333333333333333333333333333333333333333333
+7342 3333333333333333333333333333333333333333333333333333333
+7343 3333333333333333333333333333333333333333333333333333333
+7344 3333333333333333333333333333333333333333333333333333333
+7345 3333333333333333333333333333333333333333333333333333333
+7346 3333333333333333333333333333333333333333333333333333333
+7347 3333333333333333333333333333333333333333333333333333333
+7348 3333333333333333333333333333333333333333333333333333333
+7349 3333333333333333333333333333333333333333333333333333333
+7350 3333333333333333333333333333333333333333333333333333333
+7351 3333333333333333333333333333333333333333333333333333333
+7352 3333333333333333333333333333333333333333333333333333333
+7353 3333333333333333333333333333333333333333333333333333333
+7354 3333333333333333333333333333333333333333333333333333333
+7355 3333333333333333333333333333333333333333333333333333333
+7356 3333333333333333333333333333333333333333333333333333333
+7357 3333333333333333333333333333333333333333333333333333333
+7358 3333333333333333333333333333333333333333333333333333333
+7359 3333333333333333333333333333333333333333333333333333333
+7360 3333333333333333333333333333333333333333333333333333333
+7361 3333333333333333333333333333333333333333333333333333333
+7362 3333333333333333333333333333333333333333333333333333333
+7363 3333333333333333333333333333333333333333333333333333333
+7364 3333333333333333333333333333333333333333333333333333333
+7365 3333333333333333333333333333333333333333333333333333333
+7366 3333333333333333333333333333333333333333333333333333333
+7367 3333333333333333333333333333333333333333333333333333333
+7368 3333333333333333333333333333333333333333333333333333333
+7369 3333333333333333333333333333333333333333333333333333333
+7370 3333333333333333333333333333333333333333333333333333333
+7371 3333333333333333333333333333333333333333333333333333333
+7372 3333333333333333333333333333333333333333333333333333333
+7373 3333333333333333333333333333333333333333333333333333333
+7374 3333333333333333333333333333333333333333333333333333333
+7375 3333333333333333333333333333333333333333333333333333333
+7376 3333333333333333333333333333333333333333333333333333333
+7377 3333333333333333333333333333333333333333333333333333333
+7378 3333333333333333333333333333333333333333333333333333333
+7379 3333333333333333333333333333333333333333333333333333333
+7380 3333333333333333333333333333333333333333333333333333333
+7381 3333333333333333333333333333333333333333333333333333333
+7382 3333333333333333333333333333333333333333333333333333333
+7383 3333333333333333333333333333333333333333333333333333333
+7384 3333333333333333333333333333333333333333333333333333333
+7385 3333333333333333333333333333333333333333333333333333333
+7386 3333333333333333333333333333333333333333333333333333333
+7387 3333333333333333333333333333333333333333333333333333333
+7388 3333333333333333333333333333333333333333333333333333333
+7389 3333333333333333333333333333333333333333333333333333333
+7390 3333333333333333333333333333333333333333333333333333333
+7391 3333333333333333333333333333333333333333333333333333333
+7392 3333333333333333333333333333333333333333333333333333333
+7393 3333333333333333333333333333333333333333333333333333333
+7394 3333333333333333333333333333333333333333333333333333333
+7395 3333333333333333333333333333333333333333333333333333333
+7396 3333333333333333333333333333333333333333333333333333333
+7397 3333333333333333333333333333333333333333333333333333333
+7398 3333333333333333333333333333333333333333333333333333333
+7399 3333333333333333333333333333333333333333333333333333333
+7400 3333333333333333333333333333333333333333333333333333333
+7401 3333333333333333333333333333333333333333333333333333333
+7402 3333333333333333333333333333333333333333333333333333333
+7403 3333333333333333333333333333333333333333333333333333333
+7404 3333333333333333333333333333333333333333333333333333333
+7405 3333333333333333333333333333333333333333333333333333333
+7406 3333333333333333333333333333333333333333333333333333333
+7407 3333333333333333333333333333333333333333333333333333333
+7408 3333333333333333333333333333333333333333333333333333333
+7409 3333333333333333333333333333333333333333333333333333333
+7410 3333333333333333333333333333333333333333333333333333333
+7411 3333333333333333333333333333333333333333333333333333333
+7412 3333333333333333333333333333333333333333333333333333333
+7413 3333333333333333333333333333333333333333333333333333333
+7414 3333333333333333333333333333333333333333333333333333333
+7415 3333333333333333333333333333333333333333333333333333333
+7416 3333333333333333333333333333333333333333333333333333333
+7417 3333333333333333333333333333333333333333333333333333333
+7418 3333333333333333333333333333333333333333333333333333333
+7419 3333333333333333333333333333333333333333333333333333333
+7420 3333333333333333333333333333333333333333333333333333333
+7421 3333333333333333333333333333333333333333333333333333333
+7422 3333333333333333333333333333333333333333333333333333333
+7423 3333333333333333333333333333333333333333333333333333333
+7424 3333333333333333333333333333333333333333333333333333333
+7425 3333333333333333333333333333333333333333333333333333333
+7426 3333333333333333333333333333333333333333333333333333333
+7427 3333333333333333333333333333333333333333333333333333333
+7428 3333333333333333333333333333333333333333333333333333333
+7429 3333333333333333333333333333333333333333333333333333333
+7430 3333333333333333333333333333333333333333333333333333333
+7431 3333333333333333333333333333333333333333333333333333333
+7432 3333333333333333333333333333333333333333333333333333333
+7433 3333333333333333333333333333333333333333333333333333333
+7434 3333333333333333333333333333333333333333333333333333333
+7435 3333333333333333333333333333333333333333333333333333333
+7436 3333333333333333333333333333333333333333333333333333333
+7437 3333333333333333333333333333333333333333333333333333333
+7438 3333333333333333333333333333333333333333333333333333333
+7439 3333333333333333333333333333333333333333333333333333333
+7440 3333333333333333333333333333333333333333333333333333333
+7441 3333333333333333333333333333333333333333333333333333333
+7442 3333333333333333333333333333333333333333333333333333333
+7443 3333333333333333333333333333333333333333333333333333333
+7444 3333333333333333333333333333333333333333333333333333333
+7445 3333333333333333333333333333333333333333333333333333333
+7446 3333333333333333333333333333333333333333333333333333333
+7447 3333333333333333333333333333333333333333333333333333333
+7448 3333333333333333333333333333333333333333333333333333333
+7449 3333333333333333333333333333333333333333333333333333333
+7450 3333333333333333333333333333333333333333333333333333333
+7451 3333333333333333333333333333333333333333333333333333333
+7452 3333333333333333333333333333333333333333333333333333333
+7453 3333333333333333333333333333333333333333333333333333333
+7454 3333333333333333333333333333333333333333333333333333333
+7455 3333333333333333333333333333333333333333333333333333333
+7456 3333333333333333333333333333333333333333333333333333333
+7457 3333333333333333333333333333333333333333333333333333333
+7458 3333333333333333333333333333333333333333333333333333333
+7459 3333333333333333333333333333333333333333333333333333333
+7460 3333333333333333333333333333333333333333333333333333333
+7461 3333333333333333333333333333333333333333333333333333333
+7462 3333333333333333333333333333333333333333333333333333333
+7463 3333333333333333333333333333333333333333333333333333333
+7464 3333333333333333333333333333333333333333333333333333333
+7465 3333333333333333333333333333333333333333333333333333333
+7466 3333333333333333333333333333333333333333333333333333333
+7467 3333333333333333333333333333333333333333333333333333333
+7468 3333333333333333333333333333333333333333333333333333333
+7469 3333333333333333333333333333333333333333333333333333333
+7470 3333333333333333333333333333333333333333333333333333333
+7471 3333333333333333333333333333333333333333333333333333333
+7472 3333333333333333333333333333333333333333333333333333333
+7473 3333333333333333333333333333333333333333333333333333333
+7474 3333333333333333333333333333333333333333333333333333333
+7475 3333333333333333333333333333333333333333333333333333333
+7476 3333333333333333333333333333333333333333333333333333333
+7477 3333333333333333333333333333333333333333333333333333333
+7478 3333333333333333333333333333333333333333333333333333333
+7479 3333333333333333333333333333333333333333333333333333333
+7480 3333333333333333333333333333333333333333333333333333333
+7481 3333333333333333333333333333333333333333333333333333333
+7482 3333333333333333333333333333333333333333333333333333333
+7483 3333333333333333333333333333333333333333333333333333333
+7484 3333333333333333333333333333333333333333333333333333333
+7485 3333333333333333333333333333333333333333333333333333333
+7486 3333333333333333333333333333333333333333333333333333333
+7487 3333333333333333333333333333333333333333333333333333333
+7488 3333333333333333333333333333333333333333333333333333333
+7489 3333333333333333333333333333333333333333333333333333333
+7490 3333333333333333333333333333333333333333333333333333333
+7491 3333333333333333333333333333333333333333333333333333333
+7492 3333333333333333333333333333333333333333333333333333333
+7493 3333333333333333333333333333333333333333333333333333333
+7494 3333333333333333333333333333333333333333333333333333333
+7495 3333333333333333333333333333333333333333333333333333333
+7496 3333333333333333333333333333333333333333333333333333333
+7497 3333333333333333333333333333333333333333333333333333333
+7498 3333333333333333333333333333333333333333333333333333333
+7499 3333333333333333333333333333333333333333333333333333333
+7500 3333333333333333333333333333333333333333333333333333333
+7501 3333333333333333333333333333333333333333333333333333333
+7502 3333333333333333333333333333333333333333333333333333333
+7503 3333333333333333333333333333333333333333333333333333333
+7504 3333333333333333333333333333333333333333333333333333333
+7505 3333333333333333333333333333333333333333333333333333333
+7506 3333333333333333333333333333333333333333333333333333333
+7507 3333333333333333333333333333333333333333333333333333333
+7508 3333333333333333333333333333333333333333333333333333333
+7509 3333333333333333333333333333333333333333333333333333333
+7510 3333333333333333333333333333333333333333333333333333333
+7511 3333333333333333333333333333333333333333333333333333333
+7512 3333333333333333333333333333333333333333333333333333333
+7513 3333333333333333333333333333333333333333333333333333333
+7514 3333333333333333333333333333333333333333333333333333333
+7515 3333333333333333333333333333333333333333333333333333333
+7516 3333333333333333333333333333333333333333333333333333333
+7517 3333333333333333333333333333333333333333333333333333333
+7518 3333333333333333333333333333333333333333333333333333333
+7519 3333333333333333333333333333333333333333333333333333333
+7520 3333333333333333333333333333333333333333333333333333333
+7521 3333333333333333333333333333333333333333333333333333333
+7522 3333333333333333333333333333333333333333333333333333333
+7523 3333333333333333333333333333333333333333333333333333333
+7524 3333333333333333333333333333333333333333333333333333333
+7525 3333333333333333333333333333333333333333333333333333333
+7526 3333333333333333333333333333333333333333333333333333333
+7527 3333333333333333333333333333333333333333333333333333333
+7528 3333333333333333333333333333333333333333333333333333333
+7529 3333333333333333333333333333333333333333333333333333333
+7530 3333333333333333333333333333333333333333333333333333333
+7531 3333333333333333333333333333333333333333333333333333333
+7532 3333333333333333333333333333333333333333333333333333333
+7533 3333333333333333333333333333333333333333333333333333333
+7534 3333333333333333333333333333333333333333333333333333333
+7535 3333333333333333333333333333333333333333333333333333333
+7536 3333333333333333333333333333333333333333333333333333333
+7537 3333333333333333333333333333333333333333333333333333333
+7538 3333333333333333333333333333333333333333333333333333333
+7539 3333333333333333333333333333333333333333333333333333333
+7540 3333333333333333333333333333333333333333333333333333333
+7541 3333333333333333333333333333333333333333333333333333333
+7542 3333333333333333333333333333333333333333333333333333333
+7543 3333333333333333333333333333333333333333333333333333333
+7544 3333333333333333333333333333333333333333333333333333333
+7545 3333333333333333333333333333333333333333333333333333333
+7546 3333333333333333333333333333333333333333333333333333333
+7547 3333333333333333333333333333333333333333333333333333333
+7548 3333333333333333333333333333333333333333333333333333333
+7549 3333333333333333333333333333333333333333333333333333333
+7550 3333333333333333333333333333333333333333333333333333333
+7551 3333333333333333333333333333333333333333333333333333333
+7552 3333333333333333333333333333333333333333333333333333333
+7553 3333333333333333333333333333333333333333333333333333333
+7554 3333333333333333333333333333333333333333333333333333333
+7555 3333333333333333333333333333333333333333333333333333333
+7556 3333333333333333333333333333333333333333333333333333333
+7557 3333333333333333333333333333333333333333333333333333333
+7558 3333333333333333333333333333333333333333333333333333333
+7559 3333333333333333333333333333333333333333333333333333333
+7560 3333333333333333333333333333333333333333333333333333333
+7561 3333333333333333333333333333333333333333333333333333333
+7562 3333333333333333333333333333333333333333333333333333333
+7563 3333333333333333333333333333333333333333333333333333333
+7564 3333333333333333333333333333333333333333333333333333333
+7565 3333333333333333333333333333333333333333333333333333333
+7566 3333333333333333333333333333333333333333333333333333333
+7567 3333333333333333333333333333333333333333333333333333333
+7568 3333333333333333333333333333333333333333333333333333333
+7569 3333333333333333333333333333333333333333333333333333333
+7570 3333333333333333333333333333333333333333333333333333333
+7571 3333333333333333333333333333333333333333333333333333333
+7572 3333333333333333333333333333333333333333333333333333333
+7573 3333333333333333333333333333333333333333333333333333333
+7574 3333333333333333333333333333333333333333333333333333333
+7575 3333333333333333333333333333333333333333333333333333333
+7576 3333333333333333333333333333333333333333333333333333333
+7577 3333333333333333333333333333333333333333333333333333333
+7578 3333333333333333333333333333333333333333333333333333333
+7579 3333333333333333333333333333333333333333333333333333333
+7580 3333333333333333333333333333333333333333333333333333333
+7581 3333333333333333333333333333333333333333333333333333333
+7582 3333333333333333333333333333333333333333333333333333333
+7583 3333333333333333333333333333333333333333333333333333333
+7584 3333333333333333333333333333333333333333333333333333333
+7585 3333333333333333333333333333333333333333333333333333333
+7586 3333333333333333333333333333333333333333333333333333333
+7587 3333333333333333333333333333333333333333333333333333333
+7588 3333333333333333333333333333333333333333333333333333333
+7589 3333333333333333333333333333333333333333333333333333333
+7590 3333333333333333333333333333333333333333333333333333333
+7591 3333333333333333333333333333333333333333333333333333333
+7592 3333333333333333333333333333333333333333333333333333333
+7593 3333333333333333333333333333333333333333333333333333333
+7594 3333333333333333333333333333333333333333333333333333333
+7595 3333333333333333333333333333333333333333333333333333333
+7596 3333333333333333333333333333333333333333333333333333333
+7597 3333333333333333333333333333333333333333333333333333333
+7598 3333333333333333333333333333333333333333333333333333333
+7599 3333333333333333333333333333333333333333333333333333333
+7600 3333333333333333333333333333333333333333333333333333333
+7601 3333333333333333333333333333333333333333333333333333333
+7602 3333333333333333333333333333333333333333333333333333333
+7603 3333333333333333333333333333333333333333333333333333333
+7604 3333333333333333333333333333333333333333333333333333333
+7605 3333333333333333333333333333333333333333333333333333333
+7606 3333333333333333333333333333333333333333333333333333333
+7607 3333333333333333333333333333333333333333333333333333333
+7608 3333333333333333333333333333333333333333333333333333333
+7609 3333333333333333333333333333333333333333333333333333333
+7610 3333333333333333333333333333333333333333333333333333333
+7611 3333333333333333333333333333333333333333333333333333333
+7612 3333333333333333333333333333333333333333333333333333333
+7613 3333333333333333333333333333333333333333333333333333333
+7614 3333333333333333333333333333333333333333333333333333333
+7615 3333333333333333333333333333333333333333333333333333333
+7616 3333333333333333333333333333333333333333333333333333333
+7617 3333333333333333333333333333333333333333333333333333333
+7618 3333333333333333333333333333333333333333333333333333333
+7619 3333333333333333333333333333333333333333333333333333333
+7620 3333333333333333333333333333333333333333333333333333333
+7621 3333333333333333333333333333333333333333333333333333333
+7622 3333333333333333333333333333333333333333333333333333333
+7623 3333333333333333333333333333333333333333333333333333333
+7624 3333333333333333333333333333333333333333333333333333333
+7625 3333333333333333333333333333333333333333333333333333333
+7626 3333333333333333333333333333333333333333333333333333333
+7627 3333333333333333333333333333333333333333333333333333333
+7628 3333333333333333333333333333333333333333333333333333333
+7629 3333333333333333333333333333333333333333333333333333333
+7630 3333333333333333333333333333333333333333333333333333333
+7631 3333333333333333333333333333333333333333333333333333333
+7632 3333333333333333333333333333333333333333333333333333333
+7633 3333333333333333333333333333333333333333333333333333333
+7634 3333333333333333333333333333333333333333333333333333333
+7635 3333333333333333333333333333333333333333333333333333333
+7636 3333333333333333333333333333333333333333333333333333333
+7637 3333333333333333333333333333333333333333333333333333333
+7638 3333333333333333333333333333333333333333333333333333333
+7639 3333333333333333333333333333333333333333333333333333333
+7640 3333333333333333333333333333333333333333333333333333333
+7641 3333333333333333333333333333333333333333333333333333333
+7642 3333333333333333333333333333333333333333333333333333333
+7643 3333333333333333333333333333333333333333333333333333333
+7644 3333333333333333333333333333333333333333333333333333333
+7645 3333333333333333333333333333333333333333333333333333333
+7646 3333333333333333333333333333333333333333333333333333333
+7647 3333333333333333333333333333333333333333333333333333333
+7648 3333333333333333333333333333333333333333333333333333333
+7649 3333333333333333333333333333333333333333333333333333333
+7650 3333333333333333333333333333333333333333333333333333333
+7651 3333333333333333333333333333333333333333333333333333333
+7652 3333333333333333333333333333333333333333333333333333333
+7653 3333333333333333333333333333333333333333333333333333333
+7654 3333333333333333333333333333333333333333333333333333333
+7655 3333333333333333333333333333333333333333333333333333333
+7656 3333333333333333333333333333333333333333333333333333333
+7657 3333333333333333333333333333333333333333333333333333333
+7658 3333333333333333333333333333333333333333333333333333333
+7659 3333333333333333333333333333333333333333333333333333333
+7660 3333333333333333333333333333333333333333333333333333333
+7661 3333333333333333333333333333333333333333333333333333333
+7662 3333333333333333333333333333333333333333333333333333333
+7663 3333333333333333333333333333333333333333333333333333333
+7664 3333333333333333333333333333333333333333333333333333333
+7665 3333333333333333333333333333333333333333333333333333333
+7666 3333333333333333333333333333333333333333333333333333333
+7667 3333333333333333333333333333333333333333333333333333333
+7668 3333333333333333333333333333333333333333333333333333333
+7669 3333333333333333333333333333333333333333333333333333333
+7670 3333333333333333333333333333333333333333333333333333333
+7671 3333333333333333333333333333333333333333333333333333333
+7672 3333333333333333333333333333333333333333333333333333333
+7673 3333333333333333333333333333333333333333333333333333333
+7674 3333333333333333333333333333333333333333333333333333333
+7675 3333333333333333333333333333333333333333333333333333333
+7676 3333333333333333333333333333333333333333333333333333333
+7677 3333333333333333333333333333333333333333333333333333333
+7678 3333333333333333333333333333333333333333333333333333333
+7679 3333333333333333333333333333333333333333333333333333333
+7680 3333333333333333333333333333333333333333333333333333333
+7681 3333333333333333333333333333333333333333333333333333333
+7682 3333333333333333333333333333333333333333333333333333333
+7683 3333333333333333333333333333333333333333333333333333333
+7684 3333333333333333333333333333333333333333333333333333333
+7685 3333333333333333333333333333333333333333333333333333333
+7686 3333333333333333333333333333333333333333333333333333333
+7687 3333333333333333333333333333333333333333333333333333333
+7688 3333333333333333333333333333333333333333333333333333333
+7689 3333333333333333333333333333333333333333333333333333333
+7690 3333333333333333333333333333333333333333333333333333333
+7691 3333333333333333333333333333333333333333333333333333333
+7692 3333333333333333333333333333333333333333333333333333333
+7693 3333333333333333333333333333333333333333333333333333333
+7694 3333333333333333333333333333333333333333333333333333333
+7695 3333333333333333333333333333333333333333333333333333333
+7696 3333333333333333333333333333333333333333333333333333333
+7697 3333333333333333333333333333333333333333333333333333333
+7698 3333333333333333333333333333333333333333333333333333333
+7699 3333333333333333333333333333333333333333333333333333333
+7700 3333333333333333333333333333333333333333333333333333333
+7701 3333333333333333333333333333333333333333333333333333333
+7702 3333333333333333333333333333333333333333333333333333333
+7703 3333333333333333333333333333333333333333333333333333333
+7704 3333333333333333333333333333333333333333333333333333333
+7705 3333333333333333333333333333333333333333333333333333333
+7706 3333333333333333333333333333333333333333333333333333333
+7707 3333333333333333333333333333333333333333333333333333333
+7708 3333333333333333333333333333333333333333333333333333333
+7709 3333333333333333333333333333333333333333333333333333333
+7710 3333333333333333333333333333333333333333333333333333333
+7711 3333333333333333333333333333333333333333333333333333333
+7712 3333333333333333333333333333333333333333333333333333333
+7713 3333333333333333333333333333333333333333333333333333333
+7714 3333333333333333333333333333333333333333333333333333333
+7715 3333333333333333333333333333333333333333333333333333333
+7716 3333333333333333333333333333333333333333333333333333333
+7717 3333333333333333333333333333333333333333333333333333333
+7718 3333333333333333333333333333333333333333333333333333333
+7719 3333333333333333333333333333333333333333333333333333333
+7720 3333333333333333333333333333333333333333333333333333333
+7721 3333333333333333333333333333333333333333333333333333333
+7722 3333333333333333333333333333333333333333333333333333333
+7723 3333333333333333333333333333333333333333333333333333333
+7724 3333333333333333333333333333333333333333333333333333333
+7725 3333333333333333333333333333333333333333333333333333333
+7726 3333333333333333333333333333333333333333333333333333333
+7727 3333333333333333333333333333333333333333333333333333333
+7728 3333333333333333333333333333333333333333333333333333333
+7729 3333333333333333333333333333333333333333333333333333333
+7730 3333333333333333333333333333333333333333333333333333333
+7731 3333333333333333333333333333333333333333333333333333333
+7732 3333333333333333333333333333333333333333333333333333333
+7733 3333333333333333333333333333333333333333333333333333333
+7734 3333333333333333333333333333333333333333333333333333333
+7735 3333333333333333333333333333333333333333333333333333333
+7736 3333333333333333333333333333333333333333333333333333333
+7737 3333333333333333333333333333333333333333333333333333333
+7738 3333333333333333333333333333333333333333333333333333333
+7739 3333333333333333333333333333333333333333333333333333333
+7740 3333333333333333333333333333333333333333333333333333333
+7741 3333333333333333333333333333333333333333333333333333333
+7742 3333333333333333333333333333333333333333333333333333333
+7743 3333333333333333333333333333333333333333333333333333333
+7744 3333333333333333333333333333333333333333333333333333333
+7745 3333333333333333333333333333333333333333333333333333333
+7746 3333333333333333333333333333333333333333333333333333333
+7747 3333333333333333333333333333333333333333333333333333333
+7748 3333333333333333333333333333333333333333333333333333333
+7749 3333333333333333333333333333333333333333333333333333333
+7750 3333333333333333333333333333333333333333333333333333333
+7751 3333333333333333333333333333333333333333333333333333333
+7752 3333333333333333333333333333333333333333333333333333333
+7753 3333333333333333333333333333333333333333333333333333333
+7754 3333333333333333333333333333333333333333333333333333333
+7755 3333333333333333333333333333333333333333333333333333333
+7756 3333333333333333333333333333333333333333333333333333333
+7757 3333333333333333333333333333333333333333333333333333333
+7758 3333333333333333333333333333333333333333333333333333333
+7759 3333333333333333333333333333333333333333333333333333333
+7760 3333333333333333333333333333333333333333333333333333333
+7761 3333333333333333333333333333333333333333333333333333333
+7762 3333333333333333333333333333333333333333333333333333333
+7763 3333333333333333333333333333333333333333333333333333333
+7764 3333333333333333333333333333333333333333333333333333333
+7765 3333333333333333333333333333333333333333333333333333333
+7766 3333333333333333333333333333333333333333333333333333333
+7767 3333333333333333333333333333333333333333333333333333333
+7768 3333333333333333333333333333333333333333333333333333333
+7769 3333333333333333333333333333333333333333333333333333333
+7770 3333333333333333333333333333333333333333333333333333333
+7771 3333333333333333333333333333333333333333333333333333333
+7772 3333333333333333333333333333333333333333333333333333333
+7773 3333333333333333333333333333333333333333333333333333333
+7774 3333333333333333333333333333333333333333333333333333333
+7775 3333333333333333333333333333333333333333333333333333333
+7776 3333333333333333333333333333333333333333333333333333333
+7777 3333333333333333333333333333333333333333333333333333333
+7778 3333333333333333333333333333333333333333333333333333333
+7779 3333333333333333333333333333333333333333333333333333333
+7780 3333333333333333333333333333333333333333333333333333333
+7781 3333333333333333333333333333333333333333333333333333333
+7782 3333333333333333333333333333333333333333333333333333333
+7783 3333333333333333333333333333333333333333333333333333333
+7784 3333333333333333333333333333333333333333333333333333333
+7785 3333333333333333333333333333333333333333333333333333333
+7786 3333333333333333333333333333333333333333333333333333333
+7787 3333333333333333333333333333333333333333333333333333333
+7788 3333333333333333333333333333333333333333333333333333333
+7789 3333333333333333333333333333333333333333333333333333333
+7790 3333333333333333333333333333333333333333333333333333333
+7791 3333333333333333333333333333333333333333333333333333333
+7792 3333333333333333333333333333333333333333333333333333333
+7793 3333333333333333333333333333333333333333333333333333333
+7794 3333333333333333333333333333333333333333333333333333333
+7795 3333333333333333333333333333333333333333333333333333333
+7796 3333333333333333333333333333333333333333333333333333333
+7797 3333333333333333333333333333333333333333333333333333333
+7798 3333333333333333333333333333333333333333333333333333333
+7799 3333333333333333333333333333333333333333333333333333333
+7800 3333333333333333333333333333333333333333333333333333333
+7801 3333333333333333333333333333333333333333333333333333333
+7802 3333333333333333333333333333333333333333333333333333333
+7803 3333333333333333333333333333333333333333333333333333333
+7804 3333333333333333333333333333333333333333333333333333333
+7805 3333333333333333333333333333333333333333333333333333333
+7806 3333333333333333333333333333333333333333333333333333333
+7807 3333333333333333333333333333333333333333333333333333333
+7808 3333333333333333333333333333333333333333333333333333333
+7809 3333333333333333333333333333333333333333333333333333333
+7810 3333333333333333333333333333333333333333333333333333333
+7811 3333333333333333333333333333333333333333333333333333333
+7812 3333333333333333333333333333333333333333333333333333333
+7813 3333333333333333333333333333333333333333333333333333333
+7814 3333333333333333333333333333333333333333333333333333333
+7815 3333333333333333333333333333333333333333333333333333333
+7816 3333333333333333333333333333333333333333333333333333333
+7817 3333333333333333333333333333333333333333333333333333333
+7818 3333333333333333333333333333333333333333333333333333333
+7819 3333333333333333333333333333333333333333333333333333333
+7820 3333333333333333333333333333333333333333333333333333333
+7821 3333333333333333333333333333333333333333333333333333333
+7822 3333333333333333333333333333333333333333333333333333333
+7823 3333333333333333333333333333333333333333333333333333333
+7824 3333333333333333333333333333333333333333333333333333333
+7825 3333333333333333333333333333333333333333333333333333333
+7826 3333333333333333333333333333333333333333333333333333333
+7827 3333333333333333333333333333333333333333333333333333333
+7828 3333333333333333333333333333333333333333333333333333333
+7829 3333333333333333333333333333333333333333333333333333333
+7830 3333333333333333333333333333333333333333333333333333333
+7831 3333333333333333333333333333333333333333333333333333333
+7832 3333333333333333333333333333333333333333333333333333333
+7833 3333333333333333333333333333333333333333333333333333333
+7834 3333333333333333333333333333333333333333333333333333333
+7835 3333333333333333333333333333333333333333333333333333333
+7836 3333333333333333333333333333333333333333333333333333333
+7837 3333333333333333333333333333333333333333333333333333333
+7838 3333333333333333333333333333333333333333333333333333333
+7839 3333333333333333333333333333333333333333333333333333333
+7840 3333333333333333333333333333333333333333333333333333333
+7841 3333333333333333333333333333333333333333333333333333333
+7842 3333333333333333333333333333333333333333333333333333333
+7843 3333333333333333333333333333333333333333333333333333333
+7844 3333333333333333333333333333333333333333333333333333333
+7845 3333333333333333333333333333333333333333333333333333333
+7846 3333333333333333333333333333333333333333333333333333333
+7847 3333333333333333333333333333333333333333333333333333333
+7848 3333333333333333333333333333333333333333333333333333333
+7849 3333333333333333333333333333333333333333333333333333333
+7850 3333333333333333333333333333333333333333333333333333333
+7851 3333333333333333333333333333333333333333333333333333333
+7852 3333333333333333333333333333333333333333333333333333333
+7853 3333333333333333333333333333333333333333333333333333333
+7854 3333333333333333333333333333333333333333333333333333333
+7855 3333333333333333333333333333333333333333333333333333333
+7856 3333333333333333333333333333333333333333333333333333333
+7857 3333333333333333333333333333333333333333333333333333333
+7858 3333333333333333333333333333333333333333333333333333333
+7859 3333333333333333333333333333333333333333333333333333333
+7860 3333333333333333333333333333333333333333333333333333333
+7861 3333333333333333333333333333333333333333333333333333333
+7862 3333333333333333333333333333333333333333333333333333333
+7863 3333333333333333333333333333333333333333333333333333333
+7864 3333333333333333333333333333333333333333333333333333333
+7865 3333333333333333333333333333333333333333333333333333333
+7866 3333333333333333333333333333333333333333333333333333333
+7867 3333333333333333333333333333333333333333333333333333333
+7868 3333333333333333333333333333333333333333333333333333333
+7869 3333333333333333333333333333333333333333333333333333333
+7870 3333333333333333333333333333333333333333333333333333333
+7871 3333333333333333333333333333333333333333333333333333333
+7872 3333333333333333333333333333333333333333333333333333333
+7873 3333333333333333333333333333333333333333333333333333333
+7874 3333333333333333333333333333333333333333333333333333333
+7875 3333333333333333333333333333333333333333333333333333333
+7876 3333333333333333333333333333333333333333333333333333333
+7877 3333333333333333333333333333333333333333333333333333333
+7878 3333333333333333333333333333333333333333333333333333333
+7879 3333333333333333333333333333333333333333333333333333333
+7880 3333333333333333333333333333333333333333333333333333333
+7881 3333333333333333333333333333333333333333333333333333333
+7882 3333333333333333333333333333333333333333333333333333333
+7883 3333333333333333333333333333333333333333333333333333333
+7884 3333333333333333333333333333333333333333333333333333333
+7885 3333333333333333333333333333333333333333333333333333333
+7886 3333333333333333333333333333333333333333333333333333333
+7887 3333333333333333333333333333333333333333333333333333333
+7888 3333333333333333333333333333333333333333333333333333333
+7889 3333333333333333333333333333333333333333333333333333333
+7890 3333333333333333333333333333333333333333333333333333333
+7891 3333333333333333333333333333333333333333333333333333333
+7892 3333333333333333333333333333333333333333333333333333333
+7893 3333333333333333333333333333333333333333333333333333333
+7894 3333333333333333333333333333333333333333333333333333333
+7895 3333333333333333333333333333333333333333333333333333333
+7896 3333333333333333333333333333333333333333333333333333333
+7897 3333333333333333333333333333333333333333333333333333333
+7898 3333333333333333333333333333333333333333333333333333333
+7899 3333333333333333333333333333333333333333333333333333333
+7900 3333333333333333333333333333333333333333333333333333333
+7901 3333333333333333333333333333333333333333333333333333333
+7902 3333333333333333333333333333333333333333333333333333333
+7903 3333333333333333333333333333333333333333333333333333333
+7904 3333333333333333333333333333333333333333333333333333333
+7905 3333333333333333333333333333333333333333333333333333333
+7906 3333333333333333333333333333333333333333333333333333333
+7907 3333333333333333333333333333333333333333333333333333333
+7908 3333333333333333333333333333333333333333333333333333333
+7909 3333333333333333333333333333333333333333333333333333333
+7910 3333333333333333333333333333333333333333333333333333333
+7911 3333333333333333333333333333333333333333333333333333333
+7912 3333333333333333333333333333333333333333333333333333333
+7913 3333333333333333333333333333333333333333333333333333333
+7914 3333333333333333333333333333333333333333333333333333333
+7915 3333333333333333333333333333333333333333333333333333333
+7916 3333333333333333333333333333333333333333333333333333333
+7917 3333333333333333333333333333333333333333333333333333333
+7918 3333333333333333333333333333333333333333333333333333333
+7919 3333333333333333333333333333333333333333333333333333333
+7920 3333333333333333333333333333333333333333333333333333333
+7921 3333333333333333333333333333333333333333333333333333333
+7922 3333333333333333333333333333333333333333333333333333333
+7923 3333333333333333333333333333333333333333333333333333333
+7924 3333333333333333333333333333333333333333333333333333333
+7925 3333333333333333333333333333333333333333333333333333333
+7926 3333333333333333333333333333333333333333333333333333333
+7927 3333333333333333333333333333333333333333333333333333333
+7928 3333333333333333333333333333333333333333333333333333333
+7929 3333333333333333333333333333333333333333333333333333333
+7930 3333333333333333333333333333333333333333333333333333333
+7931 3333333333333333333333333333333333333333333333333333333
+7932 3333333333333333333333333333333333333333333333333333333
+7933 3333333333333333333333333333333333333333333333333333333
+7934 3333333333333333333333333333333333333333333333333333333
+7935 3333333333333333333333333333333333333333333333333333333
+7936 3333333333333333333333333333333333333333333333333333333
+7937 3333333333333333333333333333333333333333333333333333333
+7938 3333333333333333333333333333333333333333333333333333333
+7939 3333333333333333333333333333333333333333333333333333333
+7940 3333333333333333333333333333333333333333333333333333333
+7941 3333333333333333333333333333333333333333333333333333333
+7942 3333333333333333333333333333333333333333333333333333333
+7943 3333333333333333333333333333333333333333333333333333333
+7944 3333333333333333333333333333333333333333333333333333333
+7945 3333333333333333333333333333333333333333333333333333333
+7946 3333333333333333333333333333333333333333333333333333333
+7947 3333333333333333333333333333333333333333333333333333333
+7948 3333333333333333333333333333333333333333333333333333333
+7949 3333333333333333333333333333333333333333333333333333333
+7950 3333333333333333333333333333333333333333333333333333333
+7951 3333333333333333333333333333333333333333333333333333333
+7952 3333333333333333333333333333333333333333333333333333333
+7953 3333333333333333333333333333333333333333333333333333333
+7954 3333333333333333333333333333333333333333333333333333333
+7955 3333333333333333333333333333333333333333333333333333333
+7956 3333333333333333333333333333333333333333333333333333333
+7957 3333333333333333333333333333333333333333333333333333333
+7958 3333333333333333333333333333333333333333333333333333333
+7959 3333333333333333333333333333333333333333333333333333333
+7960 3333333333333333333333333333333333333333333333333333333
+7961 3333333333333333333333333333333333333333333333333333333
+7962 3333333333333333333333333333333333333333333333333333333
+7963 3333333333333333333333333333333333333333333333333333333
+7964 3333333333333333333333333333333333333333333333333333333
+7965 3333333333333333333333333333333333333333333333333333333
+7966 3333333333333333333333333333333333333333333333333333333
+7967 3333333333333333333333333333333333333333333333333333333
+7968 3333333333333333333333333333333333333333333333333333333
+7969 3333333333333333333333333333333333333333333333333333333
+7970 3333333333333333333333333333333333333333333333333333333
+7971 3333333333333333333333333333333333333333333333333333333
+7972 3333333333333333333333333333333333333333333333333333333
+7973 3333333333333333333333333333333333333333333333333333333
+7974 3333333333333333333333333333333333333333333333333333333
+7975 3333333333333333333333333333333333333333333333333333333
+7976 3333333333333333333333333333333333333333333333333333333
+7977 3333333333333333333333333333333333333333333333333333333
+7978 3333333333333333333333333333333333333333333333333333333
+7979 3333333333333333333333333333333333333333333333333333333
+7980 3333333333333333333333333333333333333333333333333333333
+7981 3333333333333333333333333333333333333333333333333333333
+7982 3333333333333333333333333333333333333333333333333333333
+7983 3333333333333333333333333333333333333333333333333333333
+7984 3333333333333333333333333333333333333333333333333333333
+7985 3333333333333333333333333333333333333333333333333333333
+7986 3333333333333333333333333333333333333333333333333333333
+7987 3333333333333333333333333333333333333333333333333333333
+7988 3333333333333333333333333333333333333333333333333333333
+7989 3333333333333333333333333333333333333333333333333333333
+7990 3333333333333333333333333333333333333333333333333333333
+7991 3333333333333333333333333333333333333333333333333333333
+7992 3333333333333333333333333333333333333333333333333333333
+7993 3333333333333333333333333333333333333333333333333333333
+7994 3333333333333333333333333333333333333333333333333333333
+7995 3333333333333333333333333333333333333333333333333333333
+7996 3333333333333333333333333333333333333333333333333333333
+7997 3333333333333333333333333333333333333333333333333333333
+7998 3333333333333333333333333333333333333333333333333333333
+7999 3333333333333333333333333333333333333333333333333333333
+8000 3333333333333333333333333333333333333333333333333333333
+8001 3333333333333333333333333333333333333333333333333333333
+8002 3333333333333333333333333333333333333333333333333333333
+8003 3333333333333333333333333333333333333333333333333333333
+8004 3333333333333333333333333333333333333333333333333333333
+8005 3333333333333333333333333333333333333333333333333333333
+8006 3333333333333333333333333333333333333333333333333333333
+8007 3333333333333333333333333333333333333333333333333333333
+8008 3333333333333333333333333333333333333333333333333333333
+8009 3333333333333333333333333333333333333333333333333333333
+8010 3333333333333333333333333333333333333333333333333333333
+8011 3333333333333333333333333333333333333333333333333333333
+8012 3333333333333333333333333333333333333333333333333333333
+8013 3333333333333333333333333333333333333333333333333333333
+8014 3333333333333333333333333333333333333333333333333333333
+8015 3333333333333333333333333333333333333333333333333333333
+8016 3333333333333333333333333333333333333333333333333333333
+8017 3333333333333333333333333333333333333333333333333333333
+8018 3333333333333333333333333333333333333333333333333333333
+8019 3333333333333333333333333333333333333333333333333333333
+8020 3333333333333333333333333333333333333333333333333333333
+8021 3333333333333333333333333333333333333333333333333333333
+8022 3333333333333333333333333333333333333333333333333333333
+8023 3333333333333333333333333333333333333333333333333333333
+8024 3333333333333333333333333333333333333333333333333333333
+8025 3333333333333333333333333333333333333333333333333333333
+8026 3333333333333333333333333333333333333333333333333333333
+8027 3333333333333333333333333333333333333333333333333333333
+8028 3333333333333333333333333333333333333333333333333333333
+8029 3333333333333333333333333333333333333333333333333333333
+8030 3333333333333333333333333333333333333333333333333333333
+8031 3333333333333333333333333333333333333333333333333333333
+8032 3333333333333333333333333333333333333333333333333333333
+8033 3333333333333333333333333333333333333333333333333333333
+8034 3333333333333333333333333333333333333333333333333333333
+8035 3333333333333333333333333333333333333333333333333333333
+8036 3333333333333333333333333333333333333333333333333333333
+8037 3333333333333333333333333333333333333333333333333333333
+8038 3333333333333333333333333333333333333333333333333333333
+8039 3333333333333333333333333333333333333333333333333333333
+8040 3333333333333333333333333333333333333333333333333333333
+8041 3333333333333333333333333333333333333333333333333333333
+8042 3333333333333333333333333333333333333333333333333333333
+8043 3333333333333333333333333333333333333333333333333333333
+8044 3333333333333333333333333333333333333333333333333333333
+8045 3333333333333333333333333333333333333333333333333333333
+8046 3333333333333333333333333333333333333333333333333333333
+8047 3333333333333333333333333333333333333333333333333333333
+8048 3333333333333333333333333333333333333333333333333333333
+8049 3333333333333333333333333333333333333333333333333333333
+8050 3333333333333333333333333333333333333333333333333333333
+8051 3333333333333333333333333333333333333333333333333333333
+8052 3333333333333333333333333333333333333333333333333333333
+8053 3333333333333333333333333333333333333333333333333333333
+8054 3333333333333333333333333333333333333333333333333333333
+8055 3333333333333333333333333333333333333333333333333333333
+8056 3333333333333333333333333333333333333333333333333333333
+8057 3333333333333333333333333333333333333333333333333333333
+8058 3333333333333333333333333333333333333333333333333333333
+8059 3333333333333333333333333333333333333333333333333333333
+8060 3333333333333333333333333333333333333333333333333333333
+8061 3333333333333333333333333333333333333333333333333333333
+8062 3333333333333333333333333333333333333333333333333333333
+8063 3333333333333333333333333333333333333333333333333333333
+8064 3333333333333333333333333333333333333333333333333333333
+8065 3333333333333333333333333333333333333333333333333333333
+8066 3333333333333333333333333333333333333333333333333333333
+8067 3333333333333333333333333333333333333333333333333333333
+8068 3333333333333333333333333333333333333333333333333333333
+8069 3333333333333333333333333333333333333333333333333333333
+8070 3333333333333333333333333333333333333333333333333333333
+8071 3333333333333333333333333333333333333333333333333333333
+8072 3333333333333333333333333333333333333333333333333333333
+8073 3333333333333333333333333333333333333333333333333333333
+8074 3333333333333333333333333333333333333333333333333333333
+8075 3333333333333333333333333333333333333333333333333333333
+8076 3333333333333333333333333333333333333333333333333333333
+8077 3333333333333333333333333333333333333333333333333333333
+8078 3333333333333333333333333333333333333333333333333333333
+8079 3333333333333333333333333333333333333333333333333333333
+8080 3333333333333333333333333333333333333333333333333333333
+8081 3333333333333333333333333333333333333333333333333333333
+8082 3333333333333333333333333333333333333333333333333333333
+8083 3333333333333333333333333333333333333333333333333333333
+8084 3333333333333333333333333333333333333333333333333333333
+8085 3333333333333333333333333333333333333333333333333333333
+8086 3333333333333333333333333333333333333333333333333333333
+8087 3333333333333333333333333333333333333333333333333333333
+8088 3333333333333333333333333333333333333333333333333333333
+8089 3333333333333333333333333333333333333333333333333333333
+8090 3333333333333333333333333333333333333333333333333333333
+8091 3333333333333333333333333333333333333333333333333333333
+8092 3333333333333333333333333333333333333333333333333333333
+8093 3333333333333333333333333333333333333333333333333333333
+8094 3333333333333333333333333333333333333333333333333333333
+8095 3333333333333333333333333333333333333333333333333333333
+8096 3333333333333333333333333333333333333333333333333333333
+8097 3333333333333333333333333333333333333333333333333333333
+8098 3333333333333333333333333333333333333333333333333333333
+8099 3333333333333333333333333333333333333333333333333333333
+8100 3333333333333333333333333333333333333333333333333333333
+8101 3333333333333333333333333333333333333333333333333333333
+8102 3333333333333333333333333333333333333333333333333333333
+8103 3333333333333333333333333333333333333333333333333333333
+8104 3333333333333333333333333333333333333333333333333333333
+8105 3333333333333333333333333333333333333333333333333333333
+8106 3333333333333333333333333333333333333333333333333333333
+8107 3333333333333333333333333333333333333333333333333333333
+8108 3333333333333333333333333333333333333333333333333333333
+8109 3333333333333333333333333333333333333333333333333333333
+8110 3333333333333333333333333333333333333333333333333333333
+8111 3333333333333333333333333333333333333333333333333333333
+8112 3333333333333333333333333333333333333333333333333333333
+8113 3333333333333333333333333333333333333333333333333333333
+8114 3333333333333333333333333333333333333333333333333333333
+8115 3333333333333333333333333333333333333333333333333333333
+8116 3333333333333333333333333333333333333333333333333333333
+8117 3333333333333333333333333333333333333333333333333333333
+8118 3333333333333333333333333333333333333333333333333333333
+8119 3333333333333333333333333333333333333333333333333333333
+8120 3333333333333333333333333333333333333333333333333333333
+8121 3333333333333333333333333333333333333333333333333333333
+8122 3333333333333333333333333333333333333333333333333333333
+8123 3333333333333333333333333333333333333333333333333333333
+8124 3333333333333333333333333333333333333333333333333333333
+8125 3333333333333333333333333333333333333333333333333333333
+8126 3333333333333333333333333333333333333333333333333333333
+8127 3333333333333333333333333333333333333333333333333333333
+8128 3333333333333333333333333333333333333333333333333333333
+8129 3333333333333333333333333333333333333333333333333333333
+8130 3333333333333333333333333333333333333333333333333333333
+8131 3333333333333333333333333333333333333333333333333333333
+8132 3333333333333333333333333333333333333333333333333333333
+8133 3333333333333333333333333333333333333333333333333333333
+8134 3333333333333333333333333333333333333333333333333333333
+8135 3333333333333333333333333333333333333333333333333333333
+8136 3333333333333333333333333333333333333333333333333333333
+8137 3333333333333333333333333333333333333333333333333333333
+8138 3333333333333333333333333333333333333333333333333333333
+8139 3333333333333333333333333333333333333333333333333333333
+8140 3333333333333333333333333333333333333333333333333333333
+8141 3333333333333333333333333333333333333333333333333333333
+8142 3333333333333333333333333333333333333333333333333333333
+8143 3333333333333333333333333333333333333333333333333333333
+8144 3333333333333333333333333333333333333333333333333333333
+8145 3333333333333333333333333333333333333333333333333333333
+8146 3333333333333333333333333333333333333333333333333333333
+8147 3333333333333333333333333333333333333333333333333333333
+8148 3333333333333333333333333333333333333333333333333333333
+8149 3333333333333333333333333333333333333333333333333333333
+8150 3333333333333333333333333333333333333333333333333333333
+8151 3333333333333333333333333333333333333333333333333333333
+8152 3333333333333333333333333333333333333333333333333333333
+8153 3333333333333333333333333333333333333333333333333333333
+8154 3333333333333333333333333333333333333333333333333333333
+8155 3333333333333333333333333333333333333333333333333333333
+8156 3333333333333333333333333333333333333333333333333333333
+8157 3333333333333333333333333333333333333333333333333333333
+8158 3333333333333333333333333333333333333333333333333333333
+8159 3333333333333333333333333333333333333333333333333333333
+8160 3333333333333333333333333333333333333333333333333333333
+8161 3333333333333333333333333333333333333333333333333333333
+8162 3333333333333333333333333333333333333333333333333333333
+8163 3333333333333333333333333333333333333333333333333333333
+8164 3333333333333333333333333333333333333333333333333333333
+8165 3333333333333333333333333333333333333333333333333333333
+8166 3333333333333333333333333333333333333333333333333333333
+8167 3333333333333333333333333333333333333333333333333333333
+8168 3333333333333333333333333333333333333333333333333333333
+8169 3333333333333333333333333333333333333333333333333333333
+8170 3333333333333333333333333333333333333333333333333333333
+8171 3333333333333333333333333333333333333333333333333333333
+8172 3333333333333333333333333333333333333333333333333333333
+8173 3333333333333333333333333333333333333333333333333333333
+8174 3333333333333333333333333333333333333333333333333333333
+8175 3333333333333333333333333333333333333333333333333333333
+8176 3333333333333333333333333333333333333333333333333333333
+8177 3333333333333333333333333333333333333333333333333333333
+8178 3333333333333333333333333333333333333333333333333333333
+8179 3333333333333333333333333333333333333333333333333333333
+8180 3333333333333333333333333333333333333333333333333333333
+8181 3333333333333333333333333333333333333333333333333333333
+8182 3333333333333333333333333333333333333333333333333333333
+8183 3333333333333333333333333333333333333333333333333333333
+8184 3333333333333333333333333333333333333333333333333333333
+8185 3333333333333333333333333333333333333333333333333333333
+8186 3333333333333333333333333333333333333333333333333333333
+8187 3333333333333333333333333333333333333333333333333333333
+8188 3333333333333333333333333333333333333333333333333333333
+8189 3333333333333333333333333333333333333333333333333333333
+8190 3333333333333333333333333333333333333333333333333333333
+8191 3333333333333333333333333333333333333333333333333333333
+8192 3333333333333333333333333333333333333333333333333333333
+8193 3333333333333333333333333333333333333333333333333333333
+8194 3333333333333333333333333333333333333333333333333333333
+8195 3333333333333333333333333333333333333333333333333333333
+8196 3333333333333333333333333333333333333333333333333333333
+8197 3333333333333333333333333333333333333333333333333333333
+8198 3333333333333333333333333333333333333333333333333333333
+8199 3333333333333333333333333333333333333333333333333333333
+8200 3333333333333333333333333333333333333333333333333333333
+8201 3333333333333333333333333333333333333333333333333333333
+8202 3333333333333333333333333333333333333333333333333333333
+8203 3333333333333333333333333333333333333333333333333333333
+8204 3333333333333333333333333333333333333333333333333333333
+8205 3333333333333333333333333333333333333333333333333333333
+8206 3333333333333333333333333333333333333333333333333333333
+8207 3333333333333333333333333333333333333333333333333333333
+8208 3333333333333333333333333333333333333333333333333333333
+8209 3333333333333333333333333333333333333333333333333333333
+8210 3333333333333333333333333333333333333333333333333333333
+8211 3333333333333333333333333333333333333333333333333333333
+8212 3333333333333333333333333333333333333333333333333333333
+8213 3333333333333333333333333333333333333333333333333333333
+8214 3333333333333333333333333333333333333333333333333333333
+8215 3333333333333333333333333333333333333333333333333333333
+8216 3333333333333333333333333333333333333333333333333333333
+8217 3333333333333333333333333333333333333333333333333333333
+8218 3333333333333333333333333333333333333333333333333333333
+8219 3333333333333333333333333333333333333333333333333333333
+8220 3333333333333333333333333333333333333333333333333333333
+8221 3333333333333333333333333333333333333333333333333333333
+8222 3333333333333333333333333333333333333333333333333333333
+8223 3333333333333333333333333333333333333333333333333333333
+8224 3333333333333333333333333333333333333333333333333333333
+8225 3333333333333333333333333333333333333333333333333333333
+8226 3333333333333333333333333333333333333333333333333333333
+8227 3333333333333333333333333333333333333333333333333333333
+8228 3333333333333333333333333333333333333333333333333333333
+8229 3333333333333333333333333333333333333333333333333333333
+8230 3333333333333333333333333333333333333333333333333333333
+8231 3333333333333333333333333333333333333333333333333333333
+8232 3333333333333333333333333333333333333333333333333333333
+8233 3333333333333333333333333333333333333333333333333333333
+8234 3333333333333333333333333333333333333333333333333333333
+8235 3333333333333333333333333333333333333333333333333333333
+8236 3333333333333333333333333333333333333333333333333333333
+8237 3333333333333333333333333333333333333333333333333333333
+8238 3333333333333333333333333333333333333333333333333333333
+8239 3333333333333333333333333333333333333333333333333333333
+8240 3333333333333333333333333333333333333333333333333333333
+8241 3333333333333333333333333333333333333333333333333333333
+8242 3333333333333333333333333333333333333333333333333333333
+8243 3333333333333333333333333333333333333333333333333333333
+8244 3333333333333333333333333333333333333333333333333333333
+8245 3333333333333333333333333333333333333333333333333333333
+8246 3333333333333333333333333333333333333333333333333333333
+8247 3333333333333333333333333333333333333333333333333333333
+8248 3333333333333333333333333333333333333333333333333333333
+8249 3333333333333333333333333333333333333333333333333333333
+8250 3333333333333333333333333333333333333333333333333333333
+8251 3333333333333333333333333333333333333333333333333333333
+8252 3333333333333333333333333333333333333333333333333333333
+8253 3333333333333333333333333333333333333333333333333333333
+8254 3333333333333333333333333333333333333333333333333333333
+8255 3333333333333333333333333333333333333333333333333333333
+8256 3333333333333333333333333333333333333333333333333333333
+8257 3333333333333333333333333333333333333333333333333333333
+8258 3333333333333333333333333333333333333333333333333333333
+8259 3333333333333333333333333333333333333333333333333333333
+8260 3333333333333333333333333333333333333333333333333333333
+8261 3333333333333333333333333333333333333333333333333333333
+8262 3333333333333333333333333333333333333333333333333333333
+8263 3333333333333333333333333333333333333333333333333333333
+8264 3333333333333333333333333333333333333333333333333333333
+8265 3333333333333333333333333333333333333333333333333333333
+8266 3333333333333333333333333333333333333333333333333333333
+8267 3333333333333333333333333333333333333333333333333333333
+8268 3333333333333333333333333333333333333333333333333333333
+8269 3333333333333333333333333333333333333333333333333333333
+8270 3333333333333333333333333333333333333333333333333333333
+8271 3333333333333333333333333333333333333333333333333333333
+8272 3333333333333333333333333333333333333333333333333333333
+8273 3333333333333333333333333333333333333333333333333333333
+8274 3333333333333333333333333333333333333333333333333333333
+8275 3333333333333333333333333333333333333333333333333333333
+8276 3333333333333333333333333333333333333333333333333333333
+8277 3333333333333333333333333333333333333333333333333333333
+8278 3333333333333333333333333333333333333333333333333333333
+8279 3333333333333333333333333333333333333333333333333333333
+8280 3333333333333333333333333333333333333333333333333333333
+8281 3333333333333333333333333333333333333333333333333333333
+8282 3333333333333333333333333333333333333333333333333333333
+8283 3333333333333333333333333333333333333333333333333333333
+8284 3333333333333333333333333333333333333333333333333333333
+8285 3333333333333333333333333333333333333333333333333333333
+8286 3333333333333333333333333333333333333333333333333333333
+8287 3333333333333333333333333333333333333333333333333333333
+8288 3333333333333333333333333333333333333333333333333333333
+8289 3333333333333333333333333333333333333333333333333333333
+8290 3333333333333333333333333333333333333333333333333333333
+8291 3333333333333333333333333333333333333333333333333333333
+8292 3333333333333333333333333333333333333333333333333333333
+8293 3333333333333333333333333333333333333333333333333333333
+8294 3333333333333333333333333333333333333333333333333333333
+8295 3333333333333333333333333333333333333333333333333333333
+8296 3333333333333333333333333333333333333333333333333333333
+8297 3333333333333333333333333333333333333333333333333333333
+8298 3333333333333333333333333333333333333333333333333333333
+8299 3333333333333333333333333333333333333333333333333333333
+8300 3333333333333333333333333333333333333333333333333333333
+8301 3333333333333333333333333333333333333333333333333333333
+8302 3333333333333333333333333333333333333333333333333333333
+8303 3333333333333333333333333333333333333333333333333333333
+8304 3333333333333333333333333333333333333333333333333333333
+8305 3333333333333333333333333333333333333333333333333333333
+8306 3333333333333333333333333333333333333333333333333333333
+8307 3333333333333333333333333333333333333333333333333333333
+8308 3333333333333333333333333333333333333333333333333333333
+8309 3333333333333333333333333333333333333333333333333333333
+8310 3333333333333333333333333333333333333333333333333333333
+8311 3333333333333333333333333333333333333333333333333333333
+8312 3333333333333333333333333333333333333333333333333333333
+8313 3333333333333333333333333333333333333333333333333333333
+8314 3333333333333333333333333333333333333333333333333333333
+8315 3333333333333333333333333333333333333333333333333333333
+8316 3333333333333333333333333333333333333333333333333333333
+8317 3333333333333333333333333333333333333333333333333333333
+8318 3333333333333333333333333333333333333333333333333333333
+8319 3333333333333333333333333333333333333333333333333333333
+8320 3333333333333333333333333333333333333333333333333333333
+8321 3333333333333333333333333333333333333333333333333333333
+8322 3333333333333333333333333333333333333333333333333333333
+8323 3333333333333333333333333333333333333333333333333333333
+8324 3333333333333333333333333333333333333333333333333333333
+8325 3333333333333333333333333333333333333333333333333333333
+8326 3333333333333333333333333333333333333333333333333333333
+8327 3333333333333333333333333333333333333333333333333333333
+8328 3333333333333333333333333333333333333333333333333333333
+8329 3333333333333333333333333333333333333333333333333333333
+8330 3333333333333333333333333333333333333333333333333333333
+8331 3333333333333333333333333333333333333333333333333333333
+8332 3333333333333333333333333333333333333333333333333333333
+8333 3333333333333333333333333333333333333333333333333333333
+8334 3333333333333333333333333333333333333333333333333333333
+8335 3333333333333333333333333333333333333333333333333333333
+8336 3333333333333333333333333333333333333333333333333333333
+8337 3333333333333333333333333333333333333333333333333333333
+8338 3333333333333333333333333333333333333333333333333333333
+8339 3333333333333333333333333333333333333333333333333333333
+8340 3333333333333333333333333333333333333333333333333333333
+8341 3333333333333333333333333333333333333333333333333333333
+8342 3333333333333333333333333333333333333333333333333333333
+8343 3333333333333333333333333333333333333333333333333333333
+8344 3333333333333333333333333333333333333333333333333333333
+8345 3333333333333333333333333333333333333333333333333333333
+8346 3333333333333333333333333333333333333333333333333333333
+8347 3333333333333333333333333333333333333333333333333333333
+8348 3333333333333333333333333333333333333333333333333333333
+8349 3333333333333333333333333333333333333333333333333333333
+8350 3333333333333333333333333333333333333333333333333333333
+8351 3333333333333333333333333333333333333333333333333333333
+8352 3333333333333333333333333333333333333333333333333333333
+8353 3333333333333333333333333333333333333333333333333333333
+8354 3333333333333333333333333333333333333333333333333333333
+8355 3333333333333333333333333333333333333333333333333333333
+8356 3333333333333333333333333333333333333333333333333333333
+8357 3333333333333333333333333333333333333333333333333333333
+8358 3333333333333333333333333333333333333333333333333333333
+8359 3333333333333333333333333333333333333333333333333333333
+8360 3333333333333333333333333333333333333333333333333333333
+8361 3333333333333333333333333333333333333333333333333333333
+8362 3333333333333333333333333333333333333333333333333333333
+8363 3333333333333333333333333333333333333333333333333333333
+8364 3333333333333333333333333333333333333333333333333333333
+8365 3333333333333333333333333333333333333333333333333333333
+8366 3333333333333333333333333333333333333333333333333333333
+8367 3333333333333333333333333333333333333333333333333333333
+8368 3333333333333333333333333333333333333333333333333333333
+8369 3333333333333333333333333333333333333333333333333333333
+8370 3333333333333333333333333333333333333333333333333333333
+8371 3333333333333333333333333333333333333333333333333333333
+8372 3333333333333333333333333333333333333333333333333333333
+8373 3333333333333333333333333333333333333333333333333333333
+8374 3333333333333333333333333333333333333333333333333333333
+8375 3333333333333333333333333333333333333333333333333333333
+8376 3333333333333333333333333333333333333333333333333333333
+8377 3333333333333333333333333333333333333333333333333333333
+8378 3333333333333333333333333333333333333333333333333333333
+8379 3333333333333333333333333333333333333333333333333333333
+8380 3333333333333333333333333333333333333333333333333333333
+8381 3333333333333333333333333333333333333333333333333333333
+8382 3333333333333333333333333333333333333333333333333333333
+8383 3333333333333333333333333333333333333333333333333333333
+8384 3333333333333333333333333333333333333333333333333333333
+8385 3333333333333333333333333333333333333333333333333333333
+8386 3333333333333333333333333333333333333333333333333333333
+8387 3333333333333333333333333333333333333333333333333333333
+8388 3333333333333333333333333333333333333333333333333333333
+8389 3333333333333333333333333333333333333333333333333333333
+8390 3333333333333333333333333333333333333333333333333333333
+8391 3333333333333333333333333333333333333333333333333333333
+8392 3333333333333333333333333333333333333333333333333333333
+8393 3333333333333333333333333333333333333333333333333333333
+8394 3333333333333333333333333333333333333333333333333333333
+8395 3333333333333333333333333333333333333333333333333333333
+8396 3333333333333333333333333333333333333333333333333333333
+8397 3333333333333333333333333333333333333333333333333333333
+8398 3333333333333333333333333333333333333333333333333333333
+8399 3333333333333333333333333333333333333333333333333333333
+8400 3333333333333333333333333333333333333333333333333333333
+8401 3333333333333333333333333333333333333333333333333333333
+8402 3333333333333333333333333333333333333333333333333333333
+8403 3333333333333333333333333333333333333333333333333333333
+8404 3333333333333333333333333333333333333333333333333333333
+8405 3333333333333333333333333333333333333333333333333333333
+8406 3333333333333333333333333333333333333333333333333333333
+8407 3333333333333333333333333333333333333333333333333333333
+8408 3333333333333333333333333333333333333333333333333333333
+8409 3333333333333333333333333333333333333333333333333333333
+8410 3333333333333333333333333333333333333333333333333333333
+8411 3333333333333333333333333333333333333333333333333333333
+8412 3333333333333333333333333333333333333333333333333333333
+8413 3333333333333333333333333333333333333333333333333333333
+8414 3333333333333333333333333333333333333333333333333333333
+8415 3333333333333333333333333333333333333333333333333333333
+8416 3333333333333333333333333333333333333333333333333333333
+8417 3333333333333333333333333333333333333333333333333333333
+8418 3333333333333333333333333333333333333333333333333333333
+8419 3333333333333333333333333333333333333333333333333333333
+8420 3333333333333333333333333333333333333333333333333333333
+8421 3333333333333333333333333333333333333333333333333333333
+8422 3333333333333333333333333333333333333333333333333333333
+8423 3333333333333333333333333333333333333333333333333333333
+8424 3333333333333333333333333333333333333333333333333333333
+8425 3333333333333333333333333333333333333333333333333333333
+8426 3333333333333333333333333333333333333333333333333333333
+8427 3333333333333333333333333333333333333333333333333333333
+8428 3333333333333333333333333333333333333333333333333333333
+8429 3333333333333333333333333333333333333333333333333333333
+8430 3333333333333333333333333333333333333333333333333333333
+8431 3333333333333333333333333333333333333333333333333333333
+8432 3333333333333333333333333333333333333333333333333333333
+8433 3333333333333333333333333333333333333333333333333333333
+8434 3333333333333333333333333333333333333333333333333333333
+8435 3333333333333333333333333333333333333333333333333333333
+8436 3333333333333333333333333333333333333333333333333333333
+8437 3333333333333333333333333333333333333333333333333333333
+8438 3333333333333333333333333333333333333333333333333333333
+8439 3333333333333333333333333333333333333333333333333333333
+8440 3333333333333333333333333333333333333333333333333333333
+8441 3333333333333333333333333333333333333333333333333333333
+8442 3333333333333333333333333333333333333333333333333333333
+8443 3333333333333333333333333333333333333333333333333333333
+8444 3333333333333333333333333333333333333333333333333333333
+8445 3333333333333333333333333333333333333333333333333333333
+8446 3333333333333333333333333333333333333333333333333333333
+8447 3333333333333333333333333333333333333333333333333333333
+8448 3333333333333333333333333333333333333333333333333333333
+8449 3333333333333333333333333333333333333333333333333333333
+8450 3333333333333333333333333333333333333333333333333333333
+8451 3333333333333333333333333333333333333333333333333333333
+8452 3333333333333333333333333333333333333333333333333333333
+8453 3333333333333333333333333333333333333333333333333333333
+8454 3333333333333333333333333333333333333333333333333333333
+8455 3333333333333333333333333333333333333333333333333333333
+8456 3333333333333333333333333333333333333333333333333333333
+8457 3333333333333333333333333333333333333333333333333333333
+8458 3333333333333333333333333333333333333333333333333333333
+8459 3333333333333333333333333333333333333333333333333333333
+8460 3333333333333333333333333333333333333333333333333333333
+8461 3333333333333333333333333333333333333333333333333333333
+8462 3333333333333333333333333333333333333333333333333333333
+8463 3333333333333333333333333333333333333333333333333333333
+8464 3333333333333333333333333333333333333333333333333333333
+8465 3333333333333333333333333333333333333333333333333333333
+8466 3333333333333333333333333333333333333333333333333333333
+8467 3333333333333333333333333333333333333333333333333333333
+8468 3333333333333333333333333333333333333333333333333333333
+8469 3333333333333333333333333333333333333333333333333333333
+8470 3333333333333333333333333333333333333333333333333333333
+8471 3333333333333333333333333333333333333333333333333333333
+8472 3333333333333333333333333333333333333333333333333333333
+8473 3333333333333333333333333333333333333333333333333333333
+8474 3333333333333333333333333333333333333333333333333333333
+8475 3333333333333333333333333333333333333333333333333333333
+8476 3333333333333333333333333333333333333333333333333333333
+8477 3333333333333333333333333333333333333333333333333333333
+8478 3333333333333333333333333333333333333333333333333333333
+8479 3333333333333333333333333333333333333333333333333333333
+8480 3333333333333333333333333333333333333333333333333333333
+8481 3333333333333333333333333333333333333333333333333333333
+8482 3333333333333333333333333333333333333333333333333333333
+8483 3333333333333333333333333333333333333333333333333333333
+8484 3333333333333333333333333333333333333333333333333333333
+8485 3333333333333333333333333333333333333333333333333333333
+8486 3333333333333333333333333333333333333333333333333333333
+8487 3333333333333333333333333333333333333333333333333333333
+8488 3333333333333333333333333333333333333333333333333333333
+8489 3333333333333333333333333333333333333333333333333333333
+8490 3333333333333333333333333333333333333333333333333333333
+8491 3333333333333333333333333333333333333333333333333333333
+8492 3333333333333333333333333333333333333333333333333333333
+8493 3333333333333333333333333333333333333333333333333333333
+8494 3333333333333333333333333333333333333333333333333333333
+8495 3333333333333333333333333333333333333333333333333333333
+8496 3333333333333333333333333333333333333333333333333333333
+8497 3333333333333333333333333333333333333333333333333333333
+8498 3333333333333333333333333333333333333333333333333333333
+8499 3333333333333333333333333333333333333333333333333333333
+8500 3333333333333333333333333333333333333333333333333333333
+8501 3333333333333333333333333333333333333333333333333333333
+8502 3333333333333333333333333333333333333333333333333333333
+8503 3333333333333333333333333333333333333333333333333333333
+8504 3333333333333333333333333333333333333333333333333333333
+8505 3333333333333333333333333333333333333333333333333333333
+8506 3333333333333333333333333333333333333333333333333333333
+8507 3333333333333333333333333333333333333333333333333333333
+8508 3333333333333333333333333333333333333333333333333333333
+8509 3333333333333333333333333333333333333333333333333333333
+8510 3333333333333333333333333333333333333333333333333333333
+8511 3333333333333333333333333333333333333333333333333333333
+8512 3333333333333333333333333333333333333333333333333333333
+8513 3333333333333333333333333333333333333333333333333333333
+8514 3333333333333333333333333333333333333333333333333333333
+8515 3333333333333333333333333333333333333333333333333333333
+8516 3333333333333333333333333333333333333333333333333333333
+8517 3333333333333333333333333333333333333333333333333333333
+8518 3333333333333333333333333333333333333333333333333333333
+8519 3333333333333333333333333333333333333333333333333333333
+8520 3333333333333333333333333333333333333333333333333333333
+8521 3333333333333333333333333333333333333333333333333333333
+8522 3333333333333333333333333333333333333333333333333333333
+8523 3333333333333333333333333333333333333333333333333333333
+8524 3333333333333333333333333333333333333333333333333333333
+8525 3333333333333333333333333333333333333333333333333333333
+8526 3333333333333333333333333333333333333333333333333333333
+8527 3333333333333333333333333333333333333333333333333333333
+8528 3333333333333333333333333333333333333333333333333333333
+8529 3333333333333333333333333333333333333333333333333333333
+8530 3333333333333333333333333333333333333333333333333333333
+8531 3333333333333333333333333333333333333333333333333333333
+8532 3333333333333333333333333333333333333333333333333333333
+8533 3333333333333333333333333333333333333333333333333333333
+8534 3333333333333333333333333333333333333333333333333333333
+8535 3333333333333333333333333333333333333333333333333333333
+8536 3333333333333333333333333333333333333333333333333333333
+8537 3333333333333333333333333333333333333333333333333333333
+8538 3333333333333333333333333333333333333333333333333333333
+8539 3333333333333333333333333333333333333333333333333333333
+8540 3333333333333333333333333333333333333333333333333333333
+8541 3333333333333333333333333333333333333333333333333333333
+8542 3333333333333333333333333333333333333333333333333333333
+8543 3333333333333333333333333333333333333333333333333333333
+8544 3333333333333333333333333333333333333333333333333333333
+8545 3333333333333333333333333333333333333333333333333333333
+8546 3333333333333333333333333333333333333333333333333333333
+8547 3333333333333333333333333333333333333333333333333333333
+8548 3333333333333333333333333333333333333333333333333333333
+8549 3333333333333333333333333333333333333333333333333333333
+8550 3333333333333333333333333333333333333333333333333333333
+8551 3333333333333333333333333333333333333333333333333333333
+8552 3333333333333333333333333333333333333333333333333333333
+8553 3333333333333333333333333333333333333333333333333333333
+8554 3333333333333333333333333333333333333333333333333333333
+8555 3333333333333333333333333333333333333333333333333333333
+8556 3333333333333333333333333333333333333333333333333333333
+8557 3333333333333333333333333333333333333333333333333333333
+8558 3333333333333333333333333333333333333333333333333333333
+8559 3333333333333333333333333333333333333333333333333333333
+8560 3333333333333333333333333333333333333333333333333333333
+8561 3333333333333333333333333333333333333333333333333333333
+8562 3333333333333333333333333333333333333333333333333333333
+8563 3333333333333333333333333333333333333333333333333333333
+8564 3333333333333333333333333333333333333333333333333333333
+8565 3333333333333333333333333333333333333333333333333333333
+8566 3333333333333333333333333333333333333333333333333333333
+8567 3333333333333333333333333333333333333333333333333333333
+8568 3333333333333333333333333333333333333333333333333333333
+8569 3333333333333333333333333333333333333333333333333333333
+8570 3333333333333333333333333333333333333333333333333333333
+8571 3333333333333333333333333333333333333333333333333333333
+8572 3333333333333333333333333333333333333333333333333333333
+8573 3333333333333333333333333333333333333333333333333333333
+8574 3333333333333333333333333333333333333333333333333333333
+8575 3333333333333333333333333333333333333333333333333333333
+8576 3333333333333333333333333333333333333333333333333333333
+8577 3333333333333333333333333333333333333333333333333333333
+8578 3333333333333333333333333333333333333333333333333333333
+8579 3333333333333333333333333333333333333333333333333333333
+8580 3333333333333333333333333333333333333333333333333333333
+8581 3333333333333333333333333333333333333333333333333333333
+8582 3333333333333333333333333333333333333333333333333333333
+8583 3333333333333333333333333333333333333333333333333333333
+8584 3333333333333333333333333333333333333333333333333333333
+8585 3333333333333333333333333333333333333333333333333333333
+8586 3333333333333333333333333333333333333333333333333333333
+8587 3333333333333333333333333333333333333333333333333333333
+8588 3333333333333333333333333333333333333333333333333333333
+8589 3333333333333333333333333333333333333333333333333333333
+8590 3333333333333333333333333333333333333333333333333333333
+8591 3333333333333333333333333333333333333333333333333333333
+8592 3333333333333333333333333333333333333333333333333333333
+8593 3333333333333333333333333333333333333333333333333333333
+8594 3333333333333333333333333333333333333333333333333333333
+8595 3333333333333333333333333333333333333333333333333333333
+8596 3333333333333333333333333333333333333333333333333333333
+8597 3333333333333333333333333333333333333333333333333333333
+8598 3333333333333333333333333333333333333333333333333333333
+8599 3333333333333333333333333333333333333333333333333333333
+8600 3333333333333333333333333333333333333333333333333333333
+8601 3333333333333333333333333333333333333333333333333333333
+8602 3333333333333333333333333333333333333333333333333333333
+8603 3333333333333333333333333333333333333333333333333333333
+8604 3333333333333333333333333333333333333333333333333333333
+8605 3333333333333333333333333333333333333333333333333333333
+8606 3333333333333333333333333333333333333333333333333333333
+8607 3333333333333333333333333333333333333333333333333333333
+8608 3333333333333333333333333333333333333333333333333333333
+8609 3333333333333333333333333333333333333333333333333333333
+8610 3333333333333333333333333333333333333333333333333333333
+8611 3333333333333333333333333333333333333333333333333333333
+8612 3333333333333333333333333333333333333333333333333333333
+8613 3333333333333333333333333333333333333333333333333333333
+8614 3333333333333333333333333333333333333333333333333333333
+8615 3333333333333333333333333333333333333333333333333333333
+8616 3333333333333333333333333333333333333333333333333333333
+8617 3333333333333333333333333333333333333333333333333333333
+8618 3333333333333333333333333333333333333333333333333333333
+8619 3333333333333333333333333333333333333333333333333333333
+8620 3333333333333333333333333333333333333333333333333333333
+8621 3333333333333333333333333333333333333333333333333333333
+8622 3333333333333333333333333333333333333333333333333333333
+8623 3333333333333333333333333333333333333333333333333333333
+8624 3333333333333333333333333333333333333333333333333333333
+8625 3333333333333333333333333333333333333333333333333333333
+8626 3333333333333333333333333333333333333333333333333333333
+8627 3333333333333333333333333333333333333333333333333333333
+8628 3333333333333333333333333333333333333333333333333333333
+8629 3333333333333333333333333333333333333333333333333333333
+8630 3333333333333333333333333333333333333333333333333333333
+8631 3333333333333333333333333333333333333333333333333333333
+8632 3333333333333333333333333333333333333333333333333333333
+8633 3333333333333333333333333333333333333333333333333333333
+8634 3333333333333333333333333333333333333333333333333333333
+8635 3333333333333333333333333333333333333333333333333333333
+8636 3333333333333333333333333333333333333333333333333333333
+8637 3333333333333333333333333333333333333333333333333333333
+8638 3333333333333333333333333333333333333333333333333333333
+8639 3333333333333333333333333333333333333333333333333333333
+8640 3333333333333333333333333333333333333333333333333333333
+8641 3333333333333333333333333333333333333333333333333333333
+8642 3333333333333333333333333333333333333333333333333333333
+8643 3333333333333333333333333333333333333333333333333333333
+8644 3333333333333333333333333333333333333333333333333333333
+8645 3333333333333333333333333333333333333333333333333333333
+8646 3333333333333333333333333333333333333333333333333333333
+8647 3333333333333333333333333333333333333333333333333333333
+8648 3333333333333333333333333333333333333333333333333333333
+8649 3333333333333333333333333333333333333333333333333333333
+8650 3333333333333333333333333333333333333333333333333333333
+8651 3333333333333333333333333333333333333333333333333333333
+8652 3333333333333333333333333333333333333333333333333333333
+8653 3333333333333333333333333333333333333333333333333333333
+8654 3333333333333333333333333333333333333333333333333333333
+8655 3333333333333333333333333333333333333333333333333333333
+8656 3333333333333333333333333333333333333333333333333333333
+8657 3333333333333333333333333333333333333333333333333333333
+8658 3333333333333333333333333333333333333333333333333333333
+8659 3333333333333333333333333333333333333333333333333333333
+8660 3333333333333333333333333333333333333333333333333333333
+8661 3333333333333333333333333333333333333333333333333333333
+8662 3333333333333333333333333333333333333333333333333333333
+8663 3333333333333333333333333333333333333333333333333333333
+8664 3333333333333333333333333333333333333333333333333333333
+8665 3333333333333333333333333333333333333333333333333333333
+8666 3333333333333333333333333333333333333333333333333333333
+8667 3333333333333333333333333333333333333333333333333333333
+8668 3333333333333333333333333333333333333333333333333333333
+8669 3333333333333333333333333333333333333333333333333333333
+8670 3333333333333333333333333333333333333333333333333333333
+8671 3333333333333333333333333333333333333333333333333333333
+8672 3333333333333333333333333333333333333333333333333333333
+8673 3333333333333333333333333333333333333333333333333333333
+8674 3333333333333333333333333333333333333333333333333333333
+8675 3333333333333333333333333333333333333333333333333333333
+8676 3333333333333333333333333333333333333333333333333333333
+8677 3333333333333333333333333333333333333333333333333333333
+8678 3333333333333333333333333333333333333333333333333333333
+8679 3333333333333333333333333333333333333333333333333333333
+8680 3333333333333333333333333333333333333333333333333333333
+8681 3333333333333333333333333333333333333333333333333333333
+8682 3333333333333333333333333333333333333333333333333333333
+8683 3333333333333333333333333333333333333333333333333333333
+8684 3333333333333333333333333333333333333333333333333333333
+8685 3333333333333333333333333333333333333333333333333333333
+8686 3333333333333333333333333333333333333333333333333333333
+8687 3333333333333333333333333333333333333333333333333333333
+8688 3333333333333333333333333333333333333333333333333333333
+8689 3333333333333333333333333333333333333333333333333333333
+8690 3333333333333333333333333333333333333333333333333333333
+8691 3333333333333333333333333333333333333333333333333333333
+8692 3333333333333333333333333333333333333333333333333333333
+8693 3333333333333333333333333333333333333333333333333333333
+8694 3333333333333333333333333333333333333333333333333333333
+8695 3333333333333333333333333333333333333333333333333333333
+8696 3333333333333333333333333333333333333333333333333333333
+8697 3333333333333333333333333333333333333333333333333333333
+8698 3333333333333333333333333333333333333333333333333333333
+8699 3333333333333333333333333333333333333333333333333333333
+8700 3333333333333333333333333333333333333333333333333333333
+8701 3333333333333333333333333333333333333333333333333333333
+8702 3333333333333333333333333333333333333333333333333333333
+8703 3333333333333333333333333333333333333333333333333333333
+8704 3333333333333333333333333333333333333333333333333333333
+8705 3333333333333333333333333333333333333333333333333333333
+8706 3333333333333333333333333333333333333333333333333333333
+8707 3333333333333333333333333333333333333333333333333333333
+8708 3333333333333333333333333333333333333333333333333333333
+8709 3333333333333333333333333333333333333333333333333333333
+8710 3333333333333333333333333333333333333333333333333333333
+8711 3333333333333333333333333333333333333333333333333333333
+8712 3333333333333333333333333333333333333333333333333333333
+8713 3333333333333333333333333333333333333333333333333333333
+8714 3333333333333333333333333333333333333333333333333333333
+8715 3333333333333333333333333333333333333333333333333333333
+8716 3333333333333333333333333333333333333333333333333333333
+8717 3333333333333333333333333333333333333333333333333333333
+8718 3333333333333333333333333333333333333333333333333333333
+8719 3333333333333333333333333333333333333333333333333333333
+8720 3333333333333333333333333333333333333333333333333333333
+8721 3333333333333333333333333333333333333333333333333333333
+8722 3333333333333333333333333333333333333333333333333333333
+8723 3333333333333333333333333333333333333333333333333333333
+8724 3333333333333333333333333333333333333333333333333333333
+8725 3333333333333333333333333333333333333333333333333333333
+8726 3333333333333333333333333333333333333333333333333333333
+8727 3333333333333333333333333333333333333333333333333333333
+8728 3333333333333333333333333333333333333333333333333333333
+8729 3333333333333333333333333333333333333333333333333333333
+8730 3333333333333333333333333333333333333333333333333333333
+8731 3333333333333333333333333333333333333333333333333333333
+8732 3333333333333333333333333333333333333333333333333333333
+8733 3333333333333333333333333333333333333333333333333333333
+8734 3333333333333333333333333333333333333333333333333333333
+8735 3333333333333333333333333333333333333333333333333333333
+8736 3333333333333333333333333333333333333333333333333333333
+8737 3333333333333333333333333333333333333333333333333333333
+8738 3333333333333333333333333333333333333333333333333333333
+8739 3333333333333333333333333333333333333333333333333333333
+8740 3333333333333333333333333333333333333333333333333333333
+8741 3333333333333333333333333333333333333333333333333333333
+8742 3333333333333333333333333333333333333333333333333333333
+8743 3333333333333333333333333333333333333333333333333333333
+8744 3333333333333333333333333333333333333333333333333333333
+8745 3333333333333333333333333333333333333333333333333333333
+8746 3333333333333333333333333333333333333333333333333333333
+8747 3333333333333333333333333333333333333333333333333333333
+8748 3333333333333333333333333333333333333333333333333333333
+8749 3333333333333333333333333333333333333333333333333333333
+8750 3333333333333333333333333333333333333333333333333333333
+8751 3333333333333333333333333333333333333333333333333333333
+8752 3333333333333333333333333333333333333333333333333333333
+8753 3333333333333333333333333333333333333333333333333333333
+8754 3333333333333333333333333333333333333333333333333333333
+8755 3333333333333333333333333333333333333333333333333333333
+8756 3333333333333333333333333333333333333333333333333333333
+8757 3333333333333333333333333333333333333333333333333333333
+8758 3333333333333333333333333333333333333333333333333333333
+8759 3333333333333333333333333333333333333333333333333333333
+8760 3333333333333333333333333333333333333333333333333333333
+8761 3333333333333333333333333333333333333333333333333333333
+8762 3333333333333333333333333333333333333333333333333333333
+8763 3333333333333333333333333333333333333333333333333333333
+8764 3333333333333333333333333333333333333333333333333333333
+8765 3333333333333333333333333333333333333333333333333333333
+8766 3333333333333333333333333333333333333333333333333333333
+8767 3333333333333333333333333333333333333333333333333333333
+8768 3333333333333333333333333333333333333333333333333333333
+8769 3333333333333333333333333333333333333333333333333333333
+8770 3333333333333333333333333333333333333333333333333333333
+8771 3333333333333333333333333333333333333333333333333333333
+8772 3333333333333333333333333333333333333333333333333333333
+8773 3333333333333333333333333333333333333333333333333333333
+8774 3333333333333333333333333333333333333333333333333333333
+8775 3333333333333333333333333333333333333333333333333333333
+8776 3333333333333333333333333333333333333333333333333333333
+8777 3333333333333333333333333333333333333333333333333333333
+8778 3333333333333333333333333333333333333333333333333333333
+8779 3333333333333333333333333333333333333333333333333333333
+8780 3333333333333333333333333333333333333333333333333333333
+8781 3333333333333333333333333333333333333333333333333333333
+8782 3333333333333333333333333333333333333333333333333333333
+8783 3333333333333333333333333333333333333333333333333333333
+8784 3333333333333333333333333333333333333333333333333333333
+8785 3333333333333333333333333333333333333333333333333333333
+8786 3333333333333333333333333333333333333333333333333333333
+8787 3333333333333333333333333333333333333333333333333333333
+8788 3333333333333333333333333333333333333333333333333333333
+8789 3333333333333333333333333333333333333333333333333333333
+8790 3333333333333333333333333333333333333333333333333333333
+8791 3333333333333333333333333333333333333333333333333333333
+8792 3333333333333333333333333333333333333333333333333333333
+8793 3333333333333333333333333333333333333333333333333333333
+8794 3333333333333333333333333333333333333333333333333333333
+8795 3333333333333333333333333333333333333333333333333333333
+8796 3333333333333333333333333333333333333333333333333333333
+8797 3333333333333333333333333333333333333333333333333333333
+8798 3333333333333333333333333333333333333333333333333333333
+8799 3333333333333333333333333333333333333333333333333333333
+8800 3333333333333333333333333333333333333333333333333333333
+8801 3333333333333333333333333333333333333333333333333333333
+8802 3333333333333333333333333333333333333333333333333333333
+8803 3333333333333333333333333333333333333333333333333333333
+8804 3333333333333333333333333333333333333333333333333333333
+8805 3333333333333333333333333333333333333333333333333333333
+8806 3333333333333333333333333333333333333333333333333333333
+8807 3333333333333333333333333333333333333333333333333333333
+8808 3333333333333333333333333333333333333333333333333333333
+8809 3333333333333333333333333333333333333333333333333333333
+8810 3333333333333333333333333333333333333333333333333333333
+8811 3333333333333333333333333333333333333333333333333333333
+8812 3333333333333333333333333333333333333333333333333333333
+8813 3333333333333333333333333333333333333333333333333333333
+8814 3333333333333333333333333333333333333333333333333333333
+8815 3333333333333333333333333333333333333333333333333333333
+8816 3333333333333333333333333333333333333333333333333333333
+8817 3333333333333333333333333333333333333333333333333333333
+8818 3333333333333333333333333333333333333333333333333333333
+8819 3333333333333333333333333333333333333333333333333333333
+8820 3333333333333333333333333333333333333333333333333333333
+8821 3333333333333333333333333333333333333333333333333333333
+8822 3333333333333333333333333333333333333333333333333333333
+8823 3333333333333333333333333333333333333333333333333333333
+8824 3333333333333333333333333333333333333333333333333333333
+8825 3333333333333333333333333333333333333333333333333333333
+8826 3333333333333333333333333333333333333333333333333333333
+8827 3333333333333333333333333333333333333333333333333333333
+8828 3333333333333333333333333333333333333333333333333333333
+8829 3333333333333333333333333333333333333333333333333333333
+8830 3333333333333333333333333333333333333333333333333333333
+8831 3333333333333333333333333333333333333333333333333333333
+8832 3333333333333333333333333333333333333333333333333333333
+8833 3333333333333333333333333333333333333333333333333333333
+8834 3333333333333333333333333333333333333333333333333333333
+8835 3333333333333333333333333333333333333333333333333333333
+8836 3333333333333333333333333333333333333333333333333333333
+8837 3333333333333333333333333333333333333333333333333333333
+8838 3333333333333333333333333333333333333333333333333333333
+8839 3333333333333333333333333333333333333333333333333333333
+8840 3333333333333333333333333333333333333333333333333333333
+8841 3333333333333333333333333333333333333333333333333333333
+8842 3333333333333333333333333333333333333333333333333333333
+8843 3333333333333333333333333333333333333333333333333333333
+8844 3333333333333333333333333333333333333333333333333333333
+8845 3333333333333333333333333333333333333333333333333333333
+8846 3333333333333333333333333333333333333333333333333333333
+8847 3333333333333333333333333333333333333333333333333333333
+8848 3333333333333333333333333333333333333333333333333333333
+8849 3333333333333333333333333333333333333333333333333333333
+8850 3333333333333333333333333333333333333333333333333333333
+8851 3333333333333333333333333333333333333333333333333333333
+8852 3333333333333333333333333333333333333333333333333333333
+8853 3333333333333333333333333333333333333333333333333333333
+8854 3333333333333333333333333333333333333333333333333333333
+8855 3333333333333333333333333333333333333333333333333333333
+8856 3333333333333333333333333333333333333333333333333333333
+8857 3333333333333333333333333333333333333333333333333333333
+8858 3333333333333333333333333333333333333333333333333333333
+8859 3333333333333333333333333333333333333333333333333333333
+8860 3333333333333333333333333333333333333333333333333333333
+8861 3333333333333333333333333333333333333333333333333333333
+8862 3333333333333333333333333333333333333333333333333333333
+8863 3333333333333333333333333333333333333333333333333333333
+8864 3333333333333333333333333333333333333333333333333333333
+8865 3333333333333333333333333333333333333333333333333333333
+8866 3333333333333333333333333333333333333333333333333333333
+8867 3333333333333333333333333333333333333333333333333333333
+8868 3333333333333333333333333333333333333333333333333333333
+8869 3333333333333333333333333333333333333333333333333333333
+8870 3333333333333333333333333333333333333333333333333333333
+8871 3333333333333333333333333333333333333333333333333333333
+8872 3333333333333333333333333333333333333333333333333333333
+8873 3333333333333333333333333333333333333333333333333333333
+8874 3333333333333333333333333333333333333333333333333333333
+8875 3333333333333333333333333333333333333333333333333333333
+8876 3333333333333333333333333333333333333333333333333333333
+8877 3333333333333333333333333333333333333333333333333333333
+8878 3333333333333333333333333333333333333333333333333333333
+8879 3333333333333333333333333333333333333333333333333333333
+8880 3333333333333333333333333333333333333333333333333333333
+8881 3333333333333333333333333333333333333333333333333333333
+8882 3333333333333333333333333333333333333333333333333333333
+8883 3333333333333333333333333333333333333333333333333333333
+8884 3333333333333333333333333333333333333333333333333333333
+8885 3333333333333333333333333333333333333333333333333333333
+8886 3333333333333333333333333333333333333333333333333333333
+8887 3333333333333333333333333333333333333333333333333333333
+8888 3333333333333333333333333333333333333333333333333333333
+8889 3333333333333333333333333333333333333333333333333333333
+8890 3333333333333333333333333333333333333333333333333333333
+8891 3333333333333333333333333333333333333333333333333333333
+8892 3333333333333333333333333333333333333333333333333333333
+8893 3333333333333333333333333333333333333333333333333333333
+8894 3333333333333333333333333333333333333333333333333333333
+8895 3333333333333333333333333333333333333333333333333333333
+8896 3333333333333333333333333333333333333333333333333333333
+8897 3333333333333333333333333333333333333333333333333333333
+8898 3333333333333333333333333333333333333333333333333333333
+8899 3333333333333333333333333333333333333333333333333333333
+8900 3333333333333333333333333333333333333333333333333333333
+8901 3333333333333333333333333333333333333333333333333333333
+8902 3333333333333333333333333333333333333333333333333333333
+8903 3333333333333333333333333333333333333333333333333333333
+8904 3333333333333333333333333333333333333333333333333333333
+8905 3333333333333333333333333333333333333333333333333333333
+8906 3333333333333333333333333333333333333333333333333333333
+8907 3333333333333333333333333333333333333333333333333333333
+8908 3333333333333333333333333333333333333333333333333333333
+8909 3333333333333333333333333333333333333333333333333333333
+8910 3333333333333333333333333333333333333333333333333333333
+8911 3333333333333333333333333333333333333333333333333333333
+8912 3333333333333333333333333333333333333333333333333333333
+8913 3333333333333333333333333333333333333333333333333333333
+8914 3333333333333333333333333333333333333333333333333333333
+8915 3333333333333333333333333333333333333333333333333333333
+8916 3333333333333333333333333333333333333333333333333333333
+8917 3333333333333333333333333333333333333333333333333333333
+8918 3333333333333333333333333333333333333333333333333333333
+8919 3333333333333333333333333333333333333333333333333333333
+8920 3333333333333333333333333333333333333333333333333333333
+8921 3333333333333333333333333333333333333333333333333333333
+8922 3333333333333333333333333333333333333333333333333333333
+8923 3333333333333333333333333333333333333333333333333333333
+8924 3333333333333333333333333333333333333333333333333333333
+8925 3333333333333333333333333333333333333333333333333333333
+8926 3333333333333333333333333333333333333333333333333333333
+8927 3333333333333333333333333333333333333333333333333333333
+8928 3333333333333333333333333333333333333333333333333333333
+8929 3333333333333333333333333333333333333333333333333333333
+8930 3333333333333333333333333333333333333333333333333333333
+8931 3333333333333333333333333333333333333333333333333333333
+8932 3333333333333333333333333333333333333333333333333333333
+8933 3333333333333333333333333333333333333333333333333333333
+8934 3333333333333333333333333333333333333333333333333333333
+8935 3333333333333333333333333333333333333333333333333333333
+8936 3333333333333333333333333333333333333333333333333333333
+8937 3333333333333333333333333333333333333333333333333333333
+8938 3333333333333333333333333333333333333333333333333333333
+8939 3333333333333333333333333333333333333333333333333333333
+8940 3333333333333333333333333333333333333333333333333333333
+8941 3333333333333333333333333333333333333333333333333333333
+8942 3333333333333333333333333333333333333333333333333333333
+8943 3333333333333333333333333333333333333333333333333333333
+8944 3333333333333333333333333333333333333333333333333333333
+8945 3333333333333333333333333333333333333333333333333333333
+8946 3333333333333333333333333333333333333333333333333333333
+8947 3333333333333333333333333333333333333333333333333333333
+8948 3333333333333333333333333333333333333333333333333333333
+8949 3333333333333333333333333333333333333333333333333333333
+8950 3333333333333333333333333333333333333333333333333333333
+8951 3333333333333333333333333333333333333333333333333333333
+8952 3333333333333333333333333333333333333333333333333333333
+8953 3333333333333333333333333333333333333333333333333333333
+8954 3333333333333333333333333333333333333333333333333333333
+8955 3333333333333333333333333333333333333333333333333333333
+8956 3333333333333333333333333333333333333333333333333333333
+8957 3333333333333333333333333333333333333333333333333333333
+8958 3333333333333333333333333333333333333333333333333333333
+8959 3333333333333333333333333333333333333333333333333333333
+8960 3333333333333333333333333333333333333333333333333333333
+8961 3333333333333333333333333333333333333333333333333333333
+8962 3333333333333333333333333333333333333333333333333333333
+8963 3333333333333333333333333333333333333333333333333333333
+8964 3333333333333333333333333333333333333333333333333333333
+8965 3333333333333333333333333333333333333333333333333333333
+8966 3333333333333333333333333333333333333333333333333333333
+8967 3333333333333333333333333333333333333333333333333333333
+8968 3333333333333333333333333333333333333333333333333333333
+8969 3333333333333333333333333333333333333333333333333333333
+8970 3333333333333333333333333333333333333333333333333333333
+8971 3333333333333333333333333333333333333333333333333333333
+8972 3333333333333333333333333333333333333333333333333333333
+8973 3333333333333333333333333333333333333333333333333333333
+8974 3333333333333333333333333333333333333333333333333333333
+8975 3333333333333333333333333333333333333333333333333333333
+8976 3333333333333333333333333333333333333333333333333333333
+8977 3333333333333333333333333333333333333333333333333333333
+8978 3333333333333333333333333333333333333333333333333333333
+8979 3333333333333333333333333333333333333333333333333333333
+8980 3333333333333333333333333333333333333333333333333333333
+8981 3333333333333333333333333333333333333333333333333333333
+8982 3333333333333333333333333333333333333333333333333333333
+8983 3333333333333333333333333333333333333333333333333333333
+8984 3333333333333333333333333333333333333333333333333333333
+8985 3333333333333333333333333333333333333333333333333333333
+8986 3333333333333333333333333333333333333333333333333333333
+8987 3333333333333333333333333333333333333333333333333333333
+8988 3333333333333333333333333333333333333333333333333333333
+8989 3333333333333333333333333333333333333333333333333333333
+8990 3333333333333333333333333333333333333333333333333333333
+8991 3333333333333333333333333333333333333333333333333333333
+8992 3333333333333333333333333333333333333333333333333333333
+8993 3333333333333333333333333333333333333333333333333333333
+8994 3333333333333333333333333333333333333333333333333333333
+8995 3333333333333333333333333333333333333333333333333333333
+8996 3333333333333333333333333333333333333333333333333333333
+8997 3333333333333333333333333333333333333333333333333333333
+8998 3333333333333333333333333333333333333333333333333333333
+8999 3333333333333333333333333333333333333333333333333333333
+9000 3333333333333333333333333333333333333333333333333333333
+9001 3333333333333333333333333333333333333333333333333333333
+9002 3333333333333333333333333333333333333333333333333333333
+9003 3333333333333333333333333333333333333333333333333333333
+9004 3333333333333333333333333333333333333333333333333333333
+9005 3333333333333333333333333333333333333333333333333333333
+9006 3333333333333333333333333333333333333333333333333333333
+9007 3333333333333333333333333333333333333333333333333333333
+9008 3333333333333333333333333333333333333333333333333333333
+9009 3333333333333333333333333333333333333333333333333333333
+9010 3333333333333333333333333333333333333333333333333333333
+9011 3333333333333333333333333333333333333333333333333333333
+9012 3333333333333333333333333333333333333333333333333333333
+9013 3333333333333333333333333333333333333333333333333333333
+9014 3333333333333333333333333333333333333333333333333333333
+9015 3333333333333333333333333333333333333333333333333333333
+9016 3333333333333333333333333333333333333333333333333333333
+9017 3333333333333333333333333333333333333333333333333333333
+9018 3333333333333333333333333333333333333333333333333333333
+9019 3333333333333333333333333333333333333333333333333333333
+9020 3333333333333333333333333333333333333333333333333333333
+9021 3333333333333333333333333333333333333333333333333333333
+9022 3333333333333333333333333333333333333333333333333333333
+9023 3333333333333333333333333333333333333333333333333333333
+9024 3333333333333333333333333333333333333333333333333333333
+9025 3333333333333333333333333333333333333333333333333333333
+9026 3333333333333333333333333333333333333333333333333333333
+9027 3333333333333333333333333333333333333333333333333333333
+9028 3333333333333333333333333333333333333333333333333333333
+9029 3333333333333333333333333333333333333333333333333333333
+9030 3333333333333333333333333333333333333333333333333333333
+9031 3333333333333333333333333333333333333333333333333333333
+9032 3333333333333333333333333333333333333333333333333333333
+9033 3333333333333333333333333333333333333333333333333333333
+9034 3333333333333333333333333333333333333333333333333333333
+9035 3333333333333333333333333333333333333333333333333333333
+9036 3333333333333333333333333333333333333333333333333333333
+9037 3333333333333333333333333333333333333333333333333333333
+9038 3333333333333333333333333333333333333333333333333333333
+9039 3333333333333333333333333333333333333333333333333333333
+9040 3333333333333333333333333333333333333333333333333333333
+9041 3333333333333333333333333333333333333333333333333333333
+9042 3333333333333333333333333333333333333333333333333333333
+9043 3333333333333333333333333333333333333333333333333333333
+9044 3333333333333333333333333333333333333333333333333333333
+9045 3333333333333333333333333333333333333333333333333333333
+9046 3333333333333333333333333333333333333333333333333333333
+9047 3333333333333333333333333333333333333333333333333333333
+9048 3333333333333333333333333333333333333333333333333333333
+9049 3333333333333333333333333333333333333333333333333333333
+9050 3333333333333333333333333333333333333333333333333333333
+9051 3333333333333333333333333333333333333333333333333333333
+9052 3333333333333333333333333333333333333333333333333333333
+9053 3333333333333333333333333333333333333333333333333333333
+9054 3333333333333333333333333333333333333333333333333333333
+9055 3333333333333333333333333333333333333333333333333333333
+9056 3333333333333333333333333333333333333333333333333333333
+9057 3333333333333333333333333333333333333333333333333333333
+9058 3333333333333333333333333333333333333333333333333333333
+9059 3333333333333333333333333333333333333333333333333333333
+9060 3333333333333333333333333333333333333333333333333333333
+9061 3333333333333333333333333333333333333333333333333333333
+9062 3333333333333333333333333333333333333333333333333333333
+9063 3333333333333333333333333333333333333333333333333333333
+9064 3333333333333333333333333333333333333333333333333333333
+9065 3333333333333333333333333333333333333333333333333333333
+9066 3333333333333333333333333333333333333333333333333333333
+9067 3333333333333333333333333333333333333333333333333333333
+9068 3333333333333333333333333333333333333333333333333333333
+9069 3333333333333333333333333333333333333333333333333333333
+9070 3333333333333333333333333333333333333333333333333333333
+9071 3333333333333333333333333333333333333333333333333333333
+9072 3333333333333333333333333333333333333333333333333333333
+9073 3333333333333333333333333333333333333333333333333333333
+9074 3333333333333333333333333333333333333333333333333333333
+9075 3333333333333333333333333333333333333333333333333333333
+9076 3333333333333333333333333333333333333333333333333333333
+9077 3333333333333333333333333333333333333333333333333333333
+9078 3333333333333333333333333333333333333333333333333333333
+9079 3333333333333333333333333333333333333333333333333333333
+9080 3333333333333333333333333333333333333333333333333333333
+9081 3333333333333333333333333333333333333333333333333333333
+9082 3333333333333333333333333333333333333333333333333333333
+9083 3333333333333333333333333333333333333333333333333333333
+9084 3333333333333333333333333333333333333333333333333333333
+9085 3333333333333333333333333333333333333333333333333333333
+9086 3333333333333333333333333333333333333333333333333333333
+9087 3333333333333333333333333333333333333333333333333333333
+9088 3333333333333333333333333333333333333333333333333333333
+9089 3333333333333333333333333333333333333333333333333333333
+9090 3333333333333333333333333333333333333333333333333333333
+9091 3333333333333333333333333333333333333333333333333333333
+9092 3333333333333333333333333333333333333333333333333333333
+9093 3333333333333333333333333333333333333333333333333333333
+9094 3333333333333333333333333333333333333333333333333333333
+9095 3333333333333333333333333333333333333333333333333333333
+9096 3333333333333333333333333333333333333333333333333333333
+9097 3333333333333333333333333333333333333333333333333333333
+9098 3333333333333333333333333333333333333333333333333333333
+9099 3333333333333333333333333333333333333333333333333333333
+9100 3333333333333333333333333333333333333333333333333333333
+9101 3333333333333333333333333333333333333333333333333333333
+9102 3333333333333333333333333333333333333333333333333333333
+9103 3333333333333333333333333333333333333333333333333333333
+9104 3333333333333333333333333333333333333333333333333333333
+9105 3333333333333333333333333333333333333333333333333333333
+9106 3333333333333333333333333333333333333333333333333333333
+9107 3333333333333333333333333333333333333333333333333333333
+9108 3333333333333333333333333333333333333333333333333333333
+9109 3333333333333333333333333333333333333333333333333333333
+9110 3333333333333333333333333333333333333333333333333333333
+9111 3333333333333333333333333333333333333333333333333333333
+9112 3333333333333333333333333333333333333333333333333333333
+9113 3333333333333333333333333333333333333333333333333333333
+9114 3333333333333333333333333333333333333333333333333333333
+9115 3333333333333333333333333333333333333333333333333333333
+9116 3333333333333333333333333333333333333333333333333333333
+9117 3333333333333333333333333333333333333333333333333333333
+9118 3333333333333333333333333333333333333333333333333333333
+9119 3333333333333333333333333333333333333333333333333333333
+9120 3333333333333333333333333333333333333333333333333333333
+9121 3333333333333333333333333333333333333333333333333333333
+9122 3333333333333333333333333333333333333333333333333333333
+9123 3333333333333333333333333333333333333333333333333333333
+9124 3333333333333333333333333333333333333333333333333333333
+9125 3333333333333333333333333333333333333333333333333333333
+9126 3333333333333333333333333333333333333333333333333333333
+9127 3333333333333333333333333333333333333333333333333333333
+9128 3333333333333333333333333333333333333333333333333333333
+9129 3333333333333333333333333333333333333333333333333333333
+9130 3333333333333333333333333333333333333333333333333333333
+9131 3333333333333333333333333333333333333333333333333333333
+9132 3333333333333333333333333333333333333333333333333333333
+9133 3333333333333333333333333333333333333333333333333333333
+9134 3333333333333333333333333333333333333333333333333333333
+9135 3333333333333333333333333333333333333333333333333333333
+9136 3333333333333333333333333333333333333333333333333333333
+9137 3333333333333333333333333333333333333333333333333333333
+9138 3333333333333333333333333333333333333333333333333333333
+9139 3333333333333333333333333333333333333333333333333333333
+9140 3333333333333333333333333333333333333333333333333333333
+9141 3333333333333333333333333333333333333333333333333333333
+9142 3333333333333333333333333333333333333333333333333333333
+9143 3333333333333333333333333333333333333333333333333333333
+9144 3333333333333333333333333333333333333333333333333333333
+9145 3333333333333333333333333333333333333333333333333333333
+9146 3333333333333333333333333333333333333333333333333333333
+9147 3333333333333333333333333333333333333333333333333333333
+9148 3333333333333333333333333333333333333333333333333333333
+9149 3333333333333333333333333333333333333333333333333333333
+9150 3333333333333333333333333333333333333333333333333333333
+9151 3333333333333333333333333333333333333333333333333333333
+9152 3333333333333333333333333333333333333333333333333333333
+9153 3333333333333333333333333333333333333333333333333333333
+9154 3333333333333333333333333333333333333333333333333333333
+9155 3333333333333333333333333333333333333333333333333333333
+9156 3333333333333333333333333333333333333333333333333333333
+9157 3333333333333333333333333333333333333333333333333333333
+9158 3333333333333333333333333333333333333333333333333333333
+9159 3333333333333333333333333333333333333333333333333333333
+9160 3333333333333333333333333333333333333333333333333333333
+9161 3333333333333333333333333333333333333333333333333333333
+9162 3333333333333333333333333333333333333333333333333333333
+9163 3333333333333333333333333333333333333333333333333333333
+9164 3333333333333333333333333333333333333333333333333333333
+9165 3333333333333333333333333333333333333333333333333333333
+9166 3333333333333333333333333333333333333333333333333333333
+9167 3333333333333333333333333333333333333333333333333333333
+9168 3333333333333333333333333333333333333333333333333333333
+9169 3333333333333333333333333333333333333333333333333333333
+9170 3333333333333333333333333333333333333333333333333333333
+9171 3333333333333333333333333333333333333333333333333333333
+9172 3333333333333333333333333333333333333333333333333333333
+9173 3333333333333333333333333333333333333333333333333333333
+9174 3333333333333333333333333333333333333333333333333333333
+9175 3333333333333333333333333333333333333333333333333333333
+9176 3333333333333333333333333333333333333333333333333333333
+9177 3333333333333333333333333333333333333333333333333333333
+9178 3333333333333333333333333333333333333333333333333333333
+9179 3333333333333333333333333333333333333333333333333333333
+9180 3333333333333333333333333333333333333333333333333333333
+9181 3333333333333333333333333333333333333333333333333333333
+9182 3333333333333333333333333333333333333333333333333333333
+9183 3333333333333333333333333333333333333333333333333333333
+9184 3333333333333333333333333333333333333333333333333333333
+9185 3333333333333333333333333333333333333333333333333333333
+9186 3333333333333333333333333333333333333333333333333333333
+9187 3333333333333333333333333333333333333333333333333333333
+9188 3333333333333333333333333333333333333333333333333333333
+9189 3333333333333333333333333333333333333333333333333333333
+9190 3333333333333333333333333333333333333333333333333333333
+9191 3333333333333333333333333333333333333333333333333333333
+9192 3333333333333333333333333333333333333333333333333333333
+9193 3333333333333333333333333333333333333333333333333333333
+9194 3333333333333333333333333333333333333333333333333333333
+9195 3333333333333333333333333333333333333333333333333333333
+9196 3333333333333333333333333333333333333333333333333333333
+9197 3333333333333333333333333333333333333333333333333333333
+9198 3333333333333333333333333333333333333333333333333333333
+9199 3333333333333333333333333333333333333333333333333333333
+9200 3333333333333333333333333333333333333333333333333333333
+9201 3333333333333333333333333333333333333333333333333333333
+9202 3333333333333333333333333333333333333333333333333333333
+9203 3333333333333333333333333333333333333333333333333333333
+9204 3333333333333333333333333333333333333333333333333333333
+9205 3333333333333333333333333333333333333333333333333333333
+9206 3333333333333333333333333333333333333333333333333333333
+9207 3333333333333333333333333333333333333333333333333333333
+9208 3333333333333333333333333333333333333333333333333333333
+9209 3333333333333333333333333333333333333333333333333333333
+9210 3333333333333333333333333333333333333333333333333333333
+9211 3333333333333333333333333333333333333333333333333333333
+9212 3333333333333333333333333333333333333333333333333333333
+9213 3333333333333333333333333333333333333333333333333333333
+9214 3333333333333333333333333333333333333333333333333333333
+9215 3333333333333333333333333333333333333333333333333333333
+9216 3333333333333333333333333333333333333333333333333333333
+9217 3333333333333333333333333333333333333333333333333333333
+9218 3333333333333333333333333333333333333333333333333333333
+9219 3333333333333333333333333333333333333333333333333333333
+9220 3333333333333333333333333333333333333333333333333333333
+9221 3333333333333333333333333333333333333333333333333333333
+9222 3333333333333333333333333333333333333333333333333333333
+9223 3333333333333333333333333333333333333333333333333333333
+9224 3333333333333333333333333333333333333333333333333333333
+9225 3333333333333333333333333333333333333333333333333333333
+9226 3333333333333333333333333333333333333333333333333333333
+9227 3333333333333333333333333333333333333333333333333333333
+9228 3333333333333333333333333333333333333333333333333333333
+9229 3333333333333333333333333333333333333333333333333333333
+9230 3333333333333333333333333333333333333333333333333333333
+9231 3333333333333333333333333333333333333333333333333333333
+9232 3333333333333333333333333333333333333333333333333333333
+9233 3333333333333333333333333333333333333333333333333333333
+9234 3333333333333333333333333333333333333333333333333333333
+9235 3333333333333333333333333333333333333333333333333333333
+9236 3333333333333333333333333333333333333333333333333333333
+9237 3333333333333333333333333333333333333333333333333333333
+9238 3333333333333333333333333333333333333333333333333333333
+9239 3333333333333333333333333333333333333333333333333333333
+9240 3333333333333333333333333333333333333333333333333333333
+9241 3333333333333333333333333333333333333333333333333333333
+9242 3333333333333333333333333333333333333333333333333333333
+9243 3333333333333333333333333333333333333333333333333333333
+9244 3333333333333333333333333333333333333333333333333333333
+9245 3333333333333333333333333333333333333333333333333333333
+9246 3333333333333333333333333333333333333333333333333333333
+9247 3333333333333333333333333333333333333333333333333333333
+9248 3333333333333333333333333333333333333333333333333333333
+9249 3333333333333333333333333333333333333333333333333333333
+9250 3333333333333333333333333333333333333333333333333333333
+9251 3333333333333333333333333333333333333333333333333333333
+9252 3333333333333333333333333333333333333333333333333333333
+9253 3333333333333333333333333333333333333333333333333333333
+9254 3333333333333333333333333333333333333333333333333333333
+9255 3333333333333333333333333333333333333333333333333333333
+9256 3333333333333333333333333333333333333333333333333333333
+9257 3333333333333333333333333333333333333333333333333333333
+9258 3333333333333333333333333333333333333333333333333333333
+9259 3333333333333333333333333333333333333333333333333333333
+9260 3333333333333333333333333333333333333333333333333333333
+9261 3333333333333333333333333333333333333333333333333333333
+9262 3333333333333333333333333333333333333333333333333333333
+9263 3333333333333333333333333333333333333333333333333333333
+9264 3333333333333333333333333333333333333333333333333333333
+9265 3333333333333333333333333333333333333333333333333333333
+9266 3333333333333333333333333333333333333333333333333333333
+9267 3333333333333333333333333333333333333333333333333333333
+9268 3333333333333333333333333333333333333333333333333333333
+9269 3333333333333333333333333333333333333333333333333333333
+9270 3333333333333333333333333333333333333333333333333333333
+9271 3333333333333333333333333333333333333333333333333333333
+9272 3333333333333333333333333333333333333333333333333333333
+9273 3333333333333333333333333333333333333333333333333333333
+9274 3333333333333333333333333333333333333333333333333333333
+9275 3333333333333333333333333333333333333333333333333333333
+9276 3333333333333333333333333333333333333333333333333333333
+9277 3333333333333333333333333333333333333333333333333333333
+9278 3333333333333333333333333333333333333333333333333333333
+9279 3333333333333333333333333333333333333333333333333333333
+9280 3333333333333333333333333333333333333333333333333333333
+9281 3333333333333333333333333333333333333333333333333333333
+9282 3333333333333333333333333333333333333333333333333333333
+9283 3333333333333333333333333333333333333333333333333333333
+9284 3333333333333333333333333333333333333333333333333333333
+9285 3333333333333333333333333333333333333333333333333333333
+9286 3333333333333333333333333333333333333333333333333333333
+9287 3333333333333333333333333333333333333333333333333333333
+9288 3333333333333333333333333333333333333333333333333333333
+9289 3333333333333333333333333333333333333333333333333333333
+9290 3333333333333333333333333333333333333333333333333333333
+9291 3333333333333333333333333333333333333333333333333333333
+9292 3333333333333333333333333333333333333333333333333333333
+9293 3333333333333333333333333333333333333333333333333333333
+9294 3333333333333333333333333333333333333333333333333333333
+9295 3333333333333333333333333333333333333333333333333333333
+9296 3333333333333333333333333333333333333333333333333333333
+9297 3333333333333333333333333333333333333333333333333333333
+9298 3333333333333333333333333333333333333333333333333333333
+9299 3333333333333333333333333333333333333333333333333333333
+9300 3333333333333333333333333333333333333333333333333333333
+9301 3333333333333333333333333333333333333333333333333333333
+9302 3333333333333333333333333333333333333333333333333333333
+9303 3333333333333333333333333333333333333333333333333333333
+9304 3333333333333333333333333333333333333333333333333333333
+9305 3333333333333333333333333333333333333333333333333333333
+9306 3333333333333333333333333333333333333333333333333333333
+9307 3333333333333333333333333333333333333333333333333333333
+9308 3333333333333333333333333333333333333333333333333333333
+9309 3333333333333333333333333333333333333333333333333333333
+9310 3333333333333333333333333333333333333333333333333333333
+9311 3333333333333333333333333333333333333333333333333333333
+9312 3333333333333333333333333333333333333333333333333333333
+9313 3333333333333333333333333333333333333333333333333333333
+9314 3333333333333333333333333333333333333333333333333333333
+9315 3333333333333333333333333333333333333333333333333333333
+9316 3333333333333333333333333333333333333333333333333333333
+9317 3333333333333333333333333333333333333333333333333333333
+9318 3333333333333333333333333333333333333333333333333333333
+9319 3333333333333333333333333333333333333333333333333333333
+9320 3333333333333333333333333333333333333333333333333333333
+9321 3333333333333333333333333333333333333333333333333333333
+9322 3333333333333333333333333333333333333333333333333333333
+9323 3333333333333333333333333333333333333333333333333333333
+9324 3333333333333333333333333333333333333333333333333333333
+9325 3333333333333333333333333333333333333333333333333333333
+9326 3333333333333333333333333333333333333333333333333333333
+9327 3333333333333333333333333333333333333333333333333333333
+9328 3333333333333333333333333333333333333333333333333333333
+9329 3333333333333333333333333333333333333333333333333333333
+9330 3333333333333333333333333333333333333333333333333333333
+9331 3333333333333333333333333333333333333333333333333333333
+9332 3333333333333333333333333333333333333333333333333333333
+9333 3333333333333333333333333333333333333333333333333333333
+9334 3333333333333333333333333333333333333333333333333333333
+9335 3333333333333333333333333333333333333333333333333333333
+9336 3333333333333333333333333333333333333333333333333333333
+9337 3333333333333333333333333333333333333333333333333333333
+9338 3333333333333333333333333333333333333333333333333333333
+9339 3333333333333333333333333333333333333333333333333333333
+9340 3333333333333333333333333333333333333333333333333333333
+9341 3333333333333333333333333333333333333333333333333333333
+9342 3333333333333333333333333333333333333333333333333333333
+9343 3333333333333333333333333333333333333333333333333333333
+9344 3333333333333333333333333333333333333333333333333333333
+9345 3333333333333333333333333333333333333333333333333333333
+9346 3333333333333333333333333333333333333333333333333333333
+9347 3333333333333333333333333333333333333333333333333333333
+9348 3333333333333333333333333333333333333333333333333333333
+9349 3333333333333333333333333333333333333333333333333333333
+9350 3333333333333333333333333333333333333333333333333333333
+9351 3333333333333333333333333333333333333333333333333333333
+9352 3333333333333333333333333333333333333333333333333333333
+9353 3333333333333333333333333333333333333333333333333333333
+9354 3333333333333333333333333333333333333333333333333333333
+9355 3333333333333333333333333333333333333333333333333333333
+9356 3333333333333333333333333333333333333333333333333333333
+9357 3333333333333333333333333333333333333333333333333333333
+9358 3333333333333333333333333333333333333333333333333333333
+9359 3333333333333333333333333333333333333333333333333333333
+9360 3333333333333333333333333333333333333333333333333333333
+9361 3333333333333333333333333333333333333333333333333333333
+9362 3333333333333333333333333333333333333333333333333333333
+9363 3333333333333333333333333333333333333333333333333333333
+9364 3333333333333333333333333333333333333333333333333333333
+9365 3333333333333333333333333333333333333333333333333333333
+9366 3333333333333333333333333333333333333333333333333333333
+9367 3333333333333333333333333333333333333333333333333333333
+9368 3333333333333333333333333333333333333333333333333333333
+9369 3333333333333333333333333333333333333333333333333333333
+9370 3333333333333333333333333333333333333333333333333333333
+9371 3333333333333333333333333333333333333333333333333333333
+9372 3333333333333333333333333333333333333333333333333333333
+9373 3333333333333333333333333333333333333333333333333333333
+9374 3333333333333333333333333333333333333333333333333333333
+9375 3333333333333333333333333333333333333333333333333333333
+9376 3333333333333333333333333333333333333333333333333333333
+9377 3333333333333333333333333333333333333333333333333333333
+9378 3333333333333333333333333333333333333333333333333333333
+9379 3333333333333333333333333333333333333333333333333333333
+9380 3333333333333333333333333333333333333333333333333333333
+9381 3333333333333333333333333333333333333333333333333333333
+9382 3333333333333333333333333333333333333333333333333333333
+9383 3333333333333333333333333333333333333333333333333333333
+9384 3333333333333333333333333333333333333333333333333333333
+9385 3333333333333333333333333333333333333333333333333333333
+9386 3333333333333333333333333333333333333333333333333333333
+9387 3333333333333333333333333333333333333333333333333333333
+9388 3333333333333333333333333333333333333333333333333333333
+9389 3333333333333333333333333333333333333333333333333333333
+9390 3333333333333333333333333333333333333333333333333333333
+9391 3333333333333333333333333333333333333333333333333333333
+9392 3333333333333333333333333333333333333333333333333333333
+9393 3333333333333333333333333333333333333333333333333333333
+9394 3333333333333333333333333333333333333333333333333333333
+9395 3333333333333333333333333333333333333333333333333333333
+9396 3333333333333333333333333333333333333333333333333333333
+9397 3333333333333333333333333333333333333333333333333333333
+9398 3333333333333333333333333333333333333333333333333333333
+9399 3333333333333333333333333333333333333333333333333333333
+9400 3333333333333333333333333333333333333333333333333333333
+9401 3333333333333333333333333333333333333333333333333333333
+9402 3333333333333333333333333333333333333333333333333333333
+9403 3333333333333333333333333333333333333333333333333333333
+9404 3333333333333333333333333333333333333333333333333333333
+9405 3333333333333333333333333333333333333333333333333333333
+9406 3333333333333333333333333333333333333333333333333333333
+9407 3333333333333333333333333333333333333333333333333333333
+9408 3333333333333333333333333333333333333333333333333333333
+9409 3333333333333333333333333333333333333333333333333333333
+9410 3333333333333333333333333333333333333333333333333333333
+9411 3333333333333333333333333333333333333333333333333333333
+9412 3333333333333333333333333333333333333333333333333333333
+9413 3333333333333333333333333333333333333333333333333333333
+9414 3333333333333333333333333333333333333333333333333333333
+9415 3333333333333333333333333333333333333333333333333333333
+9416 3333333333333333333333333333333333333333333333333333333
+9417 3333333333333333333333333333333333333333333333333333333
+9418 3333333333333333333333333333333333333333333333333333333
+9419 3333333333333333333333333333333333333333333333333333333
+9420 3333333333333333333333333333333333333333333333333333333
+9421 3333333333333333333333333333333333333333333333333333333
+9422 3333333333333333333333333333333333333333333333333333333
+9423 3333333333333333333333333333333333333333333333333333333
+9424 3333333333333333333333333333333333333333333333333333333
+9425 3333333333333333333333333333333333333333333333333333333
+9426 3333333333333333333333333333333333333333333333333333333
+9427 3333333333333333333333333333333333333333333333333333333
+9428 3333333333333333333333333333333333333333333333333333333
+9429 3333333333333333333333333333333333333333333333333333333
+9430 3333333333333333333333333333333333333333333333333333333
+9431 3333333333333333333333333333333333333333333333333333333
+9432 3333333333333333333333333333333333333333333333333333333
+9433 3333333333333333333333333333333333333333333333333333333
+9434 3333333333333333333333333333333333333333333333333333333
+9435 3333333333333333333333333333333333333333333333333333333
+9436 3333333333333333333333333333333333333333333333333333333
+9437 3333333333333333333333333333333333333333333333333333333
+9438 3333333333333333333333333333333333333333333333333333333
+9439 3333333333333333333333333333333333333333333333333333333
+9440 3333333333333333333333333333333333333333333333333333333
+9441 3333333333333333333333333333333333333333333333333333333
+9442 3333333333333333333333333333333333333333333333333333333
+9443 3333333333333333333333333333333333333333333333333333333
+9444 3333333333333333333333333333333333333333333333333333333
+9445 3333333333333333333333333333333333333333333333333333333
+9446 3333333333333333333333333333333333333333333333333333333
+9447 3333333333333333333333333333333333333333333333333333333
+9448 3333333333333333333333333333333333333333333333333333333
+9449 3333333333333333333333333333333333333333333333333333333
+9450 3333333333333333333333333333333333333333333333333333333
+9451 3333333333333333333333333333333333333333333333333333333
+9452 3333333333333333333333333333333333333333333333333333333
+9453 3333333333333333333333333333333333333333333333333333333
+9454 3333333333333333333333333333333333333333333333333333333
+9455 3333333333333333333333333333333333333333333333333333333
+9456 3333333333333333333333333333333333333333333333333333333
+9457 3333333333333333333333333333333333333333333333333333333
+9458 3333333333333333333333333333333333333333333333333333333
+9459 3333333333333333333333333333333333333333333333333333333
+9460 3333333333333333333333333333333333333333333333333333333
+9461 3333333333333333333333333333333333333333333333333333333
+9462 3333333333333333333333333333333333333333333333333333333
+9463 3333333333333333333333333333333333333333333333333333333
+9464 3333333333333333333333333333333333333333333333333333333
+9465 3333333333333333333333333333333333333333333333333333333
+9466 3333333333333333333333333333333333333333333333333333333
+9467 3333333333333333333333333333333333333333333333333333333
+9468 3333333333333333333333333333333333333333333333333333333
+9469 3333333333333333333333333333333333333333333333333333333
+9470 3333333333333333333333333333333333333333333333333333333
+9471 3333333333333333333333333333333333333333333333333333333
+9472 3333333333333333333333333333333333333333333333333333333
+9473 3333333333333333333333333333333333333333333333333333333
+9474 3333333333333333333333333333333333333333333333333333333
+9475 3333333333333333333333333333333333333333333333333333333
+9476 3333333333333333333333333333333333333333333333333333333
+9477 3333333333333333333333333333333333333333333333333333333
+9478 3333333333333333333333333333333333333333333333333333333
+9479 3333333333333333333333333333333333333333333333333333333
+9480 3333333333333333333333333333333333333333333333333333333
+9481 3333333333333333333333333333333333333333333333333333333
+9482 3333333333333333333333333333333333333333333333333333333
+9483 3333333333333333333333333333333333333333333333333333333
+9484 3333333333333333333333333333333333333333333333333333333
+9485 3333333333333333333333333333333333333333333333333333333
+9486 3333333333333333333333333333333333333333333333333333333
+9487 3333333333333333333333333333333333333333333333333333333
+9488 3333333333333333333333333333333333333333333333333333333
+9489 3333333333333333333333333333333333333333333333333333333
+9490 3333333333333333333333333333333333333333333333333333333
+9491 3333333333333333333333333333333333333333333333333333333
+9492 3333333333333333333333333333333333333333333333333333333
+9493 3333333333333333333333333333333333333333333333333333333
+9494 3333333333333333333333333333333333333333333333333333333
+9495 3333333333333333333333333333333333333333333333333333333
+9496 3333333333333333333333333333333333333333333333333333333
+9497 3333333333333333333333333333333333333333333333333333333
+9498 3333333333333333333333333333333333333333333333333333333
+9499 3333333333333333333333333333333333333333333333333333333
+9500 3333333333333333333333333333333333333333333333333333333
+9501 3333333333333333333333333333333333333333333333333333333
+9502 3333333333333333333333333333333333333333333333333333333
+9503 3333333333333333333333333333333333333333333333333333333
+9504 3333333333333333333333333333333333333333333333333333333
+9505 3333333333333333333333333333333333333333333333333333333
+9506 3333333333333333333333333333333333333333333333333333333
+9507 3333333333333333333333333333333333333333333333333333333
+9508 3333333333333333333333333333333333333333333333333333333
+9509 3333333333333333333333333333333333333333333333333333333
+9510 3333333333333333333333333333333333333333333333333333333
+9511 3333333333333333333333333333333333333333333333333333333
+9512 3333333333333333333333333333333333333333333333333333333
+9513 3333333333333333333333333333333333333333333333333333333
+9514 3333333333333333333333333333333333333333333333333333333
+9515 3333333333333333333333333333333333333333333333333333333
+9516 3333333333333333333333333333333333333333333333333333333
+9517 3333333333333333333333333333333333333333333333333333333
+9518 3333333333333333333333333333333333333333333333333333333
+9519 3333333333333333333333333333333333333333333333333333333
+9520 3333333333333333333333333333333333333333333333333333333
+9521 3333333333333333333333333333333333333333333333333333333
+9522 3333333333333333333333333333333333333333333333333333333
+9523 3333333333333333333333333333333333333333333333333333333
+9524 3333333333333333333333333333333333333333333333333333333
+9525 3333333333333333333333333333333333333333333333333333333
+9526 3333333333333333333333333333333333333333333333333333333
+9527 3333333333333333333333333333333333333333333333333333333
+9528 3333333333333333333333333333333333333333333333333333333
+9529 3333333333333333333333333333333333333333333333333333333
+9530 3333333333333333333333333333333333333333333333333333333
+9531 3333333333333333333333333333333333333333333333333333333
+9532 3333333333333333333333333333333333333333333333333333333
+9533 3333333333333333333333333333333333333333333333333333333
+9534 3333333333333333333333333333333333333333333333333333333
+9535 3333333333333333333333333333333333333333333333333333333
+9536 3333333333333333333333333333333333333333333333333333333
+9537 3333333333333333333333333333333333333333333333333333333
+9538 3333333333333333333333333333333333333333333333333333333
+9539 3333333333333333333333333333333333333333333333333333333
+9540 3333333333333333333333333333333333333333333333333333333
+9541 3333333333333333333333333333333333333333333333333333333
+9542 3333333333333333333333333333333333333333333333333333333
+9543 3333333333333333333333333333333333333333333333333333333
+9544 3333333333333333333333333333333333333333333333333333333
+9545 3333333333333333333333333333333333333333333333333333333
+9546 3333333333333333333333333333333333333333333333333333333
+9547 3333333333333333333333333333333333333333333333333333333
+9548 3333333333333333333333333333333333333333333333333333333
+9549 3333333333333333333333333333333333333333333333333333333
+9550 3333333333333333333333333333333333333333333333333333333
+9551 3333333333333333333333333333333333333333333333333333333
+9552 3333333333333333333333333333333333333333333333333333333
+9553 3333333333333333333333333333333333333333333333333333333
+9554 3333333333333333333333333333333333333333333333333333333
+9555 3333333333333333333333333333333333333333333333333333333
+9556 3333333333333333333333333333333333333333333333333333333
+9557 3333333333333333333333333333333333333333333333333333333
+9558 3333333333333333333333333333333333333333333333333333333
+9559 3333333333333333333333333333333333333333333333333333333
+9560 3333333333333333333333333333333333333333333333333333333
+9561 3333333333333333333333333333333333333333333333333333333
+9562 3333333333333333333333333333333333333333333333333333333
+9563 3333333333333333333333333333333333333333333333333333333
+9564 3333333333333333333333333333333333333333333333333333333
+9565 3333333333333333333333333333333333333333333333333333333
+9566 3333333333333333333333333333333333333333333333333333333
+9567 3333333333333333333333333333333333333333333333333333333
+9568 3333333333333333333333333333333333333333333333333333333
+9569 3333333333333333333333333333333333333333333333333333333
+9570 3333333333333333333333333333333333333333333333333333333
+9571 3333333333333333333333333333333333333333333333333333333
+9572 3333333333333333333333333333333333333333333333333333333
+9573 3333333333333333333333333333333333333333333333333333333
+9574 3333333333333333333333333333333333333333333333333333333
+9575 3333333333333333333333333333333333333333333333333333333
+9576 3333333333333333333333333333333333333333333333333333333
+9577 3333333333333333333333333333333333333333333333333333333
+9578 3333333333333333333333333333333333333333333333333333333
+9579 3333333333333333333333333333333333333333333333333333333
+9580 3333333333333333333333333333333333333333333333333333333
+9581 3333333333333333333333333333333333333333333333333333333
+9582 3333333333333333333333333333333333333333333333333333333
+9583 3333333333333333333333333333333333333333333333333333333
+9584 3333333333333333333333333333333333333333333333333333333
+9585 3333333333333333333333333333333333333333333333333333333
+9586 3333333333333333333333333333333333333333333333333333333
+9587 3333333333333333333333333333333333333333333333333333333
+9588 3333333333333333333333333333333333333333333333333333333
+9589 3333333333333333333333333333333333333333333333333333333
+9590 3333333333333333333333333333333333333333333333333333333
+9591 3333333333333333333333333333333333333333333333333333333
+9592 3333333333333333333333333333333333333333333333333333333
+9593 3333333333333333333333333333333333333333333333333333333
+9594 3333333333333333333333333333333333333333333333333333333
+9595 3333333333333333333333333333333333333333333333333333333
+9596 3333333333333333333333333333333333333333333333333333333
+9597 3333333333333333333333333333333333333333333333333333333
+9598 3333333333333333333333333333333333333333333333333333333
+9599 3333333333333333333333333333333333333333333333333333333
+9600 3333333333333333333333333333333333333333333333333333333
+9601 3333333333333333333333333333333333333333333333333333333
+9602 3333333333333333333333333333333333333333333333333333333
+9603 3333333333333333333333333333333333333333333333333333333
+9604 3333333333333333333333333333333333333333333333333333333
+9605 3333333333333333333333333333333333333333333333333333333
+9606 3333333333333333333333333333333333333333333333333333333
+9607 3333333333333333333333333333333333333333333333333333333
+9608 3333333333333333333333333333333333333333333333333333333
+9609 3333333333333333333333333333333333333333333333333333333
+9610 3333333333333333333333333333333333333333333333333333333
+9611 3333333333333333333333333333333333333333333333333333333
+9612 3333333333333333333333333333333333333333333333333333333
+9613 3333333333333333333333333333333333333333333333333333333
+9614 3333333333333333333333333333333333333333333333333333333
+9615 3333333333333333333333333333333333333333333333333333333
+9616 3333333333333333333333333333333333333333333333333333333
+9617 3333333333333333333333333333333333333333333333333333333
+9618 3333333333333333333333333333333333333333333333333333333
+9619 3333333333333333333333333333333333333333333333333333333
+9620 3333333333333333333333333333333333333333333333333333333
+9621 3333333333333333333333333333333333333333333333333333333
+9622 3333333333333333333333333333333333333333333333333333333
+9623 3333333333333333333333333333333333333333333333333333333
+9624 3333333333333333333333333333333333333333333333333333333
+9625 3333333333333333333333333333333333333333333333333333333
+9626 3333333333333333333333333333333333333333333333333333333
+9627 3333333333333333333333333333333333333333333333333333333
+9628 3333333333333333333333333333333333333333333333333333333
+9629 3333333333333333333333333333333333333333333333333333333
+9630 3333333333333333333333333333333333333333333333333333333
+9631 3333333333333333333333333333333333333333333333333333333
+9632 3333333333333333333333333333333333333333333333333333333
+9633 3333333333333333333333333333333333333333333333333333333
+9634 3333333333333333333333333333333333333333333333333333333
+9635 3333333333333333333333333333333333333333333333333333333
+9636 3333333333333333333333333333333333333333333333333333333
+9637 3333333333333333333333333333333333333333333333333333333
+9638 3333333333333333333333333333333333333333333333333333333
+9639 3333333333333333333333333333333333333333333333333333333
+9640 3333333333333333333333333333333333333333333333333333333
+9641 3333333333333333333333333333333333333333333333333333333
+9642 3333333333333333333333333333333333333333333333333333333
+9643 3333333333333333333333333333333333333333333333333333333
+9644 3333333333333333333333333333333333333333333333333333333
+9645 3333333333333333333333333333333333333333333333333333333
+9646 3333333333333333333333333333333333333333333333333333333
+9647 3333333333333333333333333333333333333333333333333333333
+9648 3333333333333333333333333333333333333333333333333333333
+9649 3333333333333333333333333333333333333333333333333333333
+9650 3333333333333333333333333333333333333333333333333333333
+9651 3333333333333333333333333333333333333333333333333333333
+9652 3333333333333333333333333333333333333333333333333333333
+9653 3333333333333333333333333333333333333333333333333333333
+9654 3333333333333333333333333333333333333333333333333333333
+9655 3333333333333333333333333333333333333333333333333333333
+9656 3333333333333333333333333333333333333333333333333333333
+9657 3333333333333333333333333333333333333333333333333333333
+9658 3333333333333333333333333333333333333333333333333333333
+9659 3333333333333333333333333333333333333333333333333333333
+9660 3333333333333333333333333333333333333333333333333333333
+9661 3333333333333333333333333333333333333333333333333333333
+9662 3333333333333333333333333333333333333333333333333333333
+9663 3333333333333333333333333333333333333333333333333333333
+9664 3333333333333333333333333333333333333333333333333333333
+9665 3333333333333333333333333333333333333333333333333333333
+9666 3333333333333333333333333333333333333333333333333333333
+9667 3333333333333333333333333333333333333333333333333333333
+9668 3333333333333333333333333333333333333333333333333333333
+9669 3333333333333333333333333333333333333333333333333333333
+9670 3333333333333333333333333333333333333333333333333333333
+9671 3333333333333333333333333333333333333333333333333333333
+9672 3333333333333333333333333333333333333333333333333333333
+9673 3333333333333333333333333333333333333333333333333333333
+9674 3333333333333333333333333333333333333333333333333333333
+9675 3333333333333333333333333333333333333333333333333333333
+9676 3333333333333333333333333333333333333333333333333333333
+9677 3333333333333333333333333333333333333333333333333333333
+9678 3333333333333333333333333333333333333333333333333333333
+9679 3333333333333333333333333333333333333333333333333333333
+9680 3333333333333333333333333333333333333333333333333333333
+9681 3333333333333333333333333333333333333333333333333333333
+9682 3333333333333333333333333333333333333333333333333333333
+9683 3333333333333333333333333333333333333333333333333333333
+9684 3333333333333333333333333333333333333333333333333333333
+9685 3333333333333333333333333333333333333333333333333333333
+9686 3333333333333333333333333333333333333333333333333333333
+9687 3333333333333333333333333333333333333333333333333333333
+9688 3333333333333333333333333333333333333333333333333333333
+9689 3333333333333333333333333333333333333333333333333333333
+9690 3333333333333333333333333333333333333333333333333333333
+9691 3333333333333333333333333333333333333333333333333333333
+9692 3333333333333333333333333333333333333333333333333333333
+9693 3333333333333333333333333333333333333333333333333333333
+9694 3333333333333333333333333333333333333333333333333333333
+9695 3333333333333333333333333333333333333333333333333333333
+9696 3333333333333333333333333333333333333333333333333333333
+9697 3333333333333333333333333333333333333333333333333333333
+9698 3333333333333333333333333333333333333333333333333333333
+9699 3333333333333333333333333333333333333333333333333333333
+9700 3333333333333333333333333333333333333333333333333333333
+9701 3333333333333333333333333333333333333333333333333333333
+9702 3333333333333333333333333333333333333333333333333333333
+9703 3333333333333333333333333333333333333333333333333333333
+9704 3333333333333333333333333333333333333333333333333333333
+9705 3333333333333333333333333333333333333333333333333333333
+9706 3333333333333333333333333333333333333333333333333333333
+9707 3333333333333333333333333333333333333333333333333333333
+9708 3333333333333333333333333333333333333333333333333333333
+9709 3333333333333333333333333333333333333333333333333333333
+9710 3333333333333333333333333333333333333333333333333333333
+9711 3333333333333333333333333333333333333333333333333333333
+9712 3333333333333333333333333333333333333333333333333333333
+9713 3333333333333333333333333333333333333333333333333333333
+9714 3333333333333333333333333333333333333333333333333333333
+9715 3333333333333333333333333333333333333333333333333333333
+9716 3333333333333333333333333333333333333333333333333333333
+9717 3333333333333333333333333333333333333333333333333333333
+9718 3333333333333333333333333333333333333333333333333333333
+9719 3333333333333333333333333333333333333333333333333333333
+9720 3333333333333333333333333333333333333333333333333333333
+9721 3333333333333333333333333333333333333333333333333333333
+9722 3333333333333333333333333333333333333333333333333333333
+9723 3333333333333333333333333333333333333333333333333333333
+9724 3333333333333333333333333333333333333333333333333333333
+9725 3333333333333333333333333333333333333333333333333333333
+9726 3333333333333333333333333333333333333333333333333333333
+9727 3333333333333333333333333333333333333333333333333333333
+9728 3333333333333333333333333333333333333333333333333333333
+9729 3333333333333333333333333333333333333333333333333333333
+9730 3333333333333333333333333333333333333333333333333333333
+9731 3333333333333333333333333333333333333333333333333333333
+9732 3333333333333333333333333333333333333333333333333333333
+9733 3333333333333333333333333333333333333333333333333333333
+9734 3333333333333333333333333333333333333333333333333333333
+9735 3333333333333333333333333333333333333333333333333333333
+9736 3333333333333333333333333333333333333333333333333333333
+9737 3333333333333333333333333333333333333333333333333333333
+9738 3333333333333333333333333333333333333333333333333333333
+9739 3333333333333333333333333333333333333333333333333333333
+9740 3333333333333333333333333333333333333333333333333333333
+9741 3333333333333333333333333333333333333333333333333333333
+9742 3333333333333333333333333333333333333333333333333333333
+9743 3333333333333333333333333333333333333333333333333333333
+9744 3333333333333333333333333333333333333333333333333333333
+9745 3333333333333333333333333333333333333333333333333333333
+9746 3333333333333333333333333333333333333333333333333333333
+9747 3333333333333333333333333333333333333333333333333333333
+9748 3333333333333333333333333333333333333333333333333333333
+9749 3333333333333333333333333333333333333333333333333333333
+9750 3333333333333333333333333333333333333333333333333333333
+9751 3333333333333333333333333333333333333333333333333333333
+9752 3333333333333333333333333333333333333333333333333333333
+9753 3333333333333333333333333333333333333333333333333333333
+9754 3333333333333333333333333333333333333333333333333333333
+9755 3333333333333333333333333333333333333333333333333333333
+9756 3333333333333333333333333333333333333333333333333333333
+9757 3333333333333333333333333333333333333333333333333333333
+9758 3333333333333333333333333333333333333333333333333333333
+9759 3333333333333333333333333333333333333333333333333333333
+9760 3333333333333333333333333333333333333333333333333333333
+9761 3333333333333333333333333333333333333333333333333333333
+9762 3333333333333333333333333333333333333333333333333333333
+9763 3333333333333333333333333333333333333333333333333333333
+9764 3333333333333333333333333333333333333333333333333333333
+9765 3333333333333333333333333333333333333333333333333333333
+9766 3333333333333333333333333333333333333333333333333333333
+9767 3333333333333333333333333333333333333333333333333333333
+9768 3333333333333333333333333333333333333333333333333333333
+9769 3333333333333333333333333333333333333333333333333333333
+9770 3333333333333333333333333333333333333333333333333333333
+9771 3333333333333333333333333333333333333333333333333333333
+9772 3333333333333333333333333333333333333333333333333333333
+9773 3333333333333333333333333333333333333333333333333333333
+9774 3333333333333333333333333333333333333333333333333333333
+9775 3333333333333333333333333333333333333333333333333333333
+9776 3333333333333333333333333333333333333333333333333333333
+9777 3333333333333333333333333333333333333333333333333333333
+9778 3333333333333333333333333333333333333333333333333333333
+9779 3333333333333333333333333333333333333333333333333333333
+9780 3333333333333333333333333333333333333333333333333333333
+9781 3333333333333333333333333333333333333333333333333333333
+9782 3333333333333333333333333333333333333333333333333333333
+9783 3333333333333333333333333333333333333333333333333333333
+9784 3333333333333333333333333333333333333333333333333333333
+9785 3333333333333333333333333333333333333333333333333333333
+9786 3333333333333333333333333333333333333333333333333333333
+9787 3333333333333333333333333333333333333333333333333333333
+9788 3333333333333333333333333333333333333333333333333333333
+9789 3333333333333333333333333333333333333333333333333333333
+9790 3333333333333333333333333333333333333333333333333333333
+9791 3333333333333333333333333333333333333333333333333333333
+9792 3333333333333333333333333333333333333333333333333333333
+9793 3333333333333333333333333333333333333333333333333333333
+9794 3333333333333333333333333333333333333333333333333333333
+9795 3333333333333333333333333333333333333333333333333333333
+9796 3333333333333333333333333333333333333333333333333333333
+9797 3333333333333333333333333333333333333333333333333333333
+9798 3333333333333333333333333333333333333333333333333333333
+9799 3333333333333333333333333333333333333333333333333333333
+9800 3333333333333333333333333333333333333333333333333333333
+9801 3333333333333333333333333333333333333333333333333333333
+9802 3333333333333333333333333333333333333333333333333333333
+9803 3333333333333333333333333333333333333333333333333333333
+9804 3333333333333333333333333333333333333333333333333333333
+9805 3333333333333333333333333333333333333333333333333333333
+9806 3333333333333333333333333333333333333333333333333333333
+9807 3333333333333333333333333333333333333333333333333333333
+9808 3333333333333333333333333333333333333333333333333333333
+9809 3333333333333333333333333333333333333333333333333333333
+9810 3333333333333333333333333333333333333333333333333333333
+9811 3333333333333333333333333333333333333333333333333333333
+9812 3333333333333333333333333333333333333333333333333333333
+9813 3333333333333333333333333333333333333333333333333333333
+9814 3333333333333333333333333333333333333333333333333333333
+9815 3333333333333333333333333333333333333333333333333333333
+9816 3333333333333333333333333333333333333333333333333333333
+9817 3333333333333333333333333333333333333333333333333333333
+9818 3333333333333333333333333333333333333333333333333333333
+9819 3333333333333333333333333333333333333333333333333333333
+9820 3333333333333333333333333333333333333333333333333333333
+9821 3333333333333333333333333333333333333333333333333333333
+9822 3333333333333333333333333333333333333333333333333333333
+9823 3333333333333333333333333333333333333333333333333333333
+9824 3333333333333333333333333333333333333333333333333333333
+9825 3333333333333333333333333333333333333333333333333333333
+9826 3333333333333333333333333333333333333333333333333333333
+9827 3333333333333333333333333333333333333333333333333333333
+9828 3333333333333333333333333333333333333333333333333333333
+9829 3333333333333333333333333333333333333333333333333333333
+9830 3333333333333333333333333333333333333333333333333333333
+9831 3333333333333333333333333333333333333333333333333333333
+9832 3333333333333333333333333333333333333333333333333333333
+9833 3333333333333333333333333333333333333333333333333333333
+9834 3333333333333333333333333333333333333333333333333333333
+9835 3333333333333333333333333333333333333333333333333333333
+9836 3333333333333333333333333333333333333333333333333333333
+9837 3333333333333333333333333333333333333333333333333333333
+9838 3333333333333333333333333333333333333333333333333333333
+9839 3333333333333333333333333333333333333333333333333333333
+9840 3333333333333333333333333333333333333333333333333333333
+9841 3333333333333333333333333333333333333333333333333333333
+9842 3333333333333333333333333333333333333333333333333333333
+9843 3333333333333333333333333333333333333333333333333333333
+9844 3333333333333333333333333333333333333333333333333333333
+9845 3333333333333333333333333333333333333333333333333333333
+9846 3333333333333333333333333333333333333333333333333333333
+9847 3333333333333333333333333333333333333333333333333333333
+9848 3333333333333333333333333333333333333333333333333333333
+9849 3333333333333333333333333333333333333333333333333333333
+9850 3333333333333333333333333333333333333333333333333333333
+9851 3333333333333333333333333333333333333333333333333333333
+9852 3333333333333333333333333333333333333333333333333333333
+9853 3333333333333333333333333333333333333333333333333333333
+9854 3333333333333333333333333333333333333333333333333333333
+9855 3333333333333333333333333333333333333333333333333333333
+9856 3333333333333333333333333333333333333333333333333333333
+9857 3333333333333333333333333333333333333333333333333333333
+9858 3333333333333333333333333333333333333333333333333333333
+9859 3333333333333333333333333333333333333333333333333333333
+9860 3333333333333333333333333333333333333333333333333333333
+9861 3333333333333333333333333333333333333333333333333333333
+9862 3333333333333333333333333333333333333333333333333333333
+9863 3333333333333333333333333333333333333333333333333333333
+9864 3333333333333333333333333333333333333333333333333333333
+9865 3333333333333333333333333333333333333333333333333333333
+9866 3333333333333333333333333333333333333333333333333333333
+9867 3333333333333333333333333333333333333333333333333333333
+9868 3333333333333333333333333333333333333333333333333333333
+9869 3333333333333333333333333333333333333333333333333333333
+9870 3333333333333333333333333333333333333333333333333333333
+9871 3333333333333333333333333333333333333333333333333333333
+9872 3333333333333333333333333333333333333333333333333333333
+9873 3333333333333333333333333333333333333333333333333333333
+9874 3333333333333333333333333333333333333333333333333333333
+9875 3333333333333333333333333333333333333333333333333333333
+9876 3333333333333333333333333333333333333333333333333333333
+9877 3333333333333333333333333333333333333333333333333333333
+9878 3333333333333333333333333333333333333333333333333333333
+9879 3333333333333333333333333333333333333333333333333333333
+9880 3333333333333333333333333333333333333333333333333333333
+9881 3333333333333333333333333333333333333333333333333333333
+9882 3333333333333333333333333333333333333333333333333333333
+9883 3333333333333333333333333333333333333333333333333333333
+9884 3333333333333333333333333333333333333333333333333333333
+9885 3333333333333333333333333333333333333333333333333333333
+9886 3333333333333333333333333333333333333333333333333333333
+9887 3333333333333333333333333333333333333333333333333333333
+9888 3333333333333333333333333333333333333333333333333333333
+9889 3333333333333333333333333333333333333333333333333333333
+9890 3333333333333333333333333333333333333333333333333333333
+9891 3333333333333333333333333333333333333333333333333333333
+9892 3333333333333333333333333333333333333333333333333333333
+9893 3333333333333333333333333333333333333333333333333333333
+9894 3333333333333333333333333333333333333333333333333333333
+9895 3333333333333333333333333333333333333333333333333333333
+9896 3333333333333333333333333333333333333333333333333333333
+9897 3333333333333333333333333333333333333333333333333333333
+9898 3333333333333333333333333333333333333333333333333333333
+9899 3333333333333333333333333333333333333333333333333333333
+9900 3333333333333333333333333333333333333333333333333333333
+9901 3333333333333333333333333333333333333333333333333333333
+9902 3333333333333333333333333333333333333333333333333333333
+9903 3333333333333333333333333333333333333333333333333333333
+9904 3333333333333333333333333333333333333333333333333333333
+9905 3333333333333333333333333333333333333333333333333333333
+9906 3333333333333333333333333333333333333333333333333333333
+9907 3333333333333333333333333333333333333333333333333333333
+9908 3333333333333333333333333333333333333333333333333333333
+9909 3333333333333333333333333333333333333333333333333333333
+9910 3333333333333333333333333333333333333333333333333333333
+9911 3333333333333333333333333333333333333333333333333333333
+9912 3333333333333333333333333333333333333333333333333333333
+9913 3333333333333333333333333333333333333333333333333333333
+9914 3333333333333333333333333333333333333333333333333333333
+9915 3333333333333333333333333333333333333333333333333333333
+9916 3333333333333333333333333333333333333333333333333333333
+9917 3333333333333333333333333333333333333333333333333333333
+9918 3333333333333333333333333333333333333333333333333333333
+9919 3333333333333333333333333333333333333333333333333333333
+9920 3333333333333333333333333333333333333333333333333333333
+9921 3333333333333333333333333333333333333333333333333333333
+9922 3333333333333333333333333333333333333333333333333333333
+9923 3333333333333333333333333333333333333333333333333333333
+9924 3333333333333333333333333333333333333333333333333333333
+9925 3333333333333333333333333333333333333333333333333333333
+9926 3333333333333333333333333333333333333333333333333333333
+9927 3333333333333333333333333333333333333333333333333333333
+9928 3333333333333333333333333333333333333333333333333333333
+9929 3333333333333333333333333333333333333333333333333333333
+9930 3333333333333333333333333333333333333333333333333333333
+9931 3333333333333333333333333333333333333333333333333333333
+9932 3333333333333333333333333333333333333333333333333333333
+9933 3333333333333333333333333333333333333333333333333333333
+9934 3333333333333333333333333333333333333333333333333333333
+9935 3333333333333333333333333333333333333333333333333333333
+9936 3333333333333333333333333333333333333333333333333333333
+9937 3333333333333333333333333333333333333333333333333333333
+9938 3333333333333333333333333333333333333333333333333333333
+9939 3333333333333333333333333333333333333333333333333333333
+9940 3333333333333333333333333333333333333333333333333333333
+9941 3333333333333333333333333333333333333333333333333333333
+9942 3333333333333333333333333333333333333333333333333333333
+9943 3333333333333333333333333333333333333333333333333333333
+9944 3333333333333333333333333333333333333333333333333333333
+9945 3333333333333333333333333333333333333333333333333333333
+9946 3333333333333333333333333333333333333333333333333333333
+9947 3333333333333333333333333333333333333333333333333333333
+9948 3333333333333333333333333333333333333333333333333333333
+9949 3333333333333333333333333333333333333333333333333333333
+9950 3333333333333333333333333333333333333333333333333333333
+9951 3333333333333333333333333333333333333333333333333333333
+9952 3333333333333333333333333333333333333333333333333333333
+9953 3333333333333333333333333333333333333333333333333333333
+9954 3333333333333333333333333333333333333333333333333333333
+9955 3333333333333333333333333333333333333333333333333333333
+9956 3333333333333333333333333333333333333333333333333333333
+9957 3333333333333333333333333333333333333333333333333333333
+9958 3333333333333333333333333333333333333333333333333333333
+9959 3333333333333333333333333333333333333333333333333333333
+9960 3333333333333333333333333333333333333333333333333333333
+9961 3333333333333333333333333333333333333333333333333333333
+9962 3333333333333333333333333333333333333333333333333333333
+9963 3333333333333333333333333333333333333333333333333333333
+9964 3333333333333333333333333333333333333333333333333333333
+9965 3333333333333333333333333333333333333333333333333333333
+9966 3333333333333333333333333333333333333333333333333333333
+9967 3333333333333333333333333333333333333333333333333333333
+9968 3333333333333333333333333333333333333333333333333333333
+9969 3333333333333333333333333333333333333333333333333333333
+9970 3333333333333333333333333333333333333333333333333333333
+9971 3333333333333333333333333333333333333333333333333333333
+9972 3333333333333333333333333333333333333333333333333333333
+9973 3333333333333333333333333333333333333333333333333333333
+9974 3333333333333333333333333333333333333333333333333333333
+9975 3333333333333333333333333333333333333333333333333333333
+9976 3333333333333333333333333333333333333333333333333333333
+9977 3333333333333333333333333333333333333333333333333333333
+9978 3333333333333333333333333333333333333333333333333333333
+9979 3333333333333333333333333333333333333333333333333333333
+9980 3333333333333333333333333333333333333333333333333333333
+9981 3333333333333333333333333333333333333333333333333333333
+9982 3333333333333333333333333333333333333333333333333333333
+9983 3333333333333333333333333333333333333333333333333333333
+9984 3333333333333333333333333333333333333333333333333333333
+9985 3333333333333333333333333333333333333333333333333333333
+9986 3333333333333333333333333333333333333333333333333333333
+9987 3333333333333333333333333333333333333333333333333333333
+9988 3333333333333333333333333333333333333333333333333333333
+9989 3333333333333333333333333333333333333333333333333333333
+9990 3333333333333333333333333333333333333333333333333333333
+9991 3333333333333333333333333333333333333333333333333333333
+9992 3333333333333333333333333333333333333333333333333333333
+9993 3333333333333333333333333333333333333333333333333333333
+9994 3333333333333333333333333333333333333333333333333333333
+9995 3333333333333333333333333333333333333333333333333333333
+9996 3333333333333333333333333333333333333333333333333333333
+9997 3333333333333333333333333333333333333333333333333333333
+9998 3333333333333333333333333333333333333333333333333333333
+9999 3333333333333333333333333333333333333333333333333333333

Added: trunk/main/planet/web/test/webapps/test/data.txt.gz
===================================================================
(Binary files differ)


Property changes on: trunk/main/planet/web/test/webapps/test/data.txt.gz
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/webapps/test/favicon.ico
===================================================================
(Binary files differ)


Property changes on: trunk/main/planet/web/test/webapps/test/favicon.ico
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/webapps/test/index.html
===================================================================
--- trunk/main/planet/web/test/webapps/test/index.html 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/index.html 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,43 @@
+<HTML>
+ <HEAD>
+ <TITLE>Powered By Jetty</TITLE>
+ <META http-equiv="Pragma" content="no-cache">
+ <META http-equiv="Cache-Control" content="no-cache,no-store">
+ </HEAD>
+<BODY>
+<A HREF="http://jetty.mortbay.org";><IMG SRC="jetty_banner.gif"></A>
+<P>
+<h1>Welcome to Jetty 6.0.x</h1>
+This is the beta release of Jetty 6. This is a test context that serves:
+<ul>
+<li>static content (
+<a href="d.txt">tiny</a>,
+<a href="da.txt">small</a>,
+<a href="dat.txt">medium</a>,
+<a href="data.txt">large</a>)</li>
+<li>a <a href="dump/info">Request Dump Servlet</a></li>
+<li>a <a href="session/">Session Dump Servlet</a></li>
+<li>a <a href="snoop.jsp">Request Dump JSP</a></li>
+<li>a <a href="chat/chat.html">AJAX Chat with continuations</a></li>
+</ul>
+The <a href="/javadoc/">javadoc</a> is served from another context.
+</p>
+
+The features of Jetty 6.0.x are:
+<ul>
+<li>Totally rearchitected and rebuild, so 10 years of cruft could be
removed!</li>
+<li>Improved "dependancy injection" and "inversion of control" design of
components</li>
+<li>Improved "interceptor" design of handlers</li>
+<li>Smart split buffer design allows large buffers to only be allocated to
active connections.
+The resulting memory savings allow very large buffers to be used, which
increases the chance of
+efficient asynchronous flushing and of avoiding chunking.</li>
+<li>Optional use of NIO Buffering so that efficient direct buffers and
memory mapped files can be used.</li>
+<li>Optional use of NIO non-blocking scheduling so that threads are not
allocated per connection.</li>
+<li>Optional use of NIO gather writes, so that for example a HTTP header and
a memory mapped file may be
+sent as sent is a single operation.</li>
+<li>Continuations for efficient AJAX polling</li>
+</ul>
+
+
+</BODY>
+</HTML>

Added: trunk/main/planet/web/test/webapps/test/jetty_banner.gif
===================================================================
(Binary files differ)


Property changes on: trunk/main/planet/web/test/webapps/test/jetty_banner.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream

Added: trunk/main/planet/web/test/webapps/test/js/behaviour.js
===================================================================
--- trunk/main/planet/web/test/webapps/test/js/behaviour.js 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/js/behaviour.js 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,254 @@
+/*
+ Behaviour v1.0 by Ben Nolan, June 2005. Based largely on the work
+ of Simon Willison (see comments by Simon below).
+
+ Description:
+
+ Uses css selectors to apply javascript behaviours to enable
+ unobtrusive javascript in html documents.
+
+ Usage:
+
+ var myrules = {
+ 'b.someclass' : function(element){
+ element.onclick = function(){
+ alert(this.innerHTML);
+ }
+ },
+ '#someid u' : function(element){
+ element.onmouseover = function(){
+ this.innerHTML = "BLAH!";
+ }
+ }
+ };
+
+ Behaviour.register(myrules);
+
+ // Call Behaviour.apply() to re-apply the rules (if you
+ // update the dom, etc).
+
+ License:
+
+ My stuff is BSD licensed. Not sure about Simon's.
+
+ More information:
+
+ http://ripcord.co.nz/behaviour/
+
+*/
+
+var Behaviour = {
+ list : new Array,
+
+ register : function(sheet){
+ Behaviour.list.push(sheet);
+ },
+
+ start : function(){
+ Behaviour.addLoadEvent(function(){
+ Behaviour.apply();
+ });
+ },
+
+ apply : function(){
+ for (h=0;sheet=Behaviour.list[h];h++){
+ for (selector in sheet){
+ list =
document.getElementsBySelector(selector);
+
+ if (!list){
+ continue;
+ }
+
+ for (i=0;element=list[i];i++){
+ sheet[selector](element);
+ }
+ }
+ }
+ },
+
+ addLoadEvent : function(func){
+ var oldonload = window.onload;
+
+ if (typeof window.onload != 'function') {
+ window.onload = func;
+ } else {
+ window.onload = function() {
+ oldonload();
+ func();
+ }
+ }
+ }
+}
+
+Behaviour.start();
+
+/*
+ The following code is Copyright (C) Simon Willison 2004.
+
+ document.getElementsBySelector(selector)
+ - returns an array of element objects from the current document
+ matching the CSS selector. Selectors can contain element names,
+ class names and ids and can be nested. For example:
+
+ elements = document.getElementsBySelect('div#main p a.external')
+
+ Will return an array of all 'a' elements with 'external' in their
+ class attribute that are contained inside 'p' elements that are
+ contained inside the 'div' element which has id="main"
+
+ New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
+ See http://www.w3.org/TR/css3-selectors/#attribute-selectors
+
+ Version 0.4 - Simon Willison, March 25th 2003
+ -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6,
Internet Explorer 5 on Windows
+ -- Opera 7 fails
+*/
+
+function getAllChildren(e) {
+ // Returns all children of element. Workaround required for IE5/Windows.
Ugh.
+ return e.all ? e.all : e.getElementsByTagName('*');
+}
+
+document.getElementsBySelector = function(selector) {
+ // Attempt to fail gracefully in lesser browsers
+ if (!document.getElementsByTagName) {
+ return new Array();
+ }
+ // Split selector in to tokens
+ var tokens = selector.split(' ');
+ var currentContext = new Array(document);
+ for (var i = 0; i < tokens.length; i++) {
+ token = tokens[i].replace(/^\s+/,'').replace(/\s+$/,'');;
+ if (token.indexOf('#') > -1) {
+ // Token is an ID selector
+ var bits = token.split('#');
+ var tagName = bits[0];
+ var id = bits[1];
+ var element = document.getElementById(id);
+ if (tagName && element.nodeName.toLowerCase() != tagName) {
+ // tag with that ID not found, return false
+ return new Array();
+ }
+ // Set currentContext to contain just this element
+ currentContext = new Array(element);
+ continue; // Skip to next token
+ }
+ if (token.indexOf('.') > -1) {
+ // Token contains a class selector
+ var bits = token.split('.');
+ var tagName = bits[0];
+ var className = bits[1];
+ if (!tagName) {
+ tagName = '*';
+ }
+ // Get elements matching tag, filter them for class selector
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements;
+ if (tagName == '*') {
+ elements = getAllChildren(currentContext[h]);
+ } else {
+ elements = currentContext[h].getElementsByTagName(tagName);
+ }
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ for (var k = 0; k < found.length; k++) {
+ if (found[k].className && found[k].className.match(new
RegExp('\\b'+className+'\\b'))) {
+ currentContext[currentContextIndex++] = found[k];
+ }
+ }
+ continue; // Skip to next token
+ }
+ // Code to deal with attribute selectors
+ if (token.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/)) {
+ var tagName = RegExp.$1;
+ var attrName = RegExp.$2;
+ var attrOperator = RegExp.$3;
+ var attrValue = RegExp.$4;
+ if (!tagName) {
+ tagName = '*';
+ }
+ // Grab all of the tagName elements within current context
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements;
+ if (tagName == '*') {
+ elements = getAllChildren(currentContext[h]);
+ } else {
+ elements = currentContext[h].getElementsByTagName(tagName);
+ }
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ var checkFunction; // This function will be used to filter the elements
+ switch (attrOperator) {
+ case '=': // Equality
+ checkFunction = function(e) { return (e.getAttribute(attrName) ==
attrValue); };
+ break;
+ case '~': // Match one of space seperated words
+ checkFunction = function(e) { return
(e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
+ break;
+ case '|': // Match start with value followed by optional hyphen
+ checkFunction = function(e) { return
(e.getAttribute(attrName).match(new RegExp('^'+attrValue+'-?'))); };
+ break;
+ case '^': // Match starts with value
+ checkFunction = function(e) { return
(e.getAttribute(attrName).indexOf(attrValue) == 0); };
+ break;
+ case '$': // Match ends with value - fails with "Warning" in Opera 7
+ checkFunction = function(e) { return
(e.getAttribute(attrName).lastIndexOf(attrValue) ==
e.getAttribute(attrName).length - attrValue.length); };
+ break;
+ case '*': // Match ends with value
+ checkFunction = function(e) { return
(e.getAttribute(attrName).indexOf(attrValue) > -1); };
+ break;
+ default :
+ // Just test for existence of attribute
+ checkFunction = function(e) { return e.getAttribute(attrName); };
+ }
+ currentContext = new Array;
+ var currentContextIndex = 0;
+ for (var k = 0; k < found.length; k++) {
+ if (checkFunction(found[k])) {
+ currentContext[currentContextIndex++] = found[k];
+ }
+ }
+ // alert('Attribute Selector: '+tagName+' '+attrName+'
'+attrOperator+' '+attrValue);
+ continue; // Skip to next token
+ }
+
+ if (!currentContext[0]){
+ return;
+ }
+
+ // If we get here, token is JUST an element (not a class or ID selector)
+ tagName = token;
+ var found = new Array;
+ var foundCount = 0;
+ for (var h = 0; h < currentContext.length; h++) {
+ var elements = currentContext[h].getElementsByTagName(tagName);
+ for (var j = 0; j < elements.length; j++) {
+ found[foundCount++] = elements[j];
+ }
+ }
+ currentContext = found;
+ }
+ return currentContext;
+}
+
+/* That revolting regular expression explained
+/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
+ \---/ \---/\-------------/ \-------/
+ | | | |
+ | | | The value
+ | | ~,|,^,$,* or =
+ | Attribute
+ Tag
+*/

Added: trunk/main/planet/web/test/webapps/test/js/default.js
===================================================================
--- trunk/main/planet/web/test/webapps/test/js/default.js 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/js/default.js 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,23 @@
+// Technique borrowed from scriptaculous to do includes.
+
+var DefaultJS = {
+ Version: 'Jetty Test',
+ script: function(libraryName) {
+ document.write('<script type="text/javascript"
src="'+libraryName+'"></script>');
+ },
+ load: function() {
+ var scriptTags = document.getElementsByTagName("script");
+ for(var i=0;i<scriptTags.length;i++) {
+ if(scriptTags[i].src && scriptTags[i].src.match(/default\.js$/)) {
+ var path = scriptTags[i].src.replace(/default\.js$/,'');
+ this.script(path + 'prototype.js');
+ this.script(path + 'behaviour.js');
+ this.script(path + 'rico.js');
+ this.script(path + 'scriptaculous.js');
+ break;
+ }
+ }
+ }
+}
+
+DefaultJS.load();
\ No newline at end of file

Added: trunk/main/planet/web/test/webapps/test/js/prototype.js
===================================================================
--- trunk/main/planet/web/test/webapps/test/js/prototype.js 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/js/prototype.js 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,1038 @@
+/* Prototype JavaScript framework, version 1.3.1
+ * (c) 2005 Sam Stephenson <sam AT conio.net>
+ *
+ * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff
+ * against the source tree, available from the Prototype darcs repository.
+ *
+ * Prototype is freely distributable under the terms of an MIT-style
license.
+ *
+ * For details, see the Prototype web site: http://prototype.conio.net/
+ *
+/*--------------------------------------------------------------------------*/
+
+var Prototype = {
+ Version: '1.3.1',
+ emptyFunction: function() {}
+}
+
+var Class = {
+ create: function() {
+ return function() {
+ this.initialize.apply(this, arguments);
+ }
+ }
+}
+
+var Abstract = new Object();
+
+Object.extend = function(destination, source) {
+ for (property in source) {
+ destination[property] = source[property];
+ }
+ return destination;
+}
+
+Object.prototype.extend = function(object) {
+ return Object.extend.apply(this, [this, object]);
+}
+
+Function.prototype.bind = function(object) {
+ var __method = this;
+ return function() {
+ __method.apply(object, arguments);
+ }
+}
+
+Function.prototype.bindAsEventListener = function(object) {
+ var __method = this;
+ return function(event) {
+ __method.call(object, event || window.event);
+ }
+}
+
+Number.prototype.toColorPart = function() {
+ var digits = this.toString(16);
+ if (this < 16) return '0' + digits;
+ return digits;
+}
+
+var Try = {
+ these: function() {
+ var returnValue;
+
+ for (var i = 0; i < arguments.length; i++) {
+ var lambda = arguments[i];
+ try {
+ returnValue = lambda();
+ break;
+ } catch (e) {}
+ }
+
+ return returnValue;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create();
+PeriodicalExecuter.prototype = {
+ initialize: function(callback, frequency) {
+ this.callback = callback;
+ this.frequency = frequency;
+ this.currentlyExecuting = false;
+
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ if (!this.currentlyExecuting) {
+ try {
+ this.currentlyExecuting = true;
+ this.callback();
+ } finally {
+ this.currentlyExecuting = false;
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+function $() {
+ var elements = new Array();
+
+ for (var i = 0; i < arguments.length; i++) {
+ var element = arguments[i];
+ if (typeof element == 'string')
+ element = document.getElementById(element);
+
+ if (arguments.length == 1)
+ return element;
+
+ elements.push(element);
+ }
+
+ return elements;
+}
+
+if (!Array.prototype.push) {
+ Array.prototype.push = function() {
+ var startLength = this.length;
+ for (var i = 0; i < arguments.length; i++)
+ this[startLength + i] = arguments[i];
+ return this.length;
+ }
+}
+
+if (!Function.prototype.apply) {
+ // Based on code from http://www.youngpup.net/
+ Function.prototype.apply = function(object, parameters) {
+ var parameterStrings = new Array();
+ if (!object) object = window;
+ if (!parameters) parameters = new Array();
+
+ for (var i = 0; i < parameters.length; i++)
+ parameterStrings[i] = 'parameters[' + i + ']';
+
+ object.__apply__ = this;
+ var result = eval('object.__apply__(' +
+ parameterStrings.join(', ') + ')');
+ object.__apply__ = null;
+
+ return result;
+ }
+}
+
+String.prototype.extend({
+ stripTags: function() {
+ return this.replace(/<\/?[^>]+>/gi, '');
+ },
+
+ escapeHTML: function() {
+ var div = document.createElement('div');
+ var text = document.createTextNode(this);
+ div.appendChild(text);
+ return div.innerHTML;
+ },
+
+ unescapeHTML: function() {
+ var div = document.createElement('div');
+ div.innerHTML = this.stripTags();
+ return div.childNodes[0].nodeValue;
+ }
+});
+
+var Ajax = {
+ getTransport: function() {
+ return Try.these(
+ function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+ function() {return new ActiveXObject('Microsoft.XMLHTTP')},
+ function() {return new XMLHttpRequest()}
+ ) || false;
+ }
+}
+
+Ajax.Base = function() {};
+Ajax.Base.prototype = {
+ setOptions: function(options) {
+ this.options = {
+ method: 'post',
+ asynchronous: true,
+ parameters: ''
+ }.extend(options || {});
+ },
+
+ responseIsSuccess: function() {
+ return this.transport.status == undefined
+ || this.transport.status == 0
+ || (this.transport.status >= 200 && this.transport.status < 300);
+ },
+
+ responseIsFailure: function() {
+ return !this.responseIsSuccess();
+ }
+}
+
+Ajax.Request = Class.create();
+Ajax.Request.Events =
+ ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Request.prototype = (new Ajax.Base()).extend({
+ initialize: function(url, options) {
+ this.transport = Ajax.getTransport();
+ this.setOptions(options);
+ this.request(url);
+ },
+
+ request: function(url) {
+ var parameters = this.options.parameters || '';
+ if (parameters.length > 0) parameters += '&_=';
+
+ try {
+ if (this.options.method == 'get')
+ url += (url.indexOf('?')<0?'?':'&') + parameters;
+
+ this.transport.open(this.options.method, url,
+ this.options.asynchronous);
+
+ if (this.options.asynchronous) {
+ this.transport.onreadystatechange = this.onStateChange.bind(this);
+ setTimeout((function() {this.respondToReadyState(1)}).bind(this),
10);
+ }
+
+ this.setRequestHeaders();
+
+ var body = this.options.postBody ? this.options.postBody : parameters;
+ this.transport.send(this.options.method == 'post' ? body : null);
+
+ } catch (e) {
+ }
+ },
+
+ setRequestHeaders: function() {
+ var requestHeaders =
+ ['X-Requested-With', 'XMLHttpRequest',
+ 'X-Prototype-Version', Prototype.Version];
+
+ if (this.options.method == 'post') {
+ requestHeaders.push('Content-type',
+ 'application/x-www-form-urlencoded');
+
+ /* Force "Connection: close" for Mozilla browsers to work around
+ * a bug where XMLHttpReqeuest sends an incorrect Content-length
+ * header. See Mozilla Bugzilla #246651.
+ */
+ if (this.transport.overrideMimeType)
+ requestHeaders.push('Connection', 'close');
+ }
+
+ if (this.options.requestHeaders)
+ requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
+
+ for (var i = 0; i < requestHeaders.length; i += 2)
+ this.transport.setRequestHeader(requestHeaders[i],
requestHeaders[i+1]);
+ },
+
+ onStateChange: function() {
+ var readyState = this.transport.readyState;
+ if (readyState != 1)
+ this.respondToReadyState(this.transport.readyState);
+ },
+
+ respondToReadyState: function(readyState) {
+ var event = Ajax.Request.Events[readyState];
+
+ if (event == 'Complete')
+ (this.options['on' + this.transport.status]
+ || this.options['on' + (this.responseIsSuccess() ? 'Success' :
'Failure')]
+ || Prototype.emptyFunction)(this.transport);
+
+ (this.options['on' + event] || Prototype.emptyFunction)(this.transport);
+
+ /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
+ if (event == 'Complete')
+ this.transport.onreadystatechange = Prototype.emptyFunction;
+ }
+});
+
+Ajax.Updater = Class.create();
+Ajax.Updater.ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';
+
+Ajax.Updater.prototype.extend(Ajax.Request.prototype).extend({
+ initialize: function(container, url, options) {
+ this.containers = {
+ success: container.success ? $(container.success) : $(container),
+ failure: container.failure ? $(container.failure) :
+ (container.success ? null : $(container))
+ }
+
+ this.transport = Ajax.getTransport();
+ this.setOptions(options);
+
+ var onComplete = this.options.onComplete || Prototype.emptyFunction;
+ this.options.onComplete = (function() {
+ this.updateContent();
+ onComplete(this.transport);
+ }).bind(this);
+
+ this.request(url);
+ },
+
+ updateContent: function() {
+ var receiver = this.responseIsSuccess() ?
+ this.containers.success : this.containers.failure;
+
+ var match = new RegExp(Ajax.Updater.ScriptFragment, 'img');
+ var response = this.transport.responseText.replace(match, '');
+ var scripts = this.transport.responseText.match(match);
+
+ if (receiver) {
+ if (this.options.insertion) {
+ new this.options.insertion(receiver, response);
+ } else {
+ receiver.innerHTML = response;
+ }
+ }
+
+ if (this.responseIsSuccess()) {
+ if (this.onComplete)
+ setTimeout((function() {this.onComplete(
+ this.transport)}).bind(this), 10);
+ }
+
+ if (this.options.evalScripts && scripts) {
+ match = new RegExp(Ajax.Updater.ScriptFragment, 'im');
+ setTimeout((function() {
+ for (var i = 0; i < scripts.length; i++)
+ eval(scripts[i].match(match)[1]);
+ }).bind(this), 10);
+ }
+ }
+});
+
+Ajax.PeriodicalUpdater = Class.create();
+Ajax.PeriodicalUpdater.prototype = (new Ajax.Base()).extend({
+ initialize: function(container, url, options) {
+ this.setOptions(options);
+ this.onComplete = this.options.onComplete;
+
+ this.frequency = (this.options.frequency || 2);
+ this.decay = 1;
+
+ this.updater = {};
+ this.container = container;
+ this.url = url;
+
+ this.start();
+ },
+
+ start: function() {
+ this.options.onComplete = this.updateComplete.bind(this);
+ this.onTimerEvent();
+ },
+
+ stop: function() {
+ this.updater.onComplete = undefined;
+ clearTimeout(this.timer);
+ (this.onComplete || Ajax.emptyFunction).apply(this, arguments);
+ },
+
+ updateComplete: function(request) {
+ if (this.options.decay) {
+ this.decay = (request.responseText == this.lastText ?
+ this.decay * this.options.decay : 1);
+
+ this.lastText = request.responseText;
+ }
+ this.timer = setTimeout(this.onTimerEvent.bind(this),
+ this.decay * this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ this.updater = new Ajax.Updater(this.container, this.url, this.options);
+ }
+});
+
+document.getElementsByClassName = function(className) {
+ var children = document.getElementsByTagName('*') || document.all;
+ var elements = new Array();
+
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ var classNames = child.className.split(' ');
+ for (var j = 0; j < classNames.length; j++) {
+ if (classNames[j] == className) {
+ elements.push(child);
+ break;
+ }
+ }
+ }
+
+ return elements;
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Element) {
+ var Element = new Object();
+}
+
+Object.extend(Element, {
+ toggle: function() {
+ for (var i = 0; i < arguments.length; i++) {
+ var element = $(arguments[i]);
+ element.style.display =
+ (element.style.display == 'none' ? '' : 'none');
+ }
+ },
+
+ hide: function() {
+ for (var i = 0; i < arguments.length; i++) {
+ var element = $(arguments[i]);
+ element.style.display = 'none';
+ }
+ },
+
+ show: function() {
+ for (var i = 0; i < arguments.length; i++) {
+ var element = $(arguments[i]);
+ element.style.display = '';
+ }
+ },
+
+ remove: function(element) {
+ element = $(element);
+ element.parentNode.removeChild(element);
+ },
+
+ getHeight: function(element) {
+ element = $(element);
+ return element.offsetHeight;
+ },
+
+ hasClassName: function(element, className) {
+ element = $(element);
+ if (!element)
+ return;
+ var a = element.className.split(' ');
+ for (var i = 0; i < a.length; i++) {
+ if (a[i] == className)
+ return true;
+ }
+ return false;
+ },
+
+ addClassName: function(element, className) {
+ element = $(element);
+ Element.removeClassName(element, className);
+ element.className += ' ' + className;
+ },
+
+ removeClassName: function(element, className) {
+ element = $(element);
+ if (!element)
+ return;
+ var newClassName = '';
+ var a = element.className.split(' ');
+ for (var i = 0; i < a.length; i++) {
+ if (a[i] != className) {
+ if (i > 0)
+ newClassName += ' ';
+ newClassName += a[i];
+ }
+ }
+ element.className = newClassName;
+ },
+
+ // removes whitespace-only text node children
+ cleanWhitespace: function(element) {
+ var element = $(element);
+ for (var i = 0; i < element.childNodes.length; i++) {
+ var node = element.childNodes[i];
+ if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+ Element.remove(node);
+ }
+ }
+});
+
+var Toggle = new Object();
+Toggle.display = Element.toggle;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.Insertion = function(adjacency) {
+ this.adjacency = adjacency;
+}
+
+Abstract.Insertion.prototype = {
+ initialize: function(element, content) {
+ this.element = $(element);
+ this.content = content;
+
+ if (this.adjacency && this.element.insertAdjacentHTML) {
+ this.element.insertAdjacentHTML(this.adjacency, this.content);
+ } else {
+ this.range = this.element.ownerDocument.createRange();
+ if (this.initializeRange) this.initializeRange();
+ this.fragment = this.range.createContextualFragment(this.content);
+ this.insertContent();
+ }
+ }
+}
+
+var Insertion = new Object();
+
+Insertion.Before = Class.create();
+Insertion.Before.prototype = (new Abstract.Insertion('beforeBegin')).extend({
+ initializeRange: function() {
+ this.range.setStartBefore(this.element);
+ },
+
+ insertContent: function() {
+ this.element.parentNode.insertBefore(this.fragment, this.element);
+ }
+});
+
+Insertion.Top = Class.create();
+Insertion.Top.prototype = (new Abstract.Insertion('afterBegin')).extend({
+ initializeRange: function() {
+ this.range.selectNodeContents(this.element);
+ this.range.collapse(true);
+ },
+
+ insertContent: function() {
+ this.element.insertBefore(this.fragment, this.element.firstChild);
+ }
+});
+
+Insertion.Bottom = Class.create();
+Insertion.Bottom.prototype = (new Abstract.Insertion('beforeEnd')).extend({
+ initializeRange: function() {
+ this.range.selectNodeContents(this.element);
+ this.range.collapse(this.element);
+ },
+
+ insertContent: function() {
+ this.element.appendChild(this.fragment);
+ }
+});
+
+Insertion.After = Class.create();
+Insertion.After.prototype = (new Abstract.Insertion('afterEnd')).extend({
+ initializeRange: function() {
+ this.range.setStartAfter(this.element);
+ },
+
+ insertContent: function() {
+ this.element.parentNode.insertBefore(this.fragment,
+ this.element.nextSibling);
+ }
+});
+
+var Field = {
+ clear: function() {
+ for (var i = 0; i < arguments.length; i++)
+ $(arguments[i]).value = '';
+ },
+
+ focus: function(element) {
+ $(element).focus();
+ },
+
+ present: function() {
+ for (var i = 0; i < arguments.length; i++)
+ if ($(arguments[i]).value == '') return false;
+ return true;
+ },
+
+ select: function(element) {
+ $(element).select();
+ },
+
+ activate: function(element) {
+ $(element).focus();
+ $(element).select();
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Form = {
+ serialize: function(form) {
+ var elements = Form.getElements($(form));
+ var queryComponents = new Array();
+
+ for (var i = 0; i < elements.length; i++) {
+ var queryComponent = Form.Element.serialize(elements[i]);
+ if (queryComponent)
+ queryComponents.push(queryComponent);
+ }
+
+ return queryComponents.join('&');
+ },
+
+ getElements: function(form) {
+ var form = $(form);
+ var elements = new Array();
+
+ for (tagName in Form.Element.Serializers) {
+ var tagElements = form.getElementsByTagName(tagName);
+ for (var j = 0; j < tagElements.length; j++)
+ elements.push(tagElements[j]);
+ }
+ return elements;
+ },
+
+ getInputs: function(form, typeName, name) {
+ var form = $(form);
+ var inputs = form.getElementsByTagName('input');
+
+ if (!typeName && !name)
+ return inputs;
+
+ var matchingInputs = new Array();
+ for (var i = 0; i < inputs.length; i++) {
+ var input = inputs[i];
+ if ((typeName && input.type != typeName) ||
+ (name && input.name != name))
+ continue;
+ matchingInputs.push(input);
+ }
+
+ return matchingInputs;
+ },
+
+ disable: function(form) {
+ var elements = Form.getElements(form);
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ element.blur();
+ element.disabled = 'true';
+ }
+ },
+
+ enable: function(form) {
+ var elements = Form.getElements(form);
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ element.disabled = '';
+ }
+ },
+
+ focusFirstElement: function(form) {
+ var form = $(form);
+ var elements = Form.getElements(form);
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i];
+ if (element.type != 'hidden' && !element.disabled) {
+ Field.activate(element);
+ break;
+ }
+ }
+ },
+
+ reset: function(form) {
+ $(form).reset();
+ }
+}
+
+Form.Element = {
+ serialize: function(element) {
+ var element = $(element);
+ var method = element.tagName.toLowerCase();
+ var parameter = Form.Element.Serializers[method](element);
+
+ if (parameter)
+ return encodeURIComponent(parameter[0]) + '=' +
+ encodeURIComponent(parameter[1]);
+ },
+
+ getValue: function(element) {
+ var element = $(element);
+ var method = element.tagName.toLowerCase();
+ var parameter = Form.Element.Serializers[method](element);
+
+ if (parameter)
+ return parameter[1];
+ }
+}
+
+Form.Element.Serializers = {
+ input: function(element) {
+ switch (element.type.toLowerCase()) {
+ case 'submit':
+ case 'hidden':
+ case 'password':
+ case 'text':
+ return Form.Element.Serializers.textarea(element);
+ case 'checkbox':
+ case 'radio':
+ return Form.Element.Serializers.inputSelector(element);
+ }
+ return false;
+ },
+
+ inputSelector: function(element) {
+ if (element.checked)
+ return [element.name, element.value];
+ },
+
+ textarea: function(element) {
+ return [element.name, element.value];
+ },
+
+ select: function(element) {
+ var value = '';
+ if (element.type == 'select-one') {
+ var index = element.selectedIndex;
+ if (index >= 0)
+ value = element.options[index].value || element.options[index].text;
+ } else {
+ value = new Array();
+ for (var i = 0; i < element.length; i++) {
+ var opt = element.options[i];
+ if (opt.selected)
+ value.push(opt.value || opt.text);
+ }
+ }
+ return [element.name, value];
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var $F = Form.Element.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = function() {}
+Abstract.TimedObserver.prototype = {
+ initialize: function(element, frequency, callback) {
+ this.frequency = frequency;
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ var value = this.getValue();
+ if (this.lastValue != value) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ }
+}
+
+Form.Element.Observer = Class.create();
+Form.Element.Observer.prototype = (new Abstract.TimedObserver()).extend({
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
+});
+
+Form.Observer = Class.create();
+Form.Observer.prototype = (new Abstract.TimedObserver()).extend({
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = function() {}
+Abstract.EventObserver.prototype = {
+ initialize: function(element, callback) {
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ if (this.element.tagName.toLowerCase() == 'form')
+ this.registerFormCallbacks();
+ else
+ this.registerCallback(this.element);
+ },
+
+ onElementEvent: function() {
+ var value = this.getValue();
+ if (this.lastValue != value) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ },
+
+ registerFormCallbacks: function() {
+ var elements = Form.getElements(this.element);
+ for (var i = 0; i < elements.length; i++)
+ this.registerCallback(elements[i]);
+ },
+
+ registerCallback: function(element) {
+ if (element.type) {
+ switch (element.type.toLowerCase()) {
+ case 'checkbox':
+ case 'radio':
+ element.target = this;
+ element.prev_onclick = element.onclick || Prototype.emptyFunction;
+ element.onclick = function() {
+ this.prev_onclick();
+ this.target.onElementEvent();
+ }
+ break;
+ case 'password':
+ case 'text':
+ case 'textarea':
+ case 'select-one':
+ case 'select-multiple':
+ element.target = this;
+ element.prev_onchange = element.onchange ||
Prototype.emptyFunction;
+ element.onchange = function() {
+ this.prev_onchange();
+ this.target.onElementEvent();
+ }
+ break;
+ }
+ }
+ }
+}
+
+Form.Element.EventObserver = Class.create();
+Form.Element.EventObserver.prototype = (new
Abstract.EventObserver()).extend({
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
+});
+
+Form.EventObserver = Class.create();
+Form.EventObserver.prototype = (new Abstract.EventObserver()).extend({
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
+});
+
+
+if (!window.Event) {
+ var Event = new Object();
+}
+
+Object.extend(Event, {
+ KEY_BACKSPACE: 8,
+ KEY_TAB: 9,
+ KEY_RETURN: 13,
+ KEY_ESC: 27,
+ KEY_LEFT: 37,
+ KEY_UP: 38,
+ KEY_RIGHT: 39,
+ KEY_DOWN: 40,
+ KEY_DELETE: 46,
+
+ element: function(event) {
+ return event.target || event.srcElement;
+ },
+
+ isLeftClick: function(event) {
+ return (((event.which) && (event.which == 1)) ||
+ ((event.button) && (event.button == 1)));
+ },
+
+ pointerX: function(event) {
+ return event.pageX || (event.clientX +
+ (document.documentElement.scrollLeft || document.body.scrollLeft));
+ },
+
+ pointerY: function(event) {
+ return event.pageY || (event.clientY +
+ (document.documentElement.scrollTop || document.body.scrollTop));
+ },
+
+ stop: function(event) {
+ if (event.preventDefault) {
+ event.preventDefault();
+ event.stopPropagation();
+ } else {
+ event.returnValue = false;
+ }
+ },
+
+ // find the first node with the given tagName, starting from the
+ // node the event was triggered on; traverses the DOM upwards
+ findElement: function(event, tagName) {
+ var element = Event.element(event);
+ while (element.parentNode && (!element.tagName ||
+ (element.tagName.toUpperCase() != tagName.toUpperCase())))
+ element = element.parentNode;
+ return element;
+ },
+
+ observers: false,
+
+ _observeAndCache: function(element, name, observer, useCapture) {
+ if (!this.observers) this.observers = [];
+ if (element.addEventListener) {
+ this.observers.push([element, name, observer, useCapture]);
+ element.addEventListener(name, observer, useCapture);
+ } else if (element.attachEvent) {
+ this.observers.push([element, name, observer, useCapture]);
+ element.attachEvent('on' + name, observer);
+ }
+ },
+
+ unloadCache: function() {
+ if (!Event.observers) return;
+ for (var i = 0; i < Event.observers.length; i++) {
+ Event.stopObserving.apply(this, Event.observers[i]);
+ Event.observers[i][0] = null;
+ }
+ Event.observers = false;
+ },
+
+ observe: function(element, name, observer, useCapture) {
+ var element = $(element);
+ useCapture = useCapture || false;
+
+ if (name == 'keypress' &&
+ ((navigator.appVersion.indexOf('AppleWebKit') > 0)
+ || element.attachEvent))
+ name = 'keydown';
+
+ this._observeAndCache(element, name, observer, useCapture);
+ },
+
+ stopObserving: function(element, name, observer, useCapture) {
+ var element = $(element);
+ useCapture = useCapture || false;
+
+ if (name == 'keypress' &&
+ ((navigator.appVersion.indexOf('AppleWebKit') > 0)
+ || element.detachEvent))
+ name = 'keydown';
+
+ if (element.removeEventListener) {
+ element.removeEventListener(name, observer, useCapture);
+ } else if (element.detachEvent) {
+ element.detachEvent('on' + name, observer);
+ }
+ }
+});
+
+/* prevent memory leaks in IE */
+Event.observe(window, 'unload', Event.unloadCache, false);
+
+var Position = {
+
+ // set to true if needed, warning: firefox performance problems
+ // NOT neeeded for page scrolling, only if draggable contained in
+ // scrollable elements
+ includeScrollOffsets: false,
+
+ // must be called before calling withinIncludingScrolloffset, every time
the
+ // page is scrolled
+ prepare: function() {
+ this.deltaX = window.pageXOffset
+ || document.documentElement.scrollLeft
+ || document.body.scrollLeft
+ || 0;
+ this.deltaY = window.pageYOffset
+ || document.documentElement.scrollTop
+ || document.body.scrollTop
+ || 0;
+ },
+
+ realOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.scrollTop || 0;
+ valueL += element.scrollLeft || 0;
+ element = element.parentNode;
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ cumulativeOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ element = element.offsetParent;
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ // caches x/y coordinate pair to use with overlap
+ within: function(element, x, y) {
+ if (this.includeScrollOffsets)
+ return this.withinIncludingScrolloffsets(element, x, y);
+ this.xcomp = x;
+ this.ycomp = y;
+ this.offset = this.cumulativeOffset(element);
+
+ return (y >= this.offset[1] &&
+ y < this.offset[1] + element.offsetHeight &&
+ x >= this.offset[0] &&
+ x < this.offset[0] + element.offsetWidth);
+ },
+
+ withinIncludingScrolloffsets: function(element, x, y) {
+ var offsetcache = this.realOffset(element);
+
+ this.xcomp = x + offsetcache[0] - this.deltaX;
+ this.ycomp = y + offsetcache[1] - this.deltaY;
+ this.offset = this.cumulativeOffset(element);
+
+ return (this.ycomp >= this.offset[1] &&
+ this.ycomp < this.offset[1] + element.offsetHeight &&
+ this.xcomp >= this.offset[0] &&
+ this.xcomp < this.offset[0] + element.offsetWidth);
+ },
+
+ // within must be called directly before
+ overlap: function(mode, element) {
+ if (!mode) return 0;
+ if (mode == 'vertical')
+ return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+ element.offsetHeight;
+ if (mode == 'horizontal')
+ return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+ element.offsetWidth;
+ },
+
+ clone: function(source, target) {
+ source = $(source);
+ target = $(target);
+ target.style.position = 'absolute';
+ var offsets = this.cumulativeOffset(source);
+ target.style.top = offsets[1] + 'px';
+ target.style.left = offsets[0] + 'px';
+ target.style.width = source.offsetWidth + 'px';
+ target.style.height = source.offsetHeight + 'px';
+ }
+}

Added: trunk/main/planet/web/test/webapps/test/js/rico.js
===================================================================
--- trunk/main/planet/web/test/webapps/test/js/rico.js 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/js/rico.js 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,2667 @@
+/**
+ *
+ * Copyright 2005 Sabre Airline Solutions
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this
+ * file except in compliance with the License. You may obtain a copy of
the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
governing permissions
+ * and limitations under the License.
+ **/
+
+
+//-------------------- rico.js
+var Rico = {
+ Version: '1.1-beta2'
+}
+
+Rico.ArrayExtensions = new Array();
+
+if (Object.prototype.extend) {
+ // in prototype.js...
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Object.prototype.extend;
+}
+
+if (Array.prototype.push) {
+ // in prototype.js...
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.push;
+}
+
+if (!Array.prototype.remove) {
+ Array.prototype.remove = function(dx) {
+ if( isNaN(dx) || dx > this.length )
+ return false;
+ for( var i=0,n=0; i<this.length; i++ )
+ if( i != dx )
+ this[n++]=this[i];
+ this.length-=1;
+ };
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.remove;
+}
+
+if (!Array.prototype.removeItem) {
+ Array.prototype.removeItem = function(item) {
+ for ( var i = 0 ; i < this.length ; i++ )
+ if ( this[i] == item ) {
+ this.remove(i);
+ break;
+ }
+ };
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.removeItem;
+}
+
+if (!Array.prototype.indices) {
+ Array.prototype.indices = function() {
+ var indexArray = new Array();
+ for ( index in this ) {
+ var ignoreThis = false;
+ for ( var i = 0 ; i < Rico.ArrayExtensions.length ; i++ ) {
+ if ( this[index] == Rico.ArrayExtensions[i] ) {
+ ignoreThis = true;
+ break;
+ }
+ }
+ if ( !ignoreThis )
+ indexArray[ indexArray.length ] = index;
+ }
+ return indexArray;
+ }
+ Rico.ArrayExtensions[ Rico.ArrayExtensions.length ] =
Array.prototype.indices;
+}
+
+// Create the loadXML method and xml getter for Mozilla
+if ( window.DOMParser &&
+ window.XMLSerializer &&
+ window.Node && Node.prototype && Node.prototype.__defineGetter__ ) {
+
+ if (!Document.prototype.loadXML) {
+ Document.prototype.loadXML = function (s) {
+ var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
+ while (this.hasChildNodes())
+ this.removeChild(this.lastChild);
+
+ for (var i = 0; i < doc2.childNodes.length; i++) {
+ this.appendChild(this.importNode(doc2.childNodes[i], true));
+ }
+ };
+ }
+
+ Document.prototype.__defineGetter__( "xml",
+ function () {
+ return (new XMLSerializer()).serializeToString(this);
+ }
+ );
+}
+
+document.getElementsByTagAndClassName = function(tagName, className) {
+ if ( tagName == null )
+ tagName = '*';
+
+ var children = document.getElementsByTagName(tagName) || document.all;
+ var elements = new Array();
+
+ if ( className == null )
+ return children;
+
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ var classNames = child.className.split(' ');
+ for (var j = 0; j < classNames.length; j++) {
+ if (classNames[j] == className) {
+ elements.push(child);
+ break;
+ }
+ }
+ }
+
+ return elements;
+}
+
+
+//-------------------- ricoAccordion.js
+
+Rico.Accordion = Class.create();
+
+Rico.Accordion.prototype = {
+
+ initialize: function(container, options) {
+ this.container = $(container);
+ this.lastExpandedTab = null;
+ this.accordionTabs = new Array();
+ this.setOptions(options);
+ this._attachBehaviors();
+
+ this.container.style.borderBottom = '1px solid ' +
this.options.borderColor;
+
+ // set the initial visual state...
+ for ( var i=1 ; i < this.accordionTabs.length ; i++ )
+ {
+ this.accordionTabs[i].collapse();
+ this.accordionTabs[i].content.style.display = 'none';
+ }
+ this.lastExpandedTab = this.accordionTabs[0];
+ this.lastExpandedTab.content.style.height = this.options.panelHeight +
"px";
+ this.lastExpandedTab.showExpanded();
+ this.lastExpandedTab.titleBar.style.fontWeight =
this.options.expandedFontWeight;
+ },
+
+ setOptions: function(options) {
+ this.options = {
+ expandedBg : '#63699c',
+ hoverBg : '#63699c',
+ collapsedBg : '#6b79a5',
+ expandedTextColor : '#ffffff',
+ expandedFontWeight : 'bold',
+ hoverTextColor : '#ffffff',
+ collapsedTextColor : '#ced7ef',
+ collapsedFontWeight : 'normal',
+ hoverTextColor : '#ffffff',
+ borderColor : '#1f669b',
+ panelHeight : 200,
+ onHideTab : null,
+ onShowTab : null
+ }.extend(options || {});
+ },
+
+ showTabByIndex: function( anIndex, animate ) {
+ var doAnimate = arguments.length == 1 ? true : animate;
+ this.showTab( this.accordionTabs[anIndex], doAnimate );
+ },
+
+ showTab: function( accordionTab, animate ) {
+
+ var doAnimate = arguments.length == 1 ? true : animate;
+
+ if ( this.options.onHideTab )
+ this.options.onHideTab(this.lastExpandedTab);
+
+ this.lastExpandedTab.showCollapsed();
+ var accordion = this;
+ var lastExpandedTab = this.lastExpandedTab;
+
+ this.lastExpandedTab.content.style.height = (this.options.panelHeight
- 1) + 'px';
+ accordionTab.content.style.display = '';
+
+ accordionTab.titleBar.style.fontWeight =
this.options.expandedFontWeight;
+
+ if ( doAnimate ) {
+ new Effect.AccordionSize( this.lastExpandedTab.content,
+ accordionTab.content,
+ 1,
+ this.options.panelHeight,
+ 100, 10,
+ { complete: function()
{accordion.showTabDone(lastExpandedTab)} } );
+ this.lastExpandedTab = accordionTab;
+ }
+ else {
+ this.lastExpandedTab.content.style.height = "1px";
+ accordionTab.content.style.height = this.options.panelHeight + "px";
+ this.lastExpandedTab = accordionTab;
+ this.showTabDone(lastExpandedTab);
+ }
+ },
+
+ showTabDone: function(collapsedTab) {
+ collapsedTab.content.style.display = 'none';
+ this.lastExpandedTab.showExpanded();
+ if ( this.options.onShowTab )
+ this.options.onShowTab(this.lastExpandedTab);
+ },
+
+ _attachBehaviors: function() {
+ var panels = this._getDirectChildrenByTag(this.container, 'DIV');
+ for ( var i = 0 ; i < panels.length ; i++ ) {
+
+ var tabChildren = this._getDirectChildrenByTag(panels[i],'DIV');
+ if ( tabChildren.length != 2 )
+ continue; // unexpected
+
+ var tabTitleBar = tabChildren[0];
+ var tabContentBox = tabChildren[1];
+ this.accordionTabs.push( new
Rico.Accordion.Tab(this,tabTitleBar,tabContentBox) );
+ }
+ },
+
+ _getDirectChildrenByTag: function(e, tagName) {
+ var kids = new Array();
+ var allKids = e.childNodes;
+ for( var i = 0 ; i < allKids.length ; i++ )
+ if ( allKids[i] && allKids[i].tagName && allKids[i].tagName ==
tagName )
+ kids.push(allKids[i]);
+ return kids;
+ }
+
+};
+
+Rico.Accordion.Tab = Class.create();
+
+Rico.Accordion.Tab.prototype = {
+
+ initialize: function(accordion, titleBar, content) {
+ this.accordion = accordion;
+ this.titleBar = titleBar;
+ this.content = content;
+ this._attachBehaviors();
+ },
+
+ collapse: function() {
+ this.showCollapsed();
+ this.content.style.height = "1px";
+ },
+
+ showCollapsed: function() {
+ this.expanded = false;
+ this.titleBar.style.backgroundColor =
this.accordion.options.collapsedBg;
+ this.titleBar.style.color =
this.accordion.options.collapsedTextColor;
+ this.titleBar.style.fontWeight =
this.accordion.options.collapsedFontWeight;
+ this.content.style.overflow = "hidden";
+ },
+
+ showExpanded: function() {
+ this.expanded = true;
+ this.titleBar.style.backgroundColor =
this.accordion.options.expandedBg;
+ this.titleBar.style.color =
this.accordion.options.expandedTextColor;
+ this.content.style.overflow = "visible";
+ },
+
+ titleBarClicked: function(e) {
+ if ( this.accordion.lastExpandedTab == this )
+ return;
+ this.accordion.showTab(this);
+ },
+
+ hover: function(e) {
+ this.titleBar.style.backgroundColor =
this.accordion.options.hoverBg;
+ this.titleBar.style.color =
this.accordion.options.hoverTextColor;
+ },
+
+ unhover: function(e) {
+ if ( this.expanded ) {
+ this.titleBar.style.backgroundColor =
this.accordion.options.expandedBg;
+ this.titleBar.style.color =
this.accordion.options.expandedTextColor;
+ }
+ else {
+ this.titleBar.style.backgroundColor =
this.accordion.options.collapsedBg;
+ this.titleBar.style.color =
this.accordion.options.collapsedTextColor;
+ }
+ },
+
+ _attachBehaviors: function() {
+ this.content.style.border = "1px solid " +
this.accordion.options.borderColor;
+ this.content.style.borderTopWidth = "0px";
+ this.content.style.borderBottomWidth = "0px";
+ this.content.style.margin = "0px";
+
+ this.titleBar.onclick =
this.titleBarClicked.bindAsEventListener(this);
+ this.titleBar.onmouseover = this.hover.bindAsEventListener(this);
+ this.titleBar.onmouseout = this.unhover.bindAsEventListener(this);
+ }
+
+};
+
+
+//-------------------- ricoAjaxEngine.js
+
+Rico.AjaxEngine = Class.create();
+
+Rico.AjaxEngine.prototype = {
+
+ initialize: function() {
+ this.ajaxElements = new Array();
+ this.ajaxObjects = new Array();
+ this.requestURLS = new Array();
+ },
+
+ registerAjaxElement: function( anId, anElement ) {
+ if ( arguments.length == 1 )
+ anElement = $(anId);
+ this.ajaxElements[anId] = anElement;
+ },
+
+ registerAjaxObject: function( anId, anObject ) {
+ this.ajaxObjects[anId] = anObject;
+ },
+
+ registerRequest: function (requestLogicalName, requestURL) {
+ this.requestURLS[requestLogicalName] = requestURL;
+ },
+
+ sendRequest: function(requestName) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 1 )
+ queryString = this._createQueryString(arguments, 1);
+
+ new Ajax.Request(requestURL, this._requestOptions(queryString));
+ },
+
+ sendRequestWithData: function(requestName, xmlDocument) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 2 )
+ queryString = this._createQueryString(arguments, 2);
+
+ new Ajax.Request(requestURL + (requestURL.indexOf("?")<0?"?":"&") +
queryString, this._requestOptions(null,xmlDocument));
+ },
+
+ sendRequestAndUpdate: function(requestName,container,options) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 3 )
+ queryString = this._createQueryString(arguments, 3);
+
+ var updaterOptions = this._requestOptions(queryString);
+ updaterOptions.onComplete = null;
+ updaterOptions.extend(options);
+
+ new Ajax.Updater(container, requestURL, updaterOptions);
+ },
+
+ sendRequestWithDataAndUpdate:
function(requestName,xmlDocument,container,options) {
+ var requestURL = this.requestURLS[requestName];
+ if ( requestURL == null )
+ return;
+
+ var queryString = "";
+ if ( arguments.length > 4 )
+ queryString = this._createQueryString(arguments, 4);
+
+
+ var updaterOptions = this._requestOptions(queryString,xmlDocument);
+ updaterOptions.onComplete = null;
+ updaterOptions.extend(options);
+
+ new Ajax.Updater(container, requestURL +
(requestURL.indexOf("?")<0?"?":"&") + queryString, updaterOptions);
+ },
+
+ // Private -- not part of intended engine API
--------------------------------------------------------------------
+
+ _requestOptions: function(queryString,xmlDoc) {
+ var self = this;
+
+ var requestHeaders = ['X-Rico-Version', Rico.Version ];
+ var sendMethod = "post"
+ if ( arguments[1] )
+ requestHeaders.push( 'Content-type', 'text/xml' );
+ else
+ sendMethod = "get";
+
+ return { requestHeaders: requestHeaders,
+ parameters: queryString,
+ postBody: arguments[1] ? xmlDoc : null,
+ method: sendMethod,
+ onComplete: self._onRequestComplete.bind(self) };
+ },
+
+ _createQueryString: function( theArgs, offset ) {
+ var queryString = ""
+ for ( var i = offset ; i < theArgs.length ; i++ ) {
+ if ( i != offset )
+ queryString += "&";
+
+ var anArg = theArgs[i];
+
+ if ( anArg.name != undefined && anArg.value != undefined ) {
+ queryString += anArg.name + "=" + escape(anArg.value);
+ }
+ else {
+ var ePos = anArg.indexOf('=');
+ var argName = anArg.substring( 0, ePos );
+ var argValue = anArg.substring( ePos + 1 );
+ queryString += argName + "=" + escape(argValue);
+ }
+ }
+
+ return queryString;
+ },
+
+ _onRequestComplete : function(request) {
+
+ //!!TODO: error handling infrastructure??
+ if (request.status != 200)
+ return;
+
+ var response =
request.responseXML.getElementsByTagName("ajax-response");
+
+ if (response == null || response.length != 1)
+ return;
+ this._processAjaxResponse( response[0].childNodes );
+ },
+
+ _processAjaxResponse: function( xmlResponseElements ) {
+ for ( var i = 0 ; i < xmlResponseElements.length ; i++ ) {
+ var responseElement = xmlResponseElements[i];
+
+ // only process nodes of type element.....
+ if ( responseElement.nodeType != 1 )
+ continue;
+
+ var responseType = responseElement.getAttribute("type");
+ var responseId = responseElement.getAttribute("id");
+
+ if ( responseType == "object" )
+ this._processAjaxObjectUpdate( this.ajaxObjects[ responseId ],
responseElement );
+ else if ( responseType == "element" )
+ this._processAjaxElementUpdate( this.ajaxElements[ responseId ],
responseElement );
+ else
+ alert('unrecognized AjaxResponse type : ' + responseType );
+ }
+ },
+
+ _processAjaxObjectUpdate: function( ajaxObject, responseElement ) {
+ ajaxObject.ajaxUpdate( responseElement );
+ },
+
+ _processAjaxElementUpdate: function( ajaxElement, responseElement ) {
+ ajaxElement.innerHTML = RicoUtil.getContentAsString(responseElement);
+ }
+
+}
+
+var ajaxEngine = new Rico.AjaxEngine();
+
+
+//-------------------- ricoColor.js
+Rico.Color = Class.create();
+
+Rico.Color.prototype = {
+
+ initialize: function(red, green, blue) {
+ this.rgb = { r: red, g : green, b : blue };
+ },
+
+ setRed: function(r) {
+ this.rgb.r = r;
+ },
+
+ setGreen: function(g) {
+ this.rgb.g = g;
+ },
+
+ setBlue: function(b) {
+ this.rgb.b = b;
+ },
+
+ setHue: function(h) {
+
+ // get an HSB model, and set the new hue...
+ var hsb = this.asHSB();
+ hsb.h = h;
+
+ // convert back to RGB...
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, hsb.b);
+ },
+
+ setSaturation: function(s) {
+ // get an HSB model, and set the new hue...
+ var hsb = this.asHSB();
+ hsb.s = s;
+
+ // convert back to RGB and set values...
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, hsb.b);
+ },
+
+ setBrightness: function(b) {
+ // get an HSB model, and set the new hue...
+ var hsb = this.asHSB();
+ hsb.b = b;
+
+ // convert back to RGB and set values...
+ this.rgb = Rico.Color.HSBtoRGB( hsb.h, hsb.s, hsb.b );
+ },
+
+ darken: function(percent) {
+ var hsb = this.asHSB();
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, Math.max(hsb.b -
percent,0));
+ },
+
+ brighten: function(percent) {
+ var hsb = this.asHSB();
+ this.rgb = Rico.Color.HSBtoRGB(hsb.h, hsb.s, Math.min(hsb.b +
percent,1));
+ },
+
+ blend: function(other) {
+ this.rgb.r = Math.floor((this.rgb.r + other.rgb.r)/2);
+ this.rgb.g = Math.floor((this.rgb.g + other.rgb.g)/2);
+ this.rgb.b = Math.floor((this.rgb.b + other.rgb.b)/2);
+ },
+
+ isBright: function() {
+ var hsb = this.asHSB();
+ return this.asHSB().b > 0.5;
+ },
+
+ isDark: function() {
+ return ! this.isBright();
+ },
+
+ asRGB: function() {
+ return "rgb(" + this.rgb.r + "," + this.rgb.g + "," + this.rgb.b + ")";
+ },
+
+ asHex: function() {
+ return "#" + this.rgb.r.toColorPart() + this.rgb.g.toColorPart() +
this.rgb.b.toColorPart();
+ },
+
+ asHSB: function() {
+ return Rico.Color.RGBtoHSB(this.rgb.r, this.rgb.g, this.rgb.b);
+ },
+
+ toString: function() {
+ return this.asHex();
+ }
+
+};
+
+Rico.Color.createFromHex = function(hexCode) {
+
+ if ( hexCode.indexOf('#') == 0 )
+ hexCode = hexCode.substring(1);
+ var red = hexCode.substring(0,2);
+ var green = hexCode.substring(2,4);
+ var blue = hexCode.substring(4,6);
+ return new Rico.Color( parseInt(red,16), parseInt(green,16),
parseInt(blue,16) );
+}
+
+/**
+ * Factory method for creating a color from the background of
+ * an HTML element.
+ */
+Rico.Color.createColorFromBackground = function(elem) {
+
+ var actualColor = RicoUtil.getElementsComputedStyle($(elem),
"backgroundColor", "background-color");
+
+ if ( actualColor == "transparent" && elem.parent )
+ return Rico.Color.createColorFromBackground(elem.parent);
+
+ if ( actualColor == null )
+ return new Rico.Color(255,255,255);
+
+ if ( actualColor.indexOf("rgb(") == 0 ) {
+ var colors = actualColor.substring(4, actualColor.length - 1 );
+ var colorArray = colors.split(",");
+ return new Rico.Color( parseInt( colorArray[0] ),
+ parseInt( colorArray[1] ),
+ parseInt( colorArray[2] ) );
+
+ }
+ else if ( actualColor.indexOf("#") == 0 ) {
+ var redPart = parseInt(actualColor.substring(1,3), 16);
+ var greenPart = parseInt(actualColor.substring(3,5), 16);
+ var bluePart = parseInt(actualColor.substring(5), 16);
+ return new Rico.Color( redPart, greenPart, bluePart );
+ }
+ else
+ return new Rico.Color(255,255,255);
+}
+
+Rico.Color.HSBtoRGB = function(hue, saturation, brightness) {
+
+ var red = 0;
+ var green = 0;
+ var blue = 0;
+
+ if (saturation == 0) {
+ red = parseInt(brightness * 255.0 + 0.5);
+ green = red;
+ blue = red;
+ }
+ else {
+ var h = (hue - Math.floor(hue)) * 6.0;
+ var f = h - Math.floor(h);
+ var p = brightness * (1.0 - saturation);
+ var q = brightness * (1.0 - saturation * f);
+ var t = brightness * (1.0 - (saturation * (1.0 - f)));
+
+ switch (parseInt(h)) {
+ case 0:
+ red = (brightness * 255.0 + 0.5);
+ green = (t * 255.0 + 0.5);
+ blue = (p * 255.0 + 0.5);
+ break;
+ case 1:
+ red = (q * 255.0 + 0.5);
+ green = (brightness * 255.0 + 0.5);
+ blue = (p * 255.0 + 0.5);
+ break;
+ case 2:
+ red = (p * 255.0 + 0.5);
+ green = (brightness * 255.0 + 0.5);
+ blue = (t * 255.0 + 0.5);
+ break;
+ case 3:
+ red = (p * 255.0 + 0.5);
+ green = (q * 255.0 + 0.5);
+ blue = (brightness * 255.0 + 0.5);
+ break;
+ case 4:
+ red = (t * 255.0 + 0.5);
+ green = (p * 255.0 + 0.5);
+ blue = (brightness * 255.0 + 0.5);
+ break;
+ case 5:
+ red = (brightness * 255.0 + 0.5);
+ green = (p * 255.0 + 0.5);
+ blue = (q * 255.0 + 0.5);
+ break;
+ }
+ }
+
+ return { r : parseInt(red), g : parseInt(green) , b : parseInt(blue) };
+}
+
+Rico.Color.RGBtoHSB = function(r, g, b) {
+
+ var hue;
+ var saturaton;
+ var brightness;
+
+ var cmax = (r > g) ? r : g;
+ if (b > cmax)
+ cmax = b;
+
+ var cmin = (r < g) ? r : g;
+ if (b < cmin)
+ cmin = b;
+
+ brightness = cmax / 255.0;
+ if (cmax != 0)
+ saturation = (cmax - cmin)/cmax;
+ else
+ saturation = 0;
+
+ if (saturation == 0)
+ hue = 0;
+ else {
+ var redc = (cmax - r)/(cmax - cmin);
+ var greenc = (cmax - g)/(cmax - cmin);
+ var bluec = (cmax - b)/(cmax - cmin);
+
+ if (r == cmax)
+ hue = bluec - greenc;
+ else if (g == cmax)
+ hue = 2.0 + redc - bluec;
+ else
+ hue = 4.0 + greenc - redc;
+
+ hue = hue / 6.0;
+ if (hue < 0)
+ hue = hue + 1.0;
+ }
+
+ return { h : hue, s : saturation, b : brightness };
+}
+
+
+//-------------------- ricoCorner.js
+
+Rico.Corner = {
+
+ round: function(e, options) {
+ var e = $(e);
+ this._setOptions(options);
+
+ var color = this.options.color;
+ if ( this.options.color == "fromElement" )
+ color = this._background(e);
+
+ var bgColor = this.options.bgColor;
+ if ( this.options.bgColor == "fromParent" )
+ bgColor = this._background(e.offsetParent);
+
+ this._roundCornersImpl(e, color, bgColor);
+ },
+
+ _roundCornersImpl: function(e, color, bgColor) {
+ if(this.options.border)
+ this._renderBorder(e,bgColor);
+ if(this._isTopRounded())
+ this._roundTopCorners(e,color,bgColor);
+ if(this._isBottomRounded())
+ this._roundBottomCorners(e,color,bgColor);
+ },
+
+ _renderBorder: function(el,bgColor) {
+ var borderValue = "1px solid " + this._borderColor(bgColor);
+ var borderL = "border-left: " + borderValue;
+ var borderR = "border-right: " + borderValue;
+ var style = "style='" + borderL + ";" + borderR + "'";
+ el.innerHTML = "<div " + style + ">" + el.innerHTML + "</div>"
+ },
+
+ _roundTopCorners: function(el, color, bgColor) {
+ var corner = this._createCorner(bgColor);
+ for(var i=0 ; i < this.options.numSlices ; i++ )
+ corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));
+ el.style.paddingTop = 0;
+ el.insertBefore(corner,el.firstChild);
+ },
+
+ _roundBottomCorners: function(el, color, bgColor) {
+ var corner = this._createCorner(bgColor);
+ for(var i=(this.options.numSlices-1) ; i >= 0 ; i-- )
+
corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));
+ el.style.paddingBottom = 0;
+ el.appendChild(corner);
+ },
+
+ _createCorner: function(bgColor) {
+ var corner = document.createElement("div");
+ corner.style.backgroundColor = (this._isTransparent() ? "transparent"
: bgColor);
+ return corner;
+ },
+
+ _createCornerSlice: function(color,bgColor, n, position) {
+ var slice = document.createElement("span");
+
+ var inStyle = slice.style;
+ inStyle.backgroundColor = color;
+ inStyle.display = "block";
+ inStyle.height = "1px";
+ inStyle.overflow = "hidden";
+ inStyle.fontSize = "1px";
+
+ var borderColor = this._borderColor(color,bgColor);
+ if ( this.options.border && n == 0 ) {
+ inStyle.borderTopStyle = "solid";
+ inStyle.borderTopWidth = "1px";
+ inStyle.borderLeftWidth = "0px";
+ inStyle.borderRightWidth = "0px";
+ inStyle.borderBottomWidth = "0px";
+ inStyle.height = "0px"; // assumes css compliant box
model
+ inStyle.borderColor = borderColor;
+ }
+ else if(borderColor) {
+ inStyle.borderColor = borderColor;
+ inStyle.borderStyle = "solid";
+ inStyle.borderWidth = "0px 1px";
+ }
+
+ if ( !this.options.compact && (n == (this.options.numSlices-1)) )
+ inStyle.height = "2px";
+
+ this._setMargin(slice, n, position);
+ this._setBorder(slice, n, position);
+
+ return slice;
+ },
+
+ _setOptions: function(options) {
+ this.options = {
+ corners : "all",
+ color : "fromElement",
+ bgColor : "fromParent",
+ blend : true,
+ border : false,
+ compact : false
+ }.extend(options || {});
+
+ this.options.numSlices = this.options.compact ? 2 : 4;
+ if ( this._isTransparent() )
+ this.options.blend = false;
+ },
+
+ _whichSideTop: function() {
+ if ( this._hasString(this.options.corners, "all", "top") )
+ return "";
+
+ if ( this.options.corners.indexOf("tl") >= 0 &&
this.options.corners.indexOf("tr") >= 0 )
+ return "";
+
+ if (this.options.corners.indexOf("tl") >= 0)
+ return "left";
+ else if (this.options.corners.indexOf("tr") >= 0)
+ return "right";
+ return "";
+ },
+
+ _whichSideBottom: function() {
+ if ( this._hasString(this.options.corners, "all", "bottom") )
+ return "";
+
+ if ( this.options.corners.indexOf("bl")>=0 &&
this.options.corners.indexOf("br")>=0 )
+ return "";
+
+ if(this.options.corners.indexOf("bl") >=0)
+ return "left";
+ else if(this.options.corners.indexOf("br")>=0)
+ return "right";
+ return "";
+ },
+
+ _borderColor : function(color,bgColor) {
+ if ( color == "transparent" )
+ return bgColor;
+ else if ( this.options.border )
+ return this.options.border;
+ else if ( this.options.blend )
+ return this._blend( bgColor, color );
+ else
+ return "";
+ },
+
+
+ _setMargin: function(el, n, corners) {
+ var marginSize = this._marginSize(n);
+ var whichSide = corners == "top" ? this._whichSideTop() :
this._whichSideBottom();
+
+ if ( whichSide == "left" ) {
+ el.style.marginLeft = marginSize + "px"; el.style.marginRight =
"0px";
+ }
+ else if ( whichSide == "right" ) {
+ el.style.marginRight = marginSize + "px"; el.style.marginLeft =
"0px";
+ }
+ else {
+ el.style.marginLeft = marginSize + "px"; el.style.marginRight =
marginSize + "px";
+ }
+ },
+
+ _setBorder: function(el,n,corners) {
+ var borderSize = this._borderSize(n);
+ var whichSide = corners == "top" ? this._whichSideTop() :
this._whichSideBottom();
+
+ if ( whichSide == "left" ) {
+ el.style.borderLeftWidth = borderSize + "px";
el.style.borderRightWidth = "0px";
+ }
+ else if ( whichSide == "right" ) {
+ el.style.borderRightWidth = borderSize + "px";
el.style.borderLeftWidth = "0px";
+ }
+ else {
+ el.style.borderLeftWidth = borderSize + "px";
el.style.borderRightWidth = borderSize + "px";
+ }
+ },
+
+ _marginSize: function(n) {
+ if ( this._isTransparent() )
+ return 0;
+
+ var marginSizes = [ 5, 3, 2, 1 ];
+ var blendedMarginSizes = [ 3, 2, 1, 0 ];
+ var compactMarginSizes = [ 2, 1 ];
+ var smBlendedMarginSizes = [ 1, 0 ];
+
+ if ( this.options.compact && this.options.blend )
+ return smBlendedMarginSizes[n];
+ else if ( this.options.compact )
+ return compactMarginSizes[n];
+ else if ( this.options.blend )
+ return blendedMarginSizes[n];
+ else
+ return marginSizes[n];
+ },
+
+ _borderSize: function(n) {
+ var transparentBorderSizes = [ 5, 3, 2, 1 ];
+ var blendedBorderSizes = [ 2, 1, 1, 1 ];
+ var compactBorderSizes = [ 1, 0 ];
+ var actualBorderSizes = [ 0, 2, 0, 0 ];
+
+ if ( this.options.compact && (this.options.blend ||
this._isTransparent()) )
+ return 1;
+ else if ( this.options.compact )
+ return compactBorderSizes[n];
+ else if ( this.options.blend )
+ return blendedBorderSizes[n];
+ else if ( this.options.border )
+ return actualBorderSizes[n];
+ else if ( this._isTransparent() )
+ return transparentBorderSizes[n];
+ return 0;
+ },
+
+ _hasString: function(str) { for(var i=1 ; i<arguments.length ; i++) if
(str.indexOf(arguments[i]) >= 0) return true; return false; },
+ _blend: function(c1, c2) { var cc1 = Rico.Color.createFromHex(c1);
cc1.blend(Rico.Color.createFromHex(c2)); return cc1; },
+ _background: function(el) { try { return
Rico.Color.createColorFromBackground(el).asHex(); } catch(err) { return
"#ffffff"; } },
+ _isTransparent: function() { return this.options.color == "transparent";
},
+ _isTopRounded: function() { return this._hasString(this.options.corners,
"all", "top", "tl", "tr"); },
+ _isBottomRounded: function() { return
this._hasString(this.options.corners, "all", "bottom", "bl", "br"); },
+ _hasSingleTextChild: function(el) { return el.childNodes.length == 1 &&
el.childNodes[0].nodeType == 3; }
+}
+
+
+//-------------------- ricoDragAndDrop.js
+Rico.DragAndDrop = Class.create();
+
+Rico.DragAndDrop.prototype = {
+
+ initialize: function() {
+ this.dropZones = new Array();
+ this.draggables = new Array();
+ this.currentDragObjects = new Array();
+ this.dragElement = null;
+ this.lastSelectedDraggable = null;
+ this.currentDragObjectVisible = false;
+ this.interestedInMotionEvents = false;
+ },
+
+ registerDropZone: function(aDropZone) {
+ this.dropZones[ this.dropZones.length ] = aDropZone;
+ },
+
+ deregisterDropZone: function(aDropZone) {
+ var newDropZones = new Array();
+ var j = 0;
+ for ( var i = 0 ; i < this.dropZones.length ; i++ ) {
+ if ( this.dropZones[i] != aDropZone )
+ newDropZones[j++] = this.dropZones[i];
+ }
+
+ this.dropZones = newDropZones;
+ },
+
+ clearDropZones: function() {
+ this.dropZones = new Array();
+ },
+
+ registerDraggable: function( aDraggable ) {
+ this.draggables[ this.draggables.length ] = aDraggable;
+ this._addMouseDownHandler( aDraggable );
+ },
+
+ clearSelection: function() {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].deselect();
+ this.currentDragObjects = new Array();
+ this.lastSelectedDraggable = null;
+ },
+
+ hasSelection: function() {
+ return this.currentDragObjects.length > 0;
+ },
+
+ setStartDragFromElement: function( e, mouseDownElement ) {
+ this.origPos = RicoUtil.toDocumentPosition(mouseDownElement);
+ this.startx = e.screenX - this.origPos.x
+ this.starty = e.screenY - this.origPos.y
+ //this.startComponentX = e.layerX ? e.layerX : e.offsetX;
+ //this.startComponentY = e.layerY ? e.layerY : e.offsetY;
+ //this.adjustedForDraggableSize = false;
+
+ this.interestedInMotionEvents = this.hasSelection();
+ this._terminateEvent(e);
+ },
+
+ updateSelection: function( draggable, extendSelection ) {
+ if ( ! extendSelection )
+ this.clearSelection();
+
+ if ( draggable.isSelected() ) {
+ this.currentDragObjects.removeItem(draggable);
+ draggable.deselect();
+ if ( draggable == this.lastSelectedDraggable )
+ this.lastSelectedDraggable = null;
+ }
+ else {
+ this.currentDragObjects[ this.currentDragObjects.length ] =
draggable;
+ draggable.select();
+ this.lastSelectedDraggable = draggable;
+ }
+ },
+
+ _mouseDownHandler: function(e) {
+ if ( arguments.length == 0 )
+ e = event;
+
+ // if not button 1 ignore it...
+ var nsEvent = e.which != undefined;
+ if ( (nsEvent && e.which != 1) || (!nsEvent && e.button != 1))
+ return;
+
+ var eventTarget = e.target ? e.target : e.srcElement;
+ var draggableObject = eventTarget.draggable;
+
+ var candidate = eventTarget;
+ while (draggableObject == null && candidate.parentNode) {
+ candidate = candidate.parentNode;
+ draggableObject = candidate.draggable;
+ }
+
+ if ( draggableObject == null )
+ return;
+
+ this.updateSelection( draggableObject, e.ctrlKey );
+
+ // clear the drop zones postion cache...
+ if ( this.hasSelection() )
+ for ( var i = 0 ; i < this.dropZones.length ; i++ )
+ this.dropZones[i].clearPositionCache();
+
+ this.setStartDragFromElement( e,
draggableObject.getMouseDownHTMLElement() );
+ },
+
+
+ _mouseMoveHandler: function(e) {
+ var nsEvent = e.which != undefined;
+ if ( !this.interestedInMotionEvents ) {
+ this._terminateEvent(e);
+ return;
+ }
+
+ if ( ! this.hasSelection() )
+ return;
+
+ if ( ! this.currentDragObjectVisible )
+ this._startDrag(e);
+
+ if ( !this.activatedDropZones )
+ this._activateRegisteredDropZones();
+
+ //if ( !this.adjustedForDraggableSize )
+ // this._adjustForDraggableSize(e);
+
+ this._updateDraggableLocation(e);
+ this._updateDropZonesHover(e);
+
+ this._terminateEvent(e);
+ },
+
+ _makeDraggableObjectVisible: function(e)
+ {
+ if ( !this.hasSelection() )
+ return;
+
+ var dragElement;
+ if ( this.currentDragObjects.length > 1 )
+ dragElement =
this.currentDragObjects[0].getMultiObjectDragGUI(this.currentDragObjects);
+ else
+ dragElement = this.currentDragObjects[0].getSingleObjectDragGUI();
+
+ // go ahead and absolute position it...
+ if ( RicoUtil.getElementsComputedStyle(dragElement, "position") !=
"absolute" )
+ dragElement.style.position = "absolute";
+
+ // need to parent him into the document...
+ if ( dragElement.parentNode == null || dragElement.parentNode.nodeType
== 11 )
+ document.body.appendChild(dragElement);
+
+ this.dragElement = dragElement;
+ this._updateDraggableLocation(e);
+
+ this.currentDragObjectVisible = true;
+ },
+
+ /**
+ _adjustForDraggableSize: function(e) {
+ var dragElementWidth = this.dragElement.offsetWidth;
+ var dragElementHeight = this.dragElement.offsetHeight;
+ if ( this.startComponentX > dragElementWidth )
+ this.startx -= this.startComponentX - dragElementWidth + 2;
+ if ( e.offsetY ) {
+ if ( this.startComponentY > dragElementHeight )
+ this.starty -= this.startComponentY - dragElementHeight + 2;
+ }
+ this.adjustedForDraggableSize = true;
+ },
+ **/
+
+ _updateDraggableLocation: function(e) {
+ var dragObjectStyle = this.dragElement.style;
+ dragObjectStyle.left = (e.screenX - this.startx) + "px"
+ dragObjectStyle.top = (e.screenY - this.starty) + "px";
+ },
+
+ _updateDropZonesHover: function(e) {
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ ) {
+ if ( ! this._mousePointInDropZone( e, this.dropZones[i] ) )
+ this.dropZones[i].hideHover();
+ }
+
+ for ( var i = 0 ; i < n ; i++ ) {
+ if ( this._mousePointInDropZone( e, this.dropZones[i] ) ) {
+ if ( this.dropZones[i].canAccept(this.currentDragObjects) )
+ this.dropZones[i].showHover();
+ }
+ }
+ },
+
+ _startDrag: function(e) {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].startDrag();
+
+ this._makeDraggableObjectVisible(e);
+ },
+
+ _mouseUpHandler: function(e) {
+ if ( ! this.hasSelection() )
+ return;
+
+ var nsEvent = e.which != undefined;
+ if ( (nsEvent && e.which != 1) || (!nsEvent && e.button != 1))
+ return;
+
+ this.interestedInMotionEvents = false;
+
+ if ( this.dragElement == null ) {
+ this._terminateEvent(e);
+ return;
+ }
+
+ if ( this._placeDraggableInDropZone(e) )
+ this._completeDropOperation(e);
+ else {
+ this._terminateEvent(e);
+ new Effect.Position( this.dragElement,
+ this.origPos.x,
+ this.origPos.y,
+ 200,
+ 20,
+ { complete :
this._doCancelDragProcessing.bind(this) } );
+ }
+ },
+
+ _completeDropOperation: function(e) {
+ if ( this.dragElement !=
this.currentDragObjects[0].getMouseDownHTMLElement() ) {
+ if ( this.dragElement.parentNode != null )
+ this.dragElement.parentNode.removeChild(this.dragElement);
+ }
+
+ this._deactivateRegisteredDropZones();
+ this._endDrag();
+ this.clearSelection();
+ this.dragElement = null;
+ this.currentDragObjectVisible = false;
+ this._terminateEvent(e);
+ },
+
+ _doCancelDragProcessing: function() {
+ this._cancelDrag();
+
+ if ( this.dragElement !=
this.currentDragObjects[0].getMouseDownHTMLElement() ) {
+ if ( this.dragElement.parentNode != null ) {
+ this.dragElement.parentNode.removeChild(this.dragElement);
+ }
+ }
+
+ this._deactivateRegisteredDropZones();
+ this.dragElement = null;
+ this.currentDragObjectVisible = false;
+ },
+
+ _placeDraggableInDropZone: function(e) {
+ var foundDropZone = false;
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ ) {
+ if ( this._mousePointInDropZone( e, this.dropZones[i] ) ) {
+ if ( this.dropZones[i].canAccept(this.currentDragObjects) ) {
+ this.dropZones[i].hideHover();
+ this.dropZones[i].accept(this.currentDragObjects);
+ foundDropZone = true;
+ break;
+ }
+ }
+ }
+
+ return foundDropZone;
+ },
+
+ _cancelDrag: function() {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].cancelDrag();
+ },
+
+ _endDrag: function() {
+ for ( var i = 0 ; i < this.currentDragObjects.length ; i++ )
+ this.currentDragObjects[i].endDrag();
+ },
+
+ _mousePointInDropZone: function( e, dropZone ) {
+
+ var absoluteRect = dropZone.getAbsoluteRect();
+
+ return e.clientX > absoluteRect.left &&
+ e.clientX < absoluteRect.right &&
+ e.clientY > absoluteRect.top &&
+ e.clientY < absoluteRect.bottom;
+ },
+
+ _addMouseDownHandler: function( aDraggable )
+ {
+ var htmlElement = aDraggable.getMouseDownHTMLElement();
+ if ( htmlElement != null ) {
+ htmlElement.draggable = aDraggable;
+ this._addMouseDownEvent( htmlElement );
+ }
+ },
+
+ _activateRegisteredDropZones: function() {
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ ) {
+ var dropZone = this.dropZones[i];
+ if ( dropZone.canAccept(this.currentDragObjects) )
+ dropZone.activate();
+ }
+
+ this.activatedDropZones = true;
+ },
+
+ _deactivateRegisteredDropZones: function() {
+ var n = this.dropZones.length;
+ for ( var i = 0 ; i < n ; i++ )
+ this.dropZones[i].deactivate();
+ this.activatedDropZones = false;
+ },
+
+ _addMouseDownEvent: function( htmlElement ) {
+ if ( typeof document.implementation != "undefined" &&
+ document.implementation.hasFeature("HTML", "1.0") &&
+ document.implementation.hasFeature("Events", "2.0") &&
+ document.implementation.hasFeature("CSS", "2.0") ) {
+ htmlElement.addEventListener("mousedown",
this._mouseDownHandler.bindAsEventListener(this), false);
+ }
+ else {
+ htmlElement.attachEvent( "onmousedown",
this._mouseDownHandler.bindAsEventListener(this) );
+ }
+ },
+
+ _terminateEvent: function(e) {
+ if ( e.stopPropagation != undefined )
+ e.stopPropagation();
+ else if ( e.cancelBubble != undefined )
+ e.cancelBubble = true;
+
+ if ( e.preventDefault != undefined )
+ e.preventDefault();
+ else
+ e.returnValue = false;
+ },
+
+ initializeEventHandlers: function() {
+ if ( typeof document.implementation != "undefined" &&
+ document.implementation.hasFeature("HTML", "1.0") &&
+ document.implementation.hasFeature("Events", "2.0") &&
+ document.implementation.hasFeature("CSS", "2.0") ) {
+ document.addEventListener("mouseup",
this._mouseUpHandler.bindAsEventListener(this), false);
+ document.addEventListener("mousemove",
this._mouseMoveHandler.bindAsEventListener(this), false);
+ }
+ else {
+ document.attachEvent( "onmouseup",
this._mouseUpHandler.bindAsEventListener(this) );
+ document.attachEvent( "onmousemove",
this._mouseMoveHandler.bindAsEventListener(this) );
+ }
+ }
+}
+
+var dndMgr = new Rico.DragAndDrop();
+dndMgr.initializeEventHandlers();
+
+
+//-------------------- ricoDraggable.js
+Rico.Draggable = Class.create();
+
+Rico.Draggable.prototype = {
+
+ initialize: function( type, htmlElement ) {
+ this.type = type;
+ this.htmlElement = $(htmlElement);
+ this.selected = false;
+ },
+
+ /**
+ * Returns the HTML element that should have a mouse down event
+ * added to it in order to initiate a drag operation
+ *
+ **/
+ getMouseDownHTMLElement: function() {
+ return this.htmlElement;
+ },
+
+ select: function() {
+ this.selected = true;
+
+ if ( this.showingSelected )
+ return;
+
+ var htmlElement = this.getMouseDownHTMLElement();
+
+ var color = Rico.Color.createColorFromBackground(htmlElement);
+ color.isBright() ? color.darken(0.033) : color.brighten(0.033);
+
+ this.saveBackground = RicoUtil.getElementsComputedStyle(htmlElement,
"backgroundColor", "background-color");
+ htmlElement.style.backgroundColor = color.asHex();
+ this.showingSelected = true;
+ },
+
+ deselect: function() {
+ this.selected = false;
+ if ( !this.showingSelected )
+ return;
+
+ var htmlElement = this.getMouseDownHTMLElement();
+
+ htmlElement.style.backgroundColor = this.saveBackground;
+ this.showingSelected = false;
+ },
+
+ isSelected: function() {
+ return this.selected;
+ },
+
+ startDrag: function() {
+ },
+
+ cancelDrag: function() {
+ },
+
+ endDrag: function() {
+ },
+
+ getSingleObjectDragGUI: function() {
+ return this.htmlElement;
+ },
+
+ getMultiObjectDragGUI: function( draggables ) {
+ return this.htmlElement;
+ },
+
+ getDroppedGUI: function() {
+ return this.htmlElement;
+ },
+
+ toString: function() {
+ return this.type + ":" + this.htmlElement + ":";
+ }
+
+}
+
+
+//-------------------- ricoDropzone.js
+Rico.Dropzone = Class.create();
+
+Rico.Dropzone.prototype = {
+
+ initialize: function( htmlElement ) {
+ this.htmlElement = $(htmlElement);
+ this.absoluteRect = null;
+ },
+
+ getHTMLElement: function() {
+ return this.htmlElement;
+ },
+
+ clearPositionCache: function() {
+ this.absoluteRect = null;
+ },
+
+ getAbsoluteRect: function() {
+ if ( this.absoluteRect == null ) {
+ var htmlElement = this.getHTMLElement();
+ var pos = RicoUtil.toViewportPosition(htmlElement);
+
+ this.absoluteRect = {
+ top: pos.y,
+ left: pos.x,
+ bottom: pos.y + htmlElement.offsetHeight,
+ right: pos.x + htmlElement.offsetWidth
+ };
+ }
+ return this.absoluteRect;
+ },
+
+ activate: function() {
+ var htmlElement = this.getHTMLElement();
+ if (htmlElement == null || this.showingActive)
+ return;
+
+ this.showingActive = true;
+ this.saveBackgroundColor = htmlElement.style.backgroundColor;
+
+ var fallbackColor = "#ffea84";
+ var currentColor = Rico.Color.createColorFromBackground(htmlElement);
+ if ( currentColor == null )
+ htmlElement.style.backgroundColor = fallbackColor;
+ else {
+ currentColor.isBright() ? currentColor.darken(0.2) :
currentColor.brighten(0.2);
+ htmlElement.style.backgroundColor = currentColor.asHex();
+ }
+ },
+
+ deactivate: function() {
+ var htmlElement = this.getHTMLElement();
+ if (htmlElement == null || !this.showingActive)
+ return;
+
+ htmlElement.style.backgroundColor = this.saveBackgroundColor;
+ this.showingActive = false;
+ this.saveBackgroundColor = null;
+ },
+
+ showHover: function() {
+ var htmlElement = this.getHTMLElement();
+ if ( htmlElement == null || this.showingHover )
+ return;
+
+ this.saveBorderWidth = htmlElement.style.borderWidth;
+ this.saveBorderStyle = htmlElement.style.borderStyle;
+ this.saveBorderColor = htmlElement.style.borderColor;
+
+ this.showingHover = true;
+ htmlElement.style.borderWidth = "1px";
+ htmlElement.style.borderStyle = "solid";
+ //htmlElement.style.borderColor = "#ff9900";
+ htmlElement.style.borderColor = "#ffff00";
+ },
+
+ hideHover: function() {
+ var htmlElement = this.getHTMLElement();
+ if ( htmlElement == null || !this.showingHover )
+ return;
+
+ htmlElement.style.borderWidth = this.saveBorderWidth;
+ htmlElement.style.borderStyle = this.saveBorderStyle;
+ htmlElement.style.borderColor = this.saveBorderColor;
+ this.showingHover = false;
+ },
+
+ canAccept: function(draggableObjects) {
+ return true;
+ },
+
+ accept: function(draggableObjects) {
+ var htmlElement = this.getHTMLElement();
+ if ( htmlElement == null )
+ return;
+
+ n = draggableObjects.length;
+ for ( var i = 0 ; i < n ; i++ )
+ {
+ var theGUI = draggableObjects[i].getDroppedGUI();
+ if ( RicoUtil.getElementsComputedStyle( theGUI, "position" ) ==
"absolute" )
+ {
+ theGUI.style.position = "static";
+ theGUI.style.top = "";
+ theGUI.style.top = "";
+ }
+ htmlElement.appendChild(theGUI);
+ }
+ }
+}
+
+
+//-------------------- ricoEffects.js
+
+/**
+ * Use the Effect namespace for effects. If using scriptaculous effects
+ * this will already be defined, otherwise we'll just create an empty
+ * object for it...
+ **/
+if ( window.Effect == undefined )
+ Effect = {};
+
+Effect.SizeAndPosition = Class.create();
+Effect.SizeAndPosition.prototype = {
+
+ initialize: function(element, x, y, w, h, duration, steps, options) {
+ this.element = $(element);
+ this.x = x;
+ this.y = y;
+ this.w = w;
+ this.h = h;
+ this.duration = duration;
+ this.steps = steps;
+ this.options = arguments[7] || {};
+
+ this.sizeAndPosition();
+ },
+
+ sizeAndPosition: function() {
+ if (this.isFinished()) {
+ if(this.options.complete) this.options.complete(this);
+ return;
+ }
+
+ if (this.timer)
+ clearTimeout(this.timer);
+
+ var stepDuration = Math.round(this.duration/this.steps) ;
+
+ // Get original values: x,y = top left corner; w,h = width height
+ var currentX = this.element.offsetLeft;
+ var currentY = this.element.offsetTop;
+ var currentW = this.element.offsetWidth;
+ var currentH = this.element.offsetHeight;
+
+ // If values not set, or zero, we do not modify them, and take
original as final as well
+ this.x = (this.x) ? this.x : currentX;
+ this.y = (this.y) ? this.y : currentY;
+ this.w = (this.w) ? this.w : currentW;
+ this.h = (this.h) ? this.h : currentH;
+
+ // how much do we need to modify our values for each step?
+ var difX = this.steps > 0 ? (this.x - currentX)/this.steps : 0;
+ var difY = this.steps > 0 ? (this.y - currentY)/this.steps : 0;
+ var difW = this.steps > 0 ? (this.w - currentW)/this.steps : 0;
+ var difH = this.steps > 0 ? (this.h - currentH)/this.steps : 0;
+
+ this.moveBy(difX, difY);
+ this.resizeBy(difW, difH);
+
+ this.duration -= stepDuration;
+ this.steps--;
+
+ this.timer = setTimeout(this.sizeAndPosition.bind(this), stepDuration);
+ },
+
+ isFinished: function() {
+ return this.steps <= 0;
+ },
+
+ moveBy: function( difX, difY ) {
+ var currentLeft = this.element.offsetLeft;
+ var currentTop = this.element.offsetTop;
+ var intDifX = parseInt(difX);
+ var intDifY = parseInt(difY);
+
+ var style = this.element.style;
+ if ( intDifX != 0 )
+ style.left = (currentLeft + intDifX) + "px";
+ if ( intDifY != 0 )
+ style.top = (currentTop + intDifY) + "px";
+ },
+
+ resizeBy: function( difW, difH ) {
+ var currentWidth = this.element.offsetWidth;
+ var currentHeight = this.element.offsetHeight;
+ var intDifW = parseInt(difW);
+ var intDifH = parseInt(difH);
+
+ var style = this.element.style;
+ if ( intDifW != 0 )
+ style.width = (currentWidth + intDifW) + "px";
+ if ( intDifH != 0 )
+ style.height = (currentHeight + intDifH) + "px";
+ }
+}
+
+Effect.Size = Class.create();
+Effect.Size.prototype = {
+
+ initialize: function(element, w, h, duration, steps, options) {
+ new Effect.SizeAndPosition(element, null, null, w, h, duration, steps,
options);
+ }
+}
+
+Effect.Position = Class.create();
+Effect.Position.prototype = {
+
+ initialize: function(element, x, y, duration, steps, options) {
+ new Effect.SizeAndPosition(element, x, y, null, null, duration, steps,
options);
+ }
+}
+
+Effect.Round = Class.create();
+Effect.Round.prototype = {
+
+ initialize: function(tagName, className, options) {
+ var elements =
document.getElementsByTagAndClassName(tagName,className);
+ for ( var i = 0 ; i < elements.length ; i++ )
+ Rico.Corner.round( elements[i], options );
+ }
+};
+
+Effect.FadeTo = Class.create();
+Effect.FadeTo.prototype = {
+
+ initialize: function( element, opacity, duration, steps, options) {
+ this.element = $(element);
+ this.opacity = opacity;
+ this.duration = duration;
+ this.steps = steps;
+ this.options = arguments[4] || {};
+ this.fadeTo();
+ },
+
+ fadeTo: function() {
+ if (this.isFinished()) {
+ if(this.options.complete) this.options.complete(this);
+ return;
+ }
+
+ if (this.timer)
+ clearTimeout(this.timer);
+
+ var stepDuration = Math.round(this.duration/this.steps) ;
+ var currentOpacity = this.getElementOpacity();
+ var delta = this.steps > 0 ? (this.opacity -
currentOpacity)/this.steps : 0;
+
+ this.changeOpacityBy(delta);
+ this.duration -= stepDuration;
+ this.steps--;
+
+ this.timer = setTimeout(this.fadeTo.bind(this), stepDuration);
+ },
+
+ changeOpacityBy: function(v) {
+ var currentOpacity = this.getElementOpacity();
+ var newOpacity = Math.max(0, Math.min(currentOpacity+v, 1));
+ this.element.ricoOpacity = newOpacity;
+
+ this.element.style.filter =
"alpha(opacity:"+Math.round(newOpacity*100)+")";
+ this.element.style.opacity = newOpacity; /*//*/;
+ },
+
+ isFinished: function() {
+ return this.steps <= 0;
+ },
+
+ getElementOpacity: function() {
+ if ( this.element.ricoOpacity == undefined ) {
+ var opacity;
+ if ( this.element.currentStyle ) {
+ opacity = this.element.currentStyle.opacity;
+ }
+ else if ( document.defaultView.getComputedStyle != undefined ) {
+ var computedStyle = document.defaultView.getComputedStyle;
+ opacity = computedStyle(this.element,
null).getPropertyValue('opacity');
+ }
+
+ this.element.ricoOpacity = opacity != undefined ? opacity : 1.0;
+ }
+
+ return parseFloat(this.element.ricoOpacity);
+ }
+}
+
+Effect.AccordionSize = Class.create();
+
+Effect.AccordionSize.prototype = {
+
+ initialize: function(e1, e2, start, end, duration, steps, options) {
+ this.e1 = $(e1);
+ this.e2 = $(e2);
+ this.start = start;
+ this.end = end;
+ this.duration = duration;
+ this.steps = steps;
+ this.options = arguments[6] || {};
+
+ this.accordionSize();
+ },
+
+ accordionSize: function() {
+
+ if (this.isFinished()) {
+ // just in case there are round errors or such...
+ this.e1.style.height = this.start + "px";
+ this.e2.style.height = this.end + "px";
+
+ if(this.options.complete)
+ this.options.complete(this);
+ return;
+ }
+
+ if (this.timer)
+ clearTimeout(this.timer);
+
+ var stepDuration = Math.round(this.duration/this.steps) ;
+
+ var diff = this.steps > 0 ? (parseInt(this.e1.offsetHeight) -
this.start)/this.steps : 0;
+ this.resizeBy(diff);
+
+ this.duration -= stepDuration;
+ this.steps--;
+
+ this.timer = setTimeout(this.accordionSize.bind(this), stepDuration);
+ },
+
+ isFinished: function() {
+ return this.steps <= 0;
+ },
+
+ resizeBy: function(diff) {
+ var h1Height = this.e1.offsetHeight;
+ var h2Height = this.e2.offsetHeight;
+ var intDiff = parseInt(diff);
+ if ( diff != 0 ) {
+ this.e1.style.height = (h1Height - intDiff) + "px";
+ this.e2.style.height = (h2Height + intDiff) + "px";
+ }
+ }
+
+};
+
+
+//-------------------- ricoLiveGrid.js
+
+// Rico.LiveGridMetaData
-----------------------------------------------------
+
+Rico.LiveGridMetaData = Class.create();
+
+Rico.LiveGridMetaData.prototype = {
+
+ initialize: function( pageSize, totalRows, columnCount, options ) {
+ this.pageSize = pageSize;
+ this.totalRows = totalRows;
+ this.setOptions(options);
+ this.scrollArrowHeight = 16;
+ this.columnCount = columnCount;
+ },
+
+ setOptions: function(options) {
+ this.options = {
+ largeBufferSize : 7.0, // 7 pages
+ nearLimitFactor : 0.2 // 20% of buffer
+ }.extend(options || {});
+ },
+
+ getPageSize: function() {
+ return this.pageSize;
+ },
+
+ getTotalRows: function() {
+ return this.totalRows;
+ },
+
+ setTotalRows: function(n) {
+ this.totalRows = n;
+ },
+
+ getLargeBufferSize: function() {
+ return parseInt(this.options.largeBufferSize * this.pageSize);
+ },
+
+ getLimitTolerance: function() {
+ return parseInt(this.getLargeBufferSize() *
this.options.nearLimitFactor);
+ }
+};
+
+// Rico.LiveGridScroller
-----------------------------------------------------
+
+Rico.LiveGridScroller = Class.create();
+
+Rico.LiveGridScroller.prototype = {
+
+ initialize: function(liveGrid, viewPort) {
+ this.isIE = navigator.userAgent.toLowerCase().indexOf("msie") >= 0;
+ this.liveGrid = liveGrid;
+ this.metaData = liveGrid.metaData;
+ this.createScrollBar();
+ this.scrollTimeout = null;
+ this.lastScrollPos = 0;
+ this.viewPort = viewPort;
+ this.rows = new Array();
+ },
+
+ isUnPlugged: function() {
+ return this.scrollerDiv.onscroll == null;
+ },
+
+ plugin: function() {
+ this.scrollerDiv.onscroll =
this.handleScroll.bindAsEventListener(this);
+ },
+
+ unplug: function() {
+ this.scrollerDiv.onscroll = null;
+ },
+
+ sizeIEHeaderHack: function() {
+ if ( !this.isIE ) return;
+ var headerTable = $(this.liveGrid.tableId + "_header");
+ if ( headerTable )
+ headerTable.rows[0].cells[0].style.width =
+ (headerTable.rows[0].cells[0].offsetWidth + 1) + "px";
+ },
+
+ createScrollBar: function() {
+ var visibleHeight = this.liveGrid.viewPort.visibleHeight();
+ // create the outer div...
+ this.scrollerDiv = document.createElement("div");
+ var scrollerStyle = this.scrollerDiv.style;
+ scrollerStyle.borderRight = "1px solid #ababab"; // hard coded color!!!
+ scrollerStyle.position = "relative";
+ scrollerStyle.left = this.isIE ? "-6px" : "-3px";
+ scrollerStyle.width = "19px";
+ scrollerStyle.height = visibleHeight + "px";
+ scrollerStyle.overflow = "auto";
+
+ // create the inner div...
+ this.heightDiv = document.createElement("div");
+ this.heightDiv.style.width = "1px";
+
+ this.heightDiv.style.height = parseInt(visibleHeight *
+
this.metaData.getTotalRows()/this.metaData.getPageSize()) + "px" ;
+ this.scrollerDiv.appendChild(this.heightDiv);
+ this.scrollerDiv.onscroll =
this.handleScroll.bindAsEventListener(this);
+
+ var table = this.liveGrid.table;
+ table.parentNode.parentNode.insertBefore( this.scrollerDiv,
table.parentNode.nextSibling );
+ },
+
+ updateSize: function() {
+ var table = this.liveGrid.table;
+ var visibleHeight = this.viewPort.visibleHeight();
+ this.heightDiv.style.height = parseInt(visibleHeight *
+
this.metaData.getTotalRows()/this.metaData.getPageSize()) + "px";
+ },
+
+ rowToPixel: function(rowOffset) {
+ return (rowOffset / this.metaData.getTotalRows()) *
this.heightDiv.offsetHeight
+ },
+
+ moveScroll: function(rowOffset) {
+ this.scrollerDiv.scrollTop = this.rowToPixel(rowOffset);
+ if ( this.metaData.options.onscroll )
+ this.metaData.options.onscroll( this.liveGrid, rowOffset );
+ },
+
+ handleScroll: function() {
+ if ( this.scrollTimeout )
+ clearTimeout( this.scrollTimeout );
+
+ var contentOffset = parseInt(this.scrollerDiv.scrollTop /
this.viewPort.rowHeight);
+ this.liveGrid.requestContentRefresh(contentOffset);
+ this.viewPort.scrollTo(this.scrollerDiv.scrollTop);
+
+ if ( this.metaData.options.onscroll )
+ this.metaData.options.onscroll( this.liveGrid, contentOffset );
+
+ this.scrollTimeout = setTimeout( this.scrollIdle.bind(this), 1200 );
+ },
+
+ scrollIdle: function() {
+ if ( this.metaData.options.onscrollidle )
+ this.metaData.options.onscrollidle();
+ }
+};
+
+// Rico.LiveGridBuffer -----------------------------------------------------
+
+Rico.LiveGridBuffer = Class.create();
+
+Rico.LiveGridBuffer.prototype = {
+
+ initialize: function(metaData, viewPort) {
+ this.startPos = 0;
+ this.size = 0;
+ this.metaData = metaData;
+ this.rows = new Array();
+ this.updateInProgress = false;
+ this.viewPort = viewPort;
+ this.maxBufferSize = metaData.getLargeBufferSize() * 2;
+ this.maxFetchSize = metaData.getLargeBufferSize();
+ this.lastOffset = 0;
+ },
+
+ getBlankRow: function() {
+ if (!this.blankRow ) {
+ this.blankRow = new Array();
+ for ( var i=0; i < this.metaData.columnCount ; i++ )
+ this.blankRow[i] = "&nbsp;";
+ }
+ return this.blankRow;
+ },
+
+ loadRows: function(ajaxResponse) {
+ var rowsElement = ajaxResponse.getElementsByTagName('rows')[0];
+ this.updateUI = rowsElement.getAttribute("update_ui") == "true"
+ var newRows = new Array()
+ var trs = rowsElement.getElementsByTagName("tr");
+ for ( var i=0 ; i < trs.length; i++ ) {
+ var row = newRows[i] = new Array();
+ var cells = trs[i].getElementsByTagName("td");
+ for ( var j=0; j < cells.length ; j++ ) {
+ var cell = cells[j];
+ var convertSpaces = cell.getAttribute("convert_spaces") ==
"true";
+ var cellContent = RicoUtil.getContentAsString(cell);
+ row[j] = convertSpaces ? this.convertSpaces(cellContent) :
cellContent;
+ if (!row[j])
+ row[j] = '&nbsp;';
+ }
+ }
+ return newRows;
+ },
+
+ update: function(ajaxResponse, start) {
+ var newRows = this.loadRows(ajaxResponse);
+ if (this.rows.length == 0) { // initial load
+ this.rows = newRows;
+ this.size = this.rows.length;
+ this.startPos = start;
+ return;
+ }
+ if (start > this.startPos) { //appending
+ if (this.startPos + this.rows.length < start) {
+ this.rows = newRows;
+ this.startPos = start;//
+ } else {
+ this.rows = this.rows.concat( newRows.slice(0,
newRows.length));
+ if (this.rows.length > this.maxBufferSize) {
+ var fullSize = this.rows.length;
+ this.rows = this.rows.slice(this.rows.length -
this.maxBufferSize, this.rows.length)
+ this.startPos = this.startPos + (fullSize -
this.rows.length);
+ }
+ }
+ } else { //prepending
+ if (start + newRows.length < this.startPos) {
+ this.rows = newRows;
+ } else {
+ this.rows = newRows.slice(0, this.startPos).concat(this.rows);
+ if (this.rows.length > this.maxBufferSize)
+ this.rows = this.rows.slice(0, this.maxBufferSize)
+ }
+ this.startPos = start;
+ }
+ this.size = this.rows.length;
+ },
+
+ clear: function() {
+ this.rows = new Array();
+ this.startPos = 0;
+ this.size = 0;
+ },
+
+ isOverlapping: function(start, size) {
+ return ((start < this.endPos()) && (this.startPos < start + size)) ||
(this.endPos() == 0)
+ },
+
+ isInRange: function(position) {
+ return (position >= this.startPos) && (position +
this.metaData.getPageSize() <= this.endPos());
+ //&& this.size() != 0;
+ },
+
+ isNearingTopLimit: function(position) {
+ return position - this.startPos < this.metaData.getLimitTolerance();
+ },
+
+ endPos: function() {
+ return this.startPos + this.rows.length;
+ },
+
+ isNearingBottomLimit: function(position) {
+ return this.endPos() - (position + this.metaData.getPageSize()) <
this.metaData.getLimitTolerance();
+ },
+
+ isAtTop: function() {
+ return this.startPos == 0;
+ },
+
+ isAtBottom: function() {
+ return this.endPos() == this.metaData.getTotalRows();
+ },
+
+ isNearingLimit: function(position) {
+ return ( !this.isAtTop() && this.isNearingTopLimit(position)) ||
+ ( !this.isAtBottom() && this.isNearingBottomLimit(position) )
+ },
+
+ getFetchSize: function(offset) {
+ var adjustedOffset = this.getFetchOffset(offset);
+ var adjustedSize = 0;
+ if (adjustedOffset >= this.startPos) { //apending
+ var endFetchOffset = this.maxFetchSize + adjustedOffset;
+ if (endFetchOffset > this.metaData.totalRows)
+ endFetchOffset = this.metaData.totalRows;
+ adjustedSize = endFetchOffset - adjustedOffset;
+ } else {//prepending
+ var adjustedSize = this.startPos - adjustedOffset;
+ if (adjustedSize > this.maxFetchSize)
+ adjustedSize = this.maxFetchSize;
+ }
+ return adjustedSize;
+ },
+
+ getFetchOffset: function(offset) {
+ var adjustedOffset = offset;
+ if (offset > this.startPos) //apending
+ adjustedOffset = (offset > this.endPos()) ? offset :
this.endPos();
+ else { //prepending
+ if (offset + this.maxFetchSize >= this.startPos) {
+ var adjustedOffset = this.startPos - this.maxFetchSize;
+ if (adjustedOffset < 0)
+ adjustedOffset = 0;
+ }
+ }
+ this.lastOffset = adjustedOffset;
+ return adjustedOffset;
+ },
+
+ getRows: function(start, count) {
+ var begPos = start - this.startPos
+ var endPos = begPos + count
+
+ // er? need more data...
+ if ( endPos > this.size )
+ endPos = this.size
+
+ var results = new Array()
+ var index = 0;
+ for ( var i=begPos ; i < endPos; i++ ) {
+ results[index++] = this.rows[i]
+ }
+ return results
+ },
+
+ convertSpaces: function(s) {
+ return s.split(" ").join("&nbsp;");
+ }
+
+};
+
+
+//Rico.GridViewPort --------------------------------------------------
+Rico.GridViewPort = Class.create();
+
+Rico.GridViewPort.prototype = {
+
+ initialize: function(table, rowHeight, visibleRows, buffer, liveGrid) {
+ this.lastDisplayedStartPos = 0;
+ this.div = table.parentNode;
+ this.table = table
+ this.rowHeight = rowHeight;
+ this.div.style.height = this.rowHeight * visibleRows;
+ this.div.style.overflow = "hidden";
+ this.buffer = buffer;
+ this.liveGrid = liveGrid;
+ this.visibleRows = visibleRows + 1;
+ this.lastPixelOffset = 0;
+ this.startPos = 0;
+ },
+
+ populateRow: function(htmlRow, row) {
+ for (var j=0; j < row.length; j++) {
+ htmlRow.cells[j].innerHTML = row[j]
+ }
+ },
+
+ bufferChanged: function() {
+ this.refreshContents( parseInt(this.lastPixelOffset / this.rowHeight));
+ },
+
+ clearRows: function() {
+ if (!this.isBlank) {
+ for (var i=0; i < this.visibleRows; i++)
+ this.populateRow(this.table.rows[i], this.buffer.getBlankRow());
+ this.isBlank = true;
+ }
+ },
+
+ clearContents: function() {
+ this.clearRows();
+ this.scrollTo(0);
+ this.startPos = 0;
+ this.lastStartPos = -1;
+ },
+
+ refreshContents: function(startPos) {
+ if (startPos == this.lastRowPos && !this.isPartialBlank &&
!this.isBlank) {
+ return;
+ }
+ if ((startPos + this.visibleRows < this.buffer.startPos)
+ || (this.buffer.startPos + this.buffer.size < startPos)
+ || (this.buffer.size == 0)) {
+ this.clearRows();
+ return;
+ }
+ this.isBlank = false;
+ var viewPrecedesBuffer = this.buffer.startPos > startPos
+ var contentStartPos = viewPrecedesBuffer ? this.buffer.startPos:
startPos;
+
+ var contentEndPos = (this.buffer.startPos + this.buffer.size <
startPos + this.visibleRows)
+ ? this.buffer.startPos + this.buffer.size
+ : startPos + this.visibleRows;
+ var rowSize = contentEndPos - contentStartPos;
+ var rows = this.buffer.getRows(contentStartPos, rowSize );
+ var blankSize = this.visibleRows - rowSize;
+ var blankOffset = viewPrecedesBuffer ? 0: rowSize;
+ var contentOffset = viewPrecedesBuffer ? blankSize: 0;
+
+ for (var i=0; i < rows.length; i++) {//initialize what we have
+ this.populateRow(this.table.rows[i + contentOffset], rows[i]);
+ }
+ for (var i=0; i < blankSize; i++) {// blank out the rest
+ this.populateRow(this.table.rows[i + blankOffset],
this.buffer.getBlankRow());
+ }
+ this.isPartialBlank = blankSize > 0;
+ this.lastRowPos = startPos;
+ },
+
+ scrollTo: function(pixelOffset) {
+ if (this.lastPixelOffset == pixelOffset)
+ return;
+
+ this.refreshContents(parseInt(pixelOffset / this.rowHeight))
+ this.div.scrollTop = pixelOffset % this.rowHeight
+
+ this.lastPixelOffset = pixelOffset;
+ },
+
+ visibleHeight: function() {
+ return parseInt(this.div.style.height);
+ }
+
+};
+
+
+Rico.LiveGridRequest = Class.create();
+Rico.LiveGridRequest.prototype = {
+ initialize: function( requestOffset, options ) {
+ this.requestOffset = requestOffset;
+ }
+};
+
+// Rico.LiveGrid -----------------------------------------------------
+
+Rico.LiveGrid = Class.create();
+
+Rico.LiveGrid.prototype = {
+
+ initialize: function( tableId, visibleRows, totalRows, url, options ) {
+ if ( options == null )
+ options = {};
+
+ this.tableId = tableId;
+ this.table = $(tableId);
+ var columnCount = this.table.rows[0].cells.length
+ this.metaData = new Rico.LiveGridMetaData(visibleRows, totalRows,
columnCount, options);
+ this.buffer = new Rico.LiveGridBuffer(this.metaData);
+
+ var rowCount = this.table.rows.length;
+ this.viewPort = new Rico.GridViewPort(this.table,
+ this.table.offsetHeight/rowCount,
+ visibleRows,
+ this.buffer, this);
+ this.scroller = new Rico.LiveGridScroller(this,this.viewPort);
+
+ this.additionalParms = options.requestParameters || [];
+
+ options.sortHandler = this.sortHandler.bind(this);
+
+ if ( $(tableId + '_header') )
+ this.sort = new Rico.LiveGridSort(tableId + '_header', options)
+
+ this.processingRequest = null;
+ this.unprocessedRequest = null;
+
+ this.initAjax(url);
+ if ( options.prefetchBuffer || options.prefetchOffset > 0) {
+ var offset = 0;
+ if (options.offset ) {
+ offset = options.offset;
+ this.scroller.moveScroll(offset);
+ this.viewPort.scrollTo(this.scroller.rowToPixel(offset));

+ }
+ if (options.sortCol) {
+ this.sortCol = options.sortCol;
+ this.sortDir = options.sortDir;
+ }
+ this.requestContentRefresh(offset);
+ }
+ },
+
+ resetContents: function() {
+ this.scroller.moveScroll(0);
+ this.buffer.clear();
+ this.viewPort.clearContents();
+ },
+
+ sortHandler: function(column) {
+ this.sortCol = column.name;
+ this.sortDir = column.currentSort;
+
+ this.resetContents();
+ this.requestContentRefresh(0)
+ },
+
+ setRequestParams: function() {
+ this.additionalParms = [];
+ for ( var i=0 ; i < arguments.length ; i++ )
+ this.additionalParms[i] = arguments[i];
+ },
+
+ setTotalRows: function( newTotalRows ) {
+ this.resetContents();
+ this.metaData.setTotalRows(newTotalRows);
+ this.scroller.updateSize();
+ },
+
+ initAjax: function(url) {
+ ajaxEngine.registerRequest( this.tableId + '_request', url );
+ ajaxEngine.registerAjaxObject( this.tableId + '_updater', this );
+ },
+
+ invokeAjax: function() {
+ },
+
+ handleTimedOut: function() {
+ //server did not respond in 4 seconds... assume that there could have
been
+ //an error or something, and allow requests to be processed again...
+ this.processingRequest = null;
+ this.processQueuedRequest();
+ },
+
+ fetchBuffer: function(offset) {
+ if ( this.buffer.isInRange(offset) &&
+ !this.buffer.isNearingLimit(offset)) {
+ return;
+ }
+ if (this.processingRequest) {
+ this.unprocessedRequest = new Rico.LiveGridRequest(offset);
+ return;
+ }
+ var bufferStartPos = this.buffer.getFetchOffset(offset);
+ this.processingRequest = new Rico.LiveGridRequest(offset);
+ this.processingRequest.bufferOffset = bufferStartPos;
+ var fetchSize = this.buffer.getFetchSize(offset);
+ var partialLoaded = false;
+ var callParms = [];
+ callParms.push(this.tableId + '_request');
+ callParms.push('id=' + this.tableId);
+ callParms.push('page_size=' + fetchSize);
+ callParms.push('offset=' + bufferStartPos);
+ if ( this.sortCol) {
+ callParms.push('sort_col=' + this.sortCol);
+ callParms.push('sort_dir=' + this.sortDir);
+ }
+
+ for( var i=0 ; i < this.additionalParms.length ; i++ )
+ callParms.push(this.additionalParms[i]);
+ ajaxEngine.sendRequest.apply( ajaxEngine, callParms );
+
+ this.timeoutHandler = setTimeout( this.handleTimedOut.bind(this),
20000 ); //todo: make as option
+ },
+
+ requestContentRefresh: function(contentOffset) {
+ this.fetchBuffer(contentOffset);
+ },
+
+ ajaxUpdate: function(ajaxResponse) {
+ try {
+ clearTimeout( this.timeoutHandler );
+
this.buffer.update(ajaxResponse,this.processingRequest.bufferOffset);
+ this.viewPort.bufferChanged();
+ }
+ catch(err) {}
+ finally {this.processingRequest = null; }
+ this.processQueuedRequest();
+ },
+
+ processQueuedRequest: function() {
+ if (this.unprocessedRequest != null) {
+ this.requestContentRefresh(this.unprocessedRequest.requestOffset);
+ this.unprocessedRequest = null
+ }
+ }
+
+};
+
+
+//-------------------- ricoLiveGridSort.js
+Rico.LiveGridSort = Class.create();
+
+Rico.LiveGridSort.prototype = {
+
+ initialize: function(headerTableId, options) {
+ this.headerTableId = headerTableId;
+ this.headerTable = $(headerTableId);
+ this.setOptions(options);
+ this.applySortBehavior();
+
+ if ( this.options.sortCol ) {
+ this.setSortUI( this.options.sortCol, this.options.sortDir );
+ }
+ },
+
+ setSortUI: function( columnName, sortDirection ) {
+ var cols = this.options.columns;
+ for ( var i = 0 ; i < cols.length ; i++ ) {
+ if ( cols[i].name == columnName ) {
+ this.setColumnSort(i, sortDirection);
+ break;
+ }
+ }
+ },
+
+ setOptions: function(options) {
+ this.options = {
+ sortAscendImg: 'images/sort_asc.gif',
+ sortDescendImg: 'images/sort_desc.gif',
+ imageWidth: 9,
+ imageHeight: 5,
+ ajaxSortURLParms: []
+ }.extend(options);
+
+ // preload the images...
+ new Image().src = this.options.sortAscendImg;
+ new Image().src = this.options.sortDescendImg;
+
+ this.sort = options.sortHandler;
+ if ( !this.options.columns )
+ this.options.columns = this.introspectForColumnInfo();
+ else {
+ // allow client to pass { columns: [ ["a", true], ["b", false] ] }
+ // and convert to an array of Rico.TableColumn objs...
+ this.options.columns =
this.convertToTableColumns(this.options.columns);
+ }
+ },
+
+ applySortBehavior: function() {
+ var headerRow = this.headerTable.rows[0];
+ var headerCells = headerRow.cells;
+ for ( var i = 0 ; i < headerCells.length ; i++ ) {
+ this.addSortBehaviorToColumn( i, headerCells[i] );
+ }
+ },
+
+ addSortBehaviorToColumn: function( n, cell ) {
+ if ( this.options.columns[n].isSortable() ) {
+ cell.id = this.headerTableId + '_' + n;
+ cell.style.cursor = 'pointer';
+ cell.onclick =
this.headerCellClicked.bindAsEventListener(this);
+ cell.innerHTML = cell.innerHTML + '<span id="' +
this.headerTableId + '_img_' + n + '">'
+ + '&nbsp;&nbsp;&nbsp;</span>';
+ }
+ },
+
+ // event handler....
+ headerCellClicked: function(evt) {
+ var eventTarget = evt.target ? evt.target : evt.srcElement;
+ var cellId = eventTarget.id;
+ var columnNumber = parseInt(cellId.substring( cellId.lastIndexOf('_')
+ 1 ));
+ var sortedColumnIndex = this.getSortedColumnIndex();
+ if ( sortedColumnIndex != -1 ) {
+ if ( sortedColumnIndex != columnNumber ) {
+ this.removeColumnSort(sortedColumnIndex);
+ this.setColumnSort(columnNumber, Rico.TableColumn.SORT_ASC);
+ }
+ else
+ this.toggleColumnSort(sortedColumnIndex);
+ }
+ else
+ this.setColumnSort(columnNumber, Rico.TableColumn.SORT_ASC);
+
+ if (this.options.sortHandler) {
+ this.options.sortHandler(this.options.columns[columnNumber]);
+ }
+ },
+
+ removeColumnSort: function(n) {
+ this.options.columns[n].setUnsorted();
+ this.setSortImage(n);
+ },
+
+ setColumnSort: function(n, direction) {
+ this.options.columns[n].setSorted(direction);
+ this.setSortImage(n);
+ },
+
+ toggleColumnSort: function(n) {
+ this.options.columns[n].toggleSort();
+ this.setSortImage(n);
+ },
+
+ setSortImage: function(n) {
+ var sortDirection = this.options.columns[n].getSortDirection();
+
+ var sortImageSpan = $( this.headerTableId + '_img_' + n );
+ if ( sortDirection == Rico.TableColumn.UNSORTED )
+ sortImageSpan.innerHTML = '&nbsp;&nbsp;';
+ else if ( sortDirection == Rico.TableColumn.SORT_ASC )
+ sortImageSpan.innerHTML = '&nbsp;&nbsp;<img width="' +
this.options.imageWidth + '" ' +
+ 'height="'+
this.options.imageHeight + '" ' +
+ 'src="' +
this.options.sortAscendImg + '"/>';
+ else if ( sortDirection == Rico.TableColumn.SORT_DESC )
+ sortImageSpan.innerHTML = '&nbsp;&nbsp;<img width="' +
this.options.imageWidth + '" ' +
+ 'height="'+
this.options.imageHeight + '" ' +
+ 'src="' +
this.options.sortDescendImg + '"/>';
+ },
+
+ getSortedColumnIndex: function() {
+ var cols = this.options.columns;
+ for ( var i = 0 ; i < cols.length ; i++ ) {
+ if ( cols[i].isSorted() )
+ return i;
+ }
+
+ return -1;
+ },
+
+ introspectForColumnInfo: function() {
+ var columns = new Array();
+ var headerRow = this.headerTable.rows[0];
+ var headerCells = headerRow.cells;
+ for ( var i = 0 ; i < headerCells.length ; i++ )
+ columns.push( new Rico.TableColumn(
this.deriveColumnNameFromCell(headerCells[i],i), true ) );
+ return columns;
+ },
+
+ convertToTableColumns: function(cols) {
+ var columns = new Array();
+ for ( var i = 0 ; i < cols.length ; i++ )
+ columns.push( new Rico.TableColumn( cols[i][0], cols[i][1] ) );
+ },
+
+ deriveColumnNameFromCell: function(cell,columnNumber) {
+ var cellContent = cell.innerText != undefined ? cell.innerText :
cell.textContent;
+ return cellContent ? cellContent.toLowerCase().split(' ').join('_') :
"col_" + columnNumber;
+ }
+};
+
+Rico.TableColumn = Class.create();
+
+Rico.TableColumn.UNSORTED = 0;
+Rico.TableColumn.SORT_ASC = "ASC";
+Rico.TableColumn.SORT_DESC = "DESC";
+
+Rico.TableColumn.prototype = {
+ initialize: function(name, sortable) {
+ this.name = name;
+ this.sortable = sortable;
+ this.currentSort = Rico.TableColumn.UNSORTED;
+ },
+
+ isSortable: function() {
+ return this.sortable;
+ },
+
+ isSorted: function() {
+ return this.currentSort != Rico.TableColumn.UNSORTED;
+ },
+
+ getSortDirection: function() {
+ return this.currentSort;
+ },
+
+ toggleSort: function() {
+ if ( this.currentSort == Rico.TableColumn.UNSORTED || this.currentSort
== Rico.TableColumn.SORT_DESC )
+ this.currentSort = Rico.TableColumn.SORT_ASC;
+ else if ( this.currentSort == Rico.TableColumn.SORT_ASC )
+ this.currentSort = Rico.TableColumn.SORT_DESC;
+ },
+
+ setUnsorted: function(direction) {
+ this.setSorted(Rico.TableColumn.UNSORTED);
+ },
+
+ setSorted: function(direction) {
+ // direction must by one of Rico.TableColumn.UNSORTED, .SORT_ASC, or
.SET_DESC...
+ this.currentSort = direction;
+ }
+
+};
+
+
+//-------------------- ricoUtil.js
+
+var RicoUtil = {
+
+ getElementsComputedStyle: function ( htmlElement, cssProperty,
mozillaEquivalentCSS) {
+ if ( arguments.length == 2 )
+ mozillaEquivalentCSS = cssProperty;
+
+ var el = $(htmlElement);
+ if ( el.currentStyle )
+ return el.currentStyle[cssProperty];
+ else
+ return document.defaultView.getComputedStyle(el,
null).getPropertyValue(mozillaEquivalentCSS);
+ },
+
+ createXmlDocument : function() {
+ if (document.implementation && document.implementation.createDocument)
{
+ var doc = document.implementation.createDocument("", "", null);
+
+ if (doc.readyState == null) {
+ doc.readyState = 1;
+ doc.addEventListener("load", function () {
+ doc.readyState = 4;
+ if (typeof doc.onreadystatechange == "function")
+ doc.onreadystatechange();
+ }, false);
+ }
+
+ return doc;
+ }
+
+ if (window.ActiveXObject)
+ return Try.these(
+ function() { return new ActiveXObject('MSXML2.DomDocument') },
+ function() { return new ActiveXObject('Microsoft.DomDocument')},
+ function() { return new ActiveXObject('MSXML.DomDocument') },
+ function() { return new ActiveXObject('MSXML3.DomDocument') }
+ ) || false;
+
+ return null;
+ },
+
+ getContentAsString: function( parentNode ) {
+ return parentNode.xml != undefined ?
+ this._getContentAsStringIE(parentNode) :
+ this._getContentAsStringMozilla(parentNode);
+ },
+
+ _getContentAsStringIE: function(parentNode) {
+ var contentStr = "";
+ for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+ contentStr += parentNode.childNodes[i].xml;
+ return contentStr;
+ },
+
+ _getContentAsStringMozilla: function(parentNode) {
+ var xmlSerializer = new XMLSerializer();
+ var contentStr = "";
+ for ( var i = 0 ; i < parentNode.childNodes.length ; i++ )
+ contentStr +=
xmlSerializer.serializeToString(parentNode.childNodes[i]);
+ return contentStr;
+ },
+
+ toViewportPosition: function(element) {
+ return this._toAbsolute(element,true);
+ },
+
+ toDocumentPosition: function(element) {
+ return this._toAbsolute(element,false);
+ },
+
+ /**
+ * Compute the elements position in terms of the window viewport
+ * so that it can be compared to the position of the mouse (dnd)
+ * This is additions of all the offsetTop,offsetLeft values up the
+ * offsetParent hierarchy, ...taking into account any scrollTop,
+ * scrollLeft values along the way...
+ *
+ * IE has a bug reporting a correct offsetLeft of elements within a
+ * a relatively positioned parent!!!
+ **/
+ _toAbsolute: function(element,accountForDocScroll) {
+
+ if ( navigator.userAgent.toLowerCase().indexOf("msie") == -1 )
+ return this._toAbsoluteMozilla(element,accountForDocScroll);
+
+ var x = 0;
+ var y = 0;
+ var parent = element;
+ while ( parent ) {
+
+ var borderXOffset = 0;
+ var borderYOffset = 0;
+ if ( parent != element ) {
+ var borderXOffset =
parseInt(this.getElementsComputedStyle(parent, "borderLeftWidth" ));
+ var borderYOffset =
parseInt(this.getElementsComputedStyle(parent, "borderTopWidth" ));
+ borderXOffset = isNaN(borderXOffset) ? 0 : borderXOffset;
+ borderYOffset = isNaN(borderYOffset) ? 0 : borderYOffset;
+ }
+
+ x += parent.offsetLeft - parent.scrollLeft + borderXOffset;
+ y += parent.offsetTop - parent.scrollTop + borderYOffset;
+ parent = parent.offsetParent;
+ }
+
+ if ( accountForDocScroll ) {
+ x -= this.docScrollLeft();
+ y -= this.docScrollTop();
+ }
+
+ return { x:x, y:y };
+ },
+
+ /**
+ * Mozilla did not report all of the parents up the hierarchy via the
+ * offsetParent property that IE did. So for the calculation of the
+ * offsets we use the offsetParent property, but for the calculation of
+ * the scrollTop/scrollLeft adjustments we navigate up via the parentNode
+ * property instead so as to get the scroll offsets...
+ *
+ **/
+ _toAbsoluteMozilla: function(element,accountForDocScroll) {
+ var x = 0;
+ var y = 0;
+ var parent = element;
+ while ( parent ) {
+ x += parent.offsetLeft;
+ y += parent.offsetTop;
+ parent = parent.offsetParent;
+ }
+
+ parent = element;
+ while ( parent &&
+ parent != document.body &&
+ parent != document.documentElement ) {
+ if ( parent.scrollLeft )
+ x -= parent.scrollLeft;
+ if ( parent.scrollTop )
+ y -= parent.scrollTop;
+ parent = parent.parentNode;
+ }
+
+ if ( accountForDocScroll ) {
+ x -= this.docScrollLeft();
+ y -= this.docScrollTop();
+ }
+
+ return { x:x, y:y };
+ },
+
+ docScrollLeft: function() {
+ if ( window.pageXOffset )
+ return window.pageXOffset;
+ else if ( document.documentElement &&
document.documentElement.scrollLeft )
+ return document.documentElement.scrollLeft;
+ else if ( document.body )
+ return document.body.scrollLeft;
+ else
+ return 0;
+ },
+
+ docScrollTop: function() {
+ if ( window.pageYOffset )
+ return window.pageYOffset;
+ else if ( document.documentElement &&
document.documentElement.scrollTop )
+ return document.documentElement.scrollTop;
+ else if ( document.body )
+ return document.body.scrollTop;
+ else
+ return 0;
+ }
+
+};

Added: trunk/main/planet/web/test/webapps/test/js/scriptaculous.js
===================================================================
--- trunk/main/planet/web/test/webapps/test/js/scriptaculous.js 2006-01-31
11:49:08 UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/js/scriptaculous.js 2006-01-31
12:10:53 UTC (rev 1001)
@@ -0,0 +1,1305 @@
+// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us,
http://mir.aculo.us)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Element.collectTextNodesIgnoreClass = function(element, ignoreclass) {
+ var children = $(element).childNodes;
+ var text = "";
+ var classtest = new RegExp("^([^ ]+ )*" + ignoreclass+ "( [^ ]+)*$","i");
+
+ for (var i = 0; i < children.length; i++) {
+ if(children[i].nodeType==3) {
+ text+=children[i].nodeValue;
+ } else {
+ if((!children[i].className.match(classtest)) &&
children[i].hasChildNodes())
+ text += Element.collectTextNodesIgnoreClass(children[i],
ignoreclass);
+ }
+ }
+
+ return text;
+}
+
+Ajax.Autocompleter = Class.create();
+Ajax.Autocompleter.prototype = (new Ajax.Base()).extend({
+ initialize: function(element, update, url, options) {
+ this.element = $(element);
+ this.update = $(update);
+ this.has_focus = false;
+ this.changed = false;
+ this.active = false;
+ this.index = 0;
+ this.entry_count = 0;
+ this.url = url;
+
+ this.setOptions(options);
+ this.options.asynchronous = true;
+ this.options.onComplete = this.onComplete.bind(this)
+ this.options.frequency = this.options.frequency || 0.4;
+ this.options.min_chars = this.options.min_chars || 1;
+ this.options.method = 'post';
+
+ this.options.onShow = this.options.onShow ||
+ function(element, update){
+ if(!update.style.position || update.style.position=='absolute') {
+ update.style.position = 'absolute';
+ var offsets = Position.cumulativeOffset(element);
+ update.style.left = offsets[0] + 'px';
+ update.style.top = (offsets[1] + element.offsetHeight) + 'px';
+ update.style.width = element.offsetWidth + 'px';
+ }
+ new Effect.Appear(update,{duration:0.3});
+ };
+ this.options.onHide = this.options.onHide ||
+ function(element, update){ new Effect.Fade(update,{duration:0.3}) };
+
+
+ if(this.options.indicator)
+ this.indicator = $(this.options.indicator);
+
+ this.observer = null;
+
+ Element.hide(this.update);
+
+ Event.observe(this.element, "blur",
this.onBlur.bindAsEventListener(this));
+ Event.observe(this.element, "keypress",
this.onKeyPress.bindAsEventListener(this));
+ },
+
+ show: function() {
+ if(this.update.style.display=='none') this.options.onShow(this.element,
this.update);
+ if(!this.iefix && (navigator.appVersion.indexOf('MSIE')>0) &&
this.update.style.position=='absolute') {
+ new Insertion.After(this.update,
+ '<iframe id="' + this.update.id + '_iefix" '+
+
'style="display:none;filter:progid:DXImageTransform.Microsoft.Alpha(apacity=0);"
' +
+ 'src="javascript:;" frameborder="0" scrolling="no"></iframe>');
+ this.iefix = $(this.update.id+'_iefix');
+ }
+ if(this.iefix) {
+ Position.clone(this.update, this.iefix);
+ this.iefix.style.zIndex = 1;
+ this.update.style.zIndex = 2;
+ Element.show(this.iefix);
+ }
+ },
+
+ hide: function() {
+ if(this.update.style.display=='') this.options.onHide(this.element,
this.update);
+ if(this.iefix) Element.hide(this.iefix);
+ },
+
+ startIndicator: function() {
+ if(this.indicator) Element.show(this.indicator);
+ },
+
+ stopIndicator: function() {
+ if(this.indicator) Element.hide(this.indicator);
+ },
+
+ onObserverEvent: function() {
+ this.changed = false;
+ if(this.element.value.length>=this.options.min_chars) {
+ this.startIndicator();
+ this.options.parameters = this.options.callback ?
+ this.options.callback(this.element,
Form.Element.getValue(this.element)) :
+ Form.Element.serialize(this.element);
+ new Ajax.Request(this.url, this.options);
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ },
+
+ addObservers: function(element) {
+ Event.observe(element, "mouseover",
this.onHover.bindAsEventListener(this));
+ Event.observe(element, "click", this.onClick.bindAsEventListener(this));
+ },
+
+ onComplete: function(request) {
+ if(!this.changed && this.has_focus) {
+ this.update.innerHTML = request.responseText;
+ Element.cleanWhitespace(this.update);
+ Element.cleanWhitespace(this.update.firstChild);
+
+ if(this.update.firstChild && this.update.firstChild.childNodes) {
+ this.entry_count =
+ this.update.firstChild.childNodes.length;
+ for (var i = 0; i < this.entry_count; i++) {
+ entry = this.get_entry(i);
+ entry.autocompleteIndex = i;
+ this.addObservers(entry);
+ }
+ } else {
+ this.entry_count = 0;
+ }
+
+ this.stopIndicator();
+
+ this.index = 0;
+ this.render();
+ }
+ },
+
+ onKeyPress: function(event) {
+ if(this.active)
+ switch(event.keyCode) {
+ case Event.KEY_TAB:
+ case Event.KEY_RETURN:
+ this.select_entry();
+ Event.stop(event);
+ case Event.KEY_ESC:
+ this.hide();
+ this.active = false;
+ return;
+ case Event.KEY_LEFT:
+ case Event.KEY_RIGHT:
+ return;
+ case Event.KEY_UP:
+ this.mark_previous();
+ this.render();
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
+ return;
+ case Event.KEY_DOWN:
+ this.mark_next();
+ this.render();
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
+ return;
+ }
+ else
+ if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN)
+ return;
+
+ this.changed = true;
+ this.has_focus = true;
+
+ if(this.observer) clearTimeout(this.observer);
+ this.observer =
+ setTimeout(this.onObserverEvent.bind(this),
this.options.frequency*1000);
+ },
+
+ onHover: function(event) {
+ var element = Event.findElement(event, 'LI');
+ if(this.index != element.autocompleteIndex)
+ {
+ this.index = element.autocompleteIndex;
+ this.render();
+ }
+ Event.stop(event);
+ },
+
+ onClick: function(event) {
+ var element = Event.findElement(event, 'LI');
+ this.index = element.autocompleteIndex;
+ this.select_entry();
+ Event.stop(event);
+ },
+
+ onBlur: function(event) {
+ // needed to make click events working
+ setTimeout(this.hide.bind(this), 250);
+ this.has_focus = false;
+ this.active = false;
+ },
+
+ render: function() {
+ if(this.entry_count > 0) {
+ for (var i = 0; i < this.entry_count; i++)
+ this.index==i ?
+ Element.addClassName(this.get_entry(i),"selected") :
+ Element.removeClassName(this.get_entry(i),"selected");
+
+ if(this.has_focus) {
+ if(this.get_current_entry().scrollIntoView)
+ this.get_current_entry().scrollIntoView(false);
+
+ this.show();
+ this.active = true;
+ }
+ } else this.hide();
+ },
+
+ mark_previous: function() {
+ if(this.index > 0) this.index--
+ else this.index = this.entry_count-1;
+ },
+
+ mark_next: function() {
+ if(this.index < this.entry_count-1) this.index++
+ else this.index = 0;
+ },
+
+ get_entry: function(index) {
+ return this.update.firstChild.childNodes[index];
+ },
+
+ get_current_entry: function() {
+ return this.get_entry(this.index);
+ },
+
+ select_entry: function() {
+ this.active = false;
+ value = Element.collectTextNodesIgnoreClass(this.get_current_entry(),
'informal').unescapeHTML();
+ this.element.value = value;
+ this.element.focus();
+ }
+});// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us,
http://mir.aculo.us)
+//
+// Element.Class part Copyright (c) 2005 by Rick Olson
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Element.Class = {
+ // Element.toggleClass(element, className) toggles the class being on/off
+ // Element.toggleClass(element, className1, className2) toggles between
both classes,
+ // defaulting to className1 if neither exist
+ toggle: function(element, className) {
+ if(Element.Class.has(element, className)) {
+ Element.Class.remove(element, className);
+ if(arguments.length == 3) Element.Class.add(element, arguments[2]);
+ } else {
+ Element.Class.add(element, className);
+ if(arguments.length == 3) Element.Class.remove(element,
arguments[2]);
+ }
+ },
+
+ // gets space-delimited classnames of an element as an array
+ get: function(element) {
+ element = $(element);
+ return element.className.split(' ');
+ },
+
+ // functions adapted from original functions by Gavin Kistner
+ remove: function(element) {
+ element = $(element);
+ var regEx;
+ for(var i = 1; i < arguments.length; i++) {
+ regEx = new RegExp("^" + arguments[i] + "\\b\\s*|\\s*\\b" +
arguments[i] + "\\b", 'g');
+ element.className = element.className.replace(regEx, '')
+ }
+ },
+
+ add: function(element) {
+ element = $(element);
+ for(var i = 1; i < arguments.length; i++) {
+ Element.Class.remove(element, arguments[i]);
+ element.className += (element.className.length > 0 ? ' ' : '') +
arguments[i];
+ }
+ },
+
+ // returns true if all given classes exist in said element
+ has: function(element) {
+ element = $(element);
+ if(!element || !element.className) return false;
+ var regEx;
+ for(var i = 1; i < arguments.length; i++) {
+ regEx = new RegExp("\\b" + arguments[i] + "\\b");
+ if(!regEx.test(element.className)) return false;
+ }
+ return true;
+ },
+
+ // expects arrays of strings and/or strings as optional paramters
+ // Element.Class.has_any(element, ['classA','classB','classC'], 'classD')
+ has_any: function(element) {
+ element = $(element);
+ if(!element || !element.className) return false;
+ var regEx;
+ for(var i = 1; i < arguments.length; i++) {
+ if((typeof arguments[i] == 'object') &&
+ (arguments[i].constructor == Array)) {
+ for(var j = 0; j < arguments[i].length; j++) {
+ regEx = new RegExp("\\b" + arguments[i][j] + "\\b");
+ if(regEx.test(element.className)) return true;
+ }
+ } else {
+ regEx = new RegExp("\\b" + arguments[i] + "\\b");
+ if(regEx.test(element.className)) return true;
+ }
+ }
+ return false;
+ },
+
+ childrenWith: function(element, className) {
+ var children = $(element).getElementsByTagName('*');
+ var elements = new Array();
+
+ for (var i = 0; i < children.length; i++) {
+ if (Element.Class.has(children[i], className)) {
+ elements.push(children[i]);
+ break;
+ }
+ }
+
+ return elements;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Droppables = {
+ drops: false,
+
+ add: function(element) {
+ var element = $(element);
+ var options = {
+ greedy: true,
+ hoverclass: null
+ }.extend(arguments[1] || {});
+
+ // cache containers
+ if(options.containment) {
+ options._containers = new Array();
+ var containment = options.containment;
+ if((typeof containment == 'object') &&
+ (containment.constructor == Array)) {
+ for(var i=0; i<containment.length; i++)
+ options._containers.push($(containment[i]));
+ } else {
+ options._containers.push($(containment));
+ }
+ options._containers_length =
+ options._containers.length-1;
+ }
+
+ if(element.style.position=='') //fix IE
+ element.style.position = 'relative';
+
+ // activate the droppable
+ element.droppable = options;
+
+ if(!this.drops) this.drops = [];
+ this.drops.push(element);
+ },
+
+ is_contained: function(element, drop) {
+ var containers = drop.droppable._containers;
+ var parentNode = element.parentNode;
+ var i = drop.droppable._containers_length;
+ do { if(parentNode==containers[i]) return true; } while (i--);
+ return false;
+ },
+
+ is_affected: function(pX, pY, element, drop) {
+ return (
+ (drop!=element) &&
+ ((!drop.droppable._containers) ||
+ this.is_contained(element, drop)) &&
+ ((!drop.droppable.accept) ||
+ (Element.Class.has_any(element, drop.droppable.accept))) &&
+ Position.within(drop, pX, pY) );
+ },
+
+ deactivate: function(drop) {
+ Element.Class.remove(drop, drop.droppable.hoverclass);
+ this.last_active = null;
+ },
+
+ activate: function(drop) {
+ if(this.last_active) this.deactivate(this.last_active);
+ if(drop.droppable.hoverclass) {
+ Element.Class.add(drop, drop.droppable.hoverclass);
+ this.last_active = drop;
+ }
+ },
+
+ show: function(event, element) {
+ if(!this.drops) return;
+ var pX = Event.pointerX(event);
+ var pY = Event.pointerY(event);
+ Position.prepare();
+
+ var i = this.drops.length-1; do {
+ var drop = this.drops[i];
+ if(this.is_affected(pX, pY, element, drop)) {
+ if(drop.droppable.onHover)
+ drop.droppable.onHover(
+ element, drop, Position.overlap(drop.droppable.overlap, drop));
+ if(drop.droppable.greedy) {
+ this.activate(drop);
+ return;
+ }
+ }
+ } while (i--);
+ },
+
+ fire: function(event, element) {
+ if(!this.drops) return;
+ var pX = Event.pointerX(event);
+ var pY = Event.pointerY(event);
+ Position.prepare();
+
+ var i = this.drops.length-1; do {
+ var drop = this.drops[i];
+ if(this.is_affected(pX, pY, element, drop))
+ if(drop.droppable.onDrop)
+ drop.droppable.onDrop(element);
+ } while (i--);
+ },
+
+ reset: function() {
+ if(this.last_active)
+ this.deactivate(this.last_active);
+ }
+}
+
+Draggables = {
+ observers: new Array(),
+ addObserver: function(observer) {
+ this.observers.push(observer);
+ },
+ notify: function(eventName, draggable) { // 'onStart', 'onEnd'
+ for(var i = 0; i < this.observers.length; i++)
+ this.observers[i][eventName](draggable);
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+Draggable = Class.create();
+Draggable.prototype = {
+ initialize: function(element) {
+ var options = {
+ handle: false,
+ starteffect: function(element) {
+ new Effect.Opacity(element, {duration:0.2, from:1.0, to:0.7});
+ },
+ reverteffect: function(element, top_offset, left_offset) {
+ new Effect.MoveBy(element, -top_offset, -left_offset,
{duration:0.4});
+ },
+ endeffect: function(element) {
+ new Effect.Opacity(element, {duration:0.2, from:0.7, to:1.0});
+ },
+ zindex: 1000,
+ revert: false
+ }.extend(arguments[1] || {});
+
+ this.element = $(element);
+ this.element.drag = this;
+ this.handle = options.handle ? $(options.handle) : this.element;
+
+ // fix IE
+ if(!this.element.style.position)
+ this.element.style.position = 'relative';
+
+ this.offsetX = 0;
+ this.offsetY = 0;
+ this.originalLeft = this.currentLeft();
+ this.originalTop = this.currentTop();
+ this.originalX = this.element.offsetLeft;
+ this.originalY = this.element.offsetTop;
+ this.originalZ = parseInt(this.element.style.zIndex || "0");
+
+ this.options = options;
+
+ this.active = false;
+ this.dragging = false;
+
+ Event.observe(this.handle, "mousedown",
this.startDrag.bindAsEventListener(this));
+ Event.observe(document, "mouseup",
this.endDrag.bindAsEventListener(this));
+ Event.observe(document, "mousemove",
this.update.bindAsEventListener(this));
+ },
+ currentLeft: function() {
+ return parseInt(this.element.style.left || '0');
+ },
+ currentTop: function() {
+ return parseInt(this.element.style.top || '0')
+ },
+ startDrag: function(event) {
+ if(Event.isLeftClick(event)) {
+ this.active = true;
+
+ var style = this.element.style;
+ this.originalY = this.element.offsetTop - this.currentTop() -
this.originalTop;
+ this.originalX = this.element.offsetLeft - this.currentLeft() -
this.originalLeft;
+ this.offsetY = event.clientY - this.originalY - this.originalTop;
+ this.offsetX = event.clientX - this.originalX - this.originalLeft;
+
+ Event.stop(event);
+ }
+ },
+ endDrag: function(event) {
+ if(this.active && this.dragging) {
+ this.active = false;
+ this.dragging = false;
+
+ Droppables.fire(event, this.element);
+ Draggables.notify('onEnd', this);
+
+ var revert = this.options.revert;
+ if(revert && typeof revert == 'function') revert =
revert(this.element);
+
+ if(revert && this.options.reverteffect) {
+ this.options.reverteffect(this.element,
+ this.currentTop()-this.originalTop,
+ this.currentLeft()-this.originalLeft);
+ } else {
+ this.originalLeft = this.currentLeft();
+ this.originalTop = this.currentTop();
+ }
+ this.element.style.zIndex = this.originalZ;
+
+ if(this.options.endeffect)
+ this.options.endeffect(this.element);
+
+ Droppables.reset();
+ Event.stop(event);
+ }
+ this.active = false;
+ this.dragging = false;
+ },
+ draw: function(event) {
+ var style = this.element.style;
+ this.originalX = this.element.offsetLeft - this.currentLeft() -
this.originalLeft;
+ this.originalY = this.element.offsetTop - this.currentTop() -
this.originalTop;
+ if((!this.options.constraint) || (this.options.constraint=='horizontal'))
+ style.left = ((event.clientX - this.originalX) - this.offsetX) + "px";
+ if((!this.options.constraint) || (this.options.constraint=='vertical'))
+ style.top = ((event.clientY - this.originalY) - this.offsetY) + "px";
+ if(style.visibility=="hidden") style.visibility = ""; // fix gecko
rendering
+ },
+ update: function(event) {
+ if(this.active) {
+ if(!this.dragging) {
+ var style = this.element.style;
+ this.dragging = true;
+ if(style.position=="") style.position = "relative";
+ style.zIndex = this.options.zindex;
+ Draggables.notify('onStart', this);
+ if(this.options.starteffect) this.options.starteffect(this.element);
+ }
+
+ Droppables.show(event, this.element);
+ this.draw(event);
+ if(this.options.change) this.options.change(this);
+
+ // fix AppleWebKit rendering
+ if(navigator.appVersion.indexOf('AppleWebKit')>0)
window.scrollBy(0,0);
+
+ Event.stop(event);
+ }
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+SortableObserver = Class.create();
+SortableObserver.prototype = {
+ initialize: function(element, observer) {
+ this.element = $(element);
+ this.observer = observer;
+ this.lastValue = Sortable.serialize(this.element);
+ },
+ onStart: function() {
+ this.lastValue = Sortable.serialize(this.element);
+ },
+ onEnd: function() {
+ if(this.lastValue != Sortable.serialize(this.element))
+ this.observer(this.element)
+ }
+}
+
+Sortable = {
+ create: function(element) {
+ var element = $(element);
+ var options = {
+ tag: 'li', // assumes li children, override with tag:
'tagname'
+ overlap: 'vertical', // one of 'vertical', 'horizontal'
+ constraint: 'vertical', // one of 'vertical', 'horizontal', false
+ containment: element, // also takes array of elements (or id's); or
false
+ handle: false, // or a CSS class
+ only: false,
+ hoverclass: null,
+ onChange: function() {},
+ onUpdate: function() {}
+ }.extend(arguments[1] || {});
+ element.sortable = options;
+
+ // build options for the draggables
+ var options_for_draggable = {
+ revert: true,
+ constraint: options.constraint,
+ handle: handle };
+ if(options.starteffect)
+ options_for_draggable.starteffect = options.starteffect;
+ if(options.reverteffect)
+ options_for_draggable.reverteffect = options.reverteffect;
+ if(options.endeffect)
+ options_for_draggable.endeffect = options.endeffect;
+ if(options.zindex)
+ options_for_draggable.zindex = options.zindex;
+
+ // build options for the droppables
+ var options_for_droppable = {
+ overlap: options.overlap,
+ containment: options.containment,
+ hoverclass: options.hoverclass,
+ onHover: function(element, dropon, overlap) {
+ if(overlap>0.5) {
+ if(dropon.previousSibling != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, dropon);
+ if(dropon.parentNode!=oldParentNode && oldParentNode.sortable)
+ oldParentNode.sortable.onChange(element);
+ if(dropon.parentNode.sortable)
+ dropon.parentNode.sortable.onChange(element);
+ }
+ } else {
+ var nextElement = dropon.nextSibling || null;
+ if(nextElement != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, nextElement);
+ if(dropon.parentNode!=oldParentNode && oldParentNode.sortable)
+ oldParentNode.sortable.onChange(element);
+ if(dropon.parentNode.sortable)
+ dropon.parentNode.sortable.onChange(element);
+ }
+ }
+ }
+ }
+
+ // fix for gecko engine
+ Element.cleanWhitespace(element);
+
+ // for onupdate
+ Draggables.addObserver(new SortableObserver(element, options.onUpdate));
+
+ // make it so
+ var elements = element.childNodes;
+ for (var i = 0; i < elements.length; i++)
+ if(elements[i].tagName &&
elements[i].tagName==options.tag.toUpperCase() &&
+ (!options.only || (Element.Class.has(elements[i], options.only)))) {
+
+ // handles are per-draggable
+ var handle = options.handle ?
+ Element.Class.childrenWith(elements[i], options.handle)[0] :
elements[i];
+
+ new Draggable(elements[i], options_for_draggable.extend({ handle:
handle }));
+ Droppables.add(elements[i], options_for_droppable);
+ }
+
+ },
+ serialize: function(element) {
+ var element = $(element);
+ var options = {
+ tag: element.sortable.tag,
+ only: element.sortable.only,
+ name: element.id
+ }.extend(arguments[1] || {});
+
+ var items = $(element).childNodes;
+ var queryComponents = new Array();
+
+ for(var i=0; i<items.length; i++)
+ if(items[i].tagName && items[i].tagName==options.tag.toUpperCase() &&
+ (!options.only || (Element.Class.has(items[i], options.only))))
+ queryComponents.push(
+ encodeURIComponent(options.name) + "[]=" +
+ encodeURIComponent(items[i].id.split("_")[1]));
+
+ return queryComponents.join("&");
+ }
+} // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us,
http://mir.aculo.us)
+//
+// Parts (c) 2005 Justin Palmer (http://encytemedia.com/)
+// Parts (c) 2005 Mark Pilgrim (http://diveintomark.org/)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Effect = {}
+Effect2 = Effect; // deprecated
+
+/* ------------- transitions ------------- */
+
+Effect.Transitions = {}
+
+Effect.Transitions.linear = function(pos) {
+ return pos;
+}
+Effect.Transitions.sinoidal = function(pos) {
+ return (-Math.cos(pos*Math.PI)/2) + 0.5;
+}
+Effect.Transitions.reverse = function(pos) {
+ return 1-pos;
+}
+Effect.Transitions.flicker = function(pos) {
+ return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random(0.25);
+}
+Effect.Transitions.wobble = function(pos) {
+ return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
+}
+Effect.Transitions.pulse = function(pos) {
+ return (Math.floor(pos*10) % 2 == 0 ?
+ (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));
+}
+
+Effect.Transitions.none = function(pos) {
+ return 0;
+}
+Effect.Transitions.full = function(pos) {
+ return 1;
+}
+
+/* ------------- core effects ------------- */
+
+Effect.Base = function() {};
+Effect.Base.prototype = {
+ setOptions: function(options) {
+ this.options = {
+ transition: Effect.Transitions.sinoidal,
+ duration: 1.0, // seconds
+ fps: 25.0, // max. 100fps
+ sync: false, // true for combining
+ from: 0.0,
+ to: 1.0
+ }.extend(options || {});
+ },
+ start: function(options) {
+ this.setOptions(options || {});
+ this.currentFrame = 0;
+ this.startOn = new Date().getTime();
+ this.finishOn = this.startOn + (this.options.duration*1000);
+ if(this.options.beforeStart) this.options.beforeStart(this);
+ if(!this.options.sync) this.loop();
+ },
+ loop: function() {
+ timePos = new Date().getTime();
+ if(timePos >= this.finishOn) {
+ this.render(this.options.to);
+ if(this.finish) this.finish();
+ if(this.options.afterFinish) this.options.afterFinish(this);
+ return;
+ }
+ pos = (timePos - this.startOn) / (this.finishOn - this.startOn);
+ frame = Math.round(pos * this.options.fps * this.options.duration);
+ if(frame > this.currentFrame) {
+ this.render(pos);
+ this.currentFrame = frame;
+ }
+ this.timeout = setTimeout(this.loop.bind(this), 10);
+ },
+ render: function(pos) {
+ if(this.options.transition) pos = this.options.transition(pos);
+ pos = pos * (this.options.to-this.options.from);
+ pos += this.options.from;
+ if(this.options.beforeUpdate) this.options.beforeUpdate(this);
+ if(this.update) this.update(pos);
+ if(this.options.afterUpdate) this.options.afterUpdate(this);
+ },
+ cancel: function() {
+ if(this.timeout) clearTimeout(this.timeout);
+ }
+}
+
+Effect.Parallel = Class.create();
+ Effect.Parallel.prototype = (new Effect.Base()).extend({
+ initialize: function(effects) {
+ this.effects = effects || [];
+ this.start(arguments[1]);
+ },
+ update: function(position) {
+ for (var i = 0; i < this.effects.length; i++)
+ this.effects[i].render(position);
+ },
+ finish: function(position) {
+ for (var i = 0; i < this.effects.length; i++)
+ if(this.effects[i].finish) this.effects[i].finish(position);
+ }
+ });
+
+// Internet Explorer caveat: works only on elements the have
+// a 'layout', meaning having a given width or height.
+// There is no way to safely set this automatically.
+Effect.Opacity = Class.create();
+Effect.Opacity.prototype = (new Effect.Base()).extend({
+ initialize: function(element) {
+ this.element = $(element);
+ options = {
+ from: 0.0,
+ to: 1.0
+ }.extend(arguments[1] || {});
+ this.start(options);
+ },
+ update: function(position) {
+ this.setOpacity(position);
+ },
+ setOpacity: function(opacity) {
+ opacity = (opacity == 1) ? 0.99999 : opacity;
+ this.element.style.opacity = opacity;
+ this.element.style.filter = "alpha(opacity:"+opacity*100+")";
+ }
+});
+
+Effect.MoveBy = Class.create();
+ Effect.MoveBy.prototype = (new Effect.Base()).extend({
+ initialize: function(element, toTop, toLeft) {
+ this.element = $(element);
+ this.originalTop = parseFloat(this.element.style.top || '0');
+ this.originalLeft = parseFloat(this.element.style.left || '0');
+ this.toTop = toTop;
+ this.toLeft = toLeft;
+ if(this.element.style.position == "")
+ this.element.style.position = "relative";
+ this.start(arguments[3]);
+ },
+ update: function(position) {
+ topd = this.toTop * position + this.originalTop;
+ leftd = this.toLeft * position + this.originalLeft;
+ this.setPosition(topd, leftd);
+ },
+ setPosition: function(topd, leftd) {
+ this.element.style.top = topd + "px";
+ this.element.style.left = leftd + "px";
+ }
+});
+
+Effect.Scale = Class.create();
+Effect.Scale.prototype = (new Effect.Base()).extend({
+ initialize: function(element, percent) {
+ this.element = $(element)
+ options = {
+ scaleX: true,
+ scaleY: true,
+ scaleContent: true,
+ scaleFromCenter: false,
+ scaleMode: 'box', // 'box' or 'contents' or {} with provided
values
+ scaleFrom: 100.0
+ }.extend(arguments[2] || {});
+ this.originalTop = this.element.offsetTop;
+ this.originalLeft = this.element.offsetLeft;
+ if (this.element.style.fontSize=="") this.sizeEm = 1.0;
+ if (this.element.style.fontSize &&
this.element.style.fontSize.indexOf("em")>0)
+ this.sizeEm = parseFloat(this.element.style.fontSize);
+ this.factor = (percent/100.0) - (options.scaleFrom/100.0);
+ if(options.scaleMode=='box') {
+ this.originalHeight = this.element.clientHeight;
+ this.originalWidth = this.element.clientWidth;
+ } else
+ if(options.scaleMode=='contents') {
+ this.originalHeight = this.element.scrollHeight;
+ this.originalWidth = this.element.scrollWidth;
+ } else {
+ this.originalHeight = options.scaleMode.originalHeight;
+ this.originalWidth = options.scaleMode.originalWidth;
+ }
+ this.start(options);
+ },
+
+ update: function(position) {
+ currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
+ if(this.options.scaleContent && this.sizeEm)
+ this.element.style.fontSize = this.sizeEm*currentScale + "em";
+ this.setDimensions(
+ this.originalWidth * currentScale,
+ this.originalHeight * currentScale);
+ },
+
+ setDimensions: function(width, height) {
+ if(this.options.scaleX) this.element.style.width = width + 'px';
+ if(this.options.scaleY) this.element.style.height = height + 'px';
+ if(this.options.scaleFromCenter) {
+ topd = (height - this.originalHeight)/2;
+ leftd = (width - this.originalWidth)/2;
+ if(this.element.style.position=='absolute') {
+ if(this.options.scaleY) this.element.style.top =
this.originalTop-topd + "px";
+ if(this.options.scaleX) this.element.style.left =
this.originalLeft-leftd + "px";
+ } else {
+ if(this.options.scaleY) this.element.style.top = -topd + "px";
+ if(this.options.scaleX) this.element.style.left = -leftd + "px";
+ }
+ }
+ }
+});
+
+Effect.Highlight = Class.create();
+Effect.Highlight.prototype = (new Effect.Base()).extend({
+ initialize: function(element) {
+ this.element = $(element);
+
+ // try to parse current background color as default for endcolor
+ // browser stores this as: "rgb(255, 255, 255)", convert to "#ffffff"
format
+ var endcolor = "#ffffff";
+ var current = this.element.style.backgroundColor;
+ if(current && current.slice(0,4) == "rgb(") {
+ endcolor = "#";
+ var cols = current.slice(4,current.length-1).split(',');
+ var i=0; do { endcolor += parseInt(cols[i]).toColorPart() } while
(++i<3); }
+
+ var options = {
+ startcolor: "#ffff99",
+ endcolor: endcolor
+ }.extend(arguments[1] || {});
+
+ // init color calculations
+ this.colors_base = [
+ parseInt(options.startcolor.slice(1,3),16),
+ parseInt(options.startcolor.slice(3,5),16),
+ parseInt(options.startcolor.slice(5),16) ];
+ this.colors_delta = [
+ parseInt(options.endcolor.slice(1,3),16)-this.colors_base[0],
+ parseInt(options.endcolor.slice(3,5),16)-this.colors_base[1],
+ parseInt(options.endcolor.slice(5),16)-this.colors_base[2] ];
+
+ this.start(options);
+ },
+ update: function(position) {
+ var colors = [
+ Math.round(this.colors_base[0]+(this.colors_delta[0]*position)),
+ Math.round(this.colors_base[1]+(this.colors_delta[1]*position)),
+ Math.round(this.colors_base[2]+(this.colors_delta[2]*position)) ];
+ this.element.style.backgroundColor = "#" +
+ colors[0].toColorPart() + colors[1].toColorPart() +
colors[2].toColorPart();
+ }
+});
+
+
+/* ------------- prepackaged effects ------------- */
+
+Effect.Fade = function(element) {
+ options = {
+ from: 1.0,
+ to: 0.0,
+ afterFinish: function(effect)
+ { Element.hide(effect.element);
+ effect.setOpacity(1); }
+ }.extend(arguments[1] || {});
+ new Effect.Opacity(element,options);
+}
+
+Effect.Appear = function(element) {
+ options = {
+ from: 0.0,
+ to: 1.0,
+ beforeStart: function(effect)
+ { effect.setOpacity(0);
+ Element.show(effect.element); },
+ afterUpdate: function(effect)
+ { Element.show(effect.element); }
+ }.extend(arguments[1] || {});
+ new Effect.Opacity(element,options);
+}
+
+Effect.Puff = function(element) {
+ new Effect.Parallel(
+ [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ],
+ { duration: 1.0,
+ afterUpdate: function(effect)
+ { effect.effects[0].element.style.position = 'absolute'; },
+ afterFinish: function(effect)
+ { Element.hide(effect.effects[0].element); }
+ }
+ );
+}
+
+Effect.BlindUp = function(element) {
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.overflow = 'hidden';
+ new Effect.Scale(element, 0,
+ { scaleContent: false,
+ scaleX: false,
+ afterFinish: function(effect)
+ {
+ Element.hide(effect.element);
+ effect.element.style.overflow = effect.element._overflow;
+ }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.BlindDown = function(element) {
+ $(element).style.height = '0px';
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.overflow = 'hidden';
+ Element.show(element);
+ new Effect.Scale(element, 100,
+ { scaleContent: false,
+ scaleX: false,
+ scaleMode: 'contents',
+ scaleFrom: 0,
+ afterFinish: function(effect) {
+ effect.element.style.overflow = effect.element._overflow;
+ }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.SwitchOff = function(element) {
+ new Effect.Appear(element,
+ { duration: 0.4,
+ transition: Effect.Transitions.flicker,
+ afterFinish: function(effect)
+ { effect.element.style.overflow = 'hidden';
+ new Effect.Scale(effect.element, 1,
+ { duration: 0.3, scaleFromCenter: true,
+ scaleX: false, scaleContent: false,
+ afterUpdate: function(effect) {
+ if(effect.element.style.position=="")
+ effect.element.style.position = 'relative'; },
+ afterFinish: function(effect) { Element.hide(effect.element); }
+ } )
+ }
+ } )
+}
+
+Effect.DropOut = function(element) {
+ new Effect.Parallel(
+ [ new Effect.MoveBy(element, 100, 0, { sync: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ],
+ { duration: 0.5,
+ afterFinish: function(effect)
+ { Element.hide(effect.effects[0].element); }
+ });
+}
+
+Effect.Shake = function(element) {
+ new Effect.MoveBy(element, 0, 20,
+ { duration: 0.05, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, -40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, 40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, -40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, 40,
+ { duration: 0.1, afterFinish: function(effect) {
+ new Effect.MoveBy(effect.element, 0, -20,
+ { duration: 0.05, afterFinish: function(effect) {
+ }}) }}) }}) }}) }}) }});
+}
+
+Effect.SlideDown = function(element) {
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.height = '0px';
+ $(element).style.overflow = 'hidden';
+ $(element).firstChild.style.position = 'relative';
+ Element.show(element);
+ new Effect.Scale(element, 100,
+ { scaleContent: false,
+ scaleX: false,
+ scaleMode: 'contents',
+ scaleFrom: 0,
+ afterUpdate: function(effect)
+ { effect.element.firstChild.style.bottom =
+ (effect.originalHeight - effect.element.clientHeight) + 'px'; },
+ afterFinish: function(effect)
+ { effect.element.style.overflow = effect.element._overflow; }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.SlideUp = function(element) {
+ $(element)._overflow = $(element).style.overflow || 'visible';
+ $(element).style.overflow = 'hidden';
+ $(element).firstChild.style.position = 'relative';
+ Element.show(element);
+ new Effect.Scale(element, 0,
+ { scaleContent: false,
+ scaleX: false,
+ afterUpdate: function(effect)
+ { effect.element.firstChild.style.bottom =
+ (effect.originalHeight - effect.element.clientHeight) + 'px'; },
+ afterFinish: function(effect)
+ {
+ Element.hide(effect.element);
+ effect.element.style.overflow = effect.element._overflow;
+ }
+ }.extend(arguments[1] || {})
+ );
+}
+
+Effect.Squish = function(element) {
+ new Effect.Scale(element, 0,
+ { afterFinish: function(effect) { Element.hide(effect.element); } });
+}
+
+Effect.Grow = function(element) {
+ element = $(element);
+ var options = arguments[1] || {};
+
+ var originalWidth = element.clientWidth;
+ var originalHeight = element.clientHeight;
+ element.style.overflow = 'hidden';
+ Element.show(element);
+
+ var direction = options.direction || 'center';
+ var moveTransition = options.moveTransition || Effect.Transitions.sinoidal;
+ var scaleTransition = options.scaleTransition ||
Effect.Transitions.sinoidal;
+ var opacityTransition = options.opacityTransition ||
Effect.Transitions.full;
+
+ var initialMoveX, initialMoveY;
+ var moveX, moveY;
+
+ switch (direction) {
+ case 'top-left':
+ initialMoveX = initialMoveY = moveX = moveY = 0;
+ break;
+ case 'top-right':
+ initialMoveX = originalWidth;
+ initialMoveY = moveY = 0;
+ moveX = -originalWidth;
+ break;
+ case 'bottom-left':
+ initialMoveX = moveX = 0;
+ initialMoveY = originalHeight;
+ moveY = -originalHeight;
+ break;
+ case 'bottom-right':
+ initialMoveX = originalWidth;
+ initialMoveY = originalHeight;
+ moveX = -originalWidth;
+ moveY = -originalHeight;
+ break;
+ case 'center':
+ initialMoveX = originalWidth / 2;
+ initialMoveY = originalHeight / 2;
+ moveX = -originalWidth / 2;
+ moveY = -originalHeight / 2;
+ break;
+ }
+
+ new Effect.MoveBy(element, initialMoveY, initialMoveX, {
+ duration: 0.01,
+ beforeUpdate: function(effect) { $(element).style.height = '0px'; },
+ afterFinish: function(effect) {
+ new Effect.Parallel(
+ [ new Effect.Opacity(element, { sync: true, to: 1.0, from: 0.0,
transition: opacityTransition }),
+ new Effect.MoveBy(element, moveY, moveX, { sync: true, transition:
moveTransition }),
+ new Effect.Scale(element, 100, {
+ scaleMode: { originalHeight: originalHeight, originalWidth:
originalWidth },
+ sync: true, scaleFrom: 0, scaleTo: 100, transition:
scaleTransition })],
+ options); }
+ });
+}
+
+Effect.Shrink = function(element) {
+ element = $(element);
+ var options = arguments[1] || {};
+
+ var originalWidth = element.clientWidth;
+ var originalHeight = element.clientHeight;
+ element.style.overflow = 'hidden';
+ Element.show(element);
+
+ var direction = options.direction || 'center';
+ var moveTransition = options.moveTransition || Effect.Transitions.sinoidal;
+ var scaleTransition = options.scaleTransition ||
Effect.Transitions.sinoidal;
+ var opacityTransition = options.opacityTransition ||
Effect.Transitions.none;
+
+ var moveX, moveY;
+
+ switch (direction) {
+ case 'top-left':
+ moveX = moveY = 0;
+ break;
+ case 'top-right':
+ moveX = originalWidth;
+ moveY = 0;
+ break;
+ case 'bottom-left':
+ moveX = 0;
+ moveY = originalHeight;
+ break;
+ case 'bottom-right':
+ moveX = originalWidth;
+ moveY = originalHeight;
+ break;
+ case 'center':
+ moveX = originalWidth / 2;
+ moveY = originalHeight / 2;
+ break;
+ }
+
+ new Effect.Parallel(
+ [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0,
transition: opacityTransition }),
+ new Effect.Scale(element, 0, { sync: true, transition: moveTransition
}),
+ new Effect.MoveBy(element, moveY, moveX, { sync: true, transition:
scaleTransition }) ],
+ options);
+}
+
+Effect.Pulsate = function(element) {
+ var options = arguments[1] || {};
+ var transition = options.transition || Effect.Transitions.sinoidal;
+ var reverser = function(pos){ return
transition(1-Effect.Transitions.pulse(pos)) };
+ reverser.bind(transition);
+ new Effect.Opacity(element,
+ { duration: 3.0,
+ afterFinish: function(effect) { Element.show(effect.element); }
+ }.extend(options).extend({transition: reverser}));
+}
+
+Effect.Fold = function(element) {
+ $(element).style.overflow = 'hidden';
+ new Effect.Scale(element, 5, {
+ scaleContent: false,
+ scaleTo: 100,
+ scaleX: false,
+ afterFinish: function(effect) {
+ new Effect.Scale(element, 1, {
+ scaleContent: false,
+ scaleTo: 0,
+ scaleY: false,
+ afterFinish: function(effect) { Element.hide(effect.element) } });
+ }}.extend(arguments[1] || {}));
+}
+
+// old: new Effect.ContentZoom(element, percent)
+// new: Element.setContentZoom(element, percent)
+
+Element.setContentZoom = function(element, percent) {
+ var element = $(element);
+ element.style.fontSize = (percent/100) + "em";
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
+}

Added: trunk/main/planet/web/test/webapps/test/snoop.jsp
===================================================================
--- trunk/main/planet/web/test/webapps/test/snoop.jsp 2006-01-31 11:49:08
UTC (rev 1000)
+++ trunk/main/planet/web/test/webapps/test/snoop.jsp 2006-01-31 12:10:53
UTC (rev 1001)
@@ -0,0 +1,201 @@
+<HTML>
+<HEAD>
+ <TITLE>JSP snoop page</TITLE>
+ <%@ page import="javax.servlet.http.HttpUtils,java.util.Enumeration"
%>
+</HEAD>
+<BODY>
+
+<H1>WebApp JSP Snoop page</H1>
+
+<H2>Request information</H2>
+
+<TABLE>
+<TR>
+ <TH align=right>Requested URL:</TH>
+ <TD><%= HttpUtils.getRequestURL(request) %></TD>
+</TR>
+<TR>
+ <TH align=right>Request method:</TH>
+ <TD><%= request.getMethod() %></TD>
+</TR>
+<TR>
+ <TH align=right>Request URI:</TH>
+ <TD><%= request.getRequestURI() %></TD>
+</TR>
+<TR>
+ <TH align=right>Request protocol:</TH>
+ <TD><%= request.getProtocol() %></TD>
+</TR>
+<TR>
+ <TH align=right>Servlet path:</TH>
+ <TD><%= request.getServletPath() %></TD>
+</TR>
+<TR>
+ <TH align=right>Path info:</TH>
+ <TD><%= request.getPathInfo() %></TD>
+</TR>
+<TR>
+ <TH align=right>Path translated:</TH>
+ <TD><%= request.getPathTranslated() %></TD>
+</TR>
+<TR>
+ <TH align=right>Query string:</TH>
+ <TD><%= request.getQueryString() %></TD>
+</TR>
+<TR>
+ <TH align=right>Content length:</TH>
+ <TD><%= request.getContentLength() %></TD>
+</TR>
+<TR>
+ <TH align=right>Content type:</TH>
+ <TD><%= request.getContentType() %></TD>
+<TR>
+<TR>
+ <TH align=right>Server name:</TH>
+ <TD><%= request.getServerName() %></TD>
+<TR>
+<TR>
+ <TH align=right>Server port:</TH>
+ <TD><%= request.getServerPort() %></TD>
+<TR>
+<TR>
+ <TH align=right>Remote user:</TH>
+ <TD><%= request.getRemoteUser() %></TD>
+<TR>
+<TR>
+ <TH align=right>Remote address:</TH>
+ <TD><%= request.getRemoteAddr() %></TD>
+<TR>
+<TR>
+ <TH align=right>Remote host:</TH>
+ <TD><%= request.getRemoteHost() %></TD>
+<TR>
+<TR>
+ <TH align=right>Authorization scheme:</TH>
+ <TD><%= request.getAuthType() %></TD>
+<TR>
+</TABLE>
+
+<%
+ Enumeration e = request.getHeaderNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Request headers</H2>
+
+<TABLE>
+<TR>
+ <TH align=left>Header:</TH>
+ <TH align=left>Value:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+%>
+<TR>
+ <TD><%= k %></TD>
+ <TD><%= request.getHeader(k) %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+
+<%
+ e = request.getParameterNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Request parameters</H2>
+<TABLE>
+<TR valign=top>
+ <TH align=left>Parameter:</TH>
+ <TH align=left>Value:</TH>
+ <TH align=left>Multiple values:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+ String val = request.getParameter(k);
+ String vals[] = request.getParameterValues(k);
+%>
+<TR valign=top>
+ <TD><%= k %></TD>
+ <TD><%= val %></TD>
+ <TD><%
+ for(int i = 0; i < vals.length; i++) {
+ if(i > 0)
+ out.print("<BR>");
+ out.print(vals[i]);
+ }
+ %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+
+<%
+ e = request.getAttributeNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Request Attributes</H2>
+<TABLE>
+<TR valign=top>
+ <TH align=left>Attribute:</TH>
+ <TH align=left>Value:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+ Object val = request.getAttribute(k);
+%>
+<TR valign=top>
+ <TD><%= k %></TD>
+ <TD><%= val %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+
+<%
+ e = getServletConfig().getInitParameterNames();
+ if(e != null && e.hasMoreElements()) {
+%>
+<H2>Init parameters</H2>
+<TABLE>
+<TR valign=top>
+ <TH align=left>Parameter:</TH>
+ <TH align=left>Value:</TH>
+</TR>
+<%
+ while(e.hasMoreElements()) {
+ String k = (String) e.nextElement();
+ String val = getServletConfig().getInitParameter(k);
+%>
+<TR valign=top>
+ <TD><%= k %></TD>
+ <TD><%= val %></TD>
+</TR>
+<%
+ }
+%>
+</TABLE>
+<%
+ }
+%>
+
+</BODY>
+</HTML>
+




  • r1001 - in trunk/main/planet/web: . server/etc/prefs/xmls server/src/main/net/dpml/web/server test test/etc test/etc/web test/etc/web/WEB-INF test/etc/web/chat test/etc/web/js test/src test/src/main test/src/main/org test/src/main/org/acme test/webapps test/webapps/test test/webapps/test/META-INF test/webapps/test/WEB-INF test/webapps/test/WEB-INF/classes test/webapps/test/WEB-INF/classes/org test/webapps/test/WEB-INF/classes/org/acme test/webapps/test/chat test/webapps/test/js, mcconnell at BerliOS, 01/31/2006

Archive powered by MHonArc 2.6.24.

Top of Page