[Users] Unable to migrate host

Hello, It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname" Screenshot [image: Inline image 1] I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment... Here is the engine.log... *2012-04-25 15:27:28,253 WARN [org.ovirt.engine.core.bll.GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version* *2012-04-25 15:27:41,425 INFO [org.ovirt.engine.core.bll.VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212* *2012-04-25 15:27:41,427 INFO [org.ovirt.engine.core.bll.MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d Type: VM* *2012-04-25 15:27:41,431 INFO [org.ovirt.engine.core.bll.VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212* *2012-04-25 15:27:41,439 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=192.168.11.212:54321, migrationMethod=ONLINE), log id: 5ece0de4* *2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321, method=online* *2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=192.168.11.212:54321, migrationMethod=ONLINE), log id: 5c246e15* *2012-04-25 15:27:41,451 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15* *2012-04-25 15:27:41,466 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4* *2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d. Called from vds cardinal* *2012-04-25 15:27:42,804 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand(vdsId = 77fbced8-8b35-11e1-8da0-0016367ecdf0, vdsDynamic=org.ovirt.engine.core.common.businessentities.VdsDynamic@6c529ae4), log id: 36b80b46* *2012-04-25 15:27:42,814 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand, log id: 36b80b46 * *2012-04-25 15:27:42,819 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d), log id: 207b57d8* *2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Command org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand return value* * Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusOnlyReturnForXmlRpc* *mStatus Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc* *mCode 39* *mMessage Migration destination has an invalid hostname * * * * * *2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Vds: cardinal* *2012-04-25 15:27:42,827 ERROR [org.ovirt.engine.core.vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname* *2012-04-25 15:27:42,827 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8* What can be the issue? --Christian

This is a multi-part message in MIME format. --------------050104070205030705040503 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Can you ping the destination host from the server where engine server is by hostname? On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
Inline image 1
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
/2012-04-25 15:27:28,253 WARN [org.ovirt.engine.core.bll.GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version/ /2012-04-25 15:27:41,425 INFO [org.ovirt.engine.core.bll.VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ /2012-04-25 15:27:41,427 INFO [org.ovirt.engine.core.bll.MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d Type: VM/ /2012-04-25 15:27:41,431 INFO [org.ovirt.engine.core.bll.VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ /2012-04-25 15:27:41,439 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5ece0de4/ /2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, method=online/ /2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5c246e15/ /2012-04-25 15:27:41,451 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15/ /2012-04-25 15:27:41,466 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4/ /2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d. Called from vds cardinal/ /2012-04-25 15:27:42,804 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand(vdsId = 77fbced8-8b35-11e1-8da0-0016367ecdf0, vdsDynamic=org.ovirt.engine.core.common.businessentities.VdsDynamic@6c529ae4), log id: 36b80b46/ /2012-04-25 15:27:42,814 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand, log id: 36b80b46/ /2012-04-25 15:27:42,819 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d), log id: 207b57d8/ /2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Command org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand return value/ / Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusOnlyReturnForXmlRpc/ /mStatus Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc/ /mCode 39/ /mMessage Migration destination has an invalid hostname/ / / / / /2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Vds: cardinal/ /2012-04-25 15:27:42,827 ERROR [org.ovirt.engine.core.vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname/ /2012-04-25 15:27:42,827 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8/
What can be the issue?
--Christian
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- Shu Ming<shuming@linux.vnet.ibm.com> IBM China Systems and Technology Laboratory --------------050104070205030705040503 Content-Type: multipart/related; boundary="------------000905090301030805060301" --------------000905090301030805060301 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#FFFFFF" text="#000000"> Can you ping the destination host from the server where engine server is by hostname?<br> <br> On 2012-4-26 6:33, Christian Hernandez wrote: <blockquote cite="mid:CAH3k4=eXYqk57DtR0apve7phzLGpSLFsyc-PsU_HvEk3-T36Vw@mail.gmail.com" type="cite"> <div>Hello,</div> <div><br> </div> <div>It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"</div> <div><br> </div> <div>Screenshot</div> <div><br> </div> <div><img src="cid:part1.08010706.06090509@linux.vnet.ibm.com" alt="Inline image 1"><br clear="all"> <br> I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment... </div> <div><br> </div> <div>Here is the engine.log...</div> <div><br> </div> <div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:28,253 WARN [org.ovirt.engine.core.bll.GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,425 INFO [org.ovirt.engine.core.bll.VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,427 INFO [org.ovirt.engine.core.bll.MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d Type: VM</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,431 INFO [org.ovirt.engine.core.bll.VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,439 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=<a moz-do-not-send="true" href="http://192.168.11.212:54321">192.168.11.212:54321</a>, migrationMethod=ONLINE), log id: 5ece0de4</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=<a moz-do-not-send="true" href="http://192.168.11.212:54321">192.168.11.212:54321</a>, method=online</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=<a moz-do-not-send="true" href="http://192.168.11.212:54321">192.168.11.212:54321</a>, migrationMethod=ONLINE), log id: 5c246e15</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,451 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:41,466 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d. Called from vds cardinal</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,804 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand(vdsId = 77fbced8-8b35-11e1-8da0-0016367ecdf0, vdsDynamic=org.ovirt.engine.core.common.businessentities.VdsDynamic@6c529ae4), log id: 36b80b46</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,814 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand, log id: 36b80b46</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,819 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d), log id: 207b57d8</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Command org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand return value</i></font></div> <div><font face="'comic sans ms', sans-serif"><i> Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusOnlyReturnForXmlRpc</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>mStatus Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>mCode 39</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>mMessage Migration destination has an invalid hostname</i></font></div> <div><font face="'comic sans ms', sans-serif"><i><br> </i></font></div> <div><font face="'comic sans ms', sans-serif"><i><br> </i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Vds: cardinal</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,827 ERROR [org.ovirt.engine.core.vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname</i></font></div> <div><font face="'comic sans ms', sans-serif"><i>2012-04-25 15:27:42,827 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8</i></font></div> </div> <div><br> </div> <div>What can be the issue?</div> <div><br> </div> <div>--Christian</div> <br> <fieldset class="mimeAttachmentHeader"></fieldset> <br> <pre wrap="">_______________________________________________ Users mailing list <a class="moz-txt-link-abbreviated" href="mailto:Users@ovirt.org">Users@ovirt.org</a> <a class="moz-txt-link-freetext" href="http://lists.ovirt.org/mailman/listinfo/users">http://lists.ovirt.org/mailman/listinfo/users</a> </pre> </blockquote> <br> <br> <pre class="moz-signature" cols="72">-- Shu Ming <a class="moz-txt-link-rfc2396E" href="mailto:shuming@linux.vnet.ibm.com"><shuming@linux.vnet.ibm.com></a> IBM China Systems and Technology Laboratory</pre> </body> </html> --------------000905090301030805060301 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: <part1.08010706.06090509@linux.vnet.ibm.com> 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 gAJQAApAASgABaAAFMiEAoA+mVAd9+xVCgRBH96lq66urlfVFZWBAlAACkABKAAFoAAUgAJQ AApAgZ6jAKBPz2krlLSbKhAEfXhpF+/ShR8oAAWgABSAAlAACkABKAAFoAAUgAKZUADQJxOq 4569SoEg6LNlyxZsy96rWhqVgQJQAApAASgABaAAFIACUAAK9CwFAH16VnuhtN1QgSDow58n +sNLwtZ89BHNnTeP5syZQytXrqR9+/Ylmg3Oj6AAtI4gEk6BAlAACkABKAAFoAAUgAJQoEcr AOjTo5sPhe8OCqQC+jQ3N1uAh2EPb/FecPQoHRVp9+7d9NZbb9F777+PXcBS1NjQOkVCIhso AAWgABSAAlAACkABKAAFur0CPQb6XHb3eOqLqdtbEApIqYA+DHxWrV5NVVXVtPLjdfSXybPo 6ckzadXa9eKzKlq/fj29/fbbAWqX05ghx1NWVpadhlFOUu2SQ8Oyjqc1+8sjXM33HOJzLuch 7z9t1DAaM2VNhLy69hRd641bdtCateto7edf0LaduyNorcraSs/f/F90zn0zQwvfWryThgw5 hw5Wd20d491t57LnfcreSL896e/o8wL31U4dZJ3vm/15vOxxHApAASgABaAAFIACUAAKQIFu okCPgT5Df/MwmemqP75Az856nz5Yt5X2HT5K5VW11m/+nz+/8M5xnmv88unOn3UTO0ExQhTo LPThZUZz5s61gM+TL75GP/zv39A5Y5+gk+94kr5/zm/oiZdep+rqalr83nu0fft2n5K4Acya KWNo2KhpaW8zvo8JdXJWTeuSeydbOV3rVR9/Tl9u3ELbd+2jPdk5tHPPPvp64+Y4Wss7Mwg5 45pRvpBEL1vPgj5ESyb81gN1/AFRsi2A66AAFIACUAAKQAEoAAWgABToSgV6LPR58tV3aMve Q9TY1EKtbW3U0dFh6ca/+X/+fMveg3T/i/N7NPjpSmPAvZJToLPQh2P48JIu9vD5wbm/oXc/ Wk+v7D1Mv/50P/305Y9pwC9+Qx8Kj5+DAg69u3hxXOhTvn+N8C4ZQ1H8dZKrsbzK7z7s3TNt VXJ+Rp0pS9Rrldbs4SOBTzbt3X+Qcg7lU35BEeUePET7D+SEaC3vxCCEPV78IIlelp4GfRp3 L6G/++/7tCqwd88Qmvn5wagS4zwoAAWgABSAAlAACkABKAAFupECPRL6vLRwBdU1NlF7ewdt 37mLFn+wml56ZTY99pcX6M/PT6ZZcxfS9h07reN1DU30lABE3dmbJ6xs3chWUJQABToLfTiO T35BgbWka/Adj9M92w7SDV/n0C9W7KH/nL2NfjTieXps4muWB8qUqVPjQh83eOHlVmrZV5bm meNeEiZBjbM0S0Gd40OXjJlLvNzXB5dDLiEzoZF7OVgOXZYGcKW05iVd23fudQGfktJyqhTe Vrv27A3RmpVhEHKGtQzKC0mkt4xaanfnX6bYy7t46dT/csETBYw4D2dpnnOOytvJz730Sr+P WmbGkOm//kW1t34+39/5fMoUv+VdXDf3Ei83tHIDIL97ufVwLweT3lE6UMKQAgWgABSAAlAA CkABKAAFoEC6FegE9Gmihvpaqqysppa2FmpsbBSQpd3ytOF07NixlJZdgRH28KlvbLbut/j9 JTRt5hu04vMttGnfUdpyqIpWfb2fVq5aTYsWLaJ169ZZ5zEgGv3Maz0S/KRURGSWFgU6C31m zZ5NhYWF9IQAOz8d+SSds2IvnbF0N/3X/O3U/6WN9P8dMUFAnxlUU1NDkyZPDoA+Tkyf4wNh iQNl/Jdh6dAmWnwffYmXmacDfbwwSXoiue93mYgRpDyU0rVMTGn90afrxJKu3JiHDwOfquoa qquro+z9B0K0NkGPG5KwB9D/+oETw4fBjPrfvUzKP36ODk0UDFIxdDgvBXc4L7dHjlxypscP cvIy4w9JABQUj0j3XnKX2YE+QffSP5d/D4mBHiwTS8vwg0yhABSAAlAACkABKAAFoECoAslB n6Yq2v7VKhr96wtpyLDRlNd0kO679rG0Qx+O4bN9/xGrQosWv0+LV31B2cVNlFvRRoerOuhA WQd9sWUPLVq2ht5e+RWNn/QKfSSWzvDPtuzD9IsRT/Y48AP77f4KdBb6cGBh3qVrxZrPrKVc P5z4Mf3glS307y9spH949CMa8Mtb6INP1lNeXl5AMGe3xw170BxvB1Nm9RjMOJ4kjpcNe/G4 Y/LEg0LettC9dcylXep/WR7H20iWxQn2zF5GDHnGTHlTBIe+zAoCzWVOxzIxpfXWHbusGD68 pEsBn/qGBiotK7O8roK19sa90SHJkgm3urx5vBBEAiEGMg50kVBGtZGCRKYXkRvieJdcuT2G pN4yr0a69UJ3MOkwABN8Hwf6BN/LOUcugVsVu7epTffv2SghFIACUAAKQAEoAAWgABTo+Qok B33qs+m3AwfTGT8/nQYx9Gk8QDcNG5MQ9GGvBZ5Y5ebm0oEDB7SUY/1dWVnlUpc9fZ6fu5Ta hDfRlq1b6YXX3qb9pa0knHsE8JFpX0kbbdyxn5qbWyj/aDGt+mwjPfbMRNq3b5+11OuOp93e Pn9am2t5JMnUQE/4BIvO9LKwnm9ivb8GnYU+bJ+8LTsv37r/uWkiePNN9L3fPkv/5zfjLeBz 3/hXqLa2llasWEEbNmzwEdRcZuX87w7q7N1xSwEhc3mXX5Bm/5ZUeW70LMfSoU9QjCHl0bNm yuPWki8JezbG4E+qrUfXmoM2Hzx4mCrEWFMrPHwY+Bw6fCSO1voyKQdkSa8bb/wb/+VR+7U4 Od4lUMpbJxj6xPcS0nXziysU7nUj8/94i7kcyw19TE8jdU+V95IJo6wlcBL27PGAp1S3LfKD AlAACkABKAAFoAAUgAJQwKtA8tBHwJ4jDfvpt0lCH5588VbUTWL5FS/BmjBhAjU08N/NVFZW QSs+XO2BPh9t2Gl9NmXW2/T6ki9oXynRwUqRBPA5UH6MtuaUU1tbu3WOFdC5tY2WLv+Q5s1f aH02Z9mnNOy3j1jePrfM2EBNAvQ8Kf4/TaTfvbaB1q5dlLAnEIOj6qLchK+LCpNgtN1fgc5C H67he++/b23Lzn1i6aq11nIuTuzhw4CUAz1zPBoVsNytSrCnjx4nR3rceLdkd5ZSOZ4+Qef6 tQaDGl7GY+7k5V7elRXgucOxey6jUaMetwJPS8+hIXRZGncf07Xev1/s2rV7j7Wkiz184mnt F8NHxsGRsXjMZVf68i7Wjq/nXb+c2DbuWD/68rBg6CO9jfyWd/3Xv7jjBsn2MrdaD1/exVdw /twO7u3Z3cu7/O/l7Gw2apSM38P14LzibW/f/Xs6SggFoAAUgAJQAApAASgABXqeAslDn1Mu o7nvzqQL1O8EPX02b95MHcL7pl1AGv79P/7H/6C2VvF/+zHr99PCQ0f/YUiSX1xhfXTX4y/S m5/l0Oc5jbQlv5V2FraK3020fku2pwUOHTpMd9/3sOXNk324MAZ9/GDNaUl4+gD69DyjT3WJ UwF9OJbM22+/bW3Lzrt0sdcPpyNHjlgePgx8Kiqk/Xt/3EGZszSwoy+tOl7AFY6bwx41DHqc JV9yqZUZyNn/HJ+7B8AkfbmXucRL31LeHcBZ1iUdS7tUyTujddBuXU68HfdSLSeQs7q7BC46 TGHQo9qCgVB8Tx/Oy30fBVTMZVdBAZ6DAznLcsp83IGjTU+moHv5QyY/GJXqnoj8oAAUgAJQ AApAASgABaAAFDAVSA76NObR9KceoLMGDqSBnAafS488Ozuh5V2bNm0WcOcYTZo0iSZPnmJB n5demiL+n0ytLcfoT08+7yorQ59W24vnplH30OfC6+edT/fSih1VVlq6tZwWrd0jPH3k1u3q p7S0lMbe+QcL+lTXNcSgz9DfvE0itAYd3rvB5aWzeG+py3NHeQTx0q+NRQ2x5WB8nVweJu90 7FgrLZ4xTeT1Mh2ua42dt9H2HlJwSOXB3kEyb7m8zCyH8gSCyXZ/BVIBfVQtt2/fbm3Lzrt0 cdBmBkG8pMvfw6f7a9OdSwitu3ProGxQAApAASgABaAAFIACUAAKpEKB5KBPSwu1NBXR+3Nf p+eeHk+zFiyjShFrJ5HduzZv3kotzR00YsRIGnHbSPGtcj+67bbbrb+bm9rpT08954E+xeWM aYie+vM4Ki4uoeLSCpq9cgfN+/wozVqbT9NX5dKUtz+n5xd8Rhu27aX6+nratWsX/fnPf7au +3rnAQ36PCyWdU2jw/US0Cg4M/S3iwQMcuL7MARiIMOApqa+lG61l4Od9tuHBeB5hJ74VC7v 4iViEvg00OLXplv/n8Z52bGCGPrwzyYBgdR9m+pkfr97bSM1a/fUl36lopGRR3oVSCX0SW9J kTsUgAJQAApAASgABaAAFIACUAAK9CUFOgF9qmjHxi9o2fsfUWVLDe3asjsh6LNp0xaqr2uh uto2kVqFp89fUW1NM9XVtIigqm302JPjPdBn3dZ91mfvi/gn/C09w5qGplZ6c8WXNGFJNj3z zh56bMEWulfE53nl7Y+oqKiIlixZQlNffsW6buL85Z7YOw6cccDPJuHRw3DGgjj1Ymt4y4NH egaZ8Xvcy7vkOU5waHYDkh5A6jy1hMy5B8Mjvs4/kHRfMsaeWldAn57acig3FIACUAAKQAEo AAWgABSAAlCgdyuQHPRpLKA5E5+iX/DSriQDOW/dup2KCsuprKRJpAa66aaRVCp+899HC6rp 2fGTPdBn6lsrLaDy9YZNtFgsgeG/+WfB+2vokXnb6L5Zm+n3r3xNt01aRw9P+4D27t0rlo5N ph07ZQDoGx6aFBhwWXnsWEGeBTQqsZdf8W/lecOA6Al7xy+1HMsLfZzg0BIoycDRZuwfQJ/e 07EAfXpPW6ImUAAKQAEoAAWgABSAAlAACkCB3qRActCHt2wXcXwe5rg+SUKfwsIiyt6XS599 toU+/mQDffzxV/TxRxvpk49F+uRr8fmXHuhzyR+epQN5RSJuT5uIe/Ieffrpp9b2ys9MX0Sj X/7Cgj2/fX4tXfX0avrD+Ddpzpw59O6771oeSIvWfEWn3/xYDOAwhIkt6RJQxh3Lhz18amiL WNolPX7YG0cluRyLl3r9zgNz+LpW3/g8gD69qdu46wLo03vbFjWDAlAACkABKAAFoAAUgAJQ AAr0ZAWShz6d3LKdRduzez89+/xUEb/neRG4+Rl67HH+PZ6mTp/j0ZShi+VpIwAPB7W1trZe tox+/8dH6KK7XqHLHltMVzy1ks67/y067bYpdNGIJy1vID7vcGEpXfnHCQa8kYBGLcVqsuP1 KLjDEKjZBjvOFu8y6LIVtFnE7ZHnqiVdchmXFceH1HnHiOP2eOHQwwRPn57cbQB9ek/roSZQ AApAASgABaAAFIACUAAKQIHeq0Dy0GfQz2nUH26n0/n3XeJ3glu2JyqpgjFn3PInenHBB5b3 TnNzM6346DO6f9xr9IsbH6KTzhtJl9z2KD32/Ou0acs26/ihoyV025MysLLbY0dCJD3px1UA Z/2zoHP1ZVwKTnnPdZZ6xc7RPIj8ysfn4af7KwBPn+7fRighFIACUAAKQAEoAAWgABSAAlCg LyqQHPRpqqAvP3qXrho6hAYNHERDfv4bWvb5poQCOScqtg5fzrz1cbr3hXnWUq/W1laqb2ii qpo6qqiqperaempobIot6bpexPEZfvOjgbF8TBDkeO+oLdj1pV1d/3eiOuH8rlcA0KfrNccd oQAUgAJQAApAASgABaAAFIACUCC+AslBn5Ymqqwoop1bNtHnn66nPfsPU2OCW7bHL5r7DBPO cHyeC8c+I+DPXHpnzdd0pKiM6gT82bArh15auIJ+9/g0Ouf2J309fPxBjwQ67OHDS7g2fWrG 8ul64ANPn0StJDPnA/pkRnfcFQpAASgABaAAFIACUAAKQAEoAAXCFUgO+nAgZ3vnriPC04YD K/NyK04cb4eT2lkrVQ3gB2qGieVZDH/OHvEE/XLUn+lXo/9C597+FLEn0Gk3JerdkxmoEwag AH1SZT3pzQfQJ736IncoAAWgABSAAlAACkABKAAFoAAUSE6B5KBPw0F69IaraOiwUZRTL5ZT NTRQY2Njl0OfeMCkNxxPrllxVVcqEBX65JY3EBI0gA3ABmADsAHYAGwANgAbgA3ABmADsIGu soEkoU8O/fHXF9KQQUPpossuo8s4XftYWqFPV07icS8okIgCUaFPaxsREjSADcAGYAOwAdgA bAA2ABuADcAGYAOwga6ygeSgT/0BGvnzn9PP9fTLewB9EiEFOLfXKBAZ+rSKgQ0JGsAGYAOw AdgAbAA2ABuADcAGYAOwAdhAF9lAgtCngSrKK6mppYVaROKdszh1RUyfXkMIUJFepwCgD2AW YB5sADYAG4ANwAZgA7AB2ABsADYAG+iONpAY9KndS78ddgcdBvTpdeACFUpegajQp0WQ3Eyk PXvyM3LfTNQV90yPjcGG0qMr7BW6wgZgA7AB2ABsADYAG4ANpMIGwt7XAX2Sn+vjSihgKRAZ +rSIAS0DyRoAMnBf3DMz7Z0O3WFDvact02EfyBP2ARuADcAGYAOwAdgAbCCzNhD2vp449Bn0 cxp51110l5buvvtuuvv+yYjpAwjSJxWICn2aBXjJROIBIBP3xT0z097p0B021HvaMh32gTxh H7AB2ABsADYAG4ANwAYyawNh7+uJQ5+Bg2jI0KE01Exn/R7Qp08iD1Q6MvRpFgNBBpI1AGTg vrhnZto7HbrDhnpPW6bDPpAn7AM2ABuADcAGYAOwAdhAZm0g7H09cegz9Cb6ct8+2idSdna2 lfbv308HDhwG9AH/6JMKRIU+TQK8ZCLxAJCJ++KemWnvdOgOG+o9bZkO+0CesA/YAGwANgAb gA3ABmADmbWBsPf1xKEPAjn3SbCBSgcr0POgTzmNGnw8ZWVledKk5Tk0acQw6j94DB3NEKTC AyOzDww//f0eIruXT4vZD9uNvM6xrVNHTANsRB+CDcAGYAOwAdgAbAA2ABuADXSBDaQO+jQc pcXzl1AZdu8CA4ECMQWiQp9G0dkzkXgACLrv8hfHiIn7MNqVobJlQg/cM3E79LOhXRr0Gfni GsvGCnatof42TGToA60T1xqaQTPYAGwANgAbgA3ABmADsIFEbSBszpeYp09Tk4gN0ix2Amqx UqvYhJ5TW1ubtbSLU0dHh5WOHTsGLAAF+oQCkaFPkxi8MpCsASDgvssn2tBHO648fQqaymmk 8Ag6dcQoOjU2kX/c+kx6CQlYZF9XsNOZ7OufZ6K+uGfq7czPhnYtk54+gwcPsTzDCoQtsD31 5//F5xb0EZ+p8/hcdR5/Lm1PeZs5thT0udvGsmjSshzbrnNi9tl/8GV0iWWz8t6wy9TbAvoX NIUNwAZgA7AB2ABsADbQ/WwgbM4H6NMnsAQqmU4Fejv0URBHTcZ5sq0m0yMnCg+PJjnpVpNw Bxp1v8EQD6jk2iQM+twmoGBW1vG0fOd+CwiOnDjFsgcGL9JO+Fi5sBMFERnISJuRcEb+rduS 93N5rTyHYksQGTSxvSkbVXapXw+7TK7N0VegG2wANgAbgA3ABmADsIGeYwOAPumc8SPvPq9A VOjTICaomUg8AATdV3n67NTK9pId0ydfm6Tz9fJcOYFv0CbqO22PD3eMoGGk55mJeuOeqbM3 PxtS7f7SslUWtDF/M3hxe+1Irx729lG2pWxGfsbllXDH+7msi56fng/fS7a3A5Zgl6lrf/Ql aAkbgA3ABmADsAHYAGyge9tA2JwPnj59HllAgM4qEBX61DcSZSLxABB032X28q6dWtlevE0G cs5rLKfbxQR8yG3TrOvlucfTsh3l4v8cGiIm8LcLz4udS+UynxeX5mSkfpnQtK/d08+G9HZn m1FL/nbatsF247YZr/2rPBQMyrPt0Pu5tDdpl0RBNlqv2SzsMjPjTV/rG6gv7Aw2ABuADcAG YAOwge5gA2FzPkCfzs74cX2fV6CvQx8FgCQccoOi7jAAogydfxDHgz4S7mTZgFACGraHvB0y 1hPDQR0Uuv/WIY4DE7ndFNzZ7spH2pgOgHh5F4NLdT9pi045YJedtwH0I2gIG4ANwAZgA7AB 2ABsoPvaAKBPn8cSECCdCkSGPg1ikMhAsgaAgPsue0EGct6pHY95UTRoAEccl+cKT5/twtOn wZ6cvyAm8+KY7plh5peJOuOeqbU1PxvSPWnytttwx7IHDbbE7MZZ2pVn25rbZpRdmbbkfO54 E8ng0Y6dyftJb6HL6GLlnQa7zMh4g76X2r4HPaEnbAA2ABuADcAGYANRbCBszgdPn3TSAOTd JxSICn3qxCQ0E4kHgEzcF/fMTHunQ/fubEMSBg2jHVb/ckBlOnRAnr3HptGWaEvYAGwANgAb gA3ABnqTDYS9rwP69AksgUqmUwFAHzwwetMDw68u3Rn6HLG9jPTt3yUAQoIGsAHYAGwANgAb gA3ABmADfcMGAH3SOeNH3n1egajQp1ZMQjOReADIxH1xz8y0dzp0hw31nrZMh30gT9gHbAA2 ABuADcAGYAOwgczaQNj7Ojx9+jyygACdVSAy9KkXA0EGkjUAZOC+uGdm2jsdusOGek9bpsM+ kCfsAzYAG4ANwAZgA7AB2EBmbSDsfR3Qp7Mzflzf5xWICn1qBHjJROIBIBP3xT0z097p0B02 1HvaMh32gTxhH7AB2ABsADYAG4ANwAYyawNh7+uAPn0eWUCAzioQGfrUiYEgA8kaADJwX9wz M+2dDt1hQ72nLdNhH8gT9gEbgA3ABmADsAHYAGwgszYQ9r4O6NPZGT+u7/MKRIU+1QK8ZCLx AJCJ++KemWnvdOgOG+o9bZkO+0CesA/YAGwANgAbgA3ABmADmbWBsPd1QJ8+jywgQGcVAPTJ 7ACHB0z69Qf0Sb/GsGNoDBuADcAGYAOwAdgAbAA2kKwNAPp0dlaP66FAiAKRoU+tGMSQoAFs ADYAG4ANwAZgA7AB2ABsADYAG4ANdJENwNMHOAMKdFKBqNCnSnRqJGgAG4ANwAZgA7AB2ABs ADYAG4ANwAZgA11lA4A+nZzw43IoEBX6lNa1EBI0gA3ABmADsAHYAGwANgAbgA3ABmADsIGu sgFAHzALKNBJBaJCn07eBpdDASgABaAAFIACUAAKQAEoAAWgABRISAFAn4TkwslQwKsAoA+s AgpAASgABaAAFIACUAAKQAEoAAW6owKAPt2xVVCmHqUAoE+Pai4UFgpAASgABaAAFIACUAAK QAEo0GcU8IU+27Zto9raWmpoaKDGxkYrNTU1Wam5uZlaWlqs1NraaqW2tjZqb2+3UkdHh5WO HTvWZ0RERfu2AumCPnt/cwqVL58bKO5r119PSx57rG+Lj9pDASgABaAAFIACUAAKQAEoAAWg QKACvtAnOzubKioqAH1gOFAgggKphj7tDbWUc9fFtPX0v6Ndl/+YypfM9JTiyDOjaN/w/0NL Bw6gD/785wilxClQAApAASgABaAAFIACUAAKQAEo0NcU8IU+hYWFtHv3bqqrq4OnT1+zCNQ3 YQVSDX0W3HwjfTX4b6hgYBaViVR43c+o7L0ZVrnaG+spb/zvqeScf7GOf/bjLJo35D9oOcBP wu2GCzKrwLRRw2jaqpy0FqJ8/xoaMmQMlaf0Ljk0LCuLskQaM2VNYM76vZMrRzmNGXJ8JI04 /+OzhlF61UypiN0wM9Z7CK3Zn1prMSuas2oaDRs1LW31T7UtpKO8qc8zel9Jm/BxMk5uDIhW 2qhjzZopYwJtj9vk+JSPldHKn4mzuL5ZWcenvb9nom6dvWfq+2dnS4TrU6lA3fbF9K0fX0iH a4maC7fR0KHy72R/Fj93Az0y/wvrcv77Xy96JNmscF2aFfCFPuzlc+TIEdqxYwcxAOL/q6qq rFRdXR1LNTU1xImXgqnEoEil+vr6NBcf2UOBzCuQaujz9p1j6PX/z9/S3pOyqEmAnVqRjl77 X1Q0exwVvfInKhj2TWoRnx0UadkPs2juaT+hjydN6rQQ00cPp379+tlpgOtliF8qBwQckzcu p7FDB9B0YxIflmdQgdW9ho+e3uk6mRmElcd9jHVwaxC/MLk03HON1MXRlfMdHjI5N8/Xz01l XrI2ep3HTg0GGPHrrp8hoYg5geAJR7pfssMmNYnVIfjsZO6R3IQv+kQ21RN9rj1DuTCoFaYn X8tQTE/pBB3x2lbqk+WZ8MpypheWdUbHePXyO95ZW0hHedORp7vu0ftKMpp292uiji9dB334 GdCdgYq7fP726Zwjn11ZBoCXz7lMjmteu0yN7lGgjxpT1RifmA6yv3aX54N//66jG37yLZr3 5WHtsN9n0UcHHbZEvyr1Z3I5vvnD82Ogp7PhWBY/ez09NE9CHxHbhfh/BYFSX3rk2BkFAqEP g56ysjIqKCiwAFAyKS8vj8rL0/utWWcqj2uhQCoUSDX0aRbg9PUbb6SF//kd2vv/JPipEylH pEMitdsgaJ3w8pk99Ee05oUXUlCNXLpMfMtXJgZsfgCsFi85A4aOtT0kJGyYtjLHOpazcpp2 jGjN1LEW1PC+FIXlGT6pHjNlinihSvVkLLw88sVvtVVHlaIKq+CJF2rYkxFbu3j58ovUZcIL QJ3HZXLgVyrzksCHX9Sc+katbbzz5IvnEJeXSo6wryFi4p3eiUAyQCZebczjyUxgo07Kkp3I dnai76dBMvVU+XTm2kTbI8r5Uh+2SceTR7YJ22Sqxxl3ibpai87aQjrKm448k+0rUeylp50T dXwB9JEta+rg5+Wkf8bnHy/GCt1rlD/j8SMx2JFuy+o66MP1dzx1JQCL6rnrHQ/K6fFRj6fY I7ezWtfR9T/+pgf6eD+Lfh8TtkS/MrVnprocLugjisreQ0OGOFAptaVHbp1RIBT6MPjpTKqs rCSeEOMHCvRmBVINfZRWM669luaf+A+0T3j8sGcPiXRMJIZAX/5nFk39z/70iYAjqfrRab/p Lu6eGOW6v8WzIIn/N61BeQaX2VliYS7/Ybg0fPRo4U2jvJEcLxgGGJeLY9IbKdhDJ6w8nZmY SHDi98IV/g107qrpHs8fvYy5rqUgqcsrNjFMS8B9qcObq960ABb/8Au0BHkO9HG3r/nNnzpP fj5q1Cj7W0GeoDvLqxg0Ko8i85tH9lIxJ0PSpV96oOieSHISMCq2bCvI+0O/XgE+t1eLU7+w JRfufNzQwfSSCX6RduvglJk/d/I0IYBbJ38I5y6f8zKvvvFm/cImO8F9Kag9uY0vc7VL0L04 78tEW7HnjmoDBXWClmYpDVZZdig92jj/x4VNOmObubwrTF93effbnkTmt95+Oprfokerp9dz zj2GBpVV+GC6yqa3t/sa1iVeeeVE+DIBcNW39G57l20ik7KPeHmqtvDzGHC3dZgGpl257TOo j4qRSevzwcs19TZyf7khxzplu2FLPv2eqaM0jzjZz71jvA4ogsoRfawJ7rdhbRvWRvHHRDkW hbVlPH35CwRlH9NWbdS8RNzjl55P8FI1v+eo99mtj2GqDaaJMUqOMZzHZTTFWC4ntQiGyFJj Bs2qnwyjjVr/dJfZ/Ux0ngPBtu62c1WOoHzMscEpt3uMcl8fNO5HX64d3ysv7Dmte59628h5 hku9/Pt3lGcgURTo00zP3vhfMU9u3buFlzkpD2+5lIq9hOSXo/y5WgLFgOS//sX0KHKP7gxp HG9xea68Tr0LO/kJ5GKVabR4H5bX/Ct9USxBjH6+8vTRl3fJc/5VXOuU3amTLL+7TrKcJvTh Moy7YYgBzFI1U0E+nVEgLvRhb5/i4uKkUklJCaBPZ1oH1/YIBdIFfbjyM2+4nl79d+nhw9Cn TaTtIj32rSz6el7wzl6dFW7a6GGxl3bvt4h+sS/iP8j1PIPKp9/LDTzkJM16obI9cXQvGP6b X5iUp1KU+pvlkS9MzkPNXKoWP08DhlkX2C9MAUvjuI7BL4nCw0q87DovOanLS95XvnyolHh9 gxRRL9D77Rgp/PsyG9b4Qx/W3nmZ1F/AZZ2jAgbzG1zvRMu5v3cy5bz0hgHAsGP6t8NBEzET wugv2PIbZRWDKKxPyWPKNtx5hkEf9+QmzEPArKc5oYmnkf/yLr/2lC/m+st82L1UX9d9iKNC HwkMJThkz0YJa/TJkfIEiqdvWDwnd7v56egGIv52565nZ2zBH0S6y1UuJrBvWh06fnn9+5B7 NMiMBv5jiIHHtNg1QRqEjfXevubYQpiXlXcscmCqPm54J9z+cab0e4WPNVHaS4J53VNVHx+D +6N3PHkzNtl2A5mo9uynrwIeZhn19jO9dbj8/stT3eOjamu3LbjrpbRQbSO/xFjj6zEUD/ro x92aeJecRXsm6tf5wyv/fNzeOUE2aD5T3xSg3Fy/EW/8NfuTDnXMZ7uZl/mcDoM+bu3dYzgD oFHWl1BRn4EMfQSc096RpEe74/3DYOdfLnzI9pauFedLIKM8aQ7VSK/xbe9NscBL7fZ3rWVV 6nPWhUHLT//J9ChyFJMgRhz/4pCVV60AQGopleOlzZDlp/aSKvm3Uy7eSVsCm4fmrbfzkOVQ MX2UV44sS5aVv7yXcx6XSPeCZ9Bz4SPzrIJ6oY//Z/HfoXFGuhUIhD4Menbu3El79+6nw4cL KS+vSCzxEimv0Ep5eUfpQM4R2pd9mA4cyKPcg0fpkDjvSF4x5eeXUsHRcioqgqdPuhsQ+Wde gXRCn30PXE+5P5Wwh6EPp1aRNv//sqh4aXqgD3vUKIBiYQtPMNzEoY9fnn4xghjEOA91N0Qx Xz4YXKgJsjlR4TKHxSAyy2M+0HgJW1Zo7B0/u/ODPu4HpXvZnHVX60Hq9+Msv3KO6g/dzuSl gJrKrzx7NR2fcH2D+p7zUqVe7mSbel9qnW+39YmNF/qY3i7mN8O694b+EqnbrulhoU8uTNsK njB4J8Wmh5HueaSWA5jlMIGIbsfmN7r+nj7xwI6/p49ZVlkO/2+mzT5lamJOsnRriOfp466T d6ISdq8w2BRkkWZbK28N9wRTH9fi6ev1kAry0AqDKInUM/ib9OCyhrW36kPmpCse9NG9Ecw+ lTkNTCjmfkYF9dEgDbx2FO715XiY+QMF8zlqwiH3M9bJw/vs9S9HEPTx8yoLAuhmfzZhtAll pR04XiDx+rRpV257jqavH9hR9TGfCcHeiP5tFPascJ4Pqr5yzDSfG/HeRs3ym9DRCdzvfcdy zg2zdXMsDc7H37bkuKa3vXqGB3tOueFRPA3M42rMUPnHe06He/roAfKD21n3SAx+BtqePjZs ke9KDHYUoFHeLIdiVWL4cf5D82yQw1+qSS8bfs/jn6BlVVbeAcLxNRbA0Y6rV0bdm4jrIWGQ hD6xGDv8ib3c6pAdrFkvh74US0Kff7HL7F2mte29Z50vCsX9uK78A+iTqNVn7nxf6FNaWkrb tm2n4pJGEbS5Q6R2qqpuFYGcW6iysokqq5rE/w106Eg5HcgtpSP5VVRUUk/lFU1UXdNC9fXt 1NjUQc3Nx+Dpk7m2xZ27SIF0QR/elr3knP9DzXYMn2w7rg/H9GkQ6UjAdu6dqTbDkAG2x4zK x/vtZbBHi98E1S9P6zHoiZ3D+fIk1PE+0d3lE4E+/vnLGgWVx62bP8AJ1zb+NWHfBOt56/F2 gu7Zmbx0YCbzj1/26HZlQhsFdFIDfcK8QMI8feK9TOqToejQJ/jb0rCJWNALtHsiFObdEQ9K hEGfaDFseiv0kfBRapAq6BPmoZV56BPe3uakLlnok1kN4k2E/b1q1JgWPrGN5/VlLpnz19vr 6ePuo3q8GNUG7nEouByZgz7OU0FN3v0AP58VDH2i6xsP+kSLrxME5hxAYgJW0+tJB03R7il1 6onQx/0eaH5J0Dng41iP+4si84sb5Y1pPpd1m/ICuDDoE+UZGG95l3cJk4I+zvungETWkii3 B1AiO2Up6GO+fzGAcbyGdNATDH3UfZOBPnKJ2b/Q+iL5ReW7NuDicgH6RH87zvSZvtDnwIED YjlXLdXUHhO7c3WI1C7Ajw19qpot6FNd3Si8eirowMEyyiuoFoConioEEKqpaaX6hnZqsqAP AfpkuoVx/7QrkGroo2/LzsCnWqTPf5RFE4Tb5eT/k0X7/ysrBoL07dw7V1EZrFkF9nXn5X6h 9gIDPttvghqWp7e0pvcJP1jYA0W9DLsf6u6lT9G+/Q8rT65Yx+zsFmYuu/KLveNTA8+OJfwy /oS2K5Z7YiRQiyemD+8A1s/ydjI9gFKZlwl5wpeZJWpZXs8N+5U3MKaP3n5u926vXblfnN0T hs4s70oe+riXT8Tz9FFeB7pHj1pa4y5/2Au1Wxc3CHPrL78BVy+5Mk/921I/d32/SVqiy7v8 l1b4jRNee4m3vMvMO97ygiBAGgx9ouvLWoW1WzyIYi73UHUL94zQ+2S8svq1N1/DSy7lj65D vPIGefp0Jw3k88gfNjtjcLAGYc+/sL6mA0Vz1EwE+shzzSDjwe0cBH1Mu+e2TcbTJ6g/cv4q bpu7H3j7dDzo417CpY9XzvgaBn3MpV/cFlPs+F1h7akfk1DBu4lEkEeP+bmpk2kD0aGPhGRh y7vcHqH+tq7G8c4s73LiGHFuphdv0MYM5tIqXQkvjNHt1BzLdY39xpggL1/1Tuo8K/TlXVGe gfGgj4Qd7IUjf5zzGcioWDjHjjkQxs/TJ15MH3P5F+fBeW97b5xx72BPHzM+EV8bvLzL39PH XXZZp2BPHzcQk8BIeT0l+j6J81OpgC/04WVdVVXtYht2saavVkGfNunpo6BPjYA++RWUe8iG PqUMfZoFKGqlBhv6tLQA+qSysZBX91Qg1dBH35bdAj72tuzv/PGPFLSde/myOZ0SR3d/94vz Ipf/KA+c42l1dlnsfvruXbz+We36FS9Ps8D+yxecl3flvq3KJwGVzCUK9Akvj3xJcerurmO8 /J3du2ScHGfHLfagcTyX+tkxiVTdvXBJBRrWrokFpk5lXuKVSLSpswTOXd9OGZOxjMvJK8jT R71MqgDL+i5f/jDR2e5V7hKmv9hJbzH5Ume6sOuxBLyBnB3X8OiePirWlLynNVGzY/IETcSs 2moBpd3BX53lEhxfw70DmjF1cQUAdU8Q9aUOMuix6fnjDbhrtrneX9QEQ883XpylsJg+8ZaC cFmC7uXXF1MPfdxBTmXwVf+JqNRNX57ibjdTR78lN0FBjM2lDEFBvfV7uMtqBmt1Avmay2FU 3mHlDVsClFkNwpd36XXV+2iQBmZfcI8bYbaQiuVdfHdZH7OPBZUjbKwx654M9Anuj/p45fYC ce7rBHIOsueo+oZBH7OM3t1EnVYNgjjK9k2NMgF9YvEA7edZ8LJf9xIuU/fgfKIFcg56VplL Ob2bKgR705j9zlxiHPScdo8xw0SMHiccgH8buZcN+o1xwcsA40MfsoGOem+0YuYIM5OgxnmH k/F12P4kLDEDOYfF9OGrOI6PE1tIQRleaqbiMn5LvCuoJV1eTx8zj6HieZYo9NHLzp5LfL8g 6GPu3sXQJyvLgUmde7/E1Z1RwBf6bN68WcAeYWh1GvSpaRPePRL6VLGnj4A+efmVlHu4nPKF p09JaYN1rNaGPry0C9CnM02Da3uKAqmGPu//RxaV/iyLqgTwMbdlN7dz53N4W/ePLh3cabn0 5Vaxv7VcA7cy15ZpmVuSx8tTL3TQumbl8aIe6n7lkJ/FlyCsPOYxJzfvunjzTn75qnOC8+Uz zJg+znbxwfUM2lI+sbysuyexPX18lTt3RtRla527C66GAtEVMCeb0a/EmVAACnQ/BYK8Ubtf SXtiiUyw3RPrEHs/Mgpvvqe63++ck4Pe+wLf6+KIFOV9UL0DB70Ph5VJf18138uD3mVj3ujG +7ffcq+g2JU91TZ6arl9oQ9PYuvqhEOYDX1qa8XyLhv6VDH0qWbo0yShz6Fi2ro1h46W2dCn rpUaG9uteD6trfD06amGgXJHVyDV0OfP/+8ntPwn/5NW/SR4W3a1nTufs0Bs6/7qNddEL3AP PTPo27b0VyfX2unH3LEi/fftO3cwv00M3qa872iCmmZWAfe30UHLGDJbRtwdCkCB5BTwLgdL Lh9c5VWAx048w/umZTg7mvXN+nf3WodDn/pjAvx0CO+ddhGrR3r6VFU3U3V5Dj024hnadmQX 3XfjtTR08EU08fX3hQdQszhfQp+WFkCf7t74KF9qFEg19KmvqKA//OM/0m3CrferucE7dL12 /fXWOa9dd11qKoJcoAAUgAJQAApAASgABaAAFIACUKBXKRAIferrhaePDn1qJfSprhHQp2Iv 3Tj0DtpyZBtde/IQ+tUFv6JTxP8MhOrq26wgzoA+vcpOUJkQBVINfSA2FIACUAAKQAEoAAWg ABSAAlAACkCBVCgQCn3qDehTI7Zjl9Bnn4A+I2jd7i/o6qG309a8HXSDgD4MheoV9Gk9Rm1t WN6VikZCHt1bAUCf7t0+KB0UgAJQAApAASgABaAAFIACUKCvKhAIfRoaSGy9fkxAnA6xZIt3 8moTS7w06DNwCJ37q3No8NCRtDXfhj7iOEOf5uYOEc8H0KevGlVfqzegT19rcdQXCkABKAAF oAAUgAJQAApAASjQMxSICH04rg9Dn1bp6VNVTMvfnEmXn3UZPfbcbNqTv4tu++Xd4liL2K7d gT7t7fD06RlmgFJ2RgFAn86oh2uhABSAAlAACkABKAAFoAAUgAJQIF0KhEKfhpinj4A+dRL6 1AjoU1NdTznZB2nLthw6JHbwKjyaR4sXrrQ8gSzo09IhlnYdI0CfdDUb8u1OCsSDPhWVdYQE DWADsAHYAGwANgAbgA3ABmADsAHYAGygq20gEPo0NpIAOMdE6rCWeDH0qa1l6NNCNZXZVkyf L7IL6HB+Hq18/026RMT0qaltETt3tYkgzhL6dHTA06c7wQmUJT0KxIM+6bkrcoUCUAAKQAEo AAWgABSAAlAACkABKBCuQDj0aXSgT52CPgLsWNCHY/qcdxXd9/B99POBg+kMsbyr1oI+vF17 h/DyAfSB8fUNBeJBn8Ym0S+QoAFsADYAG4ANwAZgA7AB2ABsADYAG4ANdLENhEKfxgDoU1tT TZvXf0jX/fwMGnzyz+m2PzxLX+3NE95AraIB20UQZ0CfvoE7UEtWANAHUAtQDzYAG4ANwAZg A7AB2ABsADYAG4ANdEcbCIQ+TU0kAM4x4bnTYS3xqqstpUWz5tFMkWZxmjmTnnv6MTrrlIvo hVdn0WuzlopdvlqpyYI+Ip6PWNp17BiWdwGL9H4FAH0wuHfHwR1lgl3CBmADsAHYAGwANgAb gA3ABmADodCnSYc+VTliSddAGhiUREyfGPSx4/kA+vR+4IEaZt7TZ+HqWfRvl2TRj677LhWW FcJdsovdJfEgxYMUNgAbgA3ABmADsAHYAGwANgAb6K42EAH62HF9asto+dvv0dtWWkxvL1pM 8+a/RXPmvkXzF7xNb7y1murqW6m5uT0WxFktfQEYgAK9WYFMevrMXTmDbn7lcrpr08105rvf pUseOw3QB9AHNgAbgA3ABmADsAHYAGwANgAbgA3ABiwbCIQ+zc1ETc3HxHItFcy53fLk4bg9 tdV59PJTf6HHnniVdhdWU0lZPVVWNYldvhzow14+gD69GXWgbkqBTEGfWR9MozHzb6I/bP0N jS37FQ1f/U067posDO4Y3PuUDSx/8Q4a9eKHGalzwc4PaciQO6ggzTbX1XWcPPI06tevH53Q BXXrrt+IectVSKOGnErLd6bOmxI6J/uNMLfFCTR52V6r37OO6u9k7Kmr+nEyZUv0Gh4rho2c 4jsepmIc2b1sSlrGBS5bv36n0a40j6WJ6hnt/H00rN8JCY8N6bC7dOQZTYMofZl1CmpjPtav U/04deWMUhecA717ng2EQp9mHfo0SOhjgR+xe9dveJnX0JG0raiaSgX0qaoW0KdBQh/euQvQ B1CkryiQCeizYPVMGjPvJhq76Vr6Y92ldPnB/jRoyV/T965OHvqoCQhP9voZLzD8InGC9bn3 mBz43S/h6mEQlmfQA0PdK+jFtTMPmrDyuI8F1TNskPd78ZO6SN1UCnuxNc/Xz01lXi3EL+/R ypT4g81tL7LealIWNimJ37Y+dtbYTA2NiZcx/r2i5dkg7p+qvAL7UhfWkduuf9ZQ2mXd0123 oAkf9x0J3uSLuwmL5IQu8UlRqnR1yhetTf3vW0gjB58SZ2IX1n/d9w7TOVX19svHr/+lvE+m feLObdGfJtnQh+20oRP35LYYPHiUL7yVY1lyMMKvv3QWmsSz5eUTR9GpIyb7Qx9xbOTEzgJy 77jQWXu1NLbHHM7LD1x0ph06W7741++jU7P6Jwx9ON/Enh/edwC/96QoeWZGT9ZJPFsC+mpD 4146Ncm+Fr+NOjP241ro2ztsIBD6tLSQADjS04eDOddr0Keu+ghNvO9OOv2Ui2nC9Jn06ozZ 9PrspRb0Udu1A/r0FeSBeqYa+tTU1tPKlatp2fIP6OChI66Xt5q6Olq+/j26YcqFdPf2my3g c1XeADr3y+/Qz17+Jl339K+SnIDuo0vES2++PdFbJl4OnYmbfNGYtHSv9YKya+lk16ROTuj6 UVZWVuwlXD4gwvIMHkD5pXXkxBdDXw6SewCFl2fSiKHiviusOqoU9T4KGGV5XvzsyYmtXbx8 +UXsEvHCrs7jMjkvdanMiyfn/WnZjqPWvbi9UwfZJPxSeXP+BTtW0MP2ZCNsUhJfb/dkL/75 PfFBndk67l42mfoHTIC5T3snN/pn8u/B2oRcjgOnCJCU3KQoFW0s+3ZnJ7vxoU94/3XbYrjO 6bNbv/7X8/pkavtIPOhjQdAkoJJfG3e23ePZcvqhT+ptc9JId//0a48YJE2iHVIxhoTnkTz0 iVo29UUKg079HWWXGK+T8ZDKjJ7h0Ie1YPvNlOdu1LbAeakfA6Bp12gaDn1aAqCP8vTRgzqL QM4NDW0x6KMvfQEWgAK9WYFUQ5/1X31Jg847iYacN5henfMa5RfI5QSVNdW0bsdaGn7fT+jx g/fS3bUX0FX5A+gcAXwGvfJtuvC+YVRSUZIk9HF/46S/dHlfDowXHAuS+L+E6984hb1YOwO+ M7Hil1v1Ta71MmC5rY+0PAmkh4rz7StDl0vFMemNFOxREFaeeC/TYQ8l+RImvqUKgj72N9Jm HtLbxv0tsl5GniA439qGT3QSycuceKTyBTAoL/bGkd/oZlmAkNtQ9w5RXke6l4jZ5kPE8hq+ NktrZ33JQpiNsPamN5f/khAJOfleqkxcTv1adZ35jbTp4aTqor5Vvd1eNsWAze1ppbSQdh5W R7MezguyLPftoh+ocoeBPHdZlQ0ysDPbx/0yYvYTty3JsWHusvkWvOSy8nEJcYOgj4SEQzSP uMnLvtA85Nz9WdctzFZUv+LzLT2zvB5nQTrpba3rq3v6KNhtjkXB/VfX0auz9AD5NV1q6yDv 6/5m37HXxDTTx50o0CdIY9O+uTx+9uo3VuqaqnYL8rz06y+m3etfMujLu9zPArfXmbvNHO/D 4GeT1F+NV469SY+2YM9X2dZRoI9/P5Rfmjj3kONDkC2b7dtfQFbHM9d5vsgvVCT8NJd6mR5E etuocUTp56+Do7XXi8TfE1h9OWSODfGhj7tf6OOcX7lVP3LGRqmJ3zNT19K0d/d46i6D84VP cs8P0+Z171hZ/lOsL1LMMvE7En8Rp8Yp/ZkUnGcUu3b6h9/YlEw/k18ahAPUaO+JXTNBBoiA zr3NBkKhT4uAPuztI7dtbxcxe9qsYM11NSX0gQjkzAGcOZjzgoXv0FuL1sSgT0eHHdBHzPR5 QowfKNCbFUg19PnhT/+DTn3v2zS++nG64v4r6PkJE8TyyVr6fNta+uFNf09TayfR2Nqz6eqj J9A5G79DJ03+Gwv4pHJw4m/eFGzwPoT9vvGO/82rnmdQWfV7uYGH/AYoS1t2onvB8N/snaA8 laJoYZaH81ATQ/cLV9QHn9+3fVIXCSm8QIrraNXJ99tL8WImrnU8FFKXl6ltlJexKJqqc1hL NaE2wQp7FbFtSVAmtdW/ueRr1Qus2eYxuGh7TqlvBmMTGR8bieUlYIpjI2H2Ko9xnspLqb8A BuobVlV+vre7b8hJmu4RpzxmJAiTnnCOt5fjUSaBoQ03FEANqqOnHiq2iSy3o60fhFS27C2r msjxBMLRyWv75kTWDYFUH9htL4XaLWz4UrFULOybcD7maMP3z2Jwa3uh6fnLSYy/h5rf+CDb vplcXnxqsmeMJcF2ousrl3dJeOksgdu1dL7P0g6z/7q1NHWWY4EAY3a9uW/wxMrVnjGgHV0z s99KnSR0jSXxvz7e+2vs9vhkm53IAMHHXj33dNkst8ft1pjn8ljQPEj9+gsDh6D+q39B4H4W GP1c8+Jk78P+NnAPm2ha57mWO0odlFcoHw9a/iXb1NBaQFXHky64H3LbO56nhULr+b627Ne+ +rNQf066oI+x1EvvZ6y1Y3ey/1jjuO3pq3sCBo3depuE6uuztC4e9DHLN1dAZY6rFlhuAU3c Y6Ncthr+/DWfTTIPPY6U/1ib3PPDtHk5Psh4cXxMQnQH/igPXfnFmPRiVueqpYqheQbYtXp+ 6Uut/MamZPpZtPeM+GAokXcRnBv1/RXn9QVbCYQ+ra0kvHbkEi8P9KlrEQCokQ7mFtD+A/mU e7CI8vLLxQO8jVpbOwjQpzcjDtTNVCDV0Oekk0+iCcXjaGbH6zS9ejqNnDSShg8fThfffBFN LH+W7qg5nS4/cByd9cW36MTn/4puev5iyi8pSBn00V+uvRNbfjAkDn388vSLEeR283ZPFM1v qPXJp+l94P42zOv5Y5bHBA9y4ploHAf/ia3+UuxeNsdaBsdHcCZ8zsM4VXmlG/o45eQ1+nJy qYMcM+aE/g08T5J0iOM+1wtrzImMfr5+zO05Fh/6KC8z03NJtzt9cmJOVMzzvEtEgr8p1uOV mGDL4wEXi+Fh1il4OZJ3UuXYbvzlJ3q+9gt6LKaSk49cdtDPbst40MfxAjLvr/d70271tjHH B7Pt9eVd+jHTIyNcXxXTR0IXx6vQG9fJr//qL5VmPb262zrvcAJHO+OcW88wzfyggD6hV5NH 1W/CNLbAuNaXJbSNAPwNr03lDeUepx0YYvY5rkNY/zWhj97W7uvc3jMKuMeDEu6+a9p8cP1V u6gvI9TyaB0Gu2MJOe0q4Vy/2LJbpVk8j9Sw52RU6CO/AHFglT4me2zNXt6tlngr7eV5ElqY y7dMbxoznlI86KNgmgLVujb+5Q5qo/jxiXTPIce7zOyben903yuR54duZ+azRS6PdgMRbk/5 nCqkh0c8GgB9nC+VzDy9dq28aOUzW3kv+T0TTDuM0s8AfQBW+gJY6c51jAR9mpoMT5/aInp3 5st0zXnn03l2Ov/XD2rQx5kWw9MHkKS3K5Bq6HPiwB/RjdsG0Z1V59Bd9b+kBw/eSk9+9SQ9 suUeGlE0TACf79GZ679NJ477Bv1+xo20/cC2lAKfE2yPGTVweV/Agz1a9OVY6nqe0Jt5mpDF cfN2lmGYL5GJQB///OUDN6g87oE6mTX68a/xm8z4PSD0b/jDvKKixJrwyyudy7vM8poTHW87 iiVuhtdFX4A+Hi+O2PKncLCVeegjve64jfzhoQI4JhwKXt6lL+/oGdBHeamIOtrLsXSPtij9 NzL00XYLSyX00ftpVLCmYC6fz+OzXO6SOPRR4324Z5zbA7Lz0MfroaPGz6SgT8w7Mz700Xf3 C4LGzjPQ7ie2V5KCpwpwdBX0MePbKa9MvfzW8qiAsdv5cugLuaQnINh+PMCjv4c4cEjCmoId aoMJ+QWNy6Mv5tUVDUz6PWeDvctMoJ5+6CM9fbxfhMX39EkE+jhelHr8wcSgT3A/A/QB9OnO QKQvlC0c+ghvHxnMWUCfRmd5V30V7941mE4/8wwafPIQOu+C8+gUEdOn0fb0UUGcsWV7b8cd qJ+y8draWjKTAp6JDiQzZs+g0+/8MV20/ji6oeQHNLbuLLq/9koaXfwLunjPP9OZ675FPxHA 555ZN9OGPV+mCPjIB7X6BthdZvdLrb8ngN+Lb1ie/stGzG+g2XVevei5YYF76US8F2FZn7Dy 7BOxUJxtbk2373hr/z0v7PaEgF9oH9G2E+c66K7x3nzlN9FqaZH5jWiq8vJ7eQza8SVR++U6 mbFk9LYLg3dqApkO6OO+r7M8xlu/5L6p9dPUvbzLO4lV9ZQwUIclzs5EpqePtCG1Tbxe1uie PrKsTuB190QuLJCz7Ldqovaw4cFhauDEt0mNp49bJwmflN0m4ulj9m/X0pZQfaWnD9u48lzj OuowJqj/mnYWH/rISeypI9VOTLqGnff0CYI+wRrvE/GGbLtzLfOJD33cNsvL1kaKSbp3AhvW X8L6bzRPH+9zLDlPH5mPHkMlCL77PSvdnwX1Q35W/dpe9isD4at7xHvWhT0ng70iZTk8y2S1 59g8Oy5d8FjhLGtStuX29gua8Eb7Eklfjj155K9jyyn1WHqxJZ6ecvvbaLznejybizJ+p8LT R/euZi9kfVmmWjque6a6l3dFhT72ErjYeMNfkL1kxz7yPhOCPX2C+5kJfRiOm+8KJgT0OyfR dxKcD9gEG5A2EAh92tpILNXiJV4B0GforfTpts/pSrFt+67iPXSjgj5tHbHt2gF9AEX6ggKp 9vSprKqhCS9MpPOf/BldtLY/XZ13Al156Di6aM8/0Zmf8ZKub9DoadfRxr1fpQj4yEkcxxwx 4w/EAtZa8Q9UDAj5bZDuyaO8cvgFRA9eG5anOQibHgwK1KjgqWYsCgmI5EAW70VYTVSDyyNf VJw4F+46xsvf2b1LusQ7LzL8QqvHzpBxQFTdvXBJxoDQYws5S0hSmVeLFfzReXl0l6tzD0hT y35umGjFr9EDOevnn2Dt/BQMfUS5OU6GHshZD05qbFfsWsZjxx5RsZXcO0zpL0XJQh+3poN5 xyotzoI5MeRvqTlWEJfnBBGkU9/dKqyOHFeD7VG1nfWNvA013cvCgpd3Wf3B1aed9o+/vMv5 5twbjyoI7qQG+nC5dbvVPQjDoI+utRzT5I51SkN9LAnXV1/e5fRrGUNFxQgJ6r/uF+8o0EfF sFLl5HgbfoA5meVdQdAnTGPd7vrZsZWs840+6Rk/DJvVQZ2qW7z+omIH+fXfaNBHL6foc9aO cnJCHObpo54vsp9K6CVBgxOnTX8e6nWPD32C+6HypjLb3mvLbrsKe066x0NnHOag57fpO9wZ 7aVvjuCuU/DYHfRFiN+zxe/5KmPKmH3MicWjx6TiMdDKN7DcQdAnLKYe56drJJ9NCq7oNuAe v5N7fphwyLRJ5dVk7t4VW0qtga4o0CfYrp1lfTy+sr0n5ukT3M9M6GNBbTvgf+x90ifWVKq+ kOrcew3ACfTr+TaQPPQZNpp2Fu2i68W27S+++hL9yoY+bYA+fYFzoI6aAqmGPmpgffrpZ+ji cYPo7KX/SOdu+Ds6c+23Ytuy7zq4K2XAR91PjxdjvkjwOfpx1+CvBcfUXYLNa/zy1POxjvsE NFbeAmpS51cOPShw2IMprI7mMSef8MlzUD2DdHWXz4wpoAf39W4dH1xGv/hA4XmpeEJmm6Xi we6ns6etAwI5u9rSti0/zWJeJFo+/NLveJfISYACg+52CgtybNu6ZouuPI04TH7H+DMTQrjP 8wawDspHTWb86+FTv8Bye19Y/Pt0/DgXupamvfjVU50fZFth+nra1NbfY7dR217pY4xb/vbp 1Te8X8frc3ob+Pd9Pz2DxmPnXD+798YZcmzJOObpZ+56xB/LvGNVaD0U+I7z7IiXh3pe6M8O 81ngfq5420evW5h9hj3bgsdMv77k/cy3H5raGP066Hmp+ktwnv4x4nx108qg6mh6q3rHeid/ 7/JP/0mTBFneDQ2Cn3dmOwbXyWW7nveL+GOdp35+7WD0H7Ntoj4/zLHT+z+/i5zgCsLutwOl fl1Ynn424q95kM0ause0idbPPGO4ilmkLQX0ntPzJ96peMdCHrCDZGwgMvRptJd31Yvdu+qr D9Bdlz9Cu4r205/HjKDhYqnXGb+6R0xC2wjQBzykrymQLujDHXrcuGfp9Ht+QgPn/G1KtmVP ZpDoLteYk+iuK5ezM0bX3RMPtFRr7Q4ay0vo7G+HfUBjsvd2bUFtx7pINi9chz4AG4ANdBcb kEuhhOeNtiw0vGy8VJl3o3MCkYedLz3vEt08oe/ZRxiE6i62klw5nJ3skru+79kCdEKbJ2oD gdCnvV0s7xJLvNTyLhf0qRffhDa0UGlZHRUX59H7b35AO/bnx6CPPulHIOe+hkD6Xn3TCX24 Q/NSr+8P+lf65d2DUu7dk+iAgfPxkIENwAZgA7AB2ABsADYAG4ANwAZgAz3HBkKhD8f1YejT 3Nwh3ORlIGfL00ds115yNIfmz5hFr7w6i157bTbNnLNMBHxmT59jrlk/oE/fgyB9rcbphj4Y UHvOgIq2QlvBBmADsAHYAGwANgAbgA3ABmAD3ckGEoI+DQ029Kk6QL8//1w6ZeBAGqjS0NEC +rQD+vQ14oH6EqAPBvXuNKijLLBH2ABsADYAG4ANwAZgA7AB2ABsQNlAIPTp6CABcHgHL8fT JwZ9qsWW7YPPoyeen0jPjZ9Iz094kV54aSGgDwBIn1QA0AcDKh6qsAHYAGwANgAbgA3ABmAD sAHYAGygO9pAROhzzFreFYM+NTkikPN99PnuQ1RQWksVlY1UU9sioU87lnf1SfLRhysN6IPB vTsO7igT7BI2ABuADcAGYAOwAdgAbAA2ABsIhz4czNny9DGgT10lrVv1Ll1y8ul03U230M03 /45uGTHOgj7tgD59GH/0zarHgz4VlXUCjCJBA9gAbAA2ABuADcAGYAOwAdgAbAA2ABvoWhtI DvpU76ffWLF8BtPpZ55JZ555Fp0ptmwH9Omb0KOv1zoe9Onr+qD+UAAKQAEoAAWgABSAAlAA CkABKJAZBUKhj7Vtu5+nD0OfITfQ0s830JYd2bR7Ty5l7y8A9MlMG+KuGVYA0CfDDYDbQwEo AAWgABSAAlAACkABKAAFoICvAslBn9o8evGhp+jl1xfR14A+MK0+rgCgTx83AFQfCkABKAAF oAAUgAJQAApAASjQTRXo5PIu75btiOnTTVsaxUqbAoA+aZMWGUMBKAAFoAAUgAJQAApAASgA BaBAJxRIDvrUHKZn/3A3jR37Bxoz9vd055130e/vnYTlXZ1oCFzacxXINPR5Z+08+rdLsujH 13+XKmvLe66QKDkUgAJQAApAASgABaAAFIACUAAKpFSB5LZsr2+gQ7kFVFheR8W8ZXtFKX26 ZgO2bE9p0yCznqJAJqHPmx/PoltevYLu2nQznfnud+nXjw/vKbKhnFAACkABKAAFoAAUgAJQ AApAASiQZgUiQp8Oamxsp4aGNqqvb6X66mz6zdDb6euDRVRYUkgff/A2XTp0NKBPmhsL2XdP BTIFfRasnkF3LryZ/rD1NzS27Fc0fPU36bhrsrqnSCgVFOgDCuSumk7DR0/vtTWdPno4jZ26 ptfWL1UV03XqvE2U09ihQ2nNfnhxpqp9kA8UgAJQAApAgb6mQCD04Z272tqIWlqOUXOzAX2q BPQZOITOPf9qeuDR++lMsXX7GfaW7W1tx1wa8oQYP1CgNyuQCeizaO1cunPBzTR207X0x7pL 6fKD/WnQkr+m712dPPThiUq/fv3sNMA1ySjfv4YGBByTbcsTkwE0fVWOq6nD8gyyCXWvdEye w8rjPsY6uDWIb8O5NNxzjdTF0ZXzHU5ulfSczfP9z1UamXr7lzFKuRKta7Aa/mDAKcOaqWMt Pdxl5+P9MghM/DSK3+LmGbmrptGwUdNCL3T3pWTq3LmyMoQYMHSs6LGJ/0wbNYzGTEkf9JHa uG3e77NESs72lo6xJKwMbp2O0bFj7veiRMrPY+uYIUMAfRITDWdDASgABaAAFIACmgIJQZ/6 etvTp7aatny5kq4/8wwafPLP6fa7nqON1pbtbQIUAfrAwvqWAqmGPq2trfTJJ5/QqlWrqLCw 0CVma1sLrd64jG6cehHdvf1mC/hclTeAzv3yO/Szl79JN447P0nxc+myIWOoTExOeIKyesoY bWIoQcS0lTnWsZyV01yTRjWJz8rKomku6BOWZ3Ax14h7j5kyhYZlDQuBI8lUM7w8cqK22qqj SlHvooBRVtbxxuSMJ2zHx7SLly9PcC8T0ECdx2XyTljlpH8I52tANrO8weXKpVHafcw2jVpv v/MYfBwvbEmHCvpn3L7Hi0nskCEOeGAbGiI+iwdMOlOu8Gtzhb2ZbZf43aJAH66/6kvHjuWI +2Z5YGk6y+rXPlFr2hXQ53ij33OfMD+LWl4+j/XuartKrU6APom0N86FAlAACkABKAAFvApE gj5NTcLTp76U3p09n2bPnmenWTT+mT/R2adcTC+9NptmzllKjRb06XDdBZ4+MLverkCqoc+m LZto8Pkn0ZDzBtOsBbOorKzMkrCppZE27ltPp9//E3r84L10d+0FdFX+ADpHAJ9Br3ybLn7g NKqpr0pabv3baJ5oDbEn7t5JlzFBtiCJDTcMCBGUZ3AhnQkOT5x0qCG/sR9teYRIzxnHI4Dh xuXimPRGCvZaCStPZyZqEtLwBD4A+gTAGfa6MD1/9DJ6IYK91CM7W8IkLd+gvPzLRS7vA657 6ibGXoCia6sm4dNGXWYDMm7zy2hKyORceqcM1bzNhosvGhzvM7fnittbyvEokrBs9OjLY55X aqkS2w9DS7ddBeUjfC9cnm+OHbrbS3ovKS+v2LIothWtA5h2rvcN2aZu7zu/sirwqs4NqrPU MCtWVwUUwzz59LxZo2BPn8R1N8cBP8DjN/44uup93X1/rptVL1Fm1bZBS9Pc+sn2dGvfT1vW 5rYjZXtBOunLu6QdX06Xx7z/nPIHe4AB+iT9UMOFUAAKQAEoAAWggKVAIPThpV3C4cBa3mVB n5ocsaRL26Ld/HvoHYA+MKo+qUCqoc8Pf/ofdOp736bx1Y/TFfdfQS++9KJYYtlMG/aspx/e 9Pc0tXYSja09m64+egKds/E7dNLkv7GATyp/po12IIAOgOQ9/CYh/tBHL5OeZ1BZ9XuZwINh QRZ7AdieOLoXDP/N3iXKUymKFmZ5OI+sLGeSHm3plGuKHgh9sgKWxnEdrTr5FlhMYgXY0SfZ POGXoMerd3BewV4saqLK9+jcEhR3BdwAzX1/BX2s9h09TUyup1l1DPPIiNVNa/sBQ1V7u2Eb a8QAKwbiYhCQyyGhBR8rz14d8yBRYGx1dllMh7B8GDr4eb7pNsvXO55j5QJqvelpZQk0gjyM GC4cT6pMXN43Rdv7lVV8GPMOs+oVA6LuOitPPXdfkRBDv88Qe/mXBT6MPhcEfZLR3R/6KPjm 9EWnj0iwo3TluqrlYGzLTrsfozeFtyB7m7HXovO5t6OZdVw95XEbRjqaSs0VoPFqGqaTbhPS jkV723ZmlU30AfXjeBnK/i3HIECfKOM5zoECUAAKQAEoAAWCFYgMfRrqy+iDRe/R2yItWrSY 3nlnMS1Y8DbNm/8WLXzjHXpr0RoR7Fl6+ujL1+HpA/Pr7QqkGvqcdPJJNKF4HM3seJ2mV0+n kZNG0umnn06X3HIxTSx/lu6oOZ0uP3AcnfXFt+jE5/+KfjfxUiqrLkmZzDx5UpNCC/FoXj/J Qh+/PP1iBDGIcSaV/rBAVVRfpmJ66cSLQWSWh/PUl3Xxcqes0Ng7fnL7wxU9X/eyOeuugbDF mUTLe3GZLWBh/ecH2YLyClm6ZMMCBi7JxnnxU6I82/EU84N30qtI1qFfPwZ54ctwzCVJ7vbW tbAnyNnO4jLnXFMH/l8BN/NYcD7e/uBcq9dVQkonZo8XqklPIIZH/j9KHyf+kWx7v/Z0exU5 kMR7rqmlBE9u0KKul0stnRg+wd5wyerurnnMq8eEWK52kvbijEXS400ClayYHSu94y3vMuvo vMC4PYecpZteTcN0MqGPvvTR7Bt6XDFnuSygT8oebsgICkABKAAFoEAfVSA69BG7d3FMnzre vau+heprK2jNByvo9Vfn05IPv6Ti2mYL+rQC+vRRU+q71U419Dlx4I/oxm2D6M6qc+iu+l/S gwdvpSe/epIe2XIPjSgaJoDP9+jM9d+mE8d9g+6e+VvKztudMvEZLAywPWZi0ypPTA2/SWew p49fnhbu8MTOkd+g6942+nISc/IWBn3885c1CiqPW8RkYrzEvyZqfBLda0KVy/REYm3Ygyi+ R1LqyhXd0EKW6WnLuHK0wMfxPH30yXJc6KPtdNQp6OOTT1Too7xvuI687MoN1RzgExbi14nt JIOsy+VJXkBler84MXCiQh/Hg06PO5Uw9ElY9wDoo33s7jM6qOOT9HFHQk8GjhIoy2VaCUMf +94ez6WYR1Z6oI8Oot3LZQF9oo87OBMKQAEoAAWgABTwUyAQ+vDSLk7NzXJ5V4MOfWqL6N2Z k+mXaomXiOszabaI6cPQpxWePjC1vqVAqqHP7Pkz6fQ7f0wXrT+Obij5AY2tO4vur72SRhf/ gi7e88905rpv0U8E8Llv7u9oe06qdseT32qrZRDGVMwVP8Y/EKwf9AnL02sj6ltvHQbx8g0V W8g9eXMvfYoWjyesPLki1ouz1ba5VMovXo5PDTzLu3jC+oS2xbUMYuwEOfbmK2GA33IrXZfY pJCDa9sFCS6j38R/umvrbbNcqejBQQG53e3oeCelBvoQWfGJYktm9Lon4ukTLx8naLneHxzP Dba1y+1le+6lZLKdxFIhXuITIjTbzuW2Targ6tJDys8ryYnv5Lbd+NBH5pflsoe3pk61lka5 +7rs40HLu5LTPVHoI8ugYvPoQGi6iNWktjXX41jFgz5mX18z9QkrH31McS/Di6epW6eonj7u cso2cZZyYveuVIxJyAMKQAEoAAWgQF9VIBT6tLRo0KfB8fSp4y3bB/2cRtz5R3r6uWfprrEj aLiI6dNgQ58O7U0Wy7v6qmn1nXqnGvo0NTXRpEmT6IKnBtJFa/vT1Xkn0JWHjqOL9vwTnfkZ L+n6Bt356g20I3dzykRWSzycYLYynobyIpFxQlSMDRlnRP3ou3ex54nyaIiXp1l4/4C2zrfc crmMswxFAiqZSxToE14eZymNDIbrrmO8/J1dsmT5nB23ePLmxCZR8VFU3b1wSS5R0b2d/ANT R4vpk2y5UmFYSm8zQHTQJDxV0EcBMRXU2Fk+FQZ9pEeIHsg5OB/hX+LqD9JLhn/M5V1OEGZn GZf02HIvp/JfWmfYpB1bh+9jlpW9iVTcqAFiF7QwTx9nWZ1jpzK+kWOnTpsds/qWrIfcMS4I +iSru25rUQI5S6DjBLdWYxFrr+vNcX+sH3uHNMdTyrRuuVuhupY9HRl4sceQ0mTAUNZUxV7y 85wL1ikq9NHLqbQG9EnFSIQ8oAAUgAJQAApAgUjQp7FRePro0KdSQJ9ho2lHWS0VldRQWfEe ulGHPhr1AfSBkfV2BVINfZRezz33HF3y7GA6e+k/0rkb/o7OXPut2LbsOUezUy6r25PEDmKq 3SVwK3NtmZa5JXm8PPVKWOf61MqMzeFXDvlZfEnCymMec3KLv7zCL191fXC+1ozUiOmjB48N 3zreq5c3pk/y5YqvJc6AAlAACkABKAAFoAAUgAJQoPsrEAh92MuHd+7i5V2+0OeUS2jijAW0 eOlymvnqS/RLhj4NbeKaDuoA9On+LY8SpkyBdEEfLuDzzz9PZ9x7Ig2c87cp2ZY9ZZXOQEbx lmmkr0i5dJm2JCt990HOUAAKQAEoAAWgABSAAlAACkCB1CoQCn2are3aHehTV9dKVqo+SjNf +DOdrWL6DP4VPfXiwhj0aW93vnKHp09qGwy5dT8F0gl9uLa81Ov7g/6Vzrt3cPerPEoEBaAA FIACUAAKQAEoAAWgABSAAt1WgXDoYwVxltCnXizvikGfuhaqqy2md+ctoAnPTaE5b6yk/Oom cU6r5ekD6NNt2xsFS4MC6YY+aSgysoQCUAAKQAEoAAWgABSAAlAACkCBPqBAIPRpblZBnL3Q p9aCPoW04JVX6MnHnqGXX3+f8mzo09zcbkEfFV8Dnj59wIr6eBUBffq4AaD6UAAKQAEoAAWg ABSAAlAACkCBbqpAKPRpsj19GhqEp0+99PSp5VSdRy8/8SD9PLa86xx64M+vi3NaRQygdmoD 9OmmzY1ipUMBQJ90qIo8oQAUgAJQAApAASgABaAAFIACUKCzCoRDH2tp1zERq8eAPrx7l4jj 8/j4KTRz7nx64bkn6WwRyLlOQZ+2YyKYsywaPH0620S4vrsrAOjT3VsI5YMCUAAKQAEoAAWg ABSAAlAACvRNBQKhT1MTaUGcOwTQaafaWuHlU9tCtdaW7XfQtuIaKiisppLCXdaW7ewJ1NTU Tq029OElXoA+fdOw+lKt40Gfiso6QoIGsAHYAGwANgAbgA3ABmADsAHYAGwANtDVNhAKfRpj O3c50KdGQZ/B59Af/zSOJk+bTk89ej+dqUOf1mPULjx9AH36Evrou3WNB336rjKoORSAAlAA CkABKAAFoAAUgAJQAApkUoFA6NPYSNrSLgF96tosTx8L+lSX0PK3XqfzVEyfU35Nr7612or3 08iePgx9RFwfXuIFT59MNi/u3RUKxIM+jU0tol8gQQPYAGwANgAbgA3ABmADsAHYAGwANgAb 6FobSA76MPipqaTPPl5L8+e+S6vXbqHCykZr6VdjYzu1tMpt2wF9ugI54B6ZVgDQp2sHLTwk oDdsADYAG4ANwAZgA7AB2ABsADYAG4hmA6HQpyEWxLlDePHYnj7V9XQg+wjlHS2jgoJDNHfa azR9xmI6VKGgTxu1tHRQmx3XB54+mUYSuH+6FQD0iTbYYFCGTrAB2ABsADYAG4ANwAZgA7AB 2ABsoGttIBD6NDSQ2LXrmNiGnZd2SehTU5lPUx9/kM4cOIT++4Jr6L5H7pPbtp88nK6/7Rlr 6VdDQxs129CnvR3Lu9INHJB/5hXINPRZuHoW/dslWfSj675LhWWFWEqGpXSwAdgAbAA2ABuA DcAGYAOwAdgAbAA2YNlAdOhTK6BPxX668eQhdP7Fl9DFF55Hg0+5lKbMfoPmzn2VzheBnKtr bOjT3GHt4AXok3kggRKkX4FMQp+5K2fQza9cTndtupnOfPe7dMljp2Fwx+AOG4ANwAZgA7AB 2ABsADYAG4ANwAZgA/GhT33M04e3a2fok21tzb6vpll4/eyl64aOpA35lXQ0fwfdYEOfevb0 Yegjgjm3tcHTJ/3IAXfItAKZgj6zPphGY+bfRH/Y+hsaW/YrGr76m3TcNVkY3DG4wwYyZAO7 lk2mU0dMhv6d0H/5xFGBGoYdS72b+F46Nas/Ld+ZqPckXzeUdnVCA7MuBTs/pMGDR1FBCvNM nV7x68v9IispLbvW9b2zmuj2mYqxYNKIoTRp2V5rPOG/Mbb0LHvorD3herQ3bAA2kEobCPT0 qa8nsbRLLu+qrW0XS7ds6DPkWlq06hNa9eEiunjI1TRn8Qp6/7036RKGPtUt4vw2amrqEMGc AX0yDSNw/65RIBPQZ8HqmTRm3k00dtO19Me6S+nyg/1p0JK/pu9dnTz0mTzyNOrXr5+dTnBN dnjScULAMTkgFdKoISfQZPsFVQ1SYXkGDWTqXsNGTkn55DmsPO5jrINbg/gD7z4a5rlG6uLo yvmeFjIhNM/XzzWPRS1flHKFlSmxhy5PTkZO/NBoO2cCzROjrKys2GRG6srHszI4qUl2gu/W JspEj+27v6gra8Cpu07k/Nsxmi3IOiYHPno+9ImmkTOeFNLIwf1j9tAZm+iM7vHHt6B6xYM+ Zt/y62ud63/c7/p3AyiWaiipQx8FfhQESr69ErVPnA+tYQOwAdhAb7CBUOhTJ6CPFc/Hhj7V 5cLTR23Tbv4W0KequpnqFPRpAfTpGuSAu2RagVRDn5raelq5cjUtW/4BHTx0xDV5rqmro+Xr 36MbplxId2+/2QI+V+UNoHO//A797OVv0nVP/ypJULKPLhEvzfmNzdQg0jIxMT9hyB32N8sS Nkxautc6tmvpZO1YCy1/8Q4Langn8mF5Bj9A+MV55MQXU/5teWNTeHnkJHeFVUeVog7yChh5 v82WEzqlXbx8edJ2ifAUUedxmRz4tY9u046Z7eBX1qByhd+ncw93vwmY/hm3b//Bp7g8F/iz weKzzAGQzk06lfZRoA/X1Zm4SdjVHSdygD6psYmwMUQBQLP9pWdM4tCsO0IfLwgB9In6XDGh T/f2+OrccyOqJjgPOsMGYAOwgeRsIBD6iLmlADga9Klpo+qKo/TaC5PohRdestK4cRPoL888 T+OefYHGvzBfQp+6Vrltu4A+ra1Y3pVpIIH7p1+BVEOf9V99SYPOO4mGnDeYXp3zGuUXyOUF lTXVtG7HWhp+30/o8YP30t21F9BV+QPoHAF8Br3ybbrwvmFUUlGSJPQR8bgE7FADqf5y6Z1I 7HMve7AgiQ03DE+foDyDB2zO5xTLy8h84WW4NGzkSOFNo7yRHO8UhhuXimPSGynYAyasPJ2Z 5EpI4zeZ8ddF1X/3sikezx+9jLuN5UL6MdPdPygv/3K529u8T+ceqF4ddG3VJHDSiEttbzLW 6FKaGLKsR0KjUzQPmaG0TvOYcX/L7/accAOW/gKcXRrzqlAeSVw+5XnjTLaD8mkht7eOMzl3 Qx8JdFS+Xu8n+dA27dzR3u1BoWtoQjSn7G6ApNcryBPC9DxivSR0cMrOnwV7KEmdbhtxu31N fwHwHM8V575uPXTQYd4vCP4pYOh4SkntvWNUWL9zlyPMdhyIK/NjMKm3p66v286UTci+4Gdz 7B2pxrqgNlA2457sB+Xpttd4uivNbrNtnzWXffN2zW7dtq3bhGPPYZ4+fu0QBfrobaQvsXPX UdqJuz2V7cj6hS/Pc9udPNe0Raeepp1LbYJsVx8LTK31L0jCPP+8Y4NjM50bo5ObMOCe0A02 ABuADfRcGwiHPnXHhJeP7enD0Ecs36qqahZwp0kEbW6iPBHPJ/dwBeUfraaSsgaqFMdqbejT 3Azok37cgDt0BwVSDX1++NP/oFPf+zaNr36crrj/Cnp+wgTR52rp821r6Yc3/T1NrZ1EY2vP pquPnkDnbPwOnTT5byzgk8qBeNJIJ36A99tFvxfPcLhhTW61PMOWdqnYFSaIkMuCxIu27Ymj e8Hw3zzJUZ5KUbQwyyMncAoo9fMsVYufpwHD7GVv1tKNgKVxXMfgb/SFh5W41oQFyrOKPzcB kX9efuXSH1r+94lf3+AHnxuguSd5CvqoSRH/5rqELY0wPR9Ue8sYJ+783TBMPyYnh/pE2lmC 5A+qHPjgzUdN8nUAo0/03BoUCqg139NHwyemep+SZVcTeekNZy6hc8MP0+NqufCe88aZMfvt XlFOmW84BNWvk3/roCY+hHFAgalBvOVdOqTR21qfICfiEaHXM9h2ZB3dtuMANneZdQgSbHPK 206HP6y74wm21/K+ZBv3Qh9/O05cdzckjI2xduygYBsw+0OQV5IfEHJDGgckKUDjp7XM37SN ucKmWR8/78J40Mc8znl4Pe70egbZuQOWgmL6mB5dwcvR3P3RDwgHQ+KeOxHpzLMG16LdYQOw AdhANBsIhD61tSQAjoQ+NTXtAvJI6MNgp6qKoU+jDX3KhSeCgD6lNvSpbRUTkXYRzPmY8PaB p093gBIoQ3oVSDX0Oenkk2hC8Tia2fE6Ta+eTiMnjaThw4fTxTdfRBPLn6U7ak6nyw8cR2d9 8S068fm/opuev5jySwpSBn0YKiiAwgNpKqCPX55+MYIYxDiTWTesMF/4GZioCaA5OeEyh8Ug MsvD9dSXdfHSqazQ2Dt+A6w/XNHzdS+b4zzkUjK/BxZ7L/FEuqHRuJcNvVgPZwleWF7h0Cfw Pp0IGqvbjLnkyWlH9a29/4RO18ScJJlAxVpCZ3mZeYGkc64JdszJuelRID3OVDlUPt7+4OSr 11XFLgpeshZ/aZeCOxKMzde84JSXlIJejleOAn+OB0H4MiHlrWJCJL8Jv9sjSgEDL/D1wge/ ib7jWaFrFA/66OeawC1oPDD7l2obtxeWaTveCb+CAmb93PYZZldu2PWwBdjcYMSBPoX08IhH A6CPbqsmQNPbO1h3bxt5oYobLpqxh1QZwjx9gqCP6YETBpEc+1JeNabXWjIxfYKXYgbV02vn wWObBFFuryOnXcwxxL9f+XsBAvpEm9xgEgidYAOwAdiA2wZ8oc+2bdsE2GEPHzf0qaqS0KfS hj5H8iso91AZ5QnoU1xaTxWVwtOHoU9DuwzmDOiTXtqA3LuFAqmGPicO/BHduG0Q3Vl1Dt1V /0t68OCt9ORXT9IjW+6hEUXDBPD5Hp25/tt04rhv0O9n3EjbD2xLKfA5wfaY0Zd6uYOyBnu0 +MUmYcBi5mlCFnkvzpcnr463DU/K1GQ0Eejjn78c/ILK4344xPOOiQ599Hz9JlrhwMcfCCkY Fy1YbnBdHOATfJ/kHpohy/S0ZVwmJAkCJD0R+ijd/Ceq8YGPamOO8aSWwnnjXQV7RTjtpib+ 4UtdTEhlQh+5tErtIOX19NH7vj/08b9/2MTZD9YEQR8H+H0RGg/Mz2tMjjFdD324bU1PtWie PolAH3/dE4U+4R50iXr6JAd93M8kflY4S6wSDeQcBH3ieXuZyxKDgGVU6BPcrwB9knv2YKIL 3WADsAHYgJ8N+EKf7OxsKilpFDt2HRNePranT3WbAEEa9KlupCN5FZSjoE8JQ58mcX4r1QP6 dAsYgUJ0jQKphj4zZs+g0+/8MV20/ji6oeQHNLbuLLq/9koaXfwLunjPP9OZ675FPxHA555Z N9OGPV+mCPjIYM3Ss8QEAO5vOHUPG2dQ8VveFZand0BWy7l0z5iCHStiAX/d0Me9JCl8KYq6 V1h59tHt2m5h5rIrv3g53gHVC1d4YvXIi84yHPcLfgt58+WdtvpZoMtsBz53VEJ5qXr7QZ/g +6TqZcELKGzoFhC7J97yLnNZjxlrw39rY9ODwH+ybE68WYN4y8TCl3dxf7g0tpxKn2BL6BB1 K3D3si7lveNMNN39TgcaDjxg3YOWXzpLiLjOOlzzgz7u5W6JePp4l8ao5WYmfHDr7h4nzDFA X3Klyq+DYj9bdgNENzTT6+xe/uPWLxWePjpkUmBQj5ljxn1xtmwP9lgLWt7lBhNymV8y0Me9 vC2Kp4+f3XmXUrr7XzDIdOKAuZd1pnJ5V1Qb8APvuu0mAn38+5Uf9HGDSRNgpmrsRj6YMMIG YAOwgd5nA77Qp7CwkHbu3CMgjtimXUCf6up2EVOkVUIfAXbY06equoEOHSmnA7lldCS/iooE 9CmvYOjD27a3i5fMDmuJF0+I8QMFerMCqYY+lVU1NOGFiXT+kz+ji9b2p6vzTqArDx1HF+35 JzrzM17S9Q0aPe062rj3qxQBH3dgWn17cbUFO8OX/rG4NP1p2Y6jsXvru3dx7Bq15EgPUOmX p/lA8Xdbd15ylSeCyktf+hQF+oSXR040nHK66xgvf2eXrCwrD33HrVM1z6V+dkwiVXcvXFIB dB1vJycwNcMb7fM4efE9gsol7+v2qkp8i/rwB6IXUHQN9FGAQ02gzUDOzpIt77IaeY3yWnAv 8/B6sqglVf6BnM0lRDqUMif3YV4KfkvZ9KVYOjCQwa714Mbxt4Z3Ly1xYJTeX2TZ9aVCMliz s6RO/e3YhMo3KKCwXmddq7Bd3ExNvZ5hfkDBtFO9XWU93EGJpWZSS3ecmVQu73KgQfzd27wx fYLgpQQFsvzKK8u9xEt9nij00e3BrU3Y8i7vkjE/wOr9zG1rqs+acMwEv/p29/Fi+uiQUO/3 wfX0B6dBthsV+gT3Ky/0MZeFAfr0vkkZJtpoU9gAbCBdNuALfSoqKujIkSO0ffsOys8vE14/ tVRaVkdlZTVUWsqpWvxdRYcOFwvoUyR+l4q4PpVUWFQjzq2j8nIR30fAoWqxmxegT2/GHagb K5Bq6KM6+9NPP0MXjxtEZy/9Rzp3w9/RmWu/FduWfdfBXSkDPup+uodN7G8trkvgVubaFufm luTx8tQHNutcnzgyyuNFfcvvVw75WfwHRVh5zGNuLyZ3fBdzQPbLN0hX97VmTB9nu/jgegZt Ke+NDxRcrvD7pOuBg3zj2yg0Sl6j4DgtyeeZ/vYwY8jEh0DpL1Mq9YoC4lJ5v96bF+L59N62 7Vl9Gu2A9oIN9EQbCIQ+DH7KysqooKDAAkDJpLy8PNq8eTPIABTo1QqkC/rwgDJu3LN0+j0/ oYFz/jYl27L3xEFKlTls+U9667UvtotOeu+Dhyj0hQ0kbwOAC8lrl167S2xJY3rL0l01ileu sGWP8a7FcdgUbAA2ABuADYRCHwY/nUmVlZXw9OnVuAOVS6enjxqgeanX9wf9K/3y7kEp9+7B QwAPAdgAbAA2ABuADcAGYAOwAdgAbAA20HttIC70YW+f4uLipFJJSQmgD7hIr1cgnZ4+GHx7 7+CLtkXbwgZgA7AB2ABsADYAG4ANwAZgA+m2gUDow6Bn586dtHfvfjp8uJDy8orEEi+R8gqt lJd3lA7kHKF92YfpwIE8yj14VMT24WPFIg5QKRUcLaeiInj69HrigQqmLaZPujs/8scDBjYA G4ANwAZgA7AB2ABsADYAG4AN9G4b8IU+paWltG3bdioW27ZXV8fbvavUtXtXNXbvAgbpYwrA 06d3D5J4CKJ9YQOwAdgAbAA2ABuADcAGYAOwgZ5qA77Q58CBA2I5Vy3V1B6ztmyvqWkX8Mfe sr2q2dqyvbq6UXj1VNCBg2WUV1AtAFG92OKdt2xvpfqGdmqytmyXOxvhBwr0ZgUAffAA6KkP AJQbtgsbgA3ABmADsAHYAGwANgAb6N024At9eFlXVVU71QroU1uroE+b+KxFAB8b+tQI6JNf QbmHbOhTytCnWYCiVmqwoU9LC6BPb4YdqJtUIB70qaisE30DCRrABmADsAHYAGwANgAbgA3A BmADsAHYQNfagC/04W3Wa2uJaus06FPTJrx7JPSpYk8fAX3y8isp93A55QtPn5LSButYrQ19 mpuPEaAPsEhfUCAe9OkLGqCOUAAKQAEoAAWgABSAAlAACkABKND9FPCFPjyJrasjkST0qa0V y7ts6FPF0KeaoU+TDX0qKP+ogD5lNvSpa6XGxnaxtOsYtbbC06f7NTlKlGoFAH1SrSjygwJQ AApAASgABaAAFIACUAAKQIFUKBAOfeqPCfAjoU+Ngj7VzcLjR0Kf/IJKOni4QuzUVU2lAvow EKqzoU9LC6BPKhoIeXR/BQB9un8boYRQAApAASgABaAAFIACUAAKQIG+qEAg9KmvF54+OvSp lcu7qmsE9BHAp0akgqOVdEgEcy4orKHScgF9BBCqq2+zgjgD+vRFc+qbdQb06ZvtjlpDASgA BaAAFIACUAAKQAEoAAW6uwKh0KfegD41Yjt2CX04YLOEPocF9DkqoE+ZgD4MheoV9Gk9Rm1t WN7V3Q0A5eu8ApmGPu+snUf/dkkW/fj671JlbXnnK4QcoAAUgAJQAApAASgABaAAFIACUKBX KBAIfRoaSGy9fkxAnA6xZIt38moT3j0m9KmiwyKY89Eihj6NAgZJ6NPc3CHi+QD69AoLQSXi KpBJ6PPmx7PollevoLs23Uxnvvtd+vXjw+OWFydAASiQnALHjh1L7kJcBQWgABSAAlAACkAB KAAFMqRAROjDcX0Y+rTGPH1q2dOnsFps225DnwoJfRoaHOjT3g5Pnwy1K27bhQpkCvosWD2D 7lx4M/1h629obNmvaPjqb9Jx12R1Yc1xKyjQ0xQop7FDB9D0VTkJFjyXhvcbToleFX6TdOSZ YLUCT2edhtKa/X6eg2HHUnX/+PnkrppOA4aOJd8S7l9DQwOOxc8ZZ0ABKAAFoAAUgAJQoHcp EAp9GmKePgL61EnoU8NLuwTcYehzVEAf3ra9sKiWygX04c8t6NPSIZZ2HSNAn95lLKiNvwKZ gD6L1s6lOxfcTGM3XUt/rLuULj/YnwYt+Wv63tXJQ5/po4dTv3797DTANeErF5OoAQHHpCr+ k+mwPIPsSd1r+OjpKTe5sPK4j7EObg3iF4Yn8eY1UhdHV843DB6Y5+vnmsfil48nxs69/e+r 9E4chAQp4gcz/LSJr2jqzyinMUOOp2kJQx+iRL18THvyAxTR8syEdqzTkEDoE3ws9S0WaGWr ptHxQ8b4Qh++Jpq2XVde3AkKQAEoAAWgABSAAplSIBD6NDaSADjHROqwlngx9KmtZejTIuL5 COhT10SFDH3EDl6FxTb0EZ83NraJIM4S+nR0wNMnUw2L+3adAqmGPq2trfTJJ5/QqlWrRB8r dFWkta2FVm9cRjdOvYju3n6zBXyuyhtA5375HfrZy9+kG8edn2TFc+kyMYEqE8tXeLK0esoY 7Vt0CRumrcyxjuWsnOb6hn3N1LEWWMjKyjIm02F5Bhdzjbj3mClTaFjWsJR7VgTXkWjaqGHi vqutOqoUVUw1wc/KOt6YKNuQwdYuXr4MYC4bNS12fy6TA79yaZR2zGwHb1kZFhxPq7PLYm3q BWkSKAxJEoT465Pr03b8malNVHVTeV7y0Cd6KVjTfsKW1rhsqTybwWl8UOfXjl2vXc+HPtHb C2dCASgABaAAFIACUKB3KxAOfRod6FOnoI8AOzHoU1xN+UerqEhAn4rKRgGFGPq0W9CnvR3Q p3ebDmqnFEg19Nm0ZRMNPv8kGnLeYJq1YBaVlZVZt2pqaaSN+9bT6ff/hB4/eC/dXXsBXZU/ gM4RwGfQK9+mix84jWrqq5JuGP2bcYYPQ+xv0fnv410AxpjAW5DEfzIdlGdwIZ3JJgMP3SOD 4dLw0aOtCbX0XnE8Vxi6XC6OSW+k4Il1WHkk9FmTlH4S5uT4gI1wyCA9cdweOHoZc4U3wzAB etSPfozLqx8z8+JrdU8Ibzvay3Sys5P2fkkW+uheMLoHTJBnUvz2laBFeTWZXjX6/XQ4yZ8P FcuY1HUMxRTE5M/GTlX2oHsvSQg6Wtibfp3SgvOUgNRdprHCtsqzV9Nlo1V7RsuT8+Myu23e 7fXlLieX7XLrfNZho7UM6nK6POZx5vQPtwdfPw0wJgJ99Hq6+567PfX8yaWzW2sivb10UOku b1agpw+fp5Z3yWuGC00cT8bUebUlNVzgIigABaAAFIACUAAKdKkCodCnMQD6MNypE54+RRb0 qabiEoY+TcL7p5Uam9pFEGdAny5tRdwsowqkGvr88Kf/Qae+920aX/04XXH/FfTiSy+K4OjN tGHPevrhTX9PU2sn0djas+nqoyfQORu/QydN/hsL+KTyZ9poByjoAEjew29CGN+DQs8zqKz6 vUzgwR5AWQyfbE8c3QuG/2bAoTyVomhhlofzyMpywEHiE0M/bxapS1bA0jiuo1Un3wKLib24 1gRRCkooTxJ1qZmXqR+R2wPHghPWMqf4bRdFT+eccE8fBgF6W60WXl1WKazJudO+7MmkJvxR 2lf30OLzFQhhvZz7ueuqwJkD7bJiHjp8fwea6XWSeTBw88I+6d3GcWYc+CO942Q78rWX2e0d LU8FE5XHFuvMeTteaXp/5DydOnD5pF0ILyvN42tYDDzJZVAyyXpJu48KfSR8UmVhqMWAxWlP t6eZgpQWDDL6srJzbi9H22OWB54sk4RLusdh0PIuL7SWXojKU/H4If6xgBKzc5wNBaAAFIAC UAAKQIGeoUAg9GlqIgFwjgnPnQ5riVddPe/gJZZ38dKuGPSpoXyxxKu4tM6CPnUC+jRZ0EfE 8xFLu3ijE54Q4wcK9GYFUg19Tjr5JJpQPI5mdrxO06un08hJI+n000+nS265mCaWP0t31JxO lx84js764lt04vN/Rb+beCmVVZekTGJ9kmwhHs3rR94kcejjl6dfjCAGMQ7kcEMUhj5uzxZn Um566cSLQWSWh2ulQwOepGclHLjXfwmTnq972Zx118DYIzyxl5Nfo2ntSTrr4fZocecVBn24 /hY0irVncnFu/I0uHPpIjyP2XLE9nOwKSjihPFoYvjmeHFG8sHQPHc5H2ZHbY8wLfYLsze0Z 5QU0jheaG7rwEjyzj3DdnPKMCoQ+QXm6l3fZIFEDlI73ktcGTY8v0y78vaCiQh9bl5iNOvr6 QVvVf+USTserTm9fCV8dO1BtaY5DZr10WwzzVPSOZykbOpERFIACUAAKQAEoAAW6pQKh0KfJ B/ow8KmtU54+NdYOXiUC+lRWadDHjucD6NMt2xyFSrECqYY+Jw78Ed24bRDdWXUO3VX/S3rw 4K305FdP0iNb7qERRcME8Pkenbn+23TiuG/Q3TN/S9l5u1NWI544D7A9ZlSmcZd3xQEHfnma kEXeS3op6N42+uQ9Eejjn7+8S1B53CImE4Mm/jVeLf2bzgE+wVuEx8srbHmX6dXEOrM3UuLe TX7l99PBDYKUh4xckiWXBKnyKm8tPf5RPOgT5jnS1dBHevq44ZIDfcI9fRKBPsrjJQYVY33I HTspDPoEe0ElCH1iZpAa6GPG1uJ3CUCflA3zyAgKQAEoAAWgABToYwpEgD4qrk+75cnDS7gs 6FPfTEUlBvSpbxXLUNpjQZxZS3j69DGL6oPVTTX0mT1/Jp1+54/povXH0Q0lP6CxdWfR/bVX 0ujiX9DFe/6Zzlz3LfqJAD73zf0dbc9JlSedXKahllW4m9E7gfUuq/BbIhSWp9dQlGeA7hnD y0VUbCE39HEvfYoHBeTdwsqTK2J+OLuFeZdKeWPv+NTAE9OHJ6pPxOLCCOAkPBx07bwxfdxB gPV78LlO7JZoeekeIrp+usaxeEwchyZF/ddsDwUXeNkT/63gkh4LSnkA6eBj6tS3rBLFa183 2JC2GFsu5PIQk2BR3cOdrxtWJefpI8vK+bPtHh9b1ufATLdnkVraZ/Yfc8mWG+TI5W7OEqXc VW/ZAcQT8/Rx9yldm6jQR5Zb2aWumQkl9RhU8dpLX/LI+bxlL+8y7Tn68i5nCaUbHskxQe9X KeoCyAYKQAEoAAWgABSAAt1GgUDoI0KIUFPzMbFcKxz68LbtJWX1lqdPvQZ91JIEQJ9u09Yo SJoUSDX0aRJrKydNmkQXPDWQLlrbn67OO4GuPHQcXbTnn+jMz3hJ1zfozldvoB25m1NWIzXh di+vcTw/3BNYGadD/ei7d7G3iFpyFC9Ps/Bm4GYFatT20DKmj7PsQ1/6FA8KWMjHXlbkX0c5 eXW2N3fXMV7+zu5dsnz6jlvDtGU4Ko6JqrtfHB7L60a/JhaYmiflTsyheHnxPXiZWqxOdgwV r9GkOqYPL5XjPLWt6rV7W+2gBV222tEulFxW59RRX6IVHmRbbz+5G1nsfDtWjdTBvVNZOqCP FYOHg0Abu3c5oC3W+touZ2HQRwI+PZCzgmWOvSqokRj0ISv4uOpTujZRoQ+3Neeh2myAa2zg 5YyqjEPEFvDO8kwZq0dvE6e99GPuwOy6PXN+qYA+OiBM2YCKjKAAFIACUAAKQAEo0I0UCIU+ zTr0aZCePtLbR3r6FAtPn8KiaioV0KeqWkCfBunpwzt3Afp0o1ZGUdKqQKqhjyrsc889R5c8 O5jOXvqPdO6Gv6Mz134rti17ztHslNfJ7f1hB3fV7hK4lbm2xbm5JXm8PPVKWOf61ErtWKW8 EvzKIT+LL0lYecxjTm5hE2B5ll++6vrgfK0rjZg+znbxwfUM2lLeLz6QO78ghYK0j69o8Blh 9Q4+ZtZf1ze8NN42cM73HLMPmXajbE1vu6C/dXPzu86BGhKI+HmT6NeZbeDKU+tj8ezKLEuQ jQXlo+rlzcetp6fv2mV0tZJWbhOcOm3ihY7R7SO405vamuV1178zlo5roQAUgAJQAApAASjQ vRUIhD4tLSQAjvT04WDO9Rr0qbOhT4kFfWpc0Edt1w7o070bHqVLnQLpgj5cwueff57OuPdE Gjjnb1OyLXvqat31OZkxfbquBM6OTF13T9yppysQBqF6et2ild+9rbzcQU1d6d7OXvf2ipY3 zoICUAAKQAEoAAWgABSIqkA49GkJgz4tIoCzDn2axS5fbaSgjyoAlndFbQqc11MVSCf0YU14 qdf3B/0rnXfv4J4qEcoNBaAAFIACUAAKQAEoAAWgABSAAhlQIBT6tAjow94+ctv2dhGzp00s 6+IlXi3ib4Y+tVRULDx9yhuousaBPh0djss1oE8GWhW37FIF0g19urQyuBkUgAJQAApAASgA BaAAFIACUAAK9BoFAqFPaysJrx25xCsQ+pQJ6FNSTUUirk8VQ5/GNmpt7SBAn15jH6hIBAUA fSKIhFOgABSAAlAACkABKAAFoAAUgAJQoMsViAR9mpoMT5/aozR70hu0v+QQTR//F7r+irto 5Zc7qTIGfZx6wNOny9sUN+xiBQB9ulhw3A4KQAEoAAWgABSAAlAACkABKAAFIikQDn2Et48M 5iygT6OzvKu+Opt+M3Q07SzaRdcPPJlOGXIKnTz0DjpoQx99Fx1An0jtgJN6sAKAPj248VB0 KAAFoAAUgAJQAApAASgABaBAL1YgEPq0tZFYqsVLvOJAnyG/pTUbPqYrFfRp63BtnQzo04ut B1WzFIgHfSoq6wgJGsAGYAOwAdgAbAA2ABuADcAGYAOwAdhAV9tA8tBn0M9pxNgRNPzUkbSr ZA/daEOfNkAfoJA+pkA86NPH5EB1oQAUgAJQAApAASgABaAAFIACUKCbKBAZ+jTay7vqxe5d 9TV5NPXx++jMk0+ja27+M+1T0KepjQB9uknLohhdpkA86NPY1EJI0AA2ABuADcAGYAOwAdgA bAA2ABuADcAGutoGAqFPe7tY3iWWeKnlXS7oI7Zrb6iroNXL19EhsW17RXkJrV31JZXb0Eef bWN5V5exB9woQwoA+mDg7uqBG/eDzcEGYAOwAdgAbAA2ABuADcAGYANRbCAU+nBcH4Y+zc0d Ytt2GcjZ8vSpLaEV77xHCxcuovkivfHGO/T2ouX05abdVN92zDX1BvTJEInAbbtMAUAfDLZR BlucAzuBDcAGYAOwAdgAbAA2ABuADcAGutoGEoI+DQ029OHduwYOpIFmGnw+jXv5bUCfLsMN uFF3UCDT0Gfh6ln0b5dk0Y+u+y4VlhViKRmW08EGYAOwAdgAbAA2ABuADcAGYAOwAdiAZQOB 0Kejg0R8Ht7By/H0iUGfGgF9Bl9EE155naZNf41efeVF+u/B59KDj99PZw0dA+jTHUgEytBl CmQS+sxdOYNufuVyumvTzXTmu9+lSx47DYM7BnfYAGwANgAbgA3ABmADsAHYAGwANgAbSAT6 HLOWdznQZz/9Zuho2lleR8Uc06d0r9i9azQdrM2h3wL6dBlswI26hwKZgj6zPphGY+bfRH/Y +hsaW/YrGr76m3TcNVkY3DG4wwYCbaCQRg05gSYv25ugRvtoWL/TaFdKbSsdeabKXZp1OpWW 7/TzHAw7lqr7x89n97IpdMKQO6jAp00Kdn5IQwKOdbU7Ne4Xvy2hETSCDcAGYAOwAdhAem0g 3NOHgzlbnj4+0Ie3bP/9/fTM+Ofonjtvp+E29LkJ0Kd7kAiUossUyAT0WbB6Jo2ZdxON3XQt /bHuUrr8YH8atOSv6XtXJw99Jo88jfr162enE1wTPp5EnRBwTA7S/pPpsDyDBnd1r2EjpyQ4 MY8/WIaVx32MdXBrEPYw4gmoo50bDix/8Y7YsaBJqpO31NG/HcKOhdWd4YJZFzMvrm+qoIYf zPArQ/z2Sv0LQCGNHNyfJiUMfcTmBY3NCdmjaU9+bR8tz0xoxzqdEgh9go91XZvuXjaZ+g8e 5Qt92G6iadt15U29LaPs0BQ2ABuADcAGYAOwgWg2kBz0qSuiRa9PovOHnEInc1yfwefQ/U+9 RkfrDtOfbnsWy7u6DDfgRt1BgVRDn5raelq5cjUtW/4BHTx0xDXRrKmro+Xr36MbplxId2+/ 2QI+V+UNoHO//A797OVv0nVP/yqhiakzUO6jS8QEKl9MbHmytGziKO1bdAkIJi3dax3btXSy 6xt2BTWysrKMyXRYnsED1HJx75ETX6RTs4am3LMiuI4tNGnEUHHfFVYdVYr2IOFJeX9atuNo TDsFrCwYxPXQdA2HWfvothGTY/d3ax12zF9PBR6ysvobE3gbfthtmlh94z1c9vm0HX9mliFe Puk4njz0iWYLXGa2h37Clj502VLBDgan0UGi3je7XrueD32it1c67Ax5Qn/YAGwANgAbgA3A BrqPDYRCH2vbdj9Pn4ZWaqivpW0bN9PypR/S8hVfUHFtCzU1tVN7O3bv6g4gAmXoOgVSDX3W f/UlDTrvJBpy3mB6dc5rlF8gl1hU1lTTuh1rafh9P6HHD95Ld9deQFflD6BzBPAZ9Mq36cL7 hlFJRUmS0Mf9zTh72wy2v0Xnv/u7AIwxgbeAhv9kWv+2Xc8z+CHgTDYZwugeGQyXho0caU2o pSeM45nCcONScUx6IwVPrMPKI6HPhwnrZ3oc6HoxwDpVQBxVX1NL6SHk9rDRy8hl0q8POxaU V0PjXh/gkk74ER/66F4wugdMkMdU/PaVoEV5SJleNfr9dDjJnw8Ry5jUdQzkdM+sUS8qe9C9 lyQEvV3Ym36damPOUwJSd5lGCdsq2LGCLhmp7CFanpwfl9lt825PLXc5uWy/ts5nHdZZy6B+ TZfGPMic/uH24Osn+pfyrksE+uj1dPc9d3vq+be4dOayOnVoIb29dEjqLm9WoKePvrxLXnOa 0MTxZEx8eV/3eWnDCzTaAjYAG4ANwAZgA7CBRG0gSejTQtVVhfTeG/aW7W++S4ve+YjKAH26 jjTgTt1GgVRDnx/+9D/o1Pe+TeOrH6cr7r+Cnp8wgaqqa+nzbWvphzf9PU2tnURja8+mq4+e QOds/A6dNPlvLOCTaOcPO3/SSAc2eGGN34QwPkTQ8wxb2qVgE8MUHXgwQMnSvGYYiKgJIf/N Sz2Up1IULczycB5ZWQ44iDoxNMvJnh7KS8m7BMUNRPi4VScjLokCD8pbRK9P0LGgvGR5/D19 skKX7CX7QA2HPgwC9LZaJry6uP5ycu54RbGXUyLtq3tocVsqiMB6Ofdz26mCavJahmNZMQ8d vr+zfEivk8yDbdO5Tukrvds4zowDf6R3nASKfO2ldntHy1NBO+VJxrbAeTteaXp/5DydOnD5 pF2I8mmeaKfGwJOEvTLJekm7jwp9JHxSZWGoxYDFaU+3B5zqz6YHnA5cub0cbZstDzxZJgmX dI/DoOVdXmgtvRCVp2L/wf6xgKKMGzgn2XEB18F2YAOwAdgAbAA2kCkbSG55V20u3fvri2iI vmU7x/QB9Ok2IAIF6ToFUg19Tjr5JJpQPI5mdrxO06un08hJI2n48OF08c0X0cTyZ+mOmtPp 8gPH0VlffItOfP6v6KbnL6b8koKUQR99kswDUyqgj1+efjGCGMQ43jZuWGF6zehAxfTSiReD yCwP11OHBjxJz4oY4yYM+jQ2yUmrE6OnnwF55ITb8wCwJ+JcZ08smMBjAXn5Qh93fd3L+Tr7 QA6HPtLbiT1XbA8nu/4STiiPFoZvjidHFC8s3UOH81F25PYY80KfIHtze2V5AY3jheaGLrw8 z4QmXDenPLcHQp+gPN3QTtZBB5SO95IX8Jng0bRXfy+oqNDH1qVR2Yyjrx+0VdBHLuF0vOr0 9pXw1bED1ZbmOBQW0yfMUzGax2Fn+wCuz9RLLe4L24MNwAZgA7AB2IDXBpKDPjVi965B59K9 j95LPz/lQpo4XWzZDujTdZQBd+pWCqQa+pw48Ed047ZBdGfVOXRX/S/pwYO30pNfPUmPbLmH RhQNE8Dne3Tm+m/TieO+Qb+fcSNtP7AtpcDnBNtjJmhJUpjniF+AXJ6Mm3makEXeS3opmJNZ NTlMBPr45y8HwKDyuB8Q0WPQhC3v8oNJYcFnzYeUd2mdM4iHHUu0LtHzivIi4aedGwQpDxm5 JEsuCVI6Km8tPc5QPOgT5jnS1dBHevq44ZIDfcI9fRKBPsrjJQYrY33I7dUVBn2CvaAShD4x T7XUQB8ztlaDgEqAPlH6Hs7Biz5sADYAG4ANwAZgA4lCn7aQ3bt4y/biXXT90BG04+guusGG Pm2I6dOtgAQKk34FUg19ZsyeQaff+WO6aP1xdEPJD2hs3Vl0f+2VNLr4F3Txnn+mM9d9i34i gM89s26mDXu+TBHwkcs01LIK92DpncB6wYXf8q6wPL2DkfIM0D1ueLmIWu7lhj4ib+HtoHtz xI/HE1aefSLmh7NbmLlUyi9ejqNRuEeSft4w4b2igzEzX/5fj23CdVZahx3jewSX0QtheAL9 SCxejQBh2n1S8aA0IY2CC7zsif9WS+f0WFDKA0gHHy++uMCy7/jQR1+KJW3RHxZKsKju4c7X rVNynj6yrJw/227/2PI5B2a6PYvU0j6z/5hLttwgRy5ndJYo7V62wA7UnZinj7tP6dpEhT6y 3Mpmdc1MkKjHp3KDKG976UseOZ959vIu3eMpzGaje/rIMUHvc6mwf+SBCQdsADYAG4ANwAZg A93JBsI9fWLQp4MaG9upoaGN6utbqb4mm36joM/JQ+miS8VSL0Cf9NMF3KFbKpBq6FNZVUMT XphI5z/5M7pobX+6Ou8EuvLQcXTRnn+iMz/jJV3foNHTrqONe79KEfCR36Lzkhv38pp+scm5 ewIr43SogUzfvYtjxKjlSPHyNAdCM3CzPO5MPmVMH2fZhwRU8oESDwrwOeHlkRNPZxmWu47x 8uflYLFr7bhDqn768hnLO0OL3+ONw8MTbyeukNr5y/GECjrG0McbH8jZvUvq5gTFDbtP5x/S EuZoW89rmljtoAVdttrR1kQuq3PqGB3q6e13ggCFDvRptGPVyPaRx9IJfawYPByY2Ni9y4GZ St+oS8YklNMDOStY5tirgkeJQZ9GO46RV5uo0IeXCXIsJNVmJ7jGBl42qMo4WGwB78To0pc9 mu1lLol0gkPr/Yzzix7Tx4mb5fYYcgOn7vRyhrJ0fhyChtAQNgAbgA3ABmAD0gYCoQ/v3NUm oE9LyzFqbjagT20hLZq9hHLKimjl+2/QFWdcILdsFzF92tqwe1e3JBMoVNoUSDX0UYPT008/ QxePG0RnL/1HOnfD39GZa78V25Z918FdKQM+6n66h417yYgcLAK3Mte2ODe3/o6Xpz4QW+ca AY3Vffm38krwK4f8LP6DLaw85jGnbGETYHVPZ5t3M0aPK19P/bxxeILL4W4Dbyyg+Hnp14Td JxUPyOTq4dZRtWmU9vW2rWMPnmN2O5j5+rWd3j9cfUVrS7/rzFhOft4knvYIylPrY0H91a+c 8jPTLtz/h2kTZAdhNu66Riu3CU6d+3q9BINtx7QPn3hYWtsGaeLtB/HHjlT0CeQBnWEDsAHY AGwANgAbyIQNJAR96mvLaMW7H1NxvZh8NLRQaVkdFZfWUkVFA9VYW7a3AfqkDS0g4+6qQLqg Dw8I48Y9S6ff8xMaOOdvU7IteyYGmVTd04zpk6p84+fj7MgU/1w8yKCRF5JGgVa9Tzf3tvJy BzXHy0nGc5JJ9/bqfTpgTECbwgZgA7AB2ABsADaQWRuIBH2amqSnT331AWtZV44v9OFv3Bj6 dLjm5jwhxg8U6M0KpBP68ADJS72+P+hf6Zd3D0q5dw8G4MwOwNAf+sMGYAOwAdgAbAA2ABuA DcAGYAPptIFA6MNLu1pb5fIuN/QZSbvLqqm8vJqO5JXSoSMllF9QTsUl1VQP6NOb2QbqFqBA uqFPOgcA5I0HDGwANgAbgA3ABmADsAHYAGwANgAb6L02EBn6NChPn4EDaaBfGnoHHWyUnj7H tLA+8PQBK+ntCgD69N4BEg8/tC1sADYAG4ANwAZgA7AB2ABsADbQk20gcegz6DS67rc3029F uvHG39INIt34m5vot7c+TUcE9GkF9OntjAP1MxQA9MFDoCc/BFB22C9sADYAG4ANwAZgA7AB 2ABsoPfaQCD04aVdnJqb5fKumKePHdOnXsT14UDORSU1VFbeQNU1IqYPQ59WePqAivQtBQB9 eu8AiYcf2hY2ABuADcAGYAOwAdgAbAA2ABvoyTYQCn1aWjTo08CBnHPo5p/faQVyltCn1gV9 Gmzo04HlXX2LevTx2saDPhWVdYQEDWADsAHYAGwANgAbgA3ABmADsAHYAGygq20gEvRpbBSe Pgx96uppz86DVFknoU9JEPTRqA9i+vRxItIHqh8P+vQBCVBFKAAFoAAUgAJQAApAASgABaAA FOiGCgRCH/by4Z27eHlXDPrUt1FdfSvVKehTKjx9imuo1F7e1dDQJq7poA5An27Y1ChSuhQA 9EmXssgXCkABKAAFoAAUgAJQAApAASgABTqjQCj0aba2a3egT10dAx8JferY06e0hgqLBPQp q6eq6mbhDSShT3u7s74Lnj6daR5c2xMUAPTpCa2EMkIBKAAFoAAUgAJQAApAASgABfqeAuHQ xwriLKFPvVje5YY+zVQigjg70KdJnNMK6NP3bKjP1xjQp8+bAASAAlAACkABKAAFoAAUgAJQ AAp0SwUCoU9zswri7IU+tZanTzMVW9Cn2vb0kdCnubnd8vQ5Zjv7wNOnW7Y7CpVCBTINfd5Z O4/+7ZIs+vH136XK2vIU1gxZQQEoAAWgABSAAlAACkABKAAFoEBPViAU+jTZnj4NDcLTp156 +tRaSUIf3q79qIA+JWJ5V2WVgD4i3g9DnzZAn55sEyh7ggpkEvq8+fEsuuXVK+iuTTfTme9+ l379+PAES4/ToUDvUuCY+sahd1ULtYECUAAKQAEoAAWgABSAAkkpEA59rKVdx0SsnmDoU1Ao oE9pnQV9OMizBX3ajolgzrI88PRJql1wUQ9SIFPQZ8HqGXTnwpvpD1t/Q2PLfkXDV3+Tjrsm qwcpl7mipgIMdC4P9oZ0Yp+xEvy/+5PU6pPu/FNb2nTlVk5jhw6g6atyErxBLg3vN5wSvSr8 JunIM8FqBZ7OOg2lNfv9PAfDjqXq/vHzyV01nQYMHUvwbYyvFc6AAlAACkABKAAF+rYCgdCn qYm0IM4dAui0U22t8PKpbZGePnXC00fs3OWCPsILqKmpnVpt6MNzGkCfvm1gfaH2mYA+i9bO pTsX3ExjN11Lf6y7lC4/2J8GLflr+t7VyUOf6aOHU79+/ew0wDXhK9+/hgYEHJNt7D+ZDssz yDbUvYaPnp5y84lWHp6M96OxU9ckeH++zq2bk0HYMf02UkenHXTQYB7jtgoHETwx9s+LKOxY ghU3TveDGVHr37k7x7+6nMYMOZ6mJQx9JJRL5Mdta/18AUW0PDOhHes0JBD6BB9LRKHOnZu7 ahodP2RMSqHPmqljKR3jTudqiquhABSAAlAACkABKNA5BUKhT2Ns5y4H+tTEoE+TBX3yhadP sfD0qWBPHwV9Wo9Ru/D0AfTpXOPg6p6hQKqhT2trK33yySe0atUqKiwsdInQ2tZCqzcuoxun XkR3b7/ZAj5X5Q2gc7/8Dv3s5W/SjePOT1K0XLpMTKDK2NtEpNVTxmiTVAkbpq3MsY7lrJzm msDyRInBQlZWljGZDsszuJhrxL3HTJlCw7KGpdyzIriOqjzSi2GIAANjpkSHPmqCn5V1vGei HHbMVIGB12WjpkmvH5GmjRqmTUJtYGG3gzonWEmGBcfT6uyyWJs6E9qwY0maUOyyXJ+248+8 2nT2Tolfnzz0iX4vCQ3ZflQb8e/ybAanQVAwLPdMaNdHoY8Ye4aJ/ocfKAAFoAAUgAJQAAr0 JgUCoU9jI2lLuwT0qWuzPH0s6CNSXR1Dn2rKPyqgT0ktVVQ2WfF+GtnTh6GPiOvDS7zg6dOb zAV18VMg1dBn05ZNNPj8k2jIeYNp1oJZVFZWZt22qaWRNu5bT6ff/xN6/OC9dHftBXRV/gA6 RwCfQa98my5+4DSqqa9KupF0rwOGD0Psb9H57+NdAMaYhFqAwn8yHZRncCGdySYDD90jQ34L P9qaUEvvFcfLhcHK5eKY9EYKnljHKw/nw/fkeycCfeTkPscXbIQdk942bm8dvYzszeBMQsOB hZmX6Qmht2PYsaQNKAHoo3vB6Et0gryP4revBC3Kq8lc9qPfT4eT/PlQAfnUdQzFFMTkzxxv L917SULQ0cLe9OtU9S0bssCcu0xjBQQqz15Nl41WUCFanpwfl9lt826vL3c5uWyXW+ezDhut ZVCX0+UxDzKnf7g9+PoZgDGqp49eT3ffc7ennj+5dHZrTaS3l+554y5vVqinj35v3R64fXUv Pr4X/2/lLXRWWifu6df5noMcoAAUgAJQAApAASiQDgWShj61AvoUWtCnSsAfhj6NFgxqbGyn ltYOQJ90tBby7JYKpBr6/PCn/0GnvvdtGl/9OF1x/xX04ksvilhZzbRhz3r64U1/T1NrJ9HY 2rPp6qMn0Dkbv0MnTf4bC/ik8mfa6GEx2KADIHkPPy+A+B4Uep5BZdXv5QYeYpIovoXPYvjk 4wXDkIaXeihPpShamOXhyaDlnSEuThT6yPuFeWT4H+M6WnXyLbCY2Ls8jqTGWQHL7My8TP1k +eS9wo5F0S78nHBPH56M6221Wnh1cZnkhN5pX/YoUxP+KO2re9Xw+WrSzu3q3M9tp3weQzUH zGXFPHT4/s7yIb1OMg/3dcqLSXq3cZwZB/5I7zgJEfnay+z2jpangonKY4u157zHTFltl1vv j5ynUweul7QLUT7N42tYDDzZsaQ0cCvjHUX19JHwSZWFodYAG2LK9nR7mimAaQEZoy8ryMrt 5Wgrvd1kmSRc0j0Og5Z3+d1b2ZL0JHS8+PS+zh6Ozr073xOQAxSAAlAACkABKAAFuoMCodCn IRbEuUN48diePjUt0tuHoY9Y2pVfUCngTy2VVyjo00YtLR2xYM7w9OkOzYwypFOBVEOfk04+ iSYUj6OZHa/T9OrpNHLSSDr99NPpklsuponlz9IdNafT5QeOo7O++Bad+Pxf0e8mXkpl1SUp q6I+SeZMUwF9/PL0ixHEIMaZkLlBCU/W9KUXureKCWnixSAyy8OTUDnZkzJ2FfQRU+7AWDE8 sdfLxOXSwYZ7CZ511JVXd4U+0uOIPVdsDydbdAknlEcLe+04nhxR2kP30OF8lB25Pca80CfI 3twebl5A43ihuaHLKGt5kBuacN2c8owKhD5BebqXxtnwL8vxbHK8l7xw0fTqMu3C3wsqKvSx dYmFO3L09YO2qv+GgRduL90OVFua41BYTB/z3npbht3bHGNSNqgiIygABaAAFIACUAAKZFCB QOjT0EBi165jYht2XtoloU9NjVjeVdMsEi/xaqKjAvrk5QvoUyShD8OghoY2arahT3s7lndl sG1x6y5SINXQ58SBP6Ibtw2iO6vOobvqf0kPHryVnvzqSXpkyz00omiYAD7fozPXf5tOHPcN unvmbyk7b3fKasoT5wG2x4zKNO7yLuvEYE8fvzxNgCHvJb0UsozJbMwDIAHo45+/vItfeaQX kQMc+G8uR2JLPBL39AlqOAf4BAcP9raLO7fMLu8y4/e4vX+UZ41ckiWXBKnyKm8tPWZRPOgT 5jnS1dBHevq4+4MDfcI9fRKBPsrjJQYCY33IrX0Y9An2gkoQ+sRMLzXQx/FikiCTuSCgT8qG eWQEBaAAFIACUAAK9DEFokOfWgl9qgX04cTQh3fuOmJDnzIBfaoFDLKgT3OHtYMXoE8fs6Y+ Wt1UQ5/Z82fS6Xf+mC5afxzdUPIDGlt3Ft1feyWNLv4FXbznn+nMdd+inwjgc9/c39H2nE0p Ul0u01BLG9yZeiew3mUVftAnLE9vsdW38+7gt6tjsYXc38K7lz7FgwLybiHlsZeM6QGU5cTT xlE+sXd8ahASrDhoeZcZ08cdBFi/B096n9B2FGM99HbwxgcK85QK96LqrFGZ7aHgAi974r/V lul6LCjlAaSDj6lT37KKEq993WBD2qI/LJRgUd3Dna9bk+Q8fWRZOX9e6nR8bCmeAzPdnkVq aZ/Zf8wlW26QI5e7OduV5656yw4gnpinj7tP6dpEhT6y3AqO6pqZUFItpeP2jNde+pJHzuct e3mX7vFk2r/ZV47XAofr9fSrcxBYVmNGYvC3s70H10MBKAAFoAAUgAJQILUKhEKf+pinD2/X ztCnJQZ9ahj6iHg+hwX0OVpUQ2XlEvrUK+gjgjm3tcHTJ7XNhdy6owKphj5NTU00adIkuuCp gXTR2v50dd4JdOWh4+iiPf9EZ37GS7q+QXe+egPtyN2cMjnUhNu9vKZfbHLunsDKOB3qR9+9 i+PNqKCp8fI0C28GblagRm0PbXrjJLocK5HymJAhHnRwduiS3kJ68NmwY35xeJSXkbPVugqO y5NyZ0mPiomidPSLD8SxZGL52DFU1PlhxzprWBLmaFvPa/e22kELumy1o31DLpMTs0jugBUF +ihPM1nXAe7d1+wg4/qx/3975wJjVXXu8ZOJbaMBG7VNbOQxJm18kJBGCpeHQ4MW46s8FJXW q73S9tpBGG5FqrdJc2O8iRctXrg8CuqtVC3NNfc2pmKtjLmSXqlG0AIqSuUhT8GBmWGGt8p3 97fXXmd/a+33mX3Onjnzn+SE4ey91/rWb/33PrP+51trVdP0cdfg4UWgrd27fDOz3GNil7M4 00etZyUXctZmma8RbR5lM33IXXxcZ7gpbopNWtOHpxxyGVqXjcazgacg6hhHO1vA+9Mz1Vo9 4f0lj5kLs0vNcnlxW7bLc43sRaPNTTRTLtoujimjxzQQe3pf4HoQAAEQAAEQAAEQKIJApOlz 9Cg5U7vU9K6urs+cqVthpk87fbT7sDPNi02fY9TZ6Zg+Rz+lEyc+dxZzhulTRIeiztoTyNv0 0S149NFHacojo+jqFy6ga948lyasHVDeln3bvq25N1Rm2JhTRlRV8rhRuZUlI3efSipTluOe G9IqXZ7+hj4sDj0FJAlK2njM8uIGwEE29lbqYXX6cdpr+ujpLOa/+ny7LLO9YesDhZfjRR3d p0kgUxyPizX6mN1+yTe+0iBnQdnWqHfI1o3Urta8ZG/0gwgn7Drf1FCGSFi2SOBeiSpTxJ+k BTuW4LpRpk4C3ASbKOJh7bV17z00yhqzjVO/3mCWYHp9RE9/1O0OiyudVtJrL8XtgFNAAARA AARAAARAoDACsaZPt2P6uOv5eKYPmzpqetcJJ+uHM33aaadj+ux1TJ9PHNOno/MkdWvT5xRM n8J6FRXXlEC1TB9uxIIFC+jb84bRiKfPzmVb9pqCybmy4hZZ9XdkyrlJKK6OCcQZC3XcbNE0 c1t5tYOaPmxuZy+zvfoHG7QSBEAABEAABEAABGpHINL06e4mx8ARps+RT91MHjZ22PThF+/c tWOXY/rsc0yfNs/06T6ttm13TJ/TpzG9q3ZdiZqKIlBN04fbxFO9Lh55IV0/b1RRTUS9IAAC IAACIAACIAACIAACIAACfZBAvOnTfcbJ8vEyfbTp03HSMX6U6cM7d23/6DDt2ddJBx3Tp905 1uWZPidPwvTpg3pAyBUQqLbpU0FIuAQEQAAEQAAEQAAEQAAEQAAEQAAEKNL06eoix8BRps+R I585Jo/K9GFjp6ODTZ/jnulzyMn4cUyfTzzTp+s0HXMyfdj0OXUKmT7QWP0TgOlT/32MFoIA CIAACIAACIAACIAACIBAXyQQavps3LjRMXY4w8c0fTo6lOnT7pk+u/Ycpu0722i3Y/oc+OQo HW7nrdwd0+fYZ2oxZ5g+fVETiDkjAZg+GYHhdBAAARAAARAAARAAARAAARAAgZoQCDV9tm7d SgcPHnd27DrjZPl4mT6dnzpGkDB9Oo/TLmcR523a9DnIpg8v8Hza2bYdpk9Neg+V9AoCMH16 RTcgCBAAARAAARAAARAAARAAARAAAYtAqOmzf/9+euedLY6Jw9u0f+5M6/rMWcfntDJ9HGOH M306Oo/Rzl2H6MPtbbRrTwd97Jg+hw6z6cPbtn9Gx51MH57ixQNi/IBAPRNIMn0Ot3c79xJe YAANQAPQADQADUAD0AA0AA1AA9AANFBbDYSaPocPH6Zdu3bRpk2bac+eNifrp8vZnaub2tqc Xbo+4Ven83sH7fzogGP6fOz8+4m7k9f+j48453bTIWf7djaHOp2dvmD61LPdgbYxgSTTB5RA AARAAARAAARAAARAAARAAARAoAgCkaYPGz9tbW20d+9e1wCq5LV792566623imgX6gSBmhFI Mn2OnzjlZL7hBQbQADQADUAD0AA0AA1AA9AANAANQAO11UCs6cPGT09e7e3tyPSpmfWAiooi ANOntg8tfEiANzQADUAD0AA0AA1AA9AANAANQAPpNADTpyinAPXWDQGYPukeNngogxM0AA1A A9AANAANQAPQADQADUADtdUATJ+6sR7QkKIIFG36/K51JX1tSokuvf182t+2H1PJMJUOGoAG oAFoABqABqABaAAagAagAWjA1QBMn6KcAtRbNwSKNH2eeflJmvH4NLp3wwya8Pvzacq/XImH Ox7u0AA0AA1UqIFjx0/SMXEt/x/fRtb220jwBm9oABqABqABaCBfDcD0qRvrAQ0pikBRps/K Py6n2b+9i3761x9QS9t11NR6Dg36XqniAYo72DFe6mFjv288hL3z9Xvq3OiHVFxZlR6T8cQN 0CLLlzFb8RvXWANBOTA8HtLuOJ5RMUfFGCgrclAa3ofHT9jvmwNb3c/1/wG7n2aOHkpLVr+f 8T75gMY1XEnvVmgkhHOtRpl5/YHAnMbQi++EZQ7GHcur/uRy3lu9lIaOvof25tonyfXW/z0C BuhjaAAagAagAWig3jQA06copwD11g2BIkyfVa1P0exn76KWDd+nn3VPpWk7BtPIP3yRLppe uemzpPlKamho8F5DjQHf3nf+REMjjqmHYvhgOq7MqIeprmtc89KMA/PkD6h08fBgvIFmLvpT xvr5OpMbt5EHpz7XJONAcQw/3z4WrCvaXOhpXMls/brDzIxwNrX/QN1PzaMG0+LMpo8yP7PE a2qtIdSgSFdmEeyY099Fmj7Rx7LopGfnvrd6CQ0eNTNX0+fFRfdQNZ47WXSDc3umC/ADP2gA GoAGoAFoIKgBmD51Yz2gIUURyNv0OdJ1lF5+uZVWv/hH2rFzlzHQPNLdTS+ue57uWPpdmrtp hmv43La7ka55/Ty64lfn0O0PX5dpYCoH6lOcAdQeL3Nn9cKZYpCqzIbFL7zvDnzffWGJMYDl gRKbFKVSyRpMf0DRZUZ/IL3o1N28cBGNKY3NPbMiOR6VxTDKMQaaF6Y3ffQAv1QabA2UecA+ mFZv3ueyY65xg0o2vKbcvaScXbX47rHi/A/oH8Uxux/CPuDyiivbh+cHIX3H79lsivijpHLT Jz0DZRqyfmSG1t7NbJymNeokmyLY9VPTx7k/xzj3WPq+LkLDqBP9Aw1AA9AANAANQAPZNADT pyinAPXWDYG8TZ91b7xOI68fTqOvH0VPPP2ftGevmmLRfqSTXtu8lpruv5we3DGP5nbdSLft aaSJjuEz8vGB9N37x9HBwwcrHrDIrAM2H0Z536Lz74MNA8YahLpGUfhgOqrM6Ae1P9hkw0Nm ZKhv4ZvdAbXKhPGzZtjcmOocU9lI0QPrpHi4HK6T685i+qjB/fsBY8PORrBZqiwgM/tHxsjX y0GoPMYxymNRZVUSV88+SJNNH5kFI6foRGVFJfevMlp0hpQ97UfWJ81Jfn+0Y/Lp69iQ0yYm v+dne8nsJWWC/sTRm7xOM3M15BqkZkwzHRNo7+aXaEqzNhXSlcnlccym5s2sLzNOju0m93zm 8Jo7DeommlrOIPPvDzODr0EYjFlMH9lO894z+1OWf8rgbLI+RbK/pElqxluKzfSRdUs9cP/K LD6ui//vlu1w1qyzZ/pl++OrZ/cY6gI/aAAagAagAWgAGkivAZg+dWM9oCFFEcjb9Lnkm1+n Mc8PpF92Pki3PHALLXjsMero7KL/27iWLrnry7SsazG1dF1N0/cNpYnrz6PhS77kGj55PvgW N/uGgjSA9FSu4PSO5AwKWWbc1C5tNtmGB2cAldh88rKRZBYM/85TPXSmUhoWdjw8GHSzMxyD Lavpo+oLZmTYbVDn+BlMfNxtU+i6JM7APiTjSJsSOpNEtzW6rOxxpeEXfU686cODcdlXq52s Lm6/GtD7/cuZTHrAn6Z/ZVYNn68H7czLr8/UqTbOfNOuVM7Q4fr96UOyTaoMNtyCZp/KbuN1 ZnzzR2XHKRORr53q9Xe6MrVpp7PFmDuX3bzwJa9+adBwmX4bOD6lCyfLSmSbjSkbT3LNLtUu td5RWtNHmU86Fja1hnompupPM8tNm5SuIWPdy9pk5f7y2Z5070UVkzKXZMZh1PSusLq1llQm oZ/FJ+91zsTz607/h1TP7hfUA37QADQADUAD0AA0UF0NwPQpyilAvXVDIG/TZ/i3htNjB+bT U5//mlZ0rqDmxc3U1NREk2dMooWHHqF7joynaR8Ooqv+MoCGLfgC3bVgMu05uDc300cOkvkB nIfpE1Zm2BpBbMT4AzLTrODBmpnZ4g/KbZMmaQ0iOx4ehKrBnnrg1sr00Qssh33Q8cBexlQ+ xzO9mIeZ0aIWaw6W1btMH5XtxJkrXoaTF7MyJ3RGC2ft+JkcafpDZuhwOVpHZsZY0PSJ0puZ lRU0aPwsNNN04Sl4tmnCbfPj+Umk6RNVpjk1TrWhVPIzm/zspfC+luaIbUSGZ0GlNX08LuXF 232+Yaatvn/jjBfuL6kD3Zf2cyhuTR+7btmXcXXbzxj8AVrdP0DBF3yhAWgAGoAGoIHaaACm T91YD2hIUQTyNn2GjbiU7tw4kuZ0TKR7j15LP9/xY3rojYfoF2/fR3d/PM4xfC6iCesG0rD5 Z9E/PXknbfpwY66Gz1AvY0Y/hBOnd3kLOUctkMuDcbtMLltmZviZMjy9whzMljMAMpg+4eWr h2pYPCqLyDcc+HeOI9sUj+QBd5Bl+IPeN3yiFw9OW1ZUBpI0AtKXleaDKWwNGjP7R2fIqClZ akqQHsTrbC2tjzQmXFzmSK1NH5XpY5pLvukTn+mTxfTRGS/l+ygm2yzK9InOgspo+pQz1fIx ffwsJr3rXNB8humT5l7EORhMQAPQADQADUAD0MApgulTlFOAeuuGQN6mz5O/eZLGz7mMJq0b RHcc/Aa1dF9FD3TdSrMOfIcmb/kqTXhtAF3uGD73rZxBb255PSfDR03T0FMbzIdjcAAbnFYR Nr0rrszgB5D+dt5c/Pal8tpC5rfw5tSnNJkgeoex0DZa29Wr8nj6jIozbL2cNBk1tuESzFay 1/QxFwGWdXAM0oTisszBfHB9IN9MCy4wLbNH8s5wsPtDmws87Yl/11umy7WgdAaQND4WLVqV KvPKNACUFsPNQjX9SddhxmmaVZVl+qgsMS6fpzoNLq8z5JuZZmaRntpn3z/2lC2z/9R0N3+7 8vdWr/IWEE82HmUWjNnvkk1a00fFrXUpmdlGolyDKqm/5JRHLudZb3qXrdm46V2DxcLhsp1h bY4ylvUzI5v5iz+u8cc1NAANQAPQADQADfQuDcD0qRvrAQ0pikDepk97xxF67N8X0g0PXUGT 1g6m6buH0q07B9GkLV+hCX/mKV1n0azlt9P699/IyfBR36LzlBtzek1DeXBuDmDVOh36YS53 7yp5i8fy4D6pTPvDwF64WR33B592Nk7W6VhZ4rFNiyRTyd8lS2ULycVneT2X8hbs3jomuu32 Ojx6ipPMdvIXpuZBuZ8FpddEiSqL3680rp5+UCszR2w9L9rt9oNYdNntRy9ThFmxhjQvOUUr fmFtZT6o64aau695i4zLY9U0fdw1eHgRaGv3Lt/M1H8EpJ0y5hhljsEnF3LWZllZV7wWUgWZ Psfdxcd1hpviptikNX04Y4/L0H021Hg28Bo5OsZRzhbw/vRMtVZPeH/JY+bC7PJe4vLitmyX 5xqZhkabr3R2xBNTSsUxZfSYBmJP7wtc37v+AEZ/oD+gAWgAGoAG+osGYPoU5RSg3rohkLfp ox8+Dz/8bzR5/ki6+oUL6Jo3z6UJaweUt2V/d8e7uRk+uj6ZYWNOGVEfCMHpWN4HhZUlI9eV SSpTPmjdc0MWNNbl6W/ow+JQ7yV/cKWNxywvbgAcZCOnJan26SkqYWvu2O+Z59pl2fGbH1TB 8sPa618TF1cyy6QPybhYo4/Z7Zd842MKttU/P3DM05mtG3tNJFvLxr0itBp2nW9qKEMkLFsk cK9ElSnusaj7Vb4frwtTJ3Fsovo4rL1B3Tv8Rdy2cerXG8wSTK+P6OmPcfddOq2k117SvYDj PX+egCEYQgPQADQADUADlWsApk/dWA9oSFEEqmX68INt/vxHaPx9l9OIp8/OZVv2vvywzHsK UnoW/o5M6a+p/KGMOuqDXZyx0D/62NxWXu2g5mc5qfWc1Etme/UPNvWhcfQV+hEagAagAWgA GugbGoDpU5RTgHrrhkA1TR9+kPJUr4tHXkjXzh2Ze3YPHtR940GNfkI/QQPQADQADUAD0AA0 AA1AA9BAJRqA6VM31gMaUhSBaps+ldzYuAYfCNAANAANQAPQADQADUAD0AA0AA1AAzB9inIK UG/dEIDpgwcpPkyhAWgAGoAGoAFoABqABqABaAAa6I0agOlTN9YDGlIUAZg+eLj3xoc7YoIu oQFoABqABqABaAAagAagAWgApk9RTgHqrRsCMH3wIMWHKTQADUAD0AA0AA1AA9AANAANQAO9 UQMwferGekBDiiKQZPocbu8mvMAAGoAGoAFoABqABqABaAAagAagAWig1hqA6VOUU4B664ZA kulTNw1FQ0AABEAABEAABEAABEAABEAABPoUAZg+faq7EGxvJADTpzf2CmICARAAARAAARAA ARAAARAAARCA6QMNgEAPCcD06SFAXA4CIAACIAACIAACIAACIAACIFAVAjB9qoIVhfYnAjB9 +lNvo60gAAIgAAIgAAIgAAIgAAIg0HcIwPTpO32FSHspgaJNn/9Z+yx9bUqJLvv786m961Av pYSwQAAEQAAEQAAEQAAEQAAEQAAEak0Apk+tiaO+uiNQpOnzX/+7kn74xC1074YZNOH359NN DzbVHV80CARAAARAAARAAARAAARAAARAoDICMH0q44arQKBMoCjTZ1XrkzTndzPop3/9AbW0 XUdNrefQoO+VKuiZM3TmzJnQ66LeJwq7Rr1XfokSjff5HKM26zrvoHuNFZVRtluXf4JdBx8J ey88dnWu/aOvF7VEtlGXG81MlRIeU/wxm4Xx/xAOOt4A94h+rkA0ffSSQ9QytpFWrNmWMf7t 1NTQRFmviq+kGmVmbFbk6cxpLL3yt7DMwbhjedWfXM72NSuocWwLIbcxmRXOAAEQAAEQAAEQ 6N8EYPr07/5H63MgUITp899rn6E5q2ZQy4bv08+6p9K0HYNp5B++SBdNr8T0URBWzGqihoYG 79VoDPgO/e0Vaow4pq4OH0zHlRmFXtfVNGtFDr1jFpEuHh6MN1DLslcy1s/Xmdy4AB6c+lyT jAPFMfx8+1iwrvCA84grC4owMyM8hiyl5nPuIZo9eggtz2z6hJuCcTGZWmsINSiSDEJVfhHs mNPoSNMn+lg+vZSmlO1rltOQ0bNzNX1eWdZC1XjupGkPzgEBEAABEAABEACBahGA6VMtsii3 3xDI2/Q5ffo0vfrqq7RmzRrav3+/wfH0p6eodf1qunPZJJq7aYZr+Ny2u5Guef08uuJX59Cd 82+okPt2utkZQLV5mTqtS2eLQaoyG5a/vM3NUtn28nJjAMsDJTYpSqWSNZiOKzM6zFecumcv XUrjSuNyz6yIbqOOR2UxjHaMgdlL05s+eoBfKg2xBso8YB9CrVvbXHbMNW5QyYbXzTOXl7OB ls8cJ87fTjPFMbsfwojmFVc2UW0P6Tt+z2aTrdR8zq7c9ElfvzINWT8y0+rQVjZO0xp1srYi 2PVT08e5P8c59xh+QAAEQAAEQAAEQKCeCMD0qafeRFsKIZC36bPh7Q006obhNPr6UbRy1Upq a2tz23Xi1HFa/8E6Gv/A5fTgjnk0t+tGum1PI010DJ+Rjw+kyf98JR052lExA5l1wObDaO9b dP59iGHAWINQ1ygKH0xHlRkdpD/YZMNDZmSob+FnuQNqlQnjZ82wuTHNOaaykaIH1knxcDlc J9edxfRRg/ttAWPDzkawWaosIDP7R8bI18tBqDzGMcpjUWVVElfFInIvTDZ9ZBaMnKITlRWV 3L/KaNEZUva0H1mfNCf5/bGOyaevY0NOm5j8np/tJbOXlAk6y9GbvE4zczXkGqRmTC2OCXRo ayvdPEubCunK5PI4ZlPzZtaXGSfHNs09nzmsd6dBTaNp5Qwy//4wM/gahMGYxfSR7TTvPbM/ ZflkcDZZm1mH0iQ14y3FZvrIuqUeuH9lFh/z5f+7ZTucNevsmX49u2twNQiAAAiAAAiAAAhU iwBMn2qRRbn9hkDeps8l3/w6jXl+IP2y80G65YFbaNF/LKKTJ0/Sm1vW0SV3fZmWdS2mlq6r afq+oTRx/Xk0fMmXXMMnz5/ls3xDQRpAqo6wAWFyBoUsMypWWZdteHAGUInNJy8bSWbB8O88 1UNnKqVhYcfDg0E3O8O5OKvpo+oLZmTYbbANET7utik0YGdgH5JxpE0JnUmiL40uK3tcafhF nxNv+vBgXPZVq5PVxe1XA3q/fzmTSQ/40/SvzKrh8/WgnXn59Zk61caZb9qVyhk6XL8/fUi2 SZXBhlvQ7FPZbbzOjG/+qOw4ZSLytTd7/Z2uTG3a6Wwx5s5lz17a6tUv70cu028Dx6d04WRZ iWyzcWXjSa4xpdql1jtKa/oo80nHwqZWo2diqv40s9y0SekaMta9rE1W7i+f7Rn3XlQxKXNJ ZhxGTe8Kq1trSWUS+ll88l7nTDy/7p7dBbgaBEAABEAABEAABHoLAZg+vaUnEEefJZC36TP8 W8PpsQPz6anPf00rOldQ8+JmGj9+PE354WRaeOgRuufIeJr24SC66i8DaNiCL9CPFk6lts6D ufGTg2QuNA/TJ6zMsDWC2IjxB2SmWcGDNTOzxR+U2yZN0hpEdjw8CFWDPYWxVqZP1KLSemAv Yyp3sGd6MQ8zoyVqQe7eZfqobCfOXPEynDzoypzQGS2cteNncqTpD5mhw+VoHZkZY0HTJ0pv ZlZW0KDxs9BM04Wn4NmmCbfNj2dmpOkTVaY5NU61oVTyM5v87KXwvpbmiG1EhmdBpTV9PC7l NdB9vmGmrb5/44wX7i+pA92X9nMobk0fu27Zl3F128+Y3B6qKAgEQAAEQAAEQAAECiQA06dA +Ki6PgjkbfoMG3Ep3blxJM3pmEj3Hr2Wfr7jx/TQGw/RL96+j+7+eJxj+FxEE9YNpGHzz6K5 T/0Dbd39Xm4geeDc6GXM6EITp3e5J0Zn+oSVyVfIzAxVl8pSsAez5QyADKZPePmqlrB4VBaR bzjw7xxHtikeyQPuIMvwruOBuM44iOrctGVFZSBJIyB9WWmkFrYGjZn9ozNk1JQsNSVID+J1 tpbcOS3J9InLHKm16aMyfcz7wTd94jN9spg+OuPF3C0vWYPSEInOgspo+pRlkY/p42cx6Z39 guYzTJ809yLOAQEQAAEQAAEQAAEimD5QAQj0kEDeps9vfvsUjZ9zGU1aN4juOPgNaum+ih7o upVmHfgOTd7yVZrw2gC63DF87n/mR7Rp24YeRl+2dtxpGuFGQ3AAG5xWEWb6qKkfSeaFjkAP Rs3Fb1vLawuZ38KbU5+STAFVR0w8cqt553dVHk+f8eyokLV3guCjzA5/AeNgtpK9po+5CLCs g40NaUJxWWYGR3B9IC/6kEWU47Ooeioquz+0ucDTnvh3vWW6XAtKZwBJ42PZsufcUJL61zQA lBbDzUJlLOo6zHJNJpVl+qhYuXye6jSkvM6Qb2aamUV6ap99/9hTtsxFsNV0N3+78u1rnvMW EM9o+hhGqmST1vRRcWtdSma2kSjXoErqLznlkct5zpveJTOebP1Lzaq6w+878x70p8Px9cFM H/XMyGb+9vTuwfUgAAIgAAIgAAIgkC8BmD758kRp/ZBA3qbPiRMnaPHixXTjv46gSWsH0/Td Q+nWnYNo0pav0IQ/85Sus2jOE3fQ5u1v5UZbD7jN6TUN5cG5OYBV63ToH7l7V8lbPJYH90ll 2sHbCzer4/7g087GyTodK0s8tsmQZDr4u2SpbCG5+Cyv51Legt1bx0S33V6HR09xktlO/sLU PED1p/ToNVGiyuL3K42rp8JSZo7Yel602+0Hseiy249ehcyKNaR5ySla8QtrK/NBXddo7r7m LTIuj1XT9HHX4OFFoK3du3wzs9xjYpezONNHmRFyIWdtlpV1xWshucVmM33IXXxcZ7gpbopN WtOHM/a4DN1njcazgdfI0TGOdraA96dnKmM1vL/kMXNhdnkvcXlxW7bLc43sRaPNTc6OeGJK qTimjB7TQOzpfYHrQQAEQAAEQAAEQKAIAjB9iqCOOuuKQN6mj4bz6KOP0pRHRtHVL1xA17x5 Lk1YO6C8Lfu2fVtzZygzbMwpI6qq4HQsLwQrS0buMJVUpmyEe25Iq3R5+lv4sDjUe8lI0sZj lhc3AA6ykdOSvKPR7JwWS156jR87Tt2yqPdlPQGmVv/4x8EKeoIAAAHASURBVPXUmai1gJJ5 xp0RF2v0MTMm3adp+jfYt6KltkbL0jV1Y/aF0rxkb/SDaHzYdb6poQyRsGyRwL0SVaaIP0kL dizBdaPM/g5wE2yi+jesvUHduw+NsvZt49SvN5glmF4fcTd9tL7TaUXe2z27F3A1CIAACIAA CIAACBRJAKZPkfRRd10QqJbpw3AWLFhA3543jEY8fXYu27L3ZeDFLbLq78jUl/kh9toSiDMW ahtJUbWZ28qrHdR0LOZ29jLbq6hoUS8IgAAIgAAIgAAI1CsBmD712rNoV80IVNP04UbwVK+L R15I188bVbM2oSIQAAEQAAEQAAEQAAEQAAEQAIG+TwCmT9/vQ7SgYALVNn0Kbh6qBwEQAAEQ AAEQAAEQAAEQAAEQ6KMEYPr00Y5D2L2HAEyf3tMXiAQEQAAEQAAEQAAEQAAEQAAEQMAnANMH agCBHhKA6dNDgLgcBEAABEAABEAABEAABEAABECgKgRg+lQFKwrtTwRg+vSn3kZbQQAEQAAE QAAEQAAEQAAEQKDvEIDp03f6CpH2UgJJps/h9m7CCwygAWgAGoAGoAFoABqABqABaAAagAZq rYH/B1u/cOyXRxsaAAAAAElFTkSuQmCC --------------000905090301030805060301-- --------------050104070205030705040503--

yes I am able to ping all hosts Thank you, Christian Hernandez 5900 San Fernando Road Glendale, CA 91202 Phone: 877-782-2737 ext. 263 Fax: 818-265-3152 christianh@4over.com <mailto:christianh@4over.com> www.4over.com <http://www.4over.com> On Wed, Apr 25, 2012 at 5:35 PM, Shu Ming <shuming@linux.vnet.ibm.com>wrote:
Can you ping the destination host from the server where engine server is by hostname?
On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
[image: Inline image 1]
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
*2012-04-25 15:27:28,253 WARN [org.ovirt.engine.core.bll.GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version* *2012-04-25 15:27:41,425 INFO [org.ovirt.engine.core.bll.VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212* *2012-04-25 15:27:41,427 INFO [org.ovirt.engine.core.bll.MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d Type: VM* *2012-04-25 15:27:41,431 INFO [org.ovirt.engine.core.bll.VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212* *2012-04-25 15:27:41,439 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost= 192.168.11.212:54321, migrationMethod=ONLINE), log id: 5ece0de4* *2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321, method=online* *2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost= 192.168.11.212:54321, migrationMethod=ONLINE), log id: 5c246e15* *2012-04-25 15:27:41,451 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15* *2012-04-25 15:27:41,466 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4* *2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d. Called from vds cardinal* *2012-04-25 15:27:42,804 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand(vdsId = 77fbced8-8b35-11e1-8da0-0016367ecdf0, vdsDynamic=org.ovirt.engine.core.common.businessentities.VdsDynamic@6c529ae4), log id: 36b80b46* *2012-04-25 15:27:42,814 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand, log id: 36b80b46 * *2012-04-25 15:27:42,819 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d), log id: 207b57d8* *2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Command org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand return value* * Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusOnlyReturnForXmlRpc* *mStatus Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc* *mCode 39* *mMessage Migration destination has an invalid hostname* * * * * *2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Vds: cardinal* *2012-04-25 15:27:42,827 ERROR [org.ovirt.engine.core.vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname* *2012-04-25 15:27:42,827 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8*
What can be the issue?
--Christian
_______________________________________________ Users mailing listUsers@ovirt.orghttp://lists.ovirt.org/mailman/listinfo/users
-- Shu Ming <shuming@linux.vnet.ibm.com> <shuming@linux.vnet.ibm.com> IBM China Systems and Technology Laboratory

On 04/26/2012 04:05 AM, Christian Hernandez wrote:
yes I am able to ping all hosts
can you ping target host from source host?
Thank you,
Christian Hernandez 5900 San Fernando Road Glendale, CA 91202 Phone: 877-782-2737 ext. 263 Fax: 818-265-3152 christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>> www.4over.com <http://www.4over.com/> <http://www.4over.com <http://www.4over.com/>>
On Wed, Apr 25, 2012 at 5:35 PM, Shu Ming <shuming@linux.vnet.ibm.com <mailto:shuming@linux.vnet.ibm.com>> wrote:
Can you ping the destination host from the server where engine server is by hostname?
On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
Inline image 1
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
/2012-04-25 15:27:28,253 WARN [org.ovirt.engine.core.bll.GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version/ /2012-04-25 15:27:41,425 INFO [org.ovirt.engine.core.bll.VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ /2012-04-25 15:27:41,427 INFO [org.ovirt.engine.core.bll.MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d Type: VM/ /2012-04-25 15:27:41,431 INFO [org.ovirt.engine.core.bll.VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ /2012-04-25 15:27:41,439 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5ece0de4/ /2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, method=online/ /2012-04-25 15:27:41,442 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5c246e15/ /2012-04-25 15:27:41,451 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15/ /2012-04-25 15:27:41,466 INFO [org.ovirt.engine.core.vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4/ /2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.vdsbroker.VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d. Called from vds cardinal/ /2012-04-25 15:27:42,804 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand(vdsId = 77fbced8-8b35-11e1-8da0-0016367ecdf0, vdsDynamic=org.ovirt.engine.core.common.businessentities.VdsDynamic@6c529ae4), log id: 36b80b46/ /2012-04-25 15:27:42,814 INFO [org.ovirt.engine.core.vdsbroker.UpdateVdsDynamicDataVDSCommand] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand, log id: 36b80b46/ /2012-04-25 15:27:42,819 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-abf1fdd8aa4d), log id: 207b57d8/ /2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Command org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand return value/ / Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusOnlyReturnForXmlRpc/ /mStatus Class Name: org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc/ /mCode 39/ /mMessage Migration destination has an invalid hostname/ / / / / /2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase] (pool-19-thread-50) Vds: cardinal/ /2012-04-25 15:27:42,827 ERROR [org.ovirt.engine.core.vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname/ /2012-04-25 15:27:42,827 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8/
What can be the issue?
--Christian
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users
-- Shu Ming<shuming@linux.vnet.ibm.com> <mailto:shuming@linux.vnet.ibm.com> IBM China Systems and Technology Laboratory
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

How can I ping the target host from the source host? I am using the ovirt-node image on both the hosts...Is there a way to drop into a shell? --Christian On Thu, Apr 26, 2012 at 4:11 AM, Itamar Heim <iheim@redhat.com> wrote:
On 04/26/2012 04:05 AM, Christian Hernandez wrote:
yes I am able to ping all hosts
can you ping target host from source host?
Thank you,
Christian Hernandez 5900 San Fernando Road Glendale, CA 91202 Phone: 877-782-2737 ext. 263 Fax: 818-265-3152 christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>> www.4over.com <http://www.4over.com/> <http://www.4over.com <http://www.4over.com/>>
On Wed, Apr 25, 2012 at 5:35 PM, Shu Ming <shuming@linux.vnet.ibm.com <mailto:shuming@linux.vnet.**ibm.com <shuming@linux.vnet.ibm.com>>> wrote:
Can you ping the destination host from the server where engine server is by hostname?
On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
Inline image 1
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
/2012-04-25 15:27:28,253 WARN
[org.ovirt.engine.core.bll.**GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version/ /2012-04-25 15:27:41,425 INFO
[org.ovirt.engine.core.bll.**VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-**0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ /2012-04-25 15:27:41,427 INFO
[org.ovirt.engine.core.bll.**MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-**abf1fdd8aa4d Type: VM/ /2012-04-25 15:27:41,431 INFO
[org.ovirt.engine.core.bll.**VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-**0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ /2012-04-25 15:27:41,439 INFO
[org.ovirt.engine.core.**vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-**0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-**abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-**8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5ece0de4/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.**vdsbroker.vdsbroker.** MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-**ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, method=online/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.**vdsbroker.vdsbroker.** MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-**0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-**abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-**8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5c246e15/ /2012-04-25 15:27:41,451 INFO [org.ovirt.engine.core.**vdsbroker.vdsbroker.** MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15/ /2012-04-25 15:27:41,466 INFO
[org.ovirt.engine.core.**vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4/ /2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.**vdsbroker.**VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-**abf1fdd8aa4d. Called from vds cardinal/ /2012-04-25 15:27:42,804 INFO
[org.ovirt.engine.core.**vdsbroker.**UpdateVdsDynamicDataVDSCommand* *] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand**(vdsId = 77fbced8-8b35-11e1-8da0-**0016367ecdf0, vdsDynamic=org.ovirt.engine.**core.common.businessentities.** VdsDynamic@6c529ae4), log id: 36b80b46/ /2012-04-25 15:27:42,814 INFO
[org.ovirt.engine.core.**vdsbroker.**UpdateVdsDynamicDataVDSCommand* *] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand**, log id: 36b80b46/ /2012-04-25 15:27:42,819 INFO
[org.ovirt.engine.core.**vdsbroker.vdsbroker.** MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-**0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-**abf1fdd8aa4d), log id: 207b57d8/ /2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.**vdsbroker.vdsbroker.**BrokerCommandBase] (pool-19-thread-50) Command org.ovirt.engine.core.**vdsbroker.vdsbroker.**MigrateStatusVDSCommand return value/ / Class Name: org.ovirt.engine.core.**vdsbroker.vdsbroker.** StatusOnlyReturnForXmlRpc/ /mStatus Class Name: org.ovirt.engine.core.**vdsbroker.vdsbroker.**StatusForXmlRpc/ /mCode 39/ /mMessage Migration destination has an invalid hostname/ / / / / /2012-04-25 15:27:42,826 INFO [org.ovirt.engine.core.**vdsbroker.vdsbroker.**BrokerCommandBase] (pool-19-thread-50) Vds: cardinal/ /2012-04-25 15:27:42,827 ERROR
[org.ovirt.engine.core.**vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname/ /2012-04-25 15:27:42,827 INFO [org.ovirt.engine.core.**vdsbroker.vdsbroker.** MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8/
What can be the issue?
--Christian
______________________________**_________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/**mailman/listinfo/users<http://lists.ovirt.org/mailman/listinfo/users>
-- Shu Ming<shuming@linux.vnet.ibm.**com <shuming@linux.vnet.ibm.com>> <mailto:shuming@linux.vnet.**ibm.com <shuming@linux.vnet.ibm.com>>
IBM China Systems and Technology Laboratory
______________________________**_________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/**mailman/listinfo/users<http://lists.ovirt.org/mailman/listinfo/users>

On 04/26/2012 06:37 PM, Christian Hernandez wrote:
How can I ping the target host from the source host? I am using the ovirt-node image on both the hosts...Is there a way to drop into a shell?
you should be able to drop to shell from TUI, or even set a password for ssh. mike?
--Christian
On Thu, Apr 26, 2012 at 4:11 AM, Itamar Heim <iheim@redhat.com <mailto:iheim@redhat.com>> wrote:
On 04/26/2012 04:05 AM, Christian Hernandez wrote:
yes I am able to ping all hosts
can you ping target host from source host?
Thank you,
Christian Hernandez 5900 San Fernando Road Glendale, CA 91202 Phone: 877-782-2737 ext. 263 <tel:877-782-2737%20ext.%20263> Fax: 818-265-3152 <tel:818-265-3152> christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>> <mailto:christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>>> www.4over.com <http://www.4over.com> <http://www.4over.com/> <http://www.4over.com <http://www.4over.com/>>
On Wed, Apr 25, 2012 at 5:35 PM, Shu Ming <shuming@linux.vnet.ibm.com <mailto:shuming@linux.vnet.ibm.com> <mailto:shuming@linux.vnet.__ibm.com <mailto:shuming@linux.vnet.ibm.com>>> wrote:
Can you ping the destination host from the server where engine server is by hostname?
On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
Inline image 1
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
/2012-04-25 15:27:28,253 WARN
[org.ovirt.engine.core.bll.__GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version/ /2012-04-25 15:27:41,425 INFO
[org.ovirt.engine.core.bll.__VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-__0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ <http://192.168.11.212/> /2012-04-25 15:27:41,427 INFO
[org.ovirt.engine.core.bll.__MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d Type: VM/ /2012-04-25 15:27:41,431 INFO
[org.ovirt.engine.core.bll.__VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-__0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ <http://192.168.11.212/> /2012-04-25 15:27:41,439 INFO
[org.ovirt.engine.core.__vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-__8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5ece0de4/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-__ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, method=online/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-__8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5c246e15/ /2012-04-25 15:27:41,451 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15/ /2012-04-25 15:27:41,466 INFO
[org.ovirt.engine.core.__vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4/ /2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.__vdsbroker.__VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d. Called from vds cardinal/ /2012-04-25 15:27:42,804 INFO
[org.ovirt.engine.core.__vdsbroker.__UpdateVdsDynamicDataVDSCommand__] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand__(vdsId = 77fbced8-8b35-11e1-8da0-__0016367ecdf0,
vdsDynamic=org.ovirt.engine.__core.common.businessentities.__VdsDynamic@6c529ae4), log id: 36b80b46/ /2012-04-25 15:27:42,814 INFO
[org.ovirt.engine.core.__vdsbroker.__UpdateVdsDynamicDataVDSCommand__] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand__, log id: 36b80b46/ /2012-04-25 15:27:42,819 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d), log id: 207b57d8/ /2012-04-25 15:27:42,826 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__BrokerCommandBase] (pool-19-thread-50) Command
org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand return value/ / Class Name:
org.ovirt.engine.core.__vdsbroker.vdsbroker.__StatusOnlyReturnForXmlRpc/ /mStatus Class Name:
org.ovirt.engine.core.__vdsbroker.vdsbroker.__StatusForXmlRpc/ /mCode 39/ /mMessage Migration destination has an invalid hostname/ / / / / /2012-04-25 15:27:42,826 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__BrokerCommandBase] (pool-19-thread-50) Vds: cardinal/ /2012-04-25 15:27:42,827 ERROR
[org.ovirt.engine.core.__vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname/ /2012-04-25 15:27:42,827 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8/
What can be the issue?
--Christian
_________________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> <mailto:Users@ovirt.org <mailto:Users@ovirt.org>> http://lists.ovirt.org/__mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
-- Shu Ming<shuming@linux.vnet.ibm.__com <mailto:shuming@linux.vnet.ibm.com>> <mailto:shuming@linux.vnet.__ibm.com <mailto:shuming@linux.vnet.ibm.com>>
IBM China Systems and Technology Laboratory
_________________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/__mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

On Thu, 2012-04-26 at 22:17 +0300, Itamar Heim wrote:
On 04/26/2012 06:37 PM, Christian Hernandez wrote:
How can I ping the target host from the source host? I am using the ovirt-node image on both the hosts...Is there a way to drop into a shell?
you should be able to drop to shell from TUI, or even set a password for ssh. mike?
http://ovirt.org/wiki/Node_Troubleshooting#Shell_access
--Christian
On Thu, Apr 26, 2012 at 4:11 AM, Itamar Heim <iheim@redhat.com <mailto:iheim@redhat.com>> wrote:
On 04/26/2012 04:05 AM, Christian Hernandez wrote:
yes I am able to ping all hosts
can you ping target host from source host?
Thank you,
Christian Hernandez 5900 San Fernando Road Glendale, CA 91202 Phone: 877-782-2737 ext. 263 <tel:877-782-2737%20ext.%20263> Fax: 818-265-3152 <tel:818-265-3152> christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>> <mailto:christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>>> www.4over.com <http://www.4over.com> <http://www.4over.com/> <http://www.4over.com <http://www.4over.com/>>
On Wed, Apr 25, 2012 at 5:35 PM, Shu Ming <shuming@linux.vnet.ibm.com <mailto:shuming@linux.vnet.ibm.com> <mailto:shuming@linux.vnet.__ibm.com <mailto:shuming@linux.vnet.ibm.com>>> wrote:
Can you ping the destination host from the server where engine server is by hostname?
On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
Inline image 1
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
/2012-04-25 15:27:28,253 WARN
[org.ovirt.engine.core.bll.__GetConfigurationValueQuery] (http-0.0.0.0-8443-3) calling GetConfigurationValueQuery with null version, using default general for version/ /2012-04-25 15:27:41,425 INFO
[org.ovirt.engine.core.bll.__VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-__0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ <http://192.168.11.212/> /2012-04-25 15:27:41,427 INFO
[org.ovirt.engine.core.bll.__MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d Type: VM/ /2012-04-25 15:27:41,431 INFO
[org.ovirt.engine.core.bll.__VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-__0016367ecdf0, name:bluejay, host_name(ip):192.168.11.212/ <http://192.168.11.212/> /2012-04-25 15:27:41,439 INFO
[org.ovirt.engine.core.__vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-__8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5ece0de4/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand] (pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-__ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, method=online/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand] (pool-19-thread-50) START, MigrateBrokerVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-__8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, migrationMethod=ONLINE), log id: 5c246e15/ /2012-04-25 15:27:41,451 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand] (pool-19-thread-50) FINISH, MigrateBrokerVDSCommand, log id: 5c246e15/ /2012-04-25 15:27:41,466 INFO
[org.ovirt.engine.core.__vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4/ /2012-04-25 15:27:42,798 ERROR [org.ovirt.engine.core.__vdsbroker.__VdsUpdateRunTimeInfo] (QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d. Called from vds cardinal/ /2012-04-25 15:27:42,804 INFO
[org.ovirt.engine.core.__vdsbroker.__UpdateVdsDynamicDataVDSCommand__] (pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand__(vdsId = 77fbced8-8b35-11e1-8da0-__0016367ecdf0,
vdsDynamic=org.ovirt.engine.__core.common.businessentities.__VdsDynamic@6c529ae4), log id: 36b80b46/ /2012-04-25 15:27:42,814 INFO
[org.ovirt.engine.core.__vdsbroker.__UpdateVdsDynamicDataVDSCommand__] (pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand__, log id: 36b80b46/ /2012-04-25 15:27:42,819 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand] (pool-19-thread-50) START, MigrateStatusVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d), log id: 207b57d8/ /2012-04-25 15:27:42,826 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__BrokerCommandBase] (pool-19-thread-50) Command
org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand return value/ / Class Name:
org.ovirt.engine.core.__vdsbroker.vdsbroker.__StatusOnlyReturnForXmlRpc/ /mStatus Class Name:
org.ovirt.engine.core.__vdsbroker.vdsbroker.__StatusForXmlRpc/ /mCode 39/ /mMessage Migration destination has an invalid hostname/ / / / / /2012-04-25 15:27:42,826 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__BrokerCommandBase] (pool-19-thread-50) Vds: cardinal/ /2012-04-25 15:27:42,827 ERROR
[org.ovirt.engine.core.__vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname/ /2012-04-25 15:27:42,827 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand] (pool-19-thread-50) FINISH, MigrateStatusVDSCommand, log id: 207b57d8/
What can be the issue?
--Christian
_________________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> <mailto:Users@ovirt.org <mailto:Users@ovirt.org>> http://lists.ovirt.org/__mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
-- Shu Ming<shuming@linux.vnet.ibm.__com <mailto:shuming@linux.vnet.ibm.com>> <mailto:shuming@linux.vnet.__ibm.com <mailto:shuming@linux.vnet.ibm.com>>
IBM China Systems and Technology Laboratory
_________________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/__mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Thanks for the info! It will help with debugging --Christian On Thu, Apr 26, 2012 at 12:23 PM, Mike Burns <mburns@redhat.com> wrote:
On Thu, 2012-04-26 at 22:17 +0300, Itamar Heim wrote:
On 04/26/2012 06:37 PM, Christian Hernandez wrote:
How can I ping the target host from the source host? I am using the ovirt-node image on both the hosts...Is there a way to drop into a shell?
you should be able to drop to shell from TUI, or even set a password for ssh. mike?
http://ovirt.org/wiki/Node_Troubleshooting#Shell_access
--Christian
On Thu, Apr 26, 2012 at 4:11 AM, Itamar Heim <iheim@redhat.com <mailto:iheim@redhat.com>> wrote:
On 04/26/2012 04:05 AM, Christian Hernandez wrote:
yes I am able to ping all hosts
can you ping target host from source host?
Thank you,
Christian Hernandez 5900 San Fernando Road Glendale, CA 91202 Phone: 877-782-2737 ext. 263 <tel:877-782-2737%20ext.%20263> Fax: 818-265-3152 <tel:818-265-3152> christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>> <mailto:christianh@4over.com <mailto:christianh@4over.com> <mailto:christianh@4over.com <mailto:christianh@4over.com>>> www.4over.com <http://www.4over.com> <http://www.4over.com/> <http://www.4over.com <http://www.4over.com/>>
On Wed, Apr 25, 2012 at 5:35 PM, Shu Ming <shuming@linux.vnet.ibm.com <mailto:shuming@linux.vnet.ibm.com
<mailto:shuming@linux.vnet.__ibm.com <mailto:shuming@linux.vnet.ibm.com>>> wrote:
Can you ping the destination host from the server where
engine
server is by hostname?
On 2012-4-26 6:33, Christian Hernandez wrote:
Hello,
It seems when I try to migrate a VM from one host to another I get this error that says "Migration destination has an invalid hostname"
Screenshot
Inline image 1
I can ping all machines using hostnames (although shouldn't RHEVM and the Hosts be using IPs ?) and they are all are on the same network segment...
Here is the engine.log...
/2012-04-25 15:27:28,253 WARN
[org.ovirt.engine.core.bll.__GetConfigurationValueQuery]
(http-0.0.0.0-8443-3) calling
GetConfigurationValueQuery
with null version, using default general for version/ /2012-04-25 15:27:41,425 INFO
[org.ovirt.engine.core.bll.__VdsSelector] (http-0.0.0.0-8443-2) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-__0016367ecdf0,
name:bluejay,
host_name(ip):192.168.11.212/ <http://192.168.11.212/> /2012-04-25 15:27:41,427 INFO
[org.ovirt.engine.core.bll.__MigrateVmToServerCommand] (pool-19-thread-50) Running command: MigrateVmToServerCommand internal: false. Entities affected : ID: 7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d Type: VM/ /2012-04-25 15:27:41,431 INFO
[org.ovirt.engine.core.bll.__VdsSelector] (pool-19-thread-50) Checking for a specific VDS only - id:77fbced8-8b35-11e1-8da0-__0016367ecdf0,
name:bluejay,
host_name(ip):192.168.11.212/ <http://192.168.11.212/> /2012-04-25 15:27:41,439 INFO
[org.ovirt.engine.core.__vdsbroker.MigrateVDSCommand] (pool-19-thread-50) START, MigrateVDSCommand(vdsId = 54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-__8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321
,
migrationMethod=ONLINE), log id: 5ece0de4/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand]
(pool-19-thread-50) VdsBroker::migrate::Entered (vm_guid=7e871cc7-b81c-4036-__ad9c-abf1fdd8aa4d, srcHost=192.168.11.35, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321>, method=online/ /2012-04-25 15:27:41,442 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand]
(pool-19-thread-50) START,
MigrateBrokerVDSCommand(vdsId =
54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d, srcHost=192.168.11.35, dstVdsId=77fbced8-8b35-11e1-__8da0-0016367ecdf0, dstHost=192.168.11.212:54321 <http://192.168.11.212:54321> <http://192.168.11.212:54321
,
migrationMethod=ONLINE), log id: 5c246e15/ /2012-04-25 15:27:41,451 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateBrokerVDSCommand]
(pool-19-thread-50) FINISH, MigrateBrokerVDSCommand,
log
id: 5c246e15/ /2012-04-25 15:27:41,466 INFO
[org.ovirt.engine.core.__vdsbroker.MigrateVDSCommand] (pool-19-thread-50) FINISH, MigrateVDSCommand, return: MigratingFrom, log id: 5ece0de4/ /2012-04-25 15:27:42,798 ERROR
[org.ovirt.engine.core.__vdsbroker.__VdsUpdateRunTimeInfo]
(QuartzScheduler_Worker-78) Rerun vm 7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d. Called from vds cardinal/ /2012-04-25 15:27:42,804 INFO
[org.ovirt.engine.core.__vdsbroker.__UpdateVdsDynamicDataVDSCommand__]
(pool-19-thread-50) START, UpdateVdsDynamicDataVDSCommand__(vdsId = 77fbced8-8b35-11e1-8da0-__0016367ecdf0,
vdsDynamic=org.ovirt.engine.__core.common.businessentities.__VdsDynamic@6c529ae4 ),
log id: 36b80b46/ /2012-04-25 15:27:42,814 INFO
[org.ovirt.engine.core.__vdsbroker.__UpdateVdsDynamicDataVDSCommand__]
(pool-19-thread-50) FINISH, UpdateVdsDynamicDataVDSCommand__, log id: 36b80b46/ /2012-04-25 15:27:42,819 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand]
(pool-19-thread-50) START,
MigrateStatusVDSCommand(vdsId =
54ec5874-8e2b-11e1-886b-__0016367ecdf0, vmId=7e871cc7-b81c-4036-ad9c-__abf1fdd8aa4d), log id: 207b57d8/ /2012-04-25 15:27:42,826 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__BrokerCommandBase]
(pool-19-thread-50) Command
org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand
return value/ / Class Name:
org.ovirt.engine.core.__vdsbroker.vdsbroker.__StatusOnlyReturnForXmlRpc/
/mStatus Class Name:
org.ovirt.engine.core.__vdsbroker.vdsbroker.__StatusForXmlRpc/
/mCode 39/ /mMessage Migration destination
has an
invalid hostname/ / / / / /2012-04-25 15:27:42,826 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__BrokerCommandBase]
(pool-19-thread-50) Vds: cardinal/ /2012-04-25 15:27:42,827 ERROR
[org.ovirt.engine.core.__vdsbroker.VDSCommandBase] (pool-19-thread-50) Command MigrateStatusVDS execution failed. Exception: VDSErrorException: VDSGenericException: VDSErrorException: Failed in vdscommand to MigrateStatusVDS, error = Migration destination has an invalid hostname/ /2012-04-25 15:27:42,827 INFO
[org.ovirt.engine.core.__vdsbroker.vdsbroker.__MigrateStatusVDSCommand]
(pool-19-thread-50) FINISH, MigrateStatusVDSCommand,
log
id: 207b57d8/
What can be the issue?
--Christian
_________________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> <mailto:Users@ovirt.org <mailto:Users@ovirt.org>> http://lists.ovirt.org/__mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
-- Shu Ming<shuming@linux.vnet.ibm.__com <mailto:shuming@linux.vnet.ibm.com>> <mailto:shuming@linux.vnet.__ibm.com <mailto:shuming@linux.vnet.ibm.com>>
IBM China Systems and Technology Laboratory
_________________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/__mailman/listinfo/users <http://lists.ovirt.org/mailman/listinfo/users>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

Hi all, I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2. The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Regards, Alex

On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk.
Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this: vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this: while api.vms.get(VM_NAME).status.state == "suspended": sleep(1) Can you share that snippet of code so that I can try to reproduce it? -- Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta 3ºD, 28016 Madrid, Spain Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat S.L.

On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk.
Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this: vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this: while api.vms.get(VM_NAME).status.state == "suspended": sleep(1) Can you share that snippet of code so that I can try to reproduce it?

On 04/27/2012 04:06 PM, Juan Hernandez wrote:
On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this:
vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) Yeah, I put 'api.vms.get(vm_name)' in a loop body like above codes. If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this:
while api.vms.get(VM_NAME).status.state == "suspended": sleep(1)
Can you share that snippet of code so that I can try to reproduce it? Okay, I will list my snippet of code in here, you may replace 'logging' with 'print' then remove useless '()' if need. thanks.
<snip> import time, logging from ovirtsdk.api import API from ovirtsdk.xml import params class RHEV(object): """ RHEV class """ def __init__(self, url, username, password): try: self.api = API(url, username, password) except Exception as e: logging.error('could not connect: %s\n' % str(e)) else: logging.info('success: RHEV manager could be reached OK\n') def vm_start(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Starting VM') vm.start() logging.info('Waiting for VM to reach Up status') while vm.status.state != 'up': time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to start VM:\n%s' % str(e)) def vm_suspend(self, vm_name): vm = self.api.vms.get(vm_name) while vm.status.state != 'suspended': try: logging.info('Suspend VM') vm.suspend() logging.info('Waiting for VM to reach suspended status') while vm.status.state != 'suspended': time.sleep(1) except Exception as e: if e.reason == 'Bad Request' \ and 'asynchronous running tasks' in e.detail: logging.warning('VM has asynchronous running tasks, trying again') time.sleep(1) else: logging.error('Failed to suspend VM:\n%s' % str(e)) break def vm_resume(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Resume VM') vm.start() logging.info('Waiting for VM to resume') while vm.status.state != 'up': time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to resume VM:\n%s' % str(e)) </snip>

On 04/27/2012 12:06 PM, Alex Jia wrote:
On 04/27/2012 04:06 PM, Juan Hernandez wrote:
On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this:
vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) Yeah, I put 'api.vms.get(vm_name)' in a loop body like above codes. If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this:
while api.vms.get(VM_NAME).status.state == "suspended": sleep(1)
Can you share that snippet of code so that I can try to reproduce it? Okay, I will list my snippet of code in here, you may replace 'logging' with 'print' then remove useless '()' if need. thanks.
<snip> import time, logging from ovirtsdk.api import API from ovirtsdk.xml import params
class RHEV(object): """ RHEV class """
def __init__(self, url, username, password): try: self.api = API(url, username, password) except Exception as e: logging.error('could not connect: %s\n' % str(e)) else: logging.info('success: RHEV manager could be reached OK\n')
def vm_start(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Starting VM') vm.start() logging.info('Waiting for VM to reach Up status') while vm.status.state != 'up':
I think that the problem is with the line above. The VM object that you get with "self.api.vms.get(vm_name)" is not automatically refreshed, you have to refresh it before each iteration calling the "api.vms.get(...)" method again: while api.vms.get(vm_name).status.state != 'up': Can you try that?
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to start VM:\n%s' % str(e))
def vm_suspend(self, vm_name): vm = self.api.vms.get(vm_name) while vm.status.state != 'suspended': try: logging.info('Suspend VM') vm.suspend() logging.info('Waiting for VM to reach suspended status') while vm.status.state != 'suspended':
Same here ^.
time.sleep(1)
except Exception as e: if e.reason == 'Bad Request' \ and 'asynchronous running tasks' in e.detail: logging.warning('VM has asynchronous running tasks, trying again') time.sleep(1) else: logging.error('Failed to suspend VM:\n%s' % str(e)) break
def vm_resume(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Resume VM') vm.start() logging.info('Waiting for VM to resume') while vm.status.state != 'up':
Same here ^.
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to resume VM:\n%s' % str(e))
</snip>

Hi Juan, Although I haven't try it, I think you're right, I should refresh VM in loop body. In addition, as I said, it will be convenient if we have wait_for_status function like before. Thanks, Alex ----- Original Message ----- From: "Juan Hernandez" <juan.hernandez@redhat.com> To: "Alex Jia" <ajia@redhat.com> Cc: users@ovirt.org, "Rita Wu" <rwu@redhat.com> Sent: Friday, April 27, 2012 8:17:05 PM Subject: Re: [Users] Unable to get latest resource status On 04/27/2012 12:06 PM, Alex Jia wrote:
On 04/27/2012 04:06 PM, Juan Hernandez wrote:
On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this:
vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) Yeah, I put 'api.vms.get(vm_name)' in a loop body like above codes. If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this:
while api.vms.get(VM_NAME).status.state == "suspended": sleep(1)
Can you share that snippet of code so that I can try to reproduce it? Okay, I will list my snippet of code in here, you may replace 'logging' with 'print' then remove useless '()' if need. thanks.
<snip> import time, logging from ovirtsdk.api import API from ovirtsdk.xml import params
class RHEV(object): """ RHEV class """
def __init__(self, url, username, password): try: self.api = API(url, username, password) except Exception as e: logging.error('could not connect: %s\n' % str(e)) else: logging.info('success: RHEV manager could be reached OK\n')
def vm_start(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Starting VM') vm.start() logging.info('Waiting for VM to reach Up status') while vm.status.state != 'up':
I think that the problem is with the line above. The VM object that you get with "self.api.vms.get(vm_name)" is not automatically refreshed, you have to refresh it before each iteration calling the "api.vms.get(...)" method again: while api.vms.get(vm_name).status.state != 'up': Can you try that?
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to start VM:\n%s' % str(e))
def vm_suspend(self, vm_name): vm = self.api.vms.get(vm_name) while vm.status.state != 'suspended': try: logging.info('Suspend VM') vm.suspend() logging.info('Waiting for VM to reach suspended status') while vm.status.state != 'suspended':
Same here ^.
time.sleep(1)
except Exception as e: if e.reason == 'Bad Request' \ and 'asynchronous running tasks' in e.detail: logging.warning('VM has asynchronous running tasks, trying again') time.sleep(1) else: logging.error('Failed to suspend VM:\n%s' % str(e)) break
def vm_resume(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Resume VM') vm.start() logging.info('Waiting for VM to resume') while vm.status.state != 'up':
Same here ^.
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to resume VM:\n%s' % str(e))
</snip>

On 04/27/2012 05:27 PM, Alex Jia wrote:
Although I haven't try it, I think you're right, I should refresh VM in loop body.
Let me know what is the result in your environment.
In addition, as I said, it will be convenient if we have wait_for_status function like before.
I will look into it. I would greatly appreciate if you can open a bug to request and track it.
----- Original Message ----- From: "Juan Hernandez" <juan.hernandez@redhat.com> To: "Alex Jia" <ajia@redhat.com> Cc: users@ovirt.org, "Rita Wu" <rwu@redhat.com> Sent: Friday, April 27, 2012 8:17:05 PM Subject: Re: [Users] Unable to get latest resource status
On 04/27/2012 12:06 PM, Alex Jia wrote:
On 04/27/2012 04:06 PM, Juan Hernandez wrote:
On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this:
vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) Yeah, I put 'api.vms.get(vm_name)' in a loop body like above codes. If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this:
while api.vms.get(VM_NAME).status.state == "suspended": sleep(1)
Can you share that snippet of code so that I can try to reproduce it? Okay, I will list my snippet of code in here, you may replace 'logging' with 'print' then remove useless '()' if need. thanks.
<snip> import time, logging from ovirtsdk.api import API from ovirtsdk.xml import params
class RHEV(object): """ RHEV class """
def __init__(self, url, username, password): try: self.api = API(url, username, password) except Exception as e: logging.error('could not connect: %s\n' % str(e)) else: logging.info('success: RHEV manager could be reached OK\n')
def vm_start(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Starting VM') vm.start() logging.info('Waiting for VM to reach Up status') while vm.status.state != 'up':
I think that the problem is with the line above. The VM object that you get with "self.api.vms.get(vm_name)" is not automatically refreshed, you have to refresh it before each iteration calling the "api.vms.get(...)" method again:
while api.vms.get(vm_name).status.state != 'up':
Can you try that?
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to start VM:\n%s' % str(e))
def vm_suspend(self, vm_name): vm = self.api.vms.get(vm_name) while vm.status.state != 'suspended': try: logging.info('Suspend VM') vm.suspend() logging.info('Waiting for VM to reach suspended status') while vm.status.state != 'suspended':
Same here ^.
time.sleep(1)
except Exception as e: if e.reason == 'Bad Request' \ and 'asynchronous running tasks' in e.detail: logging.warning('VM has asynchronous running tasks, trying again') time.sleep(1) else: logging.error('Failed to suspend VM:\n%s' % str(e)) break
def vm_resume(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Resume VM') vm.start() logging.info('Waiting for VM to resume') while vm.status.state != 'up':
Same here ^.
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to resume VM:\n%s' % str(e))
</snip>

On 04/27/2012 11:30 PM, Juan Hernandez wrote:
On 04/27/2012 05:27 PM, Alex Jia wrote:
Although I haven't try it, I think you're right, I should refresh VM in loop body. Let me know what is the result in your environment. I have tried it and indeed works well for me. In addition, as I said, it will be convenient if we have wait_for_status function like before. I will look into it. I would greatly appreciate if you can open a bug to request and track it.
It's okay for me, I want to know I need to file a fedora bug? which component? because I'm doing these on RHEL6.2.
----- Original Message ----- From: "Juan Hernandez"<juan.hernandez@redhat.com> To: "Alex Jia"<ajia@redhat.com> Cc: users@ovirt.org, "Rita Wu"<rwu@redhat.com> Sent: Friday, April 27, 2012 8:17:05 PM Subject: Re: [Users] Unable to get latest resource status
On 04/27/2012 12:06 PM, Alex Jia wrote:
On 04/27/2012 04:06 PM, Juan Hernandez wrote:
On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this:
vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) Yeah, I put 'api.vms.get(vm_name)' in a loop body like above codes. If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this:
while api.vms.get(VM_NAME).status.state == "suspended": sleep(1)
Can you share that snippet of code so that I can try to reproduce it? Okay, I will list my snippet of code in here, you may replace 'logging' with 'print' then remove useless '()' if need. thanks.
<snip> import time, logging from ovirtsdk.api import API from ovirtsdk.xml import params
class RHEV(object): """ RHEV class """
def __init__(self, url, username, password): try: self.api = API(url, username, password) except Exception as e: logging.error('could not connect: %s\n' % str(e)) else: logging.info('success: RHEV manager could be reached OK\n')
def vm_start(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Starting VM') vm.start() logging.info('Waiting for VM to reach Up status') while vm.status.state != 'up': I think that the problem is with the line above. The VM object that you get with "self.api.vms.get(vm_name)" is not automatically refreshed, you have to refresh it before each iteration calling the "api.vms.get(...)" method again:
while api.vms.get(vm_name).status.state != 'up':
Can you try that?
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to start VM:\n%s' % str(e))
def vm_suspend(self, vm_name): vm = self.api.vms.get(vm_name) while vm.status.state != 'suspended': try: logging.info('Suspend VM') vm.suspend() logging.info('Waiting for VM to reach suspended status') while vm.status.state != 'suspended':
Same here ^.
time.sleep(1)
except Exception as e: if e.reason == 'Bad Request' \ and 'asynchronous running tasks' in e.detail: logging.warning('VM has asynchronous running tasks, trying again') time.sleep(1) else: logging.error('Failed to suspend VM:\n%s' % str(e)) break
def vm_resume(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Resume VM') vm.start() logging.info('Waiting for VM to resume') while vm.status.state != 'up':
Same here ^.
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to resume VM:\n%s' % str(e))
</snip>

Hi Alex, On 04/28/2012 06:19 AM, Alex Jia wrote:
On 04/27/2012 11:30 PM, Juan Hernandez wrote:
On 04/27/2012 05:27 PM, Alex Jia wrote:
Although I haven't try it, I think you're right, I should refresh VM in loop body. Let me know what is the result in your environment. I have tried it and indeed works well for me. In addition, as I said, it will be convenient if we have wait_for_status function like before. I will look into it. I would greatly appreciate if you can open a bug to request and track it.
It's okay for me, I want to know I need to file a fedora bug? which component? because I'm doing these on RHEL6.2.
it's not a bug, since we using RESTful api, you get resource representation which is holding vm metadata relevant only for the given moment, if you want to poll this vm for the status change, you'll have to retrieve it on each iteration. not relevant to vm execution, but we also have /sync execution mode/ (mostly on storage related actions, see our user guide [1]), so you can block action till it get accomplished on server side. [1] http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Virtualization/3.0/html... -- Michael Pasternak RedHat, ENG-Virtualization R&D

Hi Michael, Thanks for your reply, yeah, it's not a bug, I mean whether we may support wait_for_status function in ovirt-engine-sdk like python-rhev, as I said, it will be more convenient for users. so it should be RFE. In addition, I know this user guide, however, I think I need to see it carefully again. Thanks, Alex ----- Original Message ----- From: "Michael Pasternak" <mpastern@redhat.com> To: "Alex Jia" <ajia@redhat.com> Cc: "Juan Hernandez" <juan.hernandez@redhat.com>, users@ovirt.org, "Rita Wu" <rwu@redhat.com>, "Itamar Heim" <iheim@redhat.com> Sent: Saturday, April 28, 2012 7:21:59 PM Subject: Re: [Users] Unable to get latest resource status Hi Alex, On 04/28/2012 06:19 AM, Alex Jia wrote:
On 04/27/2012 11:30 PM, Juan Hernandez wrote:
On 04/27/2012 05:27 PM, Alex Jia wrote:
Although I haven't try it, I think you're right, I should refresh VM in loop body. Let me know what is the result in your environment. I have tried it and indeed works well for me. In addition, as I said, it will be convenient if we have wait_for_status function like before. I will look into it. I would greatly appreciate if you can open a bug to request and track it.
It's okay for me, I want to know I need to file a fedora bug? which component? because I'm doing these on RHEL6.2.
it's not a bug, since we using RESTful api, you get resource representation which is holding vm metadata relevant only for the given moment, if you want to poll this vm for the status change, you'll have to retrieve it on each iteration. not relevant to vm execution, but we also have /sync execution mode/ (mostly on storage related actions, see our user guide [1]), so you can block action till it get accomplished on server side. [1] http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Virtualization/3.0/html... -- Michael Pasternak RedHat, ENG-Virtualization R&D

On 04/28/2012 06:19 AM, Alex Jia wrote:
On 04/27/2012 11:30 PM, Juan Hernandez wrote:
On 04/27/2012 05:27 PM, Alex Jia wrote:
Although I haven't try it, I think you're right, I should refresh VM in loop body. Let me know what is the result in your environment. I have tried it and indeed works well for me. In addition, as I said, it will be convenient if we have wait_for_status function like before. I will look into it. I would greatly appreciate if you can open a bug to request and track it.
It's okay for me, I want to know I need to file a fedora bug? which component? because I'm doing these on RHEL6.2.
ovirt-engine-sdk under https://bugzilla.redhat.com/enter_bug.cgi?product=oVirt
----- Original Message ----- From: "Juan Hernandez"<juan.hernandez@redhat.com> To: "Alex Jia"<ajia@redhat.com> Cc: users@ovirt.org, "Rita Wu"<rwu@redhat.com> Sent: Friday, April 27, 2012 8:17:05 PM Subject: Re: [Users] Unable to get latest resource status
On 04/27/2012 12:06 PM, Alex Jia wrote:
On 04/27/2012 04:06 PM, Juan Hernandez wrote:
On 04/26/2012 05:49 PM, Alex Jia wrote:
I built ovirt-engine-sdk rpm based on git repo 'http://gerrit.ovirt.org/p/ovirt-engine-sdk.git', then the ovirt-engine-sdk works well for me, I can get resource information from Ovirt/RHEVM(3.0) on the rhel6.2.
The only question is I can't get latest resource status when I changed VM from 'suspended' to 'up' status, the api.vms.get(vm_name).status.state is always 'suspended' status, I can get a correct VM status unless I reconnect Ovirt/RHEVM, it's not convenient for users, I remember there are reload and wait_for_status method in old python binding API of RHEV(python-rhev), the wait_for_status method will reload resource then get current resource status, however, I haven't found similar method in ovirt-engine-sdk. Are you sure you are calling api.vms.get(vm_name) each time? Or are you doing something like this:
vm = api.vms.get(vm_name) while vm.status.state == "suspended": sleep(10) Yeah, I put 'api.vms.get(vm_name)' in a loop body like above codes. If you are doing that the vm information is retrieved only once, not each time. If this is the case try something like this:
while api.vms.get(VM_NAME).status.state == "suspended": sleep(1)
Can you share that snippet of code so that I can try to reproduce it? Okay, I will list my snippet of code in here, you may replace 'logging' with 'print' then remove useless '()' if need. thanks.
<snip> import time, logging from ovirtsdk.api import API from ovirtsdk.xml import params
class RHEV(object): """ RHEV class """
def __init__(self, url, username, password): try: self.api = API(url, username, password) except Exception as e: logging.error('could not connect: %s\n' % str(e)) else: logging.info('success: RHEV manager could be reached OK\n')
def vm_start(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Starting VM') vm.start() logging.info('Waiting for VM to reach Up status') while vm.status.state != 'up': I think that the problem is with the line above. The VM object that you get with "self.api.vms.get(vm_name)" is not automatically refreshed, you have to refresh it before each iteration calling the "api.vms.get(...)" method again:
while api.vms.get(vm_name).status.state != 'up':
Can you try that?
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to start VM:\n%s' % str(e))
def vm_suspend(self, vm_name): vm = self.api.vms.get(vm_name) while vm.status.state != 'suspended': try: logging.info('Suspend VM') vm.suspend() logging.info('Waiting for VM to reach suspended status') while vm.status.state != 'suspended': Same here ^.
time.sleep(1)
except Exception as e: if e.reason == 'Bad Request' \ and 'asynchronous running tasks' in e.detail: logging.warning('VM has asynchronous running tasks, trying again') time.sleep(1) else: logging.error('Failed to suspend VM:\n%s' % str(e)) break
def vm_resume(self, vm_name): try: vm = self.api.vms.get(vm_name) if vm.status.state != 'up': logging.info('Resume VM') vm.start() logging.info('Waiting for VM to resume') while vm.status.state != 'up': Same here ^.
time.sleep(1) else: logging.debug('VM already up') except Exception as e: logging.error('Failed to resume VM:\n%s' % str(e))
</snip>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
participants (8)
-
Alex Jia
-
Christian Hernandez
-
Itamar Heim
-
Juan Hernandez
-
Juan Hernandez
-
Michael Pasternak
-
Mike Burns
-
Shu Ming