From fabrice.bacchella at icloud.com Tue May 24 11:12:25 2016 Content-Type: multipart/mixed; boundary="===============3709645570312112930==" MIME-Version: 1.0 From: Fabrice Bacchella To: users at ovirt.org Subject: Re: [ovirt-users] editing VM settting Date: Tue, 24 May 2016 17:12:03 +0200 Message-ID: <294D4869-995F-468C-A9FF-FCBA904148E8@icloud.com> In-Reply-To: CAMFVLy2MsfjDqYt6v4HRSA=isbww2sEU+d5LgTQnD2AbtkP7MQ@mail.gmail.com --===============3709645570312112930== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --Apple-Mail=3D_F88059A2-BD11-4DDC-B74B-4C9CDC131266 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=3Dutf-8 I thinks it's a minor thing, but still puzzling. A new VM don't have the kernel, initrd and cmdline elements. Once added =3D for a custom boot, if I remove them using the API, there are still here, = =3D but empty. If I use, the GUI, they vanished. Using CLI: Using GUI: Not critical, but strange. Both works > Le 24 mai 2016 =3DC3=3DA0 13:36, Shmuel Melamud > a =3DC3=3DA9crit : >=3D20 > Hi! >=3D20 > What do you mean under "removing values"? You want , = =3D etc. not to appear in engine response? There is no such thing. There is =3D always some value, empty or non-empty. >=3D20 > Shmuel >=3D20 > On Tue, Apr 12, 2016 at 6:40 PM, Fabrice Bacchella =3D > =3D wrote: > I'm trying to change the way a VM is booted, I want an initial setup =3D with kernel, initrd and cmdline given and later removed. >=3D20 > Using the GUI it works fine. >=3D20 > But I have no success using the python API. And running with debug =3D enable, I get this strange result : >=3D20 > > PUT /api/vms/8ced0f81-03fd-415b-a8ef-60141de7eeca HTTP/1.1 > ... > > > > > > > > > ... > < > < > < > < .../vmlinuz > < .../initrd.img > < .... > < >=3D20 > I got this with: > os_params =3D3D params.OperatingSystem() > os_params.set_boot(old_os_params.get_boot()) > os_params.set_type(old_os_params.get_type()) > os_params.set_kernel(None) > os_params.set_initrd(None) > os_params.set_cmdline(None) > self.broker.set_os(os_params) > self.broker.update() > trying to set kernel and others to empty string is not really better: > > > > > > > > > > > > > > > ... > < > < > < > < > < > < > < >=3D20 > What kind of "magic values" the engine uses to removes values ? >=3D20 >=3D20 > _______________________________________________ > Users mailing list > Users(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/users =3D >=3D20 >=3D20 --Apple-Mail=3D_F88059A2-BD11-4DDC-B74B-4C9CDC131266 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=3Dutf-8 I thinks it's a minor thing, but still puzzling.

A new VM don't have t= he =3D kernel, initrd and cmdline elements. Once added for a custom boot, if I =3D remove them using the API, there are still here, but empty. If I use, =3D the GUI, they vanished.

Using CLI:
  =3D   <os type=3D3D"rhel_7x64">
    =3D     <boot dev=3D3D"hd"/>
      =3D   <boot dev=3D3D"network"/>
      =3D   <kernel></kernel>
      =3D   <initrd></initrd>
      =3D   <cmdline></cmdline>
    =3D </os>

Using GUI:
  =3D   <os type=3D3D"rhel_7x64">
    =3D     <boot dev=3D3D"hd"/>
      =3D   <boot dev=3D3D"network"/>
    =3D </os>

Not critical, but strange. Both works
<= br =3D class=3D3D"">

Le = 24 =3D mai 2016 =3DC3=3DA0 13:36, Shmuel Melamud <smelamud(a)redhat.com<= /a>>=3D a =3DC3=3DA9crit :

Hi!

What do you = =3D mean under "removing values"?  You want <kernel>, =3D <initrd> etc. not to appear in engine response? There is no such =3D thing. There is always some value, empty or non-empty.

Shmuel

On Tue, Apr 12, 2016 at 6:40 PM, Fabrice Bacchella = =3D <
fabrice.bacchella(a)orange.fr> wrote:
I'm trying to change the way = a =3D VM is booted, I want an initial setup with kernel, initrd and cmdline =3D given and later removed.

Using the GUI it works fine.

But I have no success using the python= =3D API. And running with debug enable, I get this strange result =3D :

> = =3D PUT /api/vms/8ced0f81-03fd-415b-a8ef-60141de7eeca =3D HTTP/1.1
...
> = =3D     <os type=3D3D"rhel_7x64">
> = =3D         <boot dev=3D3D"hd"/>
> = =3D         <boot dev=3D3D"network"/>
> = =3D     </os>
...
<     <os type=3D3D"rhel_7x64">
< = =3D         <boot dev=3D3D"hd"/>
< = =3D         <boot dev=3D3D"network"/>
< = =3D         =3D <kernel>.../vmlinuz</kernel>
< = =3D         =3D <initrd>.../initrd.img</initrd>
< = =3D         =3D <cmdline>....</cmdline>
< = =3D     </os>

I got this with:
os_params =3D3D  params.OperatingSystem()
os_params.set_boot(old_os_params.get_boot())
os_params.set_type(old_os_params.get_type())
os_params.set_kernel(None)
os_params.set_initrd(None)
os_params.set_cmdline(None)
self.broker.set_os(os_params)
self.broker.update()
trying to set kernel and others to =3D empty string is not really better:
> = =3D     <os type=3D3D"rhel_7x64">
> = =3D         <boot dev=3D3D"hd"/>
> = =3D         <boot dev=3D3D"network"/>
> = =3D         <kernel></kernel>
> = =3D         <initrd></initrd>
> = =3D         <cmdline></cmdline>
> = =3D     </os>
...
<     <os type=3D3D"rhel_7x64">
< = =3D         <boot dev=3D3D"hd"/>
< = =3D         <boot dev=3D3D"network"/>
< = =3D         <kernel></kernel>
< = =3D         <initrd></initrd>
< = =3D         <cmdline></cmdline>
< = =3D     </os>

What kind of "magic values" the engine= =3D uses to removes values ?


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



=3D --Apple-Mail=3D_F88059A2-BD11-4DDC-B74B-4C9CDC131266-- --===============3709645570312112930== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" Ci0tQXBwbGUtTWFpbD1fRjg4MDU5QTItQkQxMS00RERDLUI3NEItNEM5Q0RDMTMxMjY2CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKQ29udGVudC1UeXBlOiB0ZXh0 L3BsYWluOwoJY2hhcnNldD11dGYtOAoKSSB0aGlua3MgaXQncyBhIG1pbm9yIHRoaW5nLCBidXQg c3RpbGwgcHV6emxpbmcuCgpBIG5ldyBWTSBkb24ndCBoYXZlIHRoZSBrZXJuZWwsIGluaXRyZCBh bmQgY21kbGluZSBlbGVtZW50cy4gT25jZSBhZGRlZCA9CmZvciBhIGN1c3RvbSBib290LCBpZiBJ IHJlbW92ZSB0aGVtIHVzaW5nIHRoZSBBUEksIHRoZXJlIGFyZSBzdGlsbCBoZXJlLCA9CmJ1dCBl bXB0eS4gSWYgSSB1c2UsIHRoZSBHVUksIHRoZXkgdmFuaXNoZWQuCgpVc2luZyBDTEk6CiAgICA8 b3MgdHlwZT0zRCJyaGVsXzd4NjQiPgogICAgICAgIDxib290IGRldj0zRCJoZCIvPgogICAgICAg IDxib290IGRldj0zRCJuZXR3b3JrIi8+CiAgICAgICAgPGtlcm5lbD48L2tlcm5lbD4KICAgICAg ICA8aW5pdHJkPjwvaW5pdHJkPgogICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4KICAgIDwvb3M+ CgpVc2luZyBHVUk6CiAgICA8b3MgdHlwZT0zRCJyaGVsXzd4NjQiPgogICAgICAgIDxib290IGRl dj0zRCJoZCIvPgogICAgICAgIDxib290IGRldj0zRCJuZXR3b3JrIi8+CiAgICA8L29zPgoKTm90 IGNyaXRpY2FsLCBidXQgc3RyYW5nZS4gQm90aCB3b3JrcwoKCj4gTGUgMjQgbWFpIDIwMTYgPUMz PUEwIDEzOjM2LCBTaG11ZWwgTWVsYW11ZCA8c21lbGFtdWRAcmVkaGF0LmNvbSA9CjxtYWlsdG86 c21lbGFtdWRAcmVkaGF0LmNvbT4+IGEgPUMzPUE5Y3JpdCA6Cj49MjAKPiBIaSEKPj0yMAo+IFdo YXQgZG8geW91IG1lYW4gdW5kZXIgInJlbW92aW5nIHZhbHVlcyI/ICBZb3Ugd2FudCA8a2VybmVs PiwgPGluaXRyZD4gPQpldGMuIG5vdCB0byBhcHBlYXIgaW4gZW5naW5lIHJlc3BvbnNlPyBUaGVy ZSBpcyBubyBzdWNoIHRoaW5nLiBUaGVyZSBpcyA9CmFsd2F5cyBzb21lIHZhbHVlLCBlbXB0eSBv ciBub24tZW1wdHkuCj49MjAKPiBTaG11ZWwKPj0yMAo+IE9uIFR1ZSwgQXByIDEyLCAyMDE2IGF0 IDY6NDAgUE0sIEZhYnJpY2UgQmFjY2hlbGxhID0KPGZhYnJpY2UuYmFjY2hlbGxhQG9yYW5nZS5m ciA8bWFpbHRvOmZhYnJpY2UuYmFjY2hlbGxhQG9yYW5nZS5mcj4+ID0Kd3JvdGU6Cj4gSSdtIHRy eWluZyB0byBjaGFuZ2UgdGhlIHdheSBhIFZNIGlzIGJvb3RlZCwgSSB3YW50IGFuIGluaXRpYWwg c2V0dXAgPQp3aXRoIGtlcm5lbCwgaW5pdHJkIGFuZCBjbWRsaW5lIGdpdmVuIGFuZCBsYXRlciBy ZW1vdmVkLgo+PTIwCj4gVXNpbmcgdGhlIEdVSSBpdCB3b3JrcyBmaW5lLgo+PTIwCj4gQnV0IEkg aGF2ZSBubyBzdWNjZXNzIHVzaW5nIHRoZSBweXRob24gQVBJLiBBbmQgcnVubmluZyB3aXRoIGRl YnVnID0KZW5hYmxlLCBJIGdldCB0aGlzIHN0cmFuZ2UgcmVzdWx0IDoKPj0yMAo+ID4gUFVUIC9h cGkvdm1zLzhjZWQwZjgxLTAzZmQtNDE1Yi1hOGVmLTYwMTQxZGU3ZWVjYSBIVFRQLzEuMQo+IC4u Lgo+ID4gICAgIDxvcyB0eXBlPTNEInJoZWxfN3g2NCI+Cj4gPiAgICAgICAgIDxib290IGRldj0z RCJoZCIvPgo+ID4gICAgICAgICA8Ym9vdCBkZXY9M0QibmV0d29yayIvPgo+ID4gICAgIDwvb3M+ Cj4gLi4uCj4gPCAgICAgPG9zIHR5cGU9M0QicmhlbF83eDY0Ij4KPiA8ICAgICAgICAgPGJvb3Qg ZGV2PTNEImhkIi8+Cj4gPCAgICAgICAgIDxib290IGRldj0zRCJuZXR3b3JrIi8+Cj4gPCAgICAg ICAgIDxrZXJuZWw+Li4uL3ZtbGludXo8L2tlcm5lbD4KPiA8ICAgICAgICAgPGluaXRyZD4uLi4v aW5pdHJkLmltZzwvaW5pdHJkPgo+IDwgICAgICAgICA8Y21kbGluZT4uLi4uPC9jbWRsaW5lPgo+ IDwgICAgIDwvb3M+Cj49MjAKPiBJIGdvdCB0aGlzIHdpdGg6Cj4gb3NfcGFyYW1zID0zRCAgcGFy YW1zLk9wZXJhdGluZ1N5c3RlbSgpCj4gb3NfcGFyYW1zLnNldF9ib290KG9sZF9vc19wYXJhbXMu Z2V0X2Jvb3QoKSkKPiBvc19wYXJhbXMuc2V0X3R5cGUob2xkX29zX3BhcmFtcy5nZXRfdHlwZSgp KQo+IG9zX3BhcmFtcy5zZXRfa2VybmVsKE5vbmUpCj4gb3NfcGFyYW1zLnNldF9pbml0cmQoTm9u ZSkKPiBvc19wYXJhbXMuc2V0X2NtZGxpbmUoTm9uZSkKPiBzZWxmLmJyb2tlci5zZXRfb3Mob3Nf cGFyYW1zKQo+IHNlbGYuYnJva2VyLnVwZGF0ZSgpCj4gdHJ5aW5nIHRvIHNldCBrZXJuZWwgYW5k IG90aGVycyB0byBlbXB0eSBzdHJpbmcgaXMgbm90IHJlYWxseSBiZXR0ZXI6Cj4gPiAgICAgPG9z IHR5cGU9M0QicmhlbF83eDY0Ij4KPiA+ICAgICAgICAgPGJvb3QgZGV2PTNEImhkIi8+Cj4gPiAg ICAgICAgIDxib290IGRldj0zRCJuZXR3b3JrIi8+Cj4gPiAgICAgICAgIDxrZXJuZWw+PC9rZXJu ZWw+Cj4gPiAgICAgICAgIDxpbml0cmQ+PC9pbml0cmQ+Cj4gPiAgICAgICAgIDxjbWRsaW5lPjwv Y21kbGluZT4KPiA+ICAgICA8L29zPgo+IC4uLgo+IDwgICAgIDxvcyB0eXBlPTNEInJoZWxfN3g2 NCI+Cj4gPCAgICAgICAgIDxib290IGRldj0zRCJoZCIvPgo+IDwgICAgICAgICA8Ym9vdCBkZXY9 M0QibmV0d29yayIvPgo+IDwgICAgICAgICA8a2VybmVsPjwva2VybmVsPgo+IDwgICAgICAgICA8 aW5pdHJkPjwvaW5pdHJkPgo+IDwgICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+Cj4gPCAgICAg PC9vcz4KPj0yMAo+IFdoYXQga2luZCBvZiAibWFnaWMgdmFsdWVzIiB0aGUgZW5naW5lIHVzZXMg dG8gcmVtb3ZlcyB2YWx1ZXMgPwo+PTIwCj49MjAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IFVzZXJzIG1haWxpbmcgbGlzdAo+IFVzZXJzQG92aXJ0 Lm9yZyA8bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZz4KPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21h aWxtYW4vbGlzdGluZm8vdXNlcnMgPQo8aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3VzZXJzPgo+PTIwCj49MjAKCgotLUFwcGxlLU1haWw9X0Y4ODA1OUEyLUJEMTEtNERE Qy1CNzRCLTRDOUNEQzEzMTI2NgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJp bnRhYmxlCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOwoJY2hhcnNldD11dGYtOAoKPGh0bWw+PGhl YWQ+PG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1s ID0KY2hhcnNldD0zRHV0Zi04Ij48bWV0YSBodHRwLWVxdWl2PTNEIkNvbnRlbnQtVHlwZSIgY29u dGVudD0zRCJ0ZXh0L2h0bWwgPQpjaGFyc2V0PTNEdXRmLTgiPjwvaGVhZD48Ym9keSBzdHlsZT0z RCJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7ID0KLXdlYmtpdC1uYnNwLW1vZGU6IHNwYWNlOyAtd2Vi a2l0LWxpbmUtYnJlYWs6IGFmdGVyLXdoaXRlLXNwYWNlOyIgPQpjbGFzcz0zRCIiPkkgdGhpbmtz IGl0J3MgYSBtaW5vciB0aGluZywgYnV0IHN0aWxsIHB1enpsaW5nLjxkaXYgPQpjbGFzcz0zRCIi PjxiciBjbGFzcz0zRCIiPjwvZGl2PjxkaXYgY2xhc3M9M0QiIj5BIG5ldyBWTSBkb24ndCBoYXZl IHRoZSA9Cmtlcm5lbCwgaW5pdHJkIGFuZCBjbWRsaW5lIGVsZW1lbnRzLiBPbmNlIGFkZGVkIGZv ciBhIGN1c3RvbSBib290LCBpZiBJID0KcmVtb3ZlIHRoZW0gdXNpbmcgdGhlIEFQSSwgdGhlcmUg YXJlIHN0aWxsIGhlcmUsIGJ1dCBlbXB0eS4gSWYgSSB1c2UsID0KdGhlIEdVSSwgdGhleSB2YW5p c2hlZC48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PC9kaXY+PGRpdiA9CmNs YXNzPTNEIiI+VXNpbmcgQ0xJOjwvZGl2PjxkaXYgY2xhc3M9M0QiIj48ZGl2IHN0eWxlPTNEIm1h cmdpbjogMHB4OyA9CmZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IE1lbmxvOyIgY2xhc3M9 M0QiIj4mbmJzcDsgPQombmJzcDsmbmJzcDsmbHQ7b3MgdHlwZT0zRCJyaGVsXzd4NjQiJmd0Ozwv ZGl2PjxkaXYgc3R5bGU9M0QibWFyZ2luOiA9CjBweDsgZm9udC1zaXplOiAxMXB4OyBmb250LWZh bWlseTogTWVubG87IiBjbGFzcz0zRCIiPiZuYnNwOyAmbmJzcDsgPQombmJzcDsgJm5ic3A7ICZs dDtib290IGRldj0zRCJoZCIvJmd0OzwvZGl2PjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7ID0K Zm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogTWVubG87IiBjbGFzcz0zRCIiPiZuYnNwOyAm bmJzcDsgJm5ic3A7ID0KJm5ic3A7ICZsdDtib290IGRldj0zRCJuZXR3b3JrIi8mZ3Q7PC9kaXY+ PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsgPQpmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5 OiBNZW5sbzsiIGNsYXNzPTNEIiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgPQombmJzcDsgJmx0O2tl cm5lbCZndDsmbHQ7L2tlcm5lbCZndDs8L2Rpdj48ZGl2IHN0eWxlPTNEIm1hcmdpbjogMHB4OyA9 CmZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IE1lbmxvOyIgY2xhc3M9M0QiIj4mbmJzcDsg Jm5ic3A7ICZuYnNwOyA9CiZuYnNwOyAmbHQ7aW5pdHJkJmd0OyZsdDsvaW5pdHJkJmd0OzwvZGl2 PjxkaXYgc3R5bGU9M0QibWFyZ2luOiAwcHg7ID0KZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWls eTogTWVubG87IiBjbGFzcz0zRCIiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ID0KJm5ic3A7ICZsdDtj bWRsaW5lJmd0OyZsdDsvY21kbGluZSZndDs8L2Rpdj48ZGl2IHN0eWxlPTNEIm1hcmdpbjogMHB4 OyA9CmZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IE1lbmxvOyIgY2xhc3M9M0QiIj4mbmJz cDsgJm5ic3A7ID0KJmx0Oy9vcyZndDs8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGJyIGNs YXNzPTNEIiI+PC9kaXY+PGRpdiA9CmNsYXNzPTNEIiI+VXNpbmcgR1VJOjwvZGl2PjxkaXYgY2xh c3M9M0QiIj48ZGl2IHN0eWxlPTNEIm1hcmdpbjogMHB4OyA9CmZvbnQtc2l6ZTogMTFweDsgZm9u dC1mYW1pbHk6IE1lbmxvOyIgY2xhc3M9M0QiIj4mbmJzcDsgPQombmJzcDsmbmJzcDsmbHQ7b3Mg dHlwZT0zRCJyaGVsXzd4NjQiJmd0OzwvZGl2PjxkaXYgc3R5bGU9M0QibWFyZ2luOiA9CjBweDsg Zm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogTWVubG87IiBjbGFzcz0zRCIiPiZuYnNwOyAm bmJzcDsgPQombmJzcDsgJm5ic3A7ICZsdDtib290IGRldj0zRCJoZCIvJmd0OzwvZGl2PjxkaXYg c3R5bGU9M0QibWFyZ2luOiAwcHg7ID0KZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogTWVu bG87IiBjbGFzcz0zRCIiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ID0KJm5ic3A7ICZsdDtib290IGRl dj0zRCJuZXR3b3JrIi8mZ3Q7PC9kaXY+PGRpdiBzdHlsZT0zRCJtYXJnaW46IDBweDsgPQpmb250 LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBNZW5sbzsiIGNsYXNzPTNEIiI+Jm5ic3A7ICZuYnNw OyA9CiZsdDsvb3MmZ3Q7PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0zRCIiPjxiciBjbGFzcz0zRCIi PjwvZGl2PjxkaXYgPQpjbGFzcz0zRCIiPk5vdCBjcml0aWNhbCwgYnV0IHN0cmFuZ2UuIEJvdGgg d29ya3M8L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGJyID0KY2xhc3M9M0QiIj48L2Rpdj48ZGl2IGNs YXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PGRpdiA9CmNsYXNzPTNEIiI+PGJsb2NrcXVvdGUgdHlw ZT0zRCJjaXRlIiBjbGFzcz0zRCIiPjxkaXYgY2xhc3M9M0QiIj5MZSAyNCA9Cm1haSAyMDE2ID1D Mz1BMCAxMzozNiwgU2htdWVsIE1lbGFtdWQgJmx0OzxhID0KaHJlZj0zRCJtYWlsdG86c21lbGFt dWRAcmVkaGF0LmNvbSIgY2xhc3M9M0QiIj5zbWVsYW11ZEByZWRoYXQuY29tPC9hPiZndDs9CiBh ID1DMz1BOWNyaXQgOjwvZGl2PjxiciBjbGFzcz0zRCJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5l Ij48ZGl2ID0KY2xhc3M9M0QiIj48ZGl2IGRpcj0zRCJsdHIiIGNsYXNzPTNEIiI+PGRpdiBjbGFz cz0zRCJnbWFpbF9kZWZhdWx0IiA9CnN0eWxlPTNEImZvbnQtZmFtaWx5Om1vbm9zcGFjZSxtb25v c3BhY2U7Zm9udC1zaXplOngtc21hbGwiPkhpITxiciA9CmNsYXNzPTNEIiI+PGJyIGNsYXNzPTNE IiI+PC9kaXY+PGRpdiBjbGFzcz0zRCJnbWFpbF9kZWZhdWx0IiA9CnN0eWxlPTNEImZvbnQtZmFt aWx5Om1vbm9zcGFjZSxtb25vc3BhY2U7Zm9udC1zaXplOngtc21hbGwiPldoYXQgZG8geW91ID0K bWVhbiB1bmRlciAicmVtb3ZpbmcgdmFsdWVzIj8mbmJzcDsgWW91IHdhbnQgJmx0O2tlcm5lbCZn dDssID0KJmx0O2luaXRyZCZndDsgZXRjLiBub3QgdG8gYXBwZWFyIGluIGVuZ2luZSByZXNwb25z ZT8gVGhlcmUgaXMgbm8gc3VjaCA9CnRoaW5nLiBUaGVyZSBpcyBhbHdheXMgc29tZSB2YWx1ZSwg ZW1wdHkgb3Igbm9uLWVtcHR5LjxiciBjbGFzcz0zRCIiPjxiciA9CmNsYXNzPTNEIiI+PC9kaXY+ PGRpdiBjbGFzcz0zRCJnbWFpbF9kZWZhdWx0IiA9CnN0eWxlPTNEImZvbnQtZmFtaWx5Om1vbm9z cGFjZSxtb25vc3BhY2U7Zm9udC1zaXplOngtc21hbGwiPlNobXVlbDxiciA9CmNsYXNzPTNEIiI+ PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0zRCJnbWFpbF9leHRyYSI+PGJyIGNsYXNzPTNEIiI+PGRp diA9CmNsYXNzPTNEImdtYWlsX3F1b3RlIj5PbiBUdWUsIEFwciAxMiwgMjAxNiBhdCA2OjQwIFBN LCBGYWJyaWNlIEJhY2NoZWxsYSA9CjxzcGFuIGRpcj0zRCJsdHIiIGNsYXNzPTNEIiI+Jmx0Ozxh ID0KaHJlZj0zRCJtYWlsdG86ZmFicmljZS5iYWNjaGVsbGFAb3JhbmdlLmZyIiB0YXJnZXQ9M0Qi X2JsYW5rIiA9CmNsYXNzPTNEIiI+ZmFicmljZS5iYWNjaGVsbGFAb3JhbmdlLmZyPC9hPiZndDs8 L3NwYW4+IHdyb3RlOjxiciA9CmNsYXNzPTNEIiI+PGJsb2NrcXVvdGUgY2xhc3M9M0QiZ21haWxf cXVvdGUiIHN0eWxlPTNEIm1hcmdpbjowIDAgMCA9Ci44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mg c29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiA9CnN0eWxlPTNEIndvcmQtd3JhcDpicmVhay13 b3JkIiBjbGFzcz0zRCIiPkknbSB0cnlpbmcgdG8gY2hhbmdlIHRoZSB3YXkgYSA9ClZNIGlzIGJv b3RlZCwgSSB3YW50IGFuIGluaXRpYWwgc2V0dXAgd2l0aCBrZXJuZWwsIGluaXRyZCBhbmQgY21k bGluZSA9CmdpdmVuIGFuZCBsYXRlciByZW1vdmVkLjxkaXYgY2xhc3M9M0QiIj48YnIgY2xhc3M9 M0QiIj48L2Rpdj48ZGl2ID0KY2xhc3M9M0QiIj5Vc2luZyB0aGUgR1VJIGl0IHdvcmtzIGZpbmUu PC9kaXY+PGRpdiBjbGFzcz0zRCIiPjxiciA9CmNsYXNzPTNEIiI+PC9kaXY+PGRpdiBjbGFzcz0z RCIiPkJ1dCBJIGhhdmUgbm8gc3VjY2VzcyB1c2luZyB0aGUgcHl0aG9uID0KQVBJLiBBbmQgcnVu bmluZyB3aXRoIGRlYnVnIGVuYWJsZSwgSSBnZXQgdGhpcyBzdHJhbmdlIHJlc3VsdCA9Cjo8L2Rp dj48ZGl2IGNsYXNzPTNEIiI+PGJyIGNsYXNzPTNEIiI+PC9kaXY+PGRpdiBjbGFzcz0zRCIiPjxk aXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxv IiBjbGFzcz0zRCIiPiZndDsgPQpQVVQgL2FwaS92bXMvOGNlZDBmODEtMDNmZC00MTViLWE4ZWYt NjAxNDFkZTdlZWNhID0KSFRUUC8xLjE8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+Li4uPC9k aXY+PGRpdiBjbGFzcz0zRCIiPjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4O2ZvbnQtc2l6ZTox MXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFzcz0zRCIiPiZndDsgPQombmJzcDsgJm5ic3A7ICZs dDtvcyB0eXBlPTNEInJoZWxfN3g2NCImZ3Q7PC9kaXY+PGRpdiA9CnN0eWxlPTNEIm1hcmdpbjow cHg7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNsYXNzPTNEIiI+Jmd0OyA9CiZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7Ym9vdCBkZXY9M0QiaGQiLyZndDs8L2Rpdj48 ZGl2ID0Kc3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtmb250LWZhbWlseTpNZW5s byIgY2xhc3M9M0QiIj4mZ3Q7ID0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDtib290 IGRldj0zRCJuZXR3b3JrIi8mZ3Q7PC9kaXY+PGRpdiA9CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9u dC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNsYXNzPTNEIiI+Jmd0OyA9CiZuYnNwOyAm bmJzcDsgJmx0Oy9vcyZndDs8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+Li4uPC9kaXY+PGRp diA9CmNsYXNzPTNEIiI+PGRpdiBzdHlsZT0zRCJtYXJnaW46MHB4O2ZvbnQtc2l6ZToxMXB4O2Zv bnQtZmFtaWx5Ok1lbmxvIiA9CmNsYXNzPTNEIiI+Jmx0OyAmbmJzcDsgJm5ic3A7ICZsdDtvcyB0 eXBlPTNEInJoZWxfN3g2NCImZ3Q7PC9kaXY+PGRpdiA9CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9u dC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNsYXNzPTNEIiI+Jmx0OyA9CiZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7Ym9vdCBkZXY9M0QiaGQiLyZndDs8L2Rpdj48ZGl2ID0K c3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtmb250LWZhbWlseTpNZW5sbyIgY2xh c3M9M0QiIj4mbHQ7ID0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDtib290IGRldj0z RCJuZXR3b3JrIi8mZ3Q7PC9kaXY+PGRpdiA9CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9udC1zaXpl OjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNsYXNzPTNEIiI+Jmx0OyA9CiZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyA9CiZsdDtrZXJuZWwmZ3Q7Li4uL3ZtbGludXombHQ7L2tlcm5lbCZndDs8 L2Rpdj48ZGl2ID0Kc3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtmb250LWZhbWls eTpNZW5sbyIgY2xhc3M9M0QiIj4mbHQ7ID0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ID0K Jmx0O2luaXRyZCZndDsuLi4vaW5pdHJkLmltZyZsdDsvaW5pdHJkJmd0OzwvZGl2PjxkaXYgPQpz dHlsZT0zRCJtYXJnaW46MHB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFz cz0zRCIiPiZsdDsgPQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgPQombHQ7Y21kbGluZSZn dDsuLi4uJmx0Oy9jbWRsaW5lJmd0OzwvZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4O2Zv bnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFzcz0zRCIiPiZsdDsgPQombmJzcDsg Jm5ic3A7ICZsdDsvb3MmZ3Q7PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0zRCIiPjxiciA9CmNsYXNz PTNEIiI+PC9kaXY+PGRpdiBjbGFzcz0zRCIiPkkgZ290IHRoaXMgd2l0aDo8L2Rpdj48ZGl2ID0K Y2xhc3M9M0QiIj48cHJlID0Kc3R5bGU9M0QiYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwy NTUpO2ZvbnQtZmFtaWx5Ok1lbmxvIiA9CmNsYXNzPTNEIiI+b3NfcGFyYW1zID0zRCAgcGFyYW1z Lk9wZXJhdGluZ1N5c3RlbSgpPGJyID0KY2xhc3M9M0QiIj5vc19wYXJhbXMuc2V0X2Jvb3Qob2xk X29zX3BhcmFtcy5nZXRfYm9vdCgpKTxiciA9CmNsYXNzPTNEIiI+b3NfcGFyYW1zLnNldF90eXBl KG9sZF9vc19wYXJhbXMuZ2V0X3R5cGUoKSk8YnIgPQpjbGFzcz0zRCIiPm9zX3BhcmFtcy5zZXRf a2VybmVsKDxzcGFuIHN0eWxlPTNEImNvbG9yOiMwMDAwODAiID0KY2xhc3M9M0QiIj5Ob25lPC9z cGFuPik8YnIgY2xhc3M9M0QiIj5vc19wYXJhbXMuc2V0X2luaXRyZCg8c3BhbiA9CnN0eWxlPTNE ImNvbG9yOiMwMDAwODAiIGNsYXNzPTNEIiI+Tm9uZTwvc3Bhbj4pPGJyID0KY2xhc3M9M0QiIj5v c19wYXJhbXMuc2V0X2NtZGxpbmUoPHNwYW4gc3R5bGU9M0QiY29sb3I6IzAwMDA4MCIgPQpjbGFz cz0zRCIiPk5vbmU8L3NwYW4+KTxiciBjbGFzcz0zRCIiPjxzcGFuIHN0eWxlPTNEImNvbG9yOiM5 NDU1OGQiID0KY2xhc3M9M0QiIj5zZWxmPC9zcGFuPi5icm9rZXIuc2V0X29zKG9zX3BhcmFtcyk8 YnIgY2xhc3M9M0QiIj48c3BhbiA9CnN0eWxlPTNEImNvbG9yOiM5NDU1OGQiIGNsYXNzPTNEIiI+ c2VsZjwvc3Bhbj4uYnJva2VyLnVwZGF0ZSgpPGJyID0KY2xhc3M9M0QiIj48L3ByZT48ZGl2IGNs YXNzPTNEIiI+dHJ5aW5nIHRvIHNldCBrZXJuZWwgYW5kIG90aGVycyB0byA9CmVtcHR5IHN0cmlu ZyBpcyBub3QgcmVhbGx5IGJldHRlcjo8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGRpdiA9 CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNs YXNzPTNEIiI+Jmd0OyA9CiZuYnNwOyAmbmJzcDsgJmx0O29zIHR5cGU9M0QicmhlbF83eDY0IiZn dDs8L2Rpdj48ZGl2ID0Kc3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtmb250LWZh bWlseTpNZW5sbyIgY2xhc3M9M0QiIj4mZ3Q7ID0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZsdDtib290IGRldj0zRCJoZCIvJmd0OzwvZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4 O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFzcz0zRCIiPiZndDsgPQombmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O2Jvb3QgZGV2PTNEIm5ldHdvcmsiLyZndDs8L2Rp dj48ZGl2ID0Kc3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtmb250LWZhbWlseTpN ZW5sbyIgY2xhc3M9M0QiIj4mZ3Q7ID0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDtr ZXJuZWwmZ3Q7Jmx0Oy9rZXJuZWwmZ3Q7PC9kaXY+PGRpdiA9CnN0eWxlPTNEIm1hcmdpbjowcHg7 Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNsYXNzPTNEIiI+Jmd0OyA9CiZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7aW5pdHJkJmd0OyZsdDsvaW5pdHJkJmd0OzwvZGl2 PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1l bmxvIiBjbGFzcz0zRCIiPiZndDsgPQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O2Nt ZGxpbmUmZ3Q7Jmx0Oy9jbWRsaW5lJmd0OzwvZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4 O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFzcz0zRCIiPiZndDsgPQombmJz cDsgJm5ic3A7ICZsdDsvb3MmZ3Q7PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0zRCIiPi4uLjwvZGl2 PjxkaXYgPQpjbGFzcz0zRCIiPjxkaXYgc3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFw eDtmb250LWZhbWlseTpNZW5sbyIgPQpjbGFzcz0zRCIiPiZsdDsgJm5ic3A7ICZuYnNwOyAmbHQ7 b3MgdHlwZT0zRCJyaGVsXzd4NjQiJmd0OzwvZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4 O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFzcz0zRCIiPiZsdDsgPQombmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O2Jvb3QgZGV2PTNEImhkIi8mZ3Q7PC9kaXY+PGRp diA9CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8i IGNsYXNzPTNEIiI+Jmx0OyA9CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7Ym9vdCBk ZXY9M0QibmV0d29yayIvJmd0OzwvZGl2PjxkaXYgPQpzdHlsZT0zRCJtYXJnaW46MHB4O2ZvbnQt c2l6ZToxMXB4O2ZvbnQtZmFtaWx5Ok1lbmxvIiBjbGFzcz0zRCIiPiZsdDsgPQombmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJmx0O2tlcm5lbCZndDsmbHQ7L2tlcm5lbCZndDs8L2Rpdj48ZGl2 ID0Kc3R5bGU9M0QibWFyZ2luOjBweDtmb250LXNpemU6MTFweDtmb250LWZhbWlseTpNZW5sbyIg Y2xhc3M9M0QiIj4mbHQ7ID0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDtpbml0cmQm Z3Q7Jmx0Oy9pbml0cmQmZ3Q7PC9kaXY+PGRpdiA9CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9udC1z aXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8iIGNsYXNzPTNEIiI+Jmx0OyA9CiZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbHQ7Y21kbGluZSZndDsmbHQ7L2NtZGxpbmUmZ3Q7PC9kaXY+PGRp diA9CnN0eWxlPTNEIm1hcmdpbjowcHg7Zm9udC1zaXplOjExcHg7Zm9udC1mYW1pbHk6TWVubG8i IGNsYXNzPTNEIiI+Jmx0OyA9CiZuYnNwOyAmbmJzcDsgJmx0Oy9vcyZndDs8L2Rpdj48L2Rpdj48 ZGl2IGNsYXNzPTNEIiI+PGJyID0KY2xhc3M9M0QiIj48L2Rpdj48ZGl2IGNsYXNzPTNEIiI+V2hh dCBraW5kIG9mICJtYWdpYyB2YWx1ZXMiIHRoZSBlbmdpbmUgPQp1c2VzIHRvIHJlbW92ZXMgdmFs dWVzID88L2Rpdj48ZGl2IGNsYXNzPTNEIiI+PGJyID0KY2xhc3M9M0QiIj48L2Rpdj48L2Rpdj48 YnIgPQpjbGFzcz0zRCIiPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fPGJyIGNsYXNzPTNEIiI+ClVzZXJzIG1haWxpbmcgbGlzdDxiciBjbGFzcz0zRCIiPgo8 YSBocmVmPTNEIm1haWx0bzpVc2Vyc0BvdmlydC5vcmciIGNsYXNzPTNEIiI+VXNlcnNAb3ZpcnQu b3JnPC9hPjxiciA9CmNsYXNzPTNEIiI+CjxhIGhyZWY9M0QiaHR0cDovL2xpc3RzLm92aXJ0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzIiA9CnJlbD0zRCJub3JlZmVycmVyIiB0YXJnZXQ9M0Qi X2JsYW5rIiA9CmNsYXNzPTNEIiI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3VzZXJzPC9hPjxiciA9CmNsYXNzPTNEIiI+CjxiciBjbGFzcz0zRCIiPjwvYmxvY2txdW90 ZT48L2Rpdj48YnIgY2xhc3M9M0QiIj48L2Rpdj4KPC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxi ciBjbGFzcz0zRCIiPjwvZGl2PjwvYm9keT48L2h0bWw+PQoKLS1BcHBsZS1NYWlsPV9GODgwNTlB Mi1CRDExLTREREMtQjc0Qi00QzlDREMxMzEyNjYtLQo= --===============3709645570312112930==--