From Alessandro.DeSalvo at roma1.infn.it Mon May 30 06:44:48 2016 Content-Type: multipart/mixed; boundary="===============5338497259060369520==" MIME-Version: 1.0 From: Alessandro De Salvo To: users at ovirt.org Subject: Re: [ovirt-users] Using ceph volumes with ovirt Date: Mon, 30 May 2016 12:44:43 +0200 Message-ID: In-Reply-To: 9e1c7728-c143-0835-33ce-10e761a2d9b0@roma1.infn.it --===============5338497259060369520== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. --------------D0AC99C00ED1983052736348 Content-Type: text/plain; charset=3Dwindows-1252; format=3Dflowed Content-Transfer-Encoding: 7bit Hi, just to answer myself, I found these instructions that solved my problem: http://7xqb88.com1.z0.glb.clouddn.com/Features_Cinder%20Integration.pdf Basically, I was missing the step to add the ceph key to the = Authentication Keys tab of the cinder External Provider. It's all working now. Cheers, Alessandro Il 30/05/16 10:55, Alessandro De Salvo ha scritto: > > Hi, > I'm happily using our research cluster in Italy via gluster, and now = > I'm trying to hotplug a ceph disk on a VM of my cluster, without success. > The ceph cluster is managed via openstack cinder and I can create = > correctly the disk via ovirt (3.6.6.2-1 on CentOS 7.2). > The problem comes when trying to hotplug, or start a machine with the = > given disk attached. > In the vdsm log of the host where the VM is running or starting I see = > the following error: > > > jsonrpc.Executor/5::INFO::2016-05-30 = > 10:35:29,197::vm::2729::virt.vm::(hotplugDisk) = > vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug disk xml: address=3D"" device=3D"disk" snapshot=3D"no" type=3D"network"> > name=3D"images/volume-9134b639-c23c-4ff1-91ca-0462c80026d2" protocol=3D"r= bd"> > > > > > "/> > > > name=3D"qemu" type=3D"raw"/> > > > jsonrpc.Executor/5::ERROR::2016-05-30 = > 10:35:29,198::vm::2737::virt.vm::(hotplugDisk) = > vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug failed > Traceback (most recent call last): > File "/usr/share/vdsm/virt/vm.py", line 2735, in hotplugDisk > self._dom.attachDevice(driveXml) > File "/usr/share/vdsm/virt/virdomain.py", line 68, in f > ret =3D attr(*args, **kwargs) > File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", = > line 124, in wrapper > ret =3D f(*args, **kwargs) > File "/usr/lib/python2.7/site-packages/vdsm/utils.py", line 1313, in = > wrapper > return func(inst, *args, **kwargs) > File "/usr/lib64/python2.7/site-packages/libvirt.py", line 530, in = > attachDevice > if ret =3D=3D -1: raise libvirtError ('virDomainAttachDevice() = > failed', dom=3Dself) > libvirtError: XML error: invalid auth secret uuid > > > > In fact the uuid of the secret used by ovirt to hotplug seems to be = > the ceph secret (masked here as ), while libvirt = > expects the uuid of the libvirt secret, by looking at the instructions = > http://docs.ceph.com/docs/jewel/rbd/libvirt/. > Anyone got it working? > Thanks, > > Alessandro > > > _______________________________________________ > Users mailing list > Users(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/users --------------D0AC99C00ED1983052736348 Content-Type: text/html; charset=3Dwindows-1252 Content-Transfer-Encoding: 8bit Hi,
just to answer myself, I found these instructions that solved my problem:

http://7xqb88.com1.z0.glb.clouddn.= com/Features_Cinder%20Integration.pdf

Basically, I was missing the step to add the ceph key to the Authentication Keys tab of the cinder External Provider.
It's all working now.
Cheers,

=C2=A0=C2=A0=C2=A0 Alessandro

Il 30/05/16 10:55, Alessandro De Salvo ha scritto:

Hi,
I'm happily using our research cluster in Italy via gluster, and now I'm trying to hotplug a ceph disk on a VM of my cluster, without success.
The ceph cluster is managed via openstack cinder and I can create correctly the disk via ovirt (3.6.6.2-1 on CentOS 7.2).
The problem comes when trying to hotplug, or start a machine with the given disk attached.
In the vdsm log of the host where the VM is running or starting I see the following error:


jsonrpc.Executor/5::INFO::2016-05-30 10:35:29,197::vm::2729::virt.vm::(hotplugDisk) vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug disk xml: <disk address=3D"" device=3D"disk" snapshot=3D"no" type=3D"network">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <source name=3D"images/volume-9134b639-c23c-4ff1-91ca-0462c80026d2" protocol=3D"rbd">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 <host name=3D"141.108.X.Y1" port=3D"6789" transport=3D"tcp"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 <host name=3D"141.108.X.Y2" port=3D"6789" transport=3D"tcp"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </source>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <auth username=3D"cin= der">
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 <secret type=3D"ceph" uuid=3D"<base 64 ceph secret>"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </auth>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <target bus=3D"virtio= " dev=3D"vdb"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <driver cache=3D"none= " error_policy=3D"stop" io=3D"threads" name=3D"qemu" type=3D"raw"/>
</disk>

jsonrpc.Executor/5::ERROR::2016-05-30 10:35:29,198::vm::2737::virt.vm::(hotplugDisk) vmId=3D`c189472e-25d2-4df1-b089-590009856dd3`::Hotplug failed
Traceback (most recent call last):
=C2=A0 File "/usr/share/vdsm/virt/vm.py", line 2735, in hotplugDisk=
=C2=A0=C2=A0=C2=A0 self._dom.attachDevice(driveXml)
=C2=A0 File "/usr/share/vdsm/virt/virdomain.py", line 68, in f
=C2=A0=C2=A0=C2=A0 ret =3D attr(*args, **kwargs)
=C2=A0 File "/usr/lib/python2.7/site-packages/vdsm/libvirtconnection.py", line 124, in wrapper
=C2=A0=C2=A0=C2=A0 ret =3D f(*args, **kwargs)
=C2=A0 File "/usr/lib/python2.7/site-packages/vdsm/utils.py", line 1313, in wrapper
=C2=A0=C2=A0=C2=A0 return func(inst, *args, **kwargs)
=C2=A0 File "/usr/lib64/python2.7/site-packages/libvirt.py", line 530, in attachDevice
=C2=A0=C2=A0=C2=A0 if ret =3D=3D -1: raise libvirtError ('virDomain= AttachDevice() failed', dom=3Dself)
libvirtError: XML error: invalid auth secret uuid



In fact the uuid of the secret used by ovirt to hotplug seems to be the ceph secret (masked here as <base 64 ceph secret>), while libvirt expects the uuid of the libvirt secret, by looking at the instructions http://docs= .ceph.com/docs/jewel/rbd/libvirt/.
Anyone got it working?
Thanks,

=C2=A0=C2=A0=C2=A0 Alessandro


_______________________________________________
Users mailing list
Use=
rs(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/users

--------------D0AC99C00ED1983052736348-- --===============5338497259060369520== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS1EMEFDOTlDMDBFRDE5ODMwNTI3MzYzNDgKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PXdpbmRvd3MtMTI1MjsgZm9ybWF0PWZsb3dlZApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA3Yml0CgpIaSwKanVzdCB0byBhbnN3ZXIgbXlzZWxmLCBJIGZvdW5kIHRoZXNlIGluc3RydWN0 aW9ucyB0aGF0IHNvbHZlZCBteSBwcm9ibGVtOgoKaHR0cDovLzd4cWI4OC5jb20xLnowLmdsYi5j bG91ZGRuLmNvbS9GZWF0dXJlc19DaW5kZXIlMjBJbnRlZ3JhdGlvbi5wZGYKCkJhc2ljYWxseSwg SSB3YXMgbWlzc2luZyB0aGUgc3RlcCB0byBhZGQgdGhlIGNlcGgga2V5IHRvIHRoZSAKQXV0aGVu dGljYXRpb24gS2V5cyB0YWIgb2YgdGhlIGNpbmRlciBFeHRlcm5hbCBQcm92aWRlci4KSXQncyBh bGwgd29ya2luZyBub3cuCkNoZWVycywKCiAgICAgQWxlc3NhbmRybwoKSWwgMzAvMDUvMTYgMTA6 NTUsIEFsZXNzYW5kcm8gRGUgU2Fsdm8gaGEgc2NyaXR0bzoKPgo+IEhpLAo+IEknbSBoYXBwaWx5 IHVzaW5nIG91ciByZXNlYXJjaCBjbHVzdGVyIGluIEl0YWx5IHZpYSBnbHVzdGVyLCBhbmQgbm93 IAo+IEknbSB0cnlpbmcgdG8gaG90cGx1ZyBhIGNlcGggZGlzayBvbiBhIFZNIG9mIG15IGNsdXN0 ZXIsIHdpdGhvdXQgc3VjY2Vzcy4KPiBUaGUgY2VwaCBjbHVzdGVyIGlzIG1hbmFnZWQgdmlhIG9w ZW5zdGFjayBjaW5kZXIgYW5kIEkgY2FuIGNyZWF0ZSAKPiBjb3JyZWN0bHkgdGhlIGRpc2sgdmlh IG92aXJ0ICgzLjYuNi4yLTEgb24gQ2VudE9TIDcuMikuCj4gVGhlIHByb2JsZW0gY29tZXMgd2hl biB0cnlpbmcgdG8gaG90cGx1Zywgb3Igc3RhcnQgYSBtYWNoaW5lIHdpdGggdGhlIAo+IGdpdmVu IGRpc2sgYXR0YWNoZWQuCj4gSW4gdGhlIHZkc20gbG9nIG9mIHRoZSBob3N0IHdoZXJlIHRoZSBW TSBpcyBydW5uaW5nIG9yIHN0YXJ0aW5nIEkgc2VlIAo+IHRoZSBmb2xsb3dpbmcgZXJyb3I6Cj4K Pgo+IGpzb25ycGMuRXhlY3V0b3IvNTo6SU5GTzo6MjAxNi0wNS0zMCAKPiAxMDozNToyOSwxOTc6 OnZtOjoyNzI5Ojp2aXJ0LnZtOjooaG90cGx1Z0Rpc2spIAo+IHZtSWQ9YGMxODk0NzJlLTI1ZDIt NGRmMS1iMDg5LTU5MDAwOTg1NmRkM2A6OkhvdHBsdWcgZGlzayB4bWw6IDxkaXNrIAo+IGFkZHJl c3M9IiIgZGV2aWNlPSJkaXNrIiBzbmFwc2hvdD0ibm8iIHR5cGU9Im5ldHdvcmsiPgo+ICAgICAg ICAgPHNvdXJjZSAKPiBuYW1lPSJpbWFnZXMvdm9sdW1lLTkxMzRiNjM5LWMyM2MtNGZmMS05MWNh LTA0NjJjODAwMjZkMiIgcHJvdG9jb2w9InJiZCI+Cj4gICAgICAgICAgICAgICAgIDxob3N0IG5h bWU9IjE0MS4xMDguWC5ZMSIgcG9ydD0iNjc4OSIgdHJhbnNwb3J0PSJ0Y3AiLz4KPiAgICAgICAg ICAgICAgICAgPGhvc3QgbmFtZT0iMTQxLjEwOC5YLlkyIiBwb3J0PSI2Nzg5IiB0cmFuc3BvcnQ9 InRjcCIvPgo+ICAgICAgICAgPC9zb3VyY2U+Cj4gICAgICAgICA8YXV0aCB1c2VybmFtZT0iY2lu ZGVyIj4KPiAgICAgICAgICAgICAgICAgPHNlY3JldCB0eXBlPSJjZXBoIiB1dWlkPSI8YmFzZSA2 NCBjZXBoIHNlY3JldD4iLz4KPiAgICAgICAgIDwvYXV0aD4KPiAgICAgICAgIDx0YXJnZXQgYnVz PSJ2aXJ0aW8iIGRldj0idmRiIi8+Cj4gICAgICAgICA8ZHJpdmVyIGNhY2hlPSJub25lIiBlcnJv cl9wb2xpY3k9InN0b3AiIGlvPSJ0aHJlYWRzIiAKPiBuYW1lPSJxZW11IiB0eXBlPSJyYXciLz4K PiA8L2Rpc2s+Cj4KPiBqc29ucnBjLkV4ZWN1dG9yLzU6OkVSUk9SOjoyMDE2LTA1LTMwIAo+IDEw OjM1OjI5LDE5ODo6dm06OjI3Mzc6OnZpcnQudm06Oihob3RwbHVnRGlzaykgCj4gdm1JZD1gYzE4 OTQ3MmUtMjVkMi00ZGYxLWIwODktNTkwMDA5ODU2ZGQzYDo6SG90cGx1ZyBmYWlsZWQKPiBUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Cj4gICBGaWxlICIvdXNyL3NoYXJlL3Zkc20v dmlydC92bS5weSIsIGxpbmUgMjczNSwgaW4gaG90cGx1Z0Rpc2sKPiAgICAgc2VsZi5fZG9tLmF0 dGFjaERldmljZShkcml2ZVhtbCkKPiAgIEZpbGUgIi91c3Ivc2hhcmUvdmRzbS92aXJ0L3ZpcmRv bWFpbi5weSIsIGxpbmUgNjgsIGluIGYKPiAgICAgcmV0ID0gYXR0cigqYXJncywgKiprd2FyZ3Mp Cj4gICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy92ZHNtL2xpYnZpcnRj b25uZWN0aW9uLnB5IiwgCj4gbGluZSAxMjQsIGluIHdyYXBwZXIKPiAgICAgcmV0ID0gZigqYXJn cywgKiprd2FyZ3MpCj4gICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy92 ZHNtL3V0aWxzLnB5IiwgbGluZSAxMzEzLCBpbiAKPiB3cmFwcGVyCj4gICAgIHJldHVybiBmdW5j KGluc3QsICphcmdzLCAqKmt3YXJncykKPiAgIEZpbGUgIi91c3IvbGliNjQvcHl0aG9uMi43L3Np dGUtcGFja2FnZXMvbGlidmlydC5weSIsIGxpbmUgNTMwLCBpbiAKPiBhdHRhY2hEZXZpY2UKPiAg ICAgaWYgcmV0ID09IC0xOiByYWlzZSBsaWJ2aXJ0RXJyb3IgKCd2aXJEb21haW5BdHRhY2hEZXZp Y2UoKSAKPiBmYWlsZWQnLCBkb209c2VsZikKPiBsaWJ2aXJ0RXJyb3I6IFhNTCBlcnJvcjogaW52 YWxpZCBhdXRoIHNlY3JldCB1dWlkCj4KPgo+Cj4gSW4gZmFjdCB0aGUgdXVpZCBvZiB0aGUgc2Vj cmV0IHVzZWQgYnkgb3ZpcnQgdG8gaG90cGx1ZyBzZWVtcyB0byBiZSAKPiB0aGUgY2VwaCBzZWNy ZXQgKG1hc2tlZCBoZXJlIGFzIDxiYXNlIDY0IGNlcGggc2VjcmV0PiksIHdoaWxlIGxpYnZpcnQg Cj4gZXhwZWN0cyB0aGUgdXVpZCBvZiB0aGUgbGlidmlydCBzZWNyZXQsIGJ5IGxvb2tpbmcgYXQg dGhlIGluc3RydWN0aW9ucyAKPiBodHRwOi8vZG9jcy5jZXBoLmNvbS9kb2NzL2pld2VsL3JiZC9s aWJ2aXJ0Ly4KPiBBbnlvbmUgZ290IGl0IHdvcmtpbmc/Cj4gVGhhbmtzLAo+Cj4gICAgIEFsZXNz YW5kcm8KPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBVc2VycyBtYWlsaW5nIGxpc3QKPiBVc2Vyc0BvdmlydC5vcmcKPiBodHRwOi8vbGlzdHMu b3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMKCgotLS0tLS0tLS0tLS0tLUQwQUM5OUMw MEVEMTk4MzA1MjczNjM0OApDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dz LTEyNTIKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKPGh0bWw+CiAgPGhlYWQ+CiAg ICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIgogICAgICBo dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPgogIDwvaGVhZD4KICA8Ym9keSBiZ2NvbG9yPSIjRkZG RkZGIiB0ZXh0PSIjMDAwMDAwIj4KICAgIEhpLDxicj4KICAgIGp1c3QgdG8gYW5zd2VyIG15c2Vs ZiwgSSBmb3VuZCB0aGVzZSBpbnN0cnVjdGlvbnMgdGhhdCBzb2x2ZWQgbXkKICAgIHByb2JsZW06 PGJyPgogICAgPGJyPgo8YSBjbGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRw Oi8vN3hxYjg4LmNvbTEuejAuZ2xiLmNsb3VkZG4uY29tL0ZlYXR1cmVzX0NpbmRlciUyMEludGVn cmF0aW9uLnBkZiI+aHR0cDovLzd4cWI4OC5jb20xLnowLmdsYi5jbG91ZGRuLmNvbS9GZWF0dXJl c19DaW5kZXIlMjBJbnRlZ3JhdGlvbi5wZGY8L2E+PGJyPgogICAgPGJyPgogICAgQmFzaWNhbGx5 LCBJIHdhcyBtaXNzaW5nIHRoZSBzdGVwIHRvIGFkZCB0aGUgY2VwaCBrZXkgdG8gdGhlCiAgICBB dXRoZW50aWNhdGlvbiBLZXlzIHRhYiBvZiB0aGUgY2luZGVyIEV4dGVybmFsIFByb3ZpZGVyLjxi cj4KICAgIEl0J3MgYWxsIHdvcmtpbmcgbm93Ljxicj4KICAgIENoZWVycyw8YnI+CiAgICA8YnI+ CiAgICCgoKAgQWxlc3NhbmRybzxicj4KICAgIDxicj4KICAgIDxkaXYgY2xhc3M9Im1vei1jaXRl LXByZWZpeCI+SWwgMzAvMDUvMTYgMTA6NTUsIEFsZXNzYW5kcm8gRGUgU2Fsdm8KICAgICAgaGEg c2NyaXR0bzo8YnI+CiAgICA8L2Rpdj4KICAgIDxibG9ja3F1b3RlCiAgICAgIGNpdGU9Im1pZDo5 ZTFjNzcyOC1jMTQzLTA4MzUtMzNjZS0xMGU3NjFhMmQ5YjBAcm9tYTEuaW5mbi5pdCIKICAgICAg dHlwZT0iY2l0ZSI+CiAgICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVu dD0idGV4dC9odG1sOwogICAgICAgIGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KICAgICAgPHA+IDwv cD4KICAgICAgPGRpdiBjbGFzcz0ibW96LXRleHQtZmxvd2VkIiBzdHlsZT0iZm9udC1mYW1pbHk6 IC1tb3otZml4ZWQ7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OyIgbGFuZz0ieC13ZXN0ZXJuIj5I aSwgPGJyPgogICAgICAgIEknbSBoYXBwaWx5IHVzaW5nIG91ciByZXNlYXJjaCBjbHVzdGVyIGlu IEl0YWx5IHZpYSBnbHVzdGVyLCBhbmQKICAgICAgICBub3cgSSdtIHRyeWluZyB0byBob3RwbHVn IGEgY2VwaCBkaXNrIG9uIGEgVk0gb2YgbXkgY2x1c3RlciwKICAgICAgICB3aXRob3V0IHN1Y2Nl c3MuIDxicj4KICAgICAgICBUaGUgY2VwaCBjbHVzdGVyIGlzIG1hbmFnZWQgdmlhIG9wZW5zdGFj ayBjaW5kZXIgYW5kIEkgY2FuCiAgICAgICAgY3JlYXRlIGNvcnJlY3RseSB0aGUgZGlzayB2aWEg b3ZpcnQgKDMuNi42LjItMSBvbiBDZW50T1MgNy4yKS4gPGJyPgogICAgICAgIFRoZSBwcm9ibGVt IGNvbWVzIHdoZW4gdHJ5aW5nIHRvIGhvdHBsdWcsIG9yIHN0YXJ0IGEgbWFjaGluZQogICAgICAg IHdpdGggdGhlIGdpdmVuIGRpc2sgYXR0YWNoZWQuIDxicj4KICAgICAgICBJbiB0aGUgdmRzbSBs b2cgb2YgdGhlIGhvc3Qgd2hlcmUgdGhlIFZNIGlzIHJ1bm5pbmcgb3Igc3RhcnRpbmcKICAgICAg ICBJIHNlZSB0aGUgZm9sbG93aW5nIGVycm9yOiA8YnI+CiAgICAgICAgPGJyPgogICAgICAgIDxi cj4KICAgICAgICBqc29ucnBjLkV4ZWN1dG9yLzU6OklORk86OjIwMTYtMDUtMzAKICAgICAgICAx MDozNToyOSwxOTc6OnZtOjoyNzI5Ojp2aXJ0LnZtOjooaG90cGx1Z0Rpc2spCiAgICAgICAgdm1J ZD1gYzE4OTQ3MmUtMjVkMi00ZGYxLWIwODktNTkwMDA5ODU2ZGQzYDo6SG90cGx1ZyBkaXNrIHht bDoKICAgICAgICAmbHQ7ZGlzayBhZGRyZXNzPSIiIGRldmljZT0iZGlzayIgc25hcHNob3Q9Im5v IgogICAgICAgIHR5cGU9Im5ldHdvcmsiJmd0OyA8YnI+CiAgICAgICAgoKCgoKCgoCAmbHQ7c291 cmNlCiAgICAgICAgbmFtZT0iaW1hZ2VzL3ZvbHVtZS05MTM0YjYzOS1jMjNjLTRmZjEtOTFjYS0w NDYyYzgwMDI2ZDIiCiAgICAgICAgcHJvdG9jb2w9InJiZCImZ3Q7IDxicj4KICAgICAgICCgoKCg oKCgoKCgoKCgoKAgJmx0O2hvc3QgbmFtZT0iMTQxLjEwOC5YLlkxIiBwb3J0PSI2Nzg5IgogICAg ICAgIHRyYW5zcG9ydD0idGNwIi8mZ3Q7IDxicj4KICAgICAgICCgoKCgoKCgoKCgoKCgoKAgJmx0 O2hvc3QgbmFtZT0iMTQxLjEwOC5YLlkyIiBwb3J0PSI2Nzg5IgogICAgICAgIHRyYW5zcG9ydD0i dGNwIi8mZ3Q7IDxicj4KICAgICAgICCgoKCgoKCgICZsdDsvc291cmNlJmd0OyA8YnI+CiAgICAg ICAgoKCgoKCgoCAmbHQ7YXV0aCB1c2VybmFtZT0iY2luZGVyIiZndDsgPGJyPgogICAgICAgIKCg oKCgoKCgoKCgoKCgoCAmbHQ7c2VjcmV0IHR5cGU9ImNlcGgiIHV1aWQ9IiZsdDtiYXNlIDY0IGNl cGgKICAgICAgICBzZWNyZXQmZ3Q7Ii8mZ3Q7IDxicj4KICAgICAgICCgoKCgoKCgICZsdDsvYXV0 aCZndDsgPGJyPgogICAgICAgIKCgoKCgoKAgJmx0O3RhcmdldCBidXM9InZpcnRpbyIgZGV2PSJ2 ZGIiLyZndDsgPGJyPgogICAgICAgIKCgoKCgoKAgJmx0O2RyaXZlciBjYWNoZT0ibm9uZSIgZXJy b3JfcG9saWN5PSJzdG9wIiBpbz0idGhyZWFkcyIKICAgICAgICBuYW1lPSJxZW11IiB0eXBlPSJy YXciLyZndDsgPGJyPgogICAgICAgICZsdDsvZGlzayZndDsgPGJyPgogICAgICAgIDxicj4KICAg ICAgICBqc29ucnBjLkV4ZWN1dG9yLzU6OkVSUk9SOjoyMDE2LTA1LTMwCiAgICAgICAgMTA6MzU6 MjksMTk4Ojp2bTo6MjczNzo6dmlydC52bTo6KGhvdHBsdWdEaXNrKQogICAgICAgIHZtSWQ9YGMx ODk0NzJlLTI1ZDItNGRmMS1iMDg5LTU5MDAwOTg1NmRkM2A6OkhvdHBsdWcgZmFpbGVkIDxicj4K ICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6IDxicj4KICAgICAgICCg IEZpbGUgIi91c3Ivc2hhcmUvdmRzbS92aXJ0L3ZtLnB5IiwgbGluZSAyNzM1LCBpbiBob3RwbHVn RGlzayA8YnI+CiAgICAgICAgoKCgIHNlbGYuX2RvbS5hdHRhY2hEZXZpY2UoZHJpdmVYbWwpIDxi cj4KICAgICAgICCgIEZpbGUgIi91c3Ivc2hhcmUvdmRzbS92aXJ0L3ZpcmRvbWFpbi5weSIsIGxp bmUgNjgsIGluIGYgPGJyPgogICAgICAgIKCgoCByZXQgPSBhdHRyKCphcmdzLCAqKmt3YXJncykg PGJyPgogICAgICAgIKAgRmlsZQogICAgICAgICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNr YWdlcy92ZHNtL2xpYnZpcnRjb25uZWN0aW9uLnB5IiwKICAgICAgICBsaW5lIDEyNCwgaW4gd3Jh cHBlciA8YnI+CiAgICAgICAgoKCgIHJldCA9IGYoKmFyZ3MsICoqa3dhcmdzKSA8YnI+CiAgICAg ICAgoCBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy92ZHNtL3V0aWxzLnB5 IiwgbGluZQogICAgICAgIDEzMTMsIGluIHdyYXBwZXIgPGJyPgogICAgICAgIKCgoCByZXR1cm4g ZnVuYyhpbnN0LCAqYXJncywgKiprd2FyZ3MpIDxicj4KICAgICAgICCgIEZpbGUgIi91c3IvbGli NjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbGlidmlydC5weSIsIGxpbmUKICAgICAgICA1MzAs IGluIGF0dGFjaERldmljZSA8YnI+CiAgICAgICAgoKCgIGlmIHJldCA9PSAtMTogcmFpc2UgbGli dmlydEVycm9yICgndmlyRG9tYWluQXR0YWNoRGV2aWNlKCkKICAgICAgICBmYWlsZWQnLCBkb209 c2VsZikgPGJyPgogICAgICAgIGxpYnZpcnRFcnJvcjogWE1MIGVycm9yOiBpbnZhbGlkIGF1dGgg c2VjcmV0IHV1aWQgPGJyPgogICAgICAgIDxicj4KICAgICAgICA8YnI+CiAgICAgICAgPGJyPgog ICAgICAgIEluIGZhY3QgdGhlIHV1aWQgb2YgdGhlIHNlY3JldCB1c2VkIGJ5IG92aXJ0IHRvIGhv dHBsdWcgc2VlbXMgdG8KICAgICAgICBiZSB0aGUgY2VwaCBzZWNyZXQgKG1hc2tlZCBoZXJlIGFz ICZsdDtiYXNlIDY0IGNlcGggc2VjcmV0Jmd0OyksCiAgICAgICAgd2hpbGUgbGlidmlydCBleHBl Y3RzIHRoZSB1dWlkIG9mIHRoZSBsaWJ2aXJ0IHNlY3JldCwgYnkgbG9va2luZwogICAgICAgIGF0 IHRoZSBpbnN0cnVjdGlvbnMgPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgY2xh c3M9Im1vei10eHQtbGluay1mcmVldGV4dCIKICAgICAgICAgIGhyZWY9Imh0dHA6Ly9kb2NzLmNl cGguY29tL2RvY3MvamV3ZWwvcmJkL2xpYnZpcnQvIj5odHRwOi8vZG9jcy5jZXBoLmNvbS9kb2Nz L2pld2VsL3JiZC9saWJ2aXJ0LzwvYT4uCiAgICAgICAgPGJyPgogICAgICAgIEFueW9uZSBnb3Qg aXQgd29ya2luZz8gPGJyPgogICAgICAgIFRoYW5rcywgPGJyPgogICAgICAgIDxicj4KICAgICAg ICCgoKAgQWxlc3NhbmRybyA8YnI+CiAgICAgIDwvZGl2PgogICAgICA8YnI+CiAgICAgIDxmaWVs ZHNldCBjbGFzcz0ibWltZUF0dGFjaG1lbnRIZWFkZXIiPjwvZmllbGRzZXQ+CiAgICAgIDxicj4K ICAgICAgPHByZSB3cmFwPSIiPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClVzZXJzIG1haWxpbmcgbGlzdAo8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJl dmlhdGVkIiBocmVmPSJtYWlsdG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0BvdmlydC5vcmc8L2E+ CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmly dC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3VzZXJzPC9hPgo8L3ByZT4KICAgIDwvYmxvY2txdW90ZT4KICAgIDxicj4K ICA8L2JvZHk+CjwvaHRtbD4KCi0tLS0tLS0tLS0tLS0tRDBBQzk5QzAwRUQxOTgzMDUyNzM2MzQ4 LS0K --===============5338497259060369520==--