From scott at pragmatica.us Sun May 29 11:29:09 2016 Content-Type: multipart/mixed; boundary="===============0066942416944193148==" MIME-Version: 1.0 From: Scott Sobotka To: users at ovirt.org Subject: Re: [ovirt-users] oVirt 3.6 with ScaleIO Date: Sun, 29 May 2016 08:29:07 -0700 Message-ID: <154fd220afa.b346d351503298.5675561558231180839@pragmatica.us> --===============0066942416944193148== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_1525593_163252864.1464535747326 Content-Type: text/plain; charset=3D"UTF-8" Content-Transfer-Encoding: 7bit Thank you, Gianluca. = The OpenStack integration with ScaleIO absolutely warrants further investig= ation on my part. It looks like a rather recent addition to ScaleIO, so I'l= l need to run that in a lab setting for a while. It looks like the best lon= g term option. = In the meantime, I think that I might be able to get this working by exposi= ng a few, larger LUNs via NFS running on the ScaleIO nodes. I lose granular= snapshot capabilities and MPIO in ScaleIO that way, though. = If I need real MPIO-type performance on a VM, I guess I can just install th= e ScaleIO client in the guest and access the LUN that way. Also, I plan on learning more about the iSCSI Direct LUN logic in oVirt to = see if there is enough similarity between the output of iscsiadm and the Sc= aleIO SDC/SDS utilities to request a direct ScaleIO integration feature. Th= at might be a nice little side project for a while. Have a great day, --Scott Sobotka ---- On Sun, 29 May 2016 02:45:36 -0700 gianluca.cecchi(a)gmail.com wrote= ---- On Sun, May 29, 2016 at 7:18 AM, Scott Sobotka <scott(a)pragmatica.us>= ; wrote: Has anyone gotten an oVirt hosted engine and shared storage environment run= ning with ScaleIO as the backing storage? = I was thinking that I would just set up iSCSI LUNs in ScaleIO and have oVir= t point directly to one for the hosted engine setup. From there, my plan wa= s to assign disks to VMs as direct LUNs. = Unfortunately, it looks like ScaleIO dropped iSCSI support at around versio= n 1.32 and I'm at a loss as to how I can expose ScaleIO LUNs to oVirt. Thank you, --Scott Sobotka I don't know much of ScaleIO, but at least since Liberty release it can be = configured as a cinder backend driver in Openstack http://docs.openstack.org/liberty/config-reference/content/ScaleIO-cinder-d= river.html http://docs.openstack.org/mitaka/config-reference/block-storage/drivers/emc= -scaleio-driver.html So the more "natural" way that comes to mind is to interface oVirt with cin= der and configure ScaleIO in cinder in similar way as with Ceph backend http://old.ovirt.org/Features/Cinder_Integration But this implies configuring Openstack too and also I don't know how the se= curity part (see ceph authentication in above link), if present in ScaleIO,= could be managed HIH searching a solution Gianluca ------=3D_Part_1525593_163252864.1464535747326 Content-Type: text/html; charset=3D"UTF-8" Content-Transfer-Encoding: quoted-printable = =3D
Thank you, Gianluca.

= =3D The OpenStack integration with ScaleIO absolutely warrants further investig= =3D ation on my part. It looks like a rather recent addition to ScaleIO, so I'l= =3D l need to run that in a lab setting for a while. It looks like the best lon= =3D g term option. 

In the meantime, I t= =3D hink that I might be able to get this working by exposing a few, larger LUN= =3D s via NFS running on the ScaleIO nodes. I lose granular snapshot capabiliti= =3D es and MPIO in ScaleIO that way, though. 

If I need real MPIO-type performance on a VM, I guess I can just inst= =3D all the ScaleIO client in the guest and access the LUN that way.
<= =3D div>
Also, I plan on learning more about the iSCSI Direct LUN= =3D logic in oVirt to see if there is enough similarity between the output of = =3D iscsiadm and the ScaleIO SDC/SDS utilities to request a direct ScaleIO inte= =3D gration feature. That might be a nice little side project for a while.
<= =3D /div>

Have a great day,
--Scott Sobot= =3D ka

---- On Sun, 29 May 2016 02:45:3= =3D 6 -0700 =3D gianluca.cecchi(a)gmail.com wrote ----

=3D

On Sun, May 29, 2016 at 7:18 AM, Scott S= =3D obotka <s=3D cott(a)pragmatica.us> wrote:

Has anyone go= =3D tten an oVirt hosted engine and shared storage environment running with Sca= =3D leIO as the backing storage?

I was thinking t= =3D hat I would just set up iSCSI LUNs in ScaleIO and have oVirt point directly= =3D to one for the hosted engine setup. From there, my plan was to assign disk= =3D s to VMs as direct LUNs.

Unfortunately, it lo= =3D oks like ScaleIO dropped iSCSI support at around version 1.32 and I'm at a = =3D loss as to how I can expose ScaleIO LUNs to oVirt.

= =3D
Thank you,
--Scott Sobotka
I don't know much of ScaleIO, but at least since= =3D Liberty release it can be configured as a cinder backend driver in Opensta= =3D ck
So the more "natural" way that comes = =3D to mind is to interface oVirt with cinder and configure ScaleIO in cinder i= =3D n similar way as with Ceph backend
But this implies co= =3D nfiguring Openstack too and also I don't know how the security part (see ce= =3D ph authentication in above link), if present in ScaleIO, could be managed
HIH searching a solution
Gianlu= =3D ca



= =3D

------=3D_Part_1525593_163252864.1464535747326-- --===============0066942416944193148== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzE1MjU1OTNfMTYzMjUyODY0LjE0NjQ1MzU3NDczMjYKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJVVEYtOCIKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKVGhhbmsgeW91LCBHaWFubHVjYS4gCgoKClRoZSBPcGVuU3RhY2sgaW50ZWdyYXRpb24g d2l0aCBTY2FsZUlPIGFic29sdXRlbHkgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9u IG15IHBhcnQuIEl0IGxvb2tzIGxpa2UgYSByYXRoZXIgcmVjZW50IGFkZGl0aW9uIHRvIFNjYWxl SU8sIHNvIEknbGwgbmVlZCB0byBydW4gdGhhdCBpbiBhIGxhYiBzZXR0aW5nIGZvciBhIHdoaWxl LiBJdCBsb29rcyBsaWtlIHRoZSBiZXN0IGxvbmcgdGVybSBvcHRpb24uIAoKCgpJbiB0aGUgbWVh bnRpbWUsIEkgdGhpbmsgdGhhdCBJIG1pZ2h0IGJlIGFibGUgdG8gZ2V0IHRoaXMgd29ya2luZyBi eSBleHBvc2luZyBhIGZldywgbGFyZ2VyIExVTnMgdmlhIE5GUyBydW5uaW5nIG9uIHRoZSBTY2Fs ZUlPIG5vZGVzLiBJIGxvc2UgZ3JhbnVsYXIgc25hcHNob3QgY2FwYWJpbGl0aWVzIGFuZCBNUElP IGluIFNjYWxlSU8gdGhhdCB3YXksIHRob3VnaC4gCgoKCklmIEkgbmVlZCByZWFsIE1QSU8tdHlw ZSBwZXJmb3JtYW5jZSBvbiBhIFZNLCBJIGd1ZXNzIEkgY2FuIGp1c3QgaW5zdGFsbCB0aGUgU2Nh bGVJTyBjbGllbnQgaW4gdGhlIGd1ZXN0IGFuZCBhY2Nlc3MgdGhlIExVTiB0aGF0IHdheS4KCgoK QWxzbywgSSBwbGFuIG9uIGxlYXJuaW5nIG1vcmUgYWJvdXQgdGhlIGlTQ1NJIERpcmVjdCBMVU4g bG9naWMgaW4gb1ZpcnQgdG8gc2VlIGlmIHRoZXJlIGlzIGVub3VnaCBzaW1pbGFyaXR5IGJldHdl ZW4gdGhlIG91dHB1dCBvZiBpc2NzaWFkbSBhbmQgdGhlIFNjYWxlSU8gU0RDL1NEUyB1dGlsaXRp ZXMgdG8gcmVxdWVzdCBhIGRpcmVjdCBTY2FsZUlPIGludGVncmF0aW9uIGZlYXR1cmUuIFRoYXQg bWlnaHQgYmUgYSBuaWNlIGxpdHRsZSBzaWRlIHByb2plY3QgZm9yIGEgd2hpbGUuCgoKCkhhdmUg YSBncmVhdCBkYXksCgotLVNjb3R0IFNvYm90a2EKCgoKCi0tLS0gT24gU3VuLCAyOSBNYXkgMjAx NiAwMjo0NTozNiAtMDcwMCAgZ2lhbmx1Y2EuY2VjY2hpQGdtYWlsLmNvbSAgd3JvdGUgLS0tLQoK CgoKCk9uIFN1biwgTWF5IDI5LCAyMDE2IGF0IDc6MTggQU0sIFNjb3R0IFNvYm90a2EgJmx0O3Nj b3R0QHByYWdtYXRpY2EudXMmZ3Q7IHdyb3RlOgoKCgpIYXMgYW55b25lIGdvdHRlbiBhbiBvVmly dCBob3N0ZWQgZW5naW5lIGFuZCBzaGFyZWQgc3RvcmFnZSBlbnZpcm9ubWVudCBydW5uaW5nIHdp dGggU2NhbGVJTyBhcyB0aGUgYmFja2luZyBzdG9yYWdlPyAKCgoKSSB3YXMgdGhpbmtpbmcgdGhh dCBJIHdvdWxkIGp1c3Qgc2V0IHVwIGlTQ1NJIExVTnMgaW4gU2NhbGVJTyBhbmQgaGF2ZSBvVmly dCBwb2ludCBkaXJlY3RseSB0byBvbmUgZm9yIHRoZSBob3N0ZWQgZW5naW5lIHNldHVwLiBGcm9t IHRoZXJlLCBteSBwbGFuIHdhcyB0byBhc3NpZ24gZGlza3MgdG8gVk1zIGFzIGRpcmVjdCBMVU5z LiAKCgoKVW5mb3J0dW5hdGVseSwgaXQgbG9va3MgbGlrZSBTY2FsZUlPIGRyb3BwZWQgaVNDU0kg c3VwcG9ydCBhdCBhcm91bmQgdmVyc2lvbiAxLjMyIGFuZCBJJ20gYXQgYSBsb3NzIGFzIHRvIGhv dyBJIGNhbiBleHBvc2UgU2NhbGVJTyBMVU5zIHRvIG9WaXJ0LgoKCgpUaGFuayB5b3UsCgotLVNj b3R0IFNvYm90a2EKCgoKCgpJIGRvbid0IGtub3cgbXVjaCBvZiBTY2FsZUlPLCBidXQgYXQgbGVh c3Qgc2luY2UgTGliZXJ0eSByZWxlYXNlIGl0IGNhbiBiZSBjb25maWd1cmVkIGFzIGEgY2luZGVy IGJhY2tlbmQgZHJpdmVyIGluIE9wZW5zdGFjawoKaHR0cDovL2RvY3Mub3BlbnN0YWNrLm9yZy9s aWJlcnR5L2NvbmZpZy1yZWZlcmVuY2UvY29udGVudC9TY2FsZUlPLWNpbmRlci1kcml2ZXIuaHRt bAoKaHR0cDovL2RvY3Mub3BlbnN0YWNrLm9yZy9taXRha2EvY29uZmlnLXJlZmVyZW5jZS9ibG9j ay1zdG9yYWdlL2RyaXZlcnMvZW1jLXNjYWxlaW8tZHJpdmVyLmh0bWwKCgpTbyB0aGUgbW9yZSAi bmF0dXJhbCIgd2F5IHRoYXQgY29tZXMgdG8gbWluZCBpcyB0byBpbnRlcmZhY2Ugb1ZpcnQgd2l0 aCBjaW5kZXIgYW5kIGNvbmZpZ3VyZSBTY2FsZUlPIGluIGNpbmRlciBpbiBzaW1pbGFyIHdheSBh cyB3aXRoIENlcGggYmFja2VuZAoKaHR0cDovL29sZC5vdmlydC5vcmcvRmVhdHVyZXMvQ2luZGVy X0ludGVncmF0aW9uCgoKQnV0IHRoaXMgaW1wbGllcyBjb25maWd1cmluZyBPcGVuc3RhY2sgdG9v IGFuZCBhbHNvIEkgZG9uJ3Qga25vdyBob3cgdGhlIHNlY3VyaXR5IHBhcnQgKHNlZSBjZXBoIGF1 dGhlbnRpY2F0aW9uIGluIGFib3ZlIGxpbmspLCBpZiBwcmVzZW50IGluIFNjYWxlSU8sIGNvdWxk IGJlIG1hbmFnZWQKCgpISUggc2VhcmNoaW5nIGEgc29sdXRpb24KCgpHaWFubHVjYQoKCgoKCgoK CgoKCgoKCgoKCi0tLS0tLT1fUGFydF8xNTI1NTkzXzE2MzI1Mjg2NC4xNDY0NTM1NzQ3MzI2CkNv bnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJVVEYtOCIKQ29udGVudC1UcmFuc2Zlci1F bmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0Mv L0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+PGh0bWw+PGhlYWQ+PQo8bWV0YSBjb250 ZW50PTNEInRleHQvaHRtbDtjaGFyc2V0PTNEVVRGLTgiIGh0dHAtZXF1aXY9M0QiQ29udGVudC1U eXBlIj48L2g9CmVhZD48Ym9keSA+PGRpdiBzdHlsZT0zRCdmb250LXNpemU6MTBwdDtmb250LWZh bWlseTpWZXJkYW5hLEFyaWFsLEhlbHZldGljYT0KLHNhbnMtc2VyaWY7Jz48ZGl2PjxkaXY+VGhh bmsgeW91LCBHaWFubHVjYS4gPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PQpUaGUgT3Bl blN0YWNrIGludGVncmF0aW9uIHdpdGggU2NhbGVJTyBhYnNvbHV0ZWx5IHdhcnJhbnRzIGZ1cnRo ZXIgaW52ZXN0aWc9CmF0aW9uIG9uIG15IHBhcnQuIEl0IGxvb2tzIGxpa2UgYSByYXRoZXIgcmVj ZW50IGFkZGl0aW9uIHRvIFNjYWxlSU8sIHNvIEknbD0KbCBuZWVkIHRvIHJ1biB0aGF0IGluIGEg bGFiIHNldHRpbmcgZm9yIGEgd2hpbGUuIEl0IGxvb2tzIGxpa2UgdGhlIGJlc3QgbG9uPQpnIHRl cm0gb3B0aW9uLiZuYnNwOzxicj48L2Rpdj48ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SW4gdGhl IG1lYW50aW1lLCBJIHQ9CmhpbmsgdGhhdCBJIG1pZ2h0IGJlIGFibGUgdG8gZ2V0IHRoaXMgd29y a2luZyBieSBleHBvc2luZyBhIGZldywgbGFyZ2VyIExVTj0KcyB2aWEgTkZTIHJ1bm5pbmcgb24g dGhlIFNjYWxlSU8gbm9kZXMuIEkgbG9zZSBncmFudWxhciBzbmFwc2hvdCBjYXBhYmlsaXRpPQpl cyBhbmQgTVBJTyBpbiBTY2FsZUlPIHRoYXQgd2F5LCB0aG91Z2guJm5ic3A7PGJyPjwvZGl2Pjxk aXY+PGJyPjwvZGl2PjxkaXY9Cj48ZGl2PklmIEkgbmVlZCByZWFsIE1QSU8tdHlwZSBwZXJmb3Jt YW5jZSBvbiBhIFZNLCBJIGd1ZXNzIEkgY2FuIGp1c3QgaW5zdD0KYWxsIHRoZSBTY2FsZUlPIGNs aWVudCBpbiB0aGUgZ3Vlc3QgYW5kIGFjY2VzcyB0aGUgTFVOIHRoYXQgd2F5Ljxicj48L2Rpdj48 PQpkaXY+PGJyPjwvZGl2PjxkaXY+QWxzbywgSSBwbGFuIG9uIGxlYXJuaW5nIG1vcmUgYWJvdXQg dGhlIGlTQ1NJIERpcmVjdCBMVU49CiBsb2dpYyBpbiBvVmlydCB0byBzZWUgaWYgdGhlcmUgaXMg ZW5vdWdoIHNpbWlsYXJpdHkgYmV0d2VlbiB0aGUgb3V0cHV0IG9mID0KaXNjc2lhZG0gYW5kIHRo ZSBTY2FsZUlPIFNEQy9TRFMgdXRpbGl0aWVzIHRvIHJlcXVlc3QgYSBkaXJlY3QgU2NhbGVJTyBp bnRlPQpncmF0aW9uIGZlYXR1cmUuIFRoYXQgbWlnaHQgYmUgYSBuaWNlIGxpdHRsZSBzaWRlIHBy b2plY3QgZm9yIGEgd2hpbGUuPGJyPjw9Ci9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5IYXZlIGEg Z3JlYXQgZGF5LDxicj48L2Rpdj48ZGl2PjxkaXY+LS1TY290dCBTb2JvdD0Ka2E8YnI+PC9kaXY+ PC9kaXY+PGRpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pi0tLS0gT24gU3VuLCAyOSBNYXkgMjAxNiAw Mjo0NTozPQo2IC0wNzAwIDxiPiA8YSBocmVmPTNEIm1haWx0bzpnaWFubHVjYS5jZWNjaGlAZ21h aWwuY29tIiB0YXJnZXQ9M0QiX2JsYW5rIj49CmdpYW5sdWNhLmNlY2NoaUBnbWFpbC5jb208L2E+ IDwvYj4gd3JvdGUgLS0tLTxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pj0KPGRpdj48ZGl2 PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj5PbiBTdW4sIE1heSAyOSwgMjAxNiBhdCA3OjE4IEFN LCBTY290dCBTPQpvYm90a2EgPHNwYW4+Jmx0OzxhIGhyZWY9M0QibWFpbHRvOnNjb3R0QHByYWdt YXRpY2EudXMiIHRhcmdldD0zRCJfYmxhbmsiPnM9CmNvdHRAcHJhZ21hdGljYS51czwvYT4mZ3Q7 PC9zcGFuPiB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9M0QibWFyZz0KaW46IDAu MHB4IDAuMHB4IDAuMHB4IDAuOGV4O2JvcmRlci1sZWZ0OiAxLjBweCBzb2xpZCByZ2IoMjA0LDIw NCwyMDQpO3BhZGRpPQpuZy1sZWZ0OiAxLjBleDsiPjxkaXY+PHU+PC91Pjxicj48L2Rpdj48ZGl2 PjxkaXYgc3R5bGU9M0QiZm9udC1zaXplOiAxMC4wcHQ9Cjtmb250LWZhbWlseTogVmVyZGFuYSAs IEFyaWFsICwgSGVsdmV0aWNhICwgc2Fucy1zZXJpZjsiPjxkaXY+SGFzIGFueW9uZSBnbz0KdHRl biBhbiBvVmlydCBob3N0ZWQgZW5naW5lIGFuZCBzaGFyZWQgc3RvcmFnZSBlbnZpcm9ubWVudCBy dW5uaW5nIHdpdGggU2NhPQpsZUlPIGFzIHRoZSBiYWNraW5nIHN0b3JhZ2U/IDxicj48L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2Pkkgd2FzIHRoaW5raW5nIHQ9CmhhdCBJIHdvdWxkIGp1c3Qgc2V0 IHVwIGlTQ1NJIExVTnMgaW4gU2NhbGVJTyBhbmQgaGF2ZSBvVmlydCBwb2ludCBkaXJlY3RseT0K IHRvIG9uZSBmb3IgdGhlIGhvc3RlZCBlbmdpbmUgc2V0dXAuIEZyb20gdGhlcmUsIG15IHBsYW4g d2FzIHRvIGFzc2lnbiBkaXNrPQpzIHRvIFZNcyBhcyBkaXJlY3QgTFVOcy4gPGJyPjwvZGl2Pjxk aXY+PGJyPjwvZGl2PjxkaXY+VW5mb3J0dW5hdGVseSwgaXQgbG89Cm9rcyBsaWtlIFNjYWxlSU8g ZHJvcHBlZCBpU0NTSSBzdXBwb3J0IGF0IGFyb3VuZCB2ZXJzaW9uIDEuMzIgYW5kIEknbSBhdCBh ID0KbG9zcyBhcyB0byBob3cgSSBjYW4gZXhwb3NlIFNjYWxlSU8gTFVOcyB0byBvVmlydC48YnI+ PC9kaXY+PGRpdj48YnI+PC9kaXY+PQo8ZGl2PlRoYW5rIHlvdSw8YnI+PC9kaXY+PGRpdj4tLVNj b3R0IFNvYm90a2E8YnI+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3E9CnVvdGU+PC9kaXY+PC9k aXY+PGRpdj48ZGl2PkkgZG9uJ3Qga25vdyBtdWNoIG9mIFNjYWxlSU8sIGJ1dCBhdCBsZWFzdCBz aW5jZT0KIExpYmVydHkgcmVsZWFzZSBpdCBjYW4gYmUgY29uZmlndXJlZCBhcyBhIGNpbmRlciBi YWNrZW5kIGRyaXZlciBpbiBPcGVuc3RhPQpjazxicj48L2Rpdj48ZGl2PjxhIGhyZWY9M0QiaHR0 cDovL2RvY3Mub3BlbnN0YWNrLm9yZy9saWJlcnR5L2NvbmZpZy1yZWZlcmU9Cm5jZS9jb250ZW50 L1NjYWxlSU8tY2luZGVyLWRyaXZlci5odG1sIiB0YXJnZXQ9M0QiX2JsYW5rIj5odHRwOi8vZG9j cy5vcGVucz0KdGFjay5vcmcvbGliZXJ0eS9jb25maWctcmVmZXJlbmNlL2NvbnRlbnQvU2NhbGVJ Ty1jaW5kZXItZHJpdmVyLmh0bWw8L2E+PGJyPQo+PC9kaXY+PGRpdj48YSBocmVmPTNEImh0dHA6 Ly9kb2NzLm9wZW5zdGFjay5vcmcvbWl0YWthL2NvbmZpZy1yZWZlcmVuY2UvYmw9Cm9jay1zdG9y YWdlL2RyaXZlcnMvZW1jLXNjYWxlaW8tZHJpdmVyLmh0bWwiIHRhcmdldD0zRCJfYmxhbmsiPmh0 dHA6Ly9kb2NzLj0Kb3BlbnN0YWNrLm9yZy9taXRha2EvY29uZmlnLXJlZmVyZW5jZS9ibG9jay1z dG9yYWdlL2RyaXZlcnMvZW1jLXNjYWxlaW8tZHJpPQp2ZXIuaHRtbDwvYT48YnI+PC9kaXY+PC9k aXY+PGRpdj48ZGl2PlNvIHRoZSBtb3JlICJuYXR1cmFsIiB3YXkgdGhhdCBjb21lcyA9CnRvIG1p bmQgaXMgdG8gaW50ZXJmYWNlIG9WaXJ0IHdpdGggY2luZGVyIGFuZCBjb25maWd1cmUgU2NhbGVJ TyBpbiBjaW5kZXIgaT0KbiBzaW1pbGFyIHdheSBhcyB3aXRoIENlcGggYmFja2VuZDxicj48L2Rp dj48ZGl2PjxhIGhyZWY9M0QiaHR0cDovL29sZC5vdmlyPQp0Lm9yZy9GZWF0dXJlcy9DaW5kZXJf SW50ZWdyYXRpb24iIHRhcmdldD0zRCJfYmxhbmsiPmh0dHA6Ly9vbGQub3ZpcnQub3JnL0Y9CmVh dHVyZXMvQ2luZGVyX0ludGVncmF0aW9uPC9hPjxicj48L2Rpdj48L2Rpdj48ZGl2PjxkaXY+QnV0 IHRoaXMgaW1wbGllcyBjbz0KbmZpZ3VyaW5nIE9wZW5zdGFjayB0b28gYW5kIGFsc28gSSBkb24n dCBrbm93IGhvdyB0aGUgc2VjdXJpdHkgcGFydCAoc2VlIGNlPQpwaCBhdXRoZW50aWNhdGlvbiBp biBhYm92ZSBsaW5rKSwgaWYgcHJlc2VudCBpbiBTY2FsZUlPLCBjb3VsZCBiZSBtYW5hZ2VkPGI9 CnI+PC9kaXY+PC9kaXY+PGRpdj48ZGl2PkhJSCBzZWFyY2hpbmcgYSBzb2x1dGlvbjxicj48L2Rp dj48L2Rpdj48ZGl2PkdpYW5sdT0KY2E8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+ PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PQo8L2Rpdj48L2Rpdj48L2Rp dj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPgotLS0tLS09X1BhcnRfMTUyNTU5 M18xNjMyNTI4NjQuMTQ2NDUzNTc0NzMyNi0tCgo= --===============0066942416944193148==--