From omachace at redhat.com Thu Oct 29 10:58:09 2015 Content-Type: multipart/mixed; boundary="===============7095034159844481608==" MIME-Version: 1.0 From: Ondra Machacek To: users at ovirt.org Subject: Re: [ovirt-users] api access with poweruser role Date: Thu, 29 Oct 2015 15:58:06 +0100 Message-ID: <563233FE.1020708@redhat.com> In-Reply-To: 56323394.8050800@redhat.com --===============7095034159844481608== 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. --------------090003020906060406020408 Content-Type: text/plain; charset=3Dwindows-1252; format=3Dflowed Content-Transfer-Encoding: 7bit On 10/29/2015 03:56 PM, Ondra Machacek wrote: > > > On 10/28/2015 11:29 AM, Jorick Astrego wrote: >> >> >> On 10/26/2015 03:14 PM, Jorick Astrego wrote: >>> >>> >>> On 10/26/2015 02:57 PM, Ondra Machacek wrote: >>>> >>>> >>>> On 10/26/2015 02:53 PM, Jorick Astrego wrote: >>>>> Hi, >>>>> >>>>> Currently I'm trying to add an ovirt compute resource in forman = >>>>> that is limited to the VM's of the user. >>>>> >>>>> When I give this user the PowerUser role, I cannot access the api: >>>>> >>>>> query execution failed due to insufficient permissions >>>>> >>>> >>>> Are you sending header 'Filter: true' with the request ? >>>> If your user is not admin(PowerUserRole is not admin role), >>>> you have to use this header. >>>> >>>> >>> >> >> Hmm, not much response on foreman-users.. >> >> I checked the code of fog in my foreman install ( = >> /opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/ovirt/comput= e.rb = >> ) and it appears to have the correct option merged: >> >> connection_opts[:filtered_api] =3D >> options[:ovirt_filtered_api] >> >> >> But I don't know what url the foreman actually generates, is there = >> any way to capture the login string? I tried setting some DEBUG = >> logging but don't get the output I'm looking for. >> >> >> >> >> > category=3D"org.ovirt.engine.core.bll.aaa.LoginUserCommand"> >> >> >> > category=3D"org.ovirt.engine.api.restapi.resource.AbstractBackendRes= ource"> >> >> >> >> > > It depends what url foreman client access. But you can set: > > > > > > And then you will see what commands was queried with or without the = > filtered API. > > 2015-10-29 15:45:45,436 TRACE = > [org.ovirt.engine.core.bll.GetAllVmsQuery] (ajp-/127.0.0.1:8702-1) [] = > START, GetAllVmsQuery(VdcQueryParametersBase:{refresh=3D'true', = > filtered=3D'true'}), log id: 53b3c8b9 > > ^^ This is example of running 'Filter: true' on /api/vms (you can see = > filtered=3D'true'). But maybe it would be easier to use tcpdump, or some apache module to = dump headers. > >> >> >> >> >> >> >> Met vriendelijke groet, With kind regards, >> >> Jorick Astrego >> * >> Netbulae Virtualization Experts * >> ------------------------------------------------------------------------ >> Tel: 053 20 30 270 info(a)netbulae.eu Staalsteden 4-3A KvK 08198180 >> Fax: 053 20 30 271 www.netbulae.eu 7547 TA Enschede BTW = >> NL821234584B01 >> >> >> ------------------------------------------------------------------------ >> >> >> >> _______________________________________________ >> Users mailing list >> Users(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/users > > > > _______________________________________________ > Users mailing list > Users(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/users --------------090003020906060406020408 Content-Type: text/html; charset=3Dwindows-1252 Content-Transfer-Encoding: 8bit

On 10/29/2015 03:56 PM, Ondra Machacek wrote:


On 10/28/2015 11:29 AM, Jorick Astrego wrote:


On 10/26/2015 03:14 PM, Jorick Astrego wrote:


On 10/26/2015 02:57 PM, Ondra Machacek wrote:


On 10/26/2015 02:53 PM, Jorick Astrego wrote:
Hi,

Currently I'm trying to add an ovirt compute resource in forman that is limited to the VM's of the user.

When I give this user the PowerUser role, I cannot access the api:

query execution failed due to insufficient permissions

Are you sending header 'Filter: true' with the request ?
If your user is not admin(PowerUserRole is not admin role),
you have to use this header.




Hmm, not much response on foreman-users..

I checked the code of fog in my foreman install ( /opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/ovirt/c= ompute.rb ) and it appears to have the correct option merged:

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = connection_opts[:filtered_api]=C2=A0 =3D options[:ovirt_filtered_api]


But I don't know what url the foreman actually generates, is there any way to capture the login string? I tried setting some DEBUG logging but don't get the output I'm looking for.

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <logger category=3D"org.ovirt.engine.core.bll.SearchQuery">
=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 <level name=3D"DEBUG"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </logger>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <logger category=3D"org.ovirt.engine.core.bll.aaa.LoginUserCommand"> =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 <level name=3D"DEBUG"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </logger>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <logger category=3D"org.ovirt.engine.api.restapi.resource.AbstractBackendResource"&= gt;
=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 <level name=3D"DEBUG"/>
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 </logger>



It depends what url foreman client access. But you can set:

<logger category=3D"org.ovirt.engine.core.bll">
=C2=A0=C2=A0=C2=A0 <level name=3D"ALL"/>
</logger>

And then you will see what commands was queried with or without the filtered API.

2015-10-29 15:45:45,436 TRACE [org.ovirt.engine.core.bll.GetAllVmsQuery] (ajp-/127.0.0.1:8702-1) [] START, GetAllVmsQuery(VdcQueryParametersBase:{refresh=3D'true', filtered=3D'true'}), log id: 53b3c8b9

^^ This is example of running 'Filter: true' on /api/vms (you can see filtered=3D'true').

But maybe it would be easier to use tcpdump, or some apache module to dump headers.

<= br>






Met vriendelijke groet, With kind regards,

Jorick Astrego

Netbulae Virtualization Experts


Tel: 053 20 30 270 info(a)netbulae.eu Staalsteden 4-3A KvK 08198180
Fax: 053 20 30 271 www.netbulae.eu 7547 TA Enschede BTW NL821234584B01





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



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

--------------090003020906060406020408-- --===============7095034159844481608== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS0wOTAwMDMwMjA5MDYwNjA0MDYwMjA0MDgKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PXdpbmRvd3MtMTI1MjsgZm9ybWF0PWZsb3dlZApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA3Yml0CgoKCk9uIDEwLzI5LzIwMTUgMDM6NTYgUE0sIE9uZHJhIE1hY2hhY2VrIHdyb3RlOgo+ Cj4KPiBPbiAxMC8yOC8yMDE1IDExOjI5IEFNLCBKb3JpY2sgQXN0cmVnbyB3cm90ZToKPj4KPj4K Pj4gT24gMTAvMjYvMjAxNSAwMzoxNCBQTSwgSm9yaWNrIEFzdHJlZ28gd3JvdGU6Cj4+Pgo+Pj4K Pj4+IE9uIDEwLzI2LzIwMTUgMDI6NTcgUE0sIE9uZHJhIE1hY2hhY2VrIHdyb3RlOgo+Pj4+Cj4+ Pj4KPj4+PiBPbiAxMC8yNi8yMDE1IDAyOjUzIFBNLCBKb3JpY2sgQXN0cmVnbyB3cm90ZToKPj4+ Pj4gSGksCj4+Pj4+Cj4+Pj4+IEN1cnJlbnRseSBJJ20gdHJ5aW5nIHRvIGFkZCBhbiBvdmlydCBj b21wdXRlIHJlc291cmNlIGluIGZvcm1hbiAKPj4+Pj4gdGhhdCBpcyBsaW1pdGVkIHRvIHRoZSBW TSdzIG9mIHRoZSB1c2VyLgo+Pj4+Pgo+Pj4+PiBXaGVuIEkgZ2l2ZSB0aGlzIHVzZXIgdGhlIFBv d2VyVXNlciByb2xlLCBJIGNhbm5vdCBhY2Nlc3MgdGhlIGFwaToKPj4+Pj4KPj4+Pj4gICAgIHF1 ZXJ5IGV4ZWN1dGlvbiBmYWlsZWQgZHVlIHRvIGluc3VmZmljaWVudCBwZXJtaXNzaW9ucwo+Pj4+ Pgo+Pj4+Cj4+Pj4gQXJlIHlvdSBzZW5kaW5nIGhlYWRlciAnRmlsdGVyOiB0cnVlJyB3aXRoIHRo ZSByZXF1ZXN0ID8KPj4+PiBJZiB5b3VyIHVzZXIgaXMgbm90IGFkbWluKFBvd2VyVXNlclJvbGUg aXMgbm90IGFkbWluIHJvbGUpLAo+Pj4+IHlvdSBoYXZlIHRvIHVzZSB0aGlzIGhlYWRlci4KPj4+ Pgo+Pj4+Cj4+Pgo+Pgo+PiBIbW0sIG5vdCBtdWNoIHJlc3BvbnNlIG9uIGZvcmVtYW4tdXNlcnMu Lgo+Pgo+PiBJIGNoZWNrZWQgdGhlIGNvZGUgb2YgZm9nIGluIG15IGZvcmVtYW4gaW5zdGFsbCAo IAo+PiAvb3B0L3JoL3J1YnkxOTMvcm9vdC91c3Ivc2hhcmUvZ2Vtcy9nZW1zL2ZvZy0xLjMyLjAv bGliL2ZvZy9vdmlydC9jb21wdXRlLnJiIAo+PiApIGFuZCBpdCBhcHBlYXJzIHRvIGhhdmUgdGhl IGNvcnJlY3Qgb3B0aW9uIG1lcmdlZDoKPj4KPj4gICAgICAgICAgICAgICBjb25uZWN0aW9uX29w dHNbOmZpbHRlcmVkX2FwaV0gID0KPj4gICAgIG9wdGlvbnNbOm92aXJ0X2ZpbHRlcmVkX2FwaV0K Pj4KPj4KPj4gQnV0IEkgZG9uJ3Qga25vdyB3aGF0IHVybCB0aGUgZm9yZW1hbiBhY3R1YWxseSBn ZW5lcmF0ZXMsIGlzIHRoZXJlIAo+PiBhbnkgd2F5IHRvIGNhcHR1cmUgdGhlIGxvZ2luIHN0cmlu Zz8gSSB0cmllZCBzZXR0aW5nIHNvbWUgREVCVUcgCj4+IGxvZ2dpbmcgYnV0IGRvbid0IGdldCB0 aGUgb3V0cHV0IEknbSBsb29raW5nIGZvci4KPj4KPj4gICAgICAgICAgICAgPGxvZ2dlciBjYXRl Z29yeT0ib3JnLm92aXJ0LmVuZ2luZS5jb3JlLmJsbC5TZWFyY2hRdWVyeSI+Cj4+ICAgICAgICAg ICAgICAgICAgICAgPGxldmVsIG5hbWU9IkRFQlVHIi8+Cj4+ICAgICAgICAgICAgIDwvbG9nZ2Vy Pgo+PiAgICAgICAgICAgICA8bG9nZ2VyCj4+ICAgICBjYXRlZ29yeT0ib3JnLm92aXJ0LmVuZ2lu ZS5jb3JlLmJsbC5hYWEuTG9naW5Vc2VyQ29tbWFuZCI+Cj4+ICAgICAgICAgICAgICAgICAgICAg PGxldmVsIG5hbWU9IkRFQlVHIi8+Cj4+ICAgICAgICAgICAgIDwvbG9nZ2VyPgo+PiAgICAgICAg ICAgICA8bG9nZ2VyCj4+ICAgICBjYXRlZ29yeT0ib3JnLm92aXJ0LmVuZ2luZS5hcGkucmVzdGFw aS5yZXNvdXJjZS5BYnN0cmFjdEJhY2tlbmRSZXNvdXJjZSI+Cj4+ICAgICAgICAgICAgICAgICAg ICAgPGxldmVsIG5hbWU9IkRFQlVHIi8+Cj4+ICAgICAgICAgICAgIDwvbG9nZ2VyPgo+Pgo+Pgo+ Cj4gSXQgZGVwZW5kcyB3aGF0IHVybCBmb3JlbWFuIGNsaWVudCBhY2Nlc3MuIEJ1dCB5b3UgY2Fu IHNldDoKPgo+IDxsb2dnZXIgY2F0ZWdvcnk9Im9yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwiPgo+ ICAgICA8bGV2ZWwgbmFtZT0iQUxMIi8+Cj4gPC9sb2dnZXI+Cj4KPiBBbmQgdGhlbiB5b3Ugd2ls bCBzZWUgd2hhdCBjb21tYW5kcyB3YXMgcXVlcmllZCB3aXRoIG9yIHdpdGhvdXQgdGhlIAo+IGZp bHRlcmVkIEFQSS4KPgo+IDIwMTUtMTAtMjkgMTU6NDU6NDUsNDM2IFRSQUNFIAo+IFtvcmcub3Zp cnQuZW5naW5lLmNvcmUuYmxsLkdldEFsbFZtc1F1ZXJ5XSAoYWpwLS8xMjcuMC4wLjE6ODcwMi0x KSBbXSAKPiBTVEFSVCwgR2V0QWxsVm1zUXVlcnkoVmRjUXVlcnlQYXJhbWV0ZXJzQmFzZTp7cmVm cmVzaD0ndHJ1ZScsIAo+IGZpbHRlcmVkPSd0cnVlJ30pLCBsb2cgaWQ6IDUzYjNjOGI5Cj4KPiBe XiBUaGlzIGlzIGV4YW1wbGUgb2YgcnVubmluZyAnRmlsdGVyOiB0cnVlJyBvbiAvYXBpL3ZtcyAo eW91IGNhbiBzZWUgCj4gZmlsdGVyZWQ9J3RydWUnKS4KCkJ1dCBtYXliZSBpdCB3b3VsZCBiZSBl YXNpZXIgdG8gdXNlIHRjcGR1bXAsIG9yIHNvbWUgYXBhY2hlIG1vZHVsZSB0byAKZHVtcCBoZWFk ZXJzLgoKPgo+Pgo+Pgo+Pgo+Pgo+Pgo+Pgo+PiBNZXQgdnJpZW5kZWxpamtlIGdyb2V0LCBXaXRo IGtpbmQgcmVnYXJkcywKPj4KPj4gSm9yaWNrIEFzdHJlZ28KPj4gKgo+PiBOZXRidWxhZSBWaXJ0 dWFsaXphdGlvbiBFeHBlcnRzICoKPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IFRlbDogMDUzIDIwIDMw IDI3MCAJaW5mb0BuZXRidWxhZS5ldSAJU3RhYWxzdGVkZW4gNC0zQSAJS3ZLIDA4MTk4MTgwCj4+ IEZheDogMDUzIDIwIDMwIDI3MSAJd3d3Lm5ldGJ1bGFlLmV1IAk3NTQ3IFRBIEVuc2NoZWRlIAlC VFcgCj4+IE5MODIxMjM0NTg0QjAxCj4+Cj4+Cj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+Pgo+Pgo+ PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBVc2Vy cyBtYWlsaW5nIGxpc3QKPj4gVXNlcnNAb3ZpcnQub3JnCj4+IGh0dHA6Ly9saXN0cy5vdmlydC5v cmcvbWFpbG1hbi9saXN0aW5mby91c2Vycwo+Cj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gVXNlcnMgbWFpbGluZyBsaXN0Cj4gVXNlcnNAb3Zp cnQub3JnCj4gaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzCgoK LS0tLS0tLS0tLS0tLS0wOTAwMDMwMjA5MDYwNjA0MDYwMjA0MDgKQ29udGVudC1UeXBlOiB0ZXh0 L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKCjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0 PXdpbmRvd3MtMTI1MiIKICAgICAgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIj4KICA8L2hlYWQ+ CiAgPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgdGV4dD0iIzAwMDAwMCI+CiAgICA8YnI+CiAgICA8 YnI+CiAgICA8ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDEwLzI5LzIwMTUgMDM6NTYg UE0sIE9uZHJhIE1hY2hhY2VrCiAgICAgIHdyb3RlOjxicj4KICAgIDwvZGl2PgogICAgPGJsb2Nr cXVvdGUgY2l0ZT0ibWlkOjU2MzIzMzk0LjgwNTA4MDBAcmVkaGF0LmNvbSIgdHlwZT0iY2l0ZSI+ CiAgICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiCiAg ICAgICAgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIj4KICAgICAgPGJyPgogICAgICA8YnI+CiAg ICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeCI+T24gMTAvMjgvMjAxNSAxMToyOSBBTSwg Sm9yaWNrCiAgICAgICAgQXN0cmVnbyB3cm90ZTo8YnI+CiAgICAgIDwvZGl2PgogICAgICA8Ymxv Y2txdW90ZSBjaXRlPSJtaWQ6NTYzMEEzNkQuNjAwMDIwMkBuZXRidWxhZS5ldSIgdHlwZT0iY2l0 ZSI+CiAgICAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1 MiIKICAgICAgICAgIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+CiAgICAgICAgPGJyPgogICAg ICAgIDxicj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDEwLzI2LzIw MTUgMDM6MTQgUE0sIEpvcmljawogICAgICAgICAgQXN0cmVnbyB3cm90ZTo8YnI+CiAgICAgICAg PC9kaXY+CiAgICAgICAgPGJsb2NrcXVvdGUgY2l0ZT0ibWlkOjU2MkUzNTVELjQwMzAyMDFAbmV0 YnVsYWUuZXUiIHR5cGU9ImNpdGUiPgogICAgICAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1s OyBjaGFyc2V0PXdpbmRvd3MtMTI1MiIKICAgICAgICAgICAgaHR0cC1lcXVpdj0iQ29udGVudC1U eXBlIj4KICAgICAgICAgIDxicj4KICAgICAgICAgIDxicj4KICAgICAgICAgIDxkaXYgY2xhc3M9 Im1vei1jaXRlLXByZWZpeCI+T24gMTAvMjYvMjAxNSAwMjo1NyBQTSwgT25kcmEKICAgICAgICAg ICAgTWFjaGFjZWsgd3JvdGU6PGJyPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YmxvY2tx dW90ZSBjaXRlPSJtaWQ6NTYyRTMxNDMuNDAxMDYwMEByZWRoYXQuY29tIiB0eXBlPSJjaXRlIj4K ICAgICAgICAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1 MiIKICAgICAgICAgICAgICBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPgogICAgICAgICAgICA8 YnI+CiAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW96LWNpdGUtcHJl Zml4Ij5PbiAxMC8yNi8yMDE1IDAyOjUzIFBNLCBKb3JpY2sKICAgICAgICAgICAgICBBc3RyZWdv IHdyb3RlOjxicj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxibG9ja3F1b3RlIGNp dGU9Im1pZDo1NjJFMzA3NS41MDUwMjAzQG5ldGJ1bGFlLmV1IgogICAgICAgICAgICAgIHR5cGU9 ImNpdGUiPgogICAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29u dGVudD0idGV4dC9odG1sOwogICAgICAgICAgICAgICAgY2hhcnNldD13aW5kb3dzLTEyNTIiPgog ICAgICAgICAgICAgIEhpLDxicj4KICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgQ3Vy cmVudGx5IEknbSB0cnlpbmcgdG8gYWRkIGFuIG92aXJ0IGNvbXB1dGUgcmVzb3VyY2UgaW4KICAg ICAgICAgICAgICBmb3JtYW4gdGhhdCBpcyBsaW1pdGVkIHRvIHRoZSBWTSdzIG9mIHRoZSB1c2Vy LiA8YnI+CiAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgIFdoZW4gSSBnaXZlIHRoaXMg dXNlciB0aGUgUG93ZXJVc2VyIHJvbGUsIEkgY2Fubm90IGFjY2VzcwogICAgICAgICAgICAgIHRo ZSBhcGk6PGJyPgogICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICA8YmxvY2txdW90ZT5x dWVyeSBleGVjdXRpb24gZmFpbGVkIGR1ZSB0byBpbnN1ZmZpY2llbnQKICAgICAgICAgICAgICAg IHBlcm1pc3Npb25zPGJyPgogICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgICAgICAg PC9ibG9ja3F1b3RlPgogICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIEFyZSB5b3Ugc2VuZGlu ZyBoZWFkZXIgJ0ZpbHRlcjogdHJ1ZScgd2l0aCB0aGUgcmVxdWVzdCA/PGJyPgogICAgICAgICAg ICBJZiB5b3VyIHVzZXIgaXMgbm90IGFkbWluKFBvd2VyVXNlclJvbGUgaXMgbm90IGFkbWluIHJv bGUpLDxicj4KICAgICAgICAgICAgeW91IGhhdmUgdG8gdXNlIHRoaXMgaGVhZGVyLjxicj4KICAg ICAgICAgICAgPGJyPgogICAgICAgICAgICA8YnI+CiAgICAgICAgICA8L2Jsb2NrcXVvdGU+CiAg ICAgICAgICA8YnI+CiAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAgIDxicj4KICAgICAgICBI bW0sIG5vdCBtdWNoIHJlc3BvbnNlIG9uIGZvcmVtYW4tdXNlcnMuLiA8YnI+CiAgICAgICAgPGJy PgogICAgICAgIEkgY2hlY2tlZCB0aGUgY29kZSBvZiBmb2cgaW4gbXkgZm9yZW1hbiBpbnN0YWxs ICgKICAgICAgICAvb3B0L3JoL3J1YnkxOTMvcm9vdC91c3Ivc2hhcmUvZ2Vtcy9nZW1zL2ZvZy0x LjMyLjAvbGliL2ZvZy9vdmlydC9jb21wdXRlLnJiCgoKICAgICAgICApIGFuZCBpdCBhcHBlYXJz IHRvIGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9uIG1lcmdlZDo8YnI+CiAgICAgICAgPGJyPgogICAg ICAgIDxibG9ja3F1b3RlPqCgoKCgoKCgoCBjb25uZWN0aW9uX29wdHNbOmZpbHRlcmVkX2FwaV2g ID0KICAgICAgICAgIG9wdGlvbnNbOm92aXJ0X2ZpbHRlcmVkX2FwaV08YnI+CiAgICAgICAgICA8 YnI+CiAgICAgICAgICA8YnI+CiAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAgIEJ1dCBJIGRv bid0IGtub3cgd2hhdCB1cmwgdGhlIGZvcmVtYW4gYWN0dWFsbHkgZ2VuZXJhdGVzLCBpcwogICAg ICAgIHRoZXJlIGFueSB3YXkgdG8gY2FwdHVyZSB0aGUgbG9naW4gc3RyaW5nPyBJIHRyaWVkIHNl dHRpbmcgc29tZQogICAgICAgIERFQlVHIGxvZ2dpbmcgYnV0IGRvbid0IGdldCB0aGUgb3V0cHV0 IEknbSBsb29raW5nIGZvci48YnI+CiAgICAgICAgPGJyPgogICAgICAgIDxibG9ja3F1b3RlPqCg oKCgoKAgJmx0O2xvZ2dlcgogICAgICAgICAgY2F0ZWdvcnk9Im9yZy5vdmlydC5lbmdpbmUuY29y ZS5ibGwuU2VhcmNoUXVlcnkiJmd0Ozxicj4KICAgICAgICAgIKCgoKCgoKCgoKCgoKCgoCAmbHQ7 bGV2ZWwgbmFtZT0iREVCVUciLyZndDs8YnI+CiAgICAgICAgICCgoKCgoKCgICZsdDsvbG9nZ2Vy Jmd0Ozxicj4KICAgICAgICAgIKCgoKCgoKAgJmx0O2xvZ2dlcgogICAgICAgICAgY2F0ZWdvcnk9 Im9yZy5vdmlydC5lbmdpbmUuY29yZS5ibGwuYWFhLkxvZ2luVXNlckNvbW1hbmQiJmd0Ozxicj4K ICAgICAgICAgIKCgoKCgoKCgoKCgoKCgoCAmbHQ7bGV2ZWwgbmFtZT0iREVCVUciLyZndDs8YnI+ CiAgICAgICAgICCgoKCgoKCgICZsdDsvbG9nZ2VyJmd0Ozxicj4KICAgICAgICAgIKCgoKCgoKAg Jmx0O2xvZ2dlcgpjYXRlZ29yeT0ib3JnLm92aXJ0LmVuZ2luZS5hcGkucmVzdGFwaS5yZXNvdXJj ZS5BYnN0cmFjdEJhY2tlbmRSZXNvdXJjZSImZ3Q7PGJyPgogICAgICAgICAgoKCgoKCgoKCgoKCg oKCgICZsdDtsZXZlbCBuYW1lPSJERUJVRyIvJmd0Ozxicj4KICAgICAgICAgIKCgoKCgoKAgJmx0 Oy9sb2dnZXImZ3Q7PGJyPgogICAgICAgICAgPGJyPgogICAgICAgIDwvYmxvY2txdW90ZT4KICAg ICAgICA8YnI+CiAgICAgIDwvYmxvY2txdW90ZT4KICAgICAgPGJyPgogICAgICBJdCBkZXBlbmRz IHdoYXQgdXJsIGZvcmVtYW4gY2xpZW50IGFjY2Vzcy4gQnV0IHlvdSBjYW4gc2V0Ojxicj4KICAg ICAgPGJyPgogICAgICAmbHQ7bG9nZ2VyIGNhdGVnb3J5PSJvcmcub3ZpcnQuZW5naW5lLmNvcmUu YmxsIiZndDs8YnI+CiAgICAgIKCgoCAmbHQ7bGV2ZWwgbmFtZT0iQUxMIi8mZ3Q7PGJyPgogICAg ICAmbHQ7L2xvZ2dlciZndDs8YnI+CiAgICAgIDxicj4KICAgICAgQW5kIHRoZW4geW91IHdpbGwg c2VlIHdoYXQgY29tbWFuZHMgd2FzIHF1ZXJpZWQgd2l0aCBvciB3aXRob3V0CiAgICAgIHRoZSBm aWx0ZXJlZCBBUEkuPGJyPgogICAgICA8YnI+CiAgICAgIDIwMTUtMTAtMjkgMTU6NDU6NDUsNDM2 IFRSQUNFCiAgICAgIFtvcmcub3ZpcnQuZW5naW5lLmNvcmUuYmxsLkdldEFsbFZtc1F1ZXJ5XSAo YWpwLS8xMjcuMC4wLjE6ODcwMi0xKQogICAgICBbXSBTVEFSVCwgR2V0QWxsVm1zUXVlcnkoVmRj UXVlcnlQYXJhbWV0ZXJzQmFzZTp7cmVmcmVzaD0ndHJ1ZScsCiAgICAgIGZpbHRlcmVkPSd0cnVl J30pLCBsb2cgaWQ6IDUzYjNjOGI5PGJyPgogICAgICA8YnI+CiAgICAgIF5eIFRoaXMgaXMgZXhh bXBsZSBvZiBydW5uaW5nICdGaWx0ZXI6IHRydWUnIG9uIC9hcGkvdm1zICh5b3UgY2FuCiAgICAg IHNlZSBmaWx0ZXJlZD0ndHJ1ZScpLjxicj4KICAgIDwvYmxvY2txdW90ZT4KICAgIDxicj4KICAg IEJ1dCBtYXliZSBpdCB3b3VsZCBiZSBlYXNpZXIgdG8gdXNlIHRjcGR1bXAsIG9yIHNvbWUgYXBh Y2hlIG1vZHVsZQogICAgdG8gZHVtcCBoZWFkZXJzLjxicj4KICAgIDxicj4KICAgIDxibG9ja3F1 b3RlIGNpdGU9Im1pZDo1NjMyMzM5NC44MDUwODAwQHJlZGhhdC5jb20iIHR5cGU9ImNpdGUiPiA8 YnI+CiAgICAgIDxibG9ja3F1b3RlIGNpdGU9Im1pZDo1NjMwQTM2RC42MDAwMjAyQG5ldGJ1bGFl LmV1IiB0eXBlPSJjaXRlIj4KICAgICAgICA8YmxvY2txdW90ZT48YnI+CiAgICAgICAgICA8YnI+ CiAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAgIDxicj4KICAgICAgICA8YnI+CiAgICAgICAg PGJyPgogICAgICAgIDxicj4KICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IzYwNGM3ODsiPjxm b250IGNvbG9yPSIwMDAwMDAiPjxzcGFuCiAgICAgICAgICAgICAgc3R5bGU9Im1zby1mYXJlYXN0 LWxhbmd1YWdlOmVuLWdiOyIgbGFuZz0iTkwiPk1ldAogICAgICAgICAgICAgIHZyaWVuZGVsaWpr ZSBncm9ldCwgV2l0aCBraW5kIHJlZ2FyZHMsPGJyPgogICAgICAgICAgICAgIDxicj4KICAgICAg ICAgICAgICBKb3JpY2sgQXN0cmVnbzxicj4KICAgICAgICAgICAgPC9zcGFuPjwvZm9udD48L3Nw YW4+PGIgc3R5bGU9ImNvbG9yOiM2MDRjNzgiPjxicj4KICAgICAgICAgIE5ldGJ1bGFlIFZpcnR1 YWxpemF0aW9uIEV4cGVydHMgPC9iPjxicj4KICAgICAgICA8aHIgc3R5bGU9ImJvcmRlcjpub25l O2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7Ij4KICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRo OiA1MjJweCI+CiAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAg ICA8dGQgc3R5bGU9IndpZHRoOiAxMzBweDtmb250LXNpemU6IDEwcHgiPlRlbDogMDUzIDIwIDMw CiAgICAgICAgICAgICAgICAyNzA8L3RkPgogICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6 IDEzMHB4O2ZvbnQtc2l6ZTogMTBweCI+PGEKICAgICAgICAgICAgICAgICAgbW96LWRvLW5vdC1z ZW5kPSJ0cnVlIgogICAgICAgICAgICAgICAgICBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlh dGVkIgogICAgICAgICAgICAgICAgICBocmVmPSJtYWlsdG86aW5mb0BuZXRidWxhZS5ldSI+PGEg Y2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJlZj0ibWFpbHRvOmluZm9AbmV0YnVs YWUuZXUiPmluZm9AbmV0YnVsYWUuZXU8L2E+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgPHRkIHN0 eWxlPSJ3aWR0aDogMTMwcHg7Zm9udC1zaXplOiAxMHB4Ij5TdGFhbHN0ZWRlbiA0LTNBPC90ZD4K ICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxMzBweDtmb250LXNpemU6IDEwcHgiPkt2 SyAwODE5ODE4MDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAg ICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxMzBweDtmb250LXNpemU6IDEwcHgiPkZheDogMDUz IDIwIDMwCiAgICAgICAgICAgICAgICAyNzE8L3RkPgogICAgICAgICAgICAgIDx0ZCBzdHlsZT0i d2lkdGg6IDEzMHB4O2ZvbnQtc2l6ZTogMTBweCI+PGEKICAgICAgICAgICAgICAgICAgbW96LWRv LW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgICAgICBjbGFzcz0ibW96LXR4dC1saW5rLWFi YnJldmlhdGVkIgogICAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vd3d3Lm5ldGJ1bGFlLmV1 Ij48YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJodHRwOi8vd3d3Lm5l dGJ1bGFlLmV1Ij53d3cubmV0YnVsYWUuZXU8L2E+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgPHRk IHN0eWxlPSJ3aWR0aDogMTMwcHg7Zm9udC1zaXplOiAxMHB4Ij43NTQ3IFRBIEVuc2NoZWRlPC90 ZD4KICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxMzBweDtmb250LXNpemU6IDEwcHgi PkJUVwogICAgICAgICAgICAgICAgTkw4MjEyMzQ1ODRCMDE8L3RkPgogICAgICAgICAgICA8L3Ry PgogICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgICAgIDxicj4KICAgICAg ICA8aHIgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7Ij48YnI+ CiAgICAgICAgPGJyPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0ibWltZUF0dGFjaG1lbnRIZWFk ZXIiPjwvZmllbGRzZXQ+CiAgICAgICAgPGJyPgogICAgICAgIDxwcmUgd3JhcD0iIj5fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpVc2VycyBtYWlsaW5nIGxp c3QKPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIiBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlh dGVkIiBocmVmPSJtYWlsdG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0BvdmlydC5vcmc8L2E+Cjxh IG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIgY2xhc3M9Im1vei10eHQtbGluay1mcmVldGV4dCIgaHJl Zj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzIj5odHRwOi8v bGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnM8L2E+CjwvcHJlPgogICAgICA8 L2Jsb2NrcXVvdGU+CiAgICAgIDxicj4KICAgICAgPGJyPgogICAgICA8ZmllbGRzZXQgY2xhc3M9 Im1pbWVBdHRhY2htZW50SGVhZGVyIj48L2ZpZWxkc2V0PgogICAgICA8YnI+CiAgICAgIDxwcmUg d3JhcD0iIj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpV c2VycyBtYWlsaW5nIGxpc3QKPGEgY2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJl Zj0ibWFpbHRvOlVzZXJzQG92aXJ0Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPgo8YSBjbGFzcz0i bW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxt YW4vbGlzdGluZm8vdXNlcnMiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5m by91c2VyczwvYT4KPC9wcmU+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8YnI+CiAgPC9ib2R5Pgo8 L2h0bWw+CgotLS0tLS0tLS0tLS0tLTA5MDAwMzAyMDkwNjA2MDQwNjAyMDQwOC0tCg== --===============7095034159844481608==--