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