From 84adefa331c4159d432d22840663c38f155cd4c1 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 20 Nov 2009 14:54:40 +0000 Subject: The R13B03 release. --- lib/cosNotification/doc/html/.gitignore | 0 lib/cosNotification/doc/man3/.gitignore | 0 lib/cosNotification/doc/man6/.gitignore | 0 lib/cosNotification/doc/pdf/.gitignore | 0 lib/cosNotification/doc/src/CosNotification.xml | 234 ++ .../src/CosNotification_AdminPropertiesAdmin.xml | 79 + .../doc/src/CosNotification_QoSAdmin.xml | 106 + .../src/CosNotifyChannelAdmin_ConsumerAdmin.xml | 242 ++ .../doc/src/CosNotifyChannelAdmin_EventChannel.xml | 226 + .../CosNotifyChannelAdmin_EventChannelFactory.xml | 89 + .../src/CosNotifyChannelAdmin_ProxyConsumer.xml | 128 + .../CosNotifyChannelAdmin_ProxyPullConsumer.xml | 113 + .../CosNotifyChannelAdmin_ProxyPullSupplier.xml | 112 + .../CosNotifyChannelAdmin_ProxyPushConsumer.xml | 98 + .../CosNotifyChannelAdmin_ProxyPushSupplier.xml | 110 + .../src/CosNotifyChannelAdmin_ProxySupplier.xml | 175 + ...otifyChannelAdmin_SequenceProxyPullConsumer.xml | 112 + ...otifyChannelAdmin_SequenceProxyPullSupplier.xml | 146 + ...otifyChannelAdmin_SequenceProxyPushConsumer.xml | 109 + ...otifyChannelAdmin_SequenceProxyPushSupplier.xml | 111 + ...ifyChannelAdmin_StructuredProxyPullConsumer.xml | 110 + ...ifyChannelAdmin_StructuredProxyPullSupplier.xml | 140 + ...ifyChannelAdmin_StructuredProxyPushConsumer.xml | 110 + ...ifyChannelAdmin_StructuredProxyPushSupplier.xml | 110 + .../src/CosNotifyChannelAdmin_SupplierAdmin.xml | 195 + .../doc/src/CosNotifyComm_NotifyPublish.xml | 65 + .../doc/src/CosNotifyComm_NotifySubscribe.xml | 64 + .../doc/src/CosNotifyFilter_Filter.xml | 222 + .../doc/src/CosNotifyFilter_FilterAdmin.xml | 111 + .../doc/src/CosNotifyFilter_FilterFactory.xml | 73 + .../doc/src/CosNotifyFilter_MappingFilter.xml | 227 + lib/cosNotification/doc/src/Makefile | 254 ++ lib/cosNotification/doc/src/book.gif | Bin 0 -> 1081 bytes lib/cosNotification/doc/src/book.xml | 48 + lib/cosNotification/doc/src/ch_BNF.xml | 456 ++ lib/cosNotification/doc/src/ch_QoS.xml | 251 ++ lib/cosNotification/doc/src/ch_contents.xml | 74 + lib/cosNotification/doc/src/ch_example.xml | 169 + lib/cosNotification/doc/src/ch_install.xml | 146 + lib/cosNotification/doc/src/ch_introduction.xml | 57 + lib/cosNotification/doc/src/ch_system.xml | 83 + lib/cosNotification/doc/src/cosNotificationApp.xml | 308 ++ lib/cosNotification/doc/src/eventstructure.gif | Bin 0 -> 89760 bytes lib/cosNotification/doc/src/eventstructure.ps | 2462 +++++++++++ lib/cosNotification/doc/src/fascicules.xml | 18 + lib/cosNotification/doc/src/make.dep | 48 + lib/cosNotification/doc/src/notes.gif | Bin 0 -> 2005 bytes lib/cosNotification/doc/src/notes.xml | 391 ++ lib/cosNotification/doc/src/notificationFlow.gif | Bin 0 -> 167734 bytes lib/cosNotification/doc/src/notificationFlow.ps | 4372 ++++++++++++++++++++ lib/cosNotification/doc/src/part.xml | 42 + lib/cosNotification/doc/src/part_notes.xml | 36 + lib/cosNotification/doc/src/ref_man.gif | Bin 0 -> 1530 bytes lib/cosNotification/doc/src/ref_man.xml | 63 + lib/cosNotification/doc/src/summary.html.src | 1 + lib/cosNotification/doc/src/user_guide.gif | Bin 0 -> 1581 bytes 56 files changed, 12896 insertions(+) create mode 100644 lib/cosNotification/doc/html/.gitignore create mode 100644 lib/cosNotification/doc/man3/.gitignore create mode 100644 lib/cosNotification/doc/man6/.gitignore create mode 100644 lib/cosNotification/doc/pdf/.gitignore create mode 100644 lib/cosNotification/doc/src/CosNotification.xml create mode 100644 lib/cosNotification/doc/src/CosNotification_AdminPropertiesAdmin.xml create mode 100644 lib/cosNotification/doc/src/CosNotification_QoSAdmin.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ConsumerAdmin.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannel.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_EventChannelFactory.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPullSupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxyPushSupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_ProxySupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPullSupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_SequenceProxyPushSupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPullSupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushConsumer.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_StructuredProxyPushSupplier.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyChannelAdmin_SupplierAdmin.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyComm_NotifyPublish.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyComm_NotifySubscribe.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyFilter_Filter.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyFilter_FilterAdmin.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyFilter_FilterFactory.xml create mode 100644 lib/cosNotification/doc/src/CosNotifyFilter_MappingFilter.xml create mode 100644 lib/cosNotification/doc/src/Makefile create mode 100644 lib/cosNotification/doc/src/book.gif create mode 100644 lib/cosNotification/doc/src/book.xml create mode 100644 lib/cosNotification/doc/src/ch_BNF.xml create mode 100644 lib/cosNotification/doc/src/ch_QoS.xml create mode 100644 lib/cosNotification/doc/src/ch_contents.xml create mode 100644 lib/cosNotification/doc/src/ch_example.xml create mode 100644 lib/cosNotification/doc/src/ch_install.xml create mode 100644 lib/cosNotification/doc/src/ch_introduction.xml create mode 100644 lib/cosNotification/doc/src/ch_system.xml create mode 100644 lib/cosNotification/doc/src/cosNotificationApp.xml create mode 100644 lib/cosNotification/doc/src/eventstructure.gif create mode 100644 lib/cosNotification/doc/src/eventstructure.ps create mode 100644 lib/cosNotification/doc/src/fascicules.xml create mode 100644 lib/cosNotification/doc/src/make.dep create mode 100644 lib/cosNotification/doc/src/notes.gif create mode 100644 lib/cosNotification/doc/src/notes.xml create mode 100644 lib/cosNotification/doc/src/notificationFlow.gif create mode 100644 lib/cosNotification/doc/src/notificationFlow.ps create mode 100644 lib/cosNotification/doc/src/part.xml create mode 100644 lib/cosNotification/doc/src/part_notes.xml create mode 100644 lib/cosNotification/doc/src/ref_man.gif create mode 100644 lib/cosNotification/doc/src/ref_man.xml create mode 100644 lib/cosNotification/doc/src/summary.html.src create mode 100644 lib/cosNotification/doc/src/user_guide.gif (limited to 'lib/cosNotification/doc') diff --git a/lib/cosNotification/doc/html/.gitignore b/lib/cosNotification/doc/html/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/cosNotification/doc/man3/.gitignore b/lib/cosNotification/doc/man3/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/cosNotification/doc/man6/.gitignore b/lib/cosNotification/doc/man6/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/cosNotification/doc/pdf/.gitignore b/lib/cosNotification/doc/pdf/.gitignore new file mode 100644 index 0000000000..e69de29bb2 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 @@ + + + + +
+ + 2002 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotification + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2002-02-05 + PA1 +
+ CosNotification + This module export functions which return QoS and Admin Properties constants. + +

To get access to all definitions include necessary hrl files by using:

+-include_lib("cosNotification/include/*.hrl").

+
+ + + 'EventReliability'() -> string() + Return the EventReliability QoS identifier + +

This function returns the EventReliability QoS identifier

+
+
+ + 'BestEffort'() -> short() + Return the BestEffort QoS value + +

This function returns the BestEffort QoS value.

+
+
+ + 'Persistent'() -> short() + Return the Persistent QoS value + +

This function returns the Persistent QoS value.

+
+
+ + 'ConnectionReliability'() -> string() + Return the ConnectionReliability QoS identifier + +

This function returns the ConnectionReliability QoS identifier.

+
+
+ + 'Priority'() -> string() + Return the Priority QoS identifier + +

This function returns the Priority QoS identifier.

+
+
+ + 'LowestPriority'() -> short() + Return the LowestPriority QoS value + +

This function returns the LowestPriority QoS value.

+
+
+ + 'HighestPriority'() -> short() + Return the HighestPriority QoS value + +

This function returns the HighestPriority QoS value.

+
+
+ + 'DefaultPriority'() -> short() + Return the DefaultPriority QoS value + +

This function returns the DefaultPriority QoS value.

+
+
+ + 'StartTime'() -> string() + Return the StartTime QoS identifier + +

This function returns the StartTime QoS identifier.

+
+
+ + 'StopTime'() -> string() + Return the StopTime QoS identifier + +

This function returns the StopTime QoS identifier.

+
+
+ + 'Timeout'() -> string() + Return the Timeout QoS identifier + +

This function returns the Timeout QoS identifier.

+
+
+ + 'OrderPolicy'() -> string() + Return the OrderPolicy QoS identifier + +

This function returns the OrderPolicy QoS identifier.

+
+
+ + 'AnyOrder'() -> short() + Return the AnyOrder QoS value + +

This function returns the AnyOrder QoS value.

+
+
+ + 'FifoOrder'() -> short() + Return the FifoOrder QoS value + +

This function returns the FifoOrder QoS value.

+
+
+ + 'PriorityOrder'() -> short() + Return the PriorityOrder QoS value + +

This function returns the PriorityOrder QoS value.

+
+
+ + 'DeadlineOrder'() -> short() + Return the DeadlineOrder QoS value + +

This function returns the DeadlineOrder QoS value.

+
+
+ + 'DiscardPolicy'() -> string() + Return the DiscardPolicy QoS identifier + +

This function returns the DiscardPolicy QoS identifier.

+
+
+ + 'LifoOrder'() -> short() + Return the LifoOrder QoS value + +

This function returns the LifoOrder QoS value.

+
+
+ + 'RejectNewEvents'() -> short() + Return the RejectNewEvents QoS value + +

This function returns the RejectNewEvents QoS value.

+
+
+ + 'MaximumBatchSize'() -> string() + Return the MaximumBatchSize QoS identifier + +

This function returns the MaximumBatchSize QoS identifier.

+
+
+ + 'PacingInterval'() -> string() + Return the PacingInterval QoS identifier + +

This function returns the PacingInterval QoS identifier.

+
+
+ + 'StartTimeSupported'() -> string() + Return the StartTimeSupported QoS identifier + +

This function returns the StartTimeSupported QoS identifier.

+
+
+ + 'StopTimeSupported'() -> string() + Return the StopTimeSupported QoS identifier + +

This function returns the StopTimeSupported QoS identifier.

+
+
+ + 'MaxEventsPerConsumer'() -> string() + Return the MaxEventsPerConsumer QoS identifier + +

This function returns the MaxEventsPerConsumer QoS identifier.

+
+
+ + 'MaxQueueLength'() -> string() + Return the MaxQueueLength Admin identifier + +

This function returns the MaxQueueLength Admin identifier.

+
+
+ + 'MaxConsumers'() -> string() + Return the MaxConsumers Admin identifier + +

This function returns the MaxConsumers Admin identifier.

+
+
+ + 'MaxSuppliers'() -> string() + Return the MaxSuppliers Admin identifier + +

This function returns the MaxSuppliers Admin identifier.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotification_­AdminPropertiesAdmin + ..._AdminPropertiesAdmin + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotification_AdminPropertiesAdmin + This module implements the OMG CosNotification::AdminPropertiesAdmin interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

All objects, which inherit this interface, export functions described in this module.

+
+ + + get_admin(Object) -> AdminProperties + Return a list of AdminPropertiesassociated with the target object + + Object = #objref + AdminProperties = [AdminProperty] + AdminProperty = #'CosNotification_Property'{name, value} + name = string() + value = #any + + +

This operation returns sequence of name-value pairs which encapsulates the + current administrative properties of the target object.

+
+
+ + set_admin(Object, AdminProperties) -> Reply + Update the AdminPropertiesfor the target object + + Object = #objref + AdminProperties = [AdminProperty] + AdminProperty = #'CosNotification_Property'{name, value} + name = string() + value = #any + Reply = ok | {'EXCEPTION', CosNotification_UnsupportedAdmin} + + +

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 UnsupportedAdmin will be raised.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + CosNotification_QoSAdmin + + + + 2000-02-01 + 1.0 +
+ CosNotification_QoSAdmin + This module implements the OMG CosNotification::QoSAdmin interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

All objects, which inherit this interface, export functions described in this module.

+
+ + + get_qos(Object) -> Reply + Return a list of name-value pairs which encapsulates the current QoS settings for the target object + + Object = #objref + Reply = [QoSProperty] + QoSProperty = #'CosNotification_Property'{name, value} + name = string() + value = #any + + +

This operation returns a list of name-value pairs which encapsulates the current QoS settings + for the target object.

+
+
+ + set_qos(Object, QoS) -> Reply + Change the QoS settings for the target object + + Object = #objref + QoS = [QoSProperty] + QoSProperty = #'CosNotification_Property'{name, value} + name = string() + value = #any + Reply = ok | {'EXCEPTION', #'CosNotification_UnsupportedQoS'{qos_err}} + qos_err = PropertyErrorSeq + PropertyErrorSeq = [PropertyError] + PropertyError = #'CosNotification_PropertyError'{code, name, available_range} + code = 'UNSUPPORTED_PROPERTY' | 'UNAVAILABLE_PROPERTY' | 'UNSUPPORTED_VALUE' | 'UNAVAILABLE_VALUE' | 'BAD_PROPERTY' | 'BAD_TYPE' | 'BAD_VALUE' + name = string() + available_range = PropertyRange + PropertyRange = #CosNotification_PropertyRange{low_val, high_val} + low_val = high_val = #any + + +

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 UnsupportedQoS + exception is raised, which includes a sequence of PropertyError's + describing which QoS, possible range and why is not allowed.

+
+
+ + validate_qos(Object, QoS) -> Reply + Validate if the supplied QoS properties is valid for the target object + + Object = #objref + QoS = [QoSProperty] + QoSProperty = #'Property'{name, value} + name = string() + value = #any + Reply = {ok, NamedPropertyRangeSeq} | {'EXCEPTION', CosNotification_UnsupportedQoS{}} + NamedPropertyRangeSeq = [NamedPropertyRange] + NamedPropertyRange = #CosNotification_NamedPropertyRange{name, range} + name = string() + range = #CosNotification_PropertyRange{low_val, high_val} + low_val = #any + high_val = #any + + +

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.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ConsumerAdmin + ..._ConsumerAdmin + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ConsumerAdmin + This module implements the OMG CosNotifyChannelAdmin::ConsumerAdmin interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotification_QoSAdmin

+
+ +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotifyFilter_FilterAdmin

+
+
+
+ + + _get_MyID(ConsumerAdmin) -> AdminID + Return the target object's Id + + ConsumerAdmin = #objref + AdminID = long() + + +

The ID returned by the creating channel is equal to the value encapsulated by + this readonly attribute.

+
+
+ + _get_MyChannel(ConsumerAdmin) -> Channel + Return the ancestor channel + + ConsumerAdmin = #objref + Channel = #objref + + +

The creating channel's reference is maintained by this readonly attribute.

+
+
+ + _get_MyOperator(ConsumerAdmin) -> OpType + Return the filtering schema used by the target object + + ConsumerAdmin = #objref + OpType = 'AND_OP' | 'OR_OP' + + +

When ConsumerAdmin's are created an operation type, + i.e., 'AND_OP' or 'OR_OP', is supplied, which determines + the semantics used by the target object concerning evaluation against + any associated Filter objects.

+
+
+ + _get_priority_filter(ConsumerAdmin) -> MappingFilter + Return the associated priority MappingFilter + + ConsumerAdmin = MappingFilter = #objref + + +

If set, this operation returns the associated priority MappingFilter, otherwise + a NIL object reference is returned.

+
+
+ + _set_priority_filter(ConsumerAdmin, MappingFilter) -> ok + Set the priority MappingFilter + + ConsumerAdmin = MappingFilter = #objref + + +

To associate a priority MappingFilter with the target object this operation + must be used.

+
+
+ + _get_lifetime_filter(ConsumerAdmin) -> MappingFilter + Return the associated lifetime MappingFilter + + ConsumerAdmin = MappingFilter = #objref + + +

Unless a lifetime MappingFilter have been associated with the target object + a NIL object reference is returned by this operation.

+
+
+ + _set_lifetime_filter(ConsumerAdmin, MappingFilter) -> ok + Set the lifetime MappingFilter + + ConsumerAdmin = MappingFilter = #objref + + +

This operation associate a lifetime MappingFilter with the target object.

+
+
+ + _get_pull_suppliers(ConsumerAdmin) -> ProxyIDSeq + Return a list of all associated pull supplier Id:s + + ConsumerAdmin = #objref + ProxyIDSeq = [ProxyID] + ProxyID = long() + + +

This readonly attribute maintains the Id's for all PullProxies created + by the target object and still alive.

+
+
+ + _get_push_suppliers(ConsumerAdmin) -> ProxyIDSeq + Return a list of all associated push supplier Id:s + + ConsumerAdmin = #objref + ProxyIDSeq = [ProxyID] + ProxyID = long() + + +

This attribute is similar to the _get_pull_suppliers attribute but maintains + the Id's for all PushProxies created by the target object and still alive.

+
+
+ + get_proxy_supplier(ConsumerAdmin, ProxyID) -> Reply + Return the proxy supplier with matching Id + + ConsumerAdmin = #objref + ProxyID = long() + Reply = Proxy | {'EXCEPTION', #'CosNotifyChannelAdmin_ProxyNotFound'{}} + Proxy = #objref + + +

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.

+
+
+ + obtain_notification_pull_supplier(ConsumerAdmin, ConsumerType) -> Reply + Create a supplier proxy + + ConsumerAdmin = #objref + ConsumerType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT' + Reply = {Proxy, ProxyID} + Proxy = #objref + ProxyID = long() + + +

Determined by the parameter ConsumerType, a proxy which will + accept events of the defined type is created. Along with the object reference an + Id is returned.

+
+
+ + obtain_pull_supplier(ConsumerAdmin) -> Proxy + Create a supplier proxy + + ConsumerAdmin = #objref + Proxy = #objref + + +

This operation creates a new proxy which accepts #any{} events.

+
+
+ + obtain_notification_push_supplier(ConsumerAdmin, ConsumerType) -> Reply + Create a supplier proxy + + ConsumerAdmin = #objref + ConsumerType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT' + Reply = {Proxy, ProxyID} + Proxy = #objref + ProxyID = long() + + +

A proxy which accepts events of the type described by the parameter ConsumerType + is created by this operation. A unique Id is returned as an out parameter.

+
+
+ + obtain_push_supplier(ConsumerAdmin) -> Proxy + Create a supplier proxy + + ConsumerAdmin = #objref + Proxy = #objref + + +

The object created by this function is a proxy which accepts #any{} events.

+
+
+ + destroy(ConsumerAdmin) -> ok + Terminate the target object and all its children + + ConsumerAdmin = #objref + + +

To terminate the target object this operation should be used. The associated + Channel will be notified.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + CosNotifyChannelAdmin_­EventChannel + ..._EventChannel + + + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_EventChannel + This module implements the OMG CosNotifyChannelAdmin::EventChannel interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotification_QoSAdmin

+
+ +

CosNotification_AdminPropertiesAdmin

+
+
+
+ + + _get_MyFactory(Channel) -> ChannelFactory + Return the factory object which created the target object + + Channel = #objref + ChannelFactory = #objref + + +

This readonly attribute maintains the reference of the event channel + factory that created the target channel.

+
+
+ + _get_default_consumer_admin(Channel) -> ConsumerAdmin + Return the default consumer admin associated with the target object + + Channel = #objref + ConsumerAdmin = #objref + + +

This is a readonly attribute which maintains a reference to a default + ConsumerAdmin object associated with the target object.

+
+
+ + _get_default_supplier_admin(Channel) -> SupplierAdmin + Return the default supplier admin associated with the target object + + Channel = #objref + SupplierAdmin = #objref + + +

This is a readonly attribute which maintains a reference to a default + SupplierAdmin object associated with the target object.

+
+
+ + _get_default_filter_factory(Channel) -> FilterFactory + Return the default filter factory associated with the target object + + Channel = #objref + FilterFactory = #objref + + +

The default FilterFactory associated with the target channel + is maintained by this readonly attribute.

+
+
+ + new_for_consumers(Channel, OpType) -> Return + Create a new ConsumerAdminobject + + Channel = #objref + OpType = 'AND_OP' | 'OR_OP' + Return = {ConsumerAdmin, AdminID} + ConsumerAdmin = #objref + AdminID = long() + + +

This operation creates a new instance of a ConsumerAdmin 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.

+
+
+ + for_consumers(Channel) -> ConsumerAdmin + Create a new ConsumerAdminobject + + Channel = #objref + ConsumerAdmin = #objref + + +

A new new instance of a ConsumerAdmin object is created but no + Id is returned. The returned object's operation type, i.e., 'AND_OP' or 'OR_OP', + will be set to the value of the configuration parameter filterOp. + The target object's Quality of Service properties will be inherited by the + returned ConsumerAdmin.

+
+
+ + new_for_suppliers(Channel, OpType) -> Return + Create a new SupplierAdminobject + + Channel = #objref + OpType = 'AND_OP' | 'OR_OP' + Return = {SupplierAdmin, AdminID} + SupplierAdmin = #objref + AdminID = long() + + +

Enables us to create a new instance of a SupplierAdmin. 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 SupplierAdmin.

+
+
+ + for_suppliers(Channel) -> SupplierAdmin + Create a new SupplierAdminobject + + Channel = #objref + SupplierAdmin = #objref + + +

To create a new SupplierAdmin with the target object's current + Quality of Service settings we can use this function. The returned object's + operation type ('AND_OP' or 'OR_OP') will be determined by the + configuration variable filterOp.

+
+
+ + get_consumeradmin(Channel, AdminID) -> ConsumerAdmin + Return the ConsumerAdminmatching AdminID + + Channel = #objref + AdminID = long() + ConsumerAdmin = #objref | {'EXCEPTION', #'CosNotifyChannelAdmin_AdminNotFound'{}} + + +

If the given Id is associated with a ConsumerAdmin the object reference + is returned. If such association never existed or the ConsumerAdmin + have terminated an exception is raised.

+
+
+ + get_supplieradmin(Channel, AdminID) -> SupplierAdmin + Return the SupplierAdminmatching AdminID + + Channel = #objref + AdminID = long() + SupplierAdmin = #objref | {'EXCEPTION', #'CosNotifyChannelAdmin_AdminNotFound'{}} + + +

Equal to the operation get_consumeradmin/2 but a reference to + a SupplierAdmin is returned.

+
+
+ + get_all_consumeradmins(Channel) -> Reply + Return a list of all ConsumerAdmins, currently active, Id:s + + Channel = #objref + Reply = [AdminID] + AdminID = long() + + +

To get access to all ConsumerAdmin Id's created by the target object, and still + alive, this operation could be invoked.

+
+
+ + get_all_supplieradmins(Channel) -> Reply + Return a list of all SupplierAdmins, currently active, Id:s + + Channel = #objref + Reply = [AdminID] + AdminID = long() + + +

Equal to the operation get_all_consumeradmins/1 but returns + a list of all SupplierAdmin object ID's.

+
+
+ + destroy(Channel) -> ok + Terminate the channel and all its children + + Channel = #objref + + +

The destroy operation will terminate the target channel and + all associated Admin objects.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + CosNotifyChannelAdmin_­EventChannelFactory + ..._EventChannelFactory + + + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_EventChannelFactory + This module implements the OMG CosNotifyChannelAdmin::EventChannelFactory interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+
+ + + create_channel(ChannelFactory, InitialQoS, InitialAdmin) -> Return + Create a new channel + + ChannelFactory = #objref + InitialQoS = CosNotification::QoSProperties + InitialAdmin = CosNotification::AdminProperties + Return = {EventChannel, ChannelID} + EventChannel = #objref + ChannelID = long() + + +

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 User's Guide.

+

If no QoS- and/or Admin-properties are supplied (i.e. empty list), + the default settings will be used. For more information, see the + User's Guide.

+
+
+ + get_all_channels(ChannelFactory) -> ChannelIDSeq + Return all Id:s for channels, currently alive, created by the target object + + ChannelFactory = #objref + ChannelIDSeq = [long()] + + +

This operation returns a id sequence of all channel's created by this ChannelFactory.

+
+
+ + get_event_channel(ChannelFactory, ChannelID) -> Return + Return the channel object associated with the given Id + + ChannelFactory = #objref + ChannelID = long() + Retrurn = EventChannel | {'EXCEPTION', #'CosNotifyChannelAdmin_ChannelNotFound'{}} + EventChannel = #objref + + +

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.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ProxyConsumer + ..._ProxyConsumer + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ProxyConsumer + This module implements the OMG CosNotifyChannelAdmin::ProxyConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+
+
+ + + _get_MyType(ProxyConsumer) -> ProxyType + Return the proxy type + + ProxyConsumer = #objref + ProxyType = 'PUSH_ANY' | 'PULL_ANY' | 'PUSH_STRUCTURED' | 'PULL_STRUCTURED' | 'PUSH_SEQUENCE' | 'PULL_SEQUENCE' + + +

This readonly attribute maintains the enumerant describing the which type the target object + is.

+
+
+ + _get_MyAdmin(ProxyConsumer) -> AdminObject + return the associated Adminobject + + ProxyConsumer = AdminObject = #objref + + +

This readonly attribute maintains the admin's reference which created the target object.

+
+
+ + obtain_subscription_types(ProxyConsumer, ObtainInfoMode) -> EventTypeSeq + Administer subscription types + + ProxyConsumer = #objref + ObtainInfoMode = 'ALL_NOW_UPDATES_OFF' | 'ALL_NOW_UPDATES_ON' | 'NONE_NOW_UPDATES_OFF' | 'NONE_NOW_UPDATES_ON' + EventTypeSeq = [EventType] + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + + +

Depending on the input parameter ObtainInfoMode, this operation may return a + sequence of the EventTypes the target object is interested in receiving. + If 'ALL_NOW_UPDATES_OFF' or 'ALL_NOW_UPDATES_ON' is given a sequence will + be returned, otherwise not. If 'ALL_NOW_UPDATES_OFF' or 'NONE_NOW_UPDATES_OFF' + are issued the target object will not inform the associated NotifySubscribe object + when an update occurs. 'ALL_NOW_UPDATES_ON' or 'NONE_NOW_UPDATES_ON' will + result in that update information will be sent.

+
+
+ + validate_event_qos(ProxyConsumer, QoSProperties) -> Reply + Check if certain Quality of Service properties can be added to events in the current context of the target object + + ProxyConsumer = #objref + QoSProperties = [QoSProperty] + QoSProperty = #'CosNotification_Property'{name, value} + name = string() + value = #any + Reply = {ok, NamedPropertyRangeSeq} | {'EXCEPTION', CosNotification_UnsupportedQoS{qos_err}} + NamedPropertyRangeSeq = [NamedPropertyRange] + NamedPropertyRange = #CosNotification_NamedPropertyRange{name, range} + name = string() + range = #CosNotification_PropertyRange{low_val, high_val} + low_val = #any + high_val = #any + qos_err = PropertyErrorSeq + PropertyErrorSeq = [PropertyError] + PropertyError = #'CosNotification_PropertyError'{code, name, available_range} + code = 'UNSUPPORTED_PROPERTY' | 'UNAVAILABLE_PROPERTY' | 'UNSUPPORTED_VALUE' | 'UNAVAILABLE_VALUE' | 'BAD_PROPERTY' | 'BAD_TYPE' | 'BAD_VALUE' + name = string() + available_range = PropertyRange + PropertyRange = #CosNotification_PropertyRange{low_val, high_val} + low_val = high_val = #any + + +

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.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ProxyPullConsumer + ..._ProxyPullConsumer + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ProxyPullConsumer + This module implements the OMG CosNotifyChannelAdmin::ProxyPullConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifyPublish

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxyConsumer

+
+
+
+ + + connect_any_pull_supplier(ProxyPullConsumer, PullSupplier) -> Reply + Connect a supplier to the proxy + + ProxyPullConsumer = #objref + PullSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}} + + +

This operation connects the given PullSupplier to the target object. + If a client is already connected the AlreadyConnected exception + will be raised. The client must support the operations pull and + try_pull, otherwise the TypeError exception is raised.

+
+
+ + suspend_connection(ProxyPullConsumer) -> Reply + Suspend the connection between the client and the proxy + + ProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + resume_connection(ProxyPullConsumer) -> Reply + Resume a previously suspended connection with the proxy + + ProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyActive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + disconnect_pull_consumer(ProxyPullConsumer) -> ok + Close the connection and terminate the proxy + + ProxyPullConsumer = #objref + + +

Invoking this operation disconnects the client from the target object which + then terminates and inform its administrative parent.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ProxyPullSupplier + ..._ProxyPullSupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ProxyPullSupplier + This module implements the OMG CosNotifyChannelAdmin::ProxyPullSupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxySupplier

+
+
+
+ + + connect_any_pull_consumer(ProxyPullSupplier, PullConsumer) -> Reply + Connect a consumer to the proxy + + ProxyPullSupplier = #objref + PullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} + + +

This operation connects the given PullConsumer to the target object. + If a connection already exists the AlreadyConnected exception is + raised.

+
+
+ + pull(ProxyPullSupplier) -> Reply + Pull an Any event from the proxy + + ProxyPullSupplier = #objref + Reply = #any | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + + +

This operation pulls next #any{} 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 Disconnected exception is raised.

+
+
+ + try_pull(ProxyPullSupplier) -> Reply + Try and pull an Any event from the proxy + + ProxyPullSupplier = #objref + Reply = {#any, HasEvent} | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + HasEvent = boolean() + + +

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 Disconnected exception is raised.

+
+
+ + disconnect_pull_supplier(ProxyPullSupplier) -> ok + Close the connection and terminate the proxy + + ProxyPullSupplier = #objref + + +

Invoking this operation will cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ProxyPushConsumer + ..._ProxyPushConsumer + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ProxyPushConsumer + This module implements the OMG CosNotifyChannelAdmin::ProxyPushConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifyPublish

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxyConsumer

+
+
+
+ + + connect_any_push_supplier(ProxyPushConsumer, PushSupplier) -> Reply + Connect a supplier to the proxy + + ProxyPushConsumer = #objref + PushSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} + + +

This operation connects a PushSupplier to the target object. If + a connection already exists the AlreadyConnected exception is raised.

+
+
+ + push(ProxyPushConsumer, Event) -> Reply + Push an Any event to the proxy + + ProxyPushConsumer = #objref + Event = #any + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + + +

This operation pushes an #any{} event to the target object. If no client + have been connected the Disconnected exception is raised.

+
+
+ + disconnect_push_consumer(ProxyPushConsumer) -> ok + Close the connection and terminate the proxy + + ProxyPushConsumer = #objref + + +

Invoking this operation will cause the target object to close the connection and + terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ProxyPushSupplier + ..._ProxyPushSupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ProxyPushSupplier + This module implements the OMG CosNotifyChannelAdmin::ProxyPushSupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmi

+
+ +

CosNotifyChannelAdmin_ProxySupplier

+
+
+
+ + + connect_any_push_consumer(ProxyPushSupplier, PushConsumer) -> Reply + Connect a consumer to the proxy + + ProxyPushSupplier = #objref + PushConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}} + + +

This operation connects a PushConsumer to the target object. If + a connection already exists or the given client does not support + the operation push an exception, AlreadyConnected and + TypeError respectively, is raised.

+
+
+ + suspend_connection(ProxyPushSupplier) -> Reply + Suspend the connection between the proxy and the client + + ProxyPushSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + resume_connection(ProxyPushSupplier) -> Reply + Resume a previously suspended connection with the proxy + + ProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + disconnect_push_supplier(ProxyPushSupplier) -> ok + Close the connection and terminate the proxy + + ProxyPushSupplier = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­ProxySupplier + ..._ProxySupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_ProxySupplier + This module implements the OMG CosNotifyChannelAdmin::ProxySupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+
+
+ + + _get_MyType(ProxySupplier) -> ProxyType + Return the proxy type + + ProxySupplier = #objref + ProxyType = 'PUSH_ANY' | 'PULL_ANY' | 'PUSH_STRUCTURED' | 'PULL_STRUCTURED' | 'PUSH_SEQUENCE' | 'PULL_SEQUENCE' + + +

This readonly attribute maintains the enumerant describing the which type the target object + is.

+
+
+ + _get_MyAdmin(ProxySupplier) -> AdminObject + Return the target object's associated Adminobject + + ProxySupplier = #objref + AdminObject = #objref + + +

This readonly attribute maintains the admin's reference which created the target object.

+
+
+ + _get_priority_filter(ProxySupplier) -> MappingFilter + Return the target object's associated priority MappingFilter + + ProxySupplier = #objref + MappingFilter = #objref + + +

This operation returns the associated priority MappingFilter. + If no such object exist a NIL reference is returned.

+
+
+ + _set_priority_filter(ProxySupplier, MappingFilter) -> ok + Set the target object's associated priority MappingFilter + + ProxySupplier = #objref + MappingFilter = #objref + + +

This operation associate a new priority MappingFilter with the target object.

+
+
+ + _get_lifetime_filter(ProxySupplier) -> MappingFilter + Return the target object's associated lifetime MappingFilter + + ProxySupplier = #objref + MappingFilter = #objref + + +

This operation returns the associated lifetime MappingFilter. + If no such object exist a NIL reference is returned.

+
+
+ + _set_lifetime_filter(ProxySupplier, MappingFilter) -> ok + Set the target object's associated lifetime MappingFilter + + ProxySupplier = #objref + MappingFilter = #objref + + +

This operation associate a new lifetime MappingFilter with the target object.

+
+
+ + obtain_offered_types(ProxySupplier, ObtainInfoMode) -> EventTypeSeq + Administer the type of events the proxy supplies + + ProxySupplier = #objref + ObtainInfoMode = 'ALL_NOW_UPDATES_OFF' | 'ALL_NOW_UPDATES_ON' | 'NONE_NOW_UPDATES_OFF' | 'NONE_NOW_UPDATES_ON' + EventTypeSeq = [EventType] + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + + +

Depending on the input parameter ObtainInfoMode, this operation may return a + sequence of the EventTypes the target object is interested in receiving. + If 'ALL_NOW_UPDATES_OFF' or 'ALL_NOW_UPDATES_ON' is given a sequence will + be returned, otherwise not. If 'ALL_NOW_UPDATES_OFF' or 'NONE_NOW_UPDATES_OFF' + are issued the target object will not inform the associated NotifySubscribe object + when an update occurs. 'ALL_NOW_UPDATES_ON' or 'NONE_NOW_UPDATES_ON' will + result in that update information will be sent.

+
+
+ + validate_event_qos(ProxySupplier, QoSProperties) -> Reply + Check if the QoS properties can be set + + ProxySupplier = #objref + QoSProperties = [QoSProperty] + QoSProperty = #'CosNotification_Property'{name, value} + name = string() + value = #any + Reply = {ok, NamedPropertyRangeSeq} | {'EXCEPTION', CosNotification_UnsupportedQoS{qos_err}} + NamedPropertyRangeSeq = [NamedPropertyRange] + NamedPropertyRange = #CosNotification_NamedPropertyRange{name, range} + name = string() + range = #CosNotification_PropertyRange{low_val, high_val} + low_val = #any + high_val = #any + qos_err = PropertyErrorSeq + PropertyErrorSeq = [PropertyError] + PropertyError = #'CosNotification_PropertyError'{code, name, available_range} + code = 'UNSUPPORTED_PROPERTY' | 'UNAVAILABLE_PROPERTY' | 'UNSUPPORTED_VALUE' | 'UNAVAILABLE_VALUE' | 'BAD_PROPERTY' | 'BAD_TYPE' | 'BAD_VALUE' + name = string() + available_range = PropertyRange + PropertyRange = #CosNotification_PropertyRange{low_val, high_val} + low_val = high_val = #any + + +

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.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­SequenceProxyPullConsumer + ..._SequenceProxyPullConsumer + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_SequenceProxyPullConsumer + This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPullConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifyPublish

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxyConsumer

+
+
+
+ + + connect_sequence_pull_supplier(SequenceProxyPullConsumer, PullSupplier) -> Reply + Connect a supplier to the proxy + + SequenceProxyPullConsumer = #objref + PullSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}} + + +

This operation connects a PullSupplier to the target object. If a + connection already exists or the supplied client does not support the functions + pull_structured_events and try_pull_structured_events an exception + is raised.

+
+
+ + suspend_connection(SequenceProxyPullConsumer) -> Reply + Suspend the connection with the proxy + + SequenceProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + resume_connection(SequenceProxyPullConsumer) -> Reply + Resume a previously suspended connection with the proxy + + SequenceProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + disconnect_sequence_pull_consumer(SequenceProxyPullConsumer) -> ok + Close connection and terminate the proxy + + SequenceProxyPullConsumer = #objref + + +

This operation close the connection to the client and terminates the target object.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­SequenceProxyPullSupplier + ..._SequenceProxyPullSupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_SequenceProxyPullSupplier + This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPullSupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxySupplier

+
+
+
+ + + connect_sequence_pull_consumer(SequenceProxyPullSupplier, PullConsumer) -> Reply + Connect a consumer to the proxy + + SequenceProxyPullSupplier = #objref + PullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} + + +

This operation connects a PullConsumer to the target object. If a connection + already exists an exception is raised.

+
+
+ + pull_structured_events(SequenceProxyPullSupplier, MaxEvents) -> Reply + Pull structured events from the proxy + + SequenceProxyPullSupplier = #objref + MaxEvents = long() + Reply = EventBatch | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + EventBatch = [StructuredEvent] + StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body} + header = EventHeader + filterable_data = [#'CosNotification_Property'{name, value}] + name = string() + value = #any + remainder_of_body = #any + EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header} + fixed_header = FixedEventHeader + variable_header = OptionalHeaderFields + FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name} + event_type = EventType + event_name = string() + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + OptionalHeaderFields = [#'CosNotification_Property'{name, value}] + + +

A client use this operation to pull next event sequence of maximum length + MaxEvents. This operation is blocking and will not reply until the + requested amount of events can be delivered or the QoS property PacingInterval + is reached. For more information see the User's Guide.

+
+
+ + try_pull_structured_events(SequenceProxyPullSupplier, MaxEvents) -> Reply + Try to pull structured events from the proxy + + SequenceProxyPullSupplier = #objref + MaxEvents = long() + Reply = {EventBatch, HasEvent} | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + HasEvent = boolean() + EventBatch = [StructuredEvent] + StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body} + header = EventHeader + filterable_data = [#'CosNotification_Property'{name, value}] + name = string() + value = #any + remainder_of_body = #any + EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header} + fixed_header = FixedEventHeader + variable_header = OptionalHeaderFields + FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name} + event_type = EventType + event_name = string() + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + OptionalHeaderFields = [#'CosNotification_Property'{name, value}] + + +

This operation pulls an event sequence of the maximum length MaxEvents, + but do not block if the target object have no events to forward. The outparameter, + HasEvent is true if the sequence contain any events.

+
+
+ + disconnect_sequence_pull_supplier(SequenceProxyPullSupplier) -> ok + Close the connection and terminate the proxy + + SequenceProxyPullSupplier = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + CosNotifyChannelAdmin_­SequenceProxyPushConsumer + ..._SequenceProxyPushConsumer + + + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_­SequenceProxyPushConsumer + This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPushConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifyPublish

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxyConsumer

+
+
+
+ + + connect_sequence_push_supplier(SequenceProxyPushConsumer, PushSupplier) -> Reply + Connect a supplier to the proxy + + SequenceProxyPushConsumer = #objref + PushSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} + + +

This operation connects a PushSupplier to the target object. If a + connection already exists the AlreadyConnected exception is raised.

+
+
+ + push_structured_events(SequenceProxyPushConsumer, EventBatch) -> Reply + Push a structured event to the proxy + + SequenceProxyPushConsumer = #objref + EventBatch = [StructuredEvent] + StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body} + header = EventHeader + filterable_data = [#'CosNotification_Property'{name, value}] + name = string() + value = #any + remainder_of_body = #any + EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header} + fixed_header = FixedEventHeader + variable_header = OptionalHeaderFields + FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name} + event_type = EventType + event_name = string() + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + OptionalHeaderFields = [#'CosNotification_Property'{name, value}] + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + + +

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 Disconnected exception + is raised.

+
+
+ + disconnect_sequence_push_consumer(SequenceProxyPushConsumer) -> ok + Close connection and terminate the proxy + + SequenceProxyPushConsumer = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­SequenceProxyPushSupplier + ..._SequenceProxyPushSupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_­SequenceProxyPushSupplier + This module implements the OMG CosNotifyChannelAdmin::SequenceProxyPushSupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxySupplier

+
+
+
+ + + connect_sequence_push_consumer(SequenceProxyPushSupplier, PushConsumer) -> Reply + Connect a consumer to the proxy + + SequenceProxyPushSupplier = #objref + PushConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}} + + +

This operation connects a PushConsumer to the target object. If a + connection already exists or the function psuh_structured_events + is not supported the exceptions AlreadyConnected or + TypeError will be raised respectively.

+
+
+ + suspend_connection(SequenceProxyPushSupplier) -> Reply + Suspend the connection between the client and the target object + + SequenceProxyPushSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + resume_connection(SequenceProxyPushSupplier) -> Reply + Resume a previously suspended connection with the proxy + + SequenceProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + disconnect_sequence_push_supplier(SequenceProxyPushSupplier) -> ok + Close the connection and terminate the proxy + + SequenceProxyPushSupplier = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­StructuredProxyPullConsumer + ..._StructuredProxyPullConsumer + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_­StructuredProxyPullConsumer + This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPullConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifyPublish

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxyConsumer

+
+
+
+ + + connect_structured_pull_supplier(StructuredProxyPullConsumer, PullSupplier) -> Reply + Connect a supplier to the proxy + + StructuredProxyPullConsumer = #objref + PullSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}} + + +

This operation connects a PullSupplier to the target object. If a connection + already exists or the given client object does not support the functions + pull_structured_event and try_pull_structured_event an exception is raised.

+
+
+ + suspend_connection(StructuredProxyPullConsumer) -> Reply + Suspend the connection between the target object and its client + + StructuredProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

This operation suspends the connection between the target object and its client. + If no connection exists or already suspended an exception is raised.

+
+
+ + resume_connection(StructuredProxyPullConsumer) -> Reply + Resume a previously suspended connection with the proxy + + StructuredProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + disconnect_structured_pull_consumer(StructuredProxyPullConsumer) -> ok + Close the connection and terminate the proxy + + StructuredProxyPullConsumer = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­StructuredProxyPullSupplier + ..._StructuredProxyPullSupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_­StructuredProxyPullSupplier + This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPullSupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxySupplier

+
+
+
+ + + connect_structured_pull_consumer(StructuredProxyPullSupplier, PullConsumer) -> Reply + Connect a consumer to the proxy + + StructuredProxyPullSupplier = #objref + PullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} + + +

This operation connects a PullConsumer to the target object. If a connection + already exists the AlreadyConnected exception is raised.

+
+
+ + pull_structured_event(StructuredProxyPullSupplier) -> Reply + Pull a structured event from the proxy + + StructuredProxyPullSupplier = #objref + Reply = StructuredEvent | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body} + header = EventHeader + filterable_data = [#'CosNotification_Property'{name, value}] + name = string() + value = #any + remainder_of_body = #any + EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header} + fixed_header = FixedEventHeader + variable_header = OptionalHeaderFields + FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name} + event_type = EventType + event_name = string() + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + OptionalHeaderFields = [#'CosNotification_Property'{name, value}] + + +

This operation pulls next event from the target object; if an event cannot + be delivered this function blocks until an event arrives.

+
+
+ + try_pull_structured_event(StructuredProxyPullSupplier) -> Reply + Try to pull a structured event from the proxy + + StructuredProxyPullSupplier = #objref + Reply = {StructuredEvent, HasEvent} | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + HasEvent = boolean() + StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body} + header = EventHeader + filterable_data = [#'CosNotification_Property'{name, value}] + name = string() + value = #any + remainder_of_body = #any + EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header} + fixed_header = FixedEventHeader + variable_header = OptionalHeaderFields + FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name} + event_type = EventType + event_name = string() + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + OptionalHeaderFields = [#'CosNotification_Property'{name, value}] + + +

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 HasEvent is set to false. Otherwise, + the boolean flag is set to true and an valid event is returned.

+
+
+ + disconnect_structured_pull_supplier(StructuredProxyPullSupplier) -> ok + Close connection and terminate the proxy + + StructuredProxyPullSupplier = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­StructuredProxyPushConsumer + ..._StructuredProxyPushConsumer + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_­StructuredProxyPushConsumer + This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPushConsumer interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifyPublish

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxyConsumer

+
+
+
+ + + connect_structured_push_supplier(StructuredProxyPushConsumer, PushSupplier) -> Reply + Connect a supplier to the proxy + + StructuredProxyPushConsumer = #objref + PushSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} + + +

This operation connects a PushSupplier to the target object. If a connection + already exists an exception is raised.

+
+
+ + push_structured_event(StructuredProxyPushConsumer, StructuredEvent) -> Reply + Push a structured event to the proxy + + StructuredProxyPushConsumer = #objref + StructuredEvent = #'CosNotification_StructuredEvent'{header, filterable_data, remainder_of_body} + header = EventHeader + filterable_data = [#'CosNotification_Property'{name, value}] + name = string() + value = #any + remainder_of_body = #any + EventHeader = #'CosNotification_EventHeader'{fixed_header, variable_header} + fixed_header = FixedEventHeader + variable_header = OptionalHeaderFields + FixedEventHeader = #'CosNotification_FixedEventHeader'{event_type, event_name} + event_type = EventType + event_name = string() + EventType = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + OptionalHeaderFields = [#'CosNotification_Property'{name, value}] + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_Disconnected'{}} + + +

When a client want to push a new event to the target object this operation must be used.

+
+
+ + disconnect_structured_push_consumer(StructuredProxyPushConsumer) -> ok + Close the connection and terminate the proxy + + StructuredProxyPushConsumer = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­StructuredProxyPushSupplier + ..._StructuredProxyPushSupplier + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_­StructuredProxyPushSupplier + This module implements the OMG CosNotifyChannelAdmin::StructuredProxyPushSupplier interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotifyComm_NotifySubscribe

+
+ +

CosNotification_QoSAdmin

+
+ +

CosNotifyFilter_FilterAdmin

+
+ +

CosNotifyChannelAdmin_ProxySupplier

+
+
+
+ + + connect_structured_push_consumer(StructuredProxyPushSupplier, PushConsumer) -> Reply + Connect a consumer to the proxy + + StructuredProxyPushSupplier = #objref + PushConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosEventChannelAdmin_AlreadyConnected'{}} | {'EXCEPTION', #'CosEventChannelAdmin_TypeError'{}} + + +

This operation connects a PushConsumer to the target object. If + a connection already exists or the function push_structured_event + is not supported by the client object an exception is raised.

+
+
+ + suspend_connection(StructuredProxyPushSupplier) -> Reply + Suspend the connection with the target object + + StructuredProxyPushSupplier = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

This operation suspends the connection with the target object. If no connection + exists or the connection already is suspended an exception is raised.

+
+
+ + resume_connection(StructuredProxyPushSupplier) -> Reply + Resume a previously suspended connection + + StructuredProxyPullConsumer = #objref + Reply = ok | {'EXCEPTION', #'CosNotifyChannelAdmin_ConnectionAlreadyInactive'{}} | {'EXCEPTION', #'CosNotifyChannelAdmin_NotConnected'{}} + + +

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.

+
+
+ + disconnect_structured_push_supplier(StructuredProxyPushSupplier) -> ok + Close the connection and terminate the target object + + StructuredProxyPushSupplier = #objref + + +

This operation cause the target object to close the connection and terminate.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyChannelAdmin_­SupplierAdmin + ..._SupplierAdmin + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyChannelAdmin_SupplierAdmin + This module implements the OMG CosNotifyChannelAdmin::SupplierAdmin interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module also exports the functions described in:

+ + +

CosNotification_QoSAdmin

+
+ +

CosNotifyComm_NotifyPublish

+
+ +

CosNotifyFilter_FilterAdmin

+
+
+
+ + + _get_MyID(SupplierAdmin) -> AdminID + Return the objects Id + + SupplierAdmin = #objref + AdminID = long() + + +

When a SupplierAdmin object is created it is given a unique Id + by the creating channel. This readonly attribute maintains this Id.

+
+
+ + _get_MyChannel(SupplierAdmin) -> Channel + Return the objects associated channel + + SupplierAdmin = #objref + Channel = #objref + + +

The creating channel's reference is maintained by this readonly attribute.

+
+
+ + _get_MyOperator(SupplierAdmin) -> OpType + Return the filter scheme + + SupplierAdmin = #objref + OpType = 'AND_OP' | 'OR_OP' + + +

The Operation Type, which determines the semantics the target object will + use for any associated Filters, is maintained by this readonly attribute.

+
+
+ + _get_pull_consumers(SupplierAdmin) -> ProxyIDSeq + Return all associated pull consumers Id:s + + SupplierAdmin = #objref + ProxyIDSeq = [ProxyID] + ProxyID = long() + + +

A sequence of all associated PullProxy Id's is maintained by this + readonly attribute.

+
+
+ + _get_push_consumers(SupplierAdmin) -> ProxyIDSeq + Return all associated push consumers Id:s + + SupplierAdmin = #objref + ProxyIDSeq = [ProxyID] + ProxyID = long() + + +

This operation returns all PushProxy Id's created by the target + object.

+
+
+ + get_proxy_consumer(SupplierAdmin, ProxyID) -> Reply + Return the Proxy which corresponds to the given Id + + SupplierAdmin = #objref + ProxyID = long() + Reply = Proxy | {'EXCEPTION', #'CosNotifyChannelAdmin_ProxyNotFound'{}} + Proxy = #objref + + +

The Proxy which corresponds to the given Id is returned by this operation.

+
+
+ + obtain_notification_pull_consumer(SupplierAdmin, SupplierType) -> Reply + Create a new proxy + + SupplierAdmin = #objref + SupplierType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT' + Reply = {Proxy, ProxyID} + Proxy = #objref + ProxyID = long() + + +

This operation creates a new proxy and returns its object reference along with its ID. + The SupplierType parameter determines the event type accepted by the proxy.

+
+
+ + obtain_pull_consumer(SupplierAdmin) -> Proxy + Create a new proxy + + SupplierAdmin = #objref + Proxy = #objref + + +

A proxy which accepts #any{} events is created by this operation.

+
+
+ + obtain_notification_push_consumer(SupplierAdmin, SupplierType) -> Reply + Create a new proxy + + SupplierAdmin = #objref + SupplierType = 'ANY_EVENT' | 'STRUCTURED_EVENT' | 'SEQUENCE_EVENT' + Reply = {Proxy, ProxyID} + Proxy = #objref + ProxyID = long() + + +

Determined by the SupplierType parameter a compliant proxy is created and + its object reference along with its Id is returned by this operation.

+
+
+ + obtain_push_consumer(SupplierAdmin) -> Proxy + Create a new proxy + + SupplierAdmin = #objref + Proxy = #objref + + +

A proxy which accepts #any{} events is created by this operation.

+
+
+ + destroy(SupplierAdmin) -> ok + Terminate the target object + + SupplierAdmin = #objref + + +

This operation terminates the SupplierAdmin object and notifies the creating channel + that the target object no longer is active.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyComm_NotifyPublish + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyComm_NotifyPublish + This module implements the OMG CosNotifyComm::NotifyPublish interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

All objects, which inherit this interface, export functions described in this module.

+
+ + + offer_change(Object, Added, Removed) -> Reply + Inform the target object which type of events the supplier will deliver + + Object = #objref + Added = Removed = EventTypeSeq + EventTypeSeq = [type] + Reply = ok | {'EXCEPTION', CosNotifyComm_InvalidEventType{type}} + type = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + + +

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.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyComm_­NotifySubscribe + ..._NotifySubscribe + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyComm_NotifySubscribe + This module implements the OMG CosNotifyComm::NotifySubscribe interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

All objects, which inherit this interface, export functions described in this module.

+
+ + + subscription_change(Object, Added, Removed) -> Reply + Inform the target object which event types the client will and will not accept in the future + + Object = #objref + Added = Removed = EventTypeSeq + EventTypeSeq = [type] + Reply = ok | {'EXCEPTION', CosNotifyComm_InvalidEventType{type}} + type = #'CosNotification_EventType'{domain_name, type_name} + domain_name = type_name = string() + + +

This operation takes as input two sequences of event type names + specifying events the client will and will not accept in the future + respectively.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + CosNotifyFilter_Filter + + + + 2000-02-01 + 1.0 +
+ CosNotifyFilter_Filter + This module implements the OMG CosNotifyFilter::Filter interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+
+ + + _get_constraint_grammar(Filter) -> Grammar + Return which type of Grammar the Filter uses + + Filter = #objref + Grammar = string() + + +

This operation returns which type of Grammar the Filter uses. Currently, only "EXTENDED_TCL" is supported.

+
+
+ + add_constraints(Filter, ConstraintExpSeq) -> Reply + Add new constraints to the filter + + Filter = #objref + ConstraintExpSeq = [Constraint] + ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + Reply = ConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} + constr = ConstraintExp + ConstraintInfoSeq = [ConstraintInfo] + ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id} + constraint_expression = ConstraintExp + constraint_id = long() + + +

Initially, Filters do not contain any constraints, hence, all events will be forwarded. + The add_constraints/2 operation allow us to add constraints to the target object.

+
+
+ + modify_constraints(Filter, ConstraintIDSeq, ConstraintInfoSeq) -> Reply + Modify existing constraints + + Filter = #objref + ConstraintIDSeq = [ConstraintID] + ConstraintID = long() + ConstraintInfoSeq = [ConstraintInfo] + ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id} + constraint_expression = ConstraintExp + constraint_id = long() + Reply = ok | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}} + constr = ConstraintExp + id = long() + ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + + +

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 + ConstraintIDSeq will, if all values are valid, be deleted. The ConstraintInfoSeq + 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.

+
+
+ + get_constraints(Filter, ConstraintIDSeq) -> Reply + Return all constraints which match the supplied Ids + + Filter = #objref + ConstraintIDSeq = [ConstraintID] + ConstraintID = long() + Reply = ConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}} + ConstraintInfoSeq = [ConstraintInfo] + ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id} + constraint_expression = ConstraintExp + constraint_id = id = long() + + +

This operation return a sequence of ConstraintInfo's, related to the given ConstraintID's, + associated with the target object.

+
+
+ + get_all_constraints(Filter) -> ConstraintInfoSeq + Return all constraints associated with the target object + + Filter = #objref + ConstraintInfoSeq = [ConstraintInfo] + ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id} + constraint_expression = ConstraintExp + constraint_id = long() + + +

All constraints, and their unique Id, associated with the target object will be returned by this operation.

+
+
+ + remove_all_constraints(Filter) -> ok + Remove all constraints associated with the target object + + Filter = #objref + + +

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.

+
+
+ + destroy(Filter) -> ok + Terminate the target object + + Filter = #objref + + +

This operation terminates the target object.

+
+
+ + match(Filter, Event) -> Reply + Match the Any event if it satisfies at least one constraint + + Filter = #objref + Event = #any + Reply = boolean() | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}} + + +

This operation accepts an #any{} event and returns true 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.

+
+
+ + match_structured(Filter, Event) -> Reply + Match the structured event if it satisfies at least one constraint + + Filter = #objref + Event = #'CosNotification_StructuredEvent'{} + Reply = boolean() | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}} + + +

This operation is similar to the match operation but accepts structured + events instead.

+
+
+ + attach_callback(Filter, NotifySubscribe) -> CallbackID + Connect NotifySubscribe object, which should be informed when the target object's constraints are updated + + Filter = #objref + NotifySubscribe = #objref + CallbackID = long() + + +

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.

+
+
+ + detach_callback(Filter, CallbackID) -> Reply + Disconnect the NotifySubscribe object with the given Id + + Filter = #objref + CallbackID = long() + Reply = ok | {'EXCEPTION', #'CosNotifyFilter_CallbackNotFound'{}} + + +

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.

+
+
+ + get_callbacks(Filter) -> CallbackIDSeq + Return all NotifySubscribe Id's associated with the target object + + Filter = #objref + CallbackIDSeq = [CallbackID] + CallbackID = long() + + +

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.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyFilter_FilterAdmin + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyFilter_FilterAdmin + This module implements the OMG CosNotifyFilter::FilterAdmin interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

All objects, which inherit this interface, export functions described in this module.

+
+ + + add_filter(Object, Filter) -> FilterID + Add a new filter to the target object + + Object = #objref + Filter = #objref + FilterID = long() + + +

This operation connects a new Filter to the target object. This Filter will, together + with other associated Filters, 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 Filter.

+
+
+ + remove_filter(Object, FilterID) -> ok + Remove a filter associated with the target object + + Object = #objref + FilterID = long() + + +

If a certain Filter no longer should be associated with the target object + this operation must be used. Events will no longer be tested against the Filter + associated with the given Id.

+
+
+ + get_filter(Object, FilterID) -> Reply + Return the filter with the given Id + + Object = #objref + FilterID = long() + Reply = Filter | {'EXCEPTION', #'CosNotifyFilter_FilterNotFound'{}} + Filter = #objref + + +

If the target object is associated with a Filter matching the given Id the + reference will be returned. If no such Filter is known by the target object + an exception is raised.

+
+
+ + get_all_filters(Object) -> FilterIDSeq + Return a list of all filter Id:s associated with the target object + + Object = #objref + FilterIDSeq = [FilterID] + FilterID = long() + + +

Id's for all Filter objects associated with the target object is + returned by this operation.

+
+
+ + remove_all_filters(Object) -> ok + Remove all filters from the target object + + Object = #objref + + +

If we want to remove all Filters associated with the target object we can use this function.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 2000 + 2007 + Ericsson AB, 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. + + The Initial Developer of the Original Code is Ericsson AB. + + + CosNotifyFilter_FilterFactory + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-02-01 + 1.0 +
+ CosNotifyFilter_FilterFactory + This module implements the OMG CosNotifyFilter::FilterFactory interface. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+
+ + + create_filter(FilterFactory, Grammar) -> Reply + Create a Filterobject + + FilterFactory = #objref + Grammar = string() + Reply = Filter | {'EXCEPTION', #'CosNotifyFilter_InvalidGrammar'{}} + Filter = #objref + + +

This operation creates a new Filter object, under the condition + that Grammar given is supported. Currently, only "EXTENDED_TCL" is supported.

+
+
+ + create_mapping_filter(FilterFactory, Grammar) -> Reply + Create a MappingFilterobject + + FilterFactory = #objref + Grammar = string() + Reply = MappingFilter | {'EXCEPTION', #'CosNotifyFilter_InvalidGrammar'{}} + Filter = #objref + + +

This operation creates a new MappingFilter object, under the condition + that Grammar given is supported. Currently, only "EXTENDED_TCL" is supported.

+
+
+
+ +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + CosNotifyFilter_MappingFilter + + + + 2000-02-01 + 1.0 +
+ CosNotifyFilter_MappingFilter + This module implements the OMG CosNotifyFilter::MappingFilter interface. + +

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.

+

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+
+ + + _get_constraint_grammar(MappingFilter) -> Grammar + Return which type of Grammar the MappingFilter uses + + MappingFilter = #objref + Grammar = string() + + +

This operation returns which type of Grammar the MappingFilter uses. + Currently, only "EXTENDED_TCL" is supported.

+
+
+ + _get_value_type(MappingFilter) -> CORBA::TypeCode + Return the CORBA::TypeCodeof the default value associated with the target object + + MappingFilter = #objref + + +

This readonly attribute maintains the CORBA::TypeCode of the default value + associated with the target object.

+
+
+ + _get_default_value(MappingFilter) -> #any + Return the #any{} default value associated with the target object + + MappingFilter = #objref + + +

This readonly attribute maintains the #any{} default value associated with + the target object.

+
+
+ + add_mapping_constraints(MappingFilter, MappingConstraintPairSeq) -> Reply + Add new mapping constraints + + MappingFilter = #objref + MappingConstraintPairSeq = [MappingConstraintPair] + MappingConstraintPair = #'CosNotifyFilter_MappingConstraintPair'{constraint_expression, result_to_set} + constraint_expression = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + result_to_set = #any + Reply = MappingConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_InvalidValue'{constr, value}} + constr = ConstraintExp + ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + MappingConstraintInfoSeq = [MappingConstraintInfo] + MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value} + constraint_expression = ConstraintExp + constraint_id = long() + value = #any + + +

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.

+
+
+ + modify_constraints(MappingFilter, ConstraintIDSeq, MappingConstraintInfoSeq) -> Reply + Modify the constraints associated with the target object + + MappingFilter = #objref + ConstraintIDSeq = [ConstraintID] + ConstraintID = long() + MappingConstraintInfoSeq = [MappingConstraintInfo] + MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value} + constraint_expression = ConstraintExp + constraint_id = long() + value = #any + ConstraintInfoSeq = [ConstraintInfo] + ConstraintInfo = #'CosNotifyFilter_ConstraintInfo'{constraint_expression, constraint_id} + constraint_expression = ConstraintExp + constraint_id = long() + Reply = ok | {'EXCEPTION', #'CosNotifyFilter_InvalidConstraint'{constr}} | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}} | {'EXCEPTION', #'CosNotifyFilter_InvalidValue'{constr, value}} + constr = ConstraintExp + id = long() + value = #any + ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + + +

The ConstraintIDSeq 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 MappingConstraintInfo 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.

+
+
+ + get_mapping_constraints(MappingFilter, ConstraintIDSeq) -> Reply + Return the target object's associated constraints with given ID:s + + MappingFilter = #objref + ConstraintIDSeq = [ConstraintID] + ConstraintID = long() + Reply = MappingConstraintInfoSeq | {'EXCEPTION', #'CosNotifyFilter_ConstraintNotFound'{id}} + MappingConstraintInfoSeq = [MappingConstraintInfo] + MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value} + constraint_expression = ConstraintExp + ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + constraint_id = id = long() + value = #any + + +

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.

+
+
+ + get_all_mapping_constraints(MappingFilter) -> MappingConstraintInfoSeq + Return the target object's all associated constraints + + MappingFilter = #objref + MappingConstraintInfoSeq = [MappingConstraintInfo] + MappingConstraintInfo = #'CosNotifyFilter_MappingConstraintInfo'{constraint_expression, constraint_id, value} + constraint_expression = ConstraintExp + ConstraintExp = #'CosNotifyFilter_ConstraintExp'{event_types, constraint_expr} + event_types = #'CosNotification_EventTypeSeq'{} + constraint_expr = string() + constraint_id = long() + value = #any + + +

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.

+
+
+ + remove_all_mapping_constraints(MappingFilter) -> ok + Remove all constraints associated with the target object + + MappingFilter = #objref + + +

This operation removes all constraints associated with the target object.

+
+
+ + destroy(MappingFilter) -> ok + Terminate the target object + + MappingFilter = #objref + + +

This operation terminates the target object. Remember to remove + this Filter from the objects it have been associated with.

+
+
+ + match(MappingFilter, Event) -> Reply + Evaluate the given Any event with the Filter's constraints + + MappingFilter = #objref + Event = #any + Reply = {boolean(), #any} | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}} + + +

This operation evaluates Any 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.

+
+
+ + match_structured(MappingFilter, Event) -> Reply + Evaluate the given structured event with the Filter's constraints + + MappingFilter = #objref + Event = #'CosNotification_StructuredEvent'{} + Reply = {boolean(), #any} | {'EXCEPTION', #'CosNotifyFilter_UnsupportedFilterableData'{}} + + +

Similar to match/2 but accepts a structured event as input.

+
+
+
+ +
+ 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 Binary files /dev/null and b/lib/cosNotification/doc/src/book.gif 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotification + Niclas Eklund + + 2000-01-31 + 1.0 +
+ + + cosNotification + + + + + + + + + + + + + + +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + Filters and the Constraint Language BNF + + + 2000-04-13 + + ch_BNF.xml +
+ +
+ Filters and the Constraint Language BNF +

This chapter describes, the grammar supported by + CosNotifyFilter_Filter and + CosNotifyFilter_MappingFilter, + and how to create and use filter objects. +

+ +
+ How to create filter objects +

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.

+ +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), + +

"EXTENDED_TCL" is the only grammar supported by Orber Notification + Service.

+

Depending on which operation type the Admin object uses, i.e., + 'AND_OP' or 'OR_OP', events will be tested using the + associated filter. The operation properties are:

+

+ + +

'AND_OP' - must be approved by the proxy's and 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.

+
+ +

'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.

+
+
+

Initially, filters are empty and will always return true. Hence, we must + add constraints by using 'CosNotifyFilter_Filter':add_constraints/2. + As input, the second argument must be a sequence of:

+ +#'CosNotifyFilter_ConstraintExp'{ + event_types = [#'CosNotification_EventType'{ + domain_name = string(), + type_name = string()}], + constraint_expr = string()} + +

The event_types describes which types of events that should be matched using + the associated constraint_expr.

+

If a constraint expression is supposed to apply for all events, then the type_name can + be set to the special event type %ALL in a constraint's event type sequence. The + domain_name should be "" or "*".

+

In the following sections we will take a closer look on how to write + constraint expressions.

+
+ +
+ The CosNotification Constraint Language +

The constraint language supported by the Notification Service is:

+ := /* empty */ + | + + := + + := or + | + + := and + | + + := == + | != + | < + | <= + | > + | >= + | + + := in /* sequence only */ + | + | in $ /* sequence only */ + + := ~ /* string data types only */ + | + + := + + | - + | + + := * + | / + | + + := not + | + + := ( ) + | exist + | + | + | - + | + | TRUE + | FALSE + | + + | exist $ + | $ + | default $ /* discriminated unions only */ + + := /* empty */ + | . + | + | + | /* run-time variable */ + + := /* empty */ + | . + | + | + + := + | + | + | _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 */ + + := [ ] + + := ( ) + + := + + := ( ) + + := /* empty */ + | + | - + | + + | + +/* Character set issues */ + := + | \\ < Leader> + + := /* */ + | + + := + | + + := + | . + | . + | . + + := + + := + + | - + + := E + | e + + := + | + + := ' ' + + := /* */ + | + + := + | + | + | + + := \\\\ + | \\' + + := + + := + | + | _ + + is the set of alphabetic characters [A-Za-z] + is the set of digits [0-9] + is the set of ASCII characters that are not , , or + ]]> +

In the absence of parentheses, the following precedence relations hold :

+ + (), exist, default, unary-sign + not + *, / + +, - + ~ + in + ==, !=, , , >, >= + and + or + +
+ +
+ The Constraint Language Data Types +

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.

+

When creating a ConstraintExp, the field constraint_expr must be + set to contain a string, e.g., . 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:

+ + +

Basic - arithmetics, strings, constants, numbers etc.

+
+ +

Complex - accessing members of complex data types, such as unions.

+
+
+

Some of the basic types, e.g., integer, are self explanatory. Hence, they are not described further.

+ + + Type/Operation + Examples + Description + + + string + "'MyString'" + Strings are represented as a sequence of zero or more ]]>s enclosed in single quotes, e.g., 'string'. + + + ~ + "'Sring1' ~ 'String2'" + The operator ~is called the substring operator and mean "String1 is contained within String2". + + + boolean + "TRUE == (('lang' ~ 'Erlang' + 'fun' ~ 'functional') >= 2)" + 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. + + + sequence + "myIntegerSequence[2]" + The BNF use C/C++ notation, i.e., the example will return the thirdelement. + + + _length + "myIntegerSequence._length" + Returns the length of an sequence or array. + + + in + "'Erlang' in $.FunctionalLanguages­StringSeq" + Returns TRUEif 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. + + + $ + "$ == 40" + 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 TRUE. + + + . + "$.MyStructMember == 40" + The structure member operator .may be used to reference its members when the data refers to a named structure, discriminated union, or CORBA::Any data structure. + + + _type_id + "$._type_id == 'MyStruct'" + Returns the unscoped IDL type name of the component. This operation is only valid if said information can be obtained. + + + _repos_id + "$._repos_id == 'IDL:MyModule/MyStruct:1.0'" + Returns the RepositoryId of the component. This operation is only valid if said information can be obtained. + + + _d + "$.eventUnion._d" + May only be used when accessing discriminated unions and refers to the discriminator. + + + exist + "exist $.eventUnion._d and $.eventUnion._d == 10" + 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. + + + default + "default $.eventUnion._d" + If the _doperation is in conjunction with the defaultoperation, TRUE will be returned if the union has a default member that is active. + + + union + "$.(0) == 5"eq. "$.('zero') == 5" + When the component refers to a union, with one of the cases defined as case 0: short zero;, we use 0or 'zero'. The result of the example is TRUEif the union has a discriminator set to 0and the value 5. If more than one case is defined to be'zero', $.('zero')accepts both; $.(0)only returns TRUEif the discriminator is set to 0. Leaving out the identifier, i.e., $.(), refers to the default value. + + + name-value pairs + "$.NameValueSeq('myID') == 5"eq."$.NameValueSeq[1].name == 'myID' and $.NameValueSeq[1].value == 5" + The Notification service makes extensive use of name-value pairssequences within structured events, which allow us to via the identifier nameaccess its value, as shown in the example. + + Table 1: Type and Operator Examples +
+

In the next section we will take a closer look at how it is possible to write constraints using + different types of notation etc.

+
+ +
+ Accessing Data In Events +

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 CommunicationsAlarm. + 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 CosNotification.idl file.

+ + + +Figure 1: The structure of a structured event. + +

The Notification Service supports different constraint expressions + notation:

+ + +

Fully scoped, e.g., "$.header.fixed_header.event_type.type_name == 'CommunicationsAlarm'"

+
+ +

Short hand, e.g., "$type_name == 'CommunicationsAlarm'"

+
+ +

Positional Notation, e.g., "$.0.0.0.1 == 'CommunicationsAlarm'"

+
+
+ +

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.

+
+ +

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.

+
+

How to filter against the fixed header fields, is described in the + table below.

+ + + Field + Fully Scoped Constraint + Short Hand Constraint + + + type_name + "$.header.fixed_header.event_­type.type_name == 'Type'" + "$type_name == 'Type'" + + + domain_name + "$.header.fixed_header.event_­type.domain_name == 'Domain'" + "$domain_name == 'Domain'" + + + event_name + "$.header.fixed_header.event_­name == 'Event'" + "$event_name == 'Event'" + + Table 2: Fixed Header Constraint Examples +
+

If we are only interested in receiving events regarding 'Domain', 'Event' + and 'Type', the constraint can look like + "$domain_name == 'Domain' and $event_name == 'Event' and $type_name == 'Type'".

+

The variable event header consists of a sequence of name-value pairs. One way to filter on these are to use a constraint that looks + like "($.header.variable_header[1].name == 'priority' and $.header.variable_header[1].value > 0)". 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 + "$.header.variable_header(priority) > 0".

+

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 + ($variable) is used data in the event header may take precedence. + The order of precedence is:

+ + Reserved, e.g., $curtime + A simple-typed member of $.header.fixed_header. + Properties in $.header.variable_header. + Properties in $.filterable_data. + If no match is found it is translated to $.variable. + +
+ +
+ Mapping Filters +

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.

+

Initially, Mapping Filters are empty and will always return true. Hence, we must + add constraints by using 'CosNotifyFilter_MappingFilter':add_mapping_constraints/2. + If a constraint matches, the associated value will be used instead of the + related Quality of Service system settings.

+

As input, the second argument must be a sequence of:

+ +#'CosNotifyFilter_MappingConstraintPair'{ + constraint_expression = #'CosNotifyFilter_ConstraintExp'{ + event_types = [#'CosNotification_EventType'{ + domain_name = string(), + type_name = string()}], + constraint_expr = string()}, + result_to_set = any()} + +
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + Quality Of Service and Admin Properties + + + 2000-05-29 + + ch_QoS.xml +
+ +
+ Quality Of Service and Admin Properties +

This chapter explains the allowed properties for + CosNotification_QoSAdmin and + CosNotification_AdminPropertiesAdmin. +

+ +
+ Quality Of Service +

The cosNotification application supports the following QoS settings:

+ + + QoS + Range + Default + + + EventReliability + BestEffort/Persistent + BestEffort + + + ConnectionReliability + BestEffort/Persistent + BestEffort + + + Priority + +/-32767 + 0 + + + OrderPolicy + Any-, Fifo-, Priority- and Deadline-Order + PriorityOrder + + + DiscardPolicy + RejectNewEvents, Any-, Fifo-, Lifo-, Priority- and Deadline-Order + RejectNewEvents + + + MaximumBatchSize + long() > 0 + 1 + + + PacingInterval + TimeBase::TimeT (see cosTime) + 0 + + + StartTimeSupported + boolean + false + + + StopTimeSupported + boolean + false + + + MaxEventsPerConsumer + long() > 0 + 100 + + + Timeout + TimeBase::TimeT (see cosTime) + No timeout + + Table 1: Supported QoS Settings +
+

+

+

+

+

Comments on the table 'Supported QoS Settings':

+ + EventReliability + 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 max_events, + interval_events and timeout_events determine + the behavior of this setting. + ConnectionReliability + If this QoS is set to BestEffort and a client object returns anything + other than ok to its associated Proxy, the Proxy will discard + all events and terminate. Using Persistent and anything other than ok + 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 OBJECT_NOT_EXIST, + NO_PERMISSION or CosEventComm_Disconnected is thrown, + the associated object will terminate even if this parameter is + set to Persistent. + Priority + 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. + OrderPolicy + 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. + DiscardPolicy + 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. + MaximumBatchSize + 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. + PacingInterval + 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. + StartTimeSupported + If set to true events which contains the QoS Property StartTime + (TimeBase::UtcT - absolute time) will not be delivered until the + StartTime value have been exceeded. See also the cosTime application. + StopTimeSupported + If set to true, events which contain the QoS Properties StopTime + (TimeBase::UtcT - absolute time) or Timeout (TimeBase::TimeT - + relative time) will be discarded if the object has not been able to + deliver the event in time. See also the cosTime application. + MaxEventsPerConsumer + The maximum number of events the associated object may store before discarding + events in the way described by the DiscardPolicy. + Timeout + If this QoS property is not included in the event, and the Property + StopTimeSupported equals true, this setting will be applied + if events cannot be delivered within its time limit. + + +

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 ConnectioReliability + may never be updated during run-time since it may cause deadlock. Run-time, in this case, + means activating the Channel by sending the first event.

+
+
+ +
+ Setting Quality Of Service +

Assume we have a Consumer Admin object which we want to change + the current Quality of Service. Typical usage:

+ +QoSPersistent = + [#'CosNotification_Property' + {name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], +'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent), + +

If it is not possible to set the requested QoS the UnsupportedQoS + exception is raised, which includes a sequence of PropertyError's + describing which QoS, possible range and why is not allowed. The error + codes are:

+ + UNSUPPORTED_PROPERTY - QoS not supported for this type of target object. + UNAVAILABLE_PROPERTY - due to current QoS settings the given property + is not allowed. + UNSUPPORTED_VALUE - property value out of range; valid range is returned. + UNAVAILABLE_VALUE - due to current QoS settings the given value is + not allowed; valid range is returned. + BAD_PROPERTY - unrecognized property. + BAD_TYPE - type of supplied property is incorrect. + BAD_VALUE - illegal value. + +

The CosNotification_QoSAdmin interface also supports an operation + called validate_qos/2. 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.

+
+ +
+ Admin Properties +

The cosNotification application supports the following Admin Properties:

+ + + Property + Range + Default + + + MaxQueueLength + 0 + 0 + + + MaxConsumers + long() >= 0 + 0 + + + MaxSuppliers + long() >= 0 + 0 + + Table 2: Supported Admin Properties +
+

According to the OMG specification the default values for Admin Properties + is supposed to be 0, which means that no limit applies to these + properties.

+ +

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 MaxQueueLength have no effect since + we cannot discard events accordingly to the Quality of Service Property + DiscardPolicy.

+
+
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + The cosNotification Application + Niclas Eklund + + 2000-01-31 + 1.0 + ch-contents.xml +
+ +
+ Content Overview +

The cosNotification documentation is divided into three sections: +

+ + +

PART ONE - The User's Guide +

+Description of the cosNotification Application including + services and a small tutorial demonstrating + the development of a simple service.

+
+ +

PART TWO - Release Notes +

+A concise history of cosNotification.

+
+ +

PART THREE - The Reference Manual +

+ A quick reference guide, including a + brief description, to all the functions available in cosNotification.

+
+
+
+ +
+ Brief Description of the User's Guide +

The User's Guide contains the following parts:

+ + +

cosNotification overview

+
+ +

cosNotification installation

+
+ +

A tutorial example

+
+
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotification Examples + Niclas Eklund + + 2000-01-31 + A + ch_example.xml +
+ +
+ A Tutorial on How to Create a Simple Service + +
+ Interface Design +

To use the cosNotification application clients must be implemented. + There are twelve types of clients:

+ + Structured Push Consumer + Sequence Push Consumer + Any Push Consumer + Structured Pull Consumer + Sequence Pull Consumer + Any Pull Consumer + Structured Push Supplier + Sequence Push Supplier + Any Push Supplier + Structured Pull Supplier + Sequence Pull Supplier + Any Pull Supplier + +

The interfaces for these participants are defined in CosNotification.idl + and CosNotifyComm.idl.

+
+ +
+ Generating a Client Interface +

We start by creating an interface which inherits from the correct interface, e.g., CosNotifyComm::SequencePushConsumer. Hence, + we must also implement all operations defined in the SequencePushConsumer interface. The IDL-file could look like:

+ +#include + +module myClientImpl { + + interface ownInterface:CosNotifyComm::SequencePushConsumer { + + void ownFunctions(in any NeededArguments) + raises(Systemexceptions,OwnExceptions); + + }; +}; + +#endif + ]]> +

Run the IDL compiler on this file by calling the ic:gen/1 function. + This will produce the API named myClientImpl_ownInterface.erl. + 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 myClientImpl_ownInterface_impl.erl.

+

The callback module must contain the necessary functions inherited from + CosNotification.idl and CosNotifyComm.idl.

+
+ +
+ How to Run Everything +

Below is a short transcript on how to run cosNotification.

+ + +%% 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), + +

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.

+
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + Installing cosNotification + Niclas Eklund + + 2000-01-31 + + ch-install.xml +
+ +
+ Installation Process +

This chapter describes how to install cosNotificationApp + in an Erlang Environment. +

+ +
+ Preparation +

Before starting the installation process for cosNotification, + the application Orber must be running.

+
+ +
+ Configuration +

When using the Notification Service the cosNotification application + first must be installed using cosNotificationApp:install() or + cosNotificationApp:install(Seconds), followed by cosNotificationApp:start().

+

Then the Event Channel Factory + must be started:

+ + cosNotificationApp:start_global_factory() - starts and returns a reference to a factory using default configuration parameters. + This operation should be used for a multi-node Orber. + cosNotificationApp:start_global_factory(Options) - starts and returns a reference to a factory using given configuration parameters. + This operation should be used for a multi-node Orber. + cosNotificationApp:start_factory() - starts and returns a reference to a factory using default configuration parameters. + cosNotificationApp:start_factory(Options) - starts and returns a reference to a factory using given configuration parameters. + +

The following options exist:

+ + {pullInterval, Seconds} - determine how often Proxy Pull + Consumers will check for new events with the client application. The + default value is 20 seconds. + {filterOp, OperationType} - determine which type of Administrator + objects should be started, i.e., 'OR_OP' or 'AND_OP'. + The default value is 'OR_OP'. + {timeService, TimeServiceObj | 'undefined'} - to be able to use + Start and/or Stop QoS this option must be used. See the function start_time_service/2 + in the cosTime application. The default value is 'undefined'. + {filterOp, OperationType} - determine which type of Administrator + objects should be started, i.e., 'OR_OP' or 'AND_OP'. + The default value is 'OR_OP'. + {gcTime, Seconds} - this option determines how often, for example, proxies + will garbage collect expired events. The default value is 60. + {gcLimit, Amount} - 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 MaxEventsPerConsumer, i.e., + the gcLimit should be less than MaxEventsPerConsumer and greater than 0. + +

It is possible to define a set of global configuration parameters:

+ + + Key + Range + Default + + + type_check + true | false + true + + + notify + atom() | false + false + + + max_events + integer() > 0 + 50 + + + interval_events + integer() > 0 + 10000 milliseconds + + + timeout_events + integer() > interval_events + 3000000 milliseconds + + Global Configuration Parameters +
+

Comments on the table 'Global Configuration Parameters':

+ + type_check + Determine if supplied IOR:s shall be type checked, i.e. invoking + corba_object:is_a/2, or not. + notify + The given value shall point to an existing module exporting + a function (arity 1) called terminated. This operation + is invoked when a proxy terminates and the argument is a list + containing {proxy, IOR}, {client, IOR} and + {reason, term()}. The return value is ignored. + max_events + 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 + EventReliability and ConnectionReliability QoS + parameters must be set to Persistent. For more information, + see also the QoS chapter. + interval_events + The same requirements as for max_events. When a supplier + proxy detects problems when trying to push events, this parameter + determines how often it should try to call the consumer. + timeout_events + The same requirements as for max_events. If the + proxy has not been able to contact the consumer and this + time-limit is reached, then the proxy will terminate. + +

The Factory is now ready to use. For a more detailed description see + Examples.

+
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + Introduction to cosNotification + Niclas Eklund + + 2000-01-31 + + ch_introduction.xml +
+ +
+ Overview +

The cosNotification application is a Notification Service compliant with the OMG + Notification Service CosNotification. +

+ +
+ Purpose and Dependencies +

cosNotification is dependent on Orber-3.1.7 or later, + which provides CORBA functionality in an Erlang environment, + cosTime-1.0.1 or later and IDL-files to be compiled using IC-4.0.4 or later.

+
+ +
+ Prerequisites +

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. +

+

Recommended reading includes books recommended by the OMG + and Open Telecom Platform Documentation Set. It is also + helpful to have read Concurrent Programming in Erlang.

+
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + The Notification Service Components + Niclas Eklund + + 2000-04-13 + + ch_system.xml +
+ +
+ The Notification Service Components +

This chapter describes the Notification Service Components and how they + interact.

+ +
+ Components +

There are seven components in the OMG Notification Service architecture. + These are described below:

+ + + +Figure 1: The Notification Service Components. + + + Event Channel: acts as a factory for Administrator objects. + Allows clients to set Administrative Properties. + Supplier Administrators: acts as a factory for Proxy Consumers. + Administrators are started as 'AND_OP'- or 'OR_OP'-type, + which determines if events must be validated using both the Administrators + associated Filter and/or its Proxy children Filters. + Consumer Administrators: acts in the same way as Supplier Administrators + but handle Proxy Suppliers. + Consumer Proxy: is connected to a client application. Can be + started as Pull or Push 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 CosNotification::AdminProperties is + used to set the pacing interval. + Supplier Proxy: Acts in a similar way as the Consumer Proxy, but + if started as a Push proxy it will push events to the client + application. + Filters: used to filter events. May be associated with Proxies + and Administrators. + Mapping Filters: used to override events Quality of Service + settings. Can only be associated with Consumer Administrators and + Proxy Suppliers. + +

When a Proxy is started it is set to accept CORBA::Any, + CosNotification::StructuredEvent or CosNotification::EventBatch + (a sequence of structured events).

+

If a Proxy is supposed to deliver structured events to a client application + and receives an CORBA::Any event, the event is converted to a + structured event with type_name set to "%ANY" and the + event is stored in remainder_of_body.

+

If a Proxy is supposed to deliver CORBA::Any 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 CosNotification::StructuredEvent + Type Code.

+
+
+
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotificationApp + Niclas Eklund + Niclas Eklund + + Niclas Eklund + + 2000-01-31 + PA1 +
+ cosNotificationApp + The main module of the cosNotification application. + +

To get access to the record definitions for the structures use:

+-include_lib("cosNotification/include/*.hrl").

+

This module contains the functions for starting and stopping the application.

+
+ + + install() -> Return + Install the cosNotification application + + Return = ok | {'EXCEPTION', E} + + +

This operation installs the cosNotification application.

+
+
+ + install(Seconds) -> Return + Install the cosNotification application + + Return = ok | {'EXCEPTION', E} + + +

This operation installs the cosNotification application using Seconds + 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.

+
+
+ + install_event() -> Return + Install the necessary cosEvent interfaces + + Return = ok | {'EXCEPTION', E} + + +

This operation, which may only be used if it is impossible to + upgrade to cosEvent-2.0 or later, installs the necessary + cosEvent interfaces. If cosEvent-2.0 is available, use + cosEventApp:install() instead.

+
+
+ + install_event(Seconds) -> Return + Install the necessary cosEvent interfaces + + Return = ok | {'EXCEPTION', E} + + +

This operation, which may only be used if it is impossible to + upgrade to cosEvent-2.0 or later, installs the necessary cosEvent + interfaces using Seconds delay between each block of + IFR-registrations. If cosEvent-2.0 is available, use + cosEventApp:install() instead.

+
+
+ + uninstall() -> Return + Uninstall the cosNotification application + + Return = ok | {'EXCEPTION', E} + + +

This operation uninstalls the cosNotification application.

+
+
+ + uninstall(Seconds) -> Return + Uninstall the cosNotification application + + Return = ok | {'EXCEPTION', E} + + +

This operation uninstalls the cosNotification application using Seconds + 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.

+
+
+ + uninstall_event() -> Return + Uninstall the inherited cosEvent interfaces + + Return = ok | {'EXCEPTION', E} + + +

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 + cosNotificationApp:install_event/1/2 was used. If not, use + cosEventApp:uninstall() instead.

+
+
+ + uninstall_event(Seconds) -> Return + Uninstall the inherited cosEvent interfaces + + Return = ok | {'EXCEPTION', E} + + +

This operation uninstalls the inherited cosEvent interfaces, using Seconds + 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 + cosNotificationApp:install_event/1/2 was used. If not, use + cosEventApp:uninstall() instead.

+
+
+ + start() -> Return + Start the cosNotification application + + Return = ok | {error, Reason} + + +

This operation starts the cosNotification application.

+
+
+ + stop() -> Return + Stop the cosNotification application + + Return = ok | {error, Reason} + + +

This operation stops the cosNotification application.

+
+
+ + start_global_factory() -> ChannelFactory + Start a global channel factory as default + + ChannelFactory = #objref + + +

This operation creates a + Event Channel Factory + should be used for a multi-node Orber. + The Factory is used to create a new + channel.

+
+
+ + start_global_factory(Options) -> ChannelFactory + Start a global channel factory with options + + Options = [Option] + Option = {pullInterval, Seconds} | {filterOp, Op} | {gcTime, Seconds} | {gcLimit, Anount} | {timeService, #objref} + ChannelFactory = #objref + + +

This operation creates a + Event Channel Factory and + should be used for a multi-node Orber. + The Factory is used to create a new + channel.

+

+ + {pullInterval, Seconds} - determine how often Proxy Pull + Consumers will check for new events with the client application. The + default value is 20 seconds. + {filterOp, OperationType} - determine which type of Administrator + objects should be started, i.e., 'OR_OP' or 'AND_OP'. + The default value is 'OR_OP'. + {timeService, TimeServiceObj | 'undefined'} - to be able to use + Start and/or Stop QoS this option must be used. See the function start_time_service/2 + in the cosTime application. The default value is 'undefined'. + {filterOp, OperationType} - determine which type of Administrator + objects should be started, i.e., 'OR_OP' or 'AND_OP'. + The default value is 'OR_OP'. + {gcTime, Seconds} - this option determines how often, for example, proxies + will garbage collect expired events. The default value is 60. + {gcLimit, Amount} - 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 MaxEventsPerConsumer, i.e., + the gcLimit should be less than MaxEventsPerConsumer and greater than 0. + +
+
+ + start_factory() -> ChannelFactory + Start a channel factory as default + + ChannelFactory = #objref + + +

This operation creates a + Event Channel Factory. + The Factory is used to create a new + channel.

+
+
+ + start_factory(Options) -> ChannelFactory + Start a channel factory with options + + Options = [Option] + Option = {pullInterval, Seconds} | {filterOp, Op} | {gcTime, Seconds} | {gcLimit, Amount} | {timeService, #objref} + ChannelFactory = #objref + + +

This operation creates a + Event Channel Factory. + The Factory is used to create a new + channel.

+
+
+ + stop_factory(ChannelFactory) -> Reply + Terminate the target object + + ChannelFactory = #objref + Reply = ok | {'EXCEPTION', E} + + +

This operation stop the target channel factory.

+
+
+ + start_filter_factory() -> FilterFactory + Start a filter factory + + FilterFactory = #objref + + +

This operation creates a + Filter Factory. + The Factory is used to create a new + Filter's and + MappingFilter's.

+
+
+ + stop_filter_factory(FilterFactory) -> Reply + Terminate the target object + + FilterFactory = #objref + Reply = ok | {'EXCEPTION', E} + + +

This operation stop the target filter factory.

+
+
+ + create_structured_event(Domain, Type, Event, VariableHeader, FilterableBody, BodyRemainder) -> Reply + Create a structured event + + Domain = string() + Type = string() + Event = string() + VariableHeader = [CosNotification::Property] + FilterableBody = [CosNotification::Property] + BodyRemainder = #any data-type + Reply = CosNotification::StructuredEvent | {'EXCEPTION', E} + + +

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.

+
+
+ + type_check() -> Reply + Return the value of the configuration parameter type_check + + Reply = true | false + + +

This operation returns the value of the configuration parameter + type_check.

+
+
+
+ +
+ diff --git a/lib/cosNotification/doc/src/eventstructure.gif b/lib/cosNotification/doc/src/eventstructure.gif new file mode 100644 index 0000000000..879c96f980 Binary files /dev/null and b/lib/cosNotification/doc/src/eventstructure.gif 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 @@ + + + + + + User's Guide + + + Reference Manual + + + Release Notes + + + Off-Print + + + 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 Binary files /dev/null and b/lib/cosNotification/doc/src/notes.gif 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotification Release Notes + + + + + 2000-01-31 + A + notes.xml +
+ +
+ cosNotification 1.1.12 + +
+ Improvements and New Features + + +

+ 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.

+

+ Own Id: OTP-8201 Aux Id:

+
+
+
+
+ +
+ cosNotification 1.1.11 + +
+ Improvements and New Features + + +

Obsolete guards, e.g. record vs is_record, has been changed + to avoid compiler warnings.

+

Own id: OTP-7987

+
+
+
+
+ +
+ cosNotification 1.1.10 + +
+ Fixed Bugs and Malfunctions + + +

Updated file headers.

+

Own id: OTP-7837 Aux Id:

+
+
+
+
+ +
+ cosNotification 1.1.9 + +
+ Fixed Bugs and Malfunctions + + +

Documentation source included in open source releases.

+

Own id: OTP-7595 Aux Id:

+
+
+
+
+ +
+ cosNotification 1.1.8 + +
+ Fixed Bugs and Malfunctions + + +

The CosNotification proxy objects ignored the gcLimit option, instead + the gcTime value was used.

+

Own id: OTP-7553 Aux Id:

+
+
+
+
+ +
+ cosNotification 1.1.7 + +
+ Improvements and New Features + + +

Updated file headers.

+

Own id: OTP-7011

+
+
+
+
+ +
+ cosNotification 1.1.6 + +
+ Improvements and New Features + + +

The documentation source has been converted from SGML to XML.

+

Own id: OTP-6754

+
+
+
+
+ +
+ cosNotification 1.1.5 + +
+ Improvements and New Features + + +

Minor Makefile changes.

+

Own id: OTP-6701

+
+
+
+
+ +
+ cosNotification 1.1.4 + +
+ Improvements and New Features + + +

Removed some unused code.

+

Own id: OTP-6527

+
+
+
+
+ +
+ cosNotification 1.1.3 + +
+ Improvements and New Features + + +

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.

+

Own id: OTP-5923

+
+
+
+
+ +
+ cosNotification 1.1.2 + +
+ Improvements and New Features + + +

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.

+

Own id: OTP-5823 Aux Id: seq10143

+
+
+
+
+ +
+ cosNotification 1.1.1 + +
+ Fixed Bugs and Malfunctions + + +

The app-file contained duplicated modules.

+

Own id: OTP-4976

+
+
+
+
+ +
+ cosNotification 1.1 + +
+ Improvements and New Features + + +

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.

+

Own id: OTP-4576

+
+
+
+
+ +
+ cosNotification 1.0.6 + +
+ Fixed Bugs and Malfunctions + + +

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.

+

Own Id: OTP-4412

+
+ +

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.

+

Own Id: OTP-4413, OTP-4414

+
+
+
+ +
+ Incompatibilities + + +

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.

+

Own Id: OTP-4413, OTP-4414

+
+
+
+
+ +
+ cosNotification 1.0.5 + +
+ Fixed Bugs and Malfunctions + + +

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.

+

Own Id: OTP-4340

+
+ +

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.

+

Own Id: OTP-4272

+
+ +

If Filter's where attached to Supplier proxies it could cause + the Proxy to terminate.

+

Own Id: OTP-4272

+
+
+
+
+ +
+ cosNotification 1.0.4 + +
+ Fixed Bugs and Malfunctions + + +

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.

+

Own Id: OTP-4099

+
+ +

SupplierAdmin's did not filter any events, even though Filter objects + had been attached to the SupplierAdmin.

+

Own Id: OTP-4098

+
+ +

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.

+

Own Id: OTP-4086

+
+ +

If one used the '_get_default_filter_factory'/1, exported by the + CosNotifyChannelAdmin_EventChannel-module, a new instance was created + each time. Now fixed.

+

Own Id: OTP-4092

+
+
+
+ +
+ Incompatibilities + + +

The include paths for CosNotification.idl 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.

+

Own Id: OTP-4093

+
+
+
+
+ +
+ cosNotification 1.0.3 + +
+ Improvements and New Features + + +

It is now possible to start global channel factories.

+

Own Id: OTP-4078

+
+ +

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.

+

Own Id: OTP-4077, OTP-3962

+
+
+
+ +
+ Fixed Bugs and Malfunctions + + +

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.

+

Own Id: OTP-4079

+
+
+
+
+ +
+ cosNotification 1.0.2 + +
+ Improvements and New Features + + +

First release of the cosNotification application.

+

Own Id: -

+
+
+
+
+
+ diff --git a/lib/cosNotification/doc/src/notificationFlow.gif b/lib/cosNotification/doc/src/notificationFlow.gif new file mode 100644 index 0000000000..31d6ee97fb Binary files /dev/null and b/lib/cosNotification/doc/src/notificationFlow.gif 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotification User's Guide + Niclas Eklund + + 2000-01-31 + 1.0 +
+ +

The cosNotification application is an Erlang implementation + of the OMG CORBA Notification Service.

+
+ + + + + + + +
+ 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotification Release Notes + Niclas Eklund + + 2000-01-31 + 1.0 +
+ +

The cosNotification Application is an Erlang implementation of the OMG + CORBA Notification Service.

+
+ +
+ 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 Binary files /dev/null and b/lib/cosNotification/doc/src/ref_man.gif 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 @@ + + + + +
+ + 20002009 + Ericsson AB. 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. + + + + cosNotification Reference Manual + Niclas Eklund + + 2000-01-31 + 1.0 +
+ +

The cosNotification application is an Erlang implementation + of the OMG CORBA Notification Service.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 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 Binary files /dev/null and b/lib/cosNotification/doc/src/user_guide.gif differ -- cgit v1.2.3