Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] Create an offline Server(How to use CDO's offline functions)
[CDO] Create an offline Server [message #635867] Thu, 28 October 2010 12:35 Go to next message
Markus Surudo is currently offline Markus SurudoFriend
Messages: 7
Registered: September 2010
Junior Member
Hi there,

I try to set up an CDO server with offline functionality. I already found the offlineTest-class in the test project.

Unfortunately I wasn't able to initialize the class or to integrate it in an exisiting server.

Any hints how to do that?

So long,

Markus
Re: [CDO] Create an offline Server [message #636236 is a reply to message #635867] Fri, 29 October 2010 19:24 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Markus,

I would like to provide an example similar to org.eclipse.emf.cdo.examples.server.FailoverExample. Please file a bugzilla to remind me ;-)

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper



Am 28.10.2010 14:36, schrieb Markus Surudo:
> Hi there,
>
> I try to set up an CDO server with offline functionality. I already found the offlineTest-class in the test project.
> Unfortunately I wasn't able to initialize the class or to integrate it in an exisiting server.
>
> Any hints how to do that?
>
> So long,
>
> Markus


Re: [CDO] Create an offline Server [message #636779 is a reply to message #636236] Tue, 02 November 2010 18:24 Go to previous messageGo to next message
Guillaume P. is currently offline Guillaume P.Friend
Messages: 69
Registered: June 2010
Location: Toulouse, France
Member
Hi !

I am also trying to create a server using the offline mode.
After trying to understand the code in the offline tests, I produced a small example which is not completely working...

here is the eclipse project I've created: http://www.4shared.com/file/EpOrJ-1I/CDOExample.html

To use it, you need to:
- launch a server using the configuration file in server/configuration.
- launch a new eclipse environment with the provided CDOexample plugin.
- open the "CDO Example Manager" view.
- click the "Offline Connection" button (the "TCP connection" button make a direct connection to the server).
(here the software creates and commit a random resource if there is not)
- double-click the name of the resource.
- modify an object by right clicking it and selecting the "change..." option (a modification make an automatic commit).

The code which is interesting here is in the openOfflineSession(...) method of the DBManager class, and all the code of the CDORepositoriesManager.

It seems to create the synchronized offline clone correctly, but when I close the server, I have time out errors and warnings which are raised... Well, this is not really a problem (even if I'm not sure it's normal that those error are raised for a normal behaviour) as I can continue to work with my model.
The real problem is that when I start again my server, the offline clone cannot reconnect (it still raising timeout exceptions).

Another problem is that my offline clone is not persisted: it is lost each time I shut down the application... Is there some way to make this clone persistent (allowing to start working on the last state of the offline clone if the server is not available when starting the application) ?

Regards,

Guillaume


PS: I paste bellow the code where I think the problem is).

DBManager class (only the openOfflineSession(...) method):
/**
	 * Open a new session on the given repository, using a synchronized local repository, allowing
	 * offline work.
	 * @param host host where the repository is stored
	 * @param repository name of the repository to open
	 * @return opened session
	 */
	private CDOSession openOfflineSession(String host, String repository) {
		// activate or create the repository
		repoManager = new CDORepositoriesManager(host);
		
		// wait online (to be sure that data are synchronized)
		System.out.println("Waiting for ONLINE...");
		int time = 0;
		while (repoManager.getRepository(repository).getState() != CDOCommonRepository.State.ONLINE
				&& time < 9000) {
			try {
				Thread.currentThread().sleep(100);
				time += 100;
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (repoManager.getRepository(repository).getState() != CDOCommonRepository.State.ONLINE) {
			repoManager.stop();
			System.out.println("Connection timeout...");
			return null;
		}
		System.out.println("Successfully connected");
		
		// configure a session for this repository
		CDOSessionConfiguration configuration =
			repoManager.createSessionConfigurationFor(repository);
		
		// Open CDO session
		return configuration.openSession();
	}



CDORepositoriesManager class (only the openOfflineSession(...) method):
/**
 * This manager can be used to create accesses to any remote CDO repository (via tcp connection).
 * In order to provide offline access, the manager create (or get ?) a local and synchronized copy of
 * the repository and returns it instead of a direct access to the remote repository.
 * The manager is able to provide accesses to several repositories, but only if they are on the
 * same host.
 * Note: don't forget to close the manager when finished in order to close all opened connections.
 */
public class CDORepositoriesManager {
	public String host;
	protected transient Map<String, InternalRepository> repositories;
	protected transient Map<String, IAcceptor> acceptors;
	private transient IListener repositoryListener;
	private transient CDOServerBrowser serverBrowser;
	private IManagedContainer serverContainer = null;


	/**
	 * Create a new CDO repositories manager
	 * @param repositoryName
	 */
	public CDORepositoriesManager(String host) {
		this.host = host;
		
		setUp();
	}

	public synchronized InternalRepository getRepository(String name) {
		InternalRepository repository = repositories.get(name+"_local");
		
		// if no repository with the given name
		if (repository == null) {
			//create the repository
			repository = createRepository(name);
			
			// register and activate the repository
			repository.addListener(repositoryListener);
			repositories.put(repository.getName(), repository);
			LifecycleUtil.activate(repository);
		}

		return repository;
	}

	/**
	 * Prepare the container
	 */
	public void setUp()
	{
		StoreThreadLocal.release();
		repositories = new HashMap<String, InternalRepository>();
		acceptors = new HashMap<String, IAcceptor>();
		repositoryListener = new LifecycleEventAdapter() {
				@Override
				protected void onDeactivated(ILifecycle repository) {
					synchronized (repositories) {
						repositories.remove(((IRepository)repository).getName());
						acceptors.remove(((IRepository)repository).getName());
					}
				}
			};

		// create the server container
		serverContainer = ContainerUtil.createContainer();
		Net4jUtil.prepareContainer(serverContainer);
		TCPUtil.prepareContainer(serverContainer);
		CDONet4jUtil.prepareContainer(serverContainer);
		CDONet4jServerUtil.prepareContainer(serverContainer);
		LifecycleUtil.activate(serverContainer);

		// prepare the server container
		JVMUtil.prepareContainer(serverContainer);
		CDONet4jServerUtil.prepareContainer(serverContainer, new IRepositoryProvider() {
				public IRepository getRepository(String name) {
					return repositories.get(name);
				}
			});
	}

	/**
	 * Shut down and release all opened repositories.
	 */
	public void stop()
	{
		if (serverBrowser != null) {
			serverBrowser.deactivate();
			serverBrowser = null;
		}

		Object[] repoArray;
		Object[] acceptorsArray;
		synchronized (repositories) {
			repoArray = repositories.values().toArray();
			acceptorsArray = acceptors.values().toArray();
		}

		for (Object acceptor : acceptorsArray) {
			((IAcceptor)acceptor).close();
		}

		for (Object repository : repoArray) {
			LifecycleUtil.deactivate(repository);
		}

		repositories.clear();
		repositories = null;
		StoreThreadLocal.release();
	}

	/**
	 * Create a repository with the given name.
	 * The returned repository will be a local synchronized copy, so the user can continue working when the
	 * local repository is disconnected from the remote repository. The given name has to be the remote repository
	 * name, while the local repository will be named "MYNAME_local"
	 * @param masterName name of the remote repository
	 * @return local repository copy for the created repository
	 */
	protected InternalRepository createRepository(String masterName) {
		final String cloneName = masterName + "_local";

		// Create the offline repository clone, and synchronize it with the remote repository
		InternalRepositorySynchronizer synchronizer = createSynchronizer(host, masterName);
		IStore store = MEMStoreUtil.createMEMStore();
		InternalRepository localRepo = (InternalRepository)CDOServerUtil.createOfflineClone(
				cloneName,
				store,
				null,
				synchronizer);
		
		// create an acceptor for the created local repository
		acceptors.put(masterName, JVMUtil.getAcceptor(serverContainer, cloneName));
		
		return localRepo;
	}

	/**
	 * Create a repository synchronizer which will be used to synchronize remote repositories and their
	 * offline clone.
	 * @param acceptorName name of the acceptor to use
	 * @param repositoryName name of the remote repository with which a local repository will be synchronized
	 * @return the created repository synchronizer
	 */
	protected InternalRepositorySynchronizer createSynchronizer(final String acceptorName, final String repositoryName) {
		InternalRepositorySynchronizer synchronizer =
			(InternalRepositorySynchronizer)CDOServerUtil.createRepositorySynchronizer(new CDOSessionConfigurationFactory() {
				@Override
				public org.eclipse.emf.cdo.session.CDOSessionConfiguration createSessionConfiguration() {
					IConnector connector = TCPUtil.getConnector(serverContainer, acceptorName);

					InternalCDORevisionManager revisionManager =
						(InternalCDORevisionManager)CDORevisionUtil.createRevisionManager();
					revisionManager.setCache(CDORevisionCache.NOOP);

					CDOSessionConfiguration config = CDONet4jUtil.createSessionConfiguration();

					config.setConnector(connector);
					config.setRepositoryName(repositoryName);
					config.setRevisionManager(revisionManager);
					return config;
				}
			});

		synchronizer.setRetryInterval(1);
		synchronizer.setRawReplication(false);
		return synchronizer;
	}
	
	public CDOSessionConfiguration createSessionConfigurationFor(String repoName) {
		// check that the repository is available
		IRepository repo = getRepository(repoName);
		if (repo != null) {
			// create a connector to the local repository
			IManagedContainer container = ContainerUtil.createContainer();
			container.activate();
			Net4jUtil.prepareContainer(container);
			JVMUtil.prepareContainer(container);
			CDONet4jServerUtil.prepareContainer(container);
			IConnector connector = JVMUtil.getConnector(container, repo.getName());
			
			// create and configure a session with this connector
			CDOSessionConfiguration configuration = CDONet4jUtil.createSessionConfiguration();
			configuration.setConnector(connector);
			configuration.setRepositoryName(repo.getName());
			
			return configuration;
		}
		return null;
	}
}
Re: [CDO] Create an offline Server [message #637382 is a reply to message #636779] Fri, 05 November 2010 10:05 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Guillaume,

I'm glad to hear about your example and that you're sharing it. I'll be back from the Eclipse Summit tomorrow and will certainly have time to review your code next week ;-)

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Am 02.11.2010 19:25, schrieb Guillaume P.:
> Hi !
>
> I am also trying to create a server using the offline mode.
> After trying to understand the code in the offline tests, I produced a small example which is not completely working...
>
> here is the eclipse project I've created: http://www.4shared.com/file/EpOrJ-1I/CDOExample.html
>
> To use it, you need to:
> - launch a server using the configuration file in server/configuration.
> - launch a new eclipse environment with the provided CDOexample plugin.
> - open the "CDO Example Manager" view.
> - click the "Offline Connection" button (the "TCP connection" button make a direct connection to the server).
> (here the software creates and commit a random resource if there is not)
> - double-click the name of the resource.
> - modify an object by right clicking it and selecting the "change..." option (a modification make an automatic commit).
>
> The code which is interesting here is in the openOfflineSession(...) method of the DBManager class, and all the code of the CDORepositoriesManager.
>
> It seems to create the synchronized offline clone correctly, but when I close the server, I have time out errors and warnings which are raised... Well, this is not really a problem (even if I'm not sure it's normal that those error are raised for a normal behaviour) as I can continue to work with my model.
> The real problem is that when I start again my server, the offline clone cannot reconnect (it still raising timeout exceptions).
>
> Another problem is that my offline clone is not persisted: it is lost each time I shut down the application... Is there some way to make this clone persistent (allowing to start working on the last state of the offline clone if the server is not available when starting the application) ?
>
> Regards,
>
> Guillaume
>
>
> PS: I paste bellow the code where I think the problem is).
>
> DBManager class (only the openOfflineSession(...) method):
> /**
> * Open a new session on the given repository, using a synchronized local repository, allowing
> * offline work.
> * @param host host where the repository is stored
> * @param repository name of the repository to open
> * @return opened session
> */
> private CDOSession openOfflineSession(String host, String repository) {
> // activate or create the repository
> repoManager = new CDORepositoriesManager(host);
>
> // wait online (to be sure that data are synchronized)
> System.out.println("Waiting for ONLINE...");
> int time = 0;
> while (repoManager.getRepository(repository).getState() != CDOCommonRepository.State.ONLINE
> && time < 9000) {
> try {
> Thread.currentThread().sleep(100);
> time += 100;
> } catch (InterruptedException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
> if (repoManager.getRepository(repository).getState() != CDOCommonRepository.State.ONLINE) {
> repoManager.stop();
> System.out.println("Connection timeout...");
> return null;
> }
> System.out.println("Successfully connected");
>
> // configure a session for this repository
> CDOSessionConfiguration configuration =
> repoManager.createSessionConfigurationFor(repository);
>
> // Open CDO session
> return configuration.openSession();
> }
>
>
> CDORepositoriesManager class (only the openOfflineSession(...) method):
> /**
> * This manager can be used to create accesses to any remote CDO repository (via tcp connection).
> * In order to provide offline access, the manager create (or get ?) a local and synchronized copy of
> * the repository and returns it instead of a direct access to the remote repository.
> * The manager is able to provide accesses to several repositories, but only if they are on the
> * same host.
> * Note: don't forget to close the manager when finished in order to close all opened connections.
> */
> public class CDORepositoriesManager {
> public String host;
> protected transient Map<String, InternalRepository> repositories;
> protected transient Map<String, IAcceptor> acceptors;
> private transient IListener repositoryListener;
> private transient CDOServerBrowser serverBrowser;
> private IManagedContainer serverContainer = null;
>
>
> /**
> * Create a new CDO repositories manager
> * @param repositoryName
> */
> public CDORepositoriesManager(String host) {
> this.host = host;
>
> setUp();
> }
>
> public synchronized InternalRepository getRepository(String name) {
> InternalRepository repository = repositories.get(name+"_local");
>
> // if no repository with the given name
> if (repository == null) {
> //create the repository
> repository = createRepository(name);
>
> // register and activate the repository
> repository.addListener(repositoryListener);
> repositories.put(repository.getName(), repository);
> LifecycleUtil.activate(repository);
> }
>
> return repository;
> }
>
> /**
> * Prepare the container
> */
> public void setUp()
> {
> StoreThreadLocal.release();
> repositories = new HashMap<String, InternalRepository>();
> acceptors = new HashMap<String, IAcceptor>();
> repositoryListener = new LifecycleEventAdapter() {
> @Override
> protected void onDeactivated(ILifecycle repository) {
> synchronized (repositories) {
> repositories.remove(((IRepository)repository).getName());
> acceptors.remove(((IRepository)repository).getName());
> }
> }
> };
>
> // create the server container
> serverContainer = ContainerUtil.createContainer();
> Net4jUtil.prepareContainer(serverContainer);
> TCPUtil.prepareContainer(serverContainer);
> CDONet4jUtil.prepareContainer(serverContainer);
> CDONet4jServerUtil.prepareContainer(serverContainer);
> LifecycleUtil.activate(serverContainer);
>
> // prepare the server container
> JVMUtil.prepareContainer(serverContainer);
> CDONet4jServerUtil.prepareContainer(serverContainer, new IRepositoryProvider() {
> public IRepository getRepository(String name) {
> return repositories.get(name);
> }
> });
> }
>
> /**
> * Shut down and release all opened repositories.
> */
> public void stop()
> {
> if (serverBrowser != null) {
> serverBrowser.deactivate();
> serverBrowser = null;
> }
>
> Object[] repoArray;
> Object[] acceptorsArray;
> synchronized (repositories) {
> repoArray = repositories.values().toArray();
> acceptorsArray = acceptors.values().toArray();
> }
>
> for (Object acceptor : acceptorsArray) {
> ((IAcceptor)acceptor).close();
> }
>
> for (Object repository : repoArray) {
> LifecycleUtil.deactivate(repository);
> }
>
> repositories.clear();
> repositories = null;
> StoreThreadLocal.release();
> }
>
> /**
> * Create a repository with the given name.
> * The returned repository will be a local synchronized copy, so the user can continue working when the
> * local repository is disconnected from the remote repository. The given name has to be the remote repository
> * name, while the local repository will be named "MYNAME_local"
> * @param masterName name of the remote repository
> * @return local repository copy for the created repository
> */
> protected InternalRepository createRepository(String masterName) {
> final String cloneName = masterName + "_local";
>
> // Create the offline repository clone, and synchronize it with the remote repository
> InternalRepositorySynchronizer synchronizer = createSynchronizer(host, masterName);
> IStore store = MEMStoreUtil.createMEMStore();
> InternalRepository localRepo = (InternalRepository)CDOServerUtil.createOfflineClone(
> cloneName,
> store,
> null,
> synchronizer);
>
> // create an acceptor for the created local repository
> acceptors.put(masterName, JVMUtil.getAcceptor(serverContainer, cloneName));
>
> return localRepo;
> }
>
> /**
> * Create a repository synchronizer which will be used to synchronize remote repositories and their
> * offline clone.
> * @param acceptorName name of the acceptor to use
> * @param repositoryName name of the remote repository with which a local repository will be synchronized
> * @return the created repository synchronizer
> */
> protected InternalRepositorySynchronizer createSynchronizer(final String acceptorName, final String repositoryName) {
> InternalRepositorySynchronizer synchronizer =
> (InternalRepositorySynchronizer)CDOServerUtil.createReposito rySynchronizer(new CDOSessionConfigurationFactory() {
> @Override
> public org.eclipse.emf.cdo.session.CDOSessionConfiguration createSessionConfiguration() {
> IConnector connector = TCPUtil.getConnector(serverContainer, acceptorName);
>
> InternalCDORevisionManager revisionManager =
> (InternalCDORevisionManager)CDORevisionUtil.createRevisionMa nager();
> revisionManager.setCache(CDORevisionCache.NOOP);
>
> CDOSessionConfiguration config = CDONet4jUtil.createSessionConfiguration();
>
> config.setConnector(connector);
> config.setRepositoryName(repositoryName);
> config.setRevisionManager(revisionManager);
> return config;
> }
> });
>
> synchronizer.setRetryInterval(1);
> synchronizer.setRawReplication(false);
> return synchronizer;
> }
>
> public CDOSessionConfiguration createSessionConfigurationFor(String repoName) {
> // check that the repository is available
> IRepository repo = getRepository(repoName);
> if (repo != null) {
> // create a connector to the local repository
> IManagedContainer container = ContainerUtil.createContainer();
> container.activate();
> Net4jUtil.prepareContainer(container);
> JVMUtil.prepareContainer(container);
> CDONet4jServerUtil.prepareContainer(container);
> IConnector connector = JVMUtil.getConnector(container, repo.getName());
>
> // create and configure a session with this connector
> CDOSessionConfiguration configuration = CDONet4jUtil.createSessionConfiguration();
> configuration.setConnector(connector);
> configuration.setRepositoryName(repo.getName());
>
> return configuration;
> }
> return null;
> }
> }


Re: [CDO] Create an offline Server [message #637527 is a reply to message #636779] Sat, 06 November 2010 08:28 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------010009020405090306060007
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Guillaume,

I've looked at your example and I guess the main issues are:

1) that you're not using the DBStore for the clone repository.

2) and that you're not using raw replication:

IRepositorySynchronizer.setRawReplication(true)

I've attached a zip with these changes, but I did not have the time to run all your example code. Please try if you get further now...

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper



Am 02.11.2010 19:25, schrieb Guillaume P.:
> Hi !
>
> I am also trying to create a server using the offline mode.
> After trying to understand the code in the offline tests, I produced a small example which is not completely working...
>
> here is the eclipse project I've created: http://www.4shared.com/file/EpOrJ-1I/CDOExample.html
>
> To use it, you need to:
> - launch a server using the configuration file in server/configuration.
> - launch a new eclipse environment with the provided CDOexample plugin.
> - open the "CDO Example Manager" view.
> - click the "Offline Connection" button (the "TCP connection" button make a direct connection to the server).
> (here the software creates and commit a random resource if there is not)
> - double-click the name of the resource.
> - modify an object by right clicking it and selecting the "change..." option (a modification make an automatic commit).
>
> The code which is interesting here is in the openOfflineSession(...) method of the DBManager class, and all the code of the CDORepositoriesManager.
>
> It seems to create the synchronized offline clone correctly, but when I close the server, I have time out errors and warnings which are raised... Well, this is not really a problem (even if I'm not sure it's normal that those error are raised for a normal behaviour) as I can continue to work with my model.
> The real problem is that when I start again my server, the offline clone cannot reconnect (it still raising timeout exceptions).
>
> Another problem is that my offline clone is not persisted: it is lost each time I shut down the application... Is there some way to make this clone persistent (allowing to start working on the last state of the offline clone if the server is not available when starting the application) ?
>
> Regards,
>
> Guillaume
>
>
> PS: I paste bellow the code where I think the problem is).
>
> DBManager class (only the openOfflineSession(...) method):
> /**
> * Open a new session on the given repository, using a synchronized local repository, allowing
> * offline work.
> * @param host host where the repository is stored
> * @param repository name of the repository to open
> * @return opened session
> */
> private CDOSession openOfflineSession(String host, String repository) {
> // activate or create the repository
> repoManager = new CDORepositoriesManager(host);
>
> // wait online (to be sure that data are synchronized)
> System.out.println("Waiting for ONLINE...");
> int time = 0;
> while (repoManager.getRepository(repository).getState() != CDOCommonRepository.State.ONLINE
> && time < 9000) {
> try {
> Thread.currentThread().sleep(100);
> time += 100;
> } catch (InterruptedException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
> if (repoManager.getRepository(repository).getState() != CDOCommonRepository.State.ONLINE) {
> repoManager.stop();
> System.out.println("Connection timeout...");
> return null;
> }
> System.out.println("Successfully connected");
>
> // configure a session for this repository
> CDOSessionConfiguration configuration =
> repoManager.createSessionConfigurationFor(repository);
>
> // Open CDO session
> return configuration.openSession();
> }
>
>
> CDORepositoriesManager class (only the openOfflineSession(...) method):
> /**
> * This manager can be used to create accesses to any remote CDO repository (via tcp connection).
> * In order to provide offline access, the manager create (or get ?) a local and synchronized copy of
> * the repository and returns it instead of a direct access to the remote repository.
> * The manager is able to provide accesses to several repositories, but only if they are on the
> * same host.
> * Note: don't forget to close the manager when finished in order to close all opened connections.
> */
> public class CDORepositoriesManager {
> public String host;
> protected transient Map<String, InternalRepository> repositories;
> protected transient Map<String, IAcceptor> acceptors;
> private transient IListener repositoryListener;
> private transient CDOServerBrowser serverBrowser;
> private IManagedContainer serverContainer = null;
>
>
> /**
> * Create a new CDO repositories manager
> * @param repositoryName
> */
> public CDORepositoriesManager(String host) {
> this.host = host;
>
> setUp();
> }
>
> public synchronized InternalRepository getRepository(String name) {
> InternalRepository repository = repositories.get(name+"_local");
>
> // if no repository with the given name
> if (repository == null) {
> //create the repository
> repository = createRepository(name);
>
> // register and activate the repository
> repository.addListener(repositoryListener);
> repositories.put(repository.getName(), repository);
> LifecycleUtil.activate(repository);
> }
>
> return repository;
> }
>
> /**
> * Prepare the container
> */
> public void setUp()
> {
> StoreThreadLocal.release();
> repositories = new HashMap<String, InternalRepository>();
> acceptors = new HashMap<String, IAcceptor>();
> repositoryListener = new LifecycleEventAdapter() {
> @Override
> protected void onDeactivated(ILifecycle repository) {
> synchronized (repositories) {
> repositories.remove(((IRepository)repository).getName());
> acceptors.remove(((IRepository)repository).getName());
> }
> }
> };
>
> // create the server container
> serverContainer = ContainerUtil.createContainer();
> Net4jUtil.prepareContainer(serverContainer);
> TCPUtil.prepareContainer(serverContainer);
> CDONet4jUtil.prepareContainer(serverContainer);
> CDONet4jServerUtil.prepareContainer(serverContainer);
> LifecycleUtil.activate(serverContainer);
>
> // prepare the server container
> JVMUtil.prepareContainer(serverContainer);
> CDONet4jServerUtil.prepareContainer(serverContainer, new IRepositoryProvider() {
> public IRepository getRepository(String name) {
> return repositories.get(name);
> }
> });
> }
>
> /**
> * Shut down and release all opened repositories.
> */
> public void stop()
> {
> if (serverBrowser != null) {
> serverBrowser.deactivate();
> serverBrowser = null;
> }
>
> Object[] repoArray;
> Object[] acceptorsArray;
> synchronized (repositories) {
> repoArray = repositories.values().toArray();
> acceptorsArray = acceptors.values().toArray();
> }
>
> for (Object acceptor : acceptorsArray) {
> ((IAcceptor)acceptor).close();
> }
>
> for (Object repository : repoArray) {
> LifecycleUtil.deactivate(repository);
> }
>
> repositories.clear();
> repositories = null;
> StoreThreadLocal.release();
> }
>
> /**
> * Create a repository with the given name.
> * The returned repository will be a local synchronized copy, so the user can continue working when the
> * local repository is disconnected from the remote repository. The given name has to be the remote repository
> * name, while the local repository will be named "MYNAME_local"
> * @param masterName name of the remote repository
> * @return local repository copy for the created repository
> */
> protected InternalRepository createRepository(String masterName) {
> final String cloneName = masterName + "_local";
>
> // Create the offline repository clone, and synchronize it with the remote repository
> InternalRepositorySynchronizer synchronizer = createSynchronizer(host, masterName);
> IStore store = MEMStoreUtil.createMEMStore();
> InternalRepository localRepo = (InternalRepository)CDOServerUtil.createOfflineClone(
> cloneName,
> store,
> null,
> synchronizer);
>
> // create an acceptor for the created local repository
> acceptors.put(masterName, JVMUtil.getAcceptor(serverContainer, cloneName));
>
> return localRepo;
> }
>
> /**
> * Create a repository synchronizer which will be used to synchronize remote repositories and their
> * offline clone.
> * @param acceptorName name of the acceptor to use
> * @param repositoryName name of the remote repository with which a local repository will be synchronized
> * @return the created repository synchronizer
> */
> protected InternalRepositorySynchronizer createSynchronizer(final String acceptorName, final String repositoryName) {
> InternalRepositorySynchronizer synchronizer =
> (InternalRepositorySynchronizer)CDOServerUtil.createReposito rySynchronizer(new CDOSessionConfigurationFactory() {
> @Override
> public org.eclipse.emf.cdo.session.CDOSessionConfiguration createSessionConfiguration() {
> IConnector connector = TCPUtil.getConnector(serverContainer, acceptorName);
>
> InternalCDORevisionManager revisionManager =
> (InternalCDORevisionManager)CDORevisionUtil.createRevisionMa nager();
> revisionManager.setCache(CDORevisionCache.NOOP);
>
> CDOSessionConfiguration config = CDONet4jUtil.createSessionConfiguration();
>
> config.setConnector(connector);
> config.setRepositoryName(repositoryName);
> config.setRevisionManager(revisionManager);
> return config;
> }
> });
>
> synchronizer.setRetryInterval(1);
> synchronizer.setRawReplication(false);
> return synchronizer;
> }
>
> public CDOSessionConfiguration createSessionConfigurationFor(String repoName) {
> // check that the repository is available
> IRepository repo = getRepository(repoName);
> if (repo != null) {
> // create a connector to the local repository
> IManagedContainer container = ContainerUtil.createContainer();
> container.activate();
> Net4jUtil.prepareContainer(container);
> JVMUtil.prepareContainer(container);
> CDONet4jServerUtil.prepareContainer(container);
> IConnector connector = JVMUtil.getConnector(container, repo.getName());
>
> // create and configure a session with this connector
> CDOSessionConfiguration configuration = CDONet4jUtil.createSessionConfiguration();
> configuration.setConnector(connector);
> configuration.setRepositoryName(repo.getName());
>
> return configuration;
> }
> return null;
> }
> }

--------------010009020405090306060007
Content-Type: application/x-zip-compressed;
name="CDOExample_es2.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="CDOExample_es2.zip"

UEsDBBQACAAIAJGIQT0AAAAAAAAAAAAAAAAVAAAAQ0RPRXhhbXBsZS8uY2xh c3NwYXRolZDB
agIxEIbPLfQdltydrZfSw26llC0oVItue5WYDOvUdBIniejbq6VS8SD0Nv/w zcfwV4Pttys2
KJE816oP96pANt4Sd7X6aF97j2rwdHdbGadjDDotD+HmLyEn2RUrYlsr41kV x2WtvHSAxlGI
CF82gdOZzfLghNG0mb9Mxu3zcNxMy0uOOKGwdmBxkTvI9HuJArOk2Wqxn2/t LmA50hs9a3p9
eFDlv18KFsF4QRBcZxK07y53xPGaKoo5qY7jFdLnFHI6wQviH7gqzyvcA1BL BwgY5ERr0AAA
AHgBAABQSwMEFAAIAAgAkYhBPQAAAAAAAAAAAAAAABMAAABDRE9FeGFtcGxl Ly5wcm9qZWN0
vZLBTgMhEIbPNvEdmr0L9uaBbhNbe2s1qT4AwnSlgYEA2/TxC8hqNhsTD8bb /P/Mz0dg2Opi
9PwMPiiLy2ZB7ps5oLBSYbds3l63dw/Nqr2dMeftCUTcQBBeuZimk3vDkBto 15vnpws3TgOj
xcgdYY0BjC2jQ5Xdekwogo7Ue6+0PDgQWVW5TlGOsjgVZn1HQGjlApCTjERY nwp+5iUA/vsK
KcF912d2qJqODUYnlF9xnQSy46iOEOLj/2IP4gMM/xNodYYnT7zYe6jTn2KC f9F9p3Bfmple
hn4KjL4HJ5mhzsSvXRgv2BVQSwcIZ5k9OOkAAACfAgAAUEsDBBQACAAIAJGI QT0AAAAAAAAA
AAAAAAAvAAAAQ0RPRXhhbXBsZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0 LmNvcmUucHJl
ZnOVjsuKwkAURPcB/6HBfZOOg4KQzYiCs5kB/YGepBKu9IvqdsC/N7PI2ri5 FJc6xVmfKOq7
K6o2yuz29cd+06jD8XJVTW3qVYXOScrQiRhAhA5Z/4FZYmjNqooc9Vy59UV3 kZiOT+LAKfQY
EbQEJwFfmZ+Pgv9ni2B/HfqlA8VyRPlxtgyRvjV6+5r0yYmdfJe0E+Ok47XN GSznHqHIIGAL
MnIpjXD377I53jk7PgFQSwcIZ8IyQq4AAACMAQAAUEsDBBQACAAIAClLZj0A AAAAAAAAAAAA
AAAfAAAAQ0RPRXhhbXBsZS9NRVRBLUlORi9NQU5JRkVTVC5NRp2RMU/DMBCF 9/yKqhtSc0oK
6pCqC5ABpAKiEguTY1/ChdhOHTsq/x6LNBEgipLqtnvfu3dnb5miHBsbvqBp SKtkFkMUXDsl
Kgy3R3HQlr3ywCQms5vbx/TAZF1h3999yExXxH/r64ZUUaH1QzbWuIH/nupr 71hFOaHp9Wfc
OzIo0gNyZz2ZqpaMVhKVTWb3rGW7NIxhFdzJWhsbPjH+zgofrU0Bb0soRcYP 67ZL2cxfY/BB
ixiWEF3Mg+P0sAvrTMgrqhsER+us22FwX8IKovki+MFxbRCMU5YkjnOgzIEL /QccnYRBob0q
x1m+ULC8Hoc7AhLTVj/t+eeCBo0Hz/GAyKZcLjL/82flTH7kspUn8OATUEsH CK77le4TAQAA
WQMAAFBLAwQUAAgACADtSmY9AAAAAAAAAAAAAAAALgAAAENET0V4YW1wbGUv YmluL2V4YW1w
bGUvZWRpdG9yL0RCRWRpdG9yJDEuY2xhc3OVVm1XE0cUfoZEAmFBpIJSRbCA hjdX0LaWWK2E
YLEJtA2NtdrWyWaSLG52093ZAB9t/0X/hecoSntOj5/80N/U09M7m0BDQig9 OQmzd++d57nP
3LmXP//+7Q8AC9iJoINhWGzzcsUSusib0nH15aVksJiYjyDM0L/Jq1y3uF3U 13ObwpARdDLE
HLeoC8MyK57QvS2pi6qwpadnhEUupmOnTE8KW7gMnbJkehPXCSjVBilOTrdN 25R3GC7G2npN
ZRnCCScvusHQqyGCrihCOK2hG/0MoZhyOJ0ybbHml3PC3eA5SzAMpByDW1nu muq5bgwrUgwX
2oFNzBOpvi0zXxSylpPIM0zHUv+Vd1I9E9VunMf7EQwznGsDoeECLiomriBC Vw7tvFnghtCr
ptgSrqdvkEc2WMejuISxCEYZJk7ir+EyPmDQDrIghnR4salj0FYPPOMRTDQd dZOrQjpw78E4
rmi4ihgdAyGumK4nk5YokyIMZwm0uZQIYJphpBFAlAu0dlyhJ/fLbZZhspVD 3uSWUyQOdsWX
y8FDFNdwPQKdYbT5mGon6enLplex+I6GeSwwRMmW8F03IDjepMoRYXGFcFPD h/iIqoPe3KPE
qyJTEpbFcPmYDQKXeBduMQylnbxZ2BnjUrpmzpdirMotX3RhkURaE1vNLxZ7 MIXbGj4FXY9O
kbC4R5U71gTWoFvgQVif0Z2gvXqwhOUIEnS3jgvQkMQKwyDRTWak6xvSd7m1 Ijj9pfq8E2s4
PXpv2sV4WwYt8XGVw+caVvGAKl7cFzLY8cThR5ZO6lBzqnGKYgZrqiGsM/zS elsPH0drRiey
HFOLQTFmuWXmea1jKT5fafgaGcrbqQg76FOryvyNhiweMnQRo6w66OY7UsdT 0j3S8B0eK+ky
Srq7/0O6VuUUq+/xYwQ/NDT/Mrd5UajulK6tNDwFZ+ghdqu2J7ltEMERItg2 Iq62NTTkVTfu
NZxy2ZSJEgELT7WtgoYiSlTCfoXUEaoNtXJ7fESVUVdn5H71hL2XsGVjW6K2 fVy3O9TCKDjk
CbrLo+0ErvMkv7xVbCbVtjMpUhnJjWdpXqlPoMFaLS6LAvethhkTzTi+a4gV Uzn17g+La0oW
aqtJ27Acj2RJC1ly8hq2lNhnDJdOWyQcW4ptmRa2Tz1/1abxG1xt4WGMRmaI vqfA+vvV5KR/
AEL07UaUrD20uoUO+gDR6ZlX0KZfo+8FPXXgjLIFb1T0EwzQSqO1sr6Hs4F9 EEO1Xdgl2vkU
2X6efgntJc7tYuQtxtOz7+DO7mGS4R3M2uItptZ+x8yjN5jbxY2Bjwc+mZvb Awk1cHcP9zqw
h/sd5PQFe430Yng4vIsvf8XcYR9l3djDtyG8wZNd5Oqgc2wX4kWQoWK/hH76 fYo+cGKfo7Fr
YBIFulZF6CjRKDBxA5vUnJ7hAdnXYeEhbDj08eHiOf2qrG/WMqtnrVYmRdEg gKRIizSaJH3K
FBmiPRYouoIwfiLPLrC/8DxC85HRfnWtaIqgpuu/QncGwm4HcEN10ffhWB0u BC/wl0QLBHAe
VYpAcJAs8MQ/UEsHCPJU326TBAAA4gkAAFBLAwQUAAgACADtSmY9AAAAAAAA AAAAAAAALAAA
AENET0V4YW1wbGUvYmluL2V4YW1wbGUvZWRpdG9yL0RCRWRpdG9yLmNsYXNz lVZZd9NWEP5u
ElBwxL6VJIWErd5AQMvqEApOAm6dhOI0YNrSyvJNoiBLriTbga50ofv22P/Q l57TOofmnJ72
tT+qp3OvlODY2NAHy/dK38x8883ckf75948/AZzCTwq6GPbyJb1UtrjGi6bv uNrYlXG5UNDD
sN9x5zVuWGbZ41rF1Mq662vB8+u0ZOjxXc4ZjmYbgYtzusG1qslr3PW0GULM ynWKYeOIaZv+
KEN3NDZL5mmnyCPoRp8KBb0MW7OmzacqpQJ3Z/SCRa53ZB1Dt2Z11xT78GaP v2B6DPuybciL
SEUnp1cJezy6jpzhuFxzK7ZvlriWue468y73vEnHlnaClFIKNgyJ/2HJ0BtE vEzEekSWDCPr
Q5OAmYBfzvR5qs2zjF2u+JJIZHzJ4GXfdGxPwT6GoSYDUYIMBVqDKRhgGGyj ifQbAcPzKvbj
AOXpcV8QofK18rzpuHcL3DYWRBBJNzYrjIdVHMQhKgsZS483TX9hyvHNuXtE sF2+qzn14Qhe
UHCUYaADUEUUMeI3z/0pvUT8dkVj2UW9qmuWbs9rOd817fmUYJNQkcQxhj5i I4gG8N3RVrTs
Nk9mO9ipKAwbTMGBZOqYC8PmnK8bdyf1ctiTiumNma5/T/b2bWpl0wva4bJl OTVeZNhuuFz3
uSCadmzfdawW6b2ar9XMImXuaWmnVHa8QHoF5xkOP8shi+AcUuI0nd1EAl1U sQEbFVwi65a+
EEaCCLd96uaqWRTWo+gTLq6oSGMsqHMThkGLdjjvmSa4ZD9Bs6QlflYvcOtx 5PEgckbFK3iV
YRtFXodgONkx7hXd4+sMwpadVDGFaYYtpGpDCRkOUFt1qnEE/XhNxQ3kqMPI +Ab3nIprUK2P
NVny0pxmFB2NuyFES49Nr8JTIqvXVcziJg2J1XPT1KbThUVu+CHjvIrbYhqG DSMFXfInuV2h
uUYzmNRlOPQMjRPEm3CMCk2Qt6n125kI3yKyrqIAIzh7wWw48gSRWodDHzjm FczRgHgqWMUC
TGImQixwiw7BcFOMRmYSQhLewV3R1YSOtT8yY5yGtC4nZiojtDwHW4WDcpDR jHxZDXWIJhAU
zIWvwOugl8CpqKAajNGgNMPtiQmAPAhLTWO8GZTxeSmCGu6LZN9jOPgUn5Rl Lz5g2JNeoDbi
Q7pP865Q8flQVbcqXLj6SMXHYkgKojPURwo+oVdnm7fE4ZMRPMBnIvrnlH+0 7RtWqFvDFyq+
xFc0ofViMcctamHSPmt6NADEgT3Wyp5XqXuprM3gYEKXpJD7O+dMvVMKpSKB OmIFhvCRnDyJ
E6YY1JtXczgujh+DmrEpftrSPY97GKZT0E3fR4x+NDrpKuYofZzQdRPtNPqX z+LLiPxKiy6o
dN0obx7BZrqqofEWbJWOtmF7aHxa4ules2FUGu4JHoaGYrUDO2W8XWvxEyG3 FheJhthsLfZu
6XQvrXto95x04dEdkeJg8m/0/4y98UQdg/FkHUPx5CMcZqgjLrx3S+97KBOR toITtD9JuZzC
AM7IaEOBnzXCgzguBRKrE4TtIqzwwwbo5ot4KcwhGWrY1f1LUxIXGpLoWkvi 9DNYXnqi5Rmc
DS0fkgBC3dH4Cs7lE8u48DtG4r9hZAWj+WW8XMflYDdOu6t1XBO7eB3Zv9Bf x/U6Zmhz67Ho
/bI3xmh9ldbXqIIZnEcWFzHZUMvRNWlG8QbelOzfenotbzyhlj3inRAafk87 oTzRvZMnXu88
An1fbOtdxmJW8K6jRDV9dwW1fELcvTeZ3PF+HR8mV/AgT437aR0Pm1O5Ra2W py/D24gRVY3I
pnC/ocojIY+d9PxrfENMYrT+Ft+Rly5iJLz9gB/pX7xIHsik8R9QSwcI26DX cHUFAABtDAAA
UEsDBBQACAAIAO1KZj0AAAAAAAAAAAAAAAAxAAAAQ0RPRXhhbXBsZS9iaW4v ZXhhbXBsZS9l
ZGl0b3IvREJFZGl0b3JJbnB1dC5jbGFzc5VVW3PbVBD+ju1Eqa0kxLm0DW2J IaS+Rm0JtJDe
SJwWFycxsWtIuI3inDgysmUkOaQPvPAv+AM85aHM0BvMMPDCAz+KYY+samTF pmQyOTpa7fd9
u3v2rP/+59ffAVzD1xJCDBf4kdps61zhe5ptmEp+Zc3ZFFrtji0hwnDZMOsK r+la2+JKzTC5
YnZattbkSklX7X3DbG7uNniNnIcZXvc7dzSl4GNjGDG5ZXTMGmfIFP2evLmv 1PYMhb90UFbz
m1vufplBfmkvqfYBQ7zYUA9VRVdbdaVsm1qrTj7DN7WWZt9muJs8BfdJplSV IbJq7PEowhiX
EcNrDOFkqnoGpCxDwojYTck4gyjDeFFr8Y1Oc5ebFXVX5yI6o6bqVdXUxLtr jNgHmsVwqfhf
9aYsxuvc3upJdiqZ6psuP9Is23JC22GI+XAMOcKcpr5xQheaap3nuVUztTYF xLAYIGnsqwT0
GAL+yzG8iXkJbzGk/re0jLexwCCRQ1Xj3zHMDwj8kL4KoPBajiKJtIQUw0I/ X2o78izYvFky
jUNtj5syMsgyzFCWguBEpqX+HdMjeqpaUEqktaE2uQSF4eLgK0RHHMUiroo+ u8YwnezXkMJj
Sca7mKWD1lXLLvN6k7fsGK7jfQk3GOZeFb+MD0BhRSmsMrcszWgxpAcU2+o6 CKjrS4d7C3ck
3B5Q8pMIGXfxIcOE05ZtwxI9/qjQ2jcYrr5athdC6qtYk5Cnxj4VUEZOlGy0 bKu1b9bVtnsX
xyioEjctuj9dw0IgIjG4fA5rOhfVXu4iK4ahV7R2hR/ZI/iYLmLz0T1NsIwc qNaBGBzOnSxE
sYlPJJQYEn7uFreXGkrH1nSlOzcf0lZGEVuB0+9+XU4VxF3/tqPq1gCHnSiN o6qMi7gkND+T
UcY2ze0+vv3QFK2x2+gdqu5HZ2ypNLijZafPu3nGe2bWokAhQSGE6X8IIfqj EUk/MSExIOkp
wotBpnWU3rbJHqbnePoZxtKZJ5hIZ59g8mcHME1rHBFaZ2g9SwTnMIbz9AbM dWFkPQc4OyHD
nJ0QCtH+PGZdGYWe4ttQ+hdMPvbIhx3jBYdQ7jq4hPTbRfYuOOuCQ5HjAHLO hwx5SKp8H9mJ
oOx8X9k3iLQLvu6CRwX4BRIMz3E5SJL0kYx6JDkv8YZzDhSJSPwvxH/D4rbY PsOVp3jnsUf9
Au+J5aZYVhiETNiRGXPqnKXq5kjqik9OceXuOb5shoz38VGwZiwY8VLfmhW8 iHMuMhx/EITe
8EHDHrSIdRd6xzl1YNpXsQ2RLT1+CJ7dLR/ZtEdWRsUl+97tzEQm/ROGIseZ P8F+xFTmD7B1
wZ99iofP8elx+Nir1SxRAyt0mnmq132qXQGTeEBnuu7r2YTXswns4HOSm6Qw viBbyKllBCHp
LFm/dAL+6l9QSwcIK0TacScEAACiCQAAUEsDBBQACAAIAO1KZj0AAAAAAAAA AAAAAAAzAAAA
Q0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9lZGl0b3IvREJMYWJlbFByb3ZpZGVy LmNsYXNzlVXb
UhNBED3DbWNYQSKIF5CAAhsQVrlFDSJy02gEBCpV+rYkQxhqL6ndJeA/+aAv IFpl+exHWfZs
QghJRHnIXLr7nD7dOzP59fvbDwAT2FDQwHCXHxpW3uQ6zwrfcfWlhZSxzc11 1ymILHcVNDFc
2zMKhm4adk5f297jGV9BC4PmuDmdZ0yR97i+t2NkuF4Q/IC7np48x8HQMits 4c8xNGqxNEPT
opPlYTSiVYWCEEN7Sth8dd/a5u6WsW1yhkjKyRhm2nCF3JeMTf6u8BiiqYs1 JxhajWw2JTyf
2zL9tJb6X62noITUGTLLFBOXZ2BQssLLOx4pbxfeaVCeu/5HhmEtVd3VRIVl 03eFnUvEPhAL
N7nFbV82pQZCIvNlzkgtAUObyy2nwM+6EcpxP2kZOZI1VUdE7Fyl3oGv51wj vysyVKhEybqI
YYsfkqKhugQ1KhT0M3RXmxf2hRkcsXsMvZVJubVDa8fl+nKRsxUDGFQxhGE6 S3zRNDx5DLTz
UitQQUSiFTGMKhhh6LkoTsUDjBWLWjUs6kqnVqeEMHQ8UvDw3G0o+lS6TH1E UDDMfb62E0YU
U/JgTzN0aXW+aTqEOF2FqFaQoU9UPAU1tcXI57mdZRirh6kxlZpHrX1Wp3uZ rKMvLq2ddm8W
z1XM4wVdDPJs8ILwhGMzTNZpoYRmHMtybN0tBUqqUxB1dRHLCpYY9EtCVazg JUOYGp2mexMo
oAchKbuQlF14TV9KS/691hBSDCwm41dVrMmvFvKdYgzxbjr7boavCPlUdFa9 CeOSE/2gjPRr
pgdQoZkeHxqv0E6nmdHcPHKM8BdaNEClsSUwtuEqjWoxgHbtNNM5QEcJPB3E k60a2BEAbxSd
JaBcRXA9yNdZzj8a2OtQdFbkZuXcXURaBM4HJRGm8VMV8maAjBa95eQN6CYP C1a3cJtGhjv/
rqTnH5X0oLdEMUOzjGpgn6s4ohUctYLorwh9JQ6PRMuo+HdE34/+xMAJ7jOc QGP4ivFjTEZm
jvCYHLMnmJOOBYYjvIq8IesR3p4lbguqH6QEQ5ik+UxAvCwgXhawHuDe/QFQ SwcI7wxTZyMD
AAAiBwAAUEsDBBQACAAIAO1KZj0AAAAAAAAAAAAAAAA5AAAAQ0RPRXhhbXBs ZS9iaW4vZXhh
bXBsZS9lZGl0b3IvREJUcmVlQ29udGVudFByb3ZpZGVyLmNsYXNzjVTbUtNQ FF2H1gZoyqUV
RKTc5FJaIIiCcvECpcwwU4UZmI6D40NoDzSYJp00gHwKX+ALD/igDj44+OpH Oe6ThFIgAp3J
ybnsvdZe62T3z9+fvwBMYllCHcMA/6yWyjpXeEGzTUtZWtywOE+bhs0Ne80y 97UCtyQEGVp2
1X1V0VVjR1nd2uV5W0KIYdy0dhSe17VyhSu722qeK/saP+BWRVnxQWIIuccM Q9n/p4rMnDOf
Y2i0TNN2KRl6LmXx0jbNTYsrGTeAwkPzmqHZrxgCiZEcQzBtFngjAmiWEYbc AIZWGRLqxSwm
owGNDM1ZzeDv9kpb3NpQt3TOEM2aeVXPqZYm1t5m0C5qFVH5XUyjUqSCVimb FcqUNaO8Z6eL
5B4vMKwkbhDvCc9e9dtnZyQnoYsu8S5OSuhmiN/oHkP/7XUx1Jt6YUXoETZd q4nODX7gnYd3
uJ3ReYl8IeOGEz4SPlzfa6SrGZIxjAEXIV3U9ILFjXMfPUQJSR9F+YKppJdW Xagw4hiVMYZx
hobzG6JKBhMj1z6kvFkqmYayZ2u6kslqFXsujAlMSnjC0HdrsIyneEZXbpsL lqUeMrQl/KQx
RMoqSTnXQOt1W81/equWvY+sgQSvOSFkgp9h17eEylkZc5inbnFUqvQ9U4/1 +ci82i8SP68k
XFQrF1a3+XFvCksWZCwiTZlaJVMq24dOq20S9bq5Z+X5siZkdPo2xbiARB/d b4Cee6ijvyLq
RYgfdaKzYqJPaYzQKkMRjN7NyR9oSrJvaBFD9Ctt1eE+jVEEaYzQ2EQAzTRG 0EY7spuGdjyg
N0NHFTLlrOm5AAk5G7GaRFZNfIhOL1GlaEHWmkyd4ZEoZewM8UvVNJEsUGI9 8bVQqgBMukke
oJhJ6HFIWtFLVtQ5s36aCUseY8Cjm6UTcRZKpr5j8ORKsXEHu92NqGKHkHDM ZaJ3PJyP9BZR
HanfGDlClIqPnyLFcAqF4YQJ5EBN9f1U3wAhDtcwdFQZOjDlMEw7Waydps/x wqN671HFiCp+
hIhLNePHMkosY6R7ooYlVmWJ4WUtSytNX+G1x1L0WHpdQZ01gt4wHEEKfEEw eBw4vkI5RZTT
6MZMDWVvlbK3hjKEQBdB0WrJsT3zD1BLBwgBitmkTwMAADUHAABQSwMEFAAI AAgACEtmPQAA
AAAAAAAAAAAAAD0AAABDRE9FeGFtcGxlL2Jpbi9leGFtcGxlL21hbmFnZXIv Q0RPUmVwb3Np
dG9yaWVzTWFuYWdlciQxLmNsYXNzlVNdTxNBFD3TFtaWRRCwoviBWrEfwAIi mlQhBjAhaSER
xPhkpttLWdzuNrtDlV/kMwnG4IMaefMn+aDe2VbEj8TSpJ0zd+aee87c2y/f 3n8AMIN7BmIC
WXot6w2XrLr0ZI0Ca3Fp7Qk1/NBRfuBQWG6FM9MGEgJzflCzyHadRkiWR2p2 x9pVjmu5zhbZ
ezbTlH6i5SZ56lFVNhQFAt1q2wkzU1yv1FnBIuc8cDxHzQsUOk7KbQokFv0q JSHQY6IL3SnE
0WvCwFmBeFZf6Cs5Hq3u1isUbMiKSwIDJd+W7qYMHL1vBxNaskC+w9qZaZbc 63tLJG3lNKWi
qsBUtvTfF1s5fjKWn0QawwYuCIx1VtbERVwSMIMTR9rijmzKVqWybBQNXGbG k1KovmXZVd8K
KWgy+cox9V4PRnDVxDWMChg1Uquyzq8xlM21OF3p1ax1FTherdiDG8gYuMnG f6tn4hbGuIEB
1f0mJ49lT+SuVXbIVsXc3yFtPmsipw0lpW1Tg/Wwm9SxuT2BiVO9KCtbV9J+ yaKithqY5Hk6
BYMBHtrBX1I3tgP/VWtAUuv+bmDTY0dvRv7dnkmdyf1Y9myXz7xamdS2XzVx V89jV0jqaYO7
t+J5FCy6MgwpxCjPbpz/oqK/Xw8woxh/DZzheJLRfd7rSCpfeMs/72DuR3f6 dCw6YWa8QD8j
k7GOnsMArwkMYqjNss83dZWF/AFSBzj/vPy5jQqfMHKIKwKHuB7Ds1b09h/R 8aM36B4/+qhp
UiypyFRFPIzWeCQlzSKACp/abKmKOcbz2IpkpSOZC21ZGuVRYGHjjIcR+840 cQPCwITBI8ar
9TWSOx0ZncGdyEwas8yq7YnIJn9+AFBLBwiYDzqGiQIAAN4EAABQSwMEFAAI AAgACEtmPQAA
AAAAAAAAAAAAAD0AAABDRE9FeGFtcGxlL2Jpbi9leGFtcGxlL21hbmFnZXIv Q0RPUmVwb3Np
dG9yaWVzTWFuYWdlciQyLmNsYXNzjVNbTxNBFP6mLV1bFimoeMELQsVelDV9 MinxpWJC0ooR
5X26PS5D9tLMbhv9V5pgjD4Yn/1RxjPTBjD4sJtM9sx3bt/5Zub3nx8/AXTw 1EFBoEEfZTQO
yYtkLAPSXu/lwVsaJ6nKEq0oHczgesdBSaB2IqfSC2UceAfDE/IzB2WBnUQH HvmhGqfkUfTB
80eJl5Kecrn9s2Kf3uhkqkakBcrZsUrrz7h7P1/7LufsqlhlLwTauZOaRwKl XjKiCgSWXDi4
UkURyy4qqAkUGyZgua9iej2JhqTfyWFIAqv9xJfhkdTK7OdgyVAWaOXsXe8w 5aWAsvPxBXYb
/XP9DjOt4qDb7OcTr1vBLdxxcFtgOx8FF+u4K+DqCy4zrqUwyVToDeS4u4j7 2HDwgNn+43Dx
EJusEY/AHS8Snx08E78EOahzbL55WNFYRlbtS5oIVA+TifbplTLSr/9/vh2T xwPtxX7IvjgY
UHacjFy0zeEupJS9H/P4+3FMuhfKNKUUG3wRirwWIGo1cx/4JRR4VVBldJGt 57w3SLXV/gq3
9Q1Xv9iYFYNZj8lOscqWy7ZBr+G6xW9gbV5lb15lpXUK9xQ3299xr4Bf2Pp8 Vqxskye20Nos
eF7IWI+wbak+tvENNPlf4hvQwhPbUths/v4CUEsHCNMBkIPsAQAAzwMAAFBL AwQUAAgACAAI
S2Y9AAAAAAAAAAAAAAAAPQAAAENET0V4YW1wbGUvYmluL2V4YW1wbGUvbWFu YWdlci9DRE9S
ZXBvc2l0b3JpZXNNYW5hZ2VyJDMuY2xhc3OdVWtT20YUPYtdBEYtjwSS5tGk wSW2gIgEkjRx
0gcmpG6NTYG4r0xmlmVjxMiSRxJMyf/J97ZTptAPmXzqTNN2On38nkzuSjYk WGltPCPvanfv
uefec3X32fOfnwC4gvsauhgy8lteq9vSrHGHV6Vn5ufKS7Lu+lbgepb0F6Ll 9LSGJMPABt/i
ps2dqlle3ZAi0NDNcNP1qqYUtlX3pSlrD02x5pq+9H3LdRTecjTNu85Dq7rp 8YBe5rkgB9sM
3cG65aeniEmxPSo5orHF7TQXQtZpp8RrkmGoeEBtOfAsp0rnhtQ5rwmxHZ3s vmU5VvABQ7lt
j63YrSvZCkMy767JXhBBHRp61GxIRy9SanZcRx9SKSQwokPHCYZERhn1Fy1H ljZrq9Jb4at2
GIsruF3hnqXeG4tJlScGo03O6WmK/5TwJA9kXP4ZrmeyxSMIl0vhHN7VcJ5h rD0qOi5glKFH
CeaHUj9oO/OvUnRkMLNhbgaWbQrXCTglzjML0dm1fHOFGL6HixrGGM62Wgei bq7kF+8RiI4M
sgx6VQZk7EhVkQy1zFF8xhREDIxyXiDv++6I6zgmNUwwTMeJIdxajbTw5JbV FGWpMY8iuAST
YTjSubnTSB59mK+R+D9Qm4nXcJlhNrY+6lYLQMEJpOdwuxWoF9O4qmGGYaZD Jnku1qWOa7hO
xV8qlxcZrnUaTYiR68MUbui4CfokenwSW60y3MgcDS5bSeE2PtRAPWQsDiHS muxKahLpdAYf
MVx9jR77BrEfXB9mMachz3C5Y2MddzBPJe6/UuLjcSUumvtm4aA8sxXl/RMd BXzKMEgwS4fa
6XAmrhcqq6KOBZSonYVWh0oz13Hy91sC9cxecRBM27FQq/UO05iLb4EdlTgB d4sw6fQRH0Ff
htSyu+kJOW+pRn86vhVeUlmmEO44wqY9p7ogg3V3TcdX+Jpy3Oj0245Y91zH eqSCkzHS/F+f
ejkFvvS2VLNrRH6g/MtuiL5eoBR7eZv7dHfgPN11CXreQGJgQF2DwMCQugTD sU+N6KJHx5t0
6i2azdJ7ksbjxvgO+o2JHQwakzs4ZvyE4e/D0yfpPxVaUQbwC94O7ZmywSmc DtfP4GwD73ED
77bxI/p38Q4Ng7tIF3dhPMXUwsQPuLKH97uwi1ulyfE9fNyFSTpzbA93aTax h89o+G7f8RiR
B34lx79jGL9hBH/QFfgnRvEXDPyNGfyDHP4NSRmR4wapfmrPZSwSrRFcxOdY IsRR2lvGCqUo
gXuhjwq+oDFJmF/imzBQFoZGvxdQSwcIC9St98YDAACtCQAAUEsDBBQACAAI AAhLZj0AAAAA
AAAAAAAAAAA7AAAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9tYW5hZ2VyL0NE T1JlcG9zaXRv
cmllc01hbmFnZXIuY2xhc3O9WAt8W1Ud/k6b9Lbp3aNdS5eNPTq2kaYpYd0Y rBuDPrY1o49B
S2eHMG+T2zZdmoQk7dYpApOnoKC8FBRFgSE+GLJ1KVWYoKD4fgM+QJ4KE/GB T2R+59406SNt
s+rP/racc8895/y///d/nXOfeufhRwBUCqeCLIGV+h6tNxzQ3b1aUOvSI+7a uubz9HAo6o+F
In492mgOK7AIzO3R+jV3QAt2uZs7enRvTMDSHYqyKWxIvWqJRfzBrvUCamTU PgJzzDl9MX/A
3aiFOSGvxd8V1GJ9EV2gbezbDRM3bAhFuty6N+APR3W33tvp9vpC7mjY747q kX4C9wRjeiSo
BZLoB9ZvlEI0r1cP85EQPMcnJKjH1vS4R9a7PdWJnrFvYVK7gQZ/NKYH9YiA I816Q5rerwdj
bs/ITK6fZcKuiYR2R+XSivT6mbrRKC2jp3P9HPNVbSgY0/yG8DWTCfeOzHF7 THP6kqu4Uc4G
f9Af2yhQ7JjIR1kbbVwb8uk2ZKNExTzMF8h2lLXlQWCBigIUyt6JKqzIsbG3 WMUSOcca1WPn
h6XVKaapr7dDj7RqHQFd+krIqwXatIhfPicGLbFuf1Tyl5k7Sv669FjK1AJb 0qGfgc9IdU5W
oSBXQZlAyfhNa/r8AZ8esaEcFQpcY6LCnKHiFLgFlH4t0Kc3dzLGRkMzI4fQ JqC1wYFVkuKi
XKymXXYGJFFy9DQVa3E6h7RwWA/66CxplZ0EqrHxOhVVIG25sZD5UqDIkQZE Ps7EWQroDrPG
xIqKs1FN05P16RVKDCmoFVh13CaQbrRJxWasILneiK7F9NRLaZ56FbMwOx81 2KriHDQI5Gs+
XyoKyzMOw7I2uUuTimbJjULlmrReXXJwrorz0EKFw31U+Iw0CmdEgQ3nY7sC RtEpk0AK+Dt1
74CXLt8w0juf4yrehXaaS/PG/P1kYFx4jkiU4RkkZAFbZFQwrJ6B49PiLTHN u4vGNoLShp3Q
FLyHfE6RmVq4Vm/tppV8Rlyr6JDhr0T0gK5FdQX01oKUJ9Vr0W4KsMGLEmlK Bku+jDQ/Yz+z
0F++yoZu7JJxEjBMnWHGKGuzIYiwgtDktkglymSCNG1xMehWc0xfHJVx1zrK ZpJzbYihX0Gf
wMKJq5vkryl1N/YwAsI0rBYZLfb0Sf17KqmSgL1S7nsFFk1cH/OG3a2126Rk Gy6R897PQE9n
eXM+aU5CteEyueByOt4UrjJ2nVnPzNUfkKuvSAurp7/XvbWtUc5TcFXmXlJp w5XYJYFdK4n8
IF1tRqxNVZU9qejZFgn1+30Gy4zIaCwUlt79IRVzMNeGG/ARBTdOHUjjS7yK j+ImhrVPT6WA
kjEZe9MeeRzxh4JG0r5Fxa24jTXCKDuspfNHJhs61oYCAWYMc/bHcYeC21kB 0r1X8Ql8khEc
C1VHItqATDxlF6RL7p8SWJ7JcSkfd+IuFZ8xjgXeQCiqy6x4t1TwHoGyaWrJ WC33q7gvsY+u
MRTyZNZL4JyXBqXA7OT5LzEtd2Rg7LE1qdYD3Ck1zNQW2i3ToYL7ZWH6soqH cJBLzWTQMhD0
ckbQv1cGpp6mLP9PTiWjxayXMAZVHEachS8BQ2ZhIzFkKi0hyVjIHR/GVxQM M7wy8VAzO30V
jyRpaO7sDDBcagOhIGEcSEfD9CjG3Q8yjLwx1EyjbHKqNOio0icz0BEVX8Nj ZJSHgOqkhwRm
ljSmsUIqtXmY25LXCkZ7r8aTSaTJqOh5Xkmn2VejYxztrP/SheT53HSZkzIw DKEYR1G5mYJv
J8pWd6W7x9fh3ePeyt86Laa1hPoiXsb2UyjJxffoG/J1VXdl1U4f33bwNOCW L3+g4ocoYqKS
N4TzGmz4MX6q4Cc8dU+BxNch3a+uxnS9n+HnAktM16tn2t8rmQ/QacLkmoxz uIuRvsGxY8eU
HsFde81F0ohjVjMRPCNQOtFqXEPN6yurfVo4Ju8BT6PEhl/i1wp+lbagc8EI 7ufwPPNy8hgR
NBPuSO0QqDMDZ487enHAnaI0rfdwW09dzcRd1ktCX5Dp4UWBBxwzVX9SiQm9 J5+QBtJ0RuCq
EU+z+ZJq8zzQMIWjyTtw73iTnzFTfenjvo6EbrT7tOqzePo60tnQdTzEKPh9 5kea1TYcxR/k
wfdNgeaMD74ZlaQ2WQL+pOLP+Atv8+MvXWOrXGQyp4pGqZtZJowuFe70d/WR YT5s5jFG5tqp
U/Qk+UrBXwXO/K9yXj7ewt9V/AP/5Jk6Kr8dxCIDxhIemHhmc3jkZfAtvK3i 33iHlxY5R9vN
zQJ+r6GBnLRDnu/UkROEmZtnp25e5sCiRFFOx4IsKpl/qkgemdPtJQ8CwqJi OVbkixyRqwhF
oPL4y5W8as7PFzY0KSJ/kjP/RPuwZopZqpgt5pAQ1syEd0v9ev8PRTMpjixc IgpUUSjmCSyY
nHmB0xwzITlfFIsSRZwwyZeMKRerYr6wy+I9hp60nye8I+/dnpRq9EhKX6iK E2XBNDxynKvl
St8zuxbZHf8JcnL7yYznTd0p87wpgBnjE5jlHctx+g8PUzOcOJJHo8tPFbgo 8wv9zD532szq
sdkvPzsuTL/3KdIVaTcPFY3UBrQocxtKeezOBpDD1spf4Ar5lZBPeexnwcbn /FHPKvbJz1Ts
75O3QGOsAIVs5dVwHor4W8yn7RzPYjvPeRgnOMUh2J3lh7DQOYhFDxqLlvL3 BIoEzoYF67i8
mtvWcqs6gpLvjOVYhpMAo2c1QJbKzJAQ8gBXSvDnOA9i5TAc7eVxUN6phZWD WDOIM4awIQtH
UNPoehIOZ/kg6hpdnLplCJ4syDWuITSyuA1hWza2u+JodR3gdtkGuMXkAdjC /laKbIATzViD
bdiEc+FBqwFyqSk+CfIc7DBALkU5LsC7qcKFHCV7b8OjoIZvlmB+AvwRghds O+O4yDkMb/th
6IewMtXtZLe7nfr0HMIWZxy9ksSDsMcRNZsBs3mf2VxqNq1ms082w7hSrr86 jmtSpK+l/UBs
2cQ2GxfBjp0ktAcu7MJqBFCFXpoiiHqEqHEEbYhCxx5DX9VEnNBX4LoRbcQt 3F3ydQflXv8E
5spmEB/eLk1/vaS6vekx2QzhZoEhfEyggY+dqcfGisf3I6fi8Udd7VU5j6y1 Zq+17EexPafY
UtlUcQR3DuHTAldYRLGl2HrXsdfKR80qSMyK47PbkzPeMKXdKyAhrCTJDxLi QqzHRsLcSK/b
mDT1ZrowcCkVuIxOfTmd+CrOvJomv4aeeRXpuI4Gv56EXYcu3IC9uJGzb8C1 uInX/ZtxG27B
7bjVoKjepCFBkZN7fQ73k6RquobZW0dP/jx7WcaY2Wul/38BXySevXx7gdG7 0MCpFB1DGSyK
ZF7BmRAKvnSMK7IV2T3Af8AxGkZJPQthjBbMm0UX25yMlm/ySQZ4fZpIaXSS roWMkAebnK5B
HKqyuOwWQUaHGD5VVmmqculRjJFHzWixWw8kXcrJNAHcRV3vZtjcQ4n7sRL3 wUGNy6ifE/ei
kjptYsSWGloZOJJhU4/HjbApYoB9nb0s7uLEN/AEWVjBOU8a2CuZE75Fx7Wy fxjxhFb3J7Sq
GsZTjJvvNLqkeoXfpXLlpm6D+L7FEsePmobxNGc8S93i+EWVtcJusVvj+E1K jwXGTgcZsIdw
ImUso5RyuucqHiNTuKuSuKsMtMz0xPYSXuYuyxgQr+BV4i6nJ/0WvyO6VbTt a3jdwP0Qdzdx
DxjPQOkwjrY7y12H8UYcfzyCt5oqLEP4WxZk8y82KXhmumRwkZoC3tDm4xnm k2cNaE5zsyS0
UjpFjhGtpQIGpQXGOkmp4F9WAsYrfCOVamB6FNmNridQy0zTVDEkrAK0f5T/ 9/H/pRWuIZEn
EBdqlSUu5lZZ7Va7ZUgUZcFuNV8NiQXy4YBI5VAz1zxHCc/TRV5gvnmRRn6J yF8mwa9wzqvM
O6+RotdJ5lFm2zeYbd8cRXZDUqMGscjQKAebxWKxhLhnY4NYyoKRzT0Wi1Kx zCDbLk4Sy8lU
MvNuVYRtbq5YIVYmdJYBIZmRbm1P0WvStc4QLmtPljjZ+HWIMsM3stEN8+/K RHvUbP4DUEsH
CERkVTbyCwAAfR4AAFBLAwQUAAgACADtSmY9AAAAAAAAAAAAAAAAMAAAAENE T0V4YW1wbGUv
YmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIkMS5jbGFzc31SXU8TQRQ9 w1aWbhcoH6KI
WD76UAphiy8+QEy0amJSfMH0QQPJMFzKkO0Mmd0S/FkmGg0P/AB/lOHulPig lk12536ce+bM
mf31+/oGwHOshxgTWKIr2b9IKelLI3vkkjev94dRfSdESaBmXS8hleqLjJLz U6kokSrX1iSv
/CIwnp/prN5irs5Isl2G7Wmj85cCrcY9uM65vJRJKk0vOcidNr3dja5AqW1P qAyBSowHGI8Q
YDJGiCmBh43/j0x3tKEPg/4xuY/yOCWB2Y5VMu1Kp4v8rlgqxAssj5ZU32Hx lbo01nzp20HW
Kpj+2VIgcAM2I2hsdCM8xpMQiwKLI1ljLOGpwIRUijLvXu0+Wz4VR4oO7MAp eqcL4VN/mtuF
GD7wW6NSm7GYfcrP7EmMVSwITCpHMqfhZfFJ4/fGkGunMssowwp7GvDvIKrV wliOxvgNMcH1
Mkdtzot+pbn5HVFz6wfirx40zd/IgwUPfkaVowWfVzCDWcBHc5jnGl8S94aE L3wOlJvfEAU/
8ehvukPe+8jTxUPgHV2AZY98hhqvJbZ4BWt+SngcP7dQSwcIvV2orasBAADb AgAAUEsDBBQA
CAAIAO1KZj0AAAAAAAAAAAAAAAAwAAAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBs ZS9tYW5hZ2Vy
L0RCTWFuYWdlciQyLmNsYXNzfVJdTxNBFD3DLizdLlA+RBGxKH0ohbhNX3zA kGjVxKT4gukD
b8NwKUO2M2R2a+RnmUAwPvgD/FHGu1PiA1g22Z37ce6ZM2f295+fvwB0sBVh SmCdvsnhRUbp
UBo5IJe+f3cwjhqdCKFA3bpBSirTFzml56dSUSpVoa1J3/pFYKY403mjzVy9 iWR7DHujjS72
BdrNB3C9c/lVppk0g/SwcNoM9rb7AmHXnlAFAtUE05iJEWAuQYR5gUfN/48s 9LShz6PhMbkv
8jgjgaWeVTLrS6fL/LYYluIFNiZLanRYfLUhjTWXQzvK2yXTvS0FAjdiM4Lm dj/GEzyNsCaw
NpE1wTqeCcxKpSj37tUfsuWoPFJ8aEdO0UddCp//13xViuEDfzAqszmLOaDi zJ4keIFVgTnl
SBY0viw+afLJGHLdTOY55dhkTwP+HUStVhrL0RS/EWa5XuGoy3nZr7Z2rhG3 dm+QfPegBf7G
Hix4UKHG0arPq1jEEuCjZaxwjS+Je2PC1z4HKq0rxOEPPL5LR7z3qadLxsBb ugAbHvkcdV5D
tngTL/2U8Dh+/gJQSwcIDzSQTKkBAADbAgAAUEsDBBQACAAIAO1KZj0AAAAA AAAAAAAAAAAw
AAAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9tYW5hZ2VyL0RCTWFuYWdlciQz LmNsYXNzfVJd
T9RAFD2XLnTpFlhRQUA+1D4sq7GrJL5ASHTVxGTxBbLvwzAug+0Mmeka/Vkm Go0P/gB/lPG2
JT4AS5P2fp175tw7/fP3128Az/EoxBRhTX0W+Xmm0lwYMVIuff3qoPaSnRAN wqZ1o1TJTJ97
lZ59EFKlQhbamvRlZQgzxan2SY+5BhPJdhm2p40u9gm9zg24wZn4JNJMmFF6 WDhtRrvbQ0Kj
b0/ULAitGNOYiRBgLkaIecLdzvUtCwNt1PtxfqzckTjOFGFxYKXIhsLpMr5I NkrxhPXJkpId
Ft9KhLHmS27HvlcyXTmSELgxLyPobA8j3MNqiBXCykTWGGu4T2gKKZX3yTPC xk1rKSeKDu3Y
SfVWl7rn/9eellp43jdGZtazlgNVnNqTGA+wRJiTTolC1XfFg8bvjFGunwnv lccWrzTgv4Ha
7XKv7E3xG6LJ+Vn2+hyX9Vb38XdE3Sc/EH+tQAv8jSowceNHtNlbquIWbmER qLzbuMM5viOu
1YQv2BLbZvcbop9YvsyW8+GmYotr3AVbgPUKuYFNtg1e8BYeVl01Hz//AFBL Bwh1QV/QqAEA
ANkCAABQSwMEFAAIAAgA7UpmPQAAAAAAAAAAAAAAADAAAABDRE9FeGFtcGxl L2Jpbi9leGFt
cGxlL21hbmFnZXIvREJNYW5hZ2VyJDQuY2xhc3ONUlFPE0EQ/rZXufY8SkVB EVHUM5SaeIbw
YKIxKmBicsgDhvftdTyWXPfI7ZbyAD/KRKPxwR/gjzLOXhtjTIrcZbMzs998 38zs/vz1/QeA
DTzyURNYplM5OM4pHkgtMyrj7Te7Yyva9FEXaB/JExnnUmfxXu+IUutjRqBT lFlMaa6ODcVm
ZGM6IW1NvE85Q1ShE2UsaSoFZuyhMtFTlkqmaj1n2AullX0pcLdzAW79QKC+ VfSpCYHZED4a
ATzMhWiiLeB1HGAuUZreDwc9Kj/IXk4C80mRyvxAlsr5k2DdFSawMl0u2uTC WiPVz8iOO6O+
QLeT/K/7HedzsQFu4baPJYGlqSIhlhEINGSakjHRhoDg4tYuqSGwMK5vmz7K Yf5XmcF+MSxT
eqtcr60/ck/cffKMdnSaF0bpbJfsYdEP8dANcDYtSVp6XSnwcMJ3mi9xK5fG kMEqD93jdQWi
3Xaz54fk8Woi4OhVtp6hxj8QdB9/Qdj9itYn9mq45mLVicu2mGcrZNtFr+NG FV/A4oTlFe8O
2+h+RvgNN//lGLH2acWxOMZNOJx1Byuczc/o0mxnzHZ+IZuHe1XOKu7zXudL fYCoyhdVD/z9
BlBLBwhVKEn1ygEAAFcDAABQSwMEFAAIAAgA7UpmPQAAAAAAAAAAAAAAADAA AABDRE9FeGFt
cGxlL2Jpbi9leGFtcGxlL21hbmFnZXIvREJNYW5hZ2VyJDUuY2xhc3OVVV1T G2UUfg5BFsJS
KG0ptdDSktYQPhYRtJpamyZBYxOgDR/W72XzEhY2u5ndDeClM44Xfo4zzjjj hbded0Yp6Izj
tf/FP+CFet5NGigpQWF28n6c9zzPc855z/vH37/8BmAKJQUthItiRy+VLaGV dFsvCldL3clV
R5EZBa2Eng19S9cs3S5q86sbwvAVtBEijlvUhGGZZU9o3raviS1h+56Wcyqe yJqeL2zhEtr8
ddOLTDJM9licOJvdNG3Tv0W4FG1iN7JMaE06BdEBQpcKBe1hhNCtogM9hFBU GnRnTVvMVUqr
wl3UVy1B6M06hm4t664p57XFVkmMMHg8XGSGifWUpJ6UU+FDScs0NgnXo9lm 2tNyzFTD6Mez
Ci4QLhwLoeIiBgjtumEIz4u8QIg31d8AvG0WioKRZcDjYVzCkILLhIFmdiqu 4CrhNC/khcX5
NB076VRsP4hgRvKOqLiG6wfEpglTzYkFNVLxTUtLuK7+UZ1PVMVIA1rGLoid MEYxrmCMcOYp
h1VMQGNCfIxwLpqpIRyqwriC5wkjh5WK0ppmFBxNuMJzKq4htGRq/n5trIDD O/BYgyiYviMl
pINBxi5X/E5MYkbFi3iJoDDwgu6vE85GD2Pnfde0iyxtCi/LsnuFcPvJemhK It7oSlbKTdxS
8CpXymFHFVNbsHR/zXFLSxkVr+E2QWVaK467uSpsg7kNRp8sCT6SqW/HO3EH KQXJRr8HRirS
mCX0s98E52ZL1HdWTLvgbBOGm2FUjRjpDbypIEO4fIKpirvI8uWt4y1wARGu NAORJvF2zBGG
OLC1DE5smWJ7gufp6ryaxzAWcF/BPULfEXdmQWiZVFpFHouEsFMWdvUIwYqe gN2wfahonpbR
Y+wXdFdeimW8pWCFxRxNNm9nuAumdwxRltdExQPZ1rrL7NXP+7qxuejqBkeL +Bv+D02I0MFF
uOjMs1jC6P8oU0KnONAo22SzEBBaBN/Fq0eNGhSxZVcgJKeXgz6soMDJP1EJ C6n14W0WogTj
pTKnMR/QnTVlRz9V70cTMiUcuLRtWI7HKckJf90pqNiU8ewyXKH7IhG0In4C 1IzNT1XS0j1P
eBjipyXE3zOgnh75wvBT2cpfB8K82smjG2jhfyAcG/0ZauwRTj3kWQtOy7Vg R57+GL08Unks
V8/gbLB+Dn01L3+yV+n3XuwnqHs4v4vBHzBbnQzX157bRex3TOZ+xdSDsbF9 cCN+hBtze4jv
I0HYx+uE8d7cHuZXfkT73Pgulh4ywDW+j3e50EIBqRgTAD5BFz7lnc8wjS+Q wJfcHb5CCp+z
5dfI4hu+Ot8GpKeZPhOrkZajt/FO4HUU7+I9ljiN83gfH7D/LIv4EDqPVtmy Hy3/sLuQAlJg
KNxP+Xf5L7YhiLr0mSBcHI6DuLUFcfougO+rxfAxPNXgCWsnu/i+qYsQioH9 Oswgrf3YgBUk
iILT/PcvUEsHCJroJTlLBAAAHgkAAFBLAwQUAAgACADtSmY9AAAAAAAAAAAA AAAALgAAAENE
T0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIuY2xhc3Od Wgl8VNW5/3+T
Se5kcglZCBgQHCBCEgIjQUETRDAJGg1JJCEI1NLJzA0ZnMwdZyYg3a3WpWhr X1e7PbULdnGX
LKJ92gVb6WLtan1d7GLtotbaWm2t9H/uvbNkMgnR8CP33HPO951vX87No6/d /1UAja5FGlyC
auPywFAsYviHAtHAHiPubz13iz3S4BacbMb3+I1gJBxLGP7hsD8WiCf9fWFj fzcHAk97Z0/v
ps6WNsGCjikxNQvK40bCHI4HjURnYMjoCCcIvKgjG3lif9K/PxzaYyQTfrVO oOI0kKCqY29g
X8A/nAxH/Jvi8cCB1J6e8J5oIDkcNwTn5tuzfsIpxtCAPxgy/UYKtb+ltWur M27eQIQVQTMa
NYLJ3pbu1v5NwWTYjAoWT0CydyBAwIC15re3EHCuA9g1MBAJR40M8KxgxExk vWsJI5GwRsvy
0hY1kqfvVXT12PuIuyQZD0QTAQfBaXnBsrYo4N7Mq0IQN2Kmow5B7SRdWVKI mYlw0oyHjURG
cXpr2+ZN2zp6d5/f1dNL6dgijgSie/w9yXg4uod7ZrWY0UQyEE32BSLDhgcL BKURMxiIDJqJ
ZFPjaWvW0gBSeLa2dXft7ty0pc2DRdznEOKcT4taT7ai4eQGQUFtXZ/A3WKG jGIIluooRJFg
dgel2zk81G/EewP9EUMRpQ7rC8TD6t2ZLFpvofGiALU6lsGncNTrKEeFGjXo qMQcNVqlowpz
NZwmqMxjP174Uav2rdFRDC8JSg6GaZDlwbgRSBrKD8h+Mm5GqM/aKU26xRyy xGs01/VpODPH
s3KN34t1aFJUU7rLZ4K0va5P0Xi2Dg0eL0fn6NgInzI+i0zb9hJq5VwdLVkr vaYZ6Q/QKIro
20aUfrl0BudRUQkjudkMDicUrefr2Ix2S2U7NVzIaDBlMKhZ7cEWSn1TkH6d 8LUGkoH+QMLw
7QsHfAFfKBynC/nofD7HnUj2qlWrvLgAXUog3TT/yeabCTWT7dOWzFYds1Dq AW24RGFvsbF7
0YeLNWwXnHICD9exAzst5032GpdTTFW1+c5SCN+k4xK8WeDl3raoMscQzaZ2 p9L8W6aVTaMH
/YKz8ssmIxBfIBIx9/NAn2kHG99+M36pJabd6FLsGjpmK3b30F+cgJRiWUN4 WhrWeHCp4KQW
FbR8AZuSpJkmxotB+whKpAylXsTAVHEZM0lOquiOBJIDZnxoW7uOBCgwnTa0 nXT2G9HgoGBh
bV1HDkh7erm5BPtwuYb9k/FmNuk4gLeSQeLtGaTxhtqHyAF905cHdfaOZg/e Trj2Left7u3q
6tjd2tbR1ttWgnfi3RreNTnrTQDWcQXew6DDU62JViMRjIdjDJyCjflsIk/u SGefHAzNynyu
0vFeXM0TEnlO8Ne+HnTK4q6dVtune3EN3qc86yAz8nSepWx7HW7Q8X58QDAn EAr1GBHbHlXI
MqIqs6ycHKyMfYwqCf+kzRZxH5yWuDO8uBHvU8d+WMdH8FFBGY/dYg4njMyR dVMeOWFjs0om
sx0fShlzMW7CJzV8goiz9HaAEEM6PoVPM6KZw8l09RE2/d3UaZKaNQJDtKL/ JfktGbekmyQH
DV/CiO8z4pY73oLParg1lVkmwuv4nBVRYmoqElWx+Qs6DuE2qt6MGVHHb3tS 1UJHHuM6kblN
WVOo076k48vqtFJ1GoOis1aC23GnhjsENTNBpeMu3E02zJiVYlR8nhkNNV02 BH39XhzWcB+z
8uuB0zGCUYZzOmJ33EyaQZWCG3IOt4ETqkiM0I+tZ2p3c+G7jts/JTiCBzU8 wNJopsA6vor/
s2N8b3jIsMzEXXtBXZ8S38M6voav094syWbXbo1TCGea6q0E38QjGo4yab4+ SB3fwrft+LjV
NJOpMld5aX4i8lfFJTiG72r4Dl1txkA6vofvUzfc0B03Boykivju2nYlnmP4 gY7H8UNbdap4
Ut4qODUfVebQEPmySrI2q+QvwY/xUw0/YVF+ws06fqaqEi2caBuKJQ8om/+5 jidV9VPBQLIp
GhoIRyIpmhXmX+j4JX7F6oZFTjxgRdy5JCtTF7Y786TjKfxWw2+IavKqjt/h 92Q4alUKc1IY
LD/t6t/LcNGs4Q/MgbksGEEzbvjb7D1KVH/U8Sf8mTxQVKp1ysXmeL0Xz+J5 Dc9NDGTWmo6/
KgSepGm/q3D6Nx0vqthTQCmoAvcf6v2lnJrGIbRup2L1ZR2vWLIcDCQ6yZWS 5b91vKpkOXc4
FkrXmHbBM0SVevAalbrDHPYxefqi5v5UBWOEJkZK32KPEN2ytnjcjPv2D4Yj RrrYYY2Ts1cl
AVX+OOFRVQOEJjNuw+zfy0JukhFNEKoqXeNpT1jxOvyAJXNPMhC8dEsg5vQY TmfnJBP6qXh1
KVEiKbRWGArE65VSKdNkNhmcWdelS7lC4U4kzRiVJZW6zFETbIeHzH3GpkiE KpO5usxzTjIC
capDqnWZLwtsr1Iteg9tmLVMnlootdpcIgvlFE3YiJ001R5dfEKZzyJSW8Hn BuIJVSpMRptZ
J+KlcqomNYL5U+/SZZksZydF1KoL4VS6Q80N4xMK8vaJu3lYnazQpD4nek8H Q3uXBhVypjnF
6exV3VAwtIdE1c+cJK+cJo2arM6J2XZCsUIFDTwZoP3SClKjbZzXZY2crgoV qzlLLwnW5k1s
Oaja7fNDaTjKZq2cqck6Zp7XD63LWcrEPIrJfSTHK81ytibrWfVMRtapftss bJBz6KWxuKFa
yiwe1tW+ERZYeMomde65OQHThk8GY34WL+pkta9VlzbZbHcbTmmmovjQGzr6 ROVVhoJ2kpA+
juo/Xy7QhPFy2bQVTZbMLpQOOoutdqfQIb6B8J5hZhSrdDhjhnXVBDAaQKd0 a9IlWP26gXW5
SLZSlIkJolyRT5TB1Lq/PSMGZnue3qvLNpVsyokmHe4OqGSmVrfrcrHsYNRS pVK61q2dIa8M
ym51y8RCLJ5GzVAZzBjd6W9E8TaKFMczZlilhIlKW/MGVKYyRlC1ZDs9wghe tT0QthIhu2lf
V2dHe2eb6i1kj4Q1GZyQ8XsHaT8hXfbKpYqU4bi60bEncwsHe7a5EPZPSOEz dYmporYwETGM
mFfiktREBfsMWDurtXh8OMYk3nZ50IjZZjKswsTsmN3bMEWyCA0aio39ulwu B+z0sTVLQeed
sFFOiSoRC/vt1G+fzRI8g4jW/TZ5hyZvn8K6pwXW5Z3CZt+jrg+SAZUrz5zC 6pzCkvpqsUYZ
HDUWZHOxXCFXavIeWtsbgdflKnmvoMhWLmP9G6PCI9fQWrL7UbsxobV45DrW aT3D1nXOwHAk
ciBTjCk9HdTlermB8XXqALRZecLM9Ta9iatr1LCqZlWMVEbu65jexsjch5hM Vb1u1YQsCDMO
79sfTg762PiEzCFfqnazuP4IpTpgmv2BuEc+JnAN9HvkJprjYDIZa/L77SWv fFI+rcmncuqH
HLkPmSGDfcWWzXa8/oyw+S+1xdXWTZtnABFcPKMefSYydIpWB3OzJrfk3Etl bWqJBBIJTT4r
mJeL+dzhcCRkkPvP062tfV65VYLq1226fFG+RAEFYgy9IVUqtk9uLRwEDEq3 4nklqdt1uUPu
ZFZweLeQCnprT8TCZK537pySbwsrlX63alKSyWK5Vw5rcp9gyRQA6rdzki4j MsoIbmS+TtVM
dU4WGIPJvTKuy/1yhOmEUaHNJlOwNE9ccOBV8d97IGY0K9E8qMtXhfGzzBHN piQR9A+r0LJ/
SvHYnOYxkun2hwfCqjKaak/6YJL1sHxdk6/Rw/LZtpUI6aS2TX9Dvsko4dRt rQeigaFwMGPb
S0+o4bqdmjySSkgW6q2WT3rlKGo98iiDrT8wnDTZUqlm6Tu6fFe+l/aizP3E OTOOMvk7NZ4n
j+nyA3mcDavqwdujSfv6od0rP5KfaPLjPJdbNjP27YEa2jL5qfyMLmJTaFE2 rRqn1IjTfJbg
afm5Lk/K/xOp4bhO7nX1JKwlcrP8Updfya8Z3x3DHA4mGUwjmw3n4+eGGcnM QTsJnp72G3XZ
2b9XUfg7XX4vT6uOusdITsf0ZDx57g/61MXKPzzyR2paZa5w0qpmGJ+VEfxZ l7/Is0rE1hIr
pumTsL0tlQXDVO2ASeqfJ4ZWM2qou4QXqHX7LqHJKy+qGubvU4R22/wtPOlM QzHELt2jMtIJ
rJ0bgxGq75Rd02uPCS5MWar0lP6AmuUcap2ZtSCuvlyImdtmTkdqs+YSVmfT 06nJy/adQLv1
kVb5l/r0MvVFv7raqbUqWXVYyyB1aSQ8Lg8d23nx2UtGyOPyMm1MuLeZsEPd 1njsb0g1p1FS
031f2Kk+MIirVMfH1MezFNhqNVmui8fpRK3JxsxwjaB52s8WJ/orgxSi09Xl 7LSI8v8FgrfH
Cjqbw+pGqDS9f5XazSzZziorbhmCkdBcC6a4xJ26tmPadqpTzbn3xmIqqIA1 ewm86pM4Ry71
2dd6FkOpr8Qa6/w/C6XWeLbzLHOe5aiwnpWYYz2rMJfP+ZiHkwhfbc3N57+T s94XcrcHp8DH
mcWcqeNT/RTKvVhyt7Wlhr+9fAJ+uLEKp1qzULd7aTCDxCvApfWjWF4vh1Gn fq1Qv1bWH4F/
xyhWH0Zj/QSki8gh0EKk68jjmeTiLFLTxvnNWILzrIN0Gy1Ot2TChhlrnSP7 KCdFxlziX7dj
RcEozjqM9fUj2EAaNmVOqSB+oINS66SEuiiVbgvzXBvawaxGrTxbXVpuTrO1 znoHiuvvw/oR
nLc9VyK9FN62LEKL04RuTCP5FQlVa9eR0At21Fd0jKLzMC4iyosqekawTQ3c I9jF5d1cDowi
eBghzoYqBuzlkLM8yOW9o4gcxhBnh8ZgjmOY8edt43iHCyO4Us0WqL0k9wiu 2UFJXDeC6+3X
G9Xr/4zgQxkmGkk2sIuSfwutJEA7CGIlBinjMDbgUkothn5chr1I4gCuwLX4 VBaz1znMupR3
28zKnZS26j9fuAcfr/jMCG5ecBMq6usr5lcsHMXnaReHMDv1+kVlJveh7ige VI9xfEUwjnvY
1WJsHPcXoN6efkigbOk+rBjHNxixQuN41IX0+1FUp8fjeEz9+pHgJmhk94nc FebozkM4Y+U4
mHcfwtNbGh7GsZtQ0/AQjjW5laCq3eN4RijNv4zgBU40VlP6f99OiH8KPnH8 W8T6L8Xcf8jc
IZSo4XEOlVALLKFutdzvc7SMQxTUbViAL2E57qDn3EkTuwcX4V6KmtrCKK7B Ee54gCsPkseH
yMvDeIxzT+Cb+AUewTP4Nv6KY5bQ6y1DfiFtsC+IiItiv42RvUDcVMNhLJBC KYJblGPVwLOg
5N/YVXCctu3WwLSi4Slg9XHq2mW9Q/29mCdtqYfhshTbraR2FOWW8KSY6Uts BdTZk3XjotuT
Sn8rj1KlfIzILNvfla9IhRLdiFQpcWVks5ZuCPyA5z7OsPVDOuOPGY5+Qv5+ Sv6ewGr8nIHg
SZxN7lvxS1yIX9Nln8oyum6bf4vDQhRUzakg0a+mWTjosNCsyHwEi7I8wnYy x5sOYYFacqYu
craE1DND7RIrAP+B1D7DYPtHiu1PnPsLKX2WrvMcmqibDGXNWZRRG0soZPVX OQ5hcb6piLGq
fkROGpeTaYyyRNChxHrRuNS6LAGH0qMha5Rx1bmWW71EOv7J0P0yQ+IrdNV/ ZYWyVY5lzMYp
slJW8VyX+hbsnH8v39TqujHxd64clzMEK8ekif83rlwxJi1N7jE5r6mwupD2 L1tcqC5sGJce
9RyXPsFdaUKWMchBCmhkbnilEKU0uAoyXS1eLJISLBcdfpltEbbBPjJtsutk p5V71GgXRy4K
ao28SS6hwKsJ/WbZzZlFxPUWCVjx/VCKAdnsRJaD9UekdMeKUemnrdH7KiVE 9yvYcAjzx2Rg
+xyJjEn0qoLQIXib3PRduUwZZ8OI7BuXtwrDy7s/D+/C8qW1txx/fPJKlWPJ FuKriVjusobX
cujsfp9C6whFmE6X0xPijsVcoFKwLIAui1Alp2Ce+DBflqJGarjrVDTIcqzm XKssxoVSz6Jo
BQxpQFRWIiZ+HJA1uEIacaWszRLgwbQAD6YFeNAR4Dwk5f3yAZ7fwKR9o3yQ YroSHkuAdhyY
hcJXSUSXJvGi6hqCPJkySlc30dLEZaHFI3PDzZXy4Ur5aKV8fEw+0VHmfVBu 3qJE29iwcMUR
uXVHpXxuVL6wcEQOjciXCwrG5Cs9DQsbKykkuWdcxgRj8sD2qwpkYZn3luPf o109tP2IHN0x
Kt/qLFjrPoQrVEixEX2biKrcNqZxOeZCU2HB2qJD6GlYWeYdke83jskPm7Rq /huXJwQ8Y1x+
4YIN/JQFXL68bJAIqopSWH5boOxVRXoF9QcXtl9VJFVF5ZXX3nL8y1e5pcrt vuX4uyxmn7EV
yvj2J8F2a+o5K6JXNrmtt7/yTZnP3+6msF5iFNTlRUfL/ZQ8pAnFsh5z5Wyc LOdgsWxEs2zC
Fo77pBW7aLBBOR9hacfVciGulw7cJFvwqHTiCb7/jmvPylZi7mWNsY3Y+6RU tss8uZjBYael
/QFWGVSOo/25osk/5CVSczIj/z/lZapyEc6UVyztB3G//Ev+zdEArpFXOefG 1bSv/9A9C5mq
d8lrnCtiXtzIttANTUrpujfKccdK2uB5DYs1Vp0ul6w6Tg4LmSLsd429N/Af LNFwjEd0vQLv
cQrCnb2BQ3lxNopdBS63E3LarLAEzLkHSx7BrCOQHaOuQpaAfL8rHWRLVd0r /SiSIMrESJWX
FlEsKsvYKhSlo+gNThRtsDPU8okadGmWBss7rJdivqxw9KfRTxem9WcVnhKh DKIoF5MrMQaf
yxi64lghw1kxtcGR/SLMsmQlFlnMmpeQ21llHleJS3dIW+aQVlS/YNQ1KxO4 iyx3vTXFF2Fm
06FtmFOd+rKwftRVlgvyWBZIRT4QO7FmgzydBVLpmjMJhJn5rhyQ1VkgVa65 eUAac0Ea0y2A
yzXP+n2SS3UTTRTMBbB/djvPQed5jfO80X7IFa75rpM3VjMt3e5aWFT8X1BL BwjTC8hqqxQA
AMIuAABQSwMEFAAIAAgAL4lBPQAAAAAAAAAAAAAAABsAAABDRE9FeGFtcGxl L2J1aWxkLnBy
b3BlcnRpZXMrzi8tSk7V01OwVSguStbn5covLSkoLQELJGXmAQWApF5mXnJO aUpqMVDQ1zXE
UdfTz01fJ4aXSwEV6GERK8gpTQeaUJGbw8sFAFBLBwgjePZ6SgAAAG0AAABQ SwMEFAAIAAgA
tIlBPQAAAAAAAAAAAAAAABUAAABDRE9FeGFtcGxlL3BsdWdpbi54bWyVksFO xCAQhu8mvgOZ
u9SNHjyUbaK7ezNe1DvSWUJCoYF2rW8vLWW31cZdOQ3wzT/MP+RFV2lyQOeV NQxW9BYIGmFL
ZSSDt9fdzQMU6+urvEChVe3xxN7R+3hV61YqEyJCSI5dg6YHhm1ctVWmYWCd pKMKbRU9KPz0
sE5cLniD0rqvSWJYqmQgSosdr2qNQxJNJMxRwytk8LR5IdtIT8SzlHM66qXm Aom5uKLQ3HsG
Ca244RId3Tw+xwjO9zLmvIf4XDtkWdWhb6zjHzrQjWtnXfclxsFkx8n8e1JY qlBhOqt48qcZ
EQlebIfgx6NL3PNWh1J7rj1e4FPYjzYs6v02a8QmZsQXLdkRPnF2/MXfUEsH CEfr5EIPAQAA
EwMAAFBLAwQUAAgACABLS2Y9AAAAAAAAAAAAAAAALgAAAENET0V4YW1wbGUv c2VydmVyL2Nv
bmZpZ3VyYXRpb24vY2RvLXNlcnZlci54bWyVlF1vmzAUhq+p1P/AfI9JSTZN CFalyz7VdVuz
Xk/GPgtUBru2aZP9+h0MSbaSpSpICNvve/z42D7Z+bqW4T0YW6kmJ2d0QkJo uBJVs8rJzY/3
0Wty/ub0JONCLcGgEBunJ0HGOAftlAndRkNOHNcklJV10MyFMDmZUP+SUCvj cpJMpq9IPHgN
aGUrNG/ChtXohjWrtYS3i6/XOERQFgSZNkqDcVuNwrlNJeDm5tOChPdMttjp Q461ttXdtLiG
eSsqZ3d6Z1p40nNhWMNLOODyPovgMCxbFD1skNVMa/QunWEOVpthvFSm+q0a x+SgG0171zJZ
/apAXGHzIGiQxY+Ce5Jw/GSimAumHZgheJnsYgjm2FK1hkPIJbMWE2pWtEzo rSj4mn7G72In
IT1re32Zk248LZP0ZxehYBZiPAqiOBsScgjjRRSNWQSYYhNBXYAQIJ7gYprh DlDv8YT03WAc
QW6xrvwssYNa94TJIOAGMGuLQZaTvo0AYRQNexocJS/tncSNPk4MXFbaAm3A zW6pKGjvoh+X
3y8XF/+l3ubXi9Ma6tSzT7c7YAHvkmXPoK03GOsILFc19Zo+r90noUo7vP9M 0i/dyPggGDmA
eufjszD7h9Yo5Z7Bi6XArQwch+4yvBdSYem3D8uqqxlHWPeGNI6l4kyW2JO+ nE2Tjvvg+dn3
94vZtzWCPCgj+r7t+rrb6QtC95/F+8rm157Ff5fNP1BLBwhzyGpMIQIAAGwF AABQSwMEFAAI
AAgAYotiPQAAAAAAAAAAAAAAACsAAABDRE9FeGFtcGxlL3NyYy9leGFtcGxl L2VkaXRvci9E
QkVkaXRvci5qYXZhlVbbTiM5EH1uJP7By8Oog5jmZZ8WIS0kYTfagUQbmHlc me5KYsbdbtnu
BDTi37fKl04nEBK4JL6cKh9XHZdd8/wnnwODZ17WEjIohFX64vjo+EiUtdKW KT3PIJeiNpDl
SkOmm8qKErLRRKu5BmNuVRWM3jGBcoZtshuOH58gtx/AcO2sEVmt1VIUoLOH aqV5XYtqPgWJ
pkJVkzD3vpenGc8h4w6ZjW6har4JY6E6HH/LKwzHIfDPoadQc813RsljC8Gl mptsVNWNHbjO
R/ClgBVohN9rgDZCh1iQwXfXfh9dgf39KWuskJnVvDJhE/fr9vt2ZmWz6Y/7 3ZOwhMqarCU7
pP7h8I+zSRYrUcwBTfoK542wsB86EKaW/GU/kDJ+GGpkodyPpCzsRuJBGA3d aXRy2Aea7twr
YiZc2xEe0uFzDvXu9NHZQ2TmPZJRtxDEElF60WeD67X86ff89PT4iJ2y+4Uw zNcRhi3OjCC7
aM+sYlLxgvGqYIWPPRMV4izGg9kFsFxVmGbkNsPR/mD8LxjVaNQv+T8/Pqqb RylylktuDBtc
e7roH40Kw9bs2a/jo2StdbcAkk2IbRKcRPO0x369uok/x0vQGovMGrRUArmq KV9Cul32WOm/
D7S/MvtXEugw7eSVkZDPWFcOiMHPHoZLq5VhbxLstp6IGUtFgBvLqxwwpHHH I+/BARMDllZK
aaXeRRxykB/CLu6UFbMX72s9Tave8RL8eIaidr2eR7wykAaCfzeAHzs3/qiU BF6hYgZC25c0
ENNgG12xGUdXF4fZ+yhfSalWUHzaj0tAroFboO31UYpaybStJwxPCGozuHWS vWQVrNhaZ2mA
uCjQ//k5Hgrw+l4JKVvZb4mduh25Mymqn1DQgaEZf6TiqhnGv+9N452YEo3B NRHZngkpiYbf
+CPILbPNsS0DJ4Q0TTe1gwnvdNGGJBDZRxchALzAE+83+2y/llgkacIHuu9H qXKmvf3ZQT43
Km9MzC2FdzwYs6vGqq9zuh/QZ8FKsAuFaNs8ti5djUqwSPXdwq4GzSgjbSae LSNybIYn24ak
Zc7mnGhoZfEqQu8dnWzQ95So7f14cbh+Og+HzMVpugAp094Zwwszm4wn/z1M OjFHAOURobhb
55m8eUC8YdwCrrFexHUdNjh+mP7trSKYHN4j3fSkv+AVPv24tVo8NhiNJZcN nGzBMXFv7l8n
mbejsZhsZA5/usnzl5+3xeO5+RJg0LqgrCLQ5cAENBYUQF42IDbfPS5T694l SzfnezGu7Uga
Kpmvk5vmv2FIGynDfJJ8+bLpnxzdCG3s0FPCvQeT9Q6S8OIl/sQndHt7HEVS SfzGSMSCwVmt
6qamkpD77FF8tjIY7TrPSFbIeVBJZzRtt5eERxCx6TdaOyLUuUKSS4haXeNP blWBN8Ib8XQh
d7ja1vwfXUA6xblq3sPwZPAX2NQ1+nSr+8WHCGhyLNxc3uBBazSkJ+jwpNdl 4mLexowyiXvN
VA2YX3Z52d1vNv6nkx2KqwkKo8A4gq4i5KoshW1xjtb0M/zOKN6E+E4+YyX0 gY6vJpoehVsZ
3fk1/ZE0HREkXbpNXVDVcreBlwu9nGKZapFO6R5LnM/YZoxeQyN8h68DT+4A ZryRHx5g7/A1
VnL8+x9QSwcIc6npI9MEAABmDgAAUEsDBBQACAAIAEuJQT0AAAAAAAAAAAAA AAAwAAAAQ0RP
RXhhbXBsZS9zcmMvZXhhbXBsZS9lZGl0b3IvREJFZGl0b3JJbnB1dC5qYXZh jVTBjpswED0H
Kf8w3ROJKu+lt1WkqputlEsTJWmPlQwMwYmxqW2SRlX/vTYQYgiLKnEAPPPm zXszLmh8ogcE
/E3zgiPBhBmpXqbBNGB5IZUBqQ4EY84KjSSWCokqhWE5kg012ct/hHFqUqny dXTE2AwnYJ6S
OJEEFWpZqhjJ63K9bd7HU0rmYlcG842SZ5agGo4/ptTCtvir3Ha9RB0rVtQN D+QINJ+OpDSM
k5r9d/s6HGpprN4q7VaiKN9p0wVtUGmmDY04vnHMUZhK7GnwPJ9PA5jDPmMa ahuAOSyw36XG
BKIrmAxhGdWFwEg4CXmBS8bizEW5U87EycZ6+hEH+zwNijLiLIaYU61h+cVj a903KBINXa+A
uZFwFDX4zcGfaTApFDtTg34hUHfHvIidUUwc2sNmbCb105Dq0AmHMD8O4cwq KhNjJWuthYXP
o3fokryAG5e/NeGaS1PngGbrhYVNLYWmVGIcIZKSIxVWVuu07mUaVWKT4Qng t+xVfqfqQ8Xe
ODuI3q8eUm9niE34wfDST2r3xa6aOw9nsxG9vtG8ZcxSCDuqf1iAKDlvjm88 BF6gkrdjK7Ez
anZ4cLMXVhWbkn0h7rxcBzvUmklRf2yxkNrN1HUlUln/qwk+qve4lK4d729P PdfIiA576/+e
FXu7Vr3Ep/z6lXF8uid/Xp9RKevBHYjZ8hnV2atM+oXv1xBpIwY8gp+jkZXG oxTaCf5VUq7D
5j6Q0dFz137BYgFuv2buX8fX25TffLslMGEFFTHKtLvzHkL3ajIZNXZjw260 hXrxy3ndNpTv
94ZDIJ2dGpqo1Cbd9so+/wBQSwcIflMx8WwCAAAYBwAAUEsDBBQACAAIAEuJ QT0AAAAAAAAA
AAAAAAAyAAAAQ0RPRXhhbXBsZS9zcmMvZXhhbXBsZS9lZGl0b3IvREJMYWJl bFByb3ZpZGVy
LmphdmGtU01LxDAQPbfQ/zDsKd2V+AO8iB8HQVxR8Z5NZ+usaRKStLqI/92k H8qKFgQvZcjM
e533ZsYK+SxqBHwVjVXIsaJg3EmRFzk11rgAxtUcpSLrY7bZclkZfn6xXm92 KMPJr2UojUN+
OVe22wqJvCN8Qef51bXYoLp1pqMK3d8R1+QD6t+Q/iXw2gn7RDICmyi511jk x8tlkcMSei6w
IxkEM8WgUsYDaQhPCMEhQkXeKrEnXfdv0Y479KZ1sbkvMg+71oepdgDvLYLZ 9rHpnQGhK6Dg
oYuKyOgef1zktt0okiCV8B4uzg6UAqVRNagj7NADeEuSstN1ZHPxIcYjUWeo AlFVk0vsZ/NA
jUEJb++zXEmW8cjmCjfGKBQayE8/s+jCng1LATiIOIL74JKVdsyXSUaWOQyt 07AVyqdhZfP9
OGxMh/8hr98OqDH0wbdmD3vTrVKzrY3KItkDvoZZLsbGYymnNMfzNH5W8oi/ EU00O9VnqwWw
brFi7PMMvyDxOu+wo7RKA+5x2CtWrhbl4rPX+PkAUEsHCFt8lBWTAQAA+gMA AFBLAwQUAAgA
CAA2XGI9AAAAAAAAAAAAAAAAOAAAAENET0V4YW1wbGUvc3JjL2V4YW1wbGUv ZWRpdG9yL0RC
VHJlZUNvbnRlbnRQcm92aWRlci5qYXZhnVO9btswEJ4lwO9w2SijoB8gKNDG 8ZDJQRB0KTrQ
1MliSvEEknJqBHn3UjQlQ7HdGIU4UKeP9/3w1Ar5W2wR8I9oWo0cS+XJ3s7y Wa6alqwHsluO
UqvWha9NxWVJfHm/Xm9eUPrbizCUZJGv/gV7qYREvlP4itbxh2eLuCTj0fhH SztVor3mXH/s
R9xfgx6R/bOYz2c5zOG5Vg78KT1oEiWUeyMaJYXWe6Box0FlqQFfI4QkntBR ZyVCRTbW7u9W
McXYkvcMi1nedhutJEgtnAuIM2ZB9TfQhIqDc2HA2yzPjm7hYAm+gum0Do6y FDZYIp+2x4+H
9W29Q2tDt7BPinakgkflWnLICnh775O5CFSm7fyyFmaLJZsI+QKJk3T50KPG gsHXWCiig8yH
tPkonh0dFbvhcrJs4oElZ8XQqYe8X3R0AP/8BVv0q5QoS82i/lRMeiz6zpoe vKyVLi0aNkEl
ss+5xuOJqxXh5QOZqoBN6kGR88JIpArG3yqBs8XiMILD2LEwVIHoMH5SyBqL iEsW2BjUlJoP
o+RYwT19t1bsWfSVjA0NhmH5xG6v4TEyDFbxxCSe2ltNzZ2IxolcoQza/1O5 IdIoDNTCfbyT
q4Se3EMivrmkNUWr3Kpp/floK6EdJtVh/QVQSwcI99Fp1ugBAAB4BQAAUEsD BBQACAAIAAhL
Zj0AAAAAAAAAAAAAAAA6AAAAQ0RPRXhhbXBsZS9zcmMvZXhhbXBsZS9tYW5h Z2VyL0NET1Jl
cG9zaXRvcmllc01hbmFnZXIuamF2YbVaW2/bRhZ+lgH/h1m/LJUKNDbok70u ktgpoiK2gzgt
UCwWxYgcWeNQJDGk5LpF/vueM/cZXkQF2BeZl3O/fHNm6JpmX+kjI+xPuq0L lm5pCbfi8vTk
9IRv60q05InuabpreZF+oM3mltaXPa/UY/uiEo8pywpeNyxl23Wa5VWaVdtt VaaC7XnD4eL6
5v6zvr6m2YZdfi/3r2DAOHPJ2h+fkOUOL46gf2CNtK8q1/xxJ2gLN+OsDRN7 JhQvXr0T1XMj
A3oE02ELNcfyM6urhreVeDmW/pOo9jyfaNnyAVgOZEiTSsovG8Fo/rHK6DQ/ 8hU6f/NusuPA
sKV1zcvHdHmrLh5ayA97nBaILdumt+9vpbGTlYZlND1VjanYvnL6mWYT0lfz Tgcsy5aJkhZe
J9za7j0gy6RVi5hcRWOsDy9lthFVyf8askDF70APKiKaZawGqenyrb4ao86q smSZJL82l2P0
UD1jtWaJljfv3ua0bscdUoRaMWRhvLMsz+Z1+uH1BPFP+236y2+3h8xtszr9 cv3pEJlEa4hX
S3mJkGOujuRbqlLLLf9BXrZnZZsuP/KmZVPoC75m2UsGaxLw6MsjmCzPe9Q7 IcxD/DowASek
7ilfZX+mv8DvDW3pQ7UTGZNkpyfnr16dnpBX5MuGN0QvqCSjJVkxsmtYTtqK ZICPLSNY5g0A
BD6i5QsRbFvBY2hpuDSNRZI9pwTySzJbY/NUqliWYA+UGvLXquxItV4XkBEt e0HaDXNWKLWV
II+sJZQUiNCgOSeN694c9NQvIEeqQHbPFqQVrN2JsiG8JbyEdNIciEFazgVY pxWjSYpXuuRE
pDo4zioIE10VzHfCD0wDpSPATCuCM3BrtYNclMUL4WvUA5YJcKzEa6mgoVtG NlXTKn13YMQF
yavyny1ZQw7BfUxDUTUsiNDzhpVkzUvebCAQ3IuvoqVFQaoaKjj3stFIHeen J/VuVfAMSCkE
QAKzM1mDM/n79GSm6WDJgoVLWnmJTwUYmbVYIYKWDYfCJbC4/VuRLUgXc38K gjJJhsHTn4jB
WM3H91gajsu2qpc7r3t7OOKhhzTRCGR5OvChSd39FSl3RaE7aiZbagZpvNZ9 Q0r2HLYJ+G+S
qEjf1FTQrWf8HVSEfHXuMtCfo8RLzFwmbNZCM6d4D5bpfOHjhrW/1skcffsm n2i5QTt184bt
5+6MuhIM1Op6WLwmvArcTkFYgrw/nP0hG/psrq07P8fuKCuf95m3G1nxjxyQ UepEUqBLfA0q
/toaEKSRI0QD+S6wS5F5rkmftDloj2CPWENCAgmMPrqGxsSmNM9N4SXdWpTB 9+gxIvWu9Sgx
QJj8ZL7wtGi+AOhTY1ES06nszhT0eVJc5m2NfoK3CEbolF0x48LbVxxAV1UP PJVhjkdnmPUK
Rhum6ivwEPsDOkDvyMYQQjPbZh/itLgQa7OB1py9K2tiKmX25h76WACGq1uH R9LjqrxhJsZ5
4lZ2Py9G0ixoosR339GEecfFZs+SJPE2OnNPtKsEnf2ZF5nv4f6m/qo/31zb ee2ikC2ohFkX
7YJBLFXs9plOiZ2c01qVmCOIBCp6PQ5OpPa3x0eyuK3QRMaBpuuh1fGsvZ7q C6gekP9/di9k
7ffsn13l6872aA7C/KyLKD6gmzLT5TXvAZuHDcxBefVc6slMAoY/pQSC+1Go rTwQwoUgWLfJ
P8K1IHiZ5raddZGG7906biH0fvUEgPCf/0rL3gpBJYa6x7Yf3bvDQGBlxWvj nhY71iTztFXv
jZWhFuByMDDAos2H4ZEkyljLQy4iq41ZACUGV+eGYp7KSXJYqregXrggGZFh 63jhH1yxvGgA
GxUDy4lJ0/gq9G1gHhufMFThyaFf1btfmMgB9bpidkPS2YwsSKN2E7tG76Ww +3m5Y+S5El+x
q+TgLod/1KTkeCpgj5HzRo/sIHUtqu3A/kSa6WwnGyq3ISvWT68UIuUCjOCF IusYYHxEwpyc
3f5+9/b2vZ7XgoF1S3E+wnVGqa/WY3rfaPzo6JN7OCwrOYbINOUx93mwYeiZ OTvjnIYwZ6Mu
S9gxgXr9Fuq7ZNKBK9+bH4iZTx2uX7t10uxbfR9Q0CLen+K+09ZYX1h6pmf/ cMqXJezM6lMk
OOEvfC9lZ6hTUMRLwRwf3iXWZU3ZDaX0HO+BM+m+nweHv3oAuFchuUbhiVoK rKKFupfG6Gts
YfPY82beGUugfyx0xSUSF1IwPMrB2oVlQcy6CyuWAbruyumCY0zxixZjYJGF EK8eVbj9MMcF
NkeOv/GHkPAshuTuUs2t4XuJZsjm6FIcxz9/TM7wbOdi8/riD3y3Aug7P4Pi DVKseOOjZ7KN
7q+IPdbWKf0AePsXhqaIeJNW7CCg+GtMc8ePJF+ZKz2+v7aDtyPuHkECX8/D KxKY1KVIXFCM
eJ2x2B2VlsjthTN30WuBEjphKQk6FcA121gcNSdpPjDEYIArG4IH1DfXpwIG ZWQ20wB4TZV3
oNf2CqgDtSPHC+OIrVBLuUGHVwh/9QtBvh/KgyhNwvUADXvgL0BzPywLErwK nR88uhgBXzUl
jbP0QmM/aaKPhUY+tAzvVNVI/B2fcEwIe145bTP3acKcHFbYimaTBghqCboQ 6ifBHqe4WHe/
ARER3V+Z/W4yzDSPvqraWAdUid39RjoQQOWn3CT+tpve3d9/8uweDKS8U7Dp NqNj4XUyFa+0
wcbRBtqa7Kg+B8WbRLXcRx9GIXLeC4rsVcXY3cBF+xmhRLfiRaYF9h7Jv+bx pkcR0WcwGUpU
eW4WCquwCb+/heeRx1fuz5U9BsXQeA2Oc8SGZV8Bjmgbfx/As/w95QUe6Es0 iE4wIbfhptgK
v/SPIeNNpze7eN2jPzH0jSyz7hFzduRxy8x97or3uCMHJVl41DB8MhETTjmU iHkGMMWbyoJe
MGiCoQoPs+Igl7ku4J3AkGsANGM3JNmqM7aP9LO5O66tbfPph+Od3SHtae8e l4Nmdf/goTtW
vzVbY3gmm+p/UEsHCENvfc3PCAAANSMAAFBLAwQUAAgACADAkWI9AAAAAAAA AAAAAAAALQAA
AENET0V4YW1wbGUvc3JjL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIuamF2 YdVa62/byBH/
rAD+H/b04UDFLm33BTSOD6ez5J4AxzJsuUFxCIwVubKYUFx1ubTj9vy/d2bf pEhJaa8feg9Z
ImdmZ2fn8Zsh1zT5Qh8ZYV/pap2zeEUL+CnODt4cvMlWay4k+UyfaFzJLI+H QtCXq6yUZy03
b2mR8lXIyMVjzJI8W5csZqtFnKQ8TvhqxYv4YjS9UN9u2ZqXmeTi5WwfvhVP WR6PP1zew5Lb
OZhgJa9EwnCxW/N9O0vB5B8/I/k1ftm9hKO/Y2WZ8eLbqC94scgeK0HlTlYp aFHSBAlRwMz/
3M6nDgYYdm9FU4KRMzn+mrD1dtks4YLF44ucluVOqun8M0vkTrIb7Yk76fBz T1q1KcXQbYDP
CwouYmw73GLTGuFkxnn+ExUfXLi0cOgD3+FLmijhRQFG4iKeXNiv2+hlso5n Fze7xCoDgGxJ
s4IJOF/z7Rv5JnqbqeNv5y2fZcyeWCHL+AOvSjbG7/uRYlJh+wi+YzlTR7Cf cEe+e4HnLH1k
wAJBoFJSh3eFpPVUGFJVWTwZp5jXJsW62kJ0t6SCpZMVmLcjkoDqhgo5KXZG JlLmVC64WN1P
OkmylMWT0bjz/hoWi/+WsWdcNUzntkQwta949FN9g/jv8du3B2/IW4LsBPQg qpxkxSORS0ZS
KumcloxApSCZLInN0GWMXMcHb9bVPM8SkmBeIaOfTHTBynB2aUmsVuRfB296 a5E9UclIKSGB
JgH15PpuNry+GJNzUlR5fkaAOKDHQ/MrX9MVM8foKFyZex9Ujh88T41WeRcx 8QshOZq7JNJB
NF0scgiibYQ5L2v3AxJfP0hp/pp91omCGkGC8tFO7KpwxkprRgHX7HfPFPAt soLm1vx3UuAx
j8aXw/ur2cPP07sZcPVzntB8yUv57vcnf/hz/2xP9tvxzfThevgBz7Bv/M6o 2VeuhnooZ+uB
t10IhgLRxQx8UdePcTHtUM45ooHynV5ZrfEH6tM7PiYF96dLnpesQL2EBJWQ wN8CO4Bjt/uH
kRZ4n1xmyldelcY/Tp+YEBB9Xq0nnqUkUdqjW2N6FTyPXAYiEIuQxozO++tp ndroi18jLeqI
nAy0AXt6Xe1jpVFeX8PaNqfGPNuVL5m85ElVWrtuqBB7Ci+teXLaNUsiOeFr 2BQkDhUC6khp
AuLUvTCHNE84MKXbklZpMzTtMaofUX+oFxjZ7PSUUUJJmgngIsBm4xbrfhz3 jdjawqIqcDmi
btgVrcBoQfOSaQOjAeDjrF0xNNYMkl3Ux2UNEOgPtlCPCzrPWRpJUTF3sK1p Zq9N+50Smuf8
GWOSaznkmYsv/9n+rXKt22+o6U1gbrSboYWr1RRhIm1Y4EJ5mPcuq+62DZr9 Kal2dy07C1dF
1VR5H7EyEdkakmzkq3QMOOIjGHbOimQZDfBniAj0lSZ7DTQAOPvrw2w6vXoY ja/Gs/Fg0K6D
NY9zRpNShilGsUFJJDcwKW4PZpqmG4gqQqNuXrXWCjNH3aYaRWlOUKyO7Ahz 5q7WqYtqvYsV
EAR232udEVvQKv8tloMP/cNYEIxCUg4LMshaWfLFGdHlM42Yyk6b1iCwsmf9 ym5brpB+pJS4
QB0iD8CDrWULEm0q4A5B9aQV7pX8AHXCcuEegUal39KYjwSVz1AFV7BIzfgU t34egDwQsmP5
SZGyr5Fx4Z62MPwjxYtTBrVRRqXWrgpoYq11S1nSEIIbYv1dZ4Iago2czkde fVTuhsploFIP
sHOMCmjeyF7u9bZGNfrTE3MXP2ZFyp/DWzcQzNHgyIsL9A2u9qFZt0D8CeAw Nu9j/Vsr1Hea
vpKEymRJoo32gbDTQc2gs+loSoaV5L97RIejeMKaeQ4I7oulZKcxoLdC3kno vwFgJi77mcCw
f3YHpXHY56LpqWRP3vt1G6eNzQbOGNYwxCjsQwAypBpZZIsFQ4wUQCz6RLMc U0Cs5fwIKIqu
dG00JQiPlGDNQemJwTM7C+kRUXm4xlNmeIoNxOFxjoHNGug0KuwcEBujxYZi DjmqiLH9Am47
aAmQ4u4FUs0q5pXUJ5xjgfR7MIYrmYAzUSAgTIAq0CH87QJ4GVNNhzY937eg WobANDVR2EEc
bTYEeuFXwtB6beLAfN8mKtgIKG2FJVwg/stflFCW2j3Z+9/plqixJUgMBnuq zCG45AkA+oFC
NdmKgX0jP+CJr6cPFz8Pr6/HVw+zyYfx9H42MD1WmObUcatJIWseW6/e2Xkt wA7+jg3ScIoI
6t1yLm3GBhUhkdwItmAQ9dHpyYnhsbrA3qH5QPRNJIPOQnttemTdF9xjpWjR SFsXIufadOTX
X8l2jeAKtkQ4yIFfWTlereULpGKbuqByDot0keW5ZwqqtNO9ZFRAKgN3hHaJ A3LyEa5IsH5E
ZkxJGJ9/Ju++RbNaeVXsWQFtWZEwvgjrpE+5jVKpv5yTKCRGQY0yaLCG44Co RKhRmtut0MIV
XNQZb4D2kut2O6hqvkiHPPb2a9OoWzCSut+WTv7OKwKwFdzo2eYvOIlaZiHf 9Vviu03YWAg4
tOdlhqDL5CmcMrVLa2k8O9rLpBKqBNjMGnfk33oHoBVteH4zRYQepfhbwjIY tGhz75FyarI2
R0JeTjjQacgKbsUQImsrrn0GpEVuuptgK/7Ehnlu2L1TJVCd7LgF/9+GsRsn da9I9eHojg0S
os6MZmqAI6Sug+payJ+Ys1jdIrv7p96+PXnvW7rWhu93qrEpvEOLFn23qBFQ t0WNyfV6PtQV
G/UZkt5I43kJWT2iQ0FKwpHuXSaZh8K8ADpTQetcxoGAV2WpzX233m/stkET 2te6X224qMAN
Vf2CdRUEROCOj4DaCzUm1Q8wTS3EPNQxPoJWVC5DJFVDlTgm1R/PSya0y3vp JCtN9aoxBQQF
xCGAzCafaUINl2CyEoUBNQFgqx9kMGRuYCozqEU1j+zU1i9mT7v5vIi4Z0lw 6rWnULF2F3fN
DiLdsyeMctTJ3HBP06AWMJxpek7HoynN47GddB6P2ZPiqKVl16VeX/asR8oC NRTsQVoAgzue
9jpiarJ++MzZmKSNz1vHX8PwrWmov3VQ+uftCgwER7cL0RvPqUtE77Cu8V+H T1Xq2ClfoEMW
vMj+CS6qniDUyGxDpReojSf/T+Kp0fLsFVMI/kwoqPm4f+bhSfUx1Uo22L39 +U604cDPNJNw
OMqaEexyDp6seo4llRr5I3wLD2fQ1Tp+BFG4C0TW0+uryfXYN41AQiT0QqDd ibqgUVwITxTi
drsKnVRNi6RKB4hhWl4jidXtWK+q4ev33+sF35O/nJyceDzmhkqzJU4BYgP+ 9C9s2nLG1kEv
1FNSDs8JXDJ9hh2xTKAZEKJaA6QNpiwO8e87YmFd85XXLiT3m5lqFxTcNSHQ 3a0/Zpsv6qCx
TcpdpSD4AghffGfQ70iu1OWRYOwXBsCeKXdjs91Z9xLy6v8qUdagU1tDq4+l zW5IZx+tB/lJ
YQyhXsZyrWJ9ZGNftSHrL48QheZtKmMAexPkcw4Irn9E+os5fi6lXL87PjaX tTj9CtAvnwCb
26ej5tLpySfTDcI5RRj02fnJGcnen+Ln4aEH2uUv2adNNZSUCDSEldX3/mFm pmbmj/GzBt9Q
QgKdV+D2WjKwUylB//DFoZjZx7QYJeN6O2wGkOa1KYsfRi9QD7LEmQc0s+3u rTE2dibaBvqK
64etBYTKeUS8P4UPb4LGOACfHIe9otqXc4j+MYUkAj/7h8L123YBjibm7/8E aQ7++hV6drqB
04lz4l6JMsKVqVD9uGBfJeQySHqDTzbrAU8McSEj9UWfy8DarUrA2Wl+CWIg OiNl6wHYHGhB
QaiQkCtPTsgh4Vac0E8CgskOAnGgb6S6LrfXL6mp8uLd2ifzmukU6bYMNuJQ 7PzUwWTzxntw
PpF3jyLe2bTXlcJfW8DRJbezYdUTwJecSVgvZWX2WJA1GJOJ4khnuRWTS47T H8wuJXJoIVWR
/aNibuakEQvQq5dojvT8UIMFuIhjPMZSllqopMUdNJ6mb7xTg08hzQJh8+xf dqh3z+ErOOpB
S72Dew3SpCVtA4/6HHTvv6TFI8RGlClAJnA3A1MC/NgmPPzmnszgHCVeaGF7 D24cUOh2rnZX
NUprUlfT9nC03UOvmmjnwvtACPgf/vs3UEsHCGLKkSomDAAA+SsAAFBLAQIU ABQACAAIAJGI
QT0Y5ERr0AAAAHgBAAAVAAAAAAAAAAAAAAAAAAAAAABDRE9FeGFtcGxlLy5j bGFzc3BhdGhQ
SwECFAAUAAgACACRiEE9Z5k9OOkAAACfAgAAEwAAAAAAAAAAAAAAAAATAQAA Q0RPRXhhbXBs
ZS8ucHJvamVjdFBLAQIUABQACAAIAJGIQT1nwjJCrgAAAIwBAAAvAAAAAAAA AAAAAAAAAD0C
AABDRE9FeGFtcGxlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5w cmVmc1BLAQIU
ABQACAAIAClLZj2u+5XuEwEAAFkDAAAfAAAAAAAAAAAAAAAAAEgDAABDRE9F eGFtcGxlL01F
VEEtSU5GL01BTklGRVNULk1GUEsBAhQAFAAIAAgA7UpmPfJU326TBAAA4gkA AC4AAAAAAAAA
AAAAAAAAqAQAAENET0V4YW1wbGUvYmluL2V4YW1wbGUvZWRpdG9yL0RCRWRp dG9yJDEuY2xh
c3NQSwECFAAUAAgACADtSmY926DXcHUFAABtDAAALAAAAAAAAAAAAAAAAACX CQAAQ0RPRXhh
bXBsZS9iaW4vZXhhbXBsZS9lZGl0b3IvREJFZGl0b3IuY2xhc3NQSwECFAAU AAgACADtSmY9
K0TacScEAACiCQAAMQAAAAAAAAAAAAAAAABmDwAAQ0RPRXhhbXBsZS9iaW4v ZXhhbXBsZS9l
ZGl0b3IvREJFZGl0b3JJbnB1dC5jbGFzc1BLAQIUABQACAAIAO1KZj3vDFNn IwMAACIHAAAz
AAAAAAAAAAAAAAAAAOwTAABDRE9FeGFtcGxlL2Jpbi9leGFtcGxlL2VkaXRv ci9EQkxhYmVs
UHJvdmlkZXIuY2xhc3NQSwECFAAUAAgACADtSmY9AYrZpE8DAAA1BwAAOQAA AAAAAAAAAAAA
AABwFwAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9lZGl0b3IvREJUcmVlQ29u dGVudFByb3Zp
ZGVyLmNsYXNzUEsBAhQAFAAIAAgACEtmPZgPOoaJAgAA3gQAAD0AAAAAAAAA AAAAAAAAJhsA
AENET0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9DRE9SZXBvc2l0b3Jp ZXNNYW5hZ2Vy
JDEuY2xhc3NQSwECFAAUAAgACAAIS2Y90wGQg+wBAADPAwAAPQAAAAAAAAAA AAAAAAAaHgAA
Q0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9tYW5hZ2VyL0NET1JlcG9zaXRvcmll c01hbmFnZXIk
Mi5jbGFzc1BLAQIUABQACAAIAAhLZj0L1K33xgMAAK0JAAA9AAAAAAAAAAAA AAAAAHEgAABD
RE9FeGFtcGxlL2Jpbi9leGFtcGxlL21hbmFnZXIvQ0RPUmVwb3NpdG9yaWVz TWFuYWdlciQz
LmNsYXNzUEsBAhQAFAAIAAgACEtmPURkVTbyCwAAfR4AADsAAAAAAAAAAAAA AAAAoiQAAENE
T0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9DRE9SZXBvc2l0b3JpZXNN YW5hZ2VyLmNs
YXNzUEsBAhQAFAAIAAgA7UpmPb1dqK2rAQAA2wIAADAAAAAAAAAAAAAAAAAA /TAAAENET0V4
YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIkMS5jbGFzc1BL AQIUABQACAAI
AO1KZj0PNJBMqQEAANsCAAAwAAAAAAAAAAAAAAAAAAYzAABDRE9FeGFtcGxl L2Jpbi9leGFt
cGxlL21hbmFnZXIvREJNYW5hZ2VyJDIuY2xhc3NQSwECFAAUAAgACADtSmY9 dUFf0KgBAADZ
AgAAMAAAAAAAAAAAAAAAAAANNQAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9t YW5hZ2VyL0RC
TWFuYWdlciQzLmNsYXNzUEsBAhQAFAAIAAgA7UpmPVUoSfXKAQAAVwMAADAA AAAAAAAAAAAA
AAAAEzcAAENET0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFn ZXIkNC5jbGFz
c1BLAQIUABQACAAIAO1KZj2a6CU5SwQAAB4JAAAwAAAAAAAAAAAAAAAAADs5 AABDRE9FeGFt
cGxlL2Jpbi9leGFtcGxlL21hbmFnZXIvREJNYW5hZ2VyJDUuY2xhc3NQSwEC FAAUAAgACADt
SmY90wvIaqsUAADCLgAALgAAAAAAAAAAAAAAAADkPQAAQ0RPRXhhbXBsZS9i aW4vZXhhbXBs
ZS9tYW5hZ2VyL0RCTWFuYWdlci5jbGFzc1BLAQIUABQACAAIAC+JQT0jePZ6 SgAAAG0AAAAb
AAAAAAAAAAAAAAAAAOtSAABDRE9FeGFtcGxlL2J1aWxkLnByb3BlcnRpZXNQ SwECFAAUAAgA


Re: [CDO] Create an offline Server [message #637655 is a reply to message #637527] Mon, 08 November 2010 09:01 Go to previous messageGo to next message
Guillaume P. is currently offline Guillaume P.Friend
Messages: 69
Registered: June 2010
Location: Toulouse, France
Member
Thank you, but I don't understand how to download you attached zip file (what I see is a long a long series of characters ... putting them in a file with the *. zip extension does not seem to work).

Regards,

Guillaume
Re: [CDO] Create an offline Server [message #637677 is a reply to message #637655] Mon, 08 November 2010 09:35 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 08.11.2010 10:01, schrieb Guillaume P.:
> Thank you, but I don't understand how to download you attached zip file (what I see is a long a long series of characters ... putting them in a file with the *. zip extension does not seem to work).
Not sure what you mean ;-(

I can import from the zip I attached in my last post...

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: [CDO] Create an offline Server [message #637686 is a reply to message #637677] Mon, 08 November 2010 10:56 Go to previous messageGo to next message
Guillaume P. is currently offline Guillaume P.Friend
Messages: 69
Registered: June 2010
Location: Toulouse, France
Member
It's perhaps a configuration error on my part, but what I see is the file directly written at the end of your message (it's only text, no link to a downloadable file)... I don't see any link or button to import the file.
I tried to make a base64 decode on the text at the end of your message, but I have an error... like if a part were missing. Confused

Just to be sure, I copy bellow the text I'm seeing (I'm under Windows, and my colleague which is under Linux sees the same thing):

Quote:
--------------010009020405090306060007
Content-Type: application/x-zip-compressed;
name="CDOExample_es2.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="CDOExample_es2.zip"

UEsDBBQACAAIAJGIQT0AAAAAAAAAAAAAAAAVAAAAQ0RPRXhhbXBsZS8uY2xh c3NwYXRolZDB
agIxEIbPLfQdltydrZfSw26llC0oVItue5WYDOvUdBIniejbq6VS8SD0Nv/w zcfwV4Pttys2
KJE816oP96pANt4Sd7X6aF97j2rwdHdbGadjDDotD+HmLyEn2RUrYlsr41kV x2WtvHSAxlGI
CF82gdOZzfLghNG0mb9Mxu3zcNxMy0uOOKGwdmBxkTvI9HuJArOk2Wqxn2/t LmA50hs9a3p9
eFDlv18KFsF4QRBcZxK07y53xPGaKoo5qY7jFdLnFHI6wQviH7gqzyvcA1BL BwgY5ERr0AAA
AHgBAABQSwMEFAAIAAgAkYhBPQAAAAAAAAAAAAAAABMAAABDRE9FeGFtcGxl Ly5wcm9qZWN0
vZLBTgMhEIbPNvEdmr0L9uaBbhNbe2s1qT4AwnSlgYEA2/TxC8hqNhsTD8bb /P/Mz0dg2Opi
9PwMPiiLy2ZB7ps5oLBSYbds3l63dw/Nqr2dMeftCUTcQBBeuZimk3vDkBto 15vnpws3TgOj
xcgdYY0BjC2jQ5Xdekwogo7Ue6+0PDgQWVW5TlGOsjgVZn1HQGjlApCTjERY nwp+5iUA/vsK
KcF912d2qJqODUYnlF9xnQSy46iOEOLj/2IP4gMM/xNodYYnT7zYe6jTn2KC f9F9p3Bfmple
hn4KjL4HJ5mhzsSvXRgv2BVQSwcIZ5k9OOkAAACfAgAAUEsDBBQACAAIAJGI QT0AAAAAAAAA
AAAAAAAvAAAAQ0RPRXhhbXBsZS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0 LmNvcmUucHJl
ZnOVjsuKwkAURPcB/6HBfZOOg4KQzYiCs5kB/YGepBKu9IvqdsC/N7PI2ri5 FJc6xVmfKOq7
K6o2yuz29cd+06jD8XJVTW3qVYXOScrQiRhAhA5Z/4FZYmjNqooc9Vy59UV3 kZiOT+LAKfQY
EbQEJwFfmZ+Pgv9ni2B/HfqlA8VyRPlxtgyRvjV6+5r0yYmdfJe0E+Ok47XN GSznHqHIIGAL
MnIpjXD377I53jk7PgFQSwcIZ8IyQq4AAACMAQAAUEsDBBQACAAIAClLZj0A AAAAAAAAAAAA
AAAfAAAAQ0RPRXhhbXBsZS9NRVRBLUlORi9NQU5JRkVTVC5NRp2RMU/DMBCF 9/yKqhtSc0oK
6pCqC5ABpAKiEguTY1/ChdhOHTsq/x6LNBEgipLqtnvfu3dnb5miHBsbvqBp SKtkFkMUXDsl
Kgy3R3HQlr3ywCQms5vbx/TAZF1h3999yExXxH/r64ZUUaH1QzbWuIH/nupr 71hFOaHp9Wfc
OzIo0gNyZz2ZqpaMVhKVTWb3rGW7NIxhFdzJWhsbPjH+zgofrU0Bb0soRcYP 67ZL2cxfY/BB
ixiWEF3Mg+P0sAvrTMgrqhsER+us22FwX8IKovki+MFxbRCMU5YkjnOgzIEL /QccnYRBob0q
x1m+ULC8Hoc7AhLTVj/t+eeCBo0Hz/GAyKZcLjL/82flTH7kspUn8OATUEsH CK77le4TAQAA
WQMAAFBLAwQUAAgACADtSmY9AAAAAAAAAAAAAAAALgAAAENET0V4YW1wbGUv YmluL2V4YW1w
bGUvZWRpdG9yL0RCRWRpdG9yJDEuY2xhc3OVVm1XE0cUfoZEAmFBpIJSRbCA hjdX0LaWWK2E
YLEJtA2NtdrWyWaSLG52093ZAB9t/0X/hecoSntOj5/80N/U09M7m0BDQig9 OQmzd++d57nP
3LmXP//+7Q8AC9iJoINhWGzzcsUSusib0nH15aVksJiYjyDM0L/Jq1y3uF3U 13ObwpARdDLE
HLeoC8MyK57QvS2pi6qwpadnhEUupmOnTE8KW7gMnbJkehPXCSjVBilOTrdN 25R3GC7G2npN
ZRnCCScvusHQqyGCrihCOK2hG/0MoZhyOJ0ybbHml3PC3eA5SzAMpByDW1nu muq5bgwrUgwX
2oFNzBOpvi0zXxSylpPIM0zHUv+Vd1I9E9VunMf7EQwznGsDoeECLiomriBC Vw7tvFnghtCr
ptgSrqdvkEc2WMejuISxCEYZJk7ir+EyPmDQDrIghnR4salj0FYPPOMRTDQd dZOrQjpw78E4
rmi4ihgdAyGumK4nk5YokyIMZwm0uZQIYJphpBFAlAu0dlyhJ/fLbZZhspVD 3uSWUyQOdsWX
y8FDFNdwPQKdYbT5mGon6enLplex+I6GeSwwRMmW8F03IDjepMoRYXGFcFPD h/iIqoPe3KPE
qyJTEpbFcPmYDQKXeBduMQylnbxZ2BnjUrpmzpdirMotX3RhkURaE1vNLxZ7 MIXbGj4FXY9O
kbC4R5U71gTWoFvgQVif0Z2gvXqwhOUIEnS3jgvQkMQKwyDRTWak6xvSd7m1 Ijj9pfq8E2s4
PXpv2sV4WwYt8XGVw+caVvGAKl7cFzLY8cThR5ZO6lBzqnGKYgZrqiGsM/zS elsPH0drRiey
HFOLQTFmuWXmea1jKT5fafgaGcrbqQg76FOryvyNhiweMnQRo6w66OY7UsdT 0j3S8B0eK+ky
Srq7/0O6VuUUq+/xYwQ/NDT/Mrd5UajulK6tNDwFZ+ghdqu2J7ltEMERItg2 Iq62NTTkVTfu
NZxy2ZSJEgELT7WtgoYiSlTCfoXUEaoNtXJ7fESVUVdn5H71hL2XsGVjW6K2 fVy3O9TCKDjk
CbrLo+0ErvMkv7xVbCbVtjMpUhnJjWdpXqlPoMFaLS6LAvethhkTzTi+a4gV Uzn17g+La0oW
aqtJ27Acj2RJC1ly8hq2lNhnDJdOWyQcW4ptmRa2Tz1/1abxG1xt4WGMRmaI vqfA+vvV5KR/
AEL07UaUrD20uoUO+gDR6ZlX0KZfo+8FPXXgjLIFb1T0EwzQSqO1sr6Hs4F9 EEO1Xdgl2vkU
2X6efgntJc7tYuQtxtOz7+DO7mGS4R3M2uItptZ+x8yjN5jbxY2Bjwc+mZvb Awk1cHcP9zqw
h/sd5PQFe430Yng4vIsvf8XcYR9l3djDtyG8wZNd5Oqgc2wX4kWQoWK/hH76 fYo+cGKfo7Fr
YBIFulZF6CjRKDBxA5vUnJ7hAdnXYeEhbDj08eHiOf2qrG/WMqtnrVYmRdEg gKRIizSaJH3K
FBmiPRYouoIwfiLPLrC/8DxC85HRfnWtaIqgpuu/QncGwm4HcEN10ffhWB0u BC/wl0QLBHAe
VYpAcJAs8MQ/UEsHCPJU326TBAAA4gkAAFBLAwQUAAgACADtSmY9AAAAAAAA AAAAAAAALAAA
AENET0V4YW1wbGUvYmluL2V4YW1wbGUvZWRpdG9yL0RCRWRpdG9yLmNsYXNz lVZZd9NWEP5u
ElBwxL6VJIWErd5AQMvqEApOAm6dhOI0YNrSyvJNoiBLriTbga50ofv22P/Q l57TOofmnJ72
tT+qp3OvlODY2NAHy/dK38x8883ckf75948/AZzCTwq6GPbyJb1UtrjGi6bv uNrYlXG5UNDD
sN9x5zVuWGbZ41rF1Mq662vB8+u0ZOjxXc4ZjmYbgYtzusG1qslr3PW0GULM ynWKYeOIaZv+
KEN3NDZL5mmnyCPoRp8KBb0MW7OmzacqpQJ3Z/SCRa53ZB1Dt2Z11xT78GaP v2B6DPuybciL
SEUnp1cJezy6jpzhuFxzK7ZvlriWue468y73vEnHlnaClFIKNgyJ/2HJ0BtE vEzEekSWDCPr
Q5OAmYBfzvR5qs2zjF2u+JJIZHzJ4GXfdGxPwT6GoSYDUYIMBVqDKRhgGGyj ifQbAcPzKvbj
AOXpcV8QofK18rzpuHcL3DYWRBBJNzYrjIdVHMQhKgsZS483TX9hyvHNuXtE sF2+qzn14Qhe
UHCUYaADUEUUMeI3z/0pvUT8dkVj2UW9qmuWbs9rOd817fmUYJNQkcQxhj5i I4gG8N3RVrTs
Nk9mO9ipKAwbTMGBZOqYC8PmnK8bdyf1ctiTiumNma5/T/b2bWpl0wva4bJl OTVeZNhuuFz3
uSCadmzfdawW6b2ar9XMImXuaWmnVHa8QHoF5xkOP8shi+AcUuI0nd1EAl1U sQEbFVwi65a+
EEaCCLd96uaqWRTWo+gTLq6oSGMsqHMThkGLdjjvmSa4ZD9Bs6QlflYvcOtx 5PEgckbFK3iV
YRtFXodgONkx7hXd4+sMwpadVDGFaYYtpGpDCRkOUFt1qnEE/XhNxQ3kqMPI +Ab3nIprUK2P
NVny0pxmFB2NuyFES49Nr8JTIqvXVcziJg2J1XPT1KbThUVu+CHjvIrbYhqG DSMFXfInuV2h
uUYzmNRlOPQMjRPEm3CMCk2Qt6n125kI3yKyrqIAIzh7wWw48gSRWodDHzjm FczRgHgqWMUC
TGImQixwiw7BcFOMRmYSQhLewV3R1YSOtT8yY5yGtC4nZiojtDwHW4WDcpDR jHxZDXWIJhAU
zIWvwOugl8CpqKAajNGgNMPtiQmAPAhLTWO8GZTxeSmCGu6LZN9jOPgUn5Rl Lz5g2JNeoDbi
Q7pP865Q8flQVbcqXLj6SMXHYkgKojPURwo+oVdnm7fE4ZMRPMBnIvrnlH+0 7RtWqFvDFyq+
xFc0ofViMcctamHSPmt6NADEgT3Wyp5XqXuprM3gYEKXpJD7O+dMvVMKpSKB OmIFhvCRnDyJ
E6YY1JtXczgujh+DmrEpftrSPY97GKZT0E3fR4x+NDrpKuYofZzQdRPtNPqX z+LLiPxKiy6o
dN0obx7BZrqqofEWbJWOtmF7aHxa4ules2FUGu4JHoaGYrUDO2W8XWvxEyG3 FheJhthsLfZu
6XQvrXto95x04dEdkeJg8m/0/4y98UQdg/FkHUPx5CMcZqgjLrx3S+97KBOR toITtD9JuZzC
AM7IaEOBnzXCgzguBRKrE4TtIqzwwwbo5ot4KcwhGWrY1f1LUxIXGpLoWkvi 9DNYXnqi5Rmc
DS0fkgBC3dH4Cs7lE8u48DtG4r9hZAWj+WW8XMflYDdOu6t1XBO7eB3Zv9Bf x/U6Zmhz67Ho
/bI3xmh9ldbXqIIZnEcWFzHZUMvRNWlG8QbelOzfenotbzyhlj3inRAafk87 oTzRvZMnXu88
An1fbOtdxmJW8K6jRDV9dwW1fELcvTeZ3PF+HR8mV/AgT437aR0Pm1O5Ra2W py/D24gRVY3I
pnC/ocojIY+d9PxrfENMYrT+Ft+Rly5iJLz9gB/pX7xIHsik8R9QSwcI26DX cHUFAABtDAAA
UEsDBBQACAAIAO1KZj0AAAAAAAAAAAAAAAAxAAAAQ0RPRXhhbXBsZS9iaW4v ZXhhbXBsZS9l
ZGl0b3IvREJFZGl0b3JJbnB1dC5jbGFzc5VVW3PbVBD+ju1Eqa0kxLm0DW2J IaS+Rm0JtJDe
SJwWFycxsWtIuI3inDgysmUkOaQPvPAv+AM85aHM0BvMMPDCAz+KYY+samTF pmQyOTpa7fd9
u3v2rP/+59ffAVzD1xJCDBf4kdps61zhe5ptmEp+Zc3ZFFrtji0hwnDZMOsK r+la2+JKzTC5
YnZattbkSklX7X3DbG7uNniNnIcZXvc7dzSl4GNjGDG5ZXTMGmfIFP2evLmv 1PYMhb90UFbz
m1vufplBfmkvqfYBQ7zYUA9VRVdbdaVsm1qrTj7DN7WWZt9muJs8BfdJplSV IbJq7PEowhiX
EcNrDOFkqnoGpCxDwojYTck4gyjDeFFr8Y1Oc5ebFXVX5yI6o6bqVdXUxLtr jNgHmsVwqfhf
9aYsxuvc3upJdiqZ6psuP9Is23JC22GI+XAMOcKcpr5xQheaap3nuVUztTYF xLAYIGnsqwT0
GAL+yzG8iXkJbzGk/re0jLexwCCRQ1Xj3zHMDwj8kL4KoPBajiKJtIQUw0I/ X2o78izYvFky
jUNtj5syMsgyzFCWguBEpqX+HdMjeqpaUEqktaE2uQSF4eLgK0RHHMUiroo+ u8YwnezXkMJj
Sca7mKWD1lXLLvN6k7fsGK7jfQk3GOZeFb+MD0BhRSmsMrcszWgxpAcU2+o6 CKjrS4d7C3ck
3B5Q8pMIGXfxIcOE05ZtwxI9/qjQ2jcYrr5athdC6qtYk5Cnxj4VUEZOlGy0 bKu1b9bVtnsX
xyioEjctuj9dw0IgIjG4fA5rOhfVXu4iK4ahV7R2hR/ZI/iYLmLz0T1NsIwc qNaBGBzOnSxE
sYlPJJQYEn7uFreXGkrH1nSlOzcf0lZGEVuB0+9+XU4VxF3/tqPq1gCHnSiN o6qMi7gkND+T
UcY2ze0+vv3QFK2x2+gdqu5HZ2ypNLijZafPu3nGe2bWokAhQSGE6X8IIfqj EUk/MSExIOkp
wotBpnWU3rbJHqbnePoZxtKZJ5hIZ59g8mcHME1rHBFaZ2g9SwTnMIbz9AbM dWFkPQc4OyHD
nJ0QCtH+PGZdGYWe4ttQ+hdMPvbIhx3jBYdQ7jq4hPTbRfYuOOuCQ5HjAHLO hwx5SKp8H9mJ
oOx8X9k3iLQLvu6CRwX4BRIMz3E5SJL0kYx6JDkv8YZzDhSJSPwvxH/D4rbY PsOVp3jnsUf9
Au+J5aZYVhiETNiRGXPqnKXq5kjqik9OceXuOb5shoz38VGwZiwY8VLfmhW8 iHMuMhx/EITe
8EHDHrSIdRd6xzl1YNpXsQ2RLT1+CJ7dLR/ZtEdWRsUl+97tzEQm/ROGIseZ P8F+xFTmD7B1
wZ99iofP8elx+Nir1SxRAyt0mnmq132qXQGTeEBnuu7r2YTXswns4HOSm6Qw viBbyKllBCHp
LFm/dAL+6l9QSwcIK0TacScEAACiCQAAUEsDBBQACAAIAO1KZj0AAAAAAAAA AAAAAAAzAAAA
Q0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9lZGl0b3IvREJMYWJlbFByb3ZpZGVy LmNsYXNzlVXb
UhNBED3DbWNYQSKIF5CAAhsQVrlFDSJy02gEBCpV+rYkQxhqL6ndJeA/+aAv IFpl+exHWfZs
QghJRHnIXLr7nD7dOzP59fvbDwAT2FDQwHCXHxpW3uQ6zwrfcfWlhZSxzc11 1ymILHcVNDFc
2zMKhm4adk5f297jGV9BC4PmuDmdZ0yR97i+t2NkuF4Q/IC7np48x8HQMits 4c8xNGqxNEPT
opPlYTSiVYWCEEN7Sth8dd/a5u6WsW1yhkjKyRhm2nCF3JeMTf6u8BiiqYs1 JxhajWw2JTyf
2zL9tJb6X62noITUGTLLFBOXZ2BQssLLOx4pbxfeaVCeu/5HhmEtVd3VRIVl 03eFnUvEPhAL
N7nFbV82pQZCIvNlzkgtAUObyy2nwM+6EcpxP2kZOZI1VUdE7Fyl3oGv51wj vysyVKhEybqI
YYsfkqKhugQ1KhT0M3RXmxf2hRkcsXsMvZVJubVDa8fl+nKRsxUDGFQxhGE6 S3zRNDx5DLTz
UitQQUSiFTGMKhhh6LkoTsUDjBWLWjUs6kqnVqeEMHQ8UvDw3G0o+lS6TH1E UDDMfb62E0YU
U/JgTzN0aXW+aTqEOF2FqFaQoU9UPAU1tcXI57mdZRirh6kxlZpHrX1Wp3uZ rKMvLq2ddm8W
z1XM4wVdDPJs8ILwhGMzTNZpoYRmHMtybN0tBUqqUxB1dRHLCpYY9EtCVazg JUOYGp2mexMo
oAchKbuQlF14TV9KS/691hBSDCwm41dVrMmvFvKdYgzxbjr7boavCPlUdFa9 CeOSE/2gjPRr
pgdQoZkeHxqv0E6nmdHcPHKM8BdaNEClsSUwtuEqjWoxgHbtNNM5QEcJPB3E k60a2BEAbxSd
JaBcRXA9yNdZzj8a2OtQdFbkZuXcXURaBM4HJRGm8VMV8maAjBa95eQN6CYP C1a3cJtGhjv/
rqTnH5X0oLdEMUOzjGpgn6s4ohUctYLorwh9JQ6PRMuo+HdE34/+xMAJ7jOc QGP4ivFjTEZm
jvCYHLMnmJOOBYYjvIq8IesR3p4lbguqH6QEQ5ik+UxAvCwgXhawHuDe/QFQ SwcI7wxTZyMD
AAAiBwAAUEsDBBQACAAIAO1KZj0AAAAAAAAAAAAAAAA5AAAAQ0RPRXhhbXBs ZS9iaW4vZXhh
bXBsZS9lZGl0b3IvREJUcmVlQ29udGVudFByb3ZpZGVyLmNsYXNzjVTbUtNQ FF2H1gZoyqUV
RKTc5FJaIIiCcvECpcwwU4UZmI6D40NoDzSYJp00gHwKX+ALD/igDj44+OpH Oe6ThFIgAp3J
ybnsvdZe62T3z9+fvwBMYllCHcMA/6yWyjpXeEGzTUtZWtywOE+bhs0Ne80y 97UCtyQEGVp2
1X1V0VVjR1nd2uV5W0KIYdy0dhSe17VyhSu722qeK/saP+BWRVnxQWIIuccM Q9n/p4rMnDOf
Y2i0TNN2KRl6LmXx0jbNTYsrGTeAwkPzmqHZrxgCiZEcQzBtFngjAmiWEYbc AIZWGRLqxSwm
owGNDM1ZzeDv9kpb3NpQt3TOEM2aeVXPqZYm1t5m0C5qFVH5XUyjUqSCVimb FcqUNaO8Z6eL
5B4vMKwkbhDvCc9e9dtnZyQnoYsu8S5OSuhmiN/oHkP/7XUx1Jt6YUXoETZd q4nODX7gnYd3
uJ3ReYl8IeOGEz4SPlzfa6SrGZIxjAEXIV3U9ILFjXMfPUQJSR9F+YKppJdW Xagw4hiVMYZx
hobzG6JKBhMj1z6kvFkqmYayZ2u6kslqFXsujAlMSnjC0HdrsIyneEZXbpsL lqUeMrQl/KQx
RMoqSTnXQOt1W81/equWvY+sgQSvOSFkgp9h17eEylkZc5inbnFUqvQ9U4/1 +ci82i8SP68k
XFQrF1a3+XFvCksWZCwiTZlaJVMq24dOq20S9bq5Z+X5siZkdPo2xbiARB/d b4Cee6ijvyLq
RYgfdaKzYqJPaYzQKkMRjN7NyR9oSrJvaBFD9Ctt1eE+jVEEaYzQ2EQAzTRG 0EY7spuGdjyg
N0NHFTLlrOm5AAk5G7GaRFZNfIhOL1GlaEHWmkyd4ZEoZewM8UvVNJEsUGI9 8bVQqgBMukke
oJhJ6HFIWtFLVtQ5s36aCUseY8Cjm6UTcRZKpr5j8ORKsXEHu92NqGKHkHDM ZaJ3PJyP9BZR
HanfGDlClIqPnyLFcAqF4YQJ5EBN9f1U3wAhDtcwdFQZOjDlMEw7Waydps/x wqN671HFiCp+
hIhLNePHMkosY6R7ooYlVmWJ4WUtSytNX+G1x1L0WHpdQZ01gt4wHEEKfEEw eBw4vkI5RZTT
6MZMDWVvlbK3hjKEQBdB0WrJsT3zD1BLBwgBitmkTwMAADUHAABQSwMEFAAI AAgACEtmPQAA
AAAAAAAAAAAAAD0AAABDRE9FeGFtcGxlL2Jpbi9leGFtcGxlL21hbmFnZXIv Q0RPUmVwb3Np
dG9yaWVzTWFuYWdlciQxLmNsYXNzlVNdTxNBFD3TFtaWRRCwoviBWrEfwAIi mlQhBjAhaSER
xPhkpttLWdzuNrtDlV/kMwnG4IMaefMn+aDe2VbEj8TSpJ0zd+aee87c2y/f 3n8AMIN7BmIC
WXot6w2XrLr0ZI0Ca3Fp7Qk1/NBRfuBQWG6FM9MGEgJzflCzyHadRkiWR2p2 x9pVjmu5zhbZ
ezbTlH6i5SZ56lFVNhQFAt1q2wkzU1yv1FnBIuc8cDxHzQsUOk7KbQokFv0q JSHQY6IL3SnE
0WvCwFmBeFZf6Cs5Hq3u1isUbMiKSwIDJd+W7qYMHL1vBxNaskC+w9qZaZbc 63tLJG3lNKWi
qsBUtvTfF1s5fjKWn0QawwYuCIx1VtbERVwSMIMTR9rijmzKVqWybBQNXGbG k1KovmXZVd8K
KWgy+cox9V4PRnDVxDWMChg1Uquyzq8xlM21OF3p1ax1FTherdiDG8gYuMnG f6tn4hbGuIEB
1f0mJ49lT+SuVXbIVsXc3yFtPmsipw0lpW1Tg/Wwm9SxuT2BiVO9KCtbV9J+ yaKithqY5Hk6
BYMBHtrBX1I3tgP/VWtAUuv+bmDTY0dvRv7dnkmdyf1Y9myXz7xamdS2XzVx V89jV0jqaYO7
t+J5FCy6MgwpxCjPbpz/oqK/Xw8woxh/DZzheJLRfd7rSCpfeMs/72DuR3f6 dCw6YWa8QD8j
k7GOnsMArwkMYqjNss83dZWF/AFSBzj/vPy5jQqfMHKIKwKHuB7Ds1b09h/R 8aM36B4/+qhp
UiypyFRFPIzWeCQlzSKACp/abKmKOcbz2IpkpSOZC21ZGuVRYGHjjIcR+840 cQPCwITBI8ar
9TWSOx0ZncGdyEwas8yq7YnIJn9+AFBLBwiYDzqGiQIAAN4EAABQSwMEFAAI AAgACEtmPQAA
AAAAAAAAAAAAAD0AAABDRE9FeGFtcGxlL2Jpbi9leGFtcGxlL21hbmFnZXIv Q0RPUmVwb3Np
dG9yaWVzTWFuYWdlciQyLmNsYXNzjVNbTxNBFP6mLV1bFimoeMELQsVelDV9 MinxpWJC0ooR
5X26PS5D9tLMbhv9V5pgjD4Yn/1RxjPTBjD4sJtM9sx3bt/5Zub3nx8/AXTw 1EFBoEEfZTQO
yYtkLAPSXu/lwVsaJ6nKEq0oHczgesdBSaB2IqfSC2UceAfDE/IzB2WBnUQH HvmhGqfkUfTB
80eJl5Kecrn9s2Kf3uhkqkakBcrZsUrrz7h7P1/7LufsqlhlLwTauZOaRwKl XjKiCgSWXDi4
UkURyy4qqAkUGyZgua9iej2JhqTfyWFIAqv9xJfhkdTK7OdgyVAWaOXsXe8w 5aWAsvPxBXYb
/XP9DjOt4qDb7OcTr1vBLdxxcFtgOx8FF+u4K+DqCy4zrqUwyVToDeS4u4j7 2HDwgNn+43Dx
EJusEY/AHS8Snx08E78EOahzbL55WNFYRlbtS5oIVA+TifbplTLSr/9/vh2T xwPtxX7IvjgY
UHacjFy0zeEupJS9H/P4+3FMuhfKNKUUG3wRirwWIGo1cx/4JRR4VVBldJGt 57w3SLXV/gq3
9Q1Xv9iYFYNZj8lOscqWy7ZBr+G6xW9gbV5lb15lpXUK9xQ3299xr4Bf2Pp8 Vqxskye20Nos
eF7IWI+wbak+tvENNPlf4hvQwhPbUths/v4CUEsHCNMBkIPsAQAAzwMAAFBL AwQUAAgACAAI
S2Y9AAAAAAAAAAAAAAAAPQAAAENET0V4YW1wbGUvYmluL2V4YW1wbGUvbWFu YWdlci9DRE9S
ZXBvc2l0b3JpZXNNYW5hZ2VyJDMuY2xhc3OdVWtT20YUPYtdBEYtjwSS5tGk wSW2gIgEkjRx
0gcmpG6NTYG4r0xmlmVjxMiSRxJMyf/J97ZTptAPmXzqTNN2On38nkzuSjYk WGltPCPvanfv
uefec3X32fOfnwC4gvsauhgy8lteq9vSrHGHV6Vn5ufKS7Lu+lbgepb0F6Ll 9LSGJMPABt/i
ps2dqlle3ZAi0NDNcNP1qqYUtlX3pSlrD02x5pq+9H3LdRTecjTNu85Dq7rp 8YBe5rkgB9sM
3cG65aeniEmxPSo5orHF7TQXQtZpp8RrkmGoeEBtOfAsp0rnhtQ5rwmxHZ3s vmU5VvABQ7lt
j63YrSvZCkMy767JXhBBHRp61GxIRy9SanZcRx9SKSQwokPHCYZERhn1Fy1H ljZrq9Jb4at2
GIsruF3hnqXeG4tJlScGo03O6WmK/5TwJA9kXP4ZrmeyxSMIl0vhHN7VcJ5h rD0qOi5glKFH
CeaHUj9oO/OvUnRkMLNhbgaWbQrXCTglzjML0dm1fHOFGL6HixrGGM62Wgei bq7kF+8RiI4M
sgx6VQZk7EhVkQy1zFF8xhREDIxyXiDv++6I6zgmNUwwTMeJIdxajbTw5JbV FGWpMY8iuAST
YTjSubnTSB59mK+R+D9Qm4nXcJlhNrY+6lYLQMEJpOdwuxWoF9O4qmGGYaZD Jnku1qWOa7hO
xV8qlxcZrnUaTYiR68MUbui4CfokenwSW60y3MgcDS5bSeE2PtRAPWQsDiHS muxKahLpdAYf
MVx9jR77BrEfXB9mMachz3C5Y2MddzBPJe6/UuLjcSUumvtm4aA8sxXl/RMd BXzKMEgwS4fa
6XAmrhcqq6KOBZSonYVWh0oz13Hy91sC9cxecRBM27FQq/UO05iLb4EdlTgB d4sw6fQRH0Ff
htSyu+kJOW+pRn86vhVeUlmmEO44wqY9p7ogg3V3TcdX+Jpy3Oj0245Y91zH eqSCkzHS/F+f
ejkFvvS2VLNrRH6g/MtuiL5eoBR7eZv7dHfgPN11CXreQGJgQF2DwMCQugTD sU+N6KJHx5t0
6i2azdJ7ksbjxvgO+o2JHQwakzs4ZvyE4e/D0yfpPxVaUQbwC94O7ZmywSmc DtfP4GwD73ED
77bxI/p38Q4Ng7tIF3dhPMXUwsQPuLKH97uwi1ulyfE9fNyFSTpzbA93aTax h89o+G7f8RiR
B34lx79jGL9hBH/QFfgnRvEXDPyNGfyDHP4NSRmR4wapfmrPZSwSrRFcxOdY IsRR2lvGCqUo
gXuhjwq+oDFJmF/imzBQFoZGvxdQSwcIC9St98YDAACtCQAAUEsDBBQACAAI AAhLZj0AAAAA
AAAAAAAAAAA7AAAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9tYW5hZ2VyL0NE T1JlcG9zaXRv
cmllc01hbmFnZXIuY2xhc3O9WAt8W1Ud/k6b9Lbp3aNdS5eNPTq2kaYpYd0Y rBuDPrY1o49B
S2eHMG+T2zZdmoQk7dYpApOnoKC8FBRFgSE+GLJ1KVWYoKD4fgM+QJ4KE/GB T2R+59406SNt
s+rP/racc8895/y///d/nXOfeufhRwBUCqeCLIGV+h6tNxzQ3b1aUOvSI+7a uubz9HAo6o+F
In492mgOK7AIzO3R+jV3QAt2uZs7enRvTMDSHYqyKWxIvWqJRfzBrvUCamTU PgJzzDl9MX/A
3aiFOSGvxd8V1GJ9EV2gbezbDRM3bAhFuty6N+APR3W33tvp9vpC7mjY747q kX4C9wRjeiSo
BZLoB9ZvlEI0r1cP85EQPMcnJKjH1vS4R9a7PdWJnrFvYVK7gQZ/NKYH9YiA I816Q5rerwdj
bs/ITK6fZcKuiYR2R+XSivT6mbrRKC2jp3P9HPNVbSgY0/yG8DWTCfeOzHF7 THP6kqu4Uc4G
f9Af2yhQ7JjIR1kbbVwb8uk2ZKNExTzMF8h2lLXlQWCBigIUyt6JKqzIsbG3 WMUSOcca1WPn
h6XVKaapr7dDj7RqHQFd+krIqwXatIhfPicGLbFuf1Tyl5k7Sv669FjK1AJb 0qGfgc9IdU5W
oSBXQZlAyfhNa/r8AZ8esaEcFQpcY6LCnKHiFLgFlH4t0Kc3dzLGRkMzI4fQ JqC1wYFVkuKi
XKymXXYGJFFy9DQVa3E6h7RwWA/66CxplZ0EqrHxOhVVIG25sZD5UqDIkQZE Ps7EWQroDrPG
xIqKs1FN05P16RVKDCmoFVh13CaQbrRJxWasILneiK7F9NRLaZ56FbMwOx81 2KriHDQI5Gs+
XyoKyzMOw7I2uUuTimbJjULlmrReXXJwrorz0EKFw31U+Iw0CmdEgQ3nY7sC RtEpk0AK+Dt1
74CXLt8w0juf4yrehXaaS/PG/P1kYFx4jkiU4RkkZAFbZFQwrJ6B49PiLTHN u4vGNoLShp3Q
FLyHfE6RmVq4Vm/tppV8Rlyr6JDhr0T0gK5FdQX01oKUJ9Vr0W4KsMGLEmlK Bku+jDQ/Yz+z
0F++yoZu7JJxEjBMnWHGKGuzIYiwgtDktkglymSCNG1xMehWc0xfHJVx1zrK ZpJzbYihX0Gf
wMKJq5vkryl1N/YwAsI0rBYZLfb0Sf17KqmSgL1S7nsFFk1cH/OG3a2126Rk Gy6R897PQE9n
eXM+aU5CteEyueByOt4UrjJ2nVnPzNUfkKuvSAurp7/XvbWtUc5TcFXmXlJp w5XYJYFdK4n8
IF1tRqxNVZU9qejZFgn1+30Gy4zIaCwUlt79IRVzMNeGG/ARBTdOHUjjS7yK j+ImhrVPT6WA
kjEZe9MeeRzxh4JG0r5Fxa24jTXCKDuspfNHJhs61oYCAWYMc/bHcYeC21kB 0r1X8Ql8khEc
C1VHItqATDxlF6RL7p8SWJ7JcSkfd+IuFZ8xjgXeQCiqy6x4t1TwHoGyaWrJ WC33q7gvsY+u
MRTyZNZL4JyXBqXA7OT5LzEtd2Rg7LE1qdYD3Ck1zNQW2i3ToYL7ZWH6soqH cJBLzWTQMhD0
ckbQv1cGpp6mLP9PTiWjxayXMAZVHEachS8BQ2ZhIzFkKi0hyVjIHR/GVxQM M7wy8VAzO30V
jyRpaO7sDDBcagOhIGEcSEfD9CjG3Q8yjLwx1EyjbHKqNOio0icz0BEVX8Nj ZJSHgOqkhwRm
ljSmsUIqtXmY25LXCkZ7r8aTSaTJqOh5Xkmn2VejYxztrP/SheT53HSZkzIw DKEYR1G5mYJv
J8pWd6W7x9fh3ePeyt86Laa1hPoiXsb2UyjJxffoG/J1VXdl1U4f33bwNOCW L3+g4ocoYqKS
N4TzGmz4MX6q4Cc8dU+BxNch3a+uxnS9n+HnAktM16tn2t8rmQ/QacLkmoxz uIuRvsGxY8eU
HsFde81F0ohjVjMRPCNQOtFqXEPN6yurfVo4Ju8BT6PEhl/i1wp+lbagc8EI 7ufwPPNy8hgR
NBPuSO0QqDMDZ487enHAnaI0rfdwW09dzcRd1ktCX5Dp4UWBBxwzVX9SiQm9 J5+QBtJ0RuCq
EU+z+ZJq8zzQMIWjyTtw73iTnzFTfenjvo6EbrT7tOqzePo60tnQdTzEKPh9 5kea1TYcxR/k
wfdNgeaMD74ZlaQ2WQL+pOLP+Atv8+MvXWOrXGQyp4pGqZtZJowuFe70d/WR YT5s5jFG5tqp
U/Qk+UrBXwXO/K9yXj7ewt9V/AP/5Jk6Kr8dxCIDxhIemHhmc3jkZfAtvK3i 33iHlxY5R9vN
zQJ+r6GBnLRDnu/UkROEmZtnp25e5sCiRFFOx4IsKpl/qkgemdPtJQ8CwqJi OVbkixyRqwhF
oPL4y5W8as7PFzY0KSJ/kjP/RPuwZopZqpgt5pAQ1syEd0v9ev8PRTMpjixc IgpUUSjmCSyY
nHmB0xwzITlfFIsSRZwwyZeMKRerYr6wy+I9hp60nye8I+/dnpRq9EhKX6iK E2XBNDxynKvl
St8zuxbZHf8JcnL7yYznTd0p87wpgBnjE5jlHctx+g8PUzOcOJJHo8tPFbgo 8wv9zD532szq
sdkvPzsuTL/3KdIVaTcPFY3UBrQocxtKeezOBpDD1spf4Ar5lZBPeexnwcbn /FHPKvbJz1Ts
75O3QGOsAIVs5dVwHor4W8yn7RzPYjvPeRgnOMUh2J3lh7DQOYhFDxqLlvL3 BIoEzoYF67i8
mtvWcqs6gpLvjOVYhpMAo2c1QJbKzJAQ8gBXSvDnOA9i5TAc7eVxUN6phZWD WDOIM4awIQtH
UNPoehIOZ/kg6hpdnLplCJ4syDWuITSyuA1hWza2u+JodR3gdtkGuMXkAdjC /laKbIATzViD
bdiEc+FBqwFyqSk+CfIc7DBALkU5LsC7qcKFHCV7b8OjoIZvlmB+AvwRghds O+O4yDkMb/th
6IewMtXtZLe7nfr0HMIWZxy9ksSDsMcRNZsBs3mf2VxqNq1ms082w7hSrr86 jmtSpK+l/UBs
2cQ2GxfBjp0ktAcu7MJqBFCFXpoiiHqEqHEEbYhCxx5DX9VEnNBX4LoRbcQt 3F3ydQflXv8E
5spmEB/eLk1/vaS6vekx2QzhZoEhfEyggY+dqcfGisf3I6fi8Udd7VU5j6y1 Zq+17EexPafY
UtlUcQR3DuHTAldYRLGl2HrXsdfKR80qSMyK47PbkzPeMKXdKyAhrCTJDxLi QqzHRsLcSK/b
mDT1ZrowcCkVuIxOfTmd+CrOvJomv4aeeRXpuI4Gv56EXYcu3IC9uJGzb8C1 uInX/ZtxG27B
7bjVoKjepCFBkZN7fQ73k6RquobZW0dP/jx7WcaY2Wul/38BXySevXx7gdG7 0MCpFB1DGSyK
ZF7BmRAKvnSMK7IV2T3Af8AxGkZJPQthjBbMm0UX25yMlm/ySQZ4fZpIaXSS roWMkAebnK5B
HKqyuOwWQUaHGD5VVmmqculRjJFHzWixWw8kXcrJNAHcRV3vZtjcQ4n7sRL3 wUGNy6ifE/ei
kjptYsSWGloZOJJhU4/HjbApYoB9nb0s7uLEN/AEWVjBOU8a2CuZE75Fx7Wy fxjxhFb3J7Sq
GsZTjJvvNLqkeoXfpXLlpm6D+L7FEsePmobxNGc8S93i+EWVtcJusVvj+E1K jwXGTgcZsIdw
ImUso5RyuucqHiNTuKuSuKsMtMz0xPYSXuYuyxgQr+BV4i6nJ/0WvyO6VbTt a3jdwP0Qdzdx
DxjPQOkwjrY7y12H8UYcfzyCt5oqLEP4WxZk8y82KXhmumRwkZoC3tDm4xnm k2cNaE5zsyS0
UjpFjhGtpQIGpQXGOkmp4F9WAsYrfCOVamB6FNmNridQy0zTVDEkrAK0f5T/ 9/H/pRWuIZEn
EBdqlSUu5lZZ7Va7ZUgUZcFuNV8NiQXy4YBI5VAz1zxHCc/TRV5gvnmRRn6J yF8mwa9wzqvM
O6+RotdJ5lFm2zeYbd8cRXZDUqMGscjQKAebxWKxhLhnY4NYyoKRzT0Wi1Kx zCDbLk4Sy8lU
MvNuVYRtbq5YIVYmdJYBIZmRbm1P0WvStc4QLmtPljjZ+HWIMsM3stEN8+/K RHvUbP4DUEsH
CERkVTbyCwAAfR4AAFBLAwQUAAgACADtSmY9AAAAAAAAAAAAAAAAMAAAAENE T0V4YW1wbGUv
YmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIkMS5jbGFzc31SXU8TQRQ9 w1aWbhcoH6KI
WD76UAphiy8+QEy0amJSfMH0QQPJMFzKkO0Mmd0S/FkmGg0P/AB/lOHulPig lk12536ce+bM
mf31+/oGwHOshxgTWKIr2b9IKelLI3vkkjev94dRfSdESaBmXS8hleqLjJLz U6kokSrX1iSv
/CIwnp/prN5irs5Isl2G7Wmj85cCrcY9uM65vJRJKk0vOcidNr3dja5AqW1P qAyBSowHGI8Q
YDJGiCmBh43/j0x3tKEPg/4xuY/yOCWB2Y5VMu1Kp4v8rlgqxAssj5ZU32Hx lbo01nzp20HW
Kpj+2VIgcAM2I2hsdCM8xpMQiwKLI1ljLOGpwIRUijLvXu0+Wz4VR4oO7MAp eqcL4VN/mtuF
GD7wW6NSm7GYfcrP7EmMVSwITCpHMqfhZfFJ4/fGkGunMssowwp7GvDvIKrV wliOxvgNMcH1
Mkdtzot+pbn5HVFz6wfirx40zd/IgwUPfkaVowWfVzCDWcBHc5jnGl8S94aE L3wOlJvfEAU/
8ehvukPe+8jTxUPgHV2AZY98hhqvJbZ4BWt+SngcP7dQSwcIvV2orasBAADb AgAAUEsDBBQA
CAAIAO1KZj0AAAAAAAAAAAAAAAAwAAAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBs ZS9tYW5hZ2Vy
L0RCTWFuYWdlciQyLmNsYXNzfVJdTxNBFD3DLizdLlA+RBGxKH0ohbhNX3zA kGjVxKT4gukD
b8NwKUO2M2R2a+RnmUAwPvgD/FHGu1PiA1g22Z37ce6ZM2f295+fvwB0sBVh SmCdvsnhRUbp
UBo5IJe+f3cwjhqdCKFA3bpBSirTFzml56dSUSpVoa1J3/pFYKY403mjzVy9 iWR7DHujjS72
BdrNB3C9c/lVppk0g/SwcNoM9rb7AmHXnlAFAtUE05iJEWAuQYR5gUfN/48s 9LShz6PhMbkv
8jgjgaWeVTLrS6fL/LYYluIFNiZLanRYfLUhjTWXQzvK2yXTvS0FAjdiM4Lm dj/GEzyNsCaw
NpE1wTqeCcxKpSj37tUfsuWoPFJ8aEdO0UddCp//13xViuEDfzAqszmLOaDi zJ4keIFVgTnl
SBY0viw+afLJGHLdTOY55dhkTwP+HUStVhrL0RS/EWa5XuGoy3nZr7Z2rhG3 dm+QfPegBf7G
Hix4UKHG0arPq1jEEuCjZaxwjS+Je2PC1z4HKq0rxOEPPL5LR7z3qadLxsBb ugAbHvkcdV5D
tngTL/2U8Dh+/gJQSwcIDzSQTKkBAADbAgAAUEsDBBQACAAIAO1KZj0AAAAA AAAAAAAAAAAw
AAAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9tYW5hZ2VyL0RCTWFuYWdlciQz LmNsYXNzfVJd
T9RAFD2XLnTpFlhRQUA+1D4sq7GrJL5ASHTVxGTxBbLvwzAug+0Mmeka/Vkm Go0P/gB/lPG2
JT4AS5P2fp175tw7/fP3128Az/EoxBRhTX0W+Xmm0lwYMVIuff3qoPaSnRAN wqZ1o1TJTJ97
lZ59EFKlQhbamvRlZQgzxan2SY+5BhPJdhm2p40u9gm9zg24wZn4JNJMmFF6 WDhtRrvbQ0Kj
b0/ULAitGNOYiRBgLkaIecLdzvUtCwNt1PtxfqzckTjOFGFxYKXIhsLpMr5I NkrxhPXJkpId
Ft9KhLHmS27HvlcyXTmSELgxLyPobA8j3MNqiBXCykTWGGu4T2gKKZX3yTPC xk1rKSeKDu3Y
SfVWl7rn/9eellp43jdGZtazlgNVnNqTGA+wRJiTTolC1XfFg8bvjFGunwnv lccWrzTgv4Ha
7XKv7E3xG6LJ+Vn2+hyX9Vb38XdE3Sc/EH+tQAv8jSowceNHtNlbquIWbmER qLzbuMM5viOu
1YQv2BLbZvcbop9YvsyW8+GmYotr3AVbgPUKuYFNtg1e8BYeVl01Hz//AFBL Bwh1QV/QqAEA
ANkCAABQSwMEFAAIAAgA7UpmPQAAAAAAAAAAAAAAADAAAABDRE9FeGFtcGxl L2Jpbi9leGFt
cGxlL21hbmFnZXIvREJNYW5hZ2VyJDQuY2xhc3ONUlFPE0EQ/rZXufY8SkVB EVHUM5SaeIbw
YKIxKmBicsgDhvftdTyWXPfI7ZbyAD/KRKPxwR/gjzLOXhtjTIrcZbMzs998 38zs/vz1/QeA
DTzyURNYplM5OM4pHkgtMyrj7Te7Yyva9FEXaB/JExnnUmfxXu+IUutjRqBT lFlMaa6ODcVm
ZGM6IW1NvE85Q1ShE2UsaSoFZuyhMtFTlkqmaj1n2AullX0pcLdzAW79QKC+ VfSpCYHZED4a
ATzMhWiiLeB1HGAuUZreDwc9Kj/IXk4C80mRyvxAlsr5k2DdFSawMl0u2uTC WiPVz8iOO6O+
QLeT/K/7HedzsQFu4baPJYGlqSIhlhEINGSakjHRhoDg4tYuqSGwMK5vmz7K Yf5XmcF+MSxT
eqtcr60/ck/cffKMdnSaF0bpbJfsYdEP8dANcDYtSVp6XSnwcMJ3mi9xK5fG kMEqD93jdQWi
3Xaz54fk8Woi4OhVtp6hxj8QdB9/Qdj9itYn9mq45mLVicu2mGcrZNtFr+NG FV/A4oTlFe8O
2+h+RvgNN//lGLH2acWxOMZNOJx1Byuczc/o0mxnzHZ+IZuHe1XOKu7zXudL fYCoyhdVD/z9
BlBLBwhVKEn1ygEAAFcDAABQSwMEFAAIAAgA7UpmPQAAAAAAAAAAAAAAADAA AABDRE9FeGFt
cGxlL2Jpbi9leGFtcGxlL21hbmFnZXIvREJNYW5hZ2VyJDUuY2xhc3OVVV1T G2UUfg5BFsJS
KG0ptdDSktYQPhYRtJpamyZBYxOgDR/W72XzEhY2u5ndDeClM44Xfo4zzjjj hbded0Yp6Izj
tf/FP+CFet5NGigpQWF28n6c9zzPc855z/vH37/8BmAKJQUthItiRy+VLaGV dFsvCldL3clV
R5EZBa2Eng19S9cs3S5q86sbwvAVtBEijlvUhGGZZU9o3raviS1h+56Wcyqe yJqeL2zhEtr8
ddOLTDJM9licOJvdNG3Tv0W4FG1iN7JMaE06BdEBQpcKBe1hhNCtogM9hFBU GnRnTVvMVUqr
wl3UVy1B6M06hm4t664p57XFVkmMMHg8XGSGifWUpJ6UU+FDScs0NgnXo9lm 2tNyzFTD6Mez
Ci4QLhwLoeIiBgjtumEIz4u8QIg31d8AvG0WioKRZcDjYVzCkILLhIFmdiqu 4CrhNC/khcX5
NB076VRsP4hgRvKOqLiG6wfEpglTzYkFNVLxTUtLuK7+UZ1PVMVIA1rGLoid MEYxrmCMcOYp
h1VMQGNCfIxwLpqpIRyqwriC5wkjh5WK0ppmFBxNuMJzKq4htGRq/n5trIDD O/BYgyiYviMl
pINBxi5X/E5MYkbFi3iJoDDwgu6vE85GD2Pnfde0iyxtCi/LsnuFcPvJemhK It7oSlbKTdxS
8CpXymFHFVNbsHR/zXFLSxkVr+E2QWVaK467uSpsg7kNRp8sCT6SqW/HO3EH KQXJRr8HRirS
mCX0s98E52ZL1HdWTLvgbBOGm2FUjRjpDbypIEO4fIKpirvI8uWt4y1wARGu NAORJvF2zBGG
OLC1DE5smWJ7gufp6ryaxzAWcF/BPULfEXdmQWiZVFpFHouEsFMWdvUIwYqe gN2wfahonpbR
Y+wXdFdeimW8pWCFxRxNNm9nuAumdwxRltdExQPZ1rrL7NXP+7qxuejqBkeL +Bv+D02I0MFF
uOjMs1jC6P8oU0KnONAo22SzEBBaBN/Fq0eNGhSxZVcgJKeXgz6soMDJP1EJ C6n14W0WogTj
pTKnMR/QnTVlRz9V70cTMiUcuLRtWI7HKckJf90pqNiU8ewyXKH7IhG0In4C 1IzNT1XS0j1P
eBjipyXE3zOgnh75wvBT2cpfB8K82smjG2jhfyAcG/0ZauwRTj3kWQtOy7Vg R57+GL08Unks
V8/gbLB+Dn01L3+yV+n3XuwnqHs4v4vBHzBbnQzX157bRex3TOZ+xdSDsbF9 cCN+hBtze4jv
I0HYx+uE8d7cHuZXfkT73Pgulh4ywDW+j3e50EIBqRgTAD5BFz7lnc8wjS+Q wJfcHb5CCp+z
5dfI4hu+Ot8GpKeZPhOrkZajt/FO4HUU7+I9ljiN83gfH7D/LIv4EDqPVtmy Hy3/sLuQAlJg
KNxP+Xf5L7YhiLr0mSBcHI6DuLUFcfougO+rxfAxPNXgCWsnu/i+qYsQioH9 Oswgrf3YgBUk
iILT/PcvUEsHCJroJTlLBAAAHgkAAFBLAwQUAAgACADtSmY9AAAAAAAAAAAA AAAALgAAAENE
T0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIuY2xhc3Od Wgl8VNW5/3+T
Se5kcglZCBgQHCBCEgIjQUETRDAJGg1JJCEI1NLJzA0ZnMwdZyYg3a3WpWhr X1e7PbULdnGX
LKJ92gVb6WLtan1d7GLtotbaWm2t9H/uvbNkMgnR8CP33HPO951vX87No6/d /1UAja5FGlyC
auPywFAsYviHAtHAHiPubz13iz3S4BacbMb3+I1gJBxLGP7hsD8WiCf9fWFj fzcHAk97Z0/v
ps6WNsGCjikxNQvK40bCHI4HjURnYMjoCCcIvKgjG3lif9K/PxzaYyQTfrVO oOI0kKCqY29g
X8A/nAxH/Jvi8cCB1J6e8J5oIDkcNwTn5tuzfsIpxtCAPxgy/UYKtb+ltWur M27eQIQVQTMa
NYLJ3pbu1v5NwWTYjAoWT0CydyBAwIC15re3EHCuA9g1MBAJR40M8KxgxExk vWsJI5GwRsvy
0hY1kqfvVXT12PuIuyQZD0QTAQfBaXnBsrYo4N7Mq0IQN2Kmow5B7SRdWVKI mYlw0oyHjURG
cXpr2+ZN2zp6d5/f1dNL6dgijgSie/w9yXg4uod7ZrWY0UQyEE32BSLDhgcL BKURMxiIDJqJ
ZFPjaWvW0gBSeLa2dXft7ty0pc2DRdznEOKcT4taT7ai4eQGQUFtXZ/A3WKG jGIIluooRJFg
dgel2zk81G/EewP9EUMRpQ7rC8TD6t2ZLFpvofGiALU6lsGncNTrKEeFGjXo qMQcNVqlowpz
NZwmqMxjP174Uav2rdFRDC8JSg6GaZDlwbgRSBrKD8h+Mm5GqM/aKU26xRyy xGs01/VpODPH
s3KN34t1aFJUU7rLZ4K0va5P0Xi2Dg0eL0fn6NgInzI+i0zb9hJq5VwdLVkr vaYZ6Q/QKIro
20aUfrl0BudRUQkjudkMDicUrefr2Ix2S2U7NVzIaDBlMKhZ7cEWSn1TkH6d 8LUGkoH+QMLw
7QsHfAFfKBynC/nofD7HnUj2qlWrvLgAXUog3TT/yeabCTWT7dOWzFYds1Dq AW24RGFvsbF7
0YeLNWwXnHICD9exAzst5032GpdTTFW1+c5SCN+k4xK8WeDl3raoMscQzaZ2 p9L8W6aVTaMH
/YKz8ssmIxBfIBIx9/NAn2kHG99+M36pJabd6FLsGjpmK3b30F+cgJRiWUN4 WhrWeHCp4KQW
FbR8AZuSpJkmxotB+whKpAylXsTAVHEZM0lOquiOBJIDZnxoW7uOBCgwnTa0 nXT2G9HgoGBh
bV1HDkh7erm5BPtwuYb9k/FmNuk4gLeSQeLtGaTxhtqHyAF905cHdfaOZg/e Trj2Left7u3q
6tjd2tbR1ttWgnfi3RreNTnrTQDWcQXew6DDU62JViMRjIdjDJyCjflsIk/u SGefHAzNynyu
0vFeXM0TEnlO8Ne+HnTK4q6dVtune3EN3qc86yAz8nSepWx7HW7Q8X58QDAn EAr1GBHbHlXI
MqIqs6ycHKyMfYwqCf+kzRZxH5yWuDO8uBHvU8d+WMdH8FFBGY/dYg4njMyR dVMeOWFjs0om
sx0fShlzMW7CJzV8goiz9HaAEEM6PoVPM6KZw8l09RE2/d3UaZKaNQJDtKL/ JfktGbekmyQH
DV/CiO8z4pY73oLParg1lVkmwuv4nBVRYmoqElWx+Qs6DuE2qt6MGVHHb3tS 1UJHHuM6kblN
WVOo076k48vqtFJ1GoOis1aC23GnhjsENTNBpeMu3E02zJiVYlR8nhkNNV02 BH39XhzWcB+z
8uuB0zGCUYZzOmJ33EyaQZWCG3IOt4ETqkiM0I+tZ2p3c+G7jts/JTiCBzU8 wNJopsA6vor/
s2N8b3jIsMzEXXtBXZ8S38M6voav094syWbXbo1TCGea6q0E38QjGo4yab4+ SB3fwrft+LjV
NJOpMld5aX4i8lfFJTiG72r4Dl1txkA6vofvUzfc0B03Boykivju2nYlnmP4 gY7H8UNbdap4
Ut4qODUfVebQEPmySrI2q+QvwY/xUw0/YVF+ws06fqaqEi2caBuKJQ8om/+5 jidV9VPBQLIp
GhoIRyIpmhXmX+j4JX7F6oZFTjxgRdy5JCtTF7Y786TjKfxWw2+IavKqjt/h 92Q4alUKc1IY
LD/t6t/LcNGs4Q/MgbksGEEzbvjb7D1KVH/U8Sf8mTxQVKp1ysXmeL0Xz+J5 Dc9NDGTWmo6/
KgSepGm/q3D6Nx0vqthTQCmoAvcf6v2lnJrGIbRup2L1ZR2vWLIcDCQ6yZWS 5b91vKpkOXc4
FkrXmHbBM0SVevAalbrDHPYxefqi5v5UBWOEJkZK32KPEN2ytnjcjPv2D4Yj RrrYYY2Ts1cl
AVX+OOFRVQOEJjNuw+zfy0JukhFNEKoqXeNpT1jxOvyAJXNPMhC8dEsg5vQY TmfnJBP6qXh1
KVEiKbRWGArE65VSKdNkNhmcWdelS7lC4U4kzRiVJZW6zFETbIeHzH3GpkiE KpO5usxzTjIC
capDqnWZLwtsr1Iteg9tmLVMnlootdpcIgvlFE3YiJ001R5dfEKZzyJSW8Hn BuIJVSpMRptZ
J+KlcqomNYL5U+/SZZksZydF1KoL4VS6Q80N4xMK8vaJu3lYnazQpD4nek8H Q3uXBhVypjnF
6exV3VAwtIdE1c+cJK+cJo2arM6J2XZCsUIFDTwZoP3SClKjbZzXZY2crgoV qzlLLwnW5k1s
Oaja7fNDaTjKZq2cqck6Zp7XD63LWcrEPIrJfSTHK81ytibrWfVMRtapftss bJBz6KWxuKFa
yiwe1tW+ERZYeMomde65OQHThk8GY34WL+pkta9VlzbZbHcbTmmmovjQGzr6 ROVVhoJ2kpA+
juo/Xy7QhPFy2bQVTZbMLpQOOoutdqfQIb6B8J5hZhSrdDhjhnXVBDAaQKd0 a9IlWP26gXW5
SLZSlIkJolyRT5TB1Lq/PSMGZnue3qvLNpVsyokmHe4OqGSmVrfrcrHsYNRS pVK61q2dIa8M
ym51y8RCLJ5GzVAZzBjd6W9E8TaKFMczZlilhIlKW/MGVKYyRlC1ZDs9wghe tT0QthIhu2lf
V2dHe2eb6i1kj4Q1GZyQ8XsHaT8hXfbKpYqU4bi60bEncwsHe7a5EPZPSOEz dYmporYwETGM
mFfiktREBfsMWDurtXh8OMYk3nZ50IjZZjKswsTsmN3bMEWyCA0aio39ulwu B+z0sTVLQeed
sFFOiSoRC/vt1G+fzRI8g4jW/TZ5hyZvn8K6pwXW5Z3CZt+jrg+SAZUrz5zC 6pzCkvpqsUYZ
HDUWZHOxXCFXavIeWtsbgdflKnmvoMhWLmP9G6PCI9fQWrL7UbsxobV45DrW aT3D1nXOwHAk
ciBTjCk9HdTlermB8XXqALRZecLM9Ta9iatr1LCqZlWMVEbu65jexsjch5hM Vb1u1YQsCDMO
79sfTg762PiEzCFfqnazuP4IpTpgmv2BuEc+JnAN9HvkJprjYDIZa/L77SWv fFI+rcmncuqH
HLkPmSGDfcWWzXa8/oyw+S+1xdXWTZtnABFcPKMefSYydIpWB3OzJrfk3Etl bWqJBBIJTT4r
mJeL+dzhcCRkkPvP062tfV65VYLq1226fFG+RAEFYgy9IVUqtk9uLRwEDEq3 4nklqdt1uUPu
ZFZweLeQCnprT8TCZK537pySbwsrlX63alKSyWK5Vw5rcp9gyRQA6rdzki4j MsoIbmS+TtVM
dU4WGIPJvTKuy/1yhOmEUaHNJlOwNE9ccOBV8d97IGY0K9E8qMtXhfGzzBHN piQR9A+r0LJ/
SvHYnOYxkun2hwfCqjKaak/6YJL1sHxdk6/Rw/LZtpUI6aS2TX9Dvsko4dRt rQeigaFwMGPb
S0+o4bqdmjySSkgW6q2WT3rlKGo98iiDrT8wnDTZUqlm6Tu6fFe+l/aizP3E OTOOMvk7NZ4n
j+nyA3mcDavqwdujSfv6od0rP5KfaPLjPJdbNjP27YEa2jL5qfyMLmJTaFE2 rRqn1IjTfJbg
afm5Lk/K/xOp4bhO7nX1JKwlcrP8Updfya8Z3x3DHA4mGUwjmw3n4+eGGcnM QTsJnp72G3XZ
2b9XUfg7XX4vT6uOusdITsf0ZDx57g/61MXKPzzyR2paZa5w0qpmGJ+VEfxZ l7/Is0rE1hIr
pumTsL0tlQXDVO2ASeqfJ4ZWM2qou4QXqHX7LqHJKy+qGubvU4R22/wtPOlM QzHELt2jMtIJ
rJ0bgxGq75Rd02uPCS5MWar0lP6AmuUcap2ZtSCuvlyImdtmTkdqs+YSVmfT 06nJy/adQLv1
kVb5l/r0MvVFv7raqbUqWXVYyyB1aSQ8Lg8d23nx2UtGyOPyMm1MuLeZsEPd 1njsb0g1p1FS
031f2Kk+MIirVMfH1MezFNhqNVmui8fpRK3JxsxwjaB52s8WJ/orgxSi09Xl 7LSI8v8FgrfH
Cjqbw+pGqDS9f5XazSzZziorbhmCkdBcC6a4xJ26tmPadqpTzbn3xmIqqIA1 ewm86pM4Ry71
2dd6FkOpr8Qa6/w/C6XWeLbzLHOe5aiwnpWYYz2rMJfP+ZiHkwhfbc3N57+T s94XcrcHp8DH
mcWcqeNT/RTKvVhyt7Wlhr+9fAJ+uLEKp1qzULd7aTCDxCvApfWjWF4vh1Gn fq1Qv1bWH4F/
xyhWH0Zj/QSki8gh0EKk68jjmeTiLFLTxvnNWILzrIN0Gy1Ot2TChhlrnSP7 KCdFxlziX7dj
RcEozjqM9fUj2EAaNmVOqSB+oINS66SEuiiVbgvzXBvawaxGrTxbXVpuTrO1 znoHiuvvw/oR
nLc9VyK9FN62LEKL04RuTCP5FQlVa9eR0At21Fd0jKLzMC4iyosqekawTQ3c I9jF5d1cDowi
eBghzoYqBuzlkLM8yOW9o4gcxhBnh8ZgjmOY8edt43iHCyO4Us0WqL0k9wiu 2UFJXDeC6+3X
G9Xr/4zgQxkmGkk2sIuSfwutJEA7CGIlBinjMDbgUkothn5chr1I4gCuwLX4 VBaz1znMupR3
28zKnZS26j9fuAcfr/jMCG5ecBMq6usr5lcsHMXnaReHMDv1+kVlJveh7ige VI9xfEUwjnvY
1WJsHPcXoN6efkigbOk+rBjHNxixQuN41IX0+1FUp8fjeEz9+pHgJmhk94nc FebozkM4Y+U4
mHcfwtNbGh7GsZtQ0/AQjjW5laCq3eN4RijNv4zgBU40VlP6f99OiH8KPnH8 W8T6L8Xcf8jc
IZSo4XEOlVALLKFutdzvc7SMQxTUbViAL2E57qDn3EkTuwcX4V6KmtrCKK7B Ee54gCsPkseH
yMvDeIxzT+Cb+AUewTP4Nv6KY5bQ6y1DfiFtsC+IiItiv42RvUDcVMNhLJBC KYJblGPVwLOg
5N/YVXCctu3WwLSi4Slg9XHq2mW9Q/29mCdtqYfhshTbraR2FOWW8KSY6Uts BdTZk3XjotuT
Sn8rj1KlfIzILNvfla9IhRLdiFQpcWVks5ZuCPyA5z7OsPVDOuOPGY5+Qv5+ Sv6ewGr8nIHg
SZxN7lvxS1yIX9Nln8oyum6bf4vDQhRUzakg0a+mWTjosNCsyHwEi7I8wnYy x5sOYYFacqYu
craE1DND7RIrAP+B1D7DYPtHiu1PnPsLKX2WrvMcmqibDGXNWZRRG0soZPVX OQ5hcb6piLGq
fkROGpeTaYyyRNChxHrRuNS6LAGH0qMha5Rx1bmWW71EOv7J0P0yQ+IrdNV/ ZYWyVY5lzMYp
slJW8VyX+hbsnH8v39TqujHxd64clzMEK8ekif83rlwxJi1N7jE5r6mwupD2 L1tcqC5sGJce
9RyXPsFdaUKWMchBCmhkbnilEKU0uAoyXS1eLJISLBcdfpltEbbBPjJtsutk p5V71GgXRy4K
ao28SS6hwKsJ/WbZzZlFxPUWCVjx/VCKAdnsRJaD9UekdMeKUemnrdH7KiVE 9yvYcAjzx2Rg
+xyJjEn0qoLQIXib3PRduUwZZ8OI7BuXtwrDy7s/D+/C8qW1txx/fPJKlWPJ FuKriVjusobX
cujsfp9C6whFmE6X0xPijsVcoFKwLIAui1Alp2Ce+DBflqJGarjrVDTIcqzm XKssxoVSz6Jo
BQxpQFRWIiZ+HJA1uEIacaWszRLgwbQAD6YFeNAR4Dwk5f3yAZ7fwKR9o3yQ YroSHkuAdhyY
hcJXSUSXJvGi6hqCPJkySlc30dLEZaHFI3PDzZXy4Ur5aKV8fEw+0VHmfVBu 3qJE29iwcMUR
uXVHpXxuVL6wcEQOjciXCwrG5Cs9DQsbKykkuWdcxgRj8sD2qwpkYZn3luPf o109tP2IHN0x
Kt/qLFjrPoQrVEixEX2biKrcNqZxOeZCU2HB2qJD6GlYWeYdke83jskPm7Rq /huXJwQ8Y1x+
4YIN/JQFXL68bJAIqopSWH5boOxVRXoF9QcXtl9VJFVF5ZXX3nL8y1e5pcrt vuX4uyxmn7EV
yvj2J8F2a+o5K6JXNrmtt7/yTZnP3+6msF5iFNTlRUfL/ZQ8pAnFsh5z5Wyc LOdgsWxEs2zC
Fo77pBW7aLBBOR9hacfVciGulw7cJFvwqHTiCb7/jmvPylZi7mWNsY3Y+6RU tss8uZjBYael
/QFWGVSOo/25osk/5CVSczIj/z/lZapyEc6UVyztB3G//Ev+zdEArpFXOefG 1bSv/9A9C5mq
d8lrnCtiXtzIttANTUrpujfKccdK2uB5DYs1Vp0ul6w6Tg4LmSLsd429N/Af LNFwjEd0vQLv
cQrCnb2BQ3lxNopdBS63E3LarLAEzLkHSx7BrCOQHaOuQpaAfL8rHWRLVd0r /SiSIMrESJWX
FlEsKsvYKhSlo+gNThRtsDPU8okadGmWBss7rJdivqxw9KfRTxem9WcVnhKh DKIoF5MrMQaf
yxi64lghw1kxtcGR/SLMsmQlFlnMmpeQ21llHleJS3dIW+aQVlS/YNQ1KxO4 iyx3vTXFF2Fm
06FtmFOd+rKwftRVlgvyWBZIRT4QO7FmgzydBVLpmjMJhJn5rhyQ1VkgVa65 eUAac0Ea0y2A
yzXP+n2SS3UTTRTMBbB/djvPQed5jfO80X7IFa75rpM3VjMt3e5aWFT8X1BL BwjTC8hqqxQA
AMIuAABQSwMEFAAIAAgAL4lBPQAAAAAAAAAAAAAAABsAAABDRE9FeGFtcGxl L2J1aWxkLnBy
b3BlcnRpZXMrzi8tSk7V01OwVSguStbn5covLSkoLQELJGXmAQWApF5mXnJO aUpqMVDQ1zXE
UdfTz01fJ4aXSwEV6GERK8gpTQeaUJGbw8sFAFBLBwgjePZ6SgAAAG0AAABQ SwMEFAAIAAgA
tIlBPQAAAAAAAAAAAAAAABUAAABDRE9FeGFtcGxlL3BsdWdpbi54bWyVksFO xCAQhu8mvgOZ
u9SNHjyUbaK7ezNe1DvSWUJCoYF2rW8vLWW31cZdOQ3wzT/MP+RFV2lyQOeV NQxW9BYIGmFL
ZSSDt9fdzQMU6+urvEChVe3xxN7R+3hV61YqEyJCSI5dg6YHhm1ctVWmYWCd pKMKbRU9KPz0
sE5cLniD0rqvSWJYqmQgSosdr2qNQxJNJMxRwytk8LR5IdtIT8SzlHM66qXm Aom5uKLQ3HsG
Ca244RId3Tw+xwjO9zLmvIf4XDtkWdWhb6zjHzrQjWtnXfclxsFkx8n8e1JY qlBhOqt48qcZ
EQlebIfgx6NL3PNWh1J7rj1e4FPYjzYs6v02a8QmZsQXLdkRPnF2/MXfUEsH CEfr5EIPAQAA
EwMAAFBLAwQUAAgACABLS2Y9AAAAAAAAAAAAAAAALgAAAENET0V4YW1wbGUv c2VydmVyL2Nv
bmZpZ3VyYXRpb24vY2RvLXNlcnZlci54bWyVlF1vmzAUhq+p1P/AfI9JSTZN CFalyz7VdVuz
Xk/GPgtUBru2aZP9+h0MSbaSpSpICNvve/z42D7Z+bqW4T0YW6kmJ2d0QkJo uBJVs8rJzY/3
0Wty/ub0JONCLcGgEBunJ0HGOAftlAndRkNOHNcklJV10MyFMDmZUP+SUCvj cpJMpq9IPHgN
aGUrNG/ChtXohjWrtYS3i6/XOERQFgSZNkqDcVuNwrlNJeDm5tOChPdMttjp Q461ttXdtLiG
eSsqZ3d6Z1p40nNhWMNLOODyPovgMCxbFD1skNVMa/QunWEOVpthvFSm+q0a x+SgG0171zJZ
/apAXGHzIGiQxY+Ce5Jw/GSimAumHZgheJnsYgjm2FK1hkPIJbMWE2pWtEzo rSj4mn7G72In
IT1re32Zk248LZP0ZxehYBZiPAqiOBsScgjjRRSNWQSYYhNBXYAQIJ7gYprh DlDv8YT03WAc
QW6xrvwssYNa94TJIOAGMGuLQZaTvo0AYRQNexocJS/tncSNPk4MXFbaAm3A zW6pKGjvoh+X
3y8XF/+l3ubXi9Ma6tSzT7c7YAHvkmXPoK03GOsILFc19Zo+r90noUo7vP9M 0i/dyPggGDmA
eufjszD7h9Yo5Z7Bi6XArQwch+4yvBdSYem3D8uqqxlHWPeGNI6l4kyW2JO+ nE2Tjvvg+dn3
94vZtzWCPCgj+r7t+rrb6QtC95/F+8rm157Ff5fNP1BLBwhzyGpMIQIAAGwF AABQSwMEFAAI
AAgAYotiPQAAAAAAAAAAAAAAACsAAABDRE9FeGFtcGxlL3NyYy9leGFtcGxl L2VkaXRvci9E
QkVkaXRvci5qYXZhlVbbTiM5EH1uJP7By8Oog5jmZZ8WIS0kYTfagUQbmHlc me5KYsbdbtnu
BDTi37fKl04nEBK4JL6cKh9XHZdd8/wnnwODZ17WEjIohFX64vjo+EiUtdKW KT3PIJeiNpDl
SkOmm8qKErLRRKu5BmNuVRWM3jGBcoZtshuOH58gtx/AcO2sEVmt1VIUoLOH aqV5XYtqPgWJ
pkJVkzD3vpenGc8h4w6ZjW6har4JY6E6HH/LKwzHIfDPoadQc813RsljC8Gl mptsVNWNHbjO
R/ClgBVohN9rgDZCh1iQwXfXfh9dgf39KWuskJnVvDJhE/fr9vt2ZmWz6Y/7 3ZOwhMqarCU7
pP7h8I+zSRYrUcwBTfoK542wsB86EKaW/GU/kDJ+GGpkodyPpCzsRuJBGA3d aXRy2Aea7twr
YiZc2xEe0uFzDvXu9NHZQ2TmPZJRtxDEElF60WeD67X86ff89PT4iJ2y+4Uw zNcRhi3OjCC7
aM+sYlLxgvGqYIWPPRMV4izGg9kFsFxVmGbkNsPR/mD8LxjVaNQv+T8/Pqqb RylylktuDBtc
e7roH40Kw9bs2a/jo2StdbcAkk2IbRKcRPO0x369uok/x0vQGovMGrRUArmq KV9Cul32WOm/
D7S/MvtXEugw7eSVkZDPWFcOiMHPHoZLq5VhbxLstp6IGUtFgBvLqxwwpHHH I+/BARMDllZK
aaXeRRxykB/CLu6UFbMX72s9Tave8RL8eIaidr2eR7wykAaCfzeAHzs3/qiU BF6hYgZC25c0
ENNgG12xGUdXF4fZ+yhfSalWUHzaj0tAroFboO31UYpaybStJwxPCGozuHWS vWQVrNhaZ2mA
uCjQ//k5Hgrw+l4JKVvZb4mduh25Mymqn1DQgaEZf6TiqhnGv+9N452YEo3B NRHZngkpiYbf
+CPILbPNsS0DJ4Q0TTe1gwnvdNGGJBDZRxchALzAE+83+2y/llgkacIHuu9H qXKmvf3ZQT43
Km9MzC2FdzwYs6vGqq9zuh/QZ8FKsAuFaNs8ti5djUqwSPXdwq4GzSgjbSae LSNybIYn24ak
Zc7mnGhoZfEqQu8dnWzQ95So7f14cbh+Og+HzMVpugAp094Zwwszm4wn/z1M OjFHAOURobhb
55m8eUC8YdwCrrFexHUdNjh+mP7trSKYHN4j3fSkv+AVPv24tVo8NhiNJZcN nGzBMXFv7l8n
mbejsZhsZA5/usnzl5+3xeO5+RJg0LqgrCLQ5cAENBYUQF42IDbfPS5T694l SzfnezGu7Uga
Kpmvk5vmv2FIGynDfJJ8+bLpnxzdCG3s0FPCvQeT9Q6S8OIl/sQndHt7HEVS SfzGSMSCwVmt
6qamkpD77FF8tjIY7TrPSFbIeVBJZzRtt5eERxCx6TdaOyLUuUKSS4haXeNP blWBN8Ib8XQh
d7ja1vwfXUA6xblq3sPwZPAX2NQ1+nSr+8WHCGhyLNxc3uBBazSkJ+jwpNdl 4mLexowyiXvN
VA2YX3Z52d1vNv6nkx2KqwkKo8A4gq4i5KoshW1xjtb0M/zOKN6E+E4+YyX0 gY6vJpoehVsZ
3fk1/ZE0HREkXbpNXVDVcreBlwu9nGKZapFO6R5LnM/YZoxeQyN8h68DT+4A ZryRHx5g7/A1
VnL8+x9QSwcIc6npI9MEAABmDgAAUEsDBBQACAAIAEuJQT0AAAAAAAAAAAAA AAAwAAAAQ0RP
RXhhbXBsZS9zcmMvZXhhbXBsZS9lZGl0b3IvREJFZGl0b3JJbnB1dC5qYXZh jVTBjpswED0H
Kf8w3ROJKu+lt1WkqputlEsTJWmPlQwMwYmxqW2SRlX/vTYQYgiLKnEAPPPm zXszLmh8ogcE
/E3zgiPBhBmpXqbBNGB5IZUBqQ4EY84KjSSWCokqhWE5kg012ct/hHFqUqny dXTE2AwnYJ6S
OJEEFWpZqhjJ63K9bd7HU0rmYlcG842SZ5agGo4/ptTCtvir3Ha9RB0rVtQN D+QINJ+OpDSM
k5r9d/s6HGpprN4q7VaiKN9p0wVtUGmmDY04vnHMUZhK7GnwPJ9PA5jDPmMa ahuAOSyw36XG
BKIrmAxhGdWFwEg4CXmBS8bizEW5U87EycZ6+hEH+zwNijLiLIaYU61h+cVj a903KBINXa+A
uZFwFDX4zcGfaTApFDtTg34hUHfHvIidUUwc2sNmbCb105Dq0AmHMD8O4cwq KhNjJWuthYXP
o3fokryAG5e/NeGaS1PngGbrhYVNLYWmVGIcIZKSIxVWVuu07mUaVWKT4Qng t+xVfqfqQ8Xe
ODuI3q8eUm9niE34wfDST2r3xa6aOw9nsxG9vtG8ZcxSCDuqf1iAKDlvjm88 BF6gkrdjK7Ez
anZ4cLMXVhWbkn0h7rxcBzvUmklRf2yxkNrN1HUlUln/qwk+qve4lK4d729P PdfIiA576/+e
FXu7Vr3Ep/z6lXF8uid/Xp9RKevBHYjZ8hnV2atM+oXv1xBpIwY8gp+jkZXG oxTaCf5VUq7D
5j6Q0dFz137BYgFuv2buX8fX25TffLslMGEFFTHKtLvzHkL3ajIZNXZjw260 hXrxy3ndNpTv
94ZDIJ2dGpqo1Cbd9so+/wBQSwcIflMx8WwCAAAYBwAAUEsDBBQACAAIAEuJ QT0AAAAAAAAA
AAAAAAAyAAAAQ0RPRXhhbXBsZS9zcmMvZXhhbXBsZS9lZGl0b3IvREJMYWJl bFByb3ZpZGVy
LmphdmGtU01LxDAQPbfQ/zDsKd2V+AO8iB8HQVxR8Z5NZ+usaRKStLqI/92k H8qKFgQvZcjM
e533ZsYK+SxqBHwVjVXIsaJg3EmRFzk11rgAxtUcpSLrY7bZclkZfn6xXm92 KMPJr2UojUN+
OVe22wqJvCN8Qef51bXYoLp1pqMK3d8R1+QD6t+Q/iXw2gn7RDICmyi511jk x8tlkcMSei6w
IxkEM8WgUsYDaQhPCMEhQkXeKrEnXfdv0Y479KZ1sbkvMg+71oepdgDvLYLZ 9rHpnQGhK6Dg
oYuKyOgef1zktt0okiCV8B4uzg6UAqVRNagj7NADeEuSstN1ZHPxIcYjUWeo AlFVk0vsZ/NA
jUEJb++zXEmW8cjmCjfGKBQayE8/s+jCng1LATiIOIL74JKVdsyXSUaWOQyt 07AVyqdhZfP9
OGxMh/8hr98OqDH0wbdmD3vTrVKzrY3KItkDvoZZLsbGYymnNMfzNH5W8oi/ EU00O9VnqwWw
brFi7PMMvyDxOu+wo7RKA+5x2CtWrhbl4rPX+PkAUEsHCFt8lBWTAQAA+gMA AFBLAwQUAAgA
CAA2XGI9AAAAAAAAAAAAAAAAOAAAAENET0V4YW1wbGUvc3JjL2V4YW1wbGUv ZWRpdG9yL0RC
VHJlZUNvbnRlbnRQcm92aWRlci5qYXZhnVO9btswEJ4lwO9w2SijoB8gKNDG 8ZDJQRB0KTrQ
1MliSvEEknJqBHn3UjQlQ7HdGIU4UKeP9/3w1Ar5W2wR8I9oWo0cS+XJ3s7y Wa6alqwHsluO
UqvWha9NxWVJfHm/Xm9eUPrbizCUZJGv/gV7qYREvlP4itbxh2eLuCTj0fhH SztVor3mXH/s
R9xfgx6R/bOYz2c5zOG5Vg78KT1oEiWUeyMaJYXWe6Box0FlqQFfI4QkntBR ZyVCRTbW7u9W
McXYkvcMi1nedhutJEgtnAuIM2ZB9TfQhIqDc2HA2yzPjm7hYAm+gum0Do6y FDZYIp+2x4+H
9W29Q2tDt7BPinakgkflWnLICnh775O5CFSm7fyyFmaLJZsI+QKJk3T50KPG gsHXWCiig8yH
tPkonh0dFbvhcrJs4oElZ8XQqYe8X3R0AP/8BVv0q5QoS82i/lRMeiz6zpoe vKyVLi0aNkEl
ss+5xuOJqxXh5QOZqoBN6kGR88JIpArG3yqBs8XiMILD2LEwVIHoMH5SyBqL iEsW2BjUlJoP
o+RYwT19t1bsWfSVjA0NhmH5xG6v4TEyDFbxxCSe2ltNzZ2IxolcoQza/1O5 IdIoDNTCfbyT
q4Se3EMivrmkNUWr3Kpp/floK6EdJtVh/QVQSwcI99Fp1ugBAAB4BQAAUEsD BBQACAAIAAhL
Zj0AAAAAAAAAAAAAAAA6AAAAQ0RPRXhhbXBsZS9zcmMvZXhhbXBsZS9tYW5h Z2VyL0NET1Jl
cG9zaXRvcmllc01hbmFnZXIuamF2YbVaW2/bRhZ+lgH/h1m/LJUKNDbok70u ktgpoiK2gzgt
UCwWxYgcWeNQJDGk5LpF/vueM/cZXkQF2BeZl3O/fHNm6JpmX+kjI+xPuq0L lm5pCbfi8vTk
9IRv60q05InuabpreZF+oM3mltaXPa/UY/uiEo8pywpeNyxl23Wa5VWaVdtt VaaC7XnD4eL6
5v6zvr6m2YZdfi/3r2DAOHPJ2h+fkOUOL46gf2CNtK8q1/xxJ2gLN+OsDRN7 JhQvXr0T1XMj
A3oE02ELNcfyM6urhreVeDmW/pOo9jyfaNnyAVgOZEiTSsovG8Fo/rHK6DQ/ 8hU6f/NusuPA
sKV1zcvHdHmrLh5ayA97nBaILdumt+9vpbGTlYZlND1VjanYvnL6mWYT0lfz Tgcsy5aJkhZe
J9za7j0gy6RVi5hcRWOsDy9lthFVyf8askDF70APKiKaZawGqenyrb4ao86q smSZJL82l2P0
UD1jtWaJljfv3ua0bscdUoRaMWRhvLMsz+Z1+uH1BPFP+236y2+3h8xtszr9 cv3pEJlEa4hX
S3mJkGOujuRbqlLLLf9BXrZnZZsuP/KmZVPoC75m2UsGaxLw6MsjmCzPe9Q7 IcxD/DowASek
7ilfZX+mv8DvDW3pQ7UTGZNkpyfnr16dnpBX5MuGN0QvqCSjJVkxsmtYTtqK ZICPLSNY5g0A
BD6i5QsRbFvBY2hpuDSNRZI9pwTySzJbY/NUqliWYA+UGvLXquxItV4XkBEt e0HaDXNWKLWV
II+sJZQUiNCgOSeN694c9NQvIEeqQHbPFqQVrN2JsiG8JbyEdNIciEFazgVY pxWjSYpXuuRE
pDo4zioIE10VzHfCD0wDpSPATCuCM3BrtYNclMUL4WvUA5YJcKzEa6mgoVtG NlXTKn13YMQF
yavyny1ZQw7BfUxDUTUsiNDzhpVkzUvebCAQ3IuvoqVFQaoaKjj3stFIHeen J/VuVfAMSCkE
QAKzM1mDM/n79GSm6WDJgoVLWnmJTwUYmbVYIYKWDYfCJbC4/VuRLUgXc38K gjJJhsHTn4jB
WM3H91gajsu2qpc7r3t7OOKhhzTRCGR5OvChSd39FSl3RaE7aiZbagZpvNZ9 Q0r2HLYJ+G+S
qEjf1FTQrWf8HVSEfHXuMtCfo8RLzFwmbNZCM6d4D5bpfOHjhrW/1skcffsm n2i5QTt184bt
5+6MuhIM1Op6WLwmvArcTkFYgrw/nP0hG/psrq07P8fuKCuf95m3G1nxjxyQ UepEUqBLfA0q
/toaEKSRI0QD+S6wS5F5rkmftDloj2CPWENCAgmMPrqGxsSmNM9N4SXdWpTB 9+gxIvWu9Sgx
QJj8ZL7wtGi+AOhTY1ES06nszhT0eVJc5m2NfoK3CEbolF0x48LbVxxAV1UP PJVhjkdnmPUK
Rhum6ivwEPsDOkDvyMYQQjPbZh/itLgQa7OB1py9K2tiKmX25h76WACGq1uH R9LjqrxhJsZ5
4lZ2Py9G0ixoosR339GEecfFZs+SJPE2OnNPtKsEnf2ZF5nv4f6m/qo/31zb ee2ikC2ohFkX
7YJBLFXs9plOiZ2c01qVmCOIBCp6PQ5OpPa3x0eyuK3QRMaBpuuh1fGsvZ7q C6gekP9/di9k
7ffsn13l6872aA7C/KyLKD6gmzLT5TXvAZuHDcxBefVc6slMAoY/pQSC+1Go rTwQwoUgWLfJ
P8K1IHiZ5raddZGG7906biH0fvUEgPCf/0rL3gpBJYa6x7Yf3bvDQGBlxWvj nhY71iTztFXv
jZWhFuByMDDAos2H4ZEkyljLQy4iq41ZACUGV+eGYp7KSXJYqregXrggGZFh 63jhH1yxvGgA
GxUDy4lJ0/gq9G1gHhufMFThyaFf1btfmMgB9bpidkPS2YwsSKN2E7tG76Ww +3m5Y+S5El+x
q+TgLod/1KTkeCpgj5HzRo/sIHUtqu3A/kSa6WwnGyq3ISvWT68UIuUCjOCF IusYYHxEwpyc
3f5+9/b2vZ7XgoF1S3E+wnVGqa/WY3rfaPzo6JN7OCwrOYbINOUx93mwYeiZ OTvjnIYwZ6Mu
S9gxgXr9Fuq7ZNKBK9+bH4iZTx2uX7t10uxbfR9Q0CLen+K+09ZYX1h6pmf/ cMqXJezM6lMk
OOEvfC9lZ6hTUMRLwRwf3iXWZU3ZDaX0HO+BM+m+nweHv3oAuFchuUbhiVoK rKKFupfG6Gts
YfPY82beGUugfyx0xSUSF1IwPMrB2oVlQcy6CyuWAbruyumCY0zxixZjYJGF EK8eVbj9MMcF
NkeOv/GHkPAshuTuUs2t4XuJZsjm6FIcxz9/TM7wbOdi8/riD3y3Aug7P4Pi DVKseOOjZ7KN
7q+IPdbWKf0AePsXhqaIeJNW7CCg+GtMc8ePJF+ZKz2+v7aDtyPuHkECX8/D KxKY1KVIXFCM
eJ2x2B2VlsjthTN30WuBEjphKQk6FcA121gcNSdpPjDEYIArG4IH1DfXpwIG ZWQ20wB4TZV3
oNf2CqgDtSPHC+OIrVBLuUGHVwh/9QtBvh/KgyhNwvUADXvgL0BzPywLErwK nR88uhgBXzUl
jbP0QmM/aaKPhUY+tAzvVNVI/B2fcEwIe145bTP3acKcHFbYimaTBghqCboQ 6ifBHqe4WHe/
ARER3V+Z/W4yzDSPvqraWAdUid39RjoQQOWn3CT+tpve3d9/8uweDKS8U7Dp NqNj4XUyFa+0
wcbRBtqa7Kg+B8WbRLXcRx9GIXLeC4rsVcXY3cBF+xmhRLfiRaYF9h7Jv+bx pkcR0WcwGUpU
eW4WCquwCb+/heeRx1fuz5U9BsXQeA2Oc8SGZV8Bjmgbfx/As/w95QUe6Es0 iE4wIbfhptgK
v/SPIeNNpze7eN2jPzH0jSyz7hFzduRxy8x97or3uCMHJVl41DB8MhETTjmU iHkGMMWbyoJe
MGiCoQoPs+Igl7ku4J3AkGsANGM3JNmqM7aP9LO5O66tbfPph+Od3SHtae8e l4Nmdf/goTtW
vzVbY3gmm+p/UEsHCENvfc3PCAAANSMAAFBLAwQUAAgACADAkWI9AAAAAAAA AAAAAAAALQAA
AENET0V4YW1wbGUvc3JjL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIuamF2 YdVa62/byBH/
rAD+H/b04UDFLm33BTSOD6ez5J4AxzJsuUFxCIwVubKYUFx1ubTj9vy/d2bf pEhJaa8feg9Z
ImdmZ2fn8Zsh1zT5Qh8ZYV/pap2zeEUL+CnODt4cvMlWay4k+UyfaFzJLI+H QtCXq6yUZy03
b2mR8lXIyMVjzJI8W5csZqtFnKQ8TvhqxYv4YjS9UN9u2ZqXmeTi5WwfvhVP WR6PP1zew5Lb
OZhgJa9EwnCxW/N9O0vB5B8/I/k1ftm9hKO/Y2WZ8eLbqC94scgeK0HlTlYp aFHSBAlRwMz/
3M6nDgYYdm9FU4KRMzn+mrD1dtks4YLF44ucluVOqun8M0vkTrIb7Yk76fBz T1q1KcXQbYDP
CwouYmw73GLTGuFkxnn+ExUfXLi0cOgD3+FLmijhRQFG4iKeXNiv2+hlso5n Fze7xCoDgGxJ
s4IJOF/z7Rv5JnqbqeNv5y2fZcyeWCHL+AOvSjbG7/uRYlJh+wi+YzlTR7Cf cEe+e4HnLH1k
wAJBoFJSh3eFpPVUGFJVWTwZp5jXJsW62kJ0t6SCpZMVmLcjkoDqhgo5KXZG JlLmVC64WN1P
OkmylMWT0bjz/hoWi/+WsWdcNUzntkQwta949FN9g/jv8du3B2/IW4LsBPQg qpxkxSORS0ZS
KumcloxApSCZLInN0GWMXMcHb9bVPM8SkmBeIaOfTHTBynB2aUmsVuRfB296 a5E9UclIKSGB
JgH15PpuNry+GJNzUlR5fkaAOKDHQ/MrX9MVM8foKFyZex9Ujh88T41WeRcx 8QshOZq7JNJB
NF0scgiibYQ5L2v3AxJfP0hp/pp91omCGkGC8tFO7KpwxkprRgHX7HfPFPAt soLm1vx3UuAx
j8aXw/ur2cPP07sZcPVzntB8yUv57vcnf/hz/2xP9tvxzfThevgBz7Bv/M6o 2VeuhnooZ+uB
t10IhgLRxQx8UdePcTHtUM45ooHynV5ZrfEH6tM7PiYF96dLnpesQL2EBJWQ wN8CO4Bjt/uH
kRZ4n1xmyldelcY/Tp+YEBB9Xq0nnqUkUdqjW2N6FTyPXAYiEIuQxozO++tp ndroi18jLeqI
nAy0AXt6Xe1jpVFeX8PaNqfGPNuVL5m85ElVWrtuqBB7Ci+teXLaNUsiOeFr 2BQkDhUC6khp
AuLUvTCHNE84MKXbklZpMzTtMaofUX+oFxjZ7PSUUUJJmgngIsBm4xbrfhz3 jdjawqIqcDmi
btgVrcBoQfOSaQOjAeDjrF0xNNYMkl3Ux2UNEOgPtlCPCzrPWRpJUTF3sK1p Zq9N+50Smuf8
GWOSaznkmYsv/9n+rXKt22+o6U1gbrSboYWr1RRhIm1Y4EJ5mPcuq+62DZr9 Kal2dy07C1dF
1VR5H7EyEdkakmzkq3QMOOIjGHbOimQZDfBniAj0lSZ7DTQAOPvrw2w6vXoY ja/Gs/Fg0K6D
NY9zRpNShilGsUFJJDcwKW4PZpqmG4gqQqNuXrXWCjNH3aYaRWlOUKyO7Ahz 5q7WqYtqvYsV
EAR232udEVvQKv8tloMP/cNYEIxCUg4LMshaWfLFGdHlM42Yyk6b1iCwsmf9 ym5brpB+pJS4
QB0iD8CDrWULEm0q4A5B9aQV7pX8AHXCcuEegUal39KYjwSVz1AFV7BIzfgU t34egDwQsmP5
SZGyr5Fx4Z62MPwjxYtTBrVRRqXWrgpoYq11S1nSEIIbYv1dZ4Iago2czkde fVTuhsploFIP
sHOMCmjeyF7u9bZGNfrTE3MXP2ZFyp/DWzcQzNHgyIsL9A2u9qFZt0D8CeAw Nu9j/Vsr1Hea
vpKEymRJoo32gbDTQc2gs+loSoaV5L97RIejeMKaeQ4I7oulZKcxoLdC3kno vwFgJi77mcCw
f3YHpXHY56LpqWRP3vt1G6eNzQbOGNYwxCjsQwAypBpZZIsFQ4wUQCz6RLMc U0Cs5fwIKIqu
dG00JQiPlGDNQemJwTM7C+kRUXm4xlNmeIoNxOFxjoHNGug0KuwcEBujxYZi DjmqiLH9Am47
aAmQ4u4FUs0q5pXUJ5xjgfR7MIYrmYAzUSAgTIAq0CH87QJ4GVNNhzY937eg WobANDVR2EEc
bTYEeuFXwtB6beLAfN8mKtgIKG2FJVwg/stflFCW2j3Z+9/plqixJUgMBnuq zCG45AkA+oFC
NdmKgX0jP+CJr6cPFz8Pr6/HVw+zyYfx9H42MD1WmObUcatJIWseW6/e2Xkt wA7+jg3ScIoI
6t1yLm3GBhUhkdwItmAQ9dHpyYnhsbrA3qH5QPRNJIPOQnttemTdF9xjpWjR SFsXIufadOTX
X8l2jeAKtkQ4yIFfWTlereULpGKbuqByDot0keW5ZwqqtNO9ZFRAKgN3hHaJ A3LyEa5IsH5E
ZkxJGJ9/Ju++RbNaeVXsWQFtWZEwvgjrpE+5jVKpv5yTKCRGQY0yaLCG44Co RKhRmtut0MIV
XNQZb4D2kut2O6hqvkiHPPb2a9OoWzCSut+WTv7OKwKwFdzo2eYvOIlaZiHf 9Vviu03YWAg4
tOdlhqDL5CmcMrVLa2k8O9rLpBKqBNjMGnfk33oHoBVteH4zRYQepfhbwjIY tGhz75FyarI2
R0JeTjjQacgKbsUQImsrrn0GpEVuuptgK/7Ehnlu2L1TJVCd7LgF/9+GsRsn da9I9eHojg0S
os6MZmqAI6Sug+payJ+Ys1jdIrv7p96+PXnvW7rWhu93qrEpvEOLFn23qBFQ t0WNyfV6PtQV
G/UZkt5I43kJWT2iQ0FKwpHuXSaZh8K8ADpTQetcxoGAV2WpzX233m/stkET 2te6X224qMAN
Vf2CdRUEROCOj4DaCzUm1Q8wTS3EPNQxPoJWVC5DJFVDlTgm1R/PSya0y3vp JCtN9aoxBQQF
xCGAzCafaUINl2CyEoUBNQFgqx9kMGRuYCozqEU1j+zU1i9mT7v5vIi4Z0lw 6rWnULF2F3fN
DiLdsyeMctTJ3HBP06AWMJxpek7HoynN47GddB6P2ZPiqKVl16VeX/asR8oC NRTsQVoAgzue
9jpiarJ++MzZmKSNz1vHX8PwrWmov3VQ+uftCgwER7cL0RvPqUtE77Cu8V+H T1Xq2ClfoEMW
vMj+CS6qniDUyGxDpReojSf/T+Kp0fLsFVMI/kwoqPm4f+bhSfUx1Uo22L39 +U604cDPNJNw
OMqaEexyDp6seo4llRr5I3wLD2fQ1Tp+BFG4C0TW0+uryfXYN41AQiT0QqDd ibqgUVwITxTi
drsKnVRNi6RKB4hhWl4jidXtWK+q4ev33+sF35O/nJyceDzmhkqzJU4BYgP+ 9C9s2nLG1kEv
1FNSDs8JXDJ9hh2xTKAZEKJaA6QNpiwO8e87YmFd85XXLiT3m5lqFxTcNSHQ 3a0/Zpsv6qCx
TcpdpSD4AghffGfQ70iu1OWRYOwXBsCeKXdjs91Z9xLy6v8qUdagU1tDq4+l zW5IZx+tB/lJ
YQyhXsZyrWJ9ZGNftSHrL48QheZtKmMAexPkcw4Irn9E+os5fi6lXL87PjaX tTj9CtAvnwCb
26ej5tLpySfTDcI5RRj02fnJGcnen+Ln4aEH2uUv2adNNZSUCDSEldX3/mFm pmbmj/GzBt9Q
QgKdV+D2WjKwUylB//DFoZjZx7QYJeN6O2wGkOa1KYsfRi9QD7LEmQc0s+3u rTE2dibaBvqK
64etBYTKeUS8P4UPb4LGOACfHIe9otqXc4j+MYUkAj/7h8L123YBjibm7/8E aQ7++hV6drqB
04lz4l6JMsKVqVD9uGBfJeQySHqDTzbrAU8McSEj9UWfy8DarUrA2Wl+CWIg OiNl6wHYHGhB
QaiQkCtPTsgh4Vac0E8CgskOAnGgb6S6LrfXL6mp8uLd2ifzmukU6bYMNuJQ 7PzUwWTzxntw
PpF3jyLe2bTXlcJfW8DRJbezYdUTwJecSVgvZWX2WJA1GJOJ4khnuRWTS47T H8wuJXJoIVWR
/aNibuakEQvQq5dojvT8UIMFuIhjPMZSllqopMUdNJ6mb7xTg08hzQJh8+xf dqh3z+ErOOpB
S72Dew3SpCVtA4/6HHTvv6TFI8RGlClAJnA3A1MC/NgmPPzmnszgHCVeaGF7 D24cUOh2rnZX
NUprUlfT9nC03UOvmmjnwvtACPgf/vs3UEsHCGLKkSomDAAA+SsAAFBLAQIU ABQACAAIAJGI
QT0Y5ERr0AAAAHgBAAAVAAAAAAAAAAAAAAAAAAAAAABDRE9FeGFtcGxlLy5j bGFzc3BhdGhQ
SwECFAAUAAgACACRiEE9Z5k9OOkAAACfAgAAEwAAAAAAAAAAAAAAAAATAQAA Q0RPRXhhbXBs
ZS8ucHJvamVjdFBLAQIUABQACAAIAJGIQT1nwjJCrgAAAIwBAAAvAAAAAAAA AAAAAAAAAD0C
AABDRE9FeGFtcGxlLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5w cmVmc1BLAQIU
ABQACAAIAClLZj2u+5XuEwEAAFkDAAAfAAAAAAAAAAAAAAAAAEgDAABDRE9F eGFtcGxlL01F
VEEtSU5GL01BTklGRVNULk1GUEsBAhQAFAAIAAgA7UpmPfJU326TBAAA4gkA AC4AAAAAAAAA
AAAAAAAAqAQAAENET0V4YW1wbGUvYmluL2V4YW1wbGUvZWRpdG9yL0RCRWRp dG9yJDEuY2xh
c3NQSwECFAAUAAgACADtSmY926DXcHUFAABtDAAALAAAAAAAAAAAAAAAAACX CQAAQ0RPRXhh
bXBsZS9iaW4vZXhhbXBsZS9lZGl0b3IvREJFZGl0b3IuY2xhc3NQSwECFAAU AAgACADtSmY9
K0TacScEAACiCQAAMQAAAAAAAAAAAAAAAABmDwAAQ0RPRXhhbXBsZS9iaW4v ZXhhbXBsZS9l
ZGl0b3IvREJFZGl0b3JJbnB1dC5jbGFzc1BLAQIUABQACAAIAO1KZj3vDFNn IwMAACIHAAAz
AAAAAAAAAAAAAAAAAOwTAABDRE9FeGFtcGxlL2Jpbi9leGFtcGxlL2VkaXRv ci9EQkxhYmVs
UHJvdmlkZXIuY2xhc3NQSwECFAAUAAgACADtSmY9AYrZpE8DAAA1BwAAOQAA AAAAAAAAAAAA
AABwFwAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9lZGl0b3IvREJUcmVlQ29u dGVudFByb3Zp
ZGVyLmNsYXNzUEsBAhQAFAAIAAgACEtmPZgPOoaJAgAA3gQAAD0AAAAAAAAA AAAAAAAAJhsA
AENET0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9DRE9SZXBvc2l0b3Jp ZXNNYW5hZ2Vy
JDEuY2xhc3NQSwECFAAUAAgACAAIS2Y90wGQg+wBAADPAwAAPQAAAAAAAAAA AAAAAAAaHgAA
Q0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9tYW5hZ2VyL0NET1JlcG9zaXRvcmll c01hbmFnZXIk
Mi5jbGFzc1BLAQIUABQACAAIAAhLZj0L1K33xgMAAK0JAAA9AAAAAAAAAAAA AAAAAHEgAABD
RE9FeGFtcGxlL2Jpbi9leGFtcGxlL21hbmFnZXIvQ0RPUmVwb3NpdG9yaWVz TWFuYWdlciQz
LmNsYXNzUEsBAhQAFAAIAAgACEtmPURkVTbyCwAAfR4AADsAAAAAAAAAAAAA AAAAoiQAAENE
T0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9DRE9SZXBvc2l0b3JpZXNN YW5hZ2VyLmNs
YXNzUEsBAhQAFAAIAAgA7UpmPb1dqK2rAQAA2wIAADAAAAAAAAAAAAAAAAAA /TAAAENET0V4
YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFnZXIkMS5jbGFzc1BL AQIUABQACAAI
AO1KZj0PNJBMqQEAANsCAAAwAAAAAAAAAAAAAAAAAAYzAABDRE9FeGFtcGxl L2Jpbi9leGFt
cGxlL21hbmFnZXIvREJNYW5hZ2VyJDIuY2xhc3NQSwECFAAUAAgACADtSmY9 dUFf0KgBAADZ
AgAAMAAAAAAAAAAAAAAAAAANNQAAQ0RPRXhhbXBsZS9iaW4vZXhhbXBsZS9t YW5hZ2VyL0RC
TWFuYWdlciQzLmNsYXNzUEsBAhQAFAAIAAgA7UpmPVUoSfXKAQAAVwMAADAA AAAAAAAAAAAA
AAAAEzcAAENET0V4YW1wbGUvYmluL2V4YW1wbGUvbWFuYWdlci9EQk1hbmFn ZXIkNC5jbGFz
c1BLAQIUABQACAAIAO1KZj2a6CU5SwQAAB4JAAAwAAAAAAAAAAAAAAAAADs5 AABDRE9FeGFt
cGxlL2Jpbi9leGFtcGxlL21hbmFnZXIvREJNYW5hZ2VyJDUuY2xhc3NQSwEC FAAUAAgACADt
SmY90wvIaqsUAADCLgAALgAAAAAAAAAAAAAAAADkPQAAQ0RPRXhhbXBsZS9i aW4vZXhhbXBs
ZS9tYW5hZ2VyL0RCTWFuYWdlci5jbGFzc1BLAQIUABQACAAIAC+JQT0jePZ6 SgAAAG0AAAAb
AAAAAAAAAAAAAAAAAOtSAABDRE9FeGFtcGxlL2J1aWxkLnByb3BlcnRpZXNQ SwECFAAUAAgA


Best regards,

Guillaume
Re: [CDO] Create an offline Server [message #637697 is a reply to message #637686] Mon, 08 November 2010 11:46 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 08.11.2010 11:56, schrieb Guillaume P.:
> It's perhaps a configuration error on my part, but what I see is the file directly written at the end of your message (it's only text, no link to a downloadable file)... I don't see any link or button to import the file.
> I tried to make a base64 decode on the text at the end of your message, but I have an error... like if a part were missing. :?
> Just to be sure, I copy bellow the text I'm seeing (I'm under Windows, and my colleague which is under Linux sees the same thing):
I've sent you another copy to your private email...

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: [CDO] Create an offline Server [message #638231 is a reply to message #637697] Wed, 10 November 2010 15:18 Go to previous messageGo to next message
Guillaume P. is currently offline Guillaume P.Friend
Messages: 69
Registered: June 2010
Location: Toulouse, France
Member
Thank you, I received it correctly... But I have now the following exception while calling LifecycleUtil.activate(repository)

Quote:
java.lang.IllegalStateException: BranchingSupport of MappingStrategy and Store do not match. Please check configuration.
at org.eclipse.net4j.util.CheckUtil.checkState(CheckUtil.java:5 0)
at org.eclipse.net4j.util.lifecycle.Lifecycle.checkState(Lifecy cle.java:215)
at org.eclipse.emf.cdo.server.internal.db.DBStore.doBeforeActiv ate(DBStore.java:452)
at org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycl e.java:69)
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:98)
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:88)
at org.eclipse.emf.cdo.internal.server.Repository.doActivate(Re pository.java:1271)
at org.eclipse.emf.cdo.internal.server.syncing.SynchronizableRe pository.doActivate(SynchronizableRepository.java:343)
at org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycl e.java:72)
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:98)
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:88)
at example.manager.CDORepositoriesManager.getRepository(CDORepo sitoriesManager.java:80)
at example.manager.DBManager.openOfflineSession(DBManager.java: 288)
at example.manager.DBManager.connectDatabase(DBManager.java:168 )
at example.manager.DBManager.access$0(DBManager.java:162)
at example.manager.DBManager$2.run(DBManager.java:101)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498 )
at org.eclipse.jface.action.ActionContributionItem.handleWidget Selection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(Act ionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$6.handleEven t(ActionContributionItem.java:452)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:24 38)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)


Do you understand where the problem could be ?...

Regards,

Guillaume
Re: [CDO] Create an offline Server [message #639158 is a reply to message #638231] Mon, 15 November 2010 12:59 Go to previous messageGo to next message
Markus Surudo is currently offline Markus SurudoFriend
Messages: 7
Registered: September 2010
Junior Member
Hallo Eike,

I tried to continue setting up my offline server today. I updated all CDO sources, getting all changes. If I try to start my OfflineServer.Master now, I get an exception:

Exception in thread "main" java.lang.IllegalStateException: range.size() != metaIDRange.size()
at org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistry Impl$MetaInstanceMapperImpl.mapMetaInstances(CDOPackageRegis tryImpl.java:783)
at org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistry Impl$MetaInstanceMapperImpl.lookupMetaInstanceID(CDOPackageR egistryImpl.java:739)
at org.eclipse.emf.cdo.server.internal.db.MetaDataManager.getMe taID(MetaDataManager.java:76)
at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappi ngStrategy.getTableName(AbstractMappingStrategy.java:299)
at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ab stractHorizontalClassMapping.initTable(AbstractHorizontalCla ssMapping.java:114)
at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ab stractHorizontalClassMapping. <init>(AbstractHorizontalClassMapping.java:107)
at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ho rizontalBranchingClassMapping. <init>(HorizontalBranchingClassMapping.java:206)
at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ho rizontalBranchingMappingStrategy.doCreateClassMapping(Horizo ntalBranchingMappingStrategy.java:60)
at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappi ngStrategy.createClassMapping(AbstractMappingStrategy.java:4 59)
at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappi ngStrategy.getClassMapping(AbstractMappingStrategy.java:501)
at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ab stractHorizontalMappingStrategy.queryResources(AbstractHoriz ontalMappingStrategy.java:101)
at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.query Resources(DBStoreAccessor.java:283)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.readResourceID( StoreAccessor.java:130)
at org.eclipse.emf.cdo.internal.server.Repository.loadRootResou rce(Repository.java:1414)
at org.eclipse.emf.cdo.internal.server.Repository.doActivate(Re pository.java:1292)
at org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycl e.java:72)
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:98)
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:88)
at org.eclipse.emf.cdo.server.CDOServerUtil.addRepository(CDOSe rverUtil.java:189)
at org.eclipse.emf.cdo.examples.server.OfflineExample.init(Offl ineExample.java:109)
at org.eclipse.emf.cdo.examples.server.OfflineExample$Master.ma in(OfflineExample.java:311)


All my files are up to date (according to the CVS) and there are no changes on my side.

The two values are:

range.size() = 46
metaIDRange.size() = 43

Any idea what's wrong?

Best Regards,

Markus Surudo
Re: [CDO] Create an offline Server [message #639160 is a reply to message #639158] Mon, 15 November 2010 13:03 Go to previous messageGo to next message
Markus Surudo is currently offline Markus SurudoFriend
Messages: 7
Registered: September 2010
Junior Member
Nevermind, there was something wrong with my saved repository...
Re: [CDO] Create an offline Server [message #639190 is a reply to message #639158] Mon, 15 November 2010 15:07 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Markus,

In order to support DB2 databases (which do not support comparison operation on LONG VARCHAR columns) we had to explicitely set the column type of CDOResourceNode::name to VARCHAR(255). We did this with an EAnnotation in the Eresource model and thereby increased the total model size. Your existing repository recognized that and requires you to recreate the backend.

Sorry for the inconvenience. If you wait one or two days you may profit from the new Backup/Restore feature that I'm writing right now: 330235: Backup/Restore Functionality
https://bugs.eclipse.org/bugs/show_bug.cgi?id=330235

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper




Am 15.11.2010 13:59, schrieb Markus Surudo:
> Hallo Eike,
>
> I tried to continue setting up my offline server today. I updated all CDO sources, getting all changes. If I try to start my OfflineServer.Master now, I get an exception:
>
> Exception in thread "main" java.lang.IllegalStateException: range.size() != metaIDRange.size()
> at org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistry Impl$MetaInstanceMapperImpl.mapMetaInstances(CDOPackageRegis tryImpl.java:783)
> at org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistry Impl$MetaInstanceMapperImpl.lookupMetaInstanceID(CDOPackageR egistryImpl.java:739)
> at org.eclipse.emf.cdo.server.internal.db.MetaDataManager.getMe taID(MetaDataManager.java:76)
> at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappi ngStrategy.getTableName(AbstractMappingStrategy.java:299)
> at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ab stractHorizontalClassMapping.initTable(AbstractHorizontalCla ssMapping.java:114)
> at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ab stractHorizontalClassMapping. <init>(AbstractHorizontalClassMapping.java:107)
> at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ho rizontalBranchingClassMapping. <init>(HorizontalBranchingClassMapping.java:206)
> at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ho rizontalBranchingMappingStrategy.doCreateClassMapping(Horizo ntalBranchingMappingStrategy.java:60)
> at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappi ngStrategy.createClassMapping(AbstractMappingStrategy.java:4 59)
> at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappi ngStrategy.getClassMapping(AbstractMappingStrategy.java:501)
> at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.Ab stractHorizontalMappingStrategy.queryResources(AbstractHoriz ontalMappingStrategy.java:101)
> at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.query Resources(DBStoreAccessor.java:283)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.readResourceID( StoreAccessor.java:130)
> at org.eclipse.emf.cdo.internal.server.Repository.loadRootResou rce(Repository.java:1414)
> at org.eclipse.emf.cdo.internal.server.Repository.doActivate(Re pository.java:1292)
> at org.eclipse.net4j.util.lifecycle.Lifecycle.activate(Lifecycl e.java:72)
> at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:98)
> at org.eclipse.net4j.util.lifecycle.LifecycleUtil.activate(Life cycleUtil.java:88)
> at org.eclipse.emf.cdo.server.CDOServerUtil.addRepository(CDOSe rverUtil.java:189)
> at org.eclipse.emf.cdo.examples.server.OfflineExample.init(Offl ineExample.java:109)
> at org.eclipse.emf.cdo.examples.server.OfflineExample$Master.ma in(OfflineExample.java:311)
>
>
> All my files are up to date (according to the CVS) and there are no changes on my side.
>
> The two values are:
>
> range.size() = 46
> metaIDRange.size() = 43
>
> Any idea what's wrong?
>
> Best Regards,
>
> Markus Surudo


Re: [CDO] Create an offline Server [message #639333 is a reply to message #639190] Tue, 16 November 2010 07:41 Go to previous messageGo to next message
Markus Surudo is currently offline Markus SurudoFriend
Messages: 7
Registered: September 2010
Junior Member
Hi Eike,

I'm still evaluating CDO so my repository has no productive data yet.

Unfortunately I still have problems with the example. When I use the server.product-example I can import my core-file and save the data in the repository without any problems.
If I try to do this in the offline-example everything is fine until I try to save my changes (doesn't matter if I try to conenct to the clone on/offline or the master, always the same Problem).

I get following exception:

org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.util.WrappedException: java.io.EOFException
at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:50)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:224)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext .write(TransactionCommitContext.java:407)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:40)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(Pr ogressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicatingCommit(CommitTransactionIndicat ion.java:342)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:199)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:127)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating (IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedIn put(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(Indi cationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(In dicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:207)
... 17 more

org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.util.WrappedException: java.io.EOFException
at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:50)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:224)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext .write(TransactionCommitContext.java:407)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:40)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(Pr ogressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicatingCommit(CommitTransactionIndicat ion.java:342)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:199)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:127)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating (IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedIn put(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(Indi cationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(In dicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:207)
... 17 more

at org.eclipse.net4j.signal.RequestWithConfirmation.setRemoteEx ception(RequestWithConfirmation.java:128)
at org.eclipse.net4j.signal.SignalProtocol.handleRemoteExceptio n(SignalProtocol.java:535)
at org.eclipse.net4j.signal.RemoteExceptionIndication.indicatin g(RemoteExceptionIndication.java:53)
at org.eclipse.net4j.signal.Indication.doExtendedInput(Indicati on.java:55)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:315)
at org.eclipse.net4j.signal.Indication.execute(Indication.java: 49)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:240)
at org.eclipse.net4j.signal.Signal.run(Signal.java:146)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.util.WrappedException: java.io.EOFException
at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:50)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:224)
at org.eclipse.emf.cdo.internal.server.TransactionCommitContext .write(TransactionCommitContext.java:407)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:40)
at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:1)
at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(Pr ogressDistributor.java:96)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicatingCommit(CommitTransactionIndicat ion.java:342)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:199)
at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:127)
at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating (IndicationWithMonitoring.java:84)
at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedIn put(IndicationWithResponse.java:90)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
at org.eclipse.net4j.signal.IndicationWithResponse.execute(Indi cationWithResponse.java:63)
at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(In dicationWithMonitoring.java:63)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:207)
... 17 more

at org.eclipse.net4j.signal.RemoteExceptionIndication.indicatin g(RemoteExceptionIndication.java:50)
... 8 more

When I restart my clone after this exception it's stucked in "SYNCING".

Any Idea why it works with the "normal" Server example and doesn't with the offline example?

Edit: Same problem when I use the online-examlpe as master and connecting the clone to that repository.

[Updated on: Tue, 16 November 2010 08:00]

Report message to a moderator

Re: [CDO] Create an offline Server [message #639349 is a reply to message #639333] Tue, 16 November 2010 08:07 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Markus,

An EOFException is almost always caused by version mismatches between server and client, here master and clone.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Am 16.11.2010 08:41, schrieb Markus Surudo:
> Hi Eike,
>
> I'm still evaluating CDO so my repository has no productive data yet.
>
> Unfortunately I still have problems with the example. When I use the server.product-example I can import my core-file and save the data in the repository without any problems.
> If I try to do this in the offline-example everything is fine until I try to save my changes (doesn't matter if I try to conenct to the clone on/offline or the master, always the same Problem).
>
> I get following exception:
>
> org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.util.WrappedException: java.io.EOFException
> at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:50)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:224)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext .write(TransactionCommitContext.java:407)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:40)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(Pr ogressDistributor.java:96)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicatingCommit(CommitTransactionIndicat ion.java:342)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:199)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:127)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating (IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedIn put(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(Indi cationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(In dicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.io.EOFException
> at java.io.DataInputStream.readInt(Unknown Source)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:207)
> ... 17 more
>
> org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.util.WrappedException: java.io.EOFException
> at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:50)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:224)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext .write(TransactionCommitContext.java:407)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:40)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(Pr ogressDistributor.java:96)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicatingCommit(CommitTransactionIndicat ion.java:342)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:199)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:127)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating (IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedIn put(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(Indi cationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(In dicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.io.EOFException
> at java.io.DataInputStream.readInt(Unknown Source)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:207)
> ... 17 more
>
> at org.eclipse.net4j.signal.RequestWithConfirmation.setRemoteEx ception(RequestWithConfirmation.java:128)
> at org.eclipse.net4j.signal.SignalProtocol.handleRemoteExceptio n(SignalProtocol.java:535)
> at org.eclipse.net4j.signal.RemoteExceptionIndication.indicatin g(RemoteExceptionIndication.java:53)
> at org.eclipse.net4j.signal.Indication.doExtendedInput(Indicati on.java:55)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:315)
> at org.eclipse.net4j.signal.Indication.execute(Indication.java: 49)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:240)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:146)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: org.eclipse.net4j.signal.RemoteException: org.eclipse.net4j.util.WrappedException: java.io.EOFException
> at org.eclipse.net4j.util.WrappedException.wrap(WrappedExceptio n.java:50)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:224)
> at org.eclipse.emf.cdo.internal.server.TransactionCommitContext .write(TransactionCommitContext.java:407)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:40)
> at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLo op(InternalCommitContext.java:1)
> at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(Pr ogressDistributor.java:96)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicatingCommit(CommitTransactionIndicat ion.java:342)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:199)
> at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTra nsactionIndication.indicating(CommitTransactionIndication.ja va:127)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating (IndicationWithMonitoring.java:84)
> at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedIn put(IndicationWithResponse.java:90)
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:316)
> at org.eclipse.net4j.signal.IndicationWithResponse.execute(Indi cationWithResponse.java:63)
> at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(In dicationWithMonitoring.java:63)
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:241)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unkno wn Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.io.EOFException
> at java.io.DataInputStream.readInt(Unknown Source)
> at org.eclipse.emf.cdo.spi.server.StoreAccessor.write(StoreAcce ssor.java:207)
> ... 17 more
>
> at org.eclipse.net4j.signal.RemoteExceptionIndication.indicatin g(RemoteExceptionIndication.java:50)
> ... 8 more
>
> When I restart my clone after this exception it's stucked in "SYNCING".
>
> Any Idea why it works with the "normal" Server example and doesn't with the offline example?


Re: [CDO] Create an offline Server [message #639350 is a reply to message #639349] Tue, 16 November 2010 08:31 Go to previous messageGo to next message
Markus Surudo is currently offline Markus SurudoFriend
Messages: 7
Registered: September 2010
Junior Member
Hi,

how is it possible to get a version mismatch if I start both master and client from the same class (OfflineExample)? Or do you mean there is a mismatch between clone <-> client?

Markus
Re: [CDO] Create an offline Server [message #639357 is a reply to message #639350] Tue, 16 November 2010 08:43 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 16.11.2010 09:31, schrieb Markus Surudo:
> Hi,
>
> how is it possible to get a version mismatch if I start both master and client from the same class (OfflineExample)? Or do you mean there is a mismatch between clone <-> client?
It looks as if your committing client is from before we added large object streaming (bugzilla 284307), but your server (master or clone) uses this newer protocol.

Cheers
/Eike

----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper


Re: [CDO] Create an offline Server [message #1086569 is a reply to message #639357] Wed, 14 August 2013 11:18 Go to previous messageGo to next message
SA Poliana is currently offline SA PolianaFriend
Messages: 5
Registered: July 2013
Junior Member
Could you please send me the .zip file?
Re: [CDO] Create an offline Server [message #1086576 is a reply to message #1086569] Wed, 14 August 2013 11:30 Go to previous message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Am 14.08.2013 13:18, schrieb SA Poliana:
> Could you please send me the .zip file?
What?


Previous Topic:EMF: mixed complex type generates invalid XML
Next Topic:[xcore] synchronized
Goto Forum:
  


Current Time: Thu Mar 28 16:10:13 GMT 2024

Powered by FUDForum. Page generated in 0.03853 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top