aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cosNotification/doc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cosNotification/doc')
-rw-r--r--lib/cosNotification/doc/html/.gitignore0
-rw-r--r--lib/cosNotification/doc/man3/.gitignore0
-rw-r--r--lib/cosNotification/doc/man6/.gitignore0
-rw-r--r--lib/cosNotification/doc/pdf/.gitignore0
-rw-r--r--lib/cosNotification/doc/src/CosNotification.xml234
-rw-r--r--lib/cosNotification/doc/src/CosNotification_AdminPropertiesAdmin.xml79
-rw-r--r--lib/cosNotification/doc/src/CosNotification_QoSAdmin.xml106
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ConsumerAdmin.xml242
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannel.xml226
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannelFactory.xml89
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyConsumer.xml128
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullConsumer.xml113
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullSupplier.xml112
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushConsumer.xml98
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushSupplier.xml110
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxySupplier.xml175
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml112
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml146
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml109
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml111
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml110
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml140
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml110
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml110
-rw-r--r--lib/cosNotification/doc/src/CosNotifyChannelAdmin_SupplierAdmin.xml195
-rw-r--r--lib/cosNotification/doc/src/CosNotifyComm_NotifyPublish.xml65
-rw-r--r--lib/cosNotification/doc/src/CosNotifyComm_NotifySubscribe.xml64
-rw-r--r--lib/cosNotification/doc/src/CosNotifyFilter_Filter.xml222
-rw-r--r--lib/cosNotification/doc/src/CosNotifyFilter_FilterAdmin.xml111
-rw-r--r--lib/cosNotification/doc/src/CosNotifyFilter_FilterFactory.xml73
-rw-r--r--lib/cosNotification/doc/src/CosNotifyFilter_MappingFilter.xml227
-rw-r--r--lib/cosNotification/doc/src/Makefile254
-rw-r--r--lib/cosNotification/doc/src/book.gifbin0 -> 1081 bytes
-rw-r--r--lib/cosNotification/doc/src/book.xml48
-rw-r--r--lib/cosNotification/doc/src/ch_BNF.xml456
-rw-r--r--lib/cosNotification/doc/src/ch_QoS.xml251
-rw-r--r--lib/cosNotification/doc/src/ch_contents.xml74
-rw-r--r--lib/cosNotification/doc/src/ch_example.xml169
-rw-r--r--lib/cosNotification/doc/src/ch_install.xml146
-rw-r--r--lib/cosNotification/doc/src/ch_introduction.xml57
-rw-r--r--lib/cosNotification/doc/src/ch_system.xml83
-rw-r--r--lib/cosNotification/doc/src/cosNotificationApp.xml308
-rw-r--r--lib/cosNotification/doc/src/eventstructure.gifbin0 -> 89760 bytes
-rw-r--r--lib/cosNotification/doc/src/eventstructure.ps2462
-rw-r--r--lib/cosNotification/doc/src/fascicules.xml18
-rw-r--r--lib/cosNotification/doc/src/make.dep48
-rw-r--r--lib/cosNotification/doc/src/notes.gifbin0 -> 2005 bytes
-rw-r--r--lib/cosNotification/doc/src/notes.xml391
-rw-r--r--lib/cosNotification/doc/src/notificationFlow.gifbin0 -> 167734 bytes
-rw-r--r--lib/cosNotification/doc/src/notificationFlow.ps4372
-rw-r--r--lib/cosNotification/doc/src/part.xml42
-rw-r--r--lib/cosNotification/doc/src/part_notes.xml36
-rw-r--r--lib/cosNotification/doc/src/ref_man.gifbin0 -> 1530 bytes
-rw-r--r--lib/cosNotification/doc/src/ref_man.xml63
-rw-r--r--lib/cosNotification/doc/src/summary.html.src1
-rw-r--r--lib/cosNotification/doc/src/user_guide.gifbin0 -> 1581 bytes
56 files changed, 12896 insertions, 0 deletions
diff --git a/lib/cosNotification/doc/html/.gitignore b/lib/cosNotification/doc/html/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/cosNotification/doc/html/.gitignore
diff --git a/lib/cosNotification/doc/man3/.gitignore b/lib/cosNotification/doc/man3/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/cosNotification/doc/man3/.gitignore
diff --git a/lib/cosNotification/doc/man6/.gitignore b/lib/cosNotification/doc/man6/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/cosNotification/doc/man6/.gitignore
diff --git a/lib/cosNotification/doc/pdf/.gitignore b/lib/cosNotification/doc/pdf/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/cosNotification/doc/pdf/.gitignore
diff --git a/lib/cosNotification/doc/src/CosNotification.xml b/lib/cosNotification/doc/src/CosNotification.xml
new file mode 100644
index 0000000000..22e9bcb27c
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotification.xml
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2002</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotification</title>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2002-02-05</date>
+ <rev>PA1</rev>
+ </header>
+ <module>CosNotification</module>
+ <modulesummary>This module export functions which return QoS and Admin Properties constants.</modulesummary>
+ <description>
+ <p>To get access to all definitions include necessary <c>hrl</c> files by using: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ </description>
+ <funcs>
+ <func>
+ <name>'EventReliability'() -> string()</name>
+ <fsummary>Return the EventReliability QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the EventReliability QoS identifier</p>
+ </desc>
+ </func>
+ <func>
+ <name>'BestEffort'() -> short()</name>
+ <fsummary>Return the BestEffort QoS value</fsummary>
+ <desc>
+ <p>This function returns the BestEffort QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'Persistent'() -> short()</name>
+ <fsummary>Return the Persistent QoS value</fsummary>
+ <desc>
+ <p>This function returns the Persistent QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'ConnectionReliability'() -> string()</name>
+ <fsummary>Return the ConnectionReliability QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the ConnectionReliability QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'Priority'() -> string()</name>
+ <fsummary>Return the Priority QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the Priority QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'LowestPriority'() -> short()</name>
+ <fsummary>Return the LowestPriority QoS value</fsummary>
+ <desc>
+ <p>This function returns the LowestPriority QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'HighestPriority'() -> short()</name>
+ <fsummary>Return the HighestPriority QoS value</fsummary>
+ <desc>
+ <p>This function returns the HighestPriority QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'DefaultPriority'() -> short()</name>
+ <fsummary>Return the DefaultPriority QoS value</fsummary>
+ <desc>
+ <p>This function returns the DefaultPriority QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'StartTime'() -> string()</name>
+ <fsummary>Return the StartTime QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the StartTime QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'StopTime'() -> string()</name>
+ <fsummary>Return the StopTime QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the StopTime QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'Timeout'() -> string()</name>
+ <fsummary>Return the Timeout QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the Timeout QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'OrderPolicy'() -> string()</name>
+ <fsummary>Return the OrderPolicy QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the OrderPolicy QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'AnyOrder'() -> short()</name>
+ <fsummary>Return the AnyOrder QoS value</fsummary>
+ <desc>
+ <p>This function returns the AnyOrder QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'FifoOrder'() -> short()</name>
+ <fsummary>Return the FifoOrder QoS value</fsummary>
+ <desc>
+ <p>This function returns the FifoOrder QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'PriorityOrder'() -> short()</name>
+ <fsummary>Return the PriorityOrder QoS value</fsummary>
+ <desc>
+ <p>This function returns the PriorityOrder QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'DeadlineOrder'() -> short()</name>
+ <fsummary>Return the DeadlineOrder QoS value</fsummary>
+ <desc>
+ <p>This function returns the DeadlineOrder QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'DiscardPolicy'() -> string()</name>
+ <fsummary>Return the DiscardPolicy QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the DiscardPolicy QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'LifoOrder'() -> short()</name>
+ <fsummary>Return the LifoOrder QoS value</fsummary>
+ <desc>
+ <p>This function returns the LifoOrder QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'RejectNewEvents'() -> short()</name>
+ <fsummary>Return the RejectNewEvents QoS value</fsummary>
+ <desc>
+ <p>This function returns the RejectNewEvents QoS value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'MaximumBatchSize'() -> string()</name>
+ <fsummary>Return the MaximumBatchSize QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the MaximumBatchSize QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'PacingInterval'() -> string()</name>
+ <fsummary>Return the PacingInterval QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the PacingInterval QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'StartTimeSupported'() -> string()</name>
+ <fsummary>Return the StartTimeSupported QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the StartTimeSupported QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'StopTimeSupported'() -> string()</name>
+ <fsummary>Return the StopTimeSupported QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the StopTimeSupported QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'MaxEventsPerConsumer'() -> string()</name>
+ <fsummary>Return the MaxEventsPerConsumer QoS identifier</fsummary>
+ <desc>
+ <p>This function returns the MaxEventsPerConsumer QoS identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'MaxQueueLength'() -> string()</name>
+ <fsummary>Return the MaxQueueLength Admin identifier</fsummary>
+ <desc>
+ <p>This function returns the MaxQueueLength Admin identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'MaxConsumers'() -> string()</name>
+ <fsummary>Return the MaxConsumers Admin identifier</fsummary>
+ <desc>
+ <p>This function returns the MaxConsumers Admin identifier.</p>
+ </desc>
+ </func>
+ <func>
+ <name>'MaxSuppliers'() -> string()</name>
+ <fsummary>Return the MaxSuppliers Admin identifier</fsummary>
+ <desc>
+ <p>This function returns the MaxSuppliers Admin identifier.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotification_AdminPropertiesAdmin.xml b/lib/cosNotification/doc/src/CosNotification_AdminPropertiesAdmin.xml
new file mode 100644
index 0000000000..6e2a102051
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotification_AdminPropertiesAdmin.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotification_&shy;AdminPropertiesAdmin</title>
+ <shorttitle>..._AdminPropertiesAdmin</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotification_AdminPropertiesAdmin</module>
+ <modulesummary>This module implements the OMG CosNotification::AdminPropertiesAdmin interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>All objects, which inherit this interface, export functions described in this module.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>get_admin(Object) -> AdminProperties</name>
+ <fsummary>Return a list of <c>AdminProperties</c>associated with the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>AdminProperties = [AdminProperty]</v>
+ <v>AdminProperty = #'CosNotification_Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ </type>
+ <desc>
+ <p>This operation returns sequence of name-value pairs which encapsulates the
+ current administrative properties of the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>set_admin(Object, AdminProperties) -> Reply</name>
+ <fsummary>Update the <c>AdminProperties</c>for the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>AdminProperties = [AdminProperty]</v>
+ <v>AdminProperty = #'CosNotification_Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>Reply = ok | {'EXCEPTION', CosNotification_UnsupportedAdmin}</v>
+ </type>
+ <desc>
+ <p>As input, this operation accepts a sequence of name-value pairs encapsulating the
+ desired administrative settings for the target object. If it is not possible to
+ set the given properties the exception <c>UnsupportedAdmin</c> will be raised.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotification_QoSAdmin.xml b/lib/cosNotification/doc/src/CosNotification_QoSAdmin.xml
new file mode 100644
index 0000000000..b7c19f664b
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotification_QoSAdmin.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>CosNotification_QoSAdmin</title>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotification_QoSAdmin</module>
+ <modulesummary>This module implements the OMG CosNotification::QoSAdmin interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>All objects, which inherit this interface, export functions described in this module.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>get_qos(Object) -> Reply</name>
+ <fsummary>Return a list of name-value pairs which encapsulates the current QoS settings for the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>Reply = [QoSProperty]</v>
+ <v>QoSProperty = #'CosNotification_Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ </type>
+ <desc>
+ <p>This operation returns a list of name-value pairs which encapsulates the current QoS settings
+ for the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>set_qos(Object, QoS) -> Reply</name>
+ <fsummary>Change the QoS settings for the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>QoS = [QoSProperty]</v>
+ <v>QoSProperty = #'CosNotification_Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotification_UnsupportedQoS'{qos_err}}</v>
+ <v>qos_err = PropertyErrorSeq</v>
+ <v>PropertyErrorSeq = [PropertyError]</v>
+ <v>PropertyError = #'CosNotification_PropertyError'{code, name, available_range}</v>
+ <v>code = 'UNSUPPORTED_PROPERTY' | 'UNAVAILABLE_PROPERTY' | 'UNSUPPORTED_VALUE' | 'UNAVAILABLE_VALUE' | 'BAD_PROPERTY' | 'BAD_TYPE' | 'BAD_VALUE'</v>
+ <v>name = string()</v>
+ <v>available_range = PropertyRange</v>
+ <v>PropertyRange = #CosNotification_PropertyRange{low_val, high_val}</v>
+ <v>low_val = high_val = #any</v>
+ </type>
+ <desc>
+ <p>To alter the current QoS settings for the target object this function must be used.
+ If it is not possible to set the requested QoS the <c>UnsupportedQoS</c>
+ exception is raised, which includes a sequence of <c>PropertyError</c>'s
+ describing which QoS, possible range and why is not allowed.</p>
+ </desc>
+ </func>
+ <func>
+ <name>validate_qos(Object, QoS) -> Reply</name>
+ <fsummary>Validate if the supplied QoS properties is valid for the target object </fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>QoS = [QoSProperty]</v>
+ <v>QoSProperty = #'Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>Reply = {ok, NamedPropertyRangeSeq} | {'EXCEPTION', CosNotification_UnsupportedQoS{}}</v>
+ <v>NamedPropertyRangeSeq = [NamedPropertyRange]</v>
+ <v>NamedPropertyRange = #CosNotification_NamedPropertyRange{name, range}</v>
+ <v>name = string()</v>
+ <v>range = #CosNotification_PropertyRange{low_val, high_val}</v>
+ <v>low_val = #any</v>
+ <v>high_val = #any</v>
+ </type>
+ <desc>
+ <p>The purpose of this operations is to check if a QoS setting is supported
+ by the target object and if so, the operation returns additional properties
+ which could be optionally added as well.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ConsumerAdmin.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ConsumerAdmin.xml
new file mode 100644
index 0000000000..2cdb2d54a8
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ConsumerAdmin.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ConsumerAdmin</title>
+ <shorttitle>..._ConsumerAdmin</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ConsumerAdmin</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ConsumerAdmin interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_MyID(ConsumerAdmin) -> AdminID</name>
+ <fsummary>Return the target object's Id</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>AdminID = long()</v>
+ </type>
+ <desc>
+ <p>The ID returned by the creating channel is equal to the value encapsulated by
+ this readonly attribute.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_MyChannel(ConsumerAdmin) -> Channel</name>
+ <fsummary>Return the ancestor channel</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>Channel = #objref</v>
+ </type>
+ <desc>
+ <p>The creating channel's reference is maintained by this readonly attribute.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_MyOperator(ConsumerAdmin) -> OpType</name>
+ <fsummary>Return the filtering schema used by the target object</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>OpType = 'AND_OP' | 'OR_OP'</v>
+ </type>
+ <desc>
+ <p>When <c>ConsumerAdmin's</c> are created an operation type,
+ i.e., <c>'AND_OP'</c> or <c>'OR_OP'</c>, is supplied, which determines
+ the semantics used by the target object concerning evaluation against
+ any associated <c>Filter</c> objects.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_priority_filter(ConsumerAdmin) -> MappingFilter</name>
+ <fsummary>Return the associated priority <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ConsumerAdmin = MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>If set, this operation returns the associated priority <c>MappingFilter</c>, otherwise
+ a <c>NIL</c> object reference is returned.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_set_priority_filter(ConsumerAdmin, MappingFilter) -> ok</name>
+ <fsummary>Set the priority <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ConsumerAdmin = MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>To associate a priority <c>MappingFilter</c> with the target object this operation
+ must be used.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_lifetime_filter(ConsumerAdmin) -> MappingFilter</name>
+ <fsummary>Return the associated lifetime <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ConsumerAdmin = MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>Unless a lifetime <c>MappingFilter</c> have been associated with the target object
+ a <c>NIL</c> object reference is returned by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_set_lifetime_filter(ConsumerAdmin, MappingFilter) -> ok</name>
+ <fsummary>Set the lifetime <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ConsumerAdmin = MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation associate a lifetime <c>MappingFilter</c> with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_pull_suppliers(ConsumerAdmin) -> ProxyIDSeq</name>
+ <fsummary>Return a list of all associated pull supplier Id:s</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>ProxyIDSeq = [ProxyID]</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the Id's for all <c>PullProxies</c> created
+ by the target object and still alive.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_push_suppliers(ConsumerAdmin) -> ProxyIDSeq</name>
+ <fsummary>Return a list of all associated push supplier Id:s</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>ProxyIDSeq = [ProxyID]</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>This attribute is similar to the <c>_get_pull_suppliers</c> attribute but maintains
+ the Id's for all <c>PushProxies</c> created by the target object and still alive.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_proxy_supplier(ConsumerAdmin, ProxyID) -> Reply</name>
+ <fsummary>Return the proxy supplier with matching Id</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>ProxyID = long()</v>
+ <v>Reply = Proxy | {'EXCEPTION', #'CosNotifyChannelAdmin_ProxyNotFound'{}}</v>
+ <v>Proxy = #objref</v>
+ </type>
+ <desc>
+ <p>If a proxy with the given Id exists the reference to the object is returned, but if
+ the object have terminated, or an incorrect Id is supplied, an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_notification_pull_supplier(ConsumerAdmin, ConsumerType) -> Reply</name>
+ <fsummary>Create a supplier proxy</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>ConsumerType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT'</v>
+ <v>Reply = {Proxy, ProxyID}</v>
+ <v>Proxy = #objref</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>Determined by the parameter <c>ConsumerType</c>, a proxy which will
+ accept events of the defined type is created. Along with the object reference an
+ Id is returned. </p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_pull_supplier(ConsumerAdmin) -> Proxy</name>
+ <fsummary>Create a supplier proxy</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>Proxy = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a new proxy which accepts <c>#any{}</c> events.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_notification_push_supplier(ConsumerAdmin, ConsumerType) -> Reply</name>
+ <fsummary>Create a supplier proxy</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>ConsumerType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT'</v>
+ <v>Reply = {Proxy, ProxyID}</v>
+ <v>Proxy = #objref</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>A proxy which accepts events of the type described by the parameter <c>ConsumerType</c>
+ is created by this operation. A unique Id is returned as an out parameter.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_push_supplier(ConsumerAdmin) -> Proxy</name>
+ <fsummary>Create a supplier proxy</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ <v>Proxy = #objref</v>
+ </type>
+ <desc>
+ <p>The object created by this function is a proxy which accepts <c>#any{}</c> events.</p>
+ </desc>
+ </func>
+ <func>
+ <name>destroy(ConsumerAdmin) -> ok</name>
+ <fsummary>Terminate the target object and all its children</fsummary>
+ <type>
+ <v>ConsumerAdmin = #objref</v>
+ </type>
+ <desc>
+ <p>To terminate the target object this operation should be used. The associated
+ <c>Channel</c> will be notified.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannel.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannel.xml
new file mode 100644
index 0000000000..b6af2e2ca3
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannel.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;EventChannel</title>
+ <shorttitle>..._EventChannel</shorttitle>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_EventChannel</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::EventChannel interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_AdminPropertiesAdmin">CosNotification_AdminPropertiesAdmin</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_MyFactory(Channel) -> ChannelFactory</name>
+ <fsummary>Return the factory object which created the target object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>ChannelFactory = #objref</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the reference of the event channel
+ factory that created the target channel.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_default_consumer_admin(Channel) -> ConsumerAdmin</name>
+ <fsummary>Return the default consumer admin associated with the target object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>ConsumerAdmin = #objref</v>
+ </type>
+ <desc>
+ <p>This is a readonly attribute which maintains a reference to a default
+ <c>ConsumerAdmin</c> object associated with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_default_supplier_admin(Channel) -> SupplierAdmin</name>
+ <fsummary>Return the default supplier admin associated with the target object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>SupplierAdmin = #objref</v>
+ </type>
+ <desc>
+ <p>This is a readonly attribute which maintains a reference to a default
+ <c>SupplierAdmin</c> object associated with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_default_filter_factory(Channel) -> FilterFactory</name>
+ <fsummary>Return the default filter factory associated with the target object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>FilterFactory = #objref</v>
+ </type>
+ <desc>
+ <p>The default <c>FilterFactory</c> associated with the target channel
+ is maintained by this readonly attribute.</p>
+ </desc>
+ </func>
+ <func>
+ <name>new_for_consumers(Channel, OpType) -> Return</name>
+ <fsummary>Create a new <c>ConsumerAdmin</c>object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>OpType = 'AND_OP' | 'OR_OP'</v>
+ <v>Return = {ConsumerAdmin, AdminID}</v>
+ <v>ConsumerAdmin = #objref</v>
+ <v>AdminID = long()</v>
+ </type>
+ <desc>
+ <p>This operation creates a new instance of a <c>ConsumerAdmin</c> and supplies
+ an Id which may be used when invoking other operations exported by this module.
+ The returned object will inherit the Quality of Service properties of the
+ target channel.</p>
+ </desc>
+ </func>
+ <func>
+ <name>for_consumers(Channel) -> ConsumerAdmin</name>
+ <fsummary>Create a new <c>ConsumerAdmin</c>object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>ConsumerAdmin = #objref</v>
+ </type>
+ <desc>
+ <p>A new new instance of a <c>ConsumerAdmin</c> object is created but no
+ Id is returned. The returned object's operation type, i.e., <c>'AND_OP'</c> or <c>'OR_OP'</c>,
+ will be set to the value of the configuration parameter <c>filterOp</c>.
+ The target object's Quality of Service properties will be inherited by the
+ returned <c>ConsumerAdmin</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name>new_for_suppliers(Channel, OpType) -> Return</name>
+ <fsummary>Create a new <c>SupplierAdmin</c>object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>OpType = 'AND_OP' | 'OR_OP'</v>
+ <v>Return = {SupplierAdmin, AdminID}</v>
+ <v>SupplierAdmin = #objref</v>
+ <v>AdminID = long()</v>
+ </type>
+ <desc>
+ <p>Enables us to create a new instance of a <c>SupplierAdmin</c>. An Id, which
+ may be used when invoking other operations exported by this module, is also
+ returned. The current Quality of Service settings associated with the target
+ object will be inherited by the <c>SupplierAdmin</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name>for_suppliers(Channel) -> SupplierAdmin</name>
+ <fsummary>Create a new <c>SupplierAdmin</c>object</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>SupplierAdmin = #objref</v>
+ </type>
+ <desc>
+ <p>To create a new <c>SupplierAdmin</c> with the target object's current
+ Quality of Service settings we can use this function. The returned object's
+ operation type (<c>'AND_OP'</c> or <c>'OR_OP'</c>) will be determined by the
+ configuration variable <c>filterOp</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_consumeradmin(Channel, AdminID) -> ConsumerAdmin</name>
+ <fsummary>Return the <c>ConsumerAdmin</c>matching AdminID</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>AdminID = long()</v>
+ <v>ConsumerAdmin = #objref | {'EXCEPTION', #'CosNotifyChannelAdmin_AdminNotFound'{}}</v>
+ </type>
+ <desc>
+ <p>If the given Id is associated with a <c>ConsumerAdmin</c> the object reference
+ is returned. If such association never existed or the <c>ConsumerAdmin</c>
+ have terminated an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_supplieradmin(Channel, AdminID) -> SupplierAdmin</name>
+ <fsummary>Return the <c>SupplierAdmin</c>matching AdminID</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>AdminID = long()</v>
+ <v>SupplierAdmin = #objref | {'EXCEPTION', #'CosNotifyChannelAdmin_AdminNotFound'{}}</v>
+ </type>
+ <desc>
+ <p>Equal to the operation <c>get_consumeradmin/2</c> but a reference to
+ a <c>SupplierAdmin</c> is returned.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_all_consumeradmins(Channel) -> Reply</name>
+ <fsummary>Return a list of all <c>ConsumerAdmins</c>, currently active, Id:s</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>Reply = [AdminID]</v>
+ <v>AdminID = long()</v>
+ </type>
+ <desc>
+ <p>To get access to all <c>ConsumerAdmin</c> Id's created by the target object, and still
+ alive, this operation could be invoked.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_all_supplieradmins(Channel) -> Reply</name>
+ <fsummary>Return a list of all <c>SupplierAdmins</c>, currently active, Id:s</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ <v>Reply = [AdminID]</v>
+ <v>AdminID = long()</v>
+ </type>
+ <desc>
+ <p>Equal to the operation <c>get_all_consumeradmins/1</c> but returns
+ a list of all <c>SupplierAdmin</c> object ID's.</p>
+ </desc>
+ </func>
+ <func>
+ <name>destroy(Channel) -> ok</name>
+ <fsummary>Terminate the channel and all its children</fsummary>
+ <type>
+ <v>Channel = #objref</v>
+ </type>
+ <desc>
+ <p>The <c>destroy</c> operation will terminate the target channel and
+ all associated Admin objects.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannelFactory.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannelFactory.xml
new file mode 100644
index 0000000000..01976954e7
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannelFactory.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;EventChannelFactory</title>
+ <shorttitle>..._EventChannelFactory</shorttitle>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_EventChannelFactory</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::EventChannelFactory interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ </description>
+ <funcs>
+ <func>
+ <name>create_channel(ChannelFactory, InitialQoS, InitialAdmin) -> Return</name>
+ <fsummary>Create a new channel</fsummary>
+ <type>
+ <v>ChannelFactory = #objref</v>
+ <v>InitialQoS = CosNotification::QoSProperties</v>
+ <v>InitialAdmin = CosNotification::AdminProperties</v>
+ <v>Return = {EventChannel, ChannelID}</v>
+ <v>EventChannel = #objref</v>
+ <v>ChannelID = long()</v>
+ </type>
+ <desc>
+ <p>This operation creates a new event channel. Along with the channel
+ reference an id is returned which can be used when invoking other
+ operations exported by this module. The Quality of Service argument
+ supplied will be inherited by objects created by the channel. For more
+ information about QoS settings see the <c>User's Guide</c>.</p>
+ <p>If no QoS- and/or Admin-properties are supplied (i.e. empty list),
+ the <em>default</em> settings will be used. For more information, see the
+ User's Guide.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_all_channels(ChannelFactory) -> ChannelIDSeq</name>
+ <fsummary>Return all Id:s for channels, currently alive, created by the target object</fsummary>
+ <type>
+ <v>ChannelFactory = #objref</v>
+ <v>ChannelIDSeq = [long()]</v>
+ </type>
+ <desc>
+ <p>This operation returns a id sequence of all channel's created by this ChannelFactory.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_event_channel(ChannelFactory, ChannelID) -> Return</name>
+ <fsummary>Return the channel object associated with the given Id</fsummary>
+ <type>
+ <v>ChannelFactory = #objref</v>
+ <v>ChannelID = long()</v>
+ <v>Retrurn = EventChannel | {'EXCEPTION', #'CosNotifyChannelAdmin_ChannelNotFound'{}}</v>
+ <v>EventChannel = #objref</v>
+ </type>
+ <desc>
+ <p>This operation returns the EventChannel associated with the given id. If no channel is
+ associated with the id, i.e., never existed or have been terminated, an exception is raised.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyConsumer.xml
new file mode 100644
index 0000000000..69b1e78b82
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyConsumer.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ProxyConsumer</title>
+ <shorttitle>..._ProxyConsumer</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ProxyConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ProxyConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_MyType(ProxyConsumer) -> ProxyType</name>
+ <fsummary>Return the proxy type</fsummary>
+ <type>
+ <v>ProxyConsumer = #objref</v>
+ <v>ProxyType = 'PUSH_ANY' | 'PULL_ANY' | 'PUSH_STRUCTURED' | 'PULL_STRUCTURED' | 'PUSH_SEQUENCE' | 'PULL_SEQUENCE'</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the enumerant describing the which type the target object
+ is. </p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_MyAdmin(ProxyConsumer) -> AdminObject</name>
+ <fsummary>return the associated <c>Admin</c>object</fsummary>
+ <type>
+ <v>ProxyConsumer = AdminObject = #objref</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the admin's reference which created the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_subscription_types(ProxyConsumer, ObtainInfoMode) -> EventTypeSeq</name>
+ <fsummary>Administer subscription types</fsummary>
+ <type>
+ <v>ProxyConsumer = #objref</v>
+ <v>ObtainInfoMode = 'ALL_NOW_UPDATES_OFF' | 'ALL_NOW_UPDATES_ON' | 'NONE_NOW_UPDATES_OFF' | 'NONE_NOW_UPDATES_ON'</v>
+ <v>EventTypeSeq = [EventType]</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ </type>
+ <desc>
+ <p>Depending on the input parameter <c>ObtainInfoMode</c>, this operation may return a
+ sequence of the <c>EventTypes</c> the target object is interested in receiving.
+ If <c>'ALL_NOW_UPDATES_OFF'</c> or <c>'ALL_NOW_UPDATES_ON'</c> is given a sequence will
+ be returned, otherwise not. If <c>'ALL_NOW_UPDATES_OFF'</c> or <c>'NONE_NOW_UPDATES_OFF'</c>
+ are issued the target object will not inform the associated <c>NotifySubscribe</c> object
+ when an update occurs. <c>'ALL_NOW_UPDATES_ON'</c> or <c>'NONE_NOW_UPDATES_ON'</c> will
+ result in that update information will be sent.</p>
+ </desc>
+ </func>
+ <func>
+ <name>validate_event_qos(ProxyConsumer, QoSProperties) -> Reply</name>
+ <fsummary>Check if certain Quality of Service properties can be added to events in the current context of the target object</fsummary>
+ <type>
+ <v>ProxyConsumer = #objref</v>
+ <v>QoSProperties = [QoSProperty]</v>
+ <v>QoSProperty = #'CosNotification_Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>Reply = {ok, NamedPropertyRangeSeq} | {'EXCEPTION', CosNotification_UnsupportedQoS{qos_err}}</v>
+ <v>NamedPropertyRangeSeq = [NamedPropertyRange]</v>
+ <v>NamedPropertyRange = #CosNotification_NamedPropertyRange{name, range}</v>
+ <v>name = string()</v>
+ <v>range = #CosNotification_PropertyRange{low_val, high_val}</v>
+ <v>low_val = #any</v>
+ <v>high_val = #any</v>
+ <v>qos_err = PropertyErrorSeq</v>
+ <v>PropertyErrorSeq = [PropertyError]</v>
+ <v>PropertyError = #'CosNotification_PropertyError'{code, name, available_range}</v>
+ <v>code = 'UNSUPPORTED_PROPERTY' | 'UNAVAILABLE_PROPERTY' | 'UNSUPPORTED_VALUE' | 'UNAVAILABLE_VALUE' | 'BAD_PROPERTY' | 'BAD_TYPE' | 'BAD_VALUE'</v>
+ <v>name = string()</v>
+ <v>available_range = PropertyRange</v>
+ <v>PropertyRange = #CosNotification_PropertyRange{low_val, high_val}</v>
+ <v>low_val = high_val = #any</v>
+ </type>
+ <desc>
+ <p>To check if certain Quality of Service properties can be added to events in
+ the current context of the target object this operation should be used. If we
+ cannot support the required settings an exception describing why will be raised.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullConsumer.xml
new file mode 100644
index 0000000000..29dc59871d
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullConsumer.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ProxyPullConsumer</title>
+ <shorttitle>..._ProxyPullConsumer</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ProxyPullConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ProxyPullConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifyPublish">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxyConsumer">CosNotifyChannelAdmin_ProxyConsumer</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_any_pull_supplier(ProxyPullConsumer, PullSupplier) -> Reply</name>
+ <fsummary>Connect a supplier to the proxy</fsummary>
+ <type>
+ <v>ProxyPullConsumer = #objref</v>
+ <v>PullSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects the given <c>PullSupplier</c> to the target object.
+ If a client is already connected the <c>AlreadyConnected</c> exception
+ will be raised. The client must support the operations <c>pull</c> and
+ <c>try_pull</c>, otherwise the <c>TypeError</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>suspend_connection(ProxyPullConsumer) -> Reply</name>
+ <fsummary>Suspend the connection between the client and the proxy</fsummary>
+ <type>
+ <v>ProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If we want to temporarily suspend the connection with the target object this
+ operation must be sued. If the connection already have been suspended or
+ no client have been connected an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>resume_connection(ProxyPullConsumer) -> Reply</name>
+ <fsummary>Resume a previously suspended connection with the proxy</fsummary>
+ <type>
+ <v>ProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyActive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If The connection have been suspended earlier we can invoke this operation to
+ reinstate the connection. If the connection already is active or no client
+ have been connected to the target object an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_pull_consumer(ProxyPullConsumer) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>ProxyPullConsumer = #objref</v>
+ </type>
+ <desc>
+ <p>Invoking this operation disconnects the client from the target object which
+ then terminates and inform its administrative parent.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullSupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullSupplier.xml
new file mode 100644
index 0000000000..daa0f3cc49
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullSupplier.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ProxyPullSupplier</title>
+ <shorttitle>..._ProxyPullSupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ProxyPullSupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ProxyPullSupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxySupplier">CosNotifyChannelAdmin_ProxySupplier</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_any_pull_consumer(ProxyPullSupplier, PullConsumer) -> Reply</name>
+ <fsummary>Connect a consumer to the proxy</fsummary>
+ <type>
+ <v>ProxyPullSupplier = #objref</v>
+ <v>PullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects the given <c>PullConsumer</c> to the target object.
+ If a connection already exists the <c>AlreadyConnected</c> exception is
+ raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>pull(ProxyPullSupplier) -> Reply</name>
+ <fsummary>Pull an Any event from the proxy</fsummary>
+ <type>
+ <v>ProxyPullSupplier = #objref</v>
+ <v>Reply = #any | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation pulls next <c>#any{}</c> event, and blocks, if the target object
+ have no events to forward, until an event can be delivered. If no client have
+ been connected the <c>Disconnected</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>try_pull(ProxyPullSupplier) -> Reply</name>
+ <fsummary>Try and pull an Any event from the proxy</fsummary>
+ <type>
+ <v>ProxyPullSupplier = #objref</v>
+ <v>Reply = {#any, HasEvent} | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ <v>HasEvent = boolean()</v>
+ </type>
+ <desc>
+ <p>This operation pulls next event, but do not block if the target object
+ have no event to forward. If no client have
+ been connected the <c>Disconnected</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_pull_supplier(ProxyPullSupplier) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>ProxyPullSupplier = #objref</v>
+ </type>
+ <desc>
+ <p>Invoking this operation will cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushConsumer.xml
new file mode 100644
index 0000000000..63d3f53101
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushConsumer.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ProxyPushConsumer</title>
+ <shorttitle>..._ProxyPushConsumer</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ProxyPushConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ProxyPushConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifyPublish">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxyConsumer">CosNotifyChannelAdmin_ProxyConsumer</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_any_push_supplier(ProxyPushConsumer, PushSupplier) -> Reply</name>
+ <fsummary>Connect a supplier to the proxy</fsummary>
+ <type>
+ <v>ProxyPushConsumer = #objref</v>
+ <v>PushSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PushSupplier</c> to the target object. If
+ a connection already exists the <c>AlreadyConnected</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>push(ProxyPushConsumer, Event) -> Reply</name>
+ <fsummary>Push an Any event to the proxy</fsummary>
+ <type>
+ <v>ProxyPushConsumer = #objref</v>
+ <v>Event = #any</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation pushes an <c>#any{}</c> event to the target object. If no client
+ have been connected the <c>Disconnected</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_push_consumer(ProxyPushConsumer) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>ProxyPushConsumer = #objref</v>
+ </type>
+ <desc>
+ <p>Invoking this operation will cause the target object to close the connection and
+ terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushSupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushSupplier.xml
new file mode 100644
index 0000000000..54d100c353
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushSupplier.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ProxyPushSupplier</title>
+ <shorttitle>..._ProxyPushSupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ProxyPushSupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ProxyPushSupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmi</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxySupplier">CosNotifyChannelAdmin_ProxySupplier</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_any_push_consumer(ProxyPushSupplier, PushConsumer) -> Reply</name>
+ <fsummary>Connect a consumer to the proxy</fsummary>
+ <type>
+ <v>ProxyPushSupplier = #objref</v>
+ <v>PushConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PushConsumer</c> to the target object. If
+ a connection already exists or the given client does not support
+ the operation <c>push</c> an exception, <c>AlreadyConnected</c> and
+ <c>TypeError</c> respectively, is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>suspend_connection(ProxyPushSupplier) -> Reply</name>
+ <fsummary>Suspend the connection between the proxy and the client</fsummary>
+ <type>
+ <v>ProxyPushSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation suspends the connection with the client object. If the connection
+ already is suspended or no client have been associated an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>resume_connection(ProxyPushSupplier) -> Reply</name>
+ <fsummary>Resume a previously suspended connection with the proxy</fsummary>
+ <type>
+ <v>ProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If a connection have been suspended earlier, calling this operation will resume the connection.
+ If the connection already is active or no client have been connected an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_push_supplier(ProxyPushSupplier) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>ProxyPushSupplier = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxySupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxySupplier.xml
new file mode 100644
index 0000000000..daf2aab388
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxySupplier.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;ProxySupplier</title>
+ <shorttitle>..._ProxySupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_ProxySupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::ProxySupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_MyType(ProxySupplier) -> ProxyType</name>
+ <fsummary>Return the proxy type</fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>ProxyType = 'PUSH_ANY' | 'PULL_ANY' | 'PUSH_STRUCTURED' | 'PULL_STRUCTURED' | 'PUSH_SEQUENCE' | 'PULL_SEQUENCE'</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the enumerant describing the which type the target object
+ is.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_MyAdmin(ProxySupplier) -> AdminObject</name>
+ <fsummary>Return the target object's associated <c>Admin</c>object</fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>AdminObject = #objref</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the admin's reference which created the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_priority_filter(ProxySupplier) -> MappingFilter</name>
+ <fsummary>Return the target object's associated priority <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation returns the associated priority MappingFilter.
+ If no such object exist a <c>NIL</c> reference is returned.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_set_priority_filter(ProxySupplier, MappingFilter) -> ok</name>
+ <fsummary>Set the target object's associated priority <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation associate a new priority MappingFilter with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_lifetime_filter(ProxySupplier) -> MappingFilter</name>
+ <fsummary>Return the target object's associated lifetime <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation returns the associated lifetime MappingFilter.
+ If no such object exist a <c>NIL</c> reference is returned.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_set_lifetime_filter(ProxySupplier, MappingFilter) -> ok</name>
+ <fsummary>Set the target object's associated lifetime <c>MappingFilter</c></fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation associate a new lifetime MappingFilter with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_offered_types(ProxySupplier, ObtainInfoMode) -> EventTypeSeq</name>
+ <fsummary>Administer the type of events the proxy supplies</fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>ObtainInfoMode = 'ALL_NOW_UPDATES_OFF' | 'ALL_NOW_UPDATES_ON' | 'NONE_NOW_UPDATES_OFF' | 'NONE_NOW_UPDATES_ON'</v>
+ <v>EventTypeSeq = [EventType]</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ </type>
+ <desc>
+ <p>Depending on the input parameter <c>ObtainInfoMode</c>, this operation may return a
+ sequence of the <c>EventTypes</c> the target object is interested in receiving.
+ If <c>'ALL_NOW_UPDATES_OFF'</c> or <c>'ALL_NOW_UPDATES_ON'</c> is given a sequence will
+ be returned, otherwise not. If <c>'ALL_NOW_UPDATES_OFF'</c> or <c>'NONE_NOW_UPDATES_OFF'</c>
+ are issued the target object will not inform the associated <c>NotifySubscribe</c> object
+ when an update occurs. <c>'ALL_NOW_UPDATES_ON'</c> or <c>'NONE_NOW_UPDATES_ON'</c> will
+ result in that update information will be sent.</p>
+ </desc>
+ </func>
+ <func>
+ <name>validate_event_qos(ProxySupplier, QoSProperties) -> Reply</name>
+ <fsummary>Check if the QoS properties can be set</fsummary>
+ <type>
+ <v>ProxySupplier = #objref</v>
+ <v>QoSProperties = [QoSProperty]</v>
+ <v>QoSProperty = #'CosNotification_Property'{name, value}</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>Reply = {ok, NamedPropertyRangeSeq} | {'EXCEPTION', CosNotification_UnsupportedQoS{qos_err}}</v>
+ <v>NamedPropertyRangeSeq = [NamedPropertyRange]</v>
+ <v>NamedPropertyRange = #CosNotification_NamedPropertyRange{name, range}</v>
+ <v>name = string()</v>
+ <v>range = #CosNotification_PropertyRange{low_val, high_val}</v>
+ <v>low_val = #any</v>
+ <v>high_val = #any</v>
+ <v>qos_err = PropertyErrorSeq</v>
+ <v>PropertyErrorSeq = [PropertyError]</v>
+ <v>PropertyError = #'CosNotification_PropertyError'{code, name, available_range}</v>
+ <v>code = 'UNSUPPORTED_PROPERTY' | 'UNAVAILABLE_PROPERTY' | 'UNSUPPORTED_VALUE' | 'UNAVAILABLE_VALUE' | 'BAD_PROPERTY' | 'BAD_TYPE' | 'BAD_VALUE'</v>
+ <v>name = string()</v>
+ <v>available_range = PropertyRange</v>
+ <v>PropertyRange = #CosNotification_PropertyRange{low_val, high_val}</v>
+ <v>low_val = high_val = #any</v>
+ </type>
+ <desc>
+ <p>To check if certain Quality of Service properties can be added to events in
+ the current context of the target object this operation should be used. If we
+ cannot support the required settings an exception describing why will be raised.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml
new file mode 100644
index 0000000000..aa9fae47df
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;SequenceProxyPullConsumer</title>
+ <shorttitle>..._SequenceProxyPullConsumer</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_SequenceProxyPullConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPullConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifyPublish">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxyConsumer">CosNotifyChannelAdmin_ProxyConsumer</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_sequence_pull_supplier(SequenceProxyPullConsumer, PullSupplier) -> Reply</name>
+ <fsummary>Connect a supplier to the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullConsumer = #objref</v>
+ <v>PullSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PullSupplier</c> to the target object. If a
+ connection already exists or the supplied client does not support the functions
+ <c>pull_structured_events</c> and <c>try_pull_structured_events</c> an exception
+ is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>suspend_connection(SequenceProxyPullConsumer) -> Reply</name>
+ <fsummary>Suspend the connection with the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If a connection exist, invoking this operation will suspend the connection
+ until instructed otherwise. Otherwise, no client have been connected or this operation
+ already have been invoked an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>resume_connection(SequenceProxyPullConsumer) -> Reply</name>
+ <fsummary>Resume a previously suspended connection with the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If an connection have been suspended this operation must be used to resume the
+ connection. If the connection already is active or no client have been connected an
+ exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_sequence_pull_consumer(SequenceProxyPullConsumer) -> ok</name>
+ <fsummary>Close connection and terminate the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullConsumer = #objref</v>
+ </type>
+ <desc>
+ <p>This operation close the connection to the client and terminates the target object.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml
new file mode 100644
index 0000000000..a46c53c9c1
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;SequenceProxyPullSupplier</title>
+ <shorttitle>..._SequenceProxyPullSupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_SequenceProxyPullSupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPullSupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxySupplier">CosNotifyChannelAdmin_ProxySupplier</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_sequence_pull_consumer(SequenceProxyPullSupplier, PullConsumer) -> Reply</name>
+ <fsummary>Connect a consumer to the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullSupplier = #objref</v>
+ <v>PullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PullConsumer</c> to the target object. If a connection
+ already exists an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>pull_structured_events(SequenceProxyPullSupplier, MaxEvents) -> Reply</name>
+ <fsummary>Pull structured events from the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullSupplier = #objref</v>
+ <v>MaxEvents = long()</v>
+ <v>Reply = EventBatch | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ <v>EventBatch = [StructuredEvent]</v>
+ <v>StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body}</v>
+ <v>header = EventHeader</v>
+ <v>filterable_data = [#'CosNotification_Property'{name, value}]</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>remainder_of_body = #any</v>
+ <v>EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header}</v>
+ <v>fixed_header = FixedEventHeader</v>
+ <v>variable_header = OptionalHeaderFields</v>
+ <v>FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name}</v>
+ <v>event_type = EventType</v>
+ <v>event_name = string()</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ <v>OptionalHeaderFields = [#'CosNotification_Property'{name, value}]</v>
+ </type>
+ <desc>
+ <p>A client use this operation to pull next event sequence of maximum length
+ <c>MaxEvents</c>. This operation is blocking and will not reply until the
+ requested amount of events can be delivered or the QoS property <c>PacingInterval</c>
+ is reached. For more information see the <c>User's Guide</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name>try_pull_structured_events(SequenceProxyPullSupplier, MaxEvents) -> Reply</name>
+ <fsummary>Try to pull structured events from the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullSupplier = #objref</v>
+ <v>MaxEvents = long()</v>
+ <v>Reply = {EventBatch, HasEvent} | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ <v>HasEvent = boolean()</v>
+ <v>EventBatch = [StructuredEvent]</v>
+ <v>StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body}</v>
+ <v>header = EventHeader</v>
+ <v>filterable_data = [#'CosNotification_Property'{name, value}]</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>remainder_of_body = #any</v>
+ <v>EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header}</v>
+ <v>fixed_header = FixedEventHeader</v>
+ <v>variable_header = OptionalHeaderFields</v>
+ <v>FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name}</v>
+ <v>event_type = EventType</v>
+ <v>event_name = string()</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ <v>OptionalHeaderFields = [#'CosNotification_Property'{name, value}]</v>
+ </type>
+ <desc>
+ <p>This operation pulls an event sequence of the maximum length <c>MaxEvents</c>,
+ but do not block if the target object have no events to forward. The outparameter,
+ <c>HasEvent</c> is true if the sequence contain any events.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_sequence_pull_supplier(SequenceProxyPullSupplier) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullSupplier = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml
new file mode 100644
index 0000000000..964d212715
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;SequenceProxyPushConsumer</title>
+ <shorttitle>..._SequenceProxyPushConsumer</shorttitle>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_&shy;SequenceProxyPushConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPushConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifyPublish">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxyConsumer">CosNotifyChannelAdmin_ProxyConsumer</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_sequence_push_supplier(SequenceProxyPushConsumer, PushSupplier) -> Reply</name>
+ <fsummary>Connect a supplier to the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPushConsumer = #objref</v>
+ <v>PushSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PushSupplier</c> to the target object. If a
+ connection already exists the <c>AlreadyConnected</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>push_structured_events(SequenceProxyPushConsumer, EventBatch) -> Reply</name>
+ <fsummary>Push a structured event to the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPushConsumer = #objref</v>
+ <v>EventBatch = [StructuredEvent]</v>
+ <v>StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body}</v>
+ <v>header = EventHeader</v>
+ <v>filterable_data = [#'CosNotification_Property'{name, value}]</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>remainder_of_body = #any</v>
+ <v>EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header}</v>
+ <v>fixed_header = FixedEventHeader</v>
+ <v>variable_header = OptionalHeaderFields</v>
+ <v>FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name}</v>
+ <v>event_type = EventType</v>
+ <v>event_name = string()</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ <v>OptionalHeaderFields = [#'CosNotification_Property'{name, value}]</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ </type>
+ <desc>
+ <p>A client must use this operation when it wishes to push a new sequence of events
+ to the target object. If no connection exists the <c>Disconnected</c> exception
+ is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_sequence_push_consumer(SequenceProxyPushConsumer) -> ok</name>
+ <fsummary>Close connection and terminate the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPushConsumer = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml
new file mode 100644
index 0000000000..60dfa2c230
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;SequenceProxyPushSupplier</title>
+ <shorttitle>..._SequenceProxyPushSupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_&shy;SequenceProxyPushSupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPushSupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxySupplier">CosNotifyChannelAdmin_ProxySupplier</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_sequence_push_consumer(SequenceProxyPushSupplier, PushConsumer) -> Reply</name>
+ <fsummary>Connect a consumer to the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPushSupplier = #objref</v>
+ <v>PushConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PushConsumer</c> to the target object. If a
+ connection already exists or the function <c>psuh_structured_events</c>
+ is not supported the exceptions <c>AlreadyConnected</c> or
+ <c>TypeError</c> will be raised respectively.</p>
+ </desc>
+ </func>
+ <func>
+ <name>suspend_connection(SequenceProxyPushSupplier) -> Reply</name>
+ <fsummary>Suspend the connection between the client and the target object</fsummary>
+ <type>
+ <v>SequenceProxyPushSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation suspends the connection between the client and the target object.
+ If no connection exists or the connection is already suspended an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>resume_connection(SequenceProxyPushSupplier) -> Reply</name>
+ <fsummary>Resume a previously suspended connection with the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If the connection have previously been suspended this operation must used
+ if we want to resume the connection. If no object have been connected or the connection
+ already is active an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_sequence_push_supplier(SequenceProxyPushSupplier) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>SequenceProxyPushSupplier = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml
new file mode 100644
index 0000000000..070f9a3b92
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;StructuredProxyPullConsumer</title>
+ <shorttitle>..._StructuredProxyPullConsumer</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_&shy;StructuredProxyPullConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPullConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifyPublish">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxyConsumer">CosNotifyChannelAdmin_ProxyConsumer</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_structured_pull_supplier(StructuredProxyPullConsumer, PullSupplier) -> Reply</name>
+ <fsummary>Connect a supplier to the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullConsumer = #objref</v>
+ <v>PullSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PullSupplier</c> to the target object. If a connection
+ already exists or the given client object does not support the functions
+ <c>pull_structured_event</c> and <c>try_pull_structured_event</c> an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>suspend_connection(StructuredProxyPullConsumer) -> Reply</name>
+ <fsummary>Suspend the connection between the target object and its client</fsummary>
+ <type>
+ <v>StructuredProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation suspends the connection between the target object and its client.
+ If no connection exists or already suspended an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>resume_connection(StructuredProxyPullConsumer) -> Reply</name>
+ <fsummary>Resume a previously suspended connection with the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If the connection have been suspended this operation must be used if we want
+ to resume the connection. If the connection already are active or no connection
+ have been created an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_structured_pull_consumer(StructuredProxyPullConsumer) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullConsumer = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml
new file mode 100644
index 0000000000..4a454b224a
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;StructuredProxyPullSupplier</title>
+ <shorttitle>..._StructuredProxyPullSupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_&shy;StructuredProxyPullSupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPullSupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxySupplier">CosNotifyChannelAdmin_ProxySupplier</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_structured_pull_consumer(StructuredProxyPullSupplier, PullConsumer) -> Reply</name>
+ <fsummary>Connect a consumer to the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullSupplier = #objref</v>
+ <v>PullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PullConsumer</c> to the target object. If a connection
+ already exists the <c>AlreadyConnected</c> exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>pull_structured_event(StructuredProxyPullSupplier) -> Reply</name>
+ <fsummary>Pull a structured event from the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullSupplier = #objref</v>
+ <v>Reply = StructuredEvent | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ <v>StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body}</v>
+ <v>header = EventHeader</v>
+ <v>filterable_data = [#'CosNotification_Property'{name, value}]</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>remainder_of_body = #any</v>
+ <v>EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header}</v>
+ <v>fixed_header = FixedEventHeader</v>
+ <v>variable_header = OptionalHeaderFields</v>
+ <v>FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name}</v>
+ <v>event_type = EventType</v>
+ <v>event_name = string()</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ <v>OptionalHeaderFields = [#'CosNotification_Property'{name, value}]</v>
+ </type>
+ <desc>
+ <p>This operation pulls next event from the target object; if an event cannot
+ be delivered this function blocks until an event arrives.</p>
+ </desc>
+ </func>
+ <func>
+ <name>try_pull_structured_event(StructuredProxyPullSupplier) -> Reply</name>
+ <fsummary>Try to pull a structured event from the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullSupplier = #objref</v>
+ <v>Reply = {StructuredEvent, HasEvent} | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ <v>HasEvent = boolean()</v>
+ <v>StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body}</v>
+ <v>header = EventHeader</v>
+ <v>filterable_data = [#'CosNotification_Property'{name, value}]</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>remainder_of_body = #any</v>
+ <v>EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header}</v>
+ <v>fixed_header = FixedEventHeader</v>
+ <v>variable_header = OptionalHeaderFields</v>
+ <v>FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name}</v>
+ <v>event_type = EventType</v>
+ <v>event_name = string()</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ <v>OptionalHeaderFields = [#'CosNotification_Property'{name, value}]</v>
+ </type>
+ <desc>
+ <p>This operation try to pull next event from the target object. If no event have arrived
+ an empty event is returned and the out parameter <c>HasEvent</c> is set to false. Otherwise,
+ the boolean flag is set to true and an valid event is returned.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_structured_pull_supplier(StructuredProxyPullSupplier) -> ok</name>
+ <fsummary>Close connection and terminate the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPullSupplier = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml
new file mode 100644
index 0000000000..db7f1ddb44
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;StructuredProxyPushConsumer</title>
+ <shorttitle>..._StructuredProxyPushConsumer</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_&shy;StructuredProxyPushConsumer</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPushConsumer interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifyPublish">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxyConsumer">CosNotifyChannelAdmin_ProxyConsumer</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_structured_push_supplier(StructuredProxyPushConsumer, PushSupplier) -> Reply</name>
+ <fsummary>Connect a supplier to the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPushConsumer = #objref</v>
+ <v>PushSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PushSupplier</c> to the target object. If a connection
+ already exists an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>push_structured_event(StructuredProxyPushConsumer, StructuredEvent) -> Reply</name>
+ <fsummary>Push a structured event to the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPushConsumer = #objref</v>
+ <v>StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body}</v>
+ <v>header = EventHeader</v>
+ <v>filterable_data = [#'CosNotification_Property'{name, value}]</v>
+ <v>name = string()</v>
+ <v>value = #any</v>
+ <v>remainder_of_body = #any</v>
+ <v>EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header}</v>
+ <v>fixed_header = FixedEventHeader</v>
+ <v>variable_header = OptionalHeaderFields</v>
+ <v>FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name}</v>
+ <v>event_type = EventType</v>
+ <v>event_name = string()</v>
+ <v>EventType = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ <v>OptionalHeaderFields = [#'CosNotification_Property'{name, value}]</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}}</v>
+ </type>
+ <desc>
+ <p>When a client want to push a new event to the target object this operation must be used.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_structured_push_consumer(StructuredProxyPushConsumer) -> ok</name>
+ <fsummary>Close the connection and terminate the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPushConsumer = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml
new file mode 100644
index 0000000000..b2dab10998
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;StructuredProxyPushSupplier</title>
+ <shorttitle>..._StructuredProxyPushSupplier</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_&shy;StructuredProxyPushSupplier</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPushSupplier interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifySubscribe</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyChannelAdmin_ProxySupplier">CosNotifyChannelAdmin_ProxySupplier</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>connect_structured_push_consumer(StructuredProxyPushSupplier, PushConsumer) -> Reply</name>
+ <fsummary>Connect a consumer to the proxy</fsummary>
+ <type>
+ <v>StructuredProxyPushSupplier = #objref</v>
+ <v>PushConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}}</v>
+ </type>
+ <desc>
+ <p>This operation connects a <c>PushConsumer</c> to the target object. If
+ a connection already exists or the function <c>push_structured_event</c>
+ is not supported by the client object an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>suspend_connection(StructuredProxyPushSupplier) -> Reply</name>
+ <fsummary>Suspend the connection with the target object</fsummary>
+ <type>
+ <v>StructuredProxyPushSupplier = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>This operation suspends the connection with the target object. If no connection
+ exists or the connection already is suspended an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>resume_connection(StructuredProxyPushSupplier) -> Reply</name>
+ <fsummary>Resume a previously suspended connection</fsummary>
+ <type>
+ <v>StructuredProxyPullConsumer = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}}</v>
+ </type>
+ <desc>
+ <p>If the connection with the target object have been suspended this function
+ must be used to resume the connection. If no client have been connected or
+ the connection is active an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>disconnect_structured_push_supplier(StructuredProxyPushSupplier) -> ok</name>
+ <fsummary>Close the connection and terminate the target object</fsummary>
+ <type>
+ <v>StructuredProxyPushSupplier = #objref</v>
+ </type>
+ <desc>
+ <p>This operation cause the target object to close the connection and terminate.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SupplierAdmin.xml b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SupplierAdmin.xml
new file mode 100644
index 0000000000..0f262accb8
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyChannelAdmin_SupplierAdmin.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyChannelAdmin_&shy;SupplierAdmin</title>
+ <shorttitle>..._SupplierAdmin</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyChannelAdmin_SupplierAdmin</module>
+ <modulesummary>This module implements the OMG CosNotifyChannelAdmin::SupplierAdmin interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module also exports the functions described in:</p>
+ <list type="bulleted">
+ <item>
+ <p><seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyComm_NotifySubscribe">CosNotifyComm_NotifyPublish</seealso></p>
+ </item>
+ <item>
+ <p><seealso marker="CosNotifyFilter_FilterAdmin">CosNotifyFilter_FilterAdmin</seealso></p>
+ </item>
+ </list>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_MyID(SupplierAdmin) -> AdminID</name>
+ <fsummary>Return the objects Id</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>AdminID = long()</v>
+ </type>
+ <desc>
+ <p>When a <c>SupplierAdmin</c> object is created it is given a unique Id
+ by the creating channel. This readonly attribute maintains this Id.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_MyChannel(SupplierAdmin) -> Channel</name>
+ <fsummary>Return the objects associated channel</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>Channel = #objref</v>
+ </type>
+ <desc>
+ <p>The creating channel's reference is maintained by this readonly attribute.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_MyOperator(SupplierAdmin) -> OpType</name>
+ <fsummary>Return the filter scheme</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>OpType = 'AND_OP' | 'OR_OP'</v>
+ </type>
+ <desc>
+ <p>The Operation Type, which determines the semantics the target object will
+ use for any associated <c>Filters</c>, is maintained by this readonly attribute.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_pull_consumers(SupplierAdmin) -> ProxyIDSeq</name>
+ <fsummary>Return all associated pull consumers Id:s</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>ProxyIDSeq = [ProxyID]</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>A sequence of all associated <c>PullProxy</c> Id's is maintained by this
+ readonly attribute.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_push_consumers(SupplierAdmin) -> ProxyIDSeq</name>
+ <fsummary>Return all associated push consumers Id:s</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>ProxyIDSeq = [ProxyID]</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>This operation returns all <c>PushProxy</c> Id's created by the target
+ object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_proxy_consumer(SupplierAdmin, ProxyID) -> Reply</name>
+ <fsummary>Return the Proxy which corresponds to the given Id</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>ProxyID = long()</v>
+ <v>Reply = Proxy | {'EXCEPTION', #'CosNotifyChannelAdmin_ProxyNotFound'{}}</v>
+ <v>Proxy = #objref</v>
+ </type>
+ <desc>
+ <p>The Proxy which corresponds to the given Id is returned by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_notification_pull_consumer(SupplierAdmin, SupplierType) -> Reply</name>
+ <fsummary>Create a new proxy</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>SupplierType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT'</v>
+ <v>Reply = {Proxy, ProxyID}</v>
+ <v>Proxy = #objref</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>This operation creates a new proxy and returns its object reference along with its ID.
+ The <c>SupplierType</c> parameter determines the event type accepted by the proxy.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_pull_consumer(SupplierAdmin) -> Proxy</name>
+ <fsummary>Create a new proxy</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>Proxy = #objref</v>
+ </type>
+ <desc>
+ <p>A proxy which accepts <c>#any{}</c> events is created by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_notification_push_consumer(SupplierAdmin, SupplierType) -> Reply</name>
+ <fsummary>Create a new proxy</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>SupplierType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT'</v>
+ <v>Reply = {Proxy, ProxyID}</v>
+ <v>Proxy = #objref</v>
+ <v>ProxyID = long()</v>
+ </type>
+ <desc>
+ <p>Determined by the <c>SupplierType</c> parameter a compliant proxy is created and
+ its object reference along with its Id is returned by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>obtain_push_consumer(SupplierAdmin) -> Proxy</name>
+ <fsummary>Create a new proxy</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ <v>Proxy = #objref</v>
+ </type>
+ <desc>
+ <p>A proxy which accepts <c>#any{}</c> events is created by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>destroy(SupplierAdmin) -> ok</name>
+ <fsummary>Terminate the target object</fsummary>
+ <type>
+ <v>SupplierAdmin = #objref</v>
+ </type>
+ <desc>
+ <p>This operation terminates the SupplierAdmin object and notifies the creating channel
+ that the target object no longer is active.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyComm_NotifyPublish.xml b/lib/cosNotification/doc/src/CosNotifyComm_NotifyPublish.xml
new file mode 100644
index 0000000000..427ca87810
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyComm_NotifyPublish.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyComm_NotifyPublish</title>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyComm_NotifyPublish</module>
+ <modulesummary>This module implements the OMG CosNotifyComm::NotifyPublish interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>All objects, which inherit this interface, export functions described in this module.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>offer_change(Object, Added, Removed) -> Reply</name>
+ <fsummary>Inform the target object which type of events the supplier will deliver</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>Added = Removed = EventTypeSeq</v>
+ <v>EventTypeSeq = [type]</v>
+ <v>Reply = ok | {'EXCEPTION', CosNotifyComm_InvalidEventType{type}}</v>
+ <v>type = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ </type>
+ <desc>
+ <p>Objects supporting this interface can be informed by supplier objects about
+ which type of events that will be delivered in the future. This operation
+ accepts two parameters describing new and old event types respectively.
+ If any of the supplied event type names is syntactically incorrect an exception
+ is raised.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyComm_NotifySubscribe.xml b/lib/cosNotification/doc/src/CosNotifyComm_NotifySubscribe.xml
new file mode 100644
index 0000000000..1ed7f860c0
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyComm_NotifySubscribe.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyComm_&shy;NotifySubscribe</title>
+ <shorttitle>..._NotifySubscribe</shorttitle>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyComm_NotifySubscribe</module>
+ <modulesummary>This module implements the OMG CosNotifyComm::NotifySubscribe interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>All objects, which inherit this interface, export functions described in this module.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>subscription_change(Object, Added, Removed) -> Reply</name>
+ <fsummary>Inform the target object which event types the client will and will not accept in the future</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>Added = Removed = EventTypeSeq</v>
+ <v>EventTypeSeq = [type]</v>
+ <v>Reply = ok | {'EXCEPTION', CosNotifyComm_InvalidEventType{type}}</v>
+ <v>type = #'CosNotification_EventType'{domain_name, type_name}</v>
+ <v>domain_name = type_name = string()</v>
+ </type>
+ <desc>
+ <p>This operation takes as input two sequences of event type names
+ specifying events the client will and will not accept in the future
+ respectively.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyFilter_Filter.xml b/lib/cosNotification/doc/src/CosNotifyFilter_Filter.xml
new file mode 100644
index 0000000000..dd894f2fea
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyFilter_Filter.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>CosNotifyFilter_Filter</title>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyFilter_Filter</module>
+ <modulesummary>This module implements the OMG CosNotifyFilter::Filter interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_constraint_grammar(Filter) -> Grammar</name>
+ <fsummary>Return which type of Grammar the Filter uses</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>Grammar = string()</v>
+ </type>
+ <desc>
+ <p>This operation returns which type of Grammar the Filter uses. Currently, only <c>"EXTENDED_TCL"</c> is supported.</p>
+ </desc>
+ </func>
+ <func>
+ <name>add_constraints(Filter, ConstraintExpSeq) -> Reply</name>
+ <fsummary>Add new constraints to the filter</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>ConstraintExpSeq = [Constraint]</v>
+ <v>ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ <v>Reply = ConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}}</v>
+ <v>constr = ConstraintExp</v>
+ <v>ConstraintInfoSeq = [ConstraintInfo]</v>
+ <v>ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = long()</v>
+ </type>
+ <desc>
+ <p>Initially, Filters do not contain any constraints, hence, all events will be forwarded.
+ The <c>add_constraints/2</c> operation allow us to add constraints to the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>modify_constraints(Filter, ConstraintIDSeq, ConstraintInfoSeq) -> Reply</name>
+ <fsummary>Modify existing constraints</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>ConstraintIDSeq = [ConstraintID]</v>
+ <v>ConstraintID = long()</v>
+ <v>ConstraintInfoSeq = [ConstraintInfo]</v>
+ <v>ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = long()</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}}</v>
+ <v>constr = ConstraintExp</v>
+ <v>id = long()</v>
+ <v>ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ </type>
+ <desc>
+ <p>This operation is invoked by a client in order to modify the constraints associated
+ with the target object. The constraints related to the Id's in the parameter sequence
+ <c>ConstraintIDSeq</c> will, if all values are valid, be deleted. The <c>ConstraintInfoSeq</c>
+ parameter contains of Id-Expression pairs and a constraint matching one of the unique
+ Id's will, if all input values are correct, be updated. If the parameters contain incorrect
+ data en exception will be raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_constraints(Filter, ConstraintIDSeq) -> Reply</name>
+ <fsummary>Return all constraints which match the supplied Ids</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>ConstraintIDSeq = [ConstraintID]</v>
+ <v>ConstraintID = long()</v>
+ <v>Reply = ConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}}</v>
+ <v>ConstraintInfoSeq = [ConstraintInfo]</v>
+ <v>ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = id = long()</v>
+ </type>
+ <desc>
+ <p>This operation return a sequence of ConstraintInfo's, related to the given ConstraintID's,
+ associated with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_all_constraints(Filter) -> ConstraintInfoSeq</name>
+ <fsummary>Return all constraints associated with the target object</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>ConstraintInfoSeq = [ConstraintInfo]</v>
+ <v>ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = long()</v>
+ </type>
+ <desc>
+ <p>All constraints, and their unique Id, associated with the target object will be returned by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>remove_all_constraints(Filter) -> ok</name>
+ <fsummary>Remove all constraints associated with the target object</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ </type>
+ <desc>
+ <p>All constraints associated with the target object are removed by this operation and, since
+ the the target object no longer contain any constraints, true will always be the result of
+ any match operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>destroy(Filter) -> ok</name>
+ <fsummary>Terminate the target object</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation terminates the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>match(Filter, Event) -> Reply</name>
+ <fsummary>Match the Any event if it satisfies at least one constraint</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>Event = #any</v>
+ <v>Reply = boolean() | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}}</v>
+ </type>
+ <desc>
+ <p>This operation accepts an <c>#any{}</c> event and returns <c>true</c> if it satisfies
+ at least one constraint. If the event contains data of the wrong type, e.g., should be
+ a string() but in fact i a short(), an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>match_structured(Filter, Event) -> Reply</name>
+ <fsummary>Match the structured event if it satisfies at least one constraint</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>Event = #'CosNotification_StructuredEvent'{}</v>
+ <v>Reply = boolean() | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}}</v>
+ </type>
+ <desc>
+ <p>This operation is similar to the <c>match</c> operation but accepts structured
+ events instead.</p>
+ </desc>
+ </func>
+ <func>
+ <name>attach_callback(Filter, NotifySubscribe) -> CallbackID</name>
+ <fsummary>Connect NotifySubscribe object, which should be informed when the target object's constraints are updated</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>NotifySubscribe = #objref</v>
+ <v>CallbackID = long()</v>
+ </type>
+ <desc>
+ <p>This operation connects a NotifySubscribe object, which should be informed
+ when the target object's constraints are updated. A unique Id is returned
+ which must be stored if we ever want to detach the callback object in the future.</p>
+ </desc>
+ </func>
+ <func>
+ <name>detach_callback(Filter, CallbackID) -> Reply</name>
+ <fsummary>Disconnect the NotifySubscribe object with the given Id</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>CallbackID = long()</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyFilter_CallbackNotFound'{}}</v>
+ </type>
+ <desc>
+ <p>If the target object has an associated callback that matches the supplied
+ Id it will be removed and longer informed of any updates. If no object
+ with a matching Id is found an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_callbacks(Filter) -> CallbackIDSeq</name>
+ <fsummary>Return all NotifySubscribe Id's associated with the target object</fsummary>
+ <type>
+ <v>Filter = #objref</v>
+ <v>CallbackIDSeq = [CallbackID]</v>
+ <v>CallbackID = long()</v>
+ </type>
+ <desc>
+ <p>This operation returns a sequence of all connected NotifySubscribe object Id's.
+ If no callbacks are associated with the target object the list will be empty.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyFilter_FilterAdmin.xml b/lib/cosNotification/doc/src/CosNotifyFilter_FilterAdmin.xml
new file mode 100644
index 0000000000..ebbba8763d
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyFilter_FilterAdmin.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyFilter_FilterAdmin</title>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyFilter_FilterAdmin</module>
+ <modulesummary>This module implements the OMG CosNotifyFilter::FilterAdmin interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>All objects, which inherit this interface, export functions described in this module.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>add_filter(Object, Filter) -> FilterID</name>
+ <fsummary>Add a new filter to the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>Filter = #objref</v>
+ <v>FilterID = long()</v>
+ </type>
+ <desc>
+ <p>This operation connects a new <c>Filter</c> to the target object. This <c>Filter</c> will, together
+ with other associated <c>Filters</c>, be used to select events to forward. A unique Id is
+ returned and should be used if we no longer want to consult the given <c>Filter</c>.</p>
+ </desc>
+ </func>
+ <func>
+ <name>remove_filter(Object, FilterID) -> ok</name>
+ <fsummary>Remove a filter associated with the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>FilterID = long()</v>
+ </type>
+ <desc>
+ <p>If a certain <c>Filter</c> no longer should be associated with the target object
+ this operation must be used. Events will no longer be tested against the <c>Filter</c>
+ associated with the given Id.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_filter(Object, FilterID) -> Reply</name>
+ <fsummary>Return the filter with the given Id</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>FilterID = long()</v>
+ <v>Reply = Filter | {'EXCEPTION', #'CosNotifyFilter_FilterNotFound'{}}</v>
+ <v>Filter = #objref</v>
+ </type>
+ <desc>
+ <p>If the target object is associated with a <c>Filter</c> matching the given Id the
+ reference will be returned. If no such <c>Filter</c> is known by the target object
+ an exception is raised.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_all_filters(Object) -> FilterIDSeq</name>
+ <fsummary>Return a list of all filter Id:s associated with the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ <v>FilterIDSeq = [FilterID]</v>
+ <v>FilterID = long()</v>
+ </type>
+ <desc>
+ <p>Id's for all <c>Filter</c> objects associated with the target object is
+ returned by this operation.</p>
+ </desc>
+ </func>
+ <func>
+ <name>remove_all_filters(Object) -> ok</name>
+ <fsummary>Remove all filters from the target object</fsummary>
+ <type>
+ <v>Object = #objref</v>
+ </type>
+ <desc>
+ <p>If we want to remove all <c>Filters</c> associated with the target object we can use this function.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyFilter_FilterFactory.xml b/lib/cosNotification/doc/src/CosNotifyFilter_FilterFactory.xml
new file mode 100644
index 0000000000..c4712e481f
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyFilter_FilterFactory.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year>
+ <year>2007</year>
+ <holder>Ericsson AB, All Rights Reserved</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ The Initial Developer of the Original Code is Ericsson AB.
+ </legalnotice>
+
+ <title>CosNotifyFilter_FilterFactory</title>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyFilter_FilterFactory</module>
+ <modulesummary>This module implements the OMG CosNotifyFilter::FilterFactory interface.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ </description>
+ <funcs>
+ <func>
+ <name>create_filter(FilterFactory, Grammar) -> Reply</name>
+ <fsummary>Create a <c>Filter</c>object</fsummary>
+ <type>
+ <v>FilterFactory = #objref</v>
+ <v>Grammar = string()</v>
+ <v>Reply = Filter | {'EXCEPTION', #'CosNotifyFilter_InvalidGrammar'{}}</v>
+ <v>Filter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a new Filter object, under the condition
+ that Grammar given is supported. Currently, only <c>"EXTENDED_TCL"</c> is supported.</p>
+ </desc>
+ </func>
+ <func>
+ <name>create_mapping_filter(FilterFactory, Grammar) -> Reply</name>
+ <fsummary>Create a <c>MappingFilter</c>object</fsummary>
+ <type>
+ <v>FilterFactory = #objref</v>
+ <v>Grammar = string()</v>
+ <v>Reply = MappingFilter | {'EXCEPTION', #'CosNotifyFilter_InvalidGrammar'{}}</v>
+ <v>Filter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a new MappingFilter object, under the condition
+ that Grammar given is supported. Currently, only <c>"EXTENDED_TCL"</c> is supported.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/CosNotifyFilter_MappingFilter.xml b/lib/cosNotification/doc/src/CosNotifyFilter_MappingFilter.xml
new file mode 100644
index 0000000000..f5c6a75f3e
--- /dev/null
+++ b/lib/cosNotification/doc/src/CosNotifyFilter_MappingFilter.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>CosNotifyFilter_MappingFilter</title>
+ <prepared></prepared>
+ <docno></docno>
+ <checked></checked>
+ <date>2000-02-01</date>
+ <rev>1.0</rev>
+ </header>
+ <module>CosNotifyFilter_MappingFilter</module>
+ <modulesummary>This module implements the OMG CosNotifyFilter::MappingFilter interface.</modulesummary>
+ <description>
+ <p>The main purpose of this module is to match events against associated
+ constraints and return the value for the first constraint that returns
+ true for the given event. If all constraints return false the default value
+ will be returned.</p>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ </description>
+ <funcs>
+ <func>
+ <name>_get_constraint_grammar(MappingFilter) -> Grammar</name>
+ <fsummary>Return which type of Grammar the MappingFilter uses</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>Grammar = string()</v>
+ </type>
+ <desc>
+ <p>This operation returns which type of Grammar the MappingFilter uses.
+ Currently, only <c>"EXTENDED_TCL"</c> is supported.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_value_type(MappingFilter) -> CORBA::TypeCode</name>
+ <fsummary>Return the <c>CORBA::TypeCode</c>of the default value associated with the target object</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the <c>CORBA::TypeCode</c> of the default value
+ associated with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>_get_default_value(MappingFilter) -> #any</name>
+ <fsummary>Return the <c>#any{}</c> default value associated with the target object</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This readonly attribute maintains the <c>#any{}</c> default value associated with
+ the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>add_mapping_constraints(MappingFilter, MappingConstraintPairSeq) -> Reply</name>
+ <fsummary>Add new mapping constraints</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>MappingConstraintPairSeq = [MappingConstraintPair]</v>
+ <v>MappingConstraintPair = #'CosNotifyFilter_MappingConstraintPair'{constraint_expression, result_to_set}</v>
+ <v>constraint_expression = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ <v>result_to_set = #any</v>
+ <v>Reply = MappingConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_InvalidValue'{constr, value}}</v>
+ <v>constr = ConstraintExp</v>
+ <v>ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ <v>MappingConstraintInfoSeq = [MappingConstraintInfo]</v>
+ <v>MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = long()</v>
+ <v>value = #any</v>
+ </type>
+ <desc>
+ <p>This operation add new mapping constraints, which will be used when trying to override
+ Quality of Service settings defined in the given event. If a constraint return true the
+ associated value will be returned, otherwise the default value.</p>
+ </desc>
+ </func>
+ <func>
+ <name>modify_constraints(MappingFilter, ConstraintIDSeq, MappingConstraintInfoSeq) -> Reply</name>
+ <fsummary>Modify the constraints associated with the target object</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>ConstraintIDSeq = [ConstraintID]</v>
+ <v>ConstraintID = long()</v>
+ <v>MappingConstraintInfoSeq = [MappingConstraintInfo]</v>
+ <v>MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = long()</v>
+ <v>value = #any</v>
+ <v>ConstraintInfoSeq = [ConstraintInfo]</v>
+ <v>ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>constraint_id = long()</v>
+ <v>Reply = ok | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}} | {'EXCEPTION', #'CosNotifyFilter_InvalidValue'{constr, value}}</v>
+ <v>constr = ConstraintExp</v>
+ <v>id = long()</v>
+ <v>value = #any</v>
+ <v>ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ </type>
+ <desc>
+ <p>The <c>ConstraintIDSeq</c> supplied should relate to constraints the caller wishes to
+ remove. If any of the supplied Id's are not found an exception will be raised. This
+ operation also accepts a sequence of <c>MappingConstraintInfo</c> which will be added.
+ If the target object cannot modify the constraints as requested an exception is raised
+ describing which constraint, and why, could not be updated.</p>
+ </desc>
+ </func>
+ <func>
+ <name>get_mapping_constraints(MappingFilter, ConstraintIDSeq) -> Reply</name>
+ <fsummary>Return the target object's associated constraints with given ID:s</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>ConstraintIDSeq = [ConstraintID]</v>
+ <v>ConstraintID = long()</v>
+ <v>Reply = MappingConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}}</v>
+ <v>MappingConstraintInfoSeq = [MappingConstraintInfo]</v>
+ <v>MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ <v>constraint_id = id = long()</v>
+ <v>value = #any</v>
+ </type>
+ <desc>
+ <p>When adding a new constraint a unique Id is returned, which is accepted as input for this
+ operation. The associated constraint is returned, but if no such Id exists an exception is raised. </p>
+ </desc>
+ </func>
+ <func>
+ <name>get_all_mapping_constraints(MappingFilter) -> MappingConstraintInfoSeq</name>
+ <fsummary>Return the target object's all associated constraints</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>MappingConstraintInfoSeq = [MappingConstraintInfo]</v>
+ <v>MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value}</v>
+ <v>constraint_expression = ConstraintExp</v>
+ <v>ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr}</v>
+ <v>event_types = #'CosNotification_EventTypeSeq'{}</v>
+ <v>constraint_expr = string()</v>
+ <v>constraint_id = long()</v>
+ <v>value = #any</v>
+ </type>
+ <desc>
+ <p>This operation returns a sequence of all unique Id's associated with the target object.
+ If no constraint have been added the sequence will be empty.</p>
+ </desc>
+ </func>
+ <func>
+ <name>remove_all_mapping_constraints(MappingFilter) -> ok</name>
+ <fsummary>Remove all constraints associated with the target object</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation removes all constraints associated with the target object.</p>
+ </desc>
+ </func>
+ <func>
+ <name>destroy(MappingFilter) -> ok</name>
+ <fsummary>Terminate the target object</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ </type>
+ <desc>
+ <p>This operation terminates the target object. Remember to remove
+ this Filter from the objects it have been associated with.</p>
+ </desc>
+ </func>
+ <func>
+ <name>match(MappingFilter, Event) -> Reply</name>
+ <fsummary>Evaluate the given Any event with the Filter's constraints</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>Event = #any</v>
+ <v>Reply = {boolean(), #any} | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}}</v>
+ </type>
+ <desc>
+ <p>This operation evaluates <c>Any</c> events with the Filter's constraints,
+ and returns the value to use. The value is the default value if all constraints
+ returns false and the value associated with the first constraint returning true.</p>
+ </desc>
+ </func>
+ <func>
+ <name>match_structured(MappingFilter, Event) -> Reply</name>
+ <fsummary>Evaluate the given structured event with the Filter's constraints</fsummary>
+ <type>
+ <v>MappingFilter = #objref</v>
+ <v>Event = #'CosNotification_StructuredEvent'{}</v>
+ <v>Reply = {boolean(), #any} | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}}</v>
+ </type>
+ <desc>
+ <p>Similar to <c>match/2</c> but accepts a structured event as input.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/Makefile b/lib/cosNotification/doc/src/Makefile
new file mode 100644
index 0000000000..6abcf0ef1d
--- /dev/null
+++ b/lib/cosNotification/doc/src/Makefile
@@ -0,0 +1,254 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2000-2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../../vsn.mk
+VSN=$(COSNOTIFICATION_VSN)
+APPLICATION=cosNotification
+
+# ----------------------------------------------------
+# Include dependency
+# ----------------------------------------------------
+
+ifndef DOCSUPPORT
+include make.dep
+endif
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN)
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+XML_APPLICATION_FILES = ref_man.xml
+XML_REF3_FILES = \
+ cosNotificationApp.xml \
+ CosNotifyChannelAdmin_EventChannelFactory.xml \
+ CosNotifyChannelAdmin_EventChannel.xml \
+ CosNotification.xml \
+ CosNotification_QoSAdmin.xml \
+ CosNotification_AdminPropertiesAdmin.xml \
+ CosNotifyChannelAdmin_ConsumerAdmin.xml \
+ CosNotifyChannelAdmin_SupplierAdmin.xml \
+ CosNotifyComm_NotifyPublish.xml \
+ CosNotifyComm_NotifySubscribe.xml \
+ CosNotifyFilter_FilterAdmin.xml \
+ CosNotifyFilter_FilterFactory.xml \
+ CosNotifyFilter_Filter.xml \
+ CosNotifyFilter_MappingFilter.xml \
+ CosNotifyChannelAdmin_ProxyConsumer.xml \
+ CosNotifyChannelAdmin_ProxySupplier.xml \
+ CosNotifyChannelAdmin_ProxyPullConsumer.xml \
+ CosNotifyChannelAdmin_ProxyPullSupplier.xml \
+ CosNotifyChannelAdmin_ProxyPushConsumer.xml \
+ CosNotifyChannelAdmin_ProxyPushSupplier.xml \
+ CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml \
+ CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml \
+ CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml \
+ CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml \
+ CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml \
+ CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml \
+ CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml \
+ CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml \
+
+
+
+XML_PART_FILES = \
+ part.xml \
+ part_notes.xml
+XML_CHAPTER_FILES = \
+ ch_contents.xml \
+ ch_introduction.xml \
+ ch_install.xml \
+ ch_system.xml \
+ ch_BNF.xml \
+ ch_QoS.xml \
+ ch_example.xml \
+ notes.xml
+
+BOOK_FILES = book.xml
+
+TECHNICAL_DESCR_FILES =
+
+GIF_FILES = \
+ book.gif \
+ notes.gif \
+ ref_man.gif \
+ user_guide.gif \
+ eventstructure.gif \
+ notificationFlow.gif
+
+PS_FILES =
+
+# ----------------------------------------------------
+
+INTERNAL_HTML_FILES = $(TECHNICAL_DESCR_FILES:%.xml=$(HTMLDIR)/%.html)
+
+HTML_FILES = $(XML_APPLICATION_FILES:%.xml=$(HTMLDIR)/%.html) \
+ $(XML_PART_FILES:%.xml=$(HTMLDIR)/%.html)
+
+INFO_FILE = ../../info
+EXTRA_FILES = summary.html.src \
+ $(DEFAULT_GIF_FILES) \
+ $(DEFAULT_HTML_FILES) \
+ $(XML_REF3_FILES:%.xml=$(HTMLDIR)/%.html) \
+ $(XML_CHAPTER_FILES:%.xml=$(HTMLDIR)/%.html)
+
+MAN3_FILES = $(XML_REF3_FILES:%.xml=$(MAN3DIR)/%.3)
+
+ifdef DOCSUPPORT
+
+HTML_REF_MAN_FILE = $(HTMLDIR)/index.html
+
+TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf
+
+else
+
+TEX_FILES_BOOK = \
+ $(BOOK_FILES:%.xml=%.tex)
+TEX_FILES_REF_MAN = $(XML_REF3_FILES:%.xml=%.tex) \
+ $(XML_APPLICATION_FILES:%.xml=%.tex)
+TEX_FILES_USERS_GUIDE = \
+ $(XML_CHAPTER_FILES:%.xml=%.tex)
+
+TOP_PDF_FILE = $(APPLICATION)-$(VSN).pdf
+
+TOP_PS_FILE = $(APPLICATION)-$(VSN).ps
+
+$(TOP_PDF_FILE): book.dvi ../../vsn.mk
+ $(DVI2PS) $(DVIPS_FLAGS) -f $< | $(DISTILL) $(DISTILL_FLAGS) > $@
+
+$(TOP_PS_FILE): book.dvi ../../vsn.mk
+ $(DVI2PS) $(DVIPS_FLAGS) -f $< > $@
+
+endif
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+XML_FLAGS +=
+DVIPS_FLAGS +=
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+$(HTMLDIR)/%.gif: %.gif
+ $(INSTALL_DATA) $< $@
+
+ifdef DOCSUPPORT
+
+docs: pdf html man
+
+$(TOP_PDF_FILE): $(XML_FILES)
+
+pdf: $(TOP_PDF_FILE)
+
+html: gifs $(HTML_REF_MAN_FILE)
+
+clean clean_docs:
+ rm -rf $(HTMLDIR)/*
+ rm -f $(MAN3DIR)/*
+ rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo)
+ rm -f errs core *~
+
+else
+
+ifeq ($(DOCTYPE),pdf)
+docs: pdf
+else
+ifeq ($(DOCTYPE),ps)
+docs: ps
+else
+docs: html gifs man
+endif
+endif
+
+pdf: $(TOP_PDF_FILE)
+
+ps: $(TOP_PS_FILE)
+
+html: $(HTML_FILES) $(INTERNAL_HTML_FILES)
+
+clean clean_docs clean_tex:
+ rm -f $(TEX_FILES_USERS_GUIDE) $(TEX_FILES_REF_MAN) $(TEX_FILES_BOOK)
+ rm -f $(HTML_FILES) $(MAN3_FILES)
+ rm -f $(TOP_PDF_FILE) $(TOP_PS_FILE)
+ rm -f errs core *~ *xmls_output *xmls_errs $(LATEX_CLEAN)
+
+endif
+
+man: $(MAN3_FILES)
+
+gifs: $(GIF_FILES:%=$(HTMLDIR)/%)
+
+$(INDEX_TARGET): $(INDEX_SRC)
+ sed -e 's;%VSN%;$(VSN);' $(INDEX_SRC) > $(INDEX_TARGET)
+
+debug opt:
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+ifdef DOCSUPPORT
+
+release_docs_spec: docs
+ $(INSTALL_DIR) $(RELSYSDIR)/doc/pdf
+ $(INSTALL_DATA) $(TOP_PDF_FILE) $(RELSYSDIR)/doc/pdf
+ $(INSTALL_DIR) $(RELSYSDIR)/doc/html
+ $(INSTALL_DATA) $(HTMLDIR)/* \
+ $(RELSYSDIR)/doc/html
+ $(INSTALL_DATA) $(INFO_FILE) $(RELSYSDIR)
+ $(INSTALL_DIR) $(RELEASE_PATH)/man/man3
+ $(INSTALL_DATA) $(MAN3DIR)/* $(RELEASE_PATH)/man/man3
+else
+
+ifeq ($(DOCTYPE),pdf)
+release_docs_spec: pdf
+ $(INSTALL_DIR) $(RELEASE_PATH)/pdf
+ $(INSTALL_DATA) $(TOP_PDF_FILE) $(RELEASE_PATH)/pdf
+else
+ifeq ($(DOCTYPE),ps)
+release_docs_spec: ps
+ $(INSTALL_DIR) $(RELEASE_PATH)/ps
+ $(INSTALL_DATA) $(TOP_PS_FILE) $(RELEASE_PATH)/ps
+else
+release_docs_spec: docs
+ $(INSTALL_DIR) $(RELSYSDIR)/doc/html
+ $(INSTALL_DATA) $(GIF_FILES) $(EXTRA_FILES) $(HTML_FILES) \
+ $(RELSYSDIR)/doc/html
+ $(INSTALL_DATA) $(INFO_FILE) $(RELSYSDIR)
+ $(INSTALL_DIR) $(RELEASE_PATH)/man/man3
+ $(INSTALL_DATA) $(MAN3_FILES) $(RELEASE_PATH)/man/man3
+
+endif
+endif
+
+endif
+
+release_spec:
+
diff --git a/lib/cosNotification/doc/src/book.gif b/lib/cosNotification/doc/src/book.gif
new file mode 100644
index 0000000000..94b3868792
--- /dev/null
+++ b/lib/cosNotification/doc/src/book.gif
Binary files differ
diff --git a/lib/cosNotification/doc/src/book.xml b/lib/cosNotification/doc/src/book.xml
new file mode 100644
index 0000000000..fe311ee57c
--- /dev/null
+++ b/lib/cosNotification/doc/src/book.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE book SYSTEM "book.dtd">
+
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header titlestyle="normal">
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotification</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev>1.0</rev>
+ </header>
+ <insidecover>
+ </insidecover>
+ <pagetext>cosNotification</pagetext>
+ <preamble>
+ <contents level="2"></contents>
+ </preamble>
+ <parts lift="no">
+ <xi:include href="part.xml"/>
+ </parts>
+ <applications>
+ <xi:include href="ref_man.xml"/>
+ </applications>
+ <releasenotes>
+ <xi:include href="notes.xml"/>
+ </releasenotes>
+ <listofterms></listofterms>
+ <index></index>
+</book>
+
diff --git a/lib/cosNotification/doc/src/ch_BNF.xml b/lib/cosNotification/doc/src/ch_BNF.xml
new file mode 100644
index 0000000000..545280a1f4
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_BNF.xml
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Filters and the Constraint Language BNF</title>
+ <prepared></prepared>
+ <docno></docno>
+ <date>2000-04-13</date>
+ <rev></rev>
+ <file>ch_BNF.xml</file>
+ </header>
+
+ <section>
+ <title>Filters and the Constraint Language BNF</title>
+ <p>This chapter describes, the grammar supported by
+ <seealso marker="CosNotifyFilter_Filter">CosNotifyFilter_Filter</seealso> and
+ <seealso marker="CosNotifyFilter_MappingFilter">CosNotifyFilter_MappingFilter</seealso>,
+ and how to create and use filter objects.
+ </p>
+
+ <section>
+ <title>How to create filter objects</title>
+ <p>To be able to filter events we must create a filter and associate
+ it with one, or more, of the administrative or proxy objects. In the example
+ below, we choose to associate the filter with a ConsumerAdmin object.</p>
+ <code type="none">
+FilterFactory = cosNotificationApp:start_filter_factory(),
+Filter = 'CosNotifyFilter_FilterFactory':
+ create_filter(FilterFactory,"EXTENDED_TCL"),
+ConstraintInfoSeq = 'CosNotifyFilter_Filter':
+ add_constraints(Filter, ConstraintExpSeq),
+FilterID = 'CosNotifyChannelAdmin_ConsumerAdmin':
+ add_filter(AdminConsumer, Filter),
+ </code>
+ <p><c>"EXTENDED_TCL"</c> is the only grammar supported by Orber Notification
+ Service.</p>
+ <p>Depending on which operation type the Admin object uses, i.e.,
+ <c>'AND_OP'</c> or <c>'OR_OP'</c>, events will be tested using the
+ associated filter. The operation properties are:</p>
+ <p></p>
+ <list type="bulleted">
+ <item>
+ <p>'AND_OP' - must be approved by the proxy's <em>and</em> its parent admin's
+ filters. If all filters associated with an object (Admin or Proxy)
+ return false the event will be discarded. In this situation it is pointless
+ to try and verify with the other object's associated filters since the outcome
+ still would be the same.</p>
+ </item>
+ <item>
+ <p>'OR_OP' - if one of the object's (Admin or Proxy) filters return true, the event
+ will not be checked against any other filter associated with a proxy or its
+ parent admin. If a object's associated filters all return false,
+ the event will be forwarded to related proxies/admins, and
+ tested against any associated filters.</p>
+ </item>
+ </list>
+ <p>Initially, filters are empty and will always return true. Hence, we must
+ add constraints by using <c>'CosNotifyFilter_Filter':add_constraints/2</c>.
+ As input, the second argument must be a sequence of:</p>
+ <code type="none">
+#'CosNotifyFilter_ConstraintExp'{
+ event_types = [#'CosNotification_EventType'{
+ domain_name = string(),
+ type_name = string()}],
+ constraint_expr = string()}
+ </code>
+ <p>The <c>event_types</c> describes which types of events that should be matched using
+ the associated <c>constraint_expr</c>.</p>
+ <p>If a constraint expression is supposed to apply for all events, then the <c>type_name</c> can
+ be set to the special event type <c>%ALL</c> in a constraint's event type sequence. The
+ <c>domain_name</c> should be <c>""</c> or <c>"*"</c>.</p>
+ <p>In the following sections we will take a closer look on how to write
+ constraint expressions.</p>
+ </section>
+
+ <section>
+ <title>The CosNotification Constraint Language</title>
+ <p>The constraint language supported by the Notification Service is:</p>
+ <code type="none"><![CDATA[
+<constraint> := /* empty */
+ | <bool>
+
+<bool> := <bool_or>
+
+<bool_or> := <bool_or> or <bool_and>
+ | <bool_and>
+
+<bool_and> := <bool_and> and <bool_compare>
+ | <bool_compare>
+
+<bool_compare> := <expr_in> == <expr_in>
+ | <expr_in> != <expr_in>
+ | <expr_in> < <expr_in>
+ | <expr_in> <= <expr_in>
+ | <expr_in> > <expr_in>
+ | <expr_in> >= <expr_in>
+ | <expr_in>
+
+<expr_in> := <expr_twiddle> in <Ident> /* sequence only */
+ | <expr_twiddle>
+ | <expr_twiddle> in $ <Component> /* sequence only */
+
+<expr_twiddle> := <expr> ~ <expr> /* string data types only */
+ | <expr>
+
+<expr> := <expr> + <term>
+ | <expr> - <term>
+ | <term>
+
+<term> := <term> * <factor_not>
+ | <term> / <factor_not>
+ | <factor_not>
+
+<factor_not> := not <factor>
+ | <factor>
+
+<factor> := ( <bool_or> )
+ | exist <Ident>
+ | <Ident>
+ | <Number>
+ | - <Number>
+ | <String>
+ | TRUE
+ | FALSE
+ | + <Number>
+ | exist $ <Component>
+ | $ <Component>
+ | default $ <Component> /* discriminated unions only */
+
+<Component> := /* empty */
+ | . <CompDot>
+ | <CompArray>
+ | <CompAssoc>
+ | <Ident> <CompExt> /* run-time variable */
+
+<CompExt> := /* empty */
+ | . <CompDot>
+ | <CompArray>
+ | <CompAssoc>
+
+<CompDot> := <Ident> <CompExt>
+ | <CompPos>
+ | <UnionPos>
+ | _length /* only valid for arrays or sequences */
+ | _d /* discriminated unions only */
+ | _type_id /* only valid if possible to obtain */
+ | _repos_id /* only valid if possible to obtain */
+
+<CompArray> := [ <Digits> ] <CompExt>
+
+<CompAssoc> := ( <Ident> ) <CompExt>
+
+<CompPos> := <Digits> <CompExt>
+
+<UnionPos> := ( <UnionVal> ) <CompExt>
+
+<UnionVal> := /* empty */
+ | <Digits>
+ | - <Digits>
+ | + <Digits>
+ | <String>
+
+/* Character set issues */
+<Ident> :=<Leader> <FollowSeq>
+ | \\ < Leader> <FollowSeq>
+
+<FollowSeq> := /* <empty> */
+ | <FollowSeq> <Follow>
+
+<Number> := <Mantissa>
+ | <Mantissa> <Exponent>
+
+<Mantissa> := <Digits>
+ | <Digits> .
+ | . <Digits>
+ | <Digits> . <Digits>
+
+<Exponent> := <Exp> <Sign> <Digits>
+
+<Sign> := +
+ | -
+
+<Exp> := E
+ | e
+
+<Digits> := <Digits> <Digit>
+ | <Digit>
+
+<String> := ' <TextChars> '
+
+<TextChars> := /* <empty> */
+ | <TextChars> <TextChar>
+
+<TextChar> := <Alpha>
+ | <Digit>
+ | <Other>
+ | <Special>
+
+<Special> := \\\\
+ | \\'
+
+<Leader> := <Alpha>
+
+<Follow> := <Alpha>
+ | <Digit>
+ | _
+
+<Alpha> is the set of alphabetic characters [A-Za-z]
+<Digit> is the set of digits [0-9]
+<Other> is the set of ASCII characters that are not <Alpha>, <Digit>, or <Special>
+ ]]></code>
+ <p>In the absence of parentheses, the following precedence relations hold :</p>
+ <list type="ordered">
+ <item><c>()</c>, <c>exist</c>, <c>default</c>, <c>unary-sign</c></item>
+ <item><c>not</c></item>
+ <item><c>*</c>, <c>/</c></item>
+ <item><c>+</c>, <c>-</c></item>
+ <item><c>~</c></item>
+ <item><c>in</c></item>
+ <item><c>==</c>, <c>!=</c>, <c><![CDATA[<]]></c>, <c><![CDATA[<=]]></c>, <c>></c>, <c>>=</c></item>
+ <item><c>and</c></item>
+ <item><c>or</c></item>
+ </list>
+ </section>
+
+ <section>
+ <title>The Constraint Language Data Types</title>
+ <p>The Notification Service Constraint Language, defines how to write
+ constraint expressions, which can be used to filter events. The
+ representation does, however, differ slightly from ordinary Erlang terms.</p>
+ <p>When creating a <c>ConstraintExp</c>, the field <c>constraint_expr</c> must be
+ set to contain a string, e.g., <c><![CDATA["1 < 2"]]></c>. The Notification Service Constraint
+ Language, is designed to be able to filter structured and unstructured events
+ using the same constraint expression. The Constraint Language Types and Operations
+ can be divided into two sub-groups:</p>
+ <list type="bulleted">
+ <item>
+ <p>Basic - arithmetics, strings, constants, numbers etc.</p>
+ </item>
+ <item>
+ <p>Complex - accessing members of complex data types, such as unions.</p>
+ </item>
+ </list>
+ <p>Some of the basic types, e.g., integer, are self explanatory. Hence, they are not described further.</p>
+ <table>
+ <row>
+ <cell align="center" valign="middle"><em>Type/Operation</em></cell>
+ <cell align="center" valign="middle"><em>Examples</em></cell>
+ <cell align="center" valign="middle"><em>Description</em></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>string</c></cell>
+ <cell align="left" valign="middle"><c>"'MyString'"</c></cell>
+ <cell align="left" valign="middle">Strings are represented as a sequence of zero or more <c><![CDATA[<TextChar>]]></c>s enclosed in single quotes, e.g., <c>'string'</c>.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>~</c></cell>
+ <cell align="left" valign="middle"><c>"'Sring1' ~ 'String2'"</c></cell>
+ <cell align="left" valign="middle">The operator <c>~</c>is called the substring operator and mean "String1 is contained within String2".</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>boolean</c></cell>
+ <cell align="left" valign="middle"><c>"TRUE == (('lang' ~ 'Erlang' + 'fun' ~ 'functional') >= 2)"</c></cell>
+ <cell align="left" valign="middle">Booleans may only be TRUE or FALSE, i.e., only capital letters. Expressions which evaluate to TRUE or FALSE can be summed up and matched, where TRUE equals 1 and FALSE 0.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>sequence</c></cell>
+ <cell align="left" valign="middle"><c>"myIntegerSequence[2]"</c></cell>
+ <cell align="left" valign="middle">The BNF use C/C++ notation, i.e., the example will return the <em>third</em>element.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>_length</c></cell>
+ <cell align="left" valign="middle"><c>"myIntegerSequence._length"</c></cell>
+ <cell align="left" valign="middle">Returns the length of an sequence or array.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>in</c></cell>
+ <cell align="left" valign="middle"><c>"'Erlang' in $.FunctionalLanguages&shy;StringSeq"</c></cell>
+ <cell align="left" valign="middle">Returns <c>TRUE</c>if a given element is found in the given sequence. The element must be of a simple type and the same as the sequence is defined to contain.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>$</c></cell>
+ <cell align="left" valign="middle"><c>"$ == 40"</c></cell>
+ <cell align="left" valign="middle">Denote the current event as well as any run-time variables. If the event is unstructured and its contained value 40, the example will return <c>TRUE</c>.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>.</c></cell>
+ <cell align="left" valign="middle"><c>"$.MyStructMember == 40"</c></cell>
+ <cell align="left" valign="middle">The structure member operator <c>.</c>may be used to reference its members when the data refers to a named structure, discriminated union, or CORBA::Any data structure.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>_type_id</c></cell>
+ <cell align="left" valign="middle"><c>"$._type_id == 'MyStruct'"</c></cell>
+ <cell align="left" valign="middle">Returns the unscoped IDL type name of the component. This operation is only valid if said information can be obtained.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>_repos_id</c></cell>
+ <cell align="left" valign="middle"><c>"$._repos_id == 'IDL:MyModule/MyStruct:1.0'"</c></cell>
+ <cell align="left" valign="middle">Returns the RepositoryId of the component. This operation is only valid if said information can be obtained.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>_d</c></cell>
+ <cell align="left" valign="middle"><c>"$.eventUnion._d"</c></cell>
+ <cell align="left" valign="middle">May only be used when accessing discriminated unions and refers to the discriminator.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>exist</c></cell>
+ <cell align="left" valign="middle"><c>"exist $.eventUnion._d and $.eventUnion._d == 10"</c></cell>
+ <cell align="left" valign="middle">To avoid that a filtering of an event fails due to that, for example, we try to compare a union discriminator which does not exist, we can use this operator.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>default</c></cell>
+ <cell align="left" valign="middle"><c>"default $.eventUnion._d"</c></cell>
+ <cell align="left" valign="middle">If the <c>_d</c>operation is in conjunction with the <c>default</c>operation, TRUE will be returned if the union has a default member that is active.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>union</c></cell>
+ <cell align="left" valign="middle"><c>"$.(0) == 5"</c>eq. <c>"$.('zero') == 5"</c></cell>
+ <cell align="left" valign="middle">When the component refers to a union, with one of the cases defined as <c>case 0: short zero;</c>, we use <c>0</c>or <c>'zero'</c>. The result of the example is <c>TRUE</c>if the union has a discriminator set to <c>0</c>and the value <c>5</c>. If more than one case is defined to be<c>'zero'</c>, <c>$.('zero')</c>accepts both; <c>$.(0)</c>only returns <c>TRUE</c>if the discriminator is set to <c>0</c>. Leaving out the identifier, i.e., <c>$.()</c>, refers to the default value.</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle"><c>name-value pairs</c></cell>
+ <cell align="left" valign="middle"><c>"$.NameValueSeq('myID') == 5"</c>eq.<c>"$.NameValueSeq[1].name == 'myID' and $.NameValueSeq[1].value == 5"</c></cell>
+ <cell align="left" valign="middle">The Notification service makes extensive use of <c>name-value pairs</c>sequences within structured events, which allow us to via the identifier <c>name</c>access its <c>value</c>, as shown in the example.</cell>
+ </row>
+ <tcaption>Table 1: Type and Operator Examples</tcaption>
+ </table>
+ <p>In the next section we will take a closer look at how it is possible to write constraints using
+ different types of notation etc.</p>
+ </section>
+
+ <section>
+ <title>Accessing Data In Events</title>
+ <p>To filter events, the supplied constraints must describe the contents of
+ the events and desired values. We can, for example, state that we are only
+ interested in receiving events which are of type <em>CommunicationsAlarm</em>.
+ To be able to achieve this, the constraint must contain information
+ that points out which fields to compare with. Figure one illustrates a conceptual overview of a
+ structured event. The exact definition is found in the <c>CosNotification.idl</c> file.</p>
+ <marker id="eventstructure"></marker>
+ <image file="eventstructure.gif">
+ <icaption>
+Figure 1: The structure of a structured event.</icaption>
+ </image>
+ <p>The Notification Service supports different constraint expressions
+ notation:</p>
+ <list type="bulleted">
+ <item>
+ <p>Fully scoped, e.g., "$.header.fixed_header.event_type.type_name == 'CommunicationsAlarm'"</p>
+ </item>
+ <item>
+ <p>Short hand, e.g., "$type_name == 'CommunicationsAlarm'"</p>
+ </item>
+ <item>
+ <p>Positional Notation, e.g., "$.0.0.0.1 == 'CommunicationsAlarm'"</p>
+ </item>
+ </list>
+ <note>
+ <p>Which notation to use is up to the user, however, the fully scoped may
+ be easier to understand, but in some cases, if received from an ORB that do not populate ID:s of
+ named parts, the positional notation is the only option.</p>
+ </note>
+ <note>
+ <p>If a constraint, which access fields in a structured event structure,
+ is supposed to handle unstructured events as well, the CORBA::Any must contain
+ the same type of members.</p>
+ </note>
+ <p>How to filter against the fixed header fields, is described in the
+ table below.</p>
+ <table>
+ <row>
+ <cell align="center" valign="middle">Field</cell>
+ <cell align="center" valign="middle">Fully Scoped Constraint</cell>
+ <cell align="center" valign="middle">Short Hand Constraint</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">type_name</cell>
+ <cell align="left" valign="middle">"$.header.fixed_header.event_&shy;type.type_name == 'Type'"</cell>
+ <cell align="left" valign="middle">"$type_name == 'Type'"</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">domain_name</cell>
+ <cell align="left" valign="middle">"$.header.fixed_header.event_&shy;type.domain_name == 'Domain'"</cell>
+ <cell align="left" valign="middle">"$domain_name == 'Domain'"</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">event_name</cell>
+ <cell align="left" valign="middle">"$.header.fixed_header.event_&shy;name == 'Event'"</cell>
+ <cell align="left" valign="middle">"$event_name == 'Event'"</cell>
+ </row>
+ <tcaption>Table 2: Fixed Header Constraint Examples</tcaption>
+ </table>
+ <p>If we are only interested in receiving events regarding 'Domain', 'Event'
+ and 'Type', the constraint can look like
+ <c>"$domain_name == 'Domain' and $event_name == 'Event' and $type_name == 'Type'"</c>.</p>
+ <p>The variable event header consists of a sequence of <em>name-value pairs</em>. One way to filter on these are to use a constraint that looks
+ like <c>"($.header.variable_header[1].name == 'priority' and $.header.variable_header[1].value > 0)"</c>. An easier way to
+ accomplish the same result is to use a constraint that treats the name-value
+ pair as an associative array, i.e., when given a name the corresponding
+ value is returned. Hence, instead we can use
+ <c>"$.header.variable_header(priority) > 0"</c>.</p>
+ <p>Accessing the event body is done in the same way as for the event header
+ fields. The user must, however, be aware of, that if a run-time variable
+ (<c>$variable</c>) is used data in the event header may take precedence.
+ The order of precedence is:</p>
+ <list type="ordered">
+ <item>Reserved, e.g., <c>$curtime</c></item>
+ <item>A simple-typed member of <c>$.header.fixed_header</c>.</item>
+ <item>Properties in <c>$.header.variable_header</c>.</item>
+ <item>Properties in <c>$.filterable_data</c>.</item>
+ <item>If no match is found it is translated to <c>$.variable</c>.</item>
+ </list>
+ </section>
+
+ <section>
+ <title>Mapping Filters</title>
+ <p>Mapping Filters may only be associated with Consumer Administrators or Proxy
+ Suppliers. The purpose of a Mapping Filter is to override Quality of Service
+ settings.</p>
+ <p>Initially, Mapping Filters are empty and will always return true. Hence, we must
+ add constraints by using <c>'CosNotifyFilter_MappingFilter':add_mapping_constraints/2</c>.
+ If a constraint matches, the associated value will be used instead of the
+ related Quality of Service system settings.</p>
+ <p>As input, the second argument must be a sequence of:</p>
+ <code type="none">
+#'CosNotifyFilter_MappingConstraintPair'{
+ constraint_expression = #'CosNotifyFilter_ConstraintExp'{
+ event_types = [#'CosNotification_EventType'{
+ domain_name = string(),
+ type_name = string()}],
+ constraint_expr = string()},
+ result_to_set = any()}
+ </code>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/ch_QoS.xml b/lib/cosNotification/doc/src/ch_QoS.xml
new file mode 100644
index 0000000000..fbc8622a62
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_QoS.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Quality Of Service and Admin Properties</title>
+ <prepared></prepared>
+ <docno></docno>
+ <date>2000-05-29</date>
+ <rev></rev>
+ <file>ch_QoS.xml</file>
+ </header>
+
+ <section>
+ <title>Quality Of Service and Admin Properties</title>
+ <p>This chapter explains the allowed properties for
+ <seealso marker="CosNotification_QoSAdmin">CosNotification_QoSAdmin</seealso> and
+ <seealso marker="CosNotification_AdminPropertiesAdmin">CosNotification_AdminPropertiesAdmin</seealso>.
+ </p>
+
+ <section>
+ <title>Quality Of Service</title>
+ <p>The cosNotification application supports the following QoS settings:</p>
+ <table>
+ <row>
+ <cell align="center" valign="middle"><em>QoS</em></cell>
+ <cell align="center" valign="middle"><em>Range</em></cell>
+ <cell align="center" valign="middle"><em>Default</em></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">EventReliability</cell>
+ <cell align="left" valign="middle">BestEffort/Persistent</cell>
+ <cell align="left" valign="middle">BestEffort</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">ConnectionReliability</cell>
+ <cell align="left" valign="middle">BestEffort/Persistent</cell>
+ <cell align="left" valign="middle">BestEffort</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">Priority</cell>
+ <cell align="left" valign="middle">+/-32767</cell>
+ <cell align="left" valign="middle">0</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">OrderPolicy</cell>
+ <cell align="left" valign="middle">Any-, Fifo-, Priority- and Deadline-Order</cell>
+ <cell align="left" valign="middle">PriorityOrder</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">DiscardPolicy</cell>
+ <cell align="left" valign="middle">RejectNewEvents, Any-, Fifo-, Lifo-, Priority- and Deadline-Order</cell>
+ <cell align="left" valign="middle">RejectNewEvents</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">MaximumBatchSize</cell>
+ <cell align="left" valign="middle">long() > 0</cell>
+ <cell align="left" valign="middle">1</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">PacingInterval</cell>
+ <cell align="left" valign="middle">TimeBase::TimeT (see cosTime)</cell>
+ <cell align="left" valign="middle">0</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">StartTimeSupported</cell>
+ <cell align="left" valign="middle">boolean</cell>
+ <cell align="left" valign="middle">false</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">StopTimeSupported</cell>
+ <cell align="left" valign="middle">boolean</cell>
+ <cell align="left" valign="middle">false</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">MaxEventsPerConsumer</cell>
+ <cell align="left" valign="middle">long() > 0</cell>
+ <cell align="left" valign="middle">100</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">Timeout</cell>
+ <cell align="left" valign="middle">TimeBase::TimeT (see cosTime)</cell>
+ <cell align="left" valign="middle">No timeout</cell>
+ </row>
+ <tcaption>Table 1: Supported QoS Settings</tcaption>
+ </table>
+ <br></br>
+ <br></br>
+ <br></br>
+ <br></br>
+ <p><em>Comments on the table 'Supported QoS Settings':</em></p>
+ <taglist>
+ <tag><em>EventReliability</em></tag>
+ <item>To allow full Persistent EventReliability, every event must
+ be stored in a stable storage which would create a relatively
+ huge overhead. Hence, only lightweight version of the Persistent
+ QoS is supported. The configuration parameters <c>max_events</c>,
+ <c>interval_events</c> and <c>timeout_events</c> determine
+ the behavior of this setting.</item>
+ <tag><em>ConnectionReliability</em></tag>
+ <item>If this QoS is set to BestEffort and a client object returns anything
+ other than <c>ok</c> to its associated Proxy, the Proxy will discard
+ all events and terminate. Using Persistent and anything other than <c>ok</c>
+ is returned, events will be dropped but the proxy will retry later when
+ next delivery is due. A child may not have Persistent while its parent
+ has BestEffort QoS set, e.g., Proxy vs. Admin. If <c>OBJECT_NOT_EXIST</c>,
+ <c>NO_PERMISSION</c> or <c>CosEventComm_Disconnected</c> is thrown,
+ the associated object will terminate even if this parameter is
+ set to Persistent.</item>
+ <tag><em>Priority</em></tag>
+ <item>This QoS will treat all events as if they have the Priority equal to
+ current value, unless the event itself contains a Priority setting,
+ this event will be treated accordingly. Note: for this property to
+ have any effect, the DiscardPolicy and/or OrderPolicy must be set
+ to PriorityOrder.</item>
+ <tag><em>OrderPolicy</em></tag>
+ <item>If set to PriorityOrder, events with the highest Priority will be
+ delivered first. Deadline order will forward events with shortest
+ expiry time first. If two events have the same priority, they will be
+ delivered in FIFO-order.</item>
+ <tag><em>DiscardPolicy</em></tag>
+ <item>If set to PriorityOrder and MaxEventsPerConsumer limit is
+ reached, events
+ with the lowest Priority will be discarded first. Deadline order will
+ discard events with shortest expiry time first.</item>
+ <tag><em>MaximumBatchSize</em></tag>
+ <item>Only valid if the object is supposed to handle a sequence of structured
+ events and determines the largest amount of events that may be passed
+ each time.</item>
+ <tag><em>PacingInterval</em></tag>
+ <item>Determines how long an object will wait before forwarding a structured
+ event sequence of length equal to, or less than MaximumBatchSize.
+ If set to 0, which is the default behavior, no timeout is used and
+ the events are forwarded when the MaximumBatchSize is reached.</item>
+ <tag><em>StartTimeSupported</em></tag>
+ <item>If set to true events which contains the QoS Property <c>StartTime</c>
+ (TimeBase::UtcT - absolute time) will not be delivered until the
+ StartTime value have been exceeded. See also the <c>cosTime</c> application.</item>
+ <tag><em>StopTimeSupported</em></tag>
+ <item>If set to true, events which contain the QoS Properties <c>StopTime</c>
+ (TimeBase::UtcT - absolute time) or <c>Timeout</c> (TimeBase::TimeT -
+ relative time) will be discarded if the object has not been able to
+ deliver the event in time. See also the <c>cosTime</c> application.</item>
+ <tag><em>MaxEventsPerConsumer</em></tag>
+ <item>The maximum number of events the associated object may store before discarding
+ events in the way described by the DiscardPolicy.</item>
+ <tag><em>Timeout</em></tag>
+ <item>If this QoS property is not included in the event, and the Property
+ <c>StopTimeSupported</c> equals true, this setting will be applied
+ if events cannot be delivered within its time limit.</item>
+ </taglist>
+ <warning>
+ <p>Several of the above QoS Properties can be changed during run-time but we strongly advice
+ not to since, if a relatively large amount of events are waiting for delivery, some of the
+ QoS settings would require a total reorder of the events. The QoS property <c>ConnectioReliability</c>
+ may <em>never</em> be updated during run-time since it may cause deadlock. Run-time, in this case,
+ means activating the Channel by sending the first event.</p>
+ </warning>
+ </section>
+
+ <section>
+ <title>Setting Quality Of Service</title>
+ <p>Assume we have a Consumer Admin object which we want to change
+ the current Quality of Service. Typical usage:</p>
+ <code type="none">
+QoSPersistent =
+ [#'CosNotification_Property'
+ {name='CosNotification':'ConnectionReliability'(),
+ value=any:create(orber_tc:short(),
+ 'CosNotification':'Persistent'())}],
+'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent),
+ </code>
+ <p>If it is not possible to set the requested QoS the <c>UnsupportedQoS</c>
+ exception is raised, which includes a sequence of <c>PropertyError</c>'s
+ describing which QoS, possible range and why is not allowed. The error
+ codes are:</p>
+ <list type="bulleted">
+ <item>UNSUPPORTED_PROPERTY - QoS not supported for this type of target object.</item>
+ <item>UNAVAILABLE_PROPERTY - due to current QoS settings the given property
+ is not allowed.</item>
+ <item>UNSUPPORTED_VALUE - property value out of range; valid range is returned.</item>
+ <item>UNAVAILABLE_VALUE - due to current QoS settings the given value is
+ not allowed; valid range is returned.</item>
+ <item>BAD_PROPERTY - unrecognized property.</item>
+ <item>BAD_TYPE - type of supplied property is incorrect.</item>
+ <item>BAD_VALUE - illegal value.</item>
+ </list>
+ <p>The CosNotification_QoSAdmin interface also supports an operation
+ called <c>validate_qos/2</c>. The purpose of this operations is to check
+ if a QoS setting is supported by the target object and if so, the operation
+ returns additional properties which could be optionally added as well.</p>
+ </section>
+
+ <section>
+ <title>Admin Properties</title>
+ <p>The cosNotification application supports the following Admin Properties:</p>
+ <table>
+ <row>
+ <cell align="center" valign="middle"><em>Property</em></cell>
+ <cell align="center" valign="middle"><em>Range</em></cell>
+ <cell align="center" valign="middle"><em>Default</em></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">MaxQueueLength</cell>
+ <cell align="left" valign="middle">0</cell>
+ <cell align="left" valign="middle">0</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">MaxConsumers</cell>
+ <cell align="left" valign="middle">long() >= 0</cell>
+ <cell align="left" valign="middle">0</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">MaxSuppliers</cell>
+ <cell align="left" valign="middle">long() >= 0</cell>
+ <cell align="left" valign="middle">0</cell>
+ </row>
+ <tcaption>Table 2: Supported Admin Properties</tcaption>
+ </table>
+ <p>According to the OMG specification the default values for Admin Properties
+ is supposed to be <c>0</c>, which means that no limit applies to these
+ properties.</p>
+ <note>
+ <p>Admin Properties can only be set on a Channel Object level, i.e.,
+ they will not have an impact on any Admin or Proxy Objects. Currently,
+ setting the Admin Property <c>MaxQueueLength</c> have no effect since
+ we cannot discard events accordingly to the Quality of Service Property
+ <c>DiscardPolicy</c>.</p>
+ </note>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/ch_contents.xml b/lib/cosNotification/doc/src/ch_contents.xml
new file mode 100644
index 0000000000..e5505951bf
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_contents.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>The cosNotification Application</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev>1.0</rev>
+ <file>ch-contents.xml</file>
+ </header>
+
+ <section>
+ <title>Content Overview</title>
+ <p>The cosNotification documentation is divided into three sections:
+ </p>
+ <list type="bulleted">
+ <item>
+ <p>PART ONE - The User's Guide
+ <br></br>
+Description of the cosNotification Application including
+ services and a small tutorial demonstrating
+ the development of a simple service.</p>
+ </item>
+ <item>
+ <p>PART TWO - Release Notes
+ <br></br>
+A concise history of cosNotification.</p>
+ </item>
+ <item>
+ <p>PART THREE - The Reference Manual
+ <br></br>
+ A quick reference guide, including a
+ brief description, to all the functions available in cosNotification.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Brief Description of the User's Guide</title>
+ <p>The User's Guide contains the following parts:</p>
+ <list type="bulleted">
+ <item>
+ <p>cosNotification overview</p>
+ </item>
+ <item>
+ <p>cosNotification installation</p>
+ </item>
+ <item>
+ <p>A tutorial example</p>
+ </item>
+ </list>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/ch_example.xml b/lib/cosNotification/doc/src/ch_example.xml
new file mode 100644
index 0000000000..8cb12bd241
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_example.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotification Examples</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev>A</rev>
+ <file>ch_example.xml</file>
+ </header>
+
+ <section>
+ <title>A Tutorial on How to Create a Simple Service</title>
+
+ <section>
+ <title>Interface Design</title>
+ <p>To use the cosNotification application <em>clients</em> must be implemented.
+ There are twelve types of clients: </p>
+ <list type="bulleted">
+ <item>Structured Push Consumer</item>
+ <item>Sequence Push Consumer </item>
+ <item>Any Push Consumer</item>
+ <item>Structured Pull Consumer</item>
+ <item>Sequence Pull Consumer</item>
+ <item>Any Pull Consumer</item>
+ <item>Structured Push Supplier</item>
+ <item>Sequence Push Supplier</item>
+ <item>Any Push Supplier</item>
+ <item>Structured Pull Supplier</item>
+ <item>Sequence Pull Supplier</item>
+ <item>Any Pull Supplier</item>
+ </list>
+ <p>The interfaces for these participants are defined in <em>CosNotification.idl</em>
+ and <em>CosNotifyComm.idl</em>.</p>
+ </section>
+
+ <section>
+ <title>Generating a Client Interface</title>
+ <p>We start by creating an interface which inherits from the correct interface, e.g., <em>CosNotifyComm::SequencePushConsumer</em>. Hence,
+ we must also implement all operations defined in the SequencePushConsumer interface. The IDL-file could look like: </p>
+ <code type="c"><![CDATA[
+#ifndef _MYCLIENT_IDL
+#define _MYCLIENT_IDL
+#include <CosNotification.idl>
+#include <CosNotifyComm.idl>
+
+module myClientImpl {
+
+ interface ownInterface:CosNotifyComm::SequencePushConsumer {
+
+ void ownFunctions(in any NeededArguments)
+ raises(Systemexceptions,OwnExceptions);
+
+ };
+};
+
+#endif
+ ]]></code>
+ <p>Run the IDL compiler on this file by calling the <c>ic:gen/1</c> function.
+ This will produce the API named <c>myClientImpl_ownInterface.erl</c>.
+ After generating the API stubs and the server skeletons it is time to
+ implement the servers and if no special options are sent
+ to the IDl compiler the file name is <c>myClientImpl_ownInterface_impl.erl</c>.</p>
+ <p>The callback module must contain the necessary functions inherited from
+ <em>CosNotification.idl</em> and <em>CosNotifyComm.idl</em>.</p>
+ </section>
+
+ <section>
+ <title>How to Run Everything</title>
+ <p>Below is a short transcript on how to run cosNotification. </p>
+ <code type="none">
+
+%% Start Mnesia and Orber
+mnesia:delete_schema([node()]),
+mnesia:create_schema([node()]),
+orber:install([node()]),
+mnesia:start(),
+orber:start(),
+
+%% If cosEvent not installed before it is necessary to do it now.
+cosEventApp:install(),
+
+%% Install cosNotification in the IFR.
+cosNotificationApp:install(30),
+
+%% Register the application specific Client implementations
+%% in the IFR.
+'oe_myClientImpl':'oe_register'(),
+
+%% Start the cosNotification application.
+cosNotificationApp:start(),
+
+%% Start a factory using the default configuration
+ChFac = cosNotificationApp:start_factory(),
+%% ... or use configuration parameters.
+ChFac = cosNotificationApp:start_factory([]),
+
+%% Create a new event channel. Note, if no QoS- anr/or Admin-properties
+%% are supplied (i.e. empty list) the default settings are used.
+{Ch, ChID} = 'CosNotifyChannelAdmin_EventChannelFactory':
+ create_channel(ChFac, DefaultQoS, DefaultAdmin),
+
+%% Retrieve a SupplierAdmin and a Consumer Admin.
+{AdminSupplier, ASID}=
+ 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch, 'OR_OP'),
+{AdminConsumer, ACID}=
+\011'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'OR_OP'),
+
+%% Use the corresponding Admin object to get access to wanted Proxies
+
+%% Create a Push Consumer Proxie, i.e., the Client Push Supplier will
+%% push events to this Proxy.
+{StructuredProxyPushConsumer,ID11}= 'CosNotifyChannelAdmin_SupplierAdmin':
+ obtain_notification_push_consumer(AdminSupplier, 'STRUCTURED_EVENT')),
+
+%% Create Push Suppliers Proxies, i.e., the Proxy will push events to the
+%% registered Push Consumers.
+{ProxyPushSupplier,I4D}='CosNotifyChannelAdmin_ConsumerAdmin':
+ obtain_notification_push_supplier(AdminConsumer, 'ANY_EVENT'),
+{StructuredProxyPushSupplier,ID5}='CosNotifyChannelAdmin_ConsumerAdmin':
+ obtain_notification_push_supplier(AdminConsumer, 'STRUCTURED_EVENT'),
+{SequenceProxyPushSupplier,ID6}='CosNotifyChannelAdmin_ConsumerAdmin':
+ obtain_notification_push_supplier(AdminConsumer, 'SEQUENCE_EVENT'),
+
+%% Create application Clients. We can, for example, start the Clients
+%% our selves or look them up in the naming service. This is application
+%% specific.
+SupplierClient = ...
+ConsumerClient1 = ...
+ConsumerClient2 = ...
+ConsumerClient3 = ...
+
+%% Connect each Client to corresponding Proxy.
+'CosNotifyChannelAdmin_StructuredProxyPushConsumer':
+ connect_structured_push_supplier(StructuredProxyPushConsumer, SupplierClient),
+'CosNotifyChannelAdmin_ProxyPushSupplier':
+ connect_any_push_consumer(ProxyPushSupplier, ConsumerClient1),
+'CosNotifyChannelAdmin_StructuredProxyPushSupplier':
+ connect_structured_push_consumer(StructuredProxyPushSupplier, ConsumerClient2),
+'CosNotifyChannelAdmin_SequenceProxyPushSupplier':
+ connect_sequence_push_consumer(SequenceProxyPushSupplier, ConsumerClient3),
+ </code>
+ <p>The example above, exemplifies a notification system where the SupplierClient
+ in some way generates event and pushes them to the proxy. The push supplier
+ proxies will eventually push the events to each ConsumerClient.</p>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/ch_install.xml b/lib/cosNotification/doc/src/ch_install.xml
new file mode 100644
index 0000000000..3463815bc5
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_install.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Installing cosNotification</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev></rev>
+ <file>ch-install.xml</file>
+ </header>
+
+ <section>
+ <title>Installation Process </title>
+ <p>This chapter describes how to install <seealso marker="cosNotificationApp">cosNotificationApp</seealso>
+ in an Erlang Environment.
+ </p>
+
+ <section>
+ <title>Preparation</title>
+ <p>Before starting the installation process for cosNotification,
+ the application Orber must be running.</p>
+ </section>
+
+ <section>
+ <title>Configuration</title>
+ <p>When using the Notification Service the <c>cosNotification</c> application
+ first must be installed using <c>cosNotificationApp:install()</c> or
+ <c>cosNotificationApp:install(Seconds)</c>, followed by <c>cosNotificationApp:start()</c>.</p>
+ <p>Then the <seealso marker="CosNotifyChannelAdmin_EventChannelFactory">Event Channel Factory</seealso>
+ must be started:</p>
+ <list type="bulleted">
+ <item><c>cosNotificationApp:start_global_factory()</c> - starts and returns a reference to a factory using default configuration parameters.
+ This operation should be used for a multi-node Orber.</item>
+ <item><c>cosNotificationApp:start_global_factory(Options)</c> - starts and returns a reference to a factory using given configuration parameters.
+ This operation should be used for a multi-node Orber.</item>
+ <item><c>cosNotificationApp:start_factory()</c> - starts and returns a reference to a factory using default configuration parameters.</item>
+ <item><c>cosNotificationApp:start_factory(Options)</c> - starts and returns a reference to a factory using given configuration parameters.</item>
+ </list>
+ <p>The following options exist:</p>
+ <list type="bulleted">
+ <item><c>{pullInterval, Seconds}</c> - determine how often Proxy Pull
+ Consumers will check for new events with the client application. The
+ default value is 20 seconds.</item>
+ <item><c>{filterOp, OperationType}</c> - determine which type of Administrator
+ objects should be started, i.e., <c>'OR_OP'</c> or <c>'AND_OP'</c>.
+ The default value is <c>'OR_OP'</c>.</item>
+ <item><c>{timeService, TimeServiceObj | 'undefined'}</c> - to be able to use
+ Start and/or Stop QoS this option must be used. See the function <c>start_time_service/2</c>
+ in the <c>cosTime</c> application. The default value is <c>'undefined'</c>.</item>
+ <item><c>{filterOp, OperationType}</c> - determine which type of Administrator
+ objects should be started, i.e., <c>'OR_OP'</c> or <c>'AND_OP'</c>.
+ The default value is <c>'OR_OP'</c>.</item>
+ <item><c>{gcTime, Seconds}</c> - this option determines how often, for example, proxies
+ will garbage collect expired events. The default value is 60.</item>
+ <item><c>{gcLimit, Amount}</c> - determines how many events will be stored before, for
+ example, proxies will garbage collect expired events. The default value is 50. This
+ option is tightly coupled with the QoS property <c>MaxEventsPerConsumer</c>, i.e.,
+ the <c>gcLimit</c> should be less than <c>MaxEventsPerConsumer</c> and greater than 0.</item>
+ </list>
+ <p>It is possible to define a set of global configuration parameters:</p>
+ <table>
+ <row>
+ <cell align="center" valign="middle"><em>Key</em></cell>
+ <cell align="center" valign="middle"><em>Range</em></cell>
+ <cell align="center" valign="middle"><em>Default</em></cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">type_check</cell>
+ <cell align="left" valign="middle">true | false</cell>
+ <cell align="left" valign="middle">true</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">notify</cell>
+ <cell align="left" valign="middle">atom() | false</cell>
+ <cell align="left" valign="middle">false</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">max_events</cell>
+ <cell align="left" valign="middle">integer() > 0</cell>
+ <cell align="left" valign="middle">50</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">interval_events</cell>
+ <cell align="left" valign="middle">integer() > 0</cell>
+ <cell align="left" valign="middle">10000 milliseconds</cell>
+ </row>
+ <row>
+ <cell align="left" valign="middle">timeout_events</cell>
+ <cell align="left" valign="middle">integer() > interval_events</cell>
+ <cell align="left" valign="middle">3000000 milliseconds</cell>
+ </row>
+ <tcaption>Global Configuration Parameters</tcaption>
+ </table>
+ <p><em>Comments on the table 'Global Configuration Parameters':</em></p>
+ <taglist>
+ <tag><em>type_check</em></tag>
+ <item>Determine if supplied IOR:s shall be type checked, i.e. invoking
+ corba_object:is_a/2, or not.</item>
+ <tag><em>notify</em></tag>
+ <item>The given value shall point to an existing module exporting
+ a function (arity 1) called <em>terminated</em>. This operation
+ is invoked when a proxy terminates and the argument is a list
+ containing <c>{proxy, IOR}</c>, <c>{client, IOR}</c> and
+ <c>{reason, term()}</c>. The return value is ignored.</item>
+ <tag><em>max_events</em></tag>
+ <item>If a supplier proxy has not been able to push events to a
+ consumer and the queue exceeds this limit, then the proxy will
+ terminate. For this option to have any effect, the
+ <c>EventReliability</c> and <c>ConnectionReliability</c> QoS
+ parameters must be set to <c>Persistent</c>. For more information,
+ see also the <seealso marker="ch_QoS">QoS</seealso> chapter.</item>
+ <tag><em>interval_events</em></tag>
+ <item>The same requirements as for <c>max_events</c>. When a supplier
+ proxy detects problems when trying to push events, this parameter
+ determines how often it should try to call the consumer.</item>
+ <tag><em>timeout_events</em></tag>
+ <item>The same requirements as for <c>max_events</c>. If the
+ proxy has not been able to contact the consumer and this
+ time-limit is reached, then the proxy will terminate.</item>
+ </taglist>
+ <p>The Factory is now ready to use. For a more detailed description see
+ <seealso marker="ch_example">Examples</seealso>.</p>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/ch_introduction.xml b/lib/cosNotification/doc/src/ch_introduction.xml
new file mode 100644
index 0000000000..63e4a58bd5
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_introduction.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Introduction to cosNotification</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev></rev>
+ <file>ch_introduction.xml</file>
+ </header>
+
+ <section>
+ <title>Overview</title>
+ <p>The cosNotification application is a Notification Service compliant with the <url href="http://www.omg.org">OMG</url>
+ Notification Service CosNotification.
+ </p>
+
+ <section>
+ <title>Purpose and Dependencies</title>
+ <p><em>cosNotification</em> is dependent on <em>Orber-3.1.7</em> or later,
+ which provides CORBA functionality in an Erlang environment,
+ <em>cosTime-1.0.1</em> or later and IDL-files to be compiled using <em>IC-4.0.4</em> or later.</p>
+ </section>
+
+ <section>
+ <title>Prerequisites</title>
+ <p>To fully understand the concepts presented in the
+ documentation, it is recommended that the user is familiar
+ with distributed programming, CORBA and the Orber application.
+ </p>
+ <p>Recommended reading includes books recommended by the <em>OMG</em>
+ and <em>Open Telecom Platform Documentation Set</em>. It is also
+ helpful to have read <em>Concurrent Programming in Erlang</em>.</p>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/ch_system.xml b/lib/cosNotification/doc/src/ch_system.xml
new file mode 100644
index 0000000000..126bba5f0b
--- /dev/null
+++ b/lib/cosNotification/doc/src/ch_system.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>The Notification Service Components</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-04-13</date>
+ <rev></rev>
+ <file>ch_system.xml</file>
+ </header>
+
+ <section>
+ <title>The Notification Service Components</title>
+ <p>This chapter describes the Notification Service Components and how they
+ interact.</p>
+
+ <section>
+ <title>Components</title>
+ <p>There are seven components in the OMG Notification Service architecture.
+ These are described below: </p>
+ <marker id="notificationFlow"></marker>
+ <image file="notificationFlow.gif">
+ <icaption>
+Figure 1: The Notification Service Components.</icaption>
+ </image>
+ <list type="bulleted">
+ <item><em>Event Channel:</em> acts as a factory for Administrator objects.
+ Allows clients to set Administrative Properties.</item>
+ <item><em>Supplier Administrators:</em> acts as a factory for Proxy Consumers.
+ Administrators are started as <c>'AND_OP'-</c> or <c>'OR_OP'-</c>type,
+ which determines if events must be validated using both the Administrators
+ associated Filter and/or its Proxy children Filters.</item>
+ <item><em>Consumer Administrators:</em> acts in the same way as Supplier Administrators
+ but handle Proxy Suppliers.</item>
+ <item><em>Consumer Proxy:</em> is connected to a client application. Can be
+ started as <c>Pull</c> or <c>Push</c> object. If the proxy is Push style
+ the client application must push events to the Proxy, otherwise the Proxy is
+ supposed to Pull events. The <c>CosNotification::AdminProperties</c> is
+ used to set the pacing interval.</item>
+ <item><em>Supplier Proxy:</em> Acts in a similar way as the Consumer Proxy, but
+ if started as a <c>Push</c> proxy it will push events to the client
+ application.</item>
+ <item><em>Filters:</em> used to filter events. May be associated with Proxies
+ and Administrators.</item>
+ <item><em>Mapping Filters:</em> used to override events Quality of Service
+ settings. Can only be associated with Consumer Administrators and
+ Proxy Suppliers.</item>
+ </list>
+ <p>When a Proxy is started it is set to accept <c>CORBA::Any</c>,
+ <c>CosNotification::StructuredEvent</c> or <c>CosNotification::EventBatch</c>
+ (a sequence of structured events).</p>
+ <p>If a Proxy is supposed to deliver structured events to a client application
+ and receives an <c>CORBA::Any</c> event, the event is converted to a
+ structured event with <c>type_name</c> set to <c>"%ANY"</c> and the
+ event is stored in <c>remainder_of_body</c>.</p>
+ <p>If a Proxy is supposed to deliver <c>CORBA::Any</c> events to a client application
+ and receives a structured event, the event is stored in an Any type. The
+ Any Type Code will be equal to the <c>CosNotification::StructuredEvent</c>
+ Type Code.</p>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/cosNotificationApp.xml b/lib/cosNotification/doc/src/cosNotificationApp.xml
new file mode 100644
index 0000000000..08bac7f810
--- /dev/null
+++ b/lib/cosNotification/doc/src/cosNotificationApp.xml
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE erlref SYSTEM "erlref.dtd">
+
+<erlref>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotificationApp</title>
+ <prepared>Niclas Eklund</prepared>
+ <responsible>Niclas Eklund</responsible>
+ <docno></docno>
+ <approved>Niclas Eklund</approved>
+ <checked></checked>
+ <date>2000-01-31</date>
+ <rev>PA1</rev>
+ </header>
+ <module>cosNotificationApp</module>
+ <modulesummary>The main module of the cosNotification application.</modulesummary>
+ <description>
+ <p>To get access to the record definitions for the structures use: <br></br>
+<c>-include_lib("cosNotification/include/*.hrl").</c></p>
+ <p>This module contains the functions for starting and stopping the application.</p>
+ </description>
+ <funcs>
+ <func>
+ <name>install() -> Return</name>
+ <fsummary>Install the cosNotification application</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation installs the cosNotification application.</p>
+ </desc>
+ </func>
+ <func>
+ <name>install(Seconds) -> Return</name>
+ <fsummary>Install the cosNotification application</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation installs the cosNotification application using <c>Seconds</c>
+ delay between each block, currently 6, of IFR-registrations. This approach
+ spreads the IFR database access over a period of time to allow other
+ applications to run smother.</p>
+ </desc>
+ </func>
+ <func>
+ <name>install_event() -> Return</name>
+ <fsummary>Install the necessary cosEvent interfaces</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation, which may <em>only</em> be used if it is impossible to
+ upgrade to <em>cosEvent-2.0</em> or later, installs the necessary
+ cosEvent interfaces. If cosEvent-2.0 is available, use
+ <c>cosEventApp:install()</c> instead.</p>
+ </desc>
+ </func>
+ <func>
+ <name>install_event(Seconds) -> Return</name>
+ <fsummary>Install the necessary cosEvent interfaces</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation, which may <em>only</em> be used if it is impossible to
+ upgrade to <em>cosEvent-2.0</em> or later, installs the necessary cosEvent
+ interfaces using <c>Seconds</c> delay between each block of
+ IFR-registrations. If cosEvent-2.0 is available, use
+ <c>cosEventApp:install()</c> instead.</p>
+ </desc>
+ </func>
+ <func>
+ <name>uninstall() -> Return</name>
+ <fsummary>Uninstall the cosNotification application</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation uninstalls the cosNotification application.</p>
+ </desc>
+ </func>
+ <func>
+ <name>uninstall(Seconds) -> Return</name>
+ <fsummary>Uninstall the cosNotification application</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation uninstalls the cosNotification application using <c>Seconds</c>
+ delay between each block, currently 6, of IFR-unregistrations. This approach
+ spreads the IFR database access over a period of time to allow other
+ applications to run smother.</p>
+ </desc>
+ </func>
+ <func>
+ <name>uninstall_event() -> Return</name>
+ <fsummary>Uninstall the inherited cosEvent interfaces</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation uninstalls the inherited cosEvent interfaces. If cosEvent
+ is in use this function may not be used. This function may only be used if
+ <c>cosNotificationApp:install_event/1/2</c> was used. If not, use
+ <c>cosEventApp:uninstall()</c> instead.</p>
+ </desc>
+ </func>
+ <func>
+ <name>uninstall_event(Seconds) -> Return</name>
+ <fsummary>Uninstall the inherited cosEvent interfaces</fsummary>
+ <type>
+ <v>Return = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation uninstalls the inherited cosEvent interfaces, using <c>Seconds</c>
+ delay between each block of IFR-unregistrations. If cosEvent
+ is in use this function may not be used. This function may only be used if
+ <c>cosNotificationApp:install_event/1/2</c> was used. If not, use
+ <c>cosEventApp:uninstall()</c> instead.</p>
+ </desc>
+ </func>
+ <func>
+ <name>start() -> Return</name>
+ <fsummary>Start the cosNotification application</fsummary>
+ <type>
+ <v>Return = ok | {error, Reason}</v>
+ </type>
+ <desc>
+ <p>This operation starts the cosNotification application.</p>
+ </desc>
+ </func>
+ <func>
+ <name>stop() -> Return</name>
+ <fsummary>Stop the cosNotification application</fsummary>
+ <type>
+ <v>Return = ok | {error, Reason}</v>
+ </type>
+ <desc>
+ <p>This operation stops the cosNotification application.</p>
+ </desc>
+ </func>
+ <func>
+ <name>start_global_factory() -> ChannelFactory</name>
+ <fsummary>Start a global channel factory as default</fsummary>
+ <type>
+ <v>ChannelFactory = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a
+ <seealso marker="CosNotifyChannelAdmin_EventChannelFactory">Event Channel Factory</seealso>
+ should be used for a multi-node Orber.
+ The Factory is used to create a new
+ <seealso marker="CosNotifyChannelAdmin_EventChannel">channel</seealso>. </p>
+ </desc>
+ </func>
+ <func>
+ <name>start_global_factory(Options) -> ChannelFactory</name>
+ <fsummary>Start a global channel factory with options</fsummary>
+ <type>
+ <v>Options = [Option]</v>
+ <v>Option = {pullInterval, Seconds} | {filterOp, Op} | {gcTime, Seconds} | {gcLimit, Anount} | {timeService, #objref}</v>
+ <v>ChannelFactory = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a
+ <seealso marker="CosNotifyChannelAdmin_EventChannelFactory">Event Channel Factory</seealso> and
+ should be used for a multi-node Orber.
+ The Factory is used to create a new
+ <seealso marker="CosNotifyChannelAdmin_EventChannel">channel</seealso>. </p>
+ <p></p>
+ <list type="bulleted">
+ <item><c>{pullInterval, Seconds}</c> - determine how often Proxy Pull
+ Consumers will check for new events with the client application. The
+ default value is 20 seconds.</item>
+ <item><c>{filterOp, OperationType}</c> - determine which type of Administrator
+ objects should be started, i.e., <c>'OR_OP'</c> or <c>'AND_OP'</c>.
+ The default value is <c>'OR_OP'</c>.</item>
+ <item><c>{timeService, TimeServiceObj | 'undefined'}</c> - to be able to use
+ Start and/or Stop QoS this option must be used. See the function <c>start_time_service/2</c>
+ in the <c>cosTime</c> application. The default value is <c>'undefined'</c>.</item>
+ <item><c>{filterOp, OperationType}</c> - determine which type of Administrator
+ objects should be started, i.e., <c>'OR_OP'</c> or <c>'AND_OP'</c>.
+ The default value is <c>'OR_OP'</c>.</item>
+ <item><c>{gcTime, Seconds}</c> - this option determines how often, for example, proxies
+ will garbage collect expired events. The default value is 60.</item>
+ <item><c>{gcLimit, Amount}</c> - determines how many events will be stored before, for
+ example, proxies will garbage collect expired events. The default value is 50. This
+ option is tightly coupled with the QoS property <c>MaxEventsPerConsumer</c>, i.e.,
+ the <c>gcLimit</c> should be less than <c>MaxEventsPerConsumer</c> and greater than 0.</item>
+ </list>
+ </desc>
+ </func>
+ <func>
+ <name>start_factory() -> ChannelFactory</name>
+ <fsummary>Start a channel factory as default</fsummary>
+ <type>
+ <v>ChannelFactory = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a
+ <seealso marker="CosNotifyChannelAdmin_EventChannelFactory">Event Channel Factory</seealso>.
+ The Factory is used to create a new
+ <seealso marker="CosNotifyChannelAdmin_EventChannel">channel</seealso>. </p>
+ </desc>
+ </func>
+ <func>
+ <name>start_factory(Options) -> ChannelFactory</name>
+ <fsummary>Start a channel factory with options</fsummary>
+ <type>
+ <v>Options = [Option]</v>
+ <v>Option = {pullInterval, Seconds} | {filterOp, Op} | {gcTime, Seconds} | {gcLimit, Amount} | {timeService, #objref}</v>
+ <v>ChannelFactory = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a
+ <seealso marker="CosNotifyChannelAdmin_EventChannelFactory">Event Channel Factory</seealso>.
+ The Factory is used to create a new
+ <seealso marker="CosNotifyChannelAdmin_EventChannel">channel</seealso>. </p>
+ </desc>
+ </func>
+ <func>
+ <name>stop_factory(ChannelFactory) -> Reply</name>
+ <fsummary>Terminate the target object</fsummary>
+ <type>
+ <v>ChannelFactory = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation stop the target channel factory.</p>
+ </desc>
+ </func>
+ <func>
+ <name>start_filter_factory() -> FilterFactory</name>
+ <fsummary>Start a filter factory</fsummary>
+ <type>
+ <v>FilterFactory = #objref</v>
+ </type>
+ <desc>
+ <p>This operation creates a
+ <seealso marker="CosNotifyFilter_FilterFactory">Filter Factory</seealso>.
+ The Factory is used to create a new
+ <seealso marker="CosNotifyFilter_Filter">Filter's</seealso> and
+ <seealso marker="CosNotifyFilter_MappingFilter">MappingFilter's</seealso>. </p>
+ </desc>
+ </func>
+ <func>
+ <name>stop_filter_factory(FilterFactory) -> Reply</name>
+ <fsummary>Terminate the target object</fsummary>
+ <type>
+ <v>FilterFactory = #objref</v>
+ <v>Reply = ok | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>This operation stop the target filter factory.</p>
+ </desc>
+ </func>
+ <func>
+ <name>create_structured_event(Domain, Type, Event, VariableHeader, FilterableBody, BodyRemainder) -> Reply</name>
+ <fsummary>Create a structured event</fsummary>
+ <type>
+ <v>Domain = string()</v>
+ <v>Type = string()</v>
+ <v>Event = string()</v>
+ <v>VariableHeader = [CosNotification::Property]</v>
+ <v>FilterableBody = [CosNotification::Property]</v>
+ <v>BodyRemainder = #any data-type</v>
+ <v>Reply = CosNotification::StructuredEvent | {'EXCEPTION', E}</v>
+ </type>
+ <desc>
+ <p>An easy way to create a structured event is to use this function.
+ Simple typechecks are performed and if one of the arguments is not
+ correct a 'BAD_PARAM' exception is thrown.</p>
+ </desc>
+ </func>
+ <func>
+ <name>type_check() -> Reply</name>
+ <fsummary>Return the value of the configuration parameter type_check</fsummary>
+ <type>
+ <v>Reply = true | false</v>
+ </type>
+ <desc>
+ <p>This operation returns the value of the configuration parameter
+ <c>type_check</c>.</p>
+ </desc>
+ </func>
+ </funcs>
+
+</erlref>
+
diff --git a/lib/cosNotification/doc/src/eventstructure.gif b/lib/cosNotification/doc/src/eventstructure.gif
new file mode 100644
index 0000000000..879c96f980
--- /dev/null
+++ b/lib/cosNotification/doc/src/eventstructure.gif
Binary files differ
diff --git a/lib/cosNotification/doc/src/eventstructure.ps b/lib/cosNotification/doc/src/eventstructure.ps
new file mode 100644
index 0000000000..a9ace9a703
--- /dev/null
+++ b/lib/cosNotification/doc/src/eventstructure.ps
@@ -0,0 +1,2462 @@
+%!PS-Adobe-3.0
+%%Creator: (ImageMagick)
+%%Title: (eventstructure.ps)
+%%CreationDate: (Tue Apr 18 13:35:41 2000)
+%%BoundingBox: 131 284 481 508
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Orientation: Portrait
+%%PageOrder: Ascend
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%PageOrientation: Portrait
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/buffer 512 string def
+/byte 1 string def
+/color_packet 3 string def
+/pixels 768 string def
+
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 gt
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 gt
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 gt
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 gt
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
+ % hex color packets.
+ %
+ gsave
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Helvetica findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+ showpage
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 131 284 481 508
+%%BeginData:
+DisplayImage
+131 284
+350.000000 224.000000
+12
+350 224
+1
+1
+1
+8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99553300
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000335599ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff990000000000224444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444422000000000099ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffee00eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd11
+000033aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa33000011dd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa00aaffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff66000044eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee44000066ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffaa00aaffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff770077ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffee000011eeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee110000eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770077ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff330033ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffbb000066ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff660000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffff33
+0033ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000
+00eeffffffffffffffffffffffffffffffffffffffffffffffffffffff88000077ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffeebbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77000099ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee000000eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffaa440044aaffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa00ff
+ffffffffffffffffffffffffffffffffffffff22ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffaa440044aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff7777007777ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777007777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff33bb00bb33ffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee44004400ee441155ccffbb22770077440077ff221166ffaa33
+ffbb22660077ffffffffffffbb22660077ff221166ffbb22770077440077ee440044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb00bb33ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00ff00ff00eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+66ccffdd0044ccffcc22ffff00ffee00ffee00ffaaff00ffff00ffff00ffdd00ffffffff
+ffffff00ffdd00ffaaff00ffff00ffee00ffee0077000000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee00ff00ff00eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff0000eeffff00
+ffff00ffff00ffff00ff779900ffff00ffff00ffff00ffffffffffffff00ffff00ff7799
+00ffff00ffff00ffff0044eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ff00ff7777ffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff2277ffff003388ffee33ffff00ffff00ffff0088
+33ff00ffff00ffff00ffff00ffffffffffffff00ffff008833ff00ffff00ffff00ffff00
+6677ffeebbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffff77
+77ff00ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb
+ff00ffbb33ffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffbb22006633b1552222ccff550077cc0077aa008500772277bb00ccbb00dd
+aa00eeffffffffffbb00ddaa008f00772277550077cc0077aa00b1220066ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffff33bbff00ffbb33ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee00ffff00ffff00eeffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffee00ffff00ffff00eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffaa44ffff00ffff44aaffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff000000000077ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffaa44ffff00ffff44aaffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9999ffff00ffff9999ffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff9999ffff00ff
+ff9999ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+eebbffffffffffffffffffffffffffffffffffffffffffffffeebbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffdd0011000022ffff22ffffffffffffffffffffffffffffaa00ffffffee00ddffff
+aa00eeffffffffffffffffffffffffaa00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffaaff
+ffffffffffffffffffffffffffffffffff00ffffffff00ffffffff00ffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffff00ffffbbbbffaa33ff6611775555ee44
+0044ffee44004400ffffffff00ffffffff00ffee440044ff221166ffee44004400ffee44
+004499227777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffffffffffffffffff00000000bbffff00ffff8866aaff77000000bb66ccffdd00ffff
+ffff000000000000ff77000000bbaaff00ff66ccffdd00ff77000000bb00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
+00ffffeeddffff00ffffff00ccff44eeffffff00ffffff00ffffffff00ffffffff00ff44
+eeffffff779900ff00ffffff00ff44eeffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffffffffffffffff00ffffffffffff00ffff
+88bb33ff6677ffeebb2277ffff00ffffffff00ffffffff00ff6677ffee6433ff00ff2277
+ffff00ff6677ffeebb00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffee22ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffffffffffbb0000bbffffffbb00ccbb66ff004496220066ffbb
+22006633ddffffbb0099eeddaa00ddcc2200669900772277bb22006633ddcc220066aa00
+55ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff440000881177cc448f22661199ffee440044ffffffffffffbb22
+660077ff221166ffbb22770077440077ffee440044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffff22dddd99ff00eeaa22ff77000000bbffffffffffff00ffdd00ffaaff00ffff00
+ffee00ffee00ff77000000bbffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff887799ffff00
+ffff00ff44eeffffffffffffffffff00ffff00ff779900ffff00ffff00ffff00ff44eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffee2288ffff00ffcc44ff6677ffeebbff
+ffffffffff00ffff008833ff00ffff00ffff00ffff00ff6677ffeebbffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff2266ffff77ccffff002222ccffcc220066ffffffffffffbb00ddaa008f
+00772277550077cc0077aa00ddcc220066ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff99ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff7744ccffffff00ffffffff
+ffffffffff000000000077ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff1100eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffccffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffff9999ffff00ffff9999ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa44ffff00ffff44aaffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffee00ffff00ffff00eeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffff33bbff
+00ffbb33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7777ff00ff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffddffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffee22ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee00ff00ff00eeffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee440044ff4411eeee55df440044ffbb22660077440000ffffff
+ffffffbb22660077ff221166ffbb22770077440077ee440044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb00bb33ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+77000000bbee22ddddaa77000000bbff00ffdd00ff00ffffffffffffffff00ffdd00ffaa
+ff00ffff00ffee00ffee0077000000bbffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777007777ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff44eeffffffff997799ff
+44eeffffffff00ffff00ff00ffffffffffffffff00ffff00ff779900ffff00ffff00ffff
+0044eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffaa440044aaffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff6677ffeebbffee3399ff6677ffeebbff00ffff00
+ff00ffffffffffffffff00ffff008833ff00ffff00ffff00ffff006677ffeebbffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee000000eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffcc220066ffffff66ddffcc220066ffbb00ddaa00ee2266ffffffffffffbb
+00ddaa008f00772277550077cc0077aa00b1220066ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff330033ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff770077ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff000000000077ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffaa00aaffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+bbffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffdd0011000022ffffffffffffffffffffffffffffffffffff
+ddffffffee00ddffffaa00eeffffffffffffffffffffffffffaa00ffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffaaffffffffffffffffffffffffffffffffffee22ffffffff00ffffffff
+00ffffffffffffffffffffffffffffff00ffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffaa00aaffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffddbbff44
+11eeee55df440044ffbb22660077ff440000ffffff00ffffffff00ffee440044ffff2211
+66ffee44004400ee440044ff99227777ffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770077ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00000000bbffee22ddddaa77000000bbff
+00ffdd00ffff00ffffffff000000000000ff77000000bbffaaff00ff66ccffdd00770000
+00bbff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffff33
+0033ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffeeddffff997799ff44eeffffffff00ffff00ffff00ffffff
+ff00ffffffff00ff44eeffffffff779900ff00ffffff0044eeffffffff00ffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffeebbffffffffffee2233ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffffffffffeebbffffffffffee2233ffffffffffffffffffffffffffffffffbb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee000000eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffeebbffee3399ff6677ffeebbff00ffff00ffff00ffffffff00ffffffff00ff6677
+ffeebb8833ff00ff2277ffff006677ffeebbff00ffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffaa
+00ffffffffff66ee77ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffaa
+00ffffffffff66ee77ffffffffffffffffffffffffffffffcc00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffaa440044aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffbb0077110000ddffff66ddff
+cc220066ffbb00ddaa00eeff2266ffffbb0099eeddaa00ddcc220066ff9900772277bb22
+006633b1220066ffaa0055ffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffff00ffffffffff11ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffffffffffffff00ffffffffff11ffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777007777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffee441155ccff00660077ff440000bbffffffffffbb22660077ff
+221166ffbb22770077440077ee440044ffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffffee441155ccff00660077ff440000bbffffffffff4411eeee55ee
+221166ffff00ff9900bb0000ee440044ffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb00bb33ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+44ccffcc22ff00eecc00ffff00ffffffffffffffff00ffdd00ffaaff00ffff00ffee00ff
+ee0077000000bbffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+44ccffcc22ff00eecc00ffff00ffffffffffffffee22ddddaaffaaff00ffff00ffff00ff
+ff0077000000bbffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee00ff00ff00eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffff00eeffff00ff00ffff00
+ffff00ffffffffffffffff00ffff00ff779900ffff00ffff00ffff0044eeffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffff00eeffff00ff00ffff00
+ffff00ffffffffffffffff997799ffff779900ffff00ffff00ffff0044eeffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffff3388ffee33ff00ffff00ffff00ffffffffffffff
+ff00ffff008833ff00ffff00ffff00ffff006677ffeebbffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffff3388ffee33ff00ffff00ffff00ffffffffffffff
+ffee3399ff8833ff00ffff00ffff00ffee006677ffeebbffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffff77
+77ff00ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffcc552222ccaa00ddaa00eebb0000ffffffffffffbb00ddaa008f00772277
+550077cc0077aa00b1220066ffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffcc552222ccaa00ddaa00eebb0000ffffffffffffffff66ddff9900772277
+bb00ccff33118844cc220066ffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffff33bbff00ffbb33ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffee00ffff00ffff00eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+000000000077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffff
+000000000077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffaa44ffff00ffff44aaffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff9999ffff00ff
+ff9999ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffeebbffffffffffee2233ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffffffffffeebbffffffffffee2233ffffffffffffffffffffffffffffffffbb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffaa
+00ffffffffff66ee77ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffaa
+00ffffffffff66ee77ffffffffffffffffffffffffffffffcc00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffff00ffffffffff11ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffffffffffffff00ffffffffff11ffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffee441155ccff00660077ff440000bbffffffffffbb22660077ff
+221166ffbb22770077440077ee440044ffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffffee441155ccff00660077ff440000bbffffffffff4411eeee55ee
+221166ffff00ff9900bb0000ee440044ffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+44ccffcc22ff00eecc00ffff00ffffffffffffffff00ffdd00ffaaff00ffff00ffee00ff
+ee0077000000bbffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+44ccffcc22ff00eecc00ffff00ffffffffffffffee22ddddaaffaaff00ffff00ffff00ff
+ff0077000000bbffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeebbffffffffbbffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffeebbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffff00eeffff00ff00ffff00
+ffff00ffffffffffffffff00ffff00ff779900ffff00ffff00ffff0044eeffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffff00eeffff00ff00ffff00
+ffff00ffffffffffffffff997799ffff779900ffff00ffff00ffff0044eeffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffff4400aaffff9944eeffffffffffffffffff22ff
+ffffffffffaa00ffffffcc00ffffffffffffffffffee00ddffffaa00eeffffffffffffff
+ffffffffffaa00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffff3388ffee33ff00ffff00ffff00ffffffffffffff
+ff00ffff008833ff00ffff00ffff00ffff006677ffeebbffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffff3388ffee33ff00ffff00ffff00ffffffffffffff
+ffee3399ff8833ff00ffff00ffff00ffee006677ffeebbffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffff7766ffffcc99ffffffffffffffffffffffffffffffffffff00ffffff
+ff00ffffffffffffffffffff00ffffffff00ffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffcc552222ccaa00ddaa00eebb0000ffffffffffffbb00ddaa008f00772277
+550077cc0077aa00b1220066ffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffcc552222ccaa00ddaa00eebb0000ffffffffffffffff66ddff9900772277
+bb00ccff33118844cc220066ffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffdd00
+ddff77ffffff221166ff9922775033ffff221166ffff005511aaff00ffee440044ffffff
+ffff00ffffffff00ffee440044ff221166ffee44004400ffee44004499227777ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffffffffff6677ee77ffffffaaff00ff
+ff00ffff00ffffaaff00ffff00eebb22ff00ff77000000bbffffffff000000000000ff77
+000000bbaaff00ff66ccffdd00ff77000000bb00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+000000000077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffff
+000000000077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffffffffdd1188ddffffff779900ffff00ffff00ffff779900
+ffff00ffff00ff00ff44eeffffffffffffff00ffffffff00ff44eeffffff779900ff00ff
+ffff00ff44eeffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ffffffffffff4444ffffff8833ff00ffff00ffff00ff8833ff00ffff00ffee44ff00ff66
+77ffeebbffffffff00ffffffff00ff6677ffee6433ff00ff2277ffff00ff6677ffeebb00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffbb99ffff
+ff9900772277aa0055bb00cc9900772277ff222244ccbb00cccc220066ffffffffbb0099
+eeddaa00ddcc2200669900772277bb22006633ddcc220066aa0055ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffdd22ffdd22dd22ffdd22ffdd
+22ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99
+99ffff00ffff9999ffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffff9999ffff00ffff9999ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffaa44ffff00ffff44aaffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa44ffff00ffff44aaffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee00ffff00ffff00eeffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffee00ffff00ffff00eeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff33bbff00ffbb33ffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffff33bbff
+00ffbb33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ff00
+ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffeebbffffffffffee2233ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffffffffffeebbffffffffffee2233ffffffffffffffffffffffffffffffffbb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7777ff00ff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffaa
+00ffffffffff66ee77ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffaa
+00ffffffffff66ee77ffffffffffffffffffffffffffffffcc00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee00ff00ff00eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffff00ffffffffff11ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffffffffffffff00ffffffffff11ffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee00ff00ff00eeffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff33bb00bb33ffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffee441155ccff00660077ff440000bbffffffffffbb22660077ff
+221166ffbb22770077440077ee440044ffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffffee441155ccff00660077ff440000bbffffffffff4411eeee55ee
+221166ffff00ff9900bb0000ee440044ffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb00bb33ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777007777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+44ccffcc22ff00eecc00ffff00ffffffffffffffff00ffdd00ffaaff00ffff00ffee00ff
+ee0077000000bbffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+44ccffcc22ff00eecc00ffff00ffffffffffffffee22ddddaaffaaff00ffff00ffff00ff
+ff0077000000bbffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777007777ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffaa440044aaffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffff00eeffff00ff00ffff00
+ffff00ffffffffffffffff00ffff00ff779900ffff00ffff00ffff0044eeffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffff00eeffff00ff00ffff00
+ffff00ffffffffffffffff997799ffff779900ffff00ffff00ffff0044eeffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffaa440044aaffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffee000000eeffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff88000077ffffffffffffff3388ffee33ff00ffff00ffff00ffffffffffffff
+ff00ffff008833ff00ffff00ffff00ffff006677ffeebbffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffff3388ffee33ff00ffff00ffff00ffffffffffffff
+ffee3399ff8833ff00ffff00ffff00ffee006677ffeebbffffffffffffffffffffffffff
+ffffffffff77000099ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee000000eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+330033ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb000066ff
+ffffffffffffcc552222ccaa00ddaa00eebb0000ffffffffffffbb00ddaa008f00772277
+550077cc0077aa00b1220066ffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffcc552222ccaa00ddaa00eebb0000ffffffffffffffff66ddff9900772277
+bb00ccff33118844cc220066ffffffffffffffffffffffffffffffffffffff660000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff330033ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff770077ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee000011eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffee110000eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff770077ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa00aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff66000044eeffffffffffffffffffffffffffffffffffffff
+000000000077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffff
+000000000077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffee44000066ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffaa00aaffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee00eeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffdd11000033aaffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa33
+000011ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000099ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff9900000000000a1313131313131313131313131313131313131313
+131313131313131313131313131313131313131313131313131313131313131313131313
+131313131313131309091313131313131313131313131313131313131313131313131313
+131313131313131313131313131313131313131313131313131313131313131313131313
+131307000000000099ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffee00eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd11
+000033aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa33000011dd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa00aaffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff66000044eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee44000066ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffaa00aaffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff770077ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffee000011eeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee110000eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770077ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff330033ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffbb000066ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff660000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffff33
+0033ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000
+00eeffffffffffffffffffffffffffffffffffffffffffffffffffffff88000077ffffff
+ffffffffffee2233ffffffeebbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffee2233ffffffeebbffffffffffffffffffffffffffffffffffbbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77000099ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee000000eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffaa440044aaffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffff66ee77ffff
+ffaa00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff66ee77ffff
+ffaa00ffffffffffffffffffffffffffffffffcc00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffaa440044aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff7777007777ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffff11ffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffff11ffffffffffff00ffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777007777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff33bb00bb33ffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffff440000bbee44004400ffffffffffbb22660077ffff221166ffbb
+22770077440077ee440044ffffffffffffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffff440000bbee44004400ffffffffff4411eeee55eeff221166ffff
+00ff9900bb0000ee440044ffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb00bb33ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00ff00ff00eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ff00ffff66ccffdd00ffffffffffff00ffdd00ffffaaff00ffff00ffee00ffee00770000
+00bbffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ff00ffff66ccffdd00ffffffffffee22ddddaaffffaaff00ffff00ffff00ffff00770000
+00bbffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee00ff00ff00eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffff00ffff00ffffff00ff
+ffffffffff00ffff00ffff779900ffff00ffff00ffff0044eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffff00ffff00ffffff00ff
+ffffffffff997799ffffff779900ffff00ffff00ffff0044eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ff00ff7777ffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffff00ffff2277ffff00ffffffffffff00ffff00ff
+8833ff00ffff00ffff00ffff006677ffeebbffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffff00ffff2277ffff00ffffffffffffee3399ffff
+8833ff00ffff00ffff00ffee006677ffeebbffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffff77
+77ff00ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb
+ff00ffbb33ffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffbb0000ffbb22006633ddffffffffbb00ddaa00ee9900772277550077cc00
+77aa00b1220066ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffbb0000ffbb22006633ddffffffffffff66ddffff9900772277bb00ccff33
+118844cc220066ffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffff33bbff00ffbb33ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee00ffff00ffff00eeffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffee00ffff00ffff00eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffaa44ffff00ffff44aaffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffff0000000000
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff0000000000
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffaa44ffff00ffff44aaffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff9999ffff00ffff9999ffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff9999ffff00ff
+ff9999ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffee2233ffffffeebbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffee2233ffffffeebbffffffffffffffffffffffffffffffffffbbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffff66ee77ffff
+ffaa00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff66ee77ffff
+ffaa00ffffffffffffffffffffffffffffffffcc00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffff11ffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffff11ffffffffffff00ffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffff440000bbee44004400ffffffffffbb22660077ffff221166ffbb
+22770077440077ee440044ffffffffffffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffff440000bbee44004400ffffffffff4411eeee55eeff221166ffff
+00ff9900bb0000ee440044ffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ff00ffff66ccffdd00ffffffffffff00ffdd00ffffaaff00ffff00ffee00ffee00770000
+00bbffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ff00ffff66ccffdd00ffffffffffee22ddddaaffffaaff00ffff00ffff00ffff00770000
+00bbffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffbbffffffffffffffffffffffffffffffffffeebbffffffffffbbffffffffffffffffff
+ffffffffffffffffffffffffffffffeebbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffff00ffff00ffffff00ff
+ffffffffff00ffff00ffff779900ffff00ffff00ffff0044eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffff00ffff00ffffff00ff
+ffffffffff997799ffffff779900ffff00ffff00ffff0044eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffffdd0011000022ff22ffcc00ffffddffffffffff
+ffffffffffffffffffaa00ffffffffcc00ffffffffffffffff440033002299ffffffffff
+ffffffffffaa00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffff00ffff2277ffff00ffffffffffff00ffff00ff
+8833ff00ffff00ffff00ffff006677ffeebbffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffff00ffff2277ffff00ffffffffffffee3399ffff
+8833ff00ffff00ffff00ffee006677ffeebbffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffff00ffffffaaffffffff00ffee22ffffffffffffffffffffffffffffff
+00ffffffffff00ffffffffffffffffff00ffffbb00ffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffbb0000ffbb22006633ddffffffffbb00ddaa00ee9900772277550077cc00
+77aa00b1220066ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffbb0000ffbb22006633ddffffffffffff66ddffff9900772277bb00ccff33
+118844cc220066ffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ff
+ffbbbbaa33ffff00ff440000ee440044ff99227777221166ffff005511aaffff00ffee44
+0044ffffffff00ffffaa33ffee441155ccffee44004400881177cc44eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffffffff00000000bbff00ffff00ffff
+00ff77000000bbff00ffffaaff00ffff00eebb22ffff00ff77000000bbffffff00777722
+99ff44ccffcc22ff66ccffdd00ff22dddd99ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffff0000000000
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff0000000000
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffffff00ffffeeddff00ffff00ffff00ff44eeffffffff00ff
+ff779900ffff00ffff00ffff00ff44eeffffffffffff00ffffee00ff00eeffff00ff00ff
+ffff00ff887799ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ffffffff00ffffffffff00ffff00ffff00ff6677ffeebbff00ff8833ff00ffff00ffee44
+ffff00ff6677ffeebbffffff00ffffee00ff3388ffee33ff2277ffff00ffee2288ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffbb0000bbffffbb
+00ccbb00ccff2266cc220066ffaa00559900772277ff222244ccffbb00cccc220066ffff
+ffbb0033224499ffcc552222ccffbb22006633ddff77ccffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff99ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffeebbffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+44ccffffffffffffffffffffffffffffffffffffffdd0011000022ffffffffffffffffff
+ffffffffffffffffffddffffff440033002299ffffffffffffffffffffaa00ffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffaaffffffffffffffffffffffffffffffffffee22
+ffffffff00ffffbb00ffffffffffffffffffffff00ffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffddbbff4411eeee55df440044ffbb22660077ff440000ffffff00ffffaa33ff
+ffee441155ccee44004400881177cc44eeffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000bbffee22
+ddddaa77000000bbff00ffdd00ffff00ffffffff0077772299ffff44ccffcc2266ccffdd
+00ff22dddd99ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffeeddffff997799ff44eeffffffff00
+ffff00ffff00ffffffff00ffffee00ffff00eeffff0000ffffff00ff887799ffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffeebbffee3399ff6677ffeebbff00ffff00ffff00ffffffff
+00ffffee00ffff3388ffee332277ffff00ffee2288ffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb0077
+110000ddffff66ddffcc220066ffbb00ddaa00eeff2266ffffbb0033224499ffffcc5522
+22ccbb22006633ddff77ccffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7744ccffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffdd22ffdd22dd22ffdd22ffdd
+22ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffff9999ffff00ffff9999ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa44ffff00ffff44aaffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffee00ffff00ffff00eeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffff33bbff
+00ffbb33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffee2233ffffffeebbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffee2233ffffffeebbffffffffffffffffffffffffffffffffffbbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7777ff00ff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffff66ee77ffff
+ffaa00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff66ee77ffff
+ffaa00ffffffffffffffffffffffffffffffffcc00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffff11ffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffff11ffffffffffff00ffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee00ff00ff00eeffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffff440000bbee44004400ffffffffffbb22660077ffff221166ffbb
+22770077440077ee440044ffffffffffffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffff440000bbee44004400ffffffffff4411eeee55eeff221166ffff
+00ff9900bb0000ee440044ffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff33bb00bb33ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ff00ffff66ccffdd00ffffffffffff00ffdd00ffffaaff00ffff00ffee00ffee00770000
+00bbffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ff00ffff66ccffdd00ffffffffffee22ddddaaffffaaff00ffff00ffff00ffff00770000
+00bbffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777007777ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffff00ffff00ffffff00ff
+ffffffffff00ffff00ffff779900ffff00ffff00ffff0044eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffff00ffff00ffffff00ff
+ffffffffff997799ffffff779900ffff00ffff00ffff0044eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffaa440044aaffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffff00ffff2277ffff00ffffffffffff00ffff00ff
+8833ff00ffff00ffff00ffff006677ffeebbffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffff00ffff2277ffff00ffffffffffffee3399ffff
+8833ff00ffff00ffff00ffee006677ffeebbffffffffffffffffffffffffffffffffffff
+ffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee000000eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffbb0000ffbb22006633ddffffffffbb00ddaa00ee9900772277550077cc00
+77aa00b1220066ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffbb0000ffbb22006633ddffffffffffff66ddffff9900772277bb00ccff33
+118844cc220066ffffffffffffffffffffffffffffffffffffffffffffffff770000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff330033ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff770077ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffff0000000000
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff0000000000
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffaa00aaffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff77000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99
+99ffff00ffff9999ffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff770000
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffaa44ffff00ffff44aaffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee00ffff00ffff00eeffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff33bbff00ffbb33ffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff770000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ff00
+ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffeebbffffffffffff
+ffffffffffffffffffffffffffffffee2233ffffffffffeebbffffffffffffffffffffff
+eebbffffffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffeebbffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffaa44ff00ff44aaffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff22ffffffffffffffffffaa00ffffffffffffffffffffffffffffffff
+ffffffffff66ee77ffffffffffaa00ffffffffffffffffffffffaa00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffffffdd0011002299ffffffffffffffffff
+ffffffffffffffffffffff22ffffffffffffffff22ffffffffffffffffffffffffffff44
+0033002299ffffffffffffffffffffaa00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee00ff00ff00eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff11ffffffff
+ffffffff00ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff770000bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffff00ffffbb00ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffbb00ffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff33bb00bb33ffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff99227777ee440044bb22770077440077ffff221166ffaa33ffbb22660077ee44004400
+ee440044ff99227777ffffffffffee441155ccff440000bbffffffffffff005511aaee44
+1155ccee44004400ff881177cc44eeffffffffffffffffffffffffffffffffffffffff77
+0000bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffff00ffff9933ffee440044ffbb22770077440077ff221166ffaa33ffbb22660077ffaa
+33ffbb22660077ee44114411ffffffff00ffffaa33ffee441155ccffee44004400881177
+cc44eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777007777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff77000000bb
+00ffee00ffee00ffffaaff00ffff00ffff00ffdd0066ccffdd0077000000bbff00ffffff
+ffffffff44ccffcc22ffff00ffffffffffffffff00eebb2244ccffcc2266ccffdd00ffff
+22dddd99ffffffffffffffffffffffffffffffffffffffffff770000bbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00773377eeff7700
+0000bbff00ffee00ffee00ffaaff00ffff00ffff00ffdd00ffff00ffff00ffdd007744ff
+33ddffffffff0077772299ff44ccffcc22ff66ccffdd00ff22dddd99ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffaa440044aaffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffff44eeffffff00ffff00ffff00ffff77
+9900ffff00ffff00ffff0000ffffff0044eeffffffff00ffffffffffffff00eeffff00ff
+ff00ffffffffffffffff00ffff0000eeffff0000ffffff00ffff887799ffffffffffffff
+ffffffffffffffffffffffffffffff770000bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffffff00ff7755ffff44eeffffffff00ffff00ffff
+00ff779900ffff00ffff00ffff00ffff00ffff00ffff00aa22ee00ffffffffff00ffffee
+00ff00eeffff00ff00ffffff00ff887799ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffee000000eeffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff88000077ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffff6677ffeebb00ffff00ffff00ff8833ff00ffff00ffff00ffff
+002277ffff006677ffeebbff00ffffffffffffff3388ffee33ffff00ffffffffffffffff
+00ffee443388ffee332277ffff00ffffee2288ffffffffffffffffffffffffffffffffff
+ffffffffff77000099ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffff00ffff3377ff6677ffeebbff00ffff00ffff008833ff00ffff00ffff
+00ffff00ffff00ffff00ffff00ff775599ffffffffff00ffffee00ff3388ffee33ff2277
+ffff00ffee2288ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+330033ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb000066ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa0055
+ffcc220066550077cc0077aa00dd9900772277bb00ccbb00ddaa00af22006633b1220066
+ffaa0055ffffffffffffcc552222ccffbb0000ffffffffffffff222244cccc552222ccbb
+22006633ddffff77ccffffffffffffffffffffffffffffffffffffffffffff660000bbff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffbb00aa
+eeee1188cc220066ff550077cc0077aa008500772277bb00ccbb00ddaa00eebb00ccbb00
+ddaa009f224455aaffffffbb0033224499ffcc552222ccffbb22006633ddff77ccffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff770077ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee000011eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99ffff
+ffffffffffffffffffffffffffffffffffffffffee110000eeffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99ddddbb00ffff
+ffffffffffffffffffffffffffffffffffffffffff99ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa00aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff66000044eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff000000000077ffffffffffffffff00
+0000000077ffffffffffffffffffffffffffffffff7744ccffffffffffffffffffffffff
+ffffffffffffffffffee44000066ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff11bbff9977ffffffffffffffffffffffff
+ffffffffffffffffff7744ccffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee00eeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffdd11000033aaffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa33
+000011ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc221177ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000099ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff995544444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444433445599ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+%%EndData
+%%PageTrailer
+%%Trailer
+%%BoundingBox: 131 284 481 508
+%%EOF
diff --git a/lib/cosNotification/doc/src/fascicules.xml b/lib/cosNotification/doc/src/fascicules.xml
new file mode 100644
index 0000000000..0678195e07
--- /dev/null
+++ b/lib/cosNotification/doc/src/fascicules.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE fascicules SYSTEM "fascicules.dtd">
+
+<fascicules>
+ <fascicule file="part" href="part_frame.html" entry="no">
+ User's Guide
+ </fascicule>
+ <fascicule file="ref_man" href="ref_man_frame.html" entry="yes">
+ Reference Manual
+ </fascicule>
+ <fascicule file="part_notes" href="part_notes_frame.html" entry="no">
+ Release Notes
+ </fascicule>
+ <fascicule file="" href="../../../../doc/print.html" entry="no">
+ Off-Print
+ </fascicule>
+</fascicules>
+
diff --git a/lib/cosNotification/doc/src/make.dep b/lib/cosNotification/doc/src/make.dep
new file mode 100644
index 0000000000..031a2b3e98
--- /dev/null
+++ b/lib/cosNotification/doc/src/make.dep
@@ -0,0 +1,48 @@
+# ----------------------------------------------------
+# >>>> Do not edit this file <<<<
+# This file was automaticly generated by
+# /home/otp/bin/docdepend
+# ----------------------------------------------------
+
+
+# ----------------------------------------------------
+# TeX files that the DVI file depend on
+# ----------------------------------------------------
+
+book.dvi: CosNotification.tex CosNotification_AdminPropertiesAdmin.tex \
+ CosNotification_QoSAdmin.tex CosNotifyChannelAdmin_ConsumerAdmin.tex \
+ CosNotifyChannelAdmin_EventChannel.tex CosNotifyChannelAdmin_EventChannelFactory.tex \
+ CosNotifyChannelAdmin_ProxyConsumer.tex CosNotifyChannelAdmin_ProxyPullConsumer.tex \
+ CosNotifyChannelAdmin_ProxyPullSupplier.tex \
+ CosNotifyChannelAdmin_ProxyPushConsumer.tex \
+ CosNotifyChannelAdmin_ProxyPushSupplier.tex \
+ CosNotifyChannelAdmin_ProxySupplier.tex CosNotifyChannelAdmin_SequenceProxyPullConsumer.tex \
+ CosNotifyChannelAdmin_SequenceProxyPullSupplier.tex \
+ CosNotifyChannelAdmin_SequenceProxyPushConsumer.tex \
+ CosNotifyChannelAdmin_SequenceProxyPushSupplier.tex \
+ CosNotifyChannelAdmin_StructuredProxyPullConsumer.tex \
+ CosNotifyChannelAdmin_StructuredProxyPullSupplier.tex \
+ CosNotifyChannelAdmin_StructuredProxyPushConsumer.tex \
+ CosNotifyChannelAdmin_StructuredProxyPushSupplier.tex \
+ CosNotifyChannelAdmin_SupplierAdmin.tex CosNotifyComm_NotifyPublish.tex \
+ CosNotifyComm_NotifySubscribe.tex CosNotifyFilter_Filter.tex \
+ CosNotifyFilter_FilterAdmin.tex CosNotifyFilter_FilterFactory.tex \
+ CosNotifyFilter_MappingFilter.tex book.tex \
+ ch_BNF.tex ch_QoS.tex ch_contents.tex ch_example.tex \
+ ch_install.tex ch_introduction.tex ch_system.tex \
+ cosNotificationApp.tex part.tex ref_man.tex
+
+# ----------------------------------------------------
+# Source inlined when transforming from source to LaTeX
+# ----------------------------------------------------
+
+book.tex: ref_man.xml
+
+# ----------------------------------------------------
+# Pictures that the DVI file depend on
+# ----------------------------------------------------
+
+book.dvi: eventstructure.ps
+
+book.dvi: notificationFlow.ps
+
diff --git a/lib/cosNotification/doc/src/notes.gif b/lib/cosNotification/doc/src/notes.gif
new file mode 100644
index 0000000000..e000cca26a
--- /dev/null
+++ b/lib/cosNotification/doc/src/notes.gif
Binary files differ
diff --git a/lib/cosNotification/doc/src/notes.xml b/lib/cosNotification/doc/src/notes.xml
new file mode 100644
index 0000000000..c66be87c7c
--- /dev/null
+++ b/lib/cosNotification/doc/src/notes.xml
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotification Release Notes</title>
+ <prepared></prepared>
+ <docno></docno>
+ <approved></approved>
+ <checked></checked>
+ <date>2000-01-31</date>
+ <rev>A</rev>
+ <file>notes.xml</file>
+ </header>
+
+ <section>
+ <title>cosNotification 1.1.12</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>
+ The documentation is now built with open source tools (xsltproc and fop)
+ that exists on most platforms. One visible change is that the frames are removed.</p>
+ <p>
+ Own Id: OTP-8201 Aux Id:</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.11</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Obsolete guards, e.g. record vs is_record, has been changed
+ to avoid compiler warnings.</p>
+ <p>Own id: OTP-7987</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.10</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Updated file headers.</p>
+ <p>Own id: OTP-7837 Aux Id:</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.9</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>Documentation source included in open source releases.</p>
+ <p>Own id: OTP-7595 Aux Id:</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.8</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>The CosNotification proxy objects ignored the gcLimit option, instead
+ the gcTime value was used.</p>
+ <p>Own id: OTP-7553 Aux Id:</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.7</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Updated file headers.</p>
+ <p>Own id: OTP-7011</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.6</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>The documentation source has been converted from SGML to XML.</p>
+ <p>Own id: OTP-6754</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.5</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Minor Makefile changes.</p>
+ <p>Own id: OTP-6701</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.4</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Removed some unused code.</p>
+ <p>Own id: OTP-6527</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.3</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>A user can now define the QoS EventReliability to be
+ Persistent. Note, this is only a lightweight version
+ and events will be lost if a proxy is terminated.</p>
+ <p>Own id: OTP-5923</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.2</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>Possible to configure cosNotification not to type check,
+ by invoking corba_object:is_a/2, supplied IOR:s. When
+ a type check fails, the feedback has been improved.</p>
+ <p>Own id: OTP-5823 Aux Id: seq10143</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1.1</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>The app-file contained duplicated modules.</p>
+ <p>Own id: OTP-4976</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.1</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>The stub/skeleton-files generated by IC have been improved,
+ i.e., depending on the IDL-files, reduced the size of the
+ erl- and beam-files and decreased dependencies off Orber's
+ Interface Repository. It is necessary to re-compile all IDL-files
+ and use COS-applications, including Orber, compiled with
+ IC-4.2.</p>
+ <p>Own id: OTP-4576</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.0.6</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>The exception CosNotifyFilter::InvalidValue, raised by the operation
+ CosNotifyFilter::MappingFilter::add_mapping_constraints, did not contain
+ correct data in the body. Hence, it was not possible to pass this
+ exception to another ORB.</p>
+ <p>Own Id: OTP-4412</p>
+ </item>
+ <item>
+ <p>It was not possible to set the QoS property PacingInterval to zero and
+ the default value was not compliant with the OMG specification. The
+ default value for MaximumBatchSize have also been changed du to the
+ same reason.</p>
+ <p>Own Id: OTP-4413, OTP-4414</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>The default value, for the QoS properties PacingInterval and MaximumBatchSize,
+ have been changed to zero (i.e. no timeout) and 1 respectively, which is
+ compliant with the OMG specification.</p>
+ <p>Own Id: OTP-4413, OTP-4414</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.0.5</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>If one tries to set an unavailable/incorrect property or property value, an
+ exception is thrown. In some cases the exception was not correct, which
+ would cause problems if communicating via IIOP.</p>
+ <p>Own Id: OTP-4340</p>
+ </item>
+ <item>
+ <p>When using Filter's, with the QoS OrderPolicy set to FifoOrder,
+ and passing a sequence of structured events, they could be
+ delivered in the wrong order.</p>
+ <p>Own Id: OTP-4272</p>
+ </item>
+ <item>
+ <p>If Filter's where attached to Supplier proxies it could cause
+ the Proxy to terminate.</p>
+ <p>Own Id: OTP-4272</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.0.4</title>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>When passing event sequences, the PushSuppliers and PullSuppliers
+ could crash if the objects had Filter objects associated and
+ only a subset of the sequences where approved. </p>
+ <p>Own Id: OTP-4099</p>
+ </item>
+ <item>
+ <p>SupplierAdmin's did not filter any events, even though Filter objects
+ had been attached to the SupplierAdmin.</p>
+ <p>Own Id: OTP-4098</p>
+ </item>
+ <item>
+ <p>If one used the '_get_default_supplier_admin'/1, exported by the
+ CosNotifyChannelAdmin_EventChannel-module, it resulted in a loop
+ which overloaded the channel. This is no longer the case.</p>
+ <p>Own Id: OTP-4086</p>
+ </item>
+ <item>
+ <p>If one used the '_get_default_filter_factory'/1, exported by the
+ CosNotifyChannelAdmin_EventChannel-module, a new instance was created
+ each time. Now fixed.</p>
+ <p>Own Id: OTP-4092</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <list type="bulleted">
+ <item>
+ <p>The include paths for <c>CosNotification.idl</c> have been changed.
+ Hence, if you include this file in your own IDL-files you must
+ update your paths to also point to where the cosEvent IDL-files are
+ stored.</p>
+ <p>Own Id: OTP-4093</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.0.3</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>It is now possible to start global channel factories.</p>
+ <p>Own Id: OTP-4078</p>
+ </item>
+ <item>
+ <p>The Orber, version 3.2.5 or later, configuration parameter
+ orber_debug_level can now be used to generate reports when abnormal
+ situations occurs. For more information consult the Orber User's Guide.
+ Note, it is not recommended to use this option for delivered systems
+ since some of the reports is not to be considered as errors.
+ The value of orber_debug_level must be 3, or higher, for reports to
+ be generated.</p>
+ <p>Own Id: OTP-4077, OTP-3962</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Fixed Bugs and Malfunctions</title>
+ <list type="bulleted">
+ <item>
+ <p>When using the cosEvent API accessing a cosNotification admins
+ the objects returned by the functions obtain_push_supplier,
+ obtain_pull_supplier, obtain_push_consumer and obtain_pull_consumer
+ was not of the correct type. Due to the interface change
+ it is not possible to upgrade during runtime.</p>
+ <p>Own Id: OTP-4079</p>
+ </item>
+ </list>
+ </section>
+ </section>
+
+ <section>
+ <title>cosNotification 1.0.2</title>
+
+ <section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>First release of the cosNotification application.</p>
+ <p>Own Id: -</p>
+ </item>
+ </list>
+ </section>
+ </section>
+</chapter>
+
diff --git a/lib/cosNotification/doc/src/notificationFlow.gif b/lib/cosNotification/doc/src/notificationFlow.gif
new file mode 100644
index 0000000000..31d6ee97fb
--- /dev/null
+++ b/lib/cosNotification/doc/src/notificationFlow.gif
Binary files differ
diff --git a/lib/cosNotification/doc/src/notificationFlow.ps b/lib/cosNotification/doc/src/notificationFlow.ps
new file mode 100644
index 0000000000..4215e66d80
--- /dev/null
+++ b/lib/cosNotification/doc/src/notificationFlow.ps
@@ -0,0 +1,4372 @@
+%!PS-Adobe-3.0
+%%Creator: (ImageMagick)
+%%Title: (notificationFlow.ps)
+%%CreationDate: (Tue Apr 18 11:01:08 2000)
+%%BoundingBox: 105 212 506 579
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Orientation: Portrait
+%%PageOrder: Ascend
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%PageOrientation: Portrait
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/buffer 512 string def
+/byte 1 string def
+/color_packet 3 string def
+/pixels 768 string def
+
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 gt
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 gt
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 gt
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 gt
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-RunlengthEncodedCompression or 1-NoCompression.
+ % hex color packets.
+ %
+ gsave
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Helvetica findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+ grestore
+ showpage
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 105 212 506 579
+%%BeginData:
+DisplayImage
+105 212
+401.000000 367.000000
+12
+401 367
+1
+1
+1
+8
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff995511000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000115599ffffffffffffffffffcc2200000022444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444442200000022ccffffffffffffcc110044aaffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffaa440011ccffffffffff220066ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff660022ffffffff990044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff440099ffffff
+5500aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa
+0055ffffff1100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0011ffffff0022ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0033ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+bbaa7777664444667777aabbffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffcc7744002244777777aaaa7777774422004477ccffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee88221166aaeeffffffffffffffffffffffffeeaa66112288eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdd771166aaffffffffffffffffffffffffffffffffffffffffaa661177dd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff771166ddffffffffffffffffffffffffffffffffffffffffffff
+ffffdd661177ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffbb2244ccffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc4422bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff771188ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff881177ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffee4433ccffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc3344eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee3366eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee6633eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff66
+33eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff6633eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff4466ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff6644ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff7733eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffee3377ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffbb11ccffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc11bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff2288ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8822ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7744ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4477
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffdd11ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffcc11ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee11ddffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffdd11eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+8866ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff6688ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff22aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffaa33ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc11ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11ccffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+6677ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff22bbffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa44ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffeebbffffffffffffffffffffffff
+ffffffffffffffffffffffffffbbffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffaa3300226677aa00ffffffffffffff
+ffffffffffffffffffffffffffffffffffcc00ffffffffffffffffffffffff7777ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff6677ffffffffffffffffffffffaa44ccffffff77ff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+7766ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffff22ddffffffff
+eeff00660077ffff221166bb22660077ffbb22660077ee440044ffff00ffffffffffffff
+ffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffff00
+ffffffffffffff00eecc00ffffaaff00ff00ffdd00ffff00ffdd0077000000bbff00ffff
+ffffffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffffffffff
+ffffffff22bbffffffffffff00ffff00ffff779900ff00ffff00ffff00ffff0044eeffff
+ffff00ffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffff8833eeffffffccff00ffff00ff8833ff00ff00ffff00ffff00ffff
+006677ffeebbff00ffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffaa55330055ccaa00ddaa00ee990077225800ddaa00
+eebb00ddaa00bf220066ffbb00ccffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44aaffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb
+3333bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffbb22ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffdd551199991155ddffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffee770077eeffffee770077eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff992244ddffffffffffffdd442299ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffbb4422bbffffffffffffffffffffbb2244bbffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc11ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff11ccffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffdd661188ffffffffffffffffffffffffffff881166
+ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff22aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffaa33ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff771166eeffffffffffffffffffffffffff
+ffffffee661177ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff8866ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6688ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffaa2244ccffffffffffffffffffff
+ffffffffffffffffffffcc4422aaffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee11ddffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd11eeffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffcc4422aaffffffffffffff
+ffffffffffffffffffffffffffffffffffaa2244ccffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+6677ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0077ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7700ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffdd11ccffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc11ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7744ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff4477ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22
+88ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff8822ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffbb11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffcc11bbffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7733eeffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee3377ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff4466ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff6644ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffbbffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee3366ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6633eeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffdd00110000
+22ffff22ffcc00ffffddffffffffffffffffffffffffffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6633
+eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
+ff00ffffffaaffffffffff00ffee22ffffffffffffffffffffffffffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366
+eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffee6633eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff00ffff00ffffbbbbffaa33ffff00ff440000ee4400449922777788331188ff00ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee4433ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffcc3344eeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff00ffff00000000bbffff00ffff00ffff00ff77000000bb00ffff1188
+ee99ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff771188ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff881177ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff00ffff00ffffeeddffff00ffff00ffff00ff44eeffffff
+00ffffbb4444ccff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffbb2244ccffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffcc4422bbffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff00ffff00ffffffffffff00ffff00ffff00ff
+6677ffeebb00ffff55ee9911ff00ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff771166ddffffffffffffffffff
+ffffffffffffffffffffffffffffffdd661177ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffbb0000bbffffffbb00ccbb
+00ccff2266cc220066aa0055ff11002277ff00ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd771166aaffff
+ffffffffffffffffffffffffffffffffffffaa661177ddffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee88331166aaeeffffffffffffffffffffffffeeaa66113388eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffcc7744002244777777aaaa7777774422004477ccffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffbbaa7777664444667777aabbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7799ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0077ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7700ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffcc4422aaffffffffffffffffffffffffffffff
+ffffffffffffffffffaa2244ccffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffaa2244ccffffffffffffffff
+ffffffffffffffffffffffffcc4422aaffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff771166eeff
+ffffffffffffffffffffffffffffffee661177ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffdd661188ffffffffffffffffffffffffffff881166ddffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffbb4422bbffffffffffffffffffffbb2244bbffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff992244ddffffffffffffdd442299ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee770077eeffffee770077eeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd551199991155dd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb
+3333bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+bbaa7777664444667777aabbffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+bbaa7777664444667777aabbffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffcc7744002244777777aaaa7777774422004477ccffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffcc7744002244777777aaaa7777774422004477ccffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee88221166aaeeffffffffffffffffffffffffeeaa66112288eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0040ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee88221166aaeeffffffffffffffffffffffffeeaa66112288eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdd771166aaffffffffffffffffffffffffffffffffffffffffaa661177dd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee000eeeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffdd771166aaffffffffffffffffffffffffffffffffffffffffaa661177dd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff771166ddffffffffffffffffffffffffffffffffffffffffffff
+ffffdd661177ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee33000033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff771166ddffffffffffffffffffffffffffffffffffffffffffff
+ffffdd661177ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffbb2244ccffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc4422bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffbb2244ccffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc4422bbffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff771188ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff881177ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff771188ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff881177ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffee4433ccffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc3344eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffee4433ccffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc3344eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee3366eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee6633eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee3366eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee6633eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff66
+33eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff66
+33eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff6633eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff6633eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff4466ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff6644ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff4466ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff6644ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff7733eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffee3377ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff7733eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffee3377ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffbb11ccffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc11bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffbb11ccffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc11bbffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff2288ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8822ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff2288ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff8822ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7744ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4477
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7744ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4477
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffdd11ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffcc11ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffdd11ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffcc11ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee11ddffff
+ffffffffffffffffffffeeffffffffffffffffffffffffffffffffffffbbffffffffffff
+ffffffffffffffffffffffffffffdd11eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee11ddffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffdd11eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+8866ffffffffffffffffffff33116644ffffffffffffffffffffffffffffffffffcc00ff
+ff22ffffffffffffffffffffffffffffffffffff6688ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+8866ffffffffffaa3300226677ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff6688ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff22aaffffffffffffffffffff00eeff99ffffffffffffffffffffffffffffff
+ffffff00ffffffffffffffffffffffffffffffffffffffffffaa33ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff22aaffffffffaa44ccffffff77ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffaa33ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc11ffffffffffffffffffffff4455eeffff9900bb000099226611
+99ff9922661199ff00ffaa33ffee440044ff99227777ffffffffffffffffff11ccffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffcc11ffffffffff22ddffffffffeeffee441155ccbb22660077ff88
+3311889900bb0000bb22770077440077ffee44004499227777ffffffffffff11ccffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7766ffffffffffffffffffffffee5511ccffff00ffff
+00ff00eeaa22ffff00eeaa22ff00ffff00ff77000000bbff00ffffffffffffffffffffff
+6677ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7766ffffffffff00ffffffffffffff44ccffcc22ff00
+ffdd00ff1188ee99ff00ffff00ff00ffee00ffee00ff77000000bb00ffffffffffffffff
+6677ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffeeffff9922
+ffff00ffff00ff00ffff00ffff00ffff00ff00ffff00ff44eeffffffff00ffffffffffff
+ffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff44aaffffffffff22bbffffffffffff00ee
+ffff00ff00ffff00ffbb4444ccff00ffff00ff00ffff00ffff00ff44eeffffff00ffffff
+ffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00eeffffffffffffffffffff
+7788ffff00ffff00ffee00ff00ffcc44ffff00ffcc44ff00ffff00ff6677ffeebbff00ff
+ffffffffffffffffffffee00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff00eeffffffffff8833eeffff
+ffccff3388ffee33ff00ffff00ff55ee9911ff00ffee00ff00ffff00ffff00ff6677ffee
+bb00ffffffffffffffffee00ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22ffffffffffff
+ffffffffffbb22000099ffff33118844ff002222ccffff002222ccbb00ccbb00cccc2200
+66ffaa0055ffffffffffffffffffffff22bbffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22ffffffffffff
+ffaa55330055ccffcc552222ccbb00ddaa00ee11002277ff33118844550077cc0077aa00
+ddcc220066aa0055ffffffffffffffff22bbffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa44ff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa44ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffff1100eeffff
+ff1100eeffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffff
+ffffccffffffffffccffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7766ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7766ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeebbffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffeebbffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffffffffffffff77ccffffffffffffaa00ffffffffff
+ffffffffff22ffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffffffffffffff77ccffffffffffffaa00ffffffffff
+ffffffffff22ffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffaa44ffffffffffffffffffffffffffffffffffff6666ffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44aaffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffaa44ffffffffffffffffffffffffffffffffffff6666ffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44aaffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffbb22ffffffffffffffffffffffffffffffffffaaee22ddffff
+ee44004400ffbb22770077440077aa33ffbb22660077ffffffffffffffffffffffffff22
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffbb22ffffffffffffffffffffffffffffffffffaaee22ddffff
+ee44004400ffbb22770077440077aa33ffbb22660077ffffffffffffffffffffffffff22
+bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00eeffffffffffffffffffffffffffffffff99
+ff9966ffff66ccffdd00ffff00ffee00ffee00ff00ffff00ffdd00ffffffffffffffffff
+ffffffee00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00eeffffffffffffffffffffffffffffffff99
+ff9966ffff66ccffdd00ffff00ffee00ffee00ff00ffff00ffdd00ffffffffffffffffff
+ffffffee00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffff
+ffffffbb00000011eeff00ffffff00ffff00ffff00ffff00ff00ffff00ffff00ffffffff
+ffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff44aaffffffffffffffffffffffff
+ffffffbb00000011eeff00ffffff00ffff00ffff00ffff00ff00ffff00ffff00ffffffff
+ffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffffffffffffff
+ffffffffffffffff66ffffff4477ff2277ffff00ffff00ffff00ffff00ff00ffff00ffff
+00ffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffffffffffffff
+ffffffffffffffff66ffffff4477ff2277ffff00ffff00ffff00ffff00ff00ffff00ffff
+00ffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc11ffff
+ffffffffffffffffffffffffaa33ccffbb3311ddbb22006633dd550077cc0077aa00a300
+ccbb00ddaa00eeffffffffffffffffffffff11ccffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc11ffff
+ffffffffffffffffffffffffaa33ccffbb3311ddbb22006633dd550077cc0077aa00a300
+ccbb00ddaa00eeffffffffffffffffffffff11ccffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff22aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffaa33ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff22aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffaa33ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff8866ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6688ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff8866ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6688ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee11ddffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd11eeffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee11ddffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd11eeffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+6677ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+6677ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffdd11ccffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc11ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffdd11ccffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc11ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7744ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff4477ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7744ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff4477ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22
+88ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff8822ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff22
+88ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff8822ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffbb11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffcc7b11bbffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffbb11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffcc11bbffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7733eeffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffee100048ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7733eeffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee3377ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff4466ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff3e000099ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff4466ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff6644ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee3366ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff66338f000099
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee3366ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6633eeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6633
+eeff99000099ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffeeee3366ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6633
+eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366
+eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffee6633eeffffff99000099ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee3366ee3366
+eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffee6633eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee4433ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffcc3344eeffffffffff99000099ffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee33
+0033eeee4433ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffcc3344eeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff771188ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff881177ffffffffffffffff99000099ffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffee330033eeffffff771188ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff881177ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffbb2244ccffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffcc4422bbffffffffffffffffffff99000099ffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffbb2244ccffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffcc4422bbffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff771166ddffffffffffffffffff
+ffffffffffffffffffffffffffffffdd661177ffffffffffffffffffffffffff99000099
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffee330033eeffffffffffffffff771166ddffffffffffffffffff
+ffffffffffffffffffffffffffffffdd661177ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd771166aaffff
+ffffffffffffffffffffffffffffffffffffaa661177ddffffffffffffffffffffffffff
+ffff99000099ffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffee330033eeffffffffffffffffffffdd771166aaffff
+ffffffffffffffffffffffffffffffffffffaa661177ddffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee88331166aaeeffffffffffffffffffffffffeeaa66113388eeffffffffffffffffffff
+ffffffffffffffff99000099ffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ee88331166aaeeffffffffffffffffffffffffeeaa66113388eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffcc7744002244777777aaaa7777774422004477ccffffffffffffffff
+ffffffffffffffffffffffffffff99000099ffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffff
+ffffffffffffffffcc7744002244777777aaaa7777774422004477ccffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffbbaa7777664444667777aabbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff99000099ffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffee330033eeffffffffff
+ffffffffffffffffffffffffffffffffffbbaa7777664444667777aabbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff99000099ffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff99000099
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffee33
+0033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff99000099ffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff99000099ffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff990000ccffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7700bbee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffee330033eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff7700af330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7700260033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033df330033eeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70
+000033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee33000b0033eeffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffbb3333bbffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee26002deeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee33000bdfff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffdd551199991155ddffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee770077eeffffee770077eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff992244ddffffffffff
+ffdd442299ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb4422bbffff
+ffffffffffffffffbb2244bbffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd6611
+88ffffffffffffffffffffffffffff881166ddffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff771166eeffffffffffffffffffffffffffffffffee661177ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffaa2244ccffffffffffffffffffffffffffffffffffffffffcc4422aaffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffcc4422aaffffffffffffffffffffffffffffffffffffffffffffffffaa
+2244ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0077ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7700ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffbbffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00ffdd0011000022ffff22ffcc00ffffddffffffffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffff00ffffffaaffffffffff00ffee22ffffff
+ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffff00ffffbbbbffaa33ffff00ff
+440000ee4400449922777788331188ff00ffffffffffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00000000bbffff
+00ffff00ffff00ff77000000bb00ffff1188ee99ff00ffffffffffffffffffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff00ff
+ffeeddffff00ffff00ffff00ff44eeffffff00ffffbb4444ccff00ffffffffffffffffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+00ffff00ffffffffffff00ffff00ffff00ff6677ffeebb00ffff55ee9911ff00ffffffff
+ffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffbb0000bbffffffbb00ccbb00ccff2266cc220066aa0055ff11002277ff
+00ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff00ffffffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff00ffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0077ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7700ffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc
+4422aaffffffffffffffffffffffffffffffffffffffffffffffffaa2244ccffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffaa2244ccffffffffffffffffffffffffffffffffffffffffcc4422aaffff
+ffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff771166eeffffffffffffffffffffffffffffffffee6611
+77ffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffdd661188ffffffffffffffffffffffffff
+ff881166ddffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffbb4422bbffffffffffff
+ffffffffbb2244bbffffffffffffffffffffffffffffffee330033eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff992244
+ddffffffffffffdd442299ffffffffffffffffffffffffffffffffee330033eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee770077eeffffee770077eeffffffffffffffffffffffffffffffffee330033ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330033eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffdd551199991155ddffffffffffffffffffffffffffffffffffee
+330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee330033eeffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffbb3333bbffffffffffffffffffffffffffffff
+ffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee330033eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffbbaa7777664444667777aabbffffffffffff
+ffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ee330033eeffffffffffffffffffffffffffbbaa7777664444667777aabbffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffcc7744002244777777aaaa777777442200
+4477ccffffffffffffffffee330033eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee330033eeffffffffffffffffcc7744002244777777aaaa777777442200
+4477ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee88221166aaeeffffffffffffffff
+ffffffffeeaa66112288eeffffffffee330033eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffee330033eeffffffffee88221166aaeeffffffffffffffff
+ffffffffeeaa66112288eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffdd771166aaffffffffffffff
+ffffffffffffffffffffffffffaa661177ddffff770033eeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee330000000000381166aaffffffffffffff
+ffffffffffffffffffffffffffaa661177ddffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff771166ddffffffff
+ffffffffffffffffffffffffffffffffffffffffdd661177ffff77eeffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffee55444420053eddffffffff
+ffffffffffffffffffffffffffffffffffffffffdd661177ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb2244ccff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffcc4422bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb2244ccff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffcc4422bbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+1188ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8811
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+1188ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8811
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffee4433ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc3344eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffee4433ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc3344eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee3366eeffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee6633eeffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffee3366eeffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee6633eeffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee3366ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff6633eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffee3366ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff6633eeffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffee3366ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff6633eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffee3366ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff6633eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff4466ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6644ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff4466ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6644ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7733eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee33
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7733eeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee33
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffbb11ccffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc11bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffbb11ccffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffcc11bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2288ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff8822ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2288ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff8822ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7744ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff4477ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7744ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff4477ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffdd11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffcc11ddffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffdd11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffcc11ddffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7766ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7766ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffee11ddffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd11eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffee11ddffffffffffffffffffffffffeeffffffffffffff
+ffffffffffffffffffffffbbffffffffffffffffffffffffffffffffffffffffdd11eeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff8866ffffffffffaa3300226677ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff6688ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff8866ffffffffffffffffffff33116644ffff
+ffffffffffffffffffffffffffffffcc00ffff22ffffffffffffffffffffffffffffffff
+ffff6688ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff22aaffffffffaa44ccffffff77
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffaa33ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff22aaffffffffffffffffffff00
+eeff99ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
+ffffffffffffffaa33ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffcc11ffffffffff22dd
+ffffffffeeffee441155ccbb22660077ff883311889900bb0000bb22770077440077ffee
+44004499227777ffffffffffff11ccffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffcc11ffffffffffffff
+ffffffff4455eeffff9900bb00009922661199ff9922661199ff00ffaa33ffee440044ff
+99227777ffffffffffffffffff11ccffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffff
+ffffff00ffffffffffffff44ccffcc22ff00ffdd00ff1188ee99ff00ffff00ff00ffee00
+ffee00ff77000000bb00ffffffffffffffff6677ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ffff
+ffffffffffffffffffee5511ccffff00ffff00ff00eeaa22ffff00eeaa22ff00ffff00ff
+77000000bbff00ffffffffffffffffffffff6677ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff44aaffffffffff22bbffffffffffff00eeffff00ff00ffff00ffbb4444ccff00ffff00
+ff00ffff00ffff00ff44eeffffff00ffffffffffffffffaa44ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff44aaffffffffffffffffffffeeffff9922ffff00ffff00ff00ffff00ffff00ffff00ff
+00ffff00ff44eeffffffff00ffffffffffffffffffffffaa44ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00eeffffffffff8833eeffffffccff3388ffee33ff00ffff00ff55ee9911
+ff00ffee00ff00ffff00ffff00ff6677ffeebb00ffffffffffffffffee00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00eeffffffffffffffffffff7788ffff00ffff00ffee00ff00ffcc44ffff
+00ffcc44ff00ffff00ff6677ffeebbff00ffffffffffffffffffffffee00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffbb22ffffffffffffffaa55330055ccffcc552222ccbb00ddaa00
+ee11002277ff33118844550077cc0077aa00ddcc220066aa0055ffffffffffffffff22bb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffbb22ffffffffffffffffffffffbb22000099ffff33118844ff00
+2222ccffff002222ccbb00ccbb00cccc220066ffaa0055ffffffffffffffffffffff22bb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff44aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffaa44ffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff44aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffff00ffffffffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffff1100eeffffff1100eeffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6677ffffffff
+ffffffffffffffffffffffffffffffffffffffffccffffffffffccffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7766ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44
+aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffaa44ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff44
+aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffaa44ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff44aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa44ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff44aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa44ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6677ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7766ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffdd001100
+33aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffff
+dd00110033aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffff
+ffff00ffffaa11ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffaa44ffffffffffffffffffff
+ffffffffffff00ffffaa11ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff44aaffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffaa44ffffffffffffffffffff
+ffffffffffffff00ffffbb3399227777ee441155cc6611775555ff881177cc44eeffffff
+ffffffffffffffffffffffff44aaffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22ffffffffff
+ffffffffffffffffffffff00ffffbb3399227770441155ccff6611775555881177cc44ee
+ffffffffffffffffffffffffffffffffff22bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22ffffffffff
+ffffffffffffffffffffffff00660055eeff00ffff44ccffcc22ff8866aaffffff22dddd
+99ffffffffffffffffffffffffffffffff22bbffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+eeffffffffffffffffffffffffffffff00660055eeff00ff44ccffcc22ffff8866aaffff
+22dddd99ffffffffffffffffffffffffffffffffffee00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+eeffffffffffffffffffffffffffffffff00ffffffffff00ffff00eeffff00ffff00ccff
+ffff887799ffffffffffffffffffffffffffffffffee00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff44aaffffffffffffffffffffffffffffff00ffffffffff00ff00eeffff00ffff
+ff00ccffff887799ffffffffffffffffffffffffffffffffffffaa44ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff44aaffffffffffffffffffffffffffffffff00ffffffffff00ffff3388ffee33
+ff88bb33ffffffee2288ffffffffffffffffffffffffffffffffaa44ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7766ffffffffffffffffffffffffffffff00ffffffffff00ff3388
+ffee33ffff88bb33ffffee2288ffffffffffffffffffffffffffffffffffff6677ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7766ffffffffffffffffffffffffffffffbb0000bbffffaa0055ff
+cc552222ccbb66ff0044bbffff77ccffffffffffffffffffffffffffffffff6677ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffcc11ffffffffffffffffffffffffffffbb0000bbffff
+aa0055cc552222ccffbb66ff0044bbff77ccffffffffffffffffffffffffffffffffffff
+11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffcc11ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff99ffffffffffffffffffffffffffffffffff
+11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff22aaffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff99ffffffffffffffffffffffffffff
+ffffffffaa33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff22aaffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7744ccffffffffffffffffffffffff
+ffffffffaa33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff8866ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7744ccffffffffffffffffff
+ffffffffffffffffff6688ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff8866ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff6688ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee11ddffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffdd11eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee11ddffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffdd11eeffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7766ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7766ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff6677ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffdd11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc11ddffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffdd11ccffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffcc11ddffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff7744ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff4477ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff7744ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff4477ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff2288ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8822ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff2288ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8822ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffbb11ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc
+11bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffbb11ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc
+11bbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7733eeffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee3377ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7733eeffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee3377ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4466
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff6644ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4466
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff6644ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee3366ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff6633eeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffee3366ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff6633eeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffee3366ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff6633eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffee3366ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff6633eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee3366eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee6633eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffee3366eeffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffee6633eeffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee4433ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffcc3344eeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffee4433ccffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffcc3344eeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff771188ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff881177ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff771188ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff881177ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22
+44ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc4422bbffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb22
+44ccffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc4422bbffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff771166ddffffffffffffffffffffffffffffffffffffffffffffffffdd6611
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff771166ddffffffffffffffffffffffffffffffffffffffffffffffffdd6611
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffdd771166aaffffffffffffffffffffffffffffffffffffffff
+aa661177ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffdd771166aaffffffffffffffffffffffffffffffffffffffff
+aa661177ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee88331166aaeeffffffffffffffffffffff
+ffeeaa66113388eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffee88331166aaeeffffffffffffffffffffff
+ffeeaa66113388eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+44ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffcc7744002244777777aa
+aa7777774422004477ccffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffcc7744002244777777aa
+aa7777774422004477ccffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+44ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb
+aa7777664444667777aabbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb
+aa7777664444667777aabbffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffa3a3ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffa3a3ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff4850ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff4850ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff3838ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff3838ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff1818ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff1818ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000eeffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa0000
+aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa0000
+aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044
+ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff77000077ffffffffffffffffffffffffffffffffffffffffffffffeebbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff77000077ffffffffffffffffffffffffffffffffffffffbbffffbbffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff33000033ffffffffffffffdd00110033aaffffffffffffffffffffaa00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff33000033ffffffffffffffdd00110033aaffffffffffcc00ffcc00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee00080800eeffffffffffffff00ffffaa11ffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffee00080800eeffffffffffffff00ffffaa11ffffffffffff00
+ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa00282800aaffffffffffffff00ffffbb339900
+bb000088331188ffff00660077ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffaa00282800aaffffffffffffff00ffffbb339900
+bb0000ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770040400077ffffffffffffff0066
+0055eeff00ffff001188ee99ffff00eecc00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff770040400077ffffffffffffff0066
+0055eeff00ffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff330060600033ffffffff
+ffffff00ffffffffff00ffff00bb4444ccffff00ffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff330060600033ffffffff
+ffffff00ffffffffff00ffff00ff00ffff00ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0011777711
+00eeffffffffffff00ffffffffff00ffee0055ee9911ffff00ffff00ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0011777711
+00eeffffffffffff00ffffffffff00ffee00ff00ffff00ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ff
+ffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa
+005577775500aaffffffffffbb0000bbffffff3311884411002277ffaa00ddaa00eeffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa
+005577775500aaffffffffffbb0000bbffffff33118844bb00ccbb00ccffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7700887777880077ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7700887777880077ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffddee7777eeddffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffddee7777eeddffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffff
+ff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff
+0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff0044ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0044ffffff00
+22ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff77
+77ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+33ffffff1100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff0011ffffff5500aaffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffaa0055ffffff990044ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff440099ffffffff220066ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff660022ffffffffffcc110044aaffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffaa440011ccffffffffffffcc22000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000022ccffffffffffffff
+ffff99551133444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444442020
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444442020
+444444444444444444444444444444444444444444444444444444444444444444444444
+4444444444444444444444444444444444444444444444444444444433115599ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffdd0011000022ffffffffffffffffffffffffffffffffffddff
+ffffffdd0011000022cc00ffffffffffffffffffffffffffffffffffee0011337777ffff
+ff22ffffffffffffffffffffffffffffffddffff22ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffaaffffffffffffffffffffffffffff
+ffffee22ffffffffff00ffffffaaff00ffffffffffffffffffffffffffffffffffff00ff
+ffff8877ffffffffffffffffffffffffffffffffffee22ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff00ffffddbbff4411eeee55df4400
+44ffbb22660077440000ffffffff00ffffbbbbff00ffee441155cc8833dd5555ff77bbff
+ffffff00ffffffee11ffaa33ff99227770440044ffee771155ee440000aa33ffee441155
+ccbb22660077ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000bbffee22dd
+ddaa77000000bbff00ffdd00ff00ffffffffff00000000bbff00ff44ccffcc22ee22ffaa
+66ff88ffffffffff00ffffffff00ffff00ffff00ff77000000bb77ccffaaddff00ffff00
+ff44ccffcc22ff00ffdd00ffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffee
+ddffff997799ff44eeffffffff00ffff00ff00ffffffffff00ffffeeddff00ff00eeffff
+00ff66aa7722ddaaffffffffff00ffffffee00ffff00ffff00ff44eeffffff00ffffffff
+ff00ffff00ff00eeffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffeebbffee3399ff6677ffeebbff00ffff00ff00ffffffffff00ffffffffff00
+ff3388ffee33ffcc44998855eeffffffffff00ffffff7755ffff00ffff00ff6677ffeebb
+2266ffeeccff00ffff00ff3388ffee33ff00ffff00ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffff7777ffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb66bb7777bb66bb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffbb0077110000ddffff66ddffcc220066ffbb00ddaa00ee2266ffffffbb0000
+bbffffbb00cccc552222ccffff55ffee66ffffffffffbb0022116677eeffbb00ccaa0055
+cc220066ffcc220077ffff2266bb00cccc552222ccbb00ddaa00eeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbb66bb7777bb66bb
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880077
+7777770088ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880077
+7777770088ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffcc003377773300ccffffffffffffffffffffffffffffffffffbbffffbbffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffff77aaeeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffcc003377773300ccffffffffffffffffffffffffffffffffffffffffffeebbffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff110070700011ffffffffffffdd00110033aaffffffffffcc00ffcc00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffdd0000003377aaeeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff110070700011ffffffffffffdd00110033aaffffffffffffffffffff
+aa00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff550050500055ffffffffffffff00ffffaa11ffffffffff
+ff00ffff00ffffffffffffffffffffffffffffffffffffffff4444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444440251705
+000000000e202e4044444499ffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffff550050500055ffffffffffffff00ffffaa11ffffffffff
+ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff880038380088ffffffffffffff00ffffbb33
+9900bb0000ff00ffff00ffffffffffffffffffffffffffffffffffffffff000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000070ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffff880038380088ffffffffffffff00ffffbb33
+9900bb000088331188ffff00660077ffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffcc00181800ccffffffffffffff
+00660055eeff00ffff00ff00ffff00ffffffffffffffffffffffffffffffffffffffff00
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000070ffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffcc00181800ccffffffffffffff
+00660055eeff00ffff001188ee99ffff00eecc00ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11000011ffffff
+ffffffffff00ffffffffff00ffff00ff00ffff00ffffffffffffffffffffffffffffffff
+ffffffff4444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444444444444444444444444444444444444444444444444444444
+444444444444444444444440251705000000000e202e4044444499ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11000011ffffff
+ffffffffff00ffffffffff00ffff00bb4444ccffff00ffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5500
+0055ffffffffffffffff00ffffffffff00ffee00ff00ffff00ffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffdd0000003377aaeeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5500
+0055ffffffffffffffff00ffffffffff00ffee0055ee9911ffff00ffff00ffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff88000088ffffffffffffffbb0000bbffffff33118844bb00ccbb00ccffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffff77aaeeffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffff88000088ffffffffffffffbb0000bbffffff3311884411002277ffaa00ddaa00ee
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffcc0000ccffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffcc0000ccffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0808ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffff0808ffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff2828ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffff2828ffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff4040ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffff4040ffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6060ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6060ffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd00110000
+22ffffffffffffffffffffffffffffffffffffddffffff4400bbffffffffffffffffffff
+ffffffffffffffffddffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffdd0011000022ffffff
+ffffffffffffffffffffffffffffddffffffffffbb77117766ccffffffffffffffddffff
+ffffffffffffffffffffffddffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffaaffffffffffffffffffffffffffffffffffee22ffffffff00ffffffffffff
+ffffffffffffffffffffffffee22ffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
+ffaaffffffffffffffffffffffffffffffffee22ffffffffaa55ffffffcc44ffffffffff
+ffee22ffffffffffffffffffffffffee22ffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffff00ffffddbbff4411eeee55df440044ffbb22660077ff440000ffffff00ff
+ffbb226600779922661199ff9900bb0000440000ffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffff00ffffddbbff4411eeee55df440044ffbb22660077440000ffffff22ddffffffff00
+ff9900bb000044000099226611999900bb0000ff440000ffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffff00000000bbffee22ddddaa77000000bbff00ffdd00ffff00ff
+ffffff00ffffff00ffdd00ff00eeaa22ffff00ffff00ff00ffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffff00000000bbffee22ddddaa77000000bbff00ffdd00ff00ffffffff00ff
+ffffffff00ffff00ffff00ff00ffff00eeaa22ff00ffff00ffff00ffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff00ffffeeddffff997799ff44eeffffffff00ffff
+00ffff00ffffffff00ffffff00ffff00ff00ffff00ffff00ffff00ff00ffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffff00ffffeeddffff997799ff44eeffffffff00ffff00ff00ff
+ffffff22bbffffffee22ffff00ffff00ff00ffff00ffff00ff00ffff00ffff00ffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffff00ffffffeebbffee3399ff6677ffee
+bbff00ffff00ffff00ffffffff00ffffff00ffff00ff00ffcc44ffff00ffee00ff00ffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffff00ffffffeebbffee3399ff6677ffeebbff00ff
+ff00ff00ffffffffaa33eeffffaa77ffff00ffee00ff00ffff00ffcc44ff00ffee00ffff
+00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffbb0077110000ddffff66dd
+ffcc220066ffbb00ddaa00eeff2266ffffbb000077bb00ddaa00ee002222ccffff331188
+44ff2266ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffbb0077110000ddffff66ddffcc2200
+66ffbb00ddaa00ee2266ffffffffaa66443377ffffff33118844ff2266ff002222ccff33
+118844ffff2266ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffff1100eeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffff1100eeffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffccffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffccffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+%%EndData
+%%PageTrailer
+%%Trailer
+%%BoundingBox: 105 212 506 579
+%%EOF
diff --git a/lib/cosNotification/doc/src/part.xml b/lib/cosNotification/doc/src/part.xml
new file mode 100644
index 0000000000..06ae875c01
--- /dev/null
+++ b/lib/cosNotification/doc/src/part.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE part SYSTEM "part.dtd">
+
+<part xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotification User's Guide</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev>1.0</rev>
+ </header>
+ <description>
+ <p>The <em>cosNotification</em> application is an Erlang implementation
+ of the OMG CORBA Notification Service.</p>
+ </description>
+ <xi:include href="ch_contents.xml"/>
+ <xi:include href="ch_introduction.xml"/>
+ <xi:include href="ch_install.xml"/>
+ <xi:include href="ch_system.xml"/>
+ <xi:include href="ch_BNF.xml"/>
+ <xi:include href="ch_QoS.xml"/>
+ <xi:include href="ch_example.xml"/>
+</part>
+
diff --git a/lib/cosNotification/doc/src/part_notes.xml b/lib/cosNotification/doc/src/part_notes.xml
new file mode 100644
index 0000000000..af262c3d0e
--- /dev/null
+++ b/lib/cosNotification/doc/src/part_notes.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE part SYSTEM "part.dtd">
+
+<part xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotification Release Notes</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev>1.0</rev>
+ </header>
+ <description>
+ <p>The cosNotification Application is an Erlang implementation of the OMG
+ CORBA Notification Service.</p>
+ </description>
+ <xi:include href="notes.xml"/>
+</part>
+
diff --git a/lib/cosNotification/doc/src/ref_man.gif b/lib/cosNotification/doc/src/ref_man.gif
new file mode 100644
index 0000000000..b13c4efd53
--- /dev/null
+++ b/lib/cosNotification/doc/src/ref_man.gif
Binary files differ
diff --git a/lib/cosNotification/doc/src/ref_man.xml b/lib/cosNotification/doc/src/ref_man.xml
new file mode 100644
index 0000000000..1cf77c3c7f
--- /dev/null
+++ b/lib/cosNotification/doc/src/ref_man.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE application SYSTEM "application.dtd">
+
+<application xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header>
+ <copyright>
+ <year>2000</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>cosNotification Reference Manual</title>
+ <prepared>Niclas Eklund</prepared>
+ <docno></docno>
+ <date>2000-01-31</date>
+ <rev>1.0</rev>
+ </header>
+ <description>
+ <p>The <em>cosNotification</em> application is an Erlang implementation
+ of the OMG CORBA Notification Service.</p>
+ </description>
+ <xi:include href="cosNotificationApp.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_EventChannelFactory.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_EventChannel.xml"/>
+ <xi:include href="CosNotification.xml"/>
+ <xi:include href="CosNotification_QoSAdmin.xml"/>
+ <xi:include href="CosNotification_AdminPropertiesAdmin.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ConsumerAdmin.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_SupplierAdmin.xml"/>
+ <xi:include href="CosNotifyComm_NotifyPublish.xml"/>
+ <xi:include href="CosNotifyComm_NotifySubscribe.xml"/>
+ <xi:include href="CosNotifyFilter_FilterAdmin.xml"/>
+ <xi:include href="CosNotifyFilter_FilterFactory.xml"/>
+ <xi:include href="CosNotifyFilter_Filter.xml"/>
+ <xi:include href="CosNotifyFilter_MappingFilter.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ProxyConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ProxySupplier.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ProxyPullConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ProxyPullSupplier.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ProxyPushConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_ProxyPushSupplier.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml"/>
+ <xi:include href="CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml"/>
+</application>
+
diff --git a/lib/cosNotification/doc/src/summary.html.src b/lib/cosNotification/doc/src/summary.html.src
new file mode 100644
index 0000000000..92ade4f9cd
--- /dev/null
+++ b/lib/cosNotification/doc/src/summary.html.src
@@ -0,0 +1 @@
+Orber OMG Notification Service \ No newline at end of file
diff --git a/lib/cosNotification/doc/src/user_guide.gif b/lib/cosNotification/doc/src/user_guide.gif
new file mode 100644
index 0000000000..e6275a803d
--- /dev/null
+++ b/lib/cosNotification/doc/src/user_guide.gif
Binary files differ