From vfeenstr at redhat.com Wed Jan 4 07:42:27 2017 Content-Type: multipart/mixed; boundary="===============7872805470909580964==" MIME-Version: 1.0 From: Vinzenz Feenstra To: users at ovirt.org Subject: Re: [ovirt-users] How to invoke ovirt-guest-agent hook from ovirt engine SDK ? Date: Wed, 04 Jan 2017 08:42:23 +0100 Message-ID: In-Reply-To: CAOtQfMQBhaXacLt9_j3SYntD6jj=TVGE7zPUq-9Hf1N22BtANw@mail.gmail.com --===============7872805470909580964== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --Apple-Mail=3D_A044C52E-A4D1-4C7D-AE35-1DB2F8E0966B Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=3Dutf-8 > On Jan 3, 2017, at 6:37 AM, TranceWorldLogic . =3D wrote: >=3D20 > Hi, >=3D20 > It look interesting. > Would you please point me some document that cover in detail ? >=3D20 > I was looking for mechanism where I can monitor guest application. > If application get failed or crash then I need to restart or start =3D other VM. > Is it possible in ovirt ?=3D20 No, there is nothing like this in oVirt, you would have to use something = =3D like zabbix and then connect it with the oVirt SDK > I though I will use hook but as you explain it clear me that my =3D understand was wrong. > Thanks for your help. >=3D20 > Thanks, > ~Rohit >=3D20 >=3D20 > On Mon, Jan 2, 2017 at 1:04 PM, Vinzenz Feenstra > wrote: >=3D20 > > On Dec 30, 2016, at 11:03 AM, TranceWorldLogic . =3D > wrote: > > > > HI, >=3D20 > Hi there, >=3D20 > > > > I was exploring more about ovirt-gueste-engin. > > It look to me very easy to configure add add hook as script. > > > > But my doubt is, how to invoke those script from ovirt-engine ? > > Please some one help me to understand this part. > > I am looking into python SDK code to figure out same but still not =3D got luck >=3D20 > Guest agent hooks aren=3DE2=3D80=3D99t triggered through the SDK, hooks a= re =3D triggered when certain events happen on the hypervisor side. > e.g. A VM gets migrated from HOST A to HOST B or the VM gets =3D suspended. In these cases VDSM _can_ send a message to the guest > agent asking it to process all hooks. >=3D20 > That those hooks are enabled are depending on the migration policy =3D configured. Currently all but the =3DE2=3D80=3D98Legacy=3DE2=3D80=3D99 mig= ration =3D policies do cause the hooks to be executed, given a new enough guest =3D agent, VDSM and cluster version. > HTH >=3D20 >=3D20 > > > > Thanks, > > ~Rohit > > _______________________________________________ > > Users mailing list > > Users(a)ovirt.org > > http://lists.ovirt.org/mailman/listinfo/users =3D >=3D20 >=3D20 --Apple-Mail=3D_A044C52E-A4D1-4C7D-AE35-1DB2F8E0966B Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=3Dutf-8
On Jan 3, 2017, at 6:37 AM, TranceWorldLogic . <tranceworldlogic(a)gmail.com> wrote:

Hi,

It look =3D interesting.
Would you please point me some document = =3D that cover in detail ?

I was looking for mechanism where I can monitor guest =3D application.
If application get =3D failed or crash then I need to restart or start other VM.
Is it possible in ovirt ?

No, there is nothing like this in oVirt, you would = =3D have to use something like zabbix and then connect it with the oVirt =3D SDK

I =3D though I will use hook but as you explain it clear me that my understand = =3D was wrong.

Thanks for your help.
=

Thanks,
~Rohit


On Mon, Jan 2, 2017 at 1:04 PM, = =3D Vinzenz Feenstra <vfeenstr(a)redhat.com> wrote:

> On Dec 30, 2016, at 11:03 AM, TranceWorldLogic . <tranceworldlogic(a)gmail.com> wrote:
>
> HI,

Hi there,

>
> I was exploring more about ovirt-gueste-engin.
> It look to me very easy to configure add add hook as script.
>
> But my doubt is, how to invoke those script from ovirt-engine ?
> Please some one help me to understand this part.
> I am looking into python SDK code to figure out same but still not =3D got luck

Guest agent hooks aren=3DE2=3D80=3D99t triggered through the SDK, ho= oks =3D are triggered when certain events happen on the hypervisor side.
e.g. A VM gets migrated from HOST A to HOST B or the VM gets suspended. =3D In these cases VDSM _can_ send a message to the guest
agent asking it to process all hooks.

That those hooks are enabled are depending on the migration policy =3D configured. Currently all but the =3DE2=3D80=3D98Legacy=3DE2=3D80=3D99 = ; =3D migration policies do cause the hooks to be executed, given a new enough = =3D guest agent, VDSM and cluster version.
HTH


>
> Thanks,
> ~Rohit
> _______________________________________________
> Users mailing list
> Users(a)ovirt.org<= /a>
>
http://lists.ovirt.org/mailman/listinfo/users



=3D --Apple-Mail=3D_A044C52E-A4D1-4C7D-AE35-1DB2F8E0966B-- --===============7872805470909580964== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" Ci0tQXBwbGUtTWFpbD1fQTA0NEM1MkUtQTREMS00QzdELUFFMzUtMURCMkY4RTA5NjZCCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKQ29udGVudC1UeXBlOiB0ZXh0 L3BsYWluOwoJY2hhcnNldD11dGYtOAoKCj4gT24gSmFuIDMsIDIwMTcsIGF0IDY6MzcgQU0sIFRy YW5jZVdvcmxkTG9naWMgLiA9Cjx0cmFuY2V3b3JsZGxvZ2ljQGdtYWlsLmNvbT4gd3JvdGU6Cj49 MjAKPiBIaSwKPj0yMAo+IEl0IGxvb2sgaW50ZXJlc3RpbmcuCj4gV291bGQgeW91IHBsZWFzZSBw b2ludCBtZSBzb21lIGRvY3VtZW50IHRoYXQgY292ZXIgaW4gZGV0YWlsID8KPj0yMAo+IEkgd2Fz IGxvb2tpbmcgZm9yIG1lY2hhbmlzbSB3aGVyZSBJIGNhbiBtb25pdG9yIGd1ZXN0IGFwcGxpY2F0 aW9uLgo+IElmIGFwcGxpY2F0aW9uIGdldCBmYWlsZWQgb3IgY3Jhc2ggdGhlbiBJIG5lZWQgdG8g cmVzdGFydCBvciBzdGFydCA9Cm90aGVyIFZNLgo+IElzIGl0IHBvc3NpYmxlIGluIG92aXJ0ID89 MjAKCk5vLCB0aGVyZSBpcyBub3RoaW5nIGxpa2UgdGhpcyBpbiBvVmlydCwgeW91IHdvdWxkIGhh dmUgdG8gdXNlIHNvbWV0aGluZyA9Cmxpa2UgemFiYml4IGFuZCB0aGVuIGNvbm5lY3QgaXQgd2l0 aCB0aGUgb1ZpcnQgU0RLCgo+IEkgdGhvdWdoIEkgd2lsbCB1c2UgaG9vayBidXQgYXMgeW91IGV4 cGxhaW4gaXQgY2xlYXIgbWUgdGhhdCBteSA9CnVuZGVyc3RhbmQgd2FzIHdyb25nLgoKPiBUaGFu a3MgZm9yIHlvdXIgaGVscC4KPj0yMAo+IFRoYW5rcywKPiB+Um9oaXQKPj0yMAo+PTIwCj4gT24g TW9uLCBKYW4gMiwgMjAxNyBhdCAxOjA0IFBNLCBWaW56ZW56IEZlZW5zdHJhIDx2ZmVlbnN0ckBy ZWRoYXQuY29tID0KPG1haWx0bzp2ZmVlbnN0ckByZWRoYXQuY29tPj4gd3JvdGU6Cj49MjAKPiA+ IE9uIERlYyAzMCwgMjAxNiwgYXQgMTE6MDMgQU0sIFRyYW5jZVdvcmxkTG9naWMgLiA9Cjx0cmFu Y2V3b3JsZGxvZ2ljQGdtYWlsLmNvbSA8bWFpbHRvOnRyYW5jZXdvcmxkbG9naWNAZ21haWwuY29t Pj4gd3JvdGU6Cj4gPgo+ID4gSEksCj49MjAKPiBIaSB0aGVyZSwKPj0yMAo+ID4KPiA+IEkgd2Fz IGV4cGxvcmluZyBtb3JlIGFib3V0IG92aXJ0LWd1ZXN0ZS1lbmdpbi4KPiA+IEl0IGxvb2sgdG8g bWUgdmVyeSBlYXN5IHRvIGNvbmZpZ3VyZSBhZGQgYWRkIGhvb2sgYXMgc2NyaXB0Lgo+ID4KPiA+ IEJ1dCBteSBkb3VidCBpcywgaG93IHRvIGludm9rZSB0aG9zZSBzY3JpcHQgZnJvbSBvdmlydC1l bmdpbmUgPwo+ID4gUGxlYXNlIHNvbWUgb25lIGhlbHAgbWUgdG8gdW5kZXJzdGFuZCB0aGlzIHBh cnQuCj4gPiBJIGFtIGxvb2tpbmcgaW50byBweXRob24gU0RLIGNvZGUgdG8gZmlndXJlIG91dCBz YW1lIGJ1dCBzdGlsbCBub3QgPQpnb3QgbHVjawo+PTIwCj4gR3Vlc3QgYWdlbnQgaG9va3MgYXJl bj1FMj04MD05OXQgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIFNESywgaG9va3MgYXJlID0KdHJpZ2dl cmVkIHdoZW4gY2VydGFpbiBldmVudHMgaGFwcGVuIG9uIHRoZSBoeXBlcnZpc29yIHNpZGUuCj4g ZS5nLiBBIFZNIGdldHMgbWlncmF0ZWQgZnJvbSBIT1NUIEEgdG8gSE9TVCBCIG9yIHRoZSBWTSBn ZXRzID0Kc3VzcGVuZGVkLiBJbiB0aGVzZSBjYXNlcyBWRFNNIF9jYW5fIHNlbmQgYSBtZXNzYWdl IHRvIHRoZSBndWVzdAo+IGFnZW50IGFza2luZyBpdCB0byBwcm9jZXNzIGFsbCBob29rcy4KPj0y MAo+IFRoYXQgdGhvc2UgaG9va3MgYXJlIGVuYWJsZWQgYXJlIGRlcGVuZGluZyBvbiB0aGUgbWln cmF0aW9uIHBvbGljeSA9CmNvbmZpZ3VyZWQuIEN1cnJlbnRseSBhbGwgYnV0IHRoZSA9RTI9ODA9 OThMZWdhY3k9RTI9ODA9OTkgIG1pZ3JhdGlvbiA9CnBvbGljaWVzIGRvIGNhdXNlIHRoZSBob29r cyB0byBiZSBleGVjdXRlZCwgZ2l2ZW4gYSBuZXcgZW5vdWdoIGd1ZXN0ID0KYWdlbnQsIFZEU00g YW5kIGNsdXN0ZXIgdmVyc2lvbi4KPiBIVEgKPj0yMAo+PTIwCj4gPgo+ID4gVGhhbmtzLAo+ID4g flJvaGl0Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+ID4gVXNlcnMgbWFpbGluZyBsaXN0Cj4gPiBVc2Vyc0BvdmlydC5vcmcgPG1haWx0bzpVc2Vy c0BvdmlydC5vcmc+Cj4gPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v dXNlcnMgPQo8aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzPgo+ PTIwCj49MjAKCgotLUFwcGxlLU1haWw9X0EwNDRDNTJFLUE0RDEtNEM3RC1BRTM1LTFEQjJGOEUw OTY2QgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCkNvbnRlbnQt VHlwZTogdGV4dC9odG1sOwoJY2hhcnNldD11dGYtOAoKPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1l cXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1sID0KY2hhcnNldD0zRHV0 Zi04Ij48L2hlYWQ+PGJvZHkgc3R5bGU9M0Qid29yZC13cmFwOiBicmVhay13b3JkOyA9Ci13ZWJr aXQtbmJzcC1tb2RlOiBzcGFjZTsgLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1zcGFj ZTsiID0KY2xhc3M9M0QiIj48YnIgY2xhc3M9M0QiIj48ZGl2PjxibG9ja3F1b3RlIHR5cGU9M0Qi Y2l0ZSIgY2xhc3M9M0QiIj48ZGl2ID0KY2xhc3M9M0QiIj5PbiBKYW4gMywgMjAxNywgYXQgNjoz NyBBTSwgVHJhbmNlV29ybGRMb2dpYyAuICZsdDs8YSA9CmhyZWY9M0QibWFpbHRvOnRyYW5jZXdv cmxkbG9naWNAZ21haWwuY29tIiA9CmNsYXNzPTNEIiI+dHJhbmNld29ybGRsb2dpY0BnbWFpbC5j b208L2E+Jmd0OyB3cm90ZTo8L2Rpdj48YnIgPQpjbGFzcz0zRCJBcHBsZS1pbnRlcmNoYW5nZS1u ZXdsaW5lIj48ZGl2IGNsYXNzPTNEIiI+PGRpdiBkaXI9M0QibHRyIiA9CmNsYXNzPTNEIiI+PGRp diBjbGFzcz0zRCIiPjxkaXYgY2xhc3M9M0QiIj48ZGl2IGNsYXNzPTNEIiI+PGRpdiA9CmNsYXNz PTNEIiI+SGksPGJyIGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PC9kaXY+SXQgbG9vayA9Cmlu dGVyZXN0aW5nLjxiciBjbGFzcz0zRCIiPjwvZGl2PldvdWxkIHlvdSBwbGVhc2UgcG9pbnQgbWUg c29tZSBkb2N1bWVudCA9CnRoYXQgY292ZXIgaW4gZGV0YWlsID88YnIgY2xhc3M9M0QiIj48YnIg Y2xhc3M9M0QiIj48L2Rpdj48ZGl2ID0KY2xhc3M9M0QiIj5JIHdhcyBsb29raW5nIGZvciBtZWNo YW5pc20gd2hlcmUgSSBjYW4gbW9uaXRvciBndWVzdCA9CmFwcGxpY2F0aW9uLjxiciBjbGFzcz0z RCIiPjwvZGl2PjxkaXYgY2xhc3M9M0QiIj5JZiBhcHBsaWNhdGlvbiBnZXQgPQpmYWlsZWQgb3Ig Y3Jhc2ggdGhlbiBJIG5lZWQgdG8gcmVzdGFydCBvciBzdGFydCBvdGhlciBWTS48YnIgPQpjbGFz cz0zRCIiPjwvZGl2PjxkaXYgY2xhc3M9M0QiIj5JcyBpdCBwb3NzaWJsZSBpbiBvdmlydCA/IDxi ciA9CmNsYXNzPTNEIiI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+ PGJyID0KY2xhc3M9M0QiIj48L2Rpdj48ZGl2Pk5vLCB0aGVyZSBpcyBub3RoaW5nIGxpa2UgdGhp cyBpbiBvVmlydCwgeW91IHdvdWxkID0KaGF2ZSB0byB1c2Ugc29tZXRoaW5nIGxpa2UgemFiYml4 IGFuZCB0aGVuIGNvbm5lY3QgaXQgd2l0aCB0aGUgb1ZpcnQgPQpTREs8L2Rpdj48YnIgY2xhc3M9 M0QiIj48YmxvY2txdW90ZSB0eXBlPTNEImNpdGUiIGNsYXNzPTNEIiI+PGRpdiA9CmNsYXNzPTNE IiI+PGRpdiBkaXI9M0QibHRyIiBjbGFzcz0zRCIiPjxkaXYgY2xhc3M9M0QiIj48ZGl2IGNsYXNz PTNEIiI+SSA9CnRob3VnaCBJIHdpbGwgdXNlIGhvb2sgYnV0IGFzIHlvdSBleHBsYWluIGl0IGNs ZWFyIG1lIHRoYXQgbXkgdW5kZXJzdGFuZCA9CndhcyB3cm9uZy48L2Rpdj48L2Rpdj48L2Rpdj48 L2Rpdj48L2Jsb2NrcXVvdGU+PGJyIGNsYXNzPTNEIiI+PGJsb2NrcXVvdGUgPQp0eXBlPTNEImNp dGUiIGNsYXNzPTNEIiI+PGRpdiBjbGFzcz0zRCIiPjxkaXYgZGlyPTNEImx0ciIgY2xhc3M9M0Qi Ij48ZGl2ID0KY2xhc3M9M0QiIj48ZGl2IGNsYXNzPTNEIiI+VGhhbmtzIGZvciB5b3VyIGhlbHAu PGJyIGNsYXNzPTNEIiI+PC9kaXY+PGRpdiA9CmNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PC9k aXY+VGhhbmtzLDxiciBjbGFzcz0zRCIiPjwvZGl2Pn5Sb2hpdDxiciA9CmNsYXNzPTNEIiI+PGRp diBjbGFzcz0zRCIiPjxkaXYgY2xhc3M9M0QiIj48ZGl2IGNsYXNzPTNEIiI+PGJyID0KY2xhc3M9 M0QiIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEImdtYWlsX2V4dHJhIj48 YnIgPQpjbGFzcz0zRCIiPjxkaXYgY2xhc3M9M0QiZ21haWxfcXVvdGUiPk9uIE1vbiwgSmFuIDIs IDIwMTcgYXQgMTowNCBQTSwgPQpWaW56ZW56IEZlZW5zdHJhIDxzcGFuIGRpcj0zRCJsdHIiIGNs YXNzPTNEIiI+Jmx0OzxhID0KaHJlZj0zRCJtYWlsdG86dmZlZW5zdHJAcmVkaGF0LmNvbSIgdGFy Z2V0PTNEIl9ibGFuayIgPQpjbGFzcz0zRCIiPnZmZWVuc3RyQHJlZGhhdC5jb208L2E+Jmd0Ozwv c3Bhbj4gd3JvdGU6PGJyID0KY2xhc3M9M0QiIj48YmxvY2txdW90ZSBjbGFzcz0zRCJnbWFpbF9x dW90ZSIgc3R5bGU9M0QibWFyZ2luOjAgMCAwID0KLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBz b2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48YnIgY2xhc3M9M0QiIj4KJmd0OyBPbiBEZWMgMzAsIDIw MTYsIGF0IDExOjAzIEFNLCBUcmFuY2VXb3JsZExvZ2ljIC4gJmx0OzxhID0KaHJlZj0zRCJtYWls dG86dHJhbmNld29ybGRsb2dpY0BnbWFpbC5jb20iID0KY2xhc3M9M0QiIj50cmFuY2V3b3JsZGxv Z2ljQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxiciBjbGFzcz0zRCIiPgomZ3Q7PGJyIGNsYXNz PTNEIiI+CiZndDsgSEksPGJyIGNsYXNzPTNEIiI+CjxiciBjbGFzcz0zRCIiPgpIaSB0aGVyZSw8 YnIgY2xhc3M9M0QiIj4KPHNwYW4gY2xhc3M9M0QiIj48YnIgY2xhc3M9M0QiIj4KJmd0OzxiciBj bGFzcz0zRCIiPgomZ3Q7IEkgd2FzIGV4cGxvcmluZyBtb3JlIGFib3V0IG92aXJ0LWd1ZXN0ZS1l bmdpbi48YnIgY2xhc3M9M0QiIj4KJmd0OyBJdCBsb29rIHRvIG1lIHZlcnkgZWFzeSB0byBjb25m aWd1cmUgYWRkIGFkZCBob29rIGFzIHNjcmlwdC48YnIgPQpjbGFzcz0zRCIiPgomZ3Q7PGJyIGNs YXNzPTNEIiI+CiZndDsgQnV0IG15IGRvdWJ0IGlzLCBob3cgdG8gaW52b2tlIHRob3NlIHNjcmlw dCBmcm9tIG92aXJ0LWVuZ2luZSA/PGJyID0KY2xhc3M9M0QiIj4KJmd0OyBQbGVhc2Ugc29tZSBv bmUgaGVscCBtZSB0byB1bmRlcnN0YW5kIHRoaXMgcGFydC48YnIgY2xhc3M9M0QiIj4KJmd0OyBJ IGFtIGxvb2tpbmcgaW50byBweXRob24gU0RLIGNvZGUgdG8gZmlndXJlIG91dCBzYW1lIGJ1dCBz dGlsbCBub3QgPQpnb3QgbHVjazxiciBjbGFzcz0zRCIiPgo8YnIgY2xhc3M9M0QiIj4KPC9zcGFu Pkd1ZXN0IGFnZW50IGhvb2tzIGFyZW49RTI9ODA9OTl0IHRyaWdnZXJlZCB0aHJvdWdoIHRoZSBT REssIGhvb2tzID0KYXJlIHRyaWdnZXJlZCB3aGVuIGNlcnRhaW4gZXZlbnRzIGhhcHBlbiBvbiB0 aGUgaHlwZXJ2aXNvciBzaWRlLjxiciA9CmNsYXNzPTNEIiI+CmUuZy4gQSBWTSBnZXRzIG1pZ3Jh dGVkIGZyb20gSE9TVCBBIHRvIEhPU1QgQiBvciB0aGUgVk0gZ2V0cyBzdXNwZW5kZWQuID0KSW4g dGhlc2UgY2FzZXMgVkRTTSBfY2FuXyBzZW5kIGEgbWVzc2FnZSB0byB0aGUgZ3Vlc3Q8YnIgY2xh c3M9M0QiIj4KYWdlbnQgYXNraW5nIGl0IHRvIHByb2Nlc3MgYWxsIGhvb2tzLjxiciBjbGFzcz0z RCIiPgo8YnIgY2xhc3M9M0QiIj4KVGhhdCB0aG9zZSBob29rcyBhcmUgZW5hYmxlZCBhcmUgZGVw ZW5kaW5nIG9uIHRoZSBtaWdyYXRpb24gcG9saWN5ID0KY29uZmlndXJlZC4gQ3VycmVudGx5IGFs bCBidXQgdGhlID1FMj04MD05OExlZ2FjeT1FMj04MD05OSZuYnNwOyA9Cm1pZ3JhdGlvbiBwb2xp Y2llcyBkbyBjYXVzZSB0aGUgaG9va3MgdG8gYmUgZXhlY3V0ZWQsIGdpdmVuIGEgbmV3IGVub3Vn aCA9Cmd1ZXN0IGFnZW50LCBWRFNNIGFuZCBjbHVzdGVyIHZlcnNpb24uPGJyIGNsYXNzPTNEIiI+ CkhUSDxiciBjbGFzcz0zRCIiPgo8YnIgY2xhc3M9M0QiIj4KPGJyIGNsYXNzPTNEIiI+CiZndDs8 YnIgY2xhc3M9M0QiIj4KJmd0OyBUaGFua3MsPGJyIGNsYXNzPTNEIiI+CiZndDsgflJvaGl0PGJy IGNsYXNzPTNEIiI+CiZndDsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPHdiciBjbGFz cz0zRCIiPl9fX19fX19fX19fX19fX19fPGJyID0KY2xhc3M9M0QiIj4KJmd0OyBVc2VycyBtYWls aW5nIGxpc3Q8YnIgY2xhc3M9M0QiIj4KJmd0OyA8YSBocmVmPTNEIm1haWx0bzpVc2Vyc0Bvdmly dC5vcmciIGNsYXNzPTNEIiI+VXNlcnNAb3ZpcnQub3JnPC9hPjxiciA9CmNsYXNzPTNEIiI+CiZn dDsgPGEgaHJlZj0zRCJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNl cnMiID0KcmVsPTNEIm5vcmVmZXJyZXIiIHRhcmdldD0zRCJfYmxhbmsiID0KY2xhc3M9M0QiIj5o dHRwOi8vbGlzdHMub3ZpcnQub3JnLzx3YnIgPQpjbGFzcz0zRCIiPm1haWxtYW4vbGlzdGluZm8v dXNlcnM8L2E+PGJyIGNsYXNzPTNEIiI+CjxiciBjbGFzcz0zRCIiPgo8L2Jsb2NrcXVvdGU+PC9k aXY+PGJyIGNsYXNzPTNEIiI+PC9kaXY+CjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48YnIgY2xh c3M9M0QiIj48L2JvZHk+PC9odG1sPj0KCi0tQXBwbGUtTWFpbD1fQTA0NEM1MkUtQTREMS00QzdE LUFFMzUtMURCMkY4RTA5NjZCLS0K --===============7872805470909580964==--