From mishka8520 at yahoo.com Tue Oct 20 09:21:07 2015 Content-Type: multipart/mixed; boundary="===============6574289206036091575==" MIME-Version: 1.0 From: Michael Pasternak To: users at ovirt.org Subject: Re: [ovirt-users] Question about the ovirt-engine-sdk-java Date: Tue, 20 Oct 2015 13:20:58 +0000 Message-ID: <1268847654.258574.1445347258543.JavaMail.yahoo@mail.yahoo.com> In-Reply-To: 232088952.33924037.1445267153042.JavaMail.zimbra@redhat.com --===============6574289206036091575== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_258573_264923491.1445347258533 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: quoted-printable Hi Salifou, OK, i see now, then you have two options: a) To extend the sdk: 1. extend java-sdk by allowing to inject custom headers in every request=3D= C2=3D =3DA0(not trivial as all ovirt SDKs are auto-generated,but if its common ca= se=3D , you may find yourself getting help from community/maintainers) 2. fork java-sdk customizing it for your needs I'd recommend the former as fork will leave you with no support/maintenance= =3D from community plus you'll haveto implement new=3DC2=3DA0features by your = own =3D (what will become a moving target very quickly)=3D20 b) Proxying the sdk You can implement dynamic proxy wrapping SDK's HttpProxy.java#execute and i= =3D ntercept the context from there,but you've to stay tuned as backward compat= =3D ibility is for interface and not for SDK internals,so "potentially" you can= =3D find your code broken in one of the following upgrades hope it helps.=3DC2=3DA0 On Monday, October 19, 2015 6:05 PM, Salifou Sidi M. Malick wrote: =3D20 Hi Micheal, Thanks for replying. Unfortunately the headers are dynamic ... Here is the story: We implemented a custom RHEV-M AAA module for a client in order to allow their custom portal to make RHEV-M API=3D20 calls.=3D20 The custom AAA module requires extra dynamic data in the HTTP=3D20 request (as request headers for now but request parameters=3D20 should be fine too).=3D20 Their is no problem if they go with the REST API, I am just=3D20 trying to anticipate/identify potential integration problem ... It seems like they will have to use the REST API or modify the=3D20 java sdk ...=3DC2=3DA0=3D20 Thanks a lot, Salifou ----- Original Message ----- From: "Michael Pasternak" To: "Salifou Sidi M. Malick" Cc: "Users" Sent: Sunday, October 18, 2015 5:45:05 AM Subject: Re: Question about the ovirt-engine-sdk-java Hi=3DC2=3DA0Salifou, Actually java sdk is=3DC2=3DA0intentionally=3DC2=3DA0hiding transport level= interna=3D ls so developers could stay in java domain,if your headers are static, easi= =3D est way would be using reverse proxy in a middle to intercept requests,=3DC= 2=3D =3DA0 can you tell me why do you need this? =3D20 =3DC2=3DA0 =3DC2=3DA0 On Friday, October 16, 2015 1:14 AM, Salifou Sidi M. = Malick <=3D ssidimah(a)redhat.com> wrote: =3DC2=3DA0=3D20 Hi Micheal, I have a question about the ovirt-engine-sdk-java. Is there a way to add custom request headers to each RHEVM API call? Here is an example of a request that I would like to do: $ curl -v -k \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 -H "ID: user1(a)ad.x= yz.com" \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 -H "PASSWORD: Pwssd"= \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 -H "TARGET: kobe" \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 https://vm0.smalick.= com/api/hosts I would like to add ID, PASSWORD and TARGET as HTTP request header.=3D20 Thanks, Salifou = ------=3D_Part_258573_264923491.1445347258533 Content-Type: text/html; charset=3DUTF-8 Content-Transfer-Encoding: quoted-printable
Hi Sali= =3D fou,

OK, i see now, = =3D then you have two options:

a) To extend th= e =3D sdk:

1. extend java-sdk by allow= =3D ing to inject custom headers in every request (not trivial as all ovir= =3D t SDKs are auto-generated,
= but if its common case, you may find yourself getting help from community= =3D /maintainers)

=
2. fork java-sdk customizing it for your needs= =3D

I'd recommend the former as fork= =3D will leave you with no support/maintenance from community plus you'll have= =3D
to implement new features by yo= =3D ur own (what will become a moving target very quickly)

b) Proxying the sdk
<=3D br>
You can implement dynamic proxy wrapping SDK's= H=3D ttpProxy.java#execute and intercept the context from there,
but you've to stay tuned as backward compatibility is for interf= ac=3D e and not for SDK internals,
so "potentially" yo= u ca=3D n find your code broken in one of the following upgrades

hope it helps. 
=3D On =3D Monday, October 19, 2015 6:05 PM, Salifou Sidi M. Malick <ssidimah(a)red= ha=3D t.com> wrote:

=
Hi Micheal,

Th=3D anks for replying. Unfortunately the headers are dynamic ...

Here is the story:

We implemented a custom RHEV-M AAA module for a client
in order to allow their custom portal to make RHEV-M API
calls.

The custom AAA module r= equi=3D res extra dynamic data in the HTTP
request (as request= h=3D eaders for now but request parameters
should be fine t= oo=3D ).

Their is no problem if they go= wit=3D h the REST API, I am just
trying to anticipate/identif= y =3D potential integration problem ...

= It s=3D eems like they will have to use the REST API or modify the
java sdk ... 

Thanks a lo= t,Salifou


----- Original Message -----
From: "Michael Pastern= ak=3D " <mishka85= 20(a)yah=3D oo.com>
To: "Salifou Sidi M. Malick" <ssidimah(a)redhat.com&g= t;
Cc: "Users" <users(a)ovirt.org>
Sent: Sunday, October 18, = 2015=3D 5:45:05 AM
Subject: Re: Question about the ovirt-engin= e-=3D sdk-java

Hi Salifou,
Actually java sdk is intentionally hiding transport level i= =3D nternals so developers could stay in java domain,if your headers are static= =3D , easiest way would be using reverse proxy in a middle to intercept request= =3D s, 

can you tell me why do yo= u ne=3D ed this?


    On Friday, October 16, 2015 1:14 AM, Salifou Sid= i =3D M. Malick <ss= idimah=3D @redhat.com> wrote:
 
Hi Micheal,

I h= ave a =3D question about the ovirt-engine-sdk-java.

Is there a way to add custom request headers to each RHEVM API call?
Here is an example of a request that= I w=3D ould like to do:

$ curl -v -k \          -H "ID: user1(a)ad.xyz.com" \
&nbs=3D p;         -H "PASSWORD: Pwssd" \
&= nb=3D sp;         -H "TARGET: kobe" \
&nb= sp=3D ;         https://vm0.smalick.co= m/=3D api/hosts


I wou=3D ld like to add ID, PASSWORD and TARGET as HTTP request header.

Thanks,
Salifou



------=3D_Part_258573_264923491.1445347258533-- --===============6574289206036091575== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzI1ODU3M18yNjQ5MjM0OTEuMTQ0NTM0NzI1ODUzMwpDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVv dGVkLXByaW50YWJsZQoKSGkgU2FsaWZvdSwKT0ssIGkgc2VlIG5vdywgdGhlbiB5b3UgaGF2ZSB0 d28gb3B0aW9uczoKYSkgVG8gZXh0ZW5kIHRoZSBzZGs6CjEuIGV4dGVuZCBqYXZhLXNkayBieSBh bGxvd2luZyB0byBpbmplY3QgY3VzdG9tIGhlYWRlcnMgaW4gZXZlcnkgcmVxdWVzdD1DMj0KPUEw KG5vdCB0cml2aWFsIGFzIGFsbCBvdmlydCBTREtzIGFyZSBhdXRvLWdlbmVyYXRlZCxidXQgaWYg aXRzIGNvbW1vbiBjYXNlPQosIHlvdSBtYXkgZmluZCB5b3Vyc2VsZiBnZXR0aW5nIGhlbHAgZnJv bSBjb21tdW5pdHkvbWFpbnRhaW5lcnMpCjIuIGZvcmsgamF2YS1zZGsgY3VzdG9taXppbmcgaXQg Zm9yIHlvdXIgbmVlZHMKSSdkIHJlY29tbWVuZCB0aGUgZm9ybWVyIGFzIGZvcmsgd2lsbCBsZWF2 ZSB5b3Ugd2l0aCBubyBzdXBwb3J0L21haW50ZW5hbmNlPQogZnJvbSBjb21tdW5pdHkgcGx1cyB5 b3UnbGwgaGF2ZXRvIGltcGxlbWVudCBuZXc9QzI9QTBmZWF0dXJlcyBieSB5b3VyIG93biA9Cih3 aGF0IHdpbGwgYmVjb21lIGEgbW92aW5nIHRhcmdldCB2ZXJ5IHF1aWNrbHkpPTIwCmIpIFByb3h5 aW5nIHRoZSBzZGsKWW91IGNhbiBpbXBsZW1lbnQgZHluYW1pYyBwcm94eSB3cmFwcGluZyBTREsn cyBIdHRwUHJveHkuamF2YSNleGVjdXRlIGFuZCBpPQpudGVyY2VwdCB0aGUgY29udGV4dCBmcm9t IHRoZXJlLGJ1dCB5b3UndmUgdG8gc3RheSB0dW5lZCBhcyBiYWNrd2FyZCBjb21wYXQ9CmliaWxp dHkgaXMgZm9yIGludGVyZmFjZSBhbmQgbm90IGZvciBTREsgaW50ZXJuYWxzLHNvICJwb3RlbnRp YWxseSIgeW91IGNhbj0KIGZpbmQgeW91ciBjb2RlIGJyb2tlbiBpbiBvbmUgb2YgdGhlIGZvbGxv d2luZyB1cGdyYWRlcwpob3BlIGl0IGhlbHBzLj1DMj1BMAoKICAgICBPbiBNb25kYXksIE9jdG9i ZXIgMTksIDIwMTUgNjowNSBQTSwgU2FsaWZvdSBTaWRpIE0uIE1hbGljayA8c3NpZGltYWhAPQpy ZWRoYXQuY29tPiB3cm90ZToKICA9MjAKCiBIaSBNaWNoZWFsLAoKVGhhbmtzIGZvciByZXBseWlu Zy4gVW5mb3J0dW5hdGVseSB0aGUgaGVhZGVycyBhcmUgZHluYW1pYyAuLi4KCkhlcmUgaXMgdGhl IHN0b3J5OgoKV2UgaW1wbGVtZW50ZWQgYSBjdXN0b20gUkhFVi1NIEFBQSBtb2R1bGUgZm9yIGEg Y2xpZW50CmluIG9yZGVyIHRvIGFsbG93IHRoZWlyIGN1c3RvbSBwb3J0YWwgdG8gbWFrZSBSSEVW LU0gQVBJPTIwCmNhbGxzLj0yMAoKVGhlIGN1c3RvbSBBQUEgbW9kdWxlIHJlcXVpcmVzIGV4dHJh IGR5bmFtaWMgZGF0YSBpbiB0aGUgSFRUUD0yMApyZXF1ZXN0IChhcyByZXF1ZXN0IGhlYWRlcnMg Zm9yIG5vdyBidXQgcmVxdWVzdCBwYXJhbWV0ZXJzPTIwCnNob3VsZCBiZSBmaW5lIHRvbykuPTIw CgpUaGVpciBpcyBubyBwcm9ibGVtIGlmIHRoZXkgZ28gd2l0aCB0aGUgUkVTVCBBUEksIEkgYW0g anVzdD0yMAp0cnlpbmcgdG8gYW50aWNpcGF0ZS9pZGVudGlmeSBwb3RlbnRpYWwgaW50ZWdyYXRp b24gcHJvYmxlbSAuLi4KCkl0IHNlZW1zIGxpa2UgdGhleSB3aWxsIGhhdmUgdG8gdXNlIHRoZSBS RVNUIEFQSSBvciBtb2RpZnkgdGhlPTIwCmphdmEgc2RrIC4uLj1DMj1BMD0yMAoKVGhhbmtzIGEg bG90LApTYWxpZm91CgoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQpGcm9tOiAiTWljaGFl bCBQYXN0ZXJuYWsiIDxtaXNoa2E4NTIwQHlhaG9vLmNvbT4KVG86ICJTYWxpZm91IFNpZGkgTS4g TWFsaWNrIiA8c3NpZGltYWhAcmVkaGF0LmNvbT4KQ2M6ICJVc2VycyIgPHVzZXJzQG92aXJ0Lm9y Zz4KU2VudDogU3VuZGF5LCBPY3RvYmVyIDE4LCAyMDE1IDU6NDU6MDUgQU0KU3ViamVjdDogUmU6 IFF1ZXN0aW9uIGFib3V0IHRoZSBvdmlydC1lbmdpbmUtc2RrLWphdmEKCkhpPUMyPUEwU2FsaWZv dSwKQWN0dWFsbHkgamF2YSBzZGsgaXM9QzI9QTBpbnRlbnRpb25hbGx5PUMyPUEwaGlkaW5nIHRy YW5zcG9ydCBsZXZlbCBpbnRlcm5hPQpscyBzbyBkZXZlbG9wZXJzIGNvdWxkIHN0YXkgaW4gamF2 YSBkb21haW4saWYgeW91ciBoZWFkZXJzIGFyZSBzdGF0aWMsIGVhc2k9CmVzdCB3YXkgd291bGQg YmUgdXNpbmcgcmV2ZXJzZSBwcm94eSBpbiBhIG1pZGRsZSB0byBpbnRlcmNlcHQgcmVxdWVzdHMs PUMyPQo9QTAKCmNhbiB5b3UgdGVsbCBtZSB3aHkgZG8geW91IG5lZWQgdGhpcz8KPTIwCgoKPUMy PUEwID1DMj1BMCBPbiBGcmlkYXksIE9jdG9iZXIgMTYsIDIwMTUgMToxNCBBTSwgU2FsaWZvdSBT aWRpIE0uIE1hbGljayA8PQpzc2lkaW1haEByZWRoYXQuY29tPiB3cm90ZToKPUMyPUEwPTIwCgog SGkgTWljaGVhbCwKCkkgaGF2ZSBhIHF1ZXN0aW9uIGFib3V0IHRoZSBvdmlydC1lbmdpbmUtc2Rr LWphdmEuCgpJcyB0aGVyZSBhIHdheSB0byBhZGQgY3VzdG9tIHJlcXVlc3QgaGVhZGVycyB0byBl YWNoIFJIRVZNIEFQSSBjYWxsPwoKSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgcmVxdWVzdCB0aGF0 IEkgd291bGQgbGlrZSB0byBkbzoKCiQgY3VybCAtdiAtayBcCj1DMj1BMCA9QzI9QTAgPUMyPUEw ID1DMj1BMCA9QzI9QTAgLUggIklEOiB1c2VyMUBhZC54eXouY29tIiBcCj1DMj1BMCA9QzI9QTAg PUMyPUEwID1DMj1BMCA9QzI9QTAgLUggIlBBU1NXT1JEOiBQd3NzZCIgXAo9QzI9QTAgPUMyPUEw ID1DMj1BMCA9QzI9QTAgPUMyPUEwIC1IICJUQVJHRVQ6IGtvYmUiIFwKPUMyPUEwID1DMj1BMCA9 QzI9QTAgPUMyPUEwID1DMj1BMCBodHRwczovL3ZtMC5zbWFsaWNrLmNvbS9hcGkvaG9zdHMKCgpJ IHdvdWxkIGxpa2UgdG8gYWRkIElELCBQQVNTV09SRCBhbmQgVEFSR0VUIGFzIEhUVFAgcmVxdWVz dCBoZWFkZXIuPTIwCgpUaGFua3MsClNhbGlmb3UKCgoKCiAgCi0tLS0tLT1fUGFydF8yNTg1NzNf MjY0OTIzNDkxLjE0NDUzNDcyNTg1MzMKQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9 VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPGh0bWw+ PGhlYWQ+PC9oZWFkPjxib2R5PjxkaXYgc3R5bGU9M0QiY29sb3I6IzAwMDsgYmFja2dyb3VuZC1j b2xvcjojZmZmOyBmPQpvbnQtZmFtaWx5OkhlbHZldGljYU5ldWUtTGlnaHQsIEhlbHZldGljYSBO ZXVlIExpZ2h0LCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmU9CnRpY2EsIEFyaWFsLCBMdWNpZGEgR3Jh bmRlLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4Ij48ZGl2IGlkPTNEInlpdjkzNjYzMT0KMDM2 MiI+PGRpdiBpZD0zRCJ5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF83Mjc2Ij48ZGl2IHN0eWxl PTNEImNvbG9yOiMwMDA7PQpiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Zm9udC1mYW1pbHk6SGVsdmV0 aWNhTmV1ZS1MaWdodCwgSGVsdmV0aWNhIE5ldWUgTGlnaHQ9CiwgSGVsdmV0aWNhIE5ldWUsIEhl bHZldGljYSwgQXJpYWwsIEx1Y2lkYSBHcmFuZGUsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEzcD0K eDsiIGlkPTNEInl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzcyNzUiPjxkaXYgZGlyPTNEImx0 ciIgaWQ9M0QieWl2OTM2NjMxPQowMzYyeXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNDI4MyI+ PHNwYW4gY2xhc3M9M0QieWl2OTM2NjMxMDM2MiIgaWQ9M0QieWk9CnY5MzY2MzEwMzYyeXVpXzNf MTZfMF8xXzE0NDUzMzgwNjc5MzBfNDI5NiIgc3R5bGU9M0QiZm9udC1mYW1pbHk6J0hlbHZldGlj YT0KIE5ldWUnLCAnU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFyaWFsLCAnTHVjaWRhIEdyYW5kZScs IHNhbnMtc2VyaWY7Ij5IaSBTYWxpPQpmb3UsPC9zcGFuPjxzcGFuPjwvc3Bhbj48L2Rpdj48ZGl2 IGRpcj0zRCJsdHIiIGlkPTNEInlpdjkzNjYzMTAzNjJ5dWlfM18xNl89CjBfMV8xNDQ1MzM4MDY3 OTMwXzQyODMiPjxzcGFuIGNsYXNzPTNEInlpdjkzNjYzMTAzNjIiIHN0eWxlPTNEImZvbnQtZmFt aWx5Oj0KJ0hlbHZldGljYSBOZXVlJywgJ1NlZ29lIFVJJywgSGVsdmV0aWNhLCBBcmlhbCwgJ0x1 Y2lkYSBHcmFuZGUnLCBzYW5zLXNlcmlmPQo7Ij48YnIgY2xlYXI9M0Qibm9uZSI+PC9zcGFuPjwv ZGl2PjxkaXYgZGlyPTNEImx0ciIgaWQ9M0QieWl2OTM2NjMxMDM2Mnl1aV89CjNfMTZfMF8xXzE0 NDUzMzgwNjc5MzBfNDI4MyI+PHNwYW4gY2xhc3M9M0QieWl2OTM2NjMxMDM2MiIgaWQ9M0QieWl2 OTM2NjMxMD0KMzYyeXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNDU0NyIgc3R5bGU9M0QiZm9u dC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJywgPQonU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFyaWFs LCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY7Ij5PSywgaSBzZWUgbm93LCA9CnRoZW4geW91 IGhhdmUgdHdvIG9wdGlvbnM6PC9zcGFuPjwvZGl2PjxkaXYgZGlyPTNEImx0ciIgaWQ9M0QieWl2 OTM2NjMxMDM2Mj0KeXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNDI4MyI+PHNwYW4gY2xhc3M9 M0QieWl2OTM2NjMxMDM2MiIgc3R5bGU9M0QiZm9uPQp0LWZhbWlseTonSGVsdmV0aWNhIE5ldWUn LCAnU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFyaWFsLCAnTHVjaWRhIEdyYW5kZScsIHM9CmFucy1z ZXJpZjsiPjxiciBjbGVhcj0zRCJub25lIj48L3NwYW4+PC9kaXY+PGRpdiBkaXI9M0QibHRyIiBp ZD0zRCJ5aXY5MzY2Mz0KMTAzNjJ5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF80MjgzIj48c3Bh biBjbGFzcz0zRCJ5aXY5MzY2MzEwMzYyIiBzdHlsZT0KPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRp Y2EgTmV1ZScsICdTZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhPQpuZGUn LCBzYW5zLXNlcmlmOyIgaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNzI4NiI+YSkg VG8gZXh0ZW5kIHRoZSA9CnNkazo8L3NwYW4+PC9kaXY+PGRpdiBkaXI9M0QibHRyIiBpZD0zRCJ5 aXY5MzY2MzEwMzYyeXVpXzNfMTZfMF8xXzE0NDUzMzgwNj0KNzkzMF80MjgzIj48c3BhbiBjbGFz cz0zRCJ5aXY5MzY2MzEwMzYyIiBzdHlsZT0zRCJmb250LWZhbWlseTonSGVsdmV0aWNhIE5lPQp1 ZScsICdTZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fucy1z ZXJpZjsiPjxiciBjbGVhcj0KPTNEIm5vbmUiPjwvc3Bhbj48L2Rpdj48ZGl2IGRpcj0zRCJsdHIi IGlkPTNEInlpdjkzNjYzMTAzNjJ5dWlfM18xNl8wXzFfMTQ0PQo1MzM4MDY3OTMwXzQyODMiPjxz cGFuIGNsYXNzPTNEInlpdjkzNjYzMTAzNjIiIGlkPTNEInlpdjkzNjYzMTAzNjJ5dWlfM18xNl89 CjBfMV8xNDQ1MzM4MDY3OTMwXzQ4MDAiIHN0eWxlPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2Eg TmV1ZScsICdTZWdvZSBVSScsID0KSGVsdmV0aWNhLCBBcmlhbCwgJ0x1Y2lkYSBHcmFuZGUnLCBz YW5zLXNlcmlmOyI+MS4gZXh0ZW5kIGphdmEtc2RrIGJ5IGFsbG93PQppbmcgdG8gaW5qZWN0IGN1 c3RvbSBoZWFkZXJzIGluIGV2ZXJ5IHJlcXVlc3Q8L3NwYW4+PHNwYW4gY2xhc3M9M0QieWl2OTM2 NjM9CjEwMzYyIiBzdHlsZT0zRCJmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgJ1NlZ29l IFVJJywgSGVsdmV0aWNhLCBBcmlhbD0KLCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY7Ij4m bmJzcDs8L3NwYW4+PHNwYW4gaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDUzPQozODA2NzkzMF84MDgy IiBjbGFzcz0zRCIiIHN0eWxlPTNEImZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCAnU2Vn b2UgVUk9CicsIEhlbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fucy1zZXJpZjsi Pihub3QgdHJpdmlhbCBhcyBhbGwgb3Zpcj0KdCBTREtzIGFyZSBhdXRvLWdlbmVyYXRlZDwvc3Bh bj48c3BhbiBzdHlsZT0zRCJmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlPQonLCAnU2Vnb2Ug VUknLCBIZWx2ZXRpY2EsIEFyaWFsLCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY7Ij4sPC9z cGFuPjwvZGk9CnY+PGRpdiBkaXI9M0QibHRyIiBpZD0zRCJ5aXY5MzY2MzEwMzYyeXVpXzNfMTZf MF8xXzE0NDUzMzgwNjc5MzBfNDI4MyI+PHNwYT0KbiBzdHlsZT0zRCJmb250LWZhbWlseTogJ0hl bHZldGljYSBOZXVlJywgJ1NlZ29lIFVJJywgSGVsdmV0aWNhLCBBcmlhbCwgJ0x1PQpjaWRhIEdy YW5kZScsIHNhbnMtc2VyaWY7IiBjbGFzcz0zRCIiIGlkPTNEInl1aV8zXzE2XzBfMV8xNDQ1MzM4 MDY3OTMwXzkwOTA9CiI+YnV0IGlmIGl0cyBjb21tb24gY2FzZSwgeW91IG1heSBmaW5kIHlvdXJz ZWxmIGdldHRpbmcgaGVscCBmcm9tIGNvbW11bml0eT0KL21haW50YWluZXJzKTwvc3Bhbj48L2Rp dj48ZGl2IGRpcj0zRCJsdHIiIGlkPTNEInlpdjkzNjYzMTAzNjJ5dWlfM18xNl8wXzFfPQoxNDQ1 MzM4MDY3OTMwXzQyODMiPjxzcGFuIHN0eWxlPTNEImZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5l dWUnLCAnU2Vnb2UgVUk9CicsIEhlbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fu cy1zZXJpZjsiIGNsYXNzPTNEIiI+PGJyPjwvc3Bhbj48Lz0KZGl2PjxkaXYgZGlyPTNEImx0ciIg aWQ9M0QieWl2OTM2NjMxMDM2Mnl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzQyODMiPjxzPQpw YW4gY2xhc3M9M0QieWl2OTM2NjMxMDM2MiIgaWQ9M0QieWl2OTM2NjMxMDM2Mnl1aV8zXzE2XzBf MV8xNDQ1MzM4MDY3OTMwXzQ9CjgwMSIgc3R5bGU9M0QiZm9udC1mYW1pbHk6J0hlbHZldGljYSBO ZXVlJywgJ1NlZ29lIFVJJywgSGVsdmV0aWNhLCBBcmlhbCwgJz0KTHVjaWRhIEdyYW5kZScsIHNh bnMtc2VyaWY7Ij4yLiBmb3JrIGphdmEtc2RrIGN1c3RvbWl6aW5nIGl0IGZvciB5b3VyIG5lZWRz PQo8L3NwYW4+PC9kaXY+PGRpdiBkaXI9M0QibHRyIiBpZD0zRCJ5aXY5MzY2MzEwMzYyeXVpXzNf MTZfMF8xXzE0NDUzMzgwNjc5MzA9Cl80MjgzIj48c3BhbiBjbGFzcz0zRCJ5aXY5MzY2MzEwMzYy IiBzdHlsZT0zRCJmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLD0KICdTZWdvZSBVSScsIEhl bHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fucy1zZXJpZjsiPjxiciBjbGVhcj0z RCJuPQpvbmUiPjwvc3Bhbj48L2Rpdj48ZGl2IGRpcj0zRCJsdHIiIGlkPTNEInlpdjkzNjYzMTAz NjJ5dWlfM18xNl8wXzFfMTQ0NTMzODA9CjY3OTMwXzQyODMiPjxzcGFuIGNsYXNzPTNEInlpdjkz NjYzMTAzNjIiIGlkPTNEInlpdjkzNjYzMTAzNjJ5dWlfM18xNl8wXzFfMT0KNDQ1MzM4MDY3OTMw XzQ5NzQiIHN0eWxlPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBVSScs IEhlbHZlPQp0aWNhLCBBcmlhbCwgJ0x1Y2lkYSBHcmFuZGUnLCBzYW5zLXNlcmlmOyI+SSdkIHJl Y29tbWVuZCB0aGUgZm9ybWVyIGFzIGZvcms9CiB3aWxsIGxlYXZlIHlvdSB3aXRoIG5vIHN1cHBv cnQvbWFpbnRlbmFuY2UgZnJvbSBjb21tdW5pdHkgcGx1cyB5b3UnbGwgaGF2ZT0KPC9zcGFuPjwv ZGl2PjxkaXYgZGlyPTNEImx0ciIgaWQ9M0QieWl2OTM2NjMxMDM2Mnl1aV8zXzE2XzBfMV8xNDQ1 MzM4MDY3OTMwPQpfNDI4MyI+PHNwYW4gY2xhc3M9M0QieWl2OTM2NjMxMDM2MiIgc3R5bGU9M0Qi Zm9udC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJyw9CiAnU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFy aWFsLCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY7IiBpZD0zRCJ5dWlfM18xNj0KXzBfMV8x NDQ1MzM4MDY3OTMwXzcyODUiPnRvIGltcGxlbWVudCBuZXcmbmJzcDs8L3NwYW4+PHNwYW4gaWQ9 M0QieWl2OTM2NjMxPQowMzYyeXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNTE2MiIgc3R5bGU9 M0QiZm9udC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJyw9CiAnU2Vnb2UgVUknLCBIZWx2ZXRpY2Es IEFyaWFsLCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY7Ij5mZWF0dXJlcyBieSB5bz0KdXIg b3duICh3aGF0IHdpbGwgYmVjb21lIGEgbW92aW5nIHRhcmdldCB2ZXJ5IHF1aWNrbHkpPC9zcGFu PjwvZGl2PiAgPGJyIGNsPQplYXI9M0Qibm9uZSI+PGRpdiBjbGFzcz0zRCJ5aXY5MzY2MzEwMzYy cXRkU2VwYXJhdGVCUiIgaWQ9M0QieXVpXzNfMTZfMF8xXzE9CjQ0NTMzODA2NzkzMF83Mjc0IiBk aXI9M0QibHRyIj5iKSBQcm94eWluZyB0aGUgc2RrPC9kaXY+PGRpdiBjbGFzcz0zRCJ5aXY5Mz0K NjYzMTAzNjJxdGRTZXBhcmF0ZUJSIiBpZD0zRCJ5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF83 Mjc0IiBkaXI9M0QibHRyIj48PQpicj48L2Rpdj48ZGl2IGNsYXNzPTNEInlpdjkzNjYzMTAzNjJx dGRTZXBhcmF0ZUJSIiBpZD0zRCJ5dWlfM18xNl8wXzFfMTQ0NTM9CjM4MDY3OTMwXzcyNzQiIGRp cj0zRCJsdHIiPllvdSBjYW4gaW1wbGVtZW50IGR5bmFtaWMgcHJveHkgd3JhcHBpbmcgU0RLJ3Mg SD0KdHRwUHJveHkuamF2YSNleGVjdXRlIGFuZCBpbnRlcmNlcHQgdGhlIGNvbnRleHQgZnJvbSB0 aGVyZSw8L2Rpdj48ZGl2IGNsYXNzPQo9M0QieWl2OTM2NjMxMDM2MnF0ZFNlcGFyYXRlQlIiIGlk PTNEInl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzcyNzQiIGRpcj0KPTNEImx0ciI+YnV0IHlv dSd2ZSB0byBzdGF5IHR1bmVkIGFzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgZm9yIGludGVy ZmFjPQplIGFuZCBub3QgZm9yIFNESyBpbnRlcm5hbHMsPC9kaXY+PGRpdiBjbGFzcz0zRCJ5aXY5 MzY2MzEwMzYycXRkU2VwYXJhdGVCUiI9CiBpZD0zRCJ5dWlfM18xNl8wXzFfMTQ0NTMzODA2Nzkz MF83Mjc0IiBkaXI9M0QibHRyIj5zbyAicG90ZW50aWFsbHkiIHlvdSBjYT0KbiBmaW5kIHlvdXIg Y29kZSBicm9rZW4gaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgdXBncmFkZXM8L2Rpdj48ZGl2IGNs YXNzPTNEPQoieWl2OTM2NjMxMDM2MnF0ZFNlcGFyYXRlQlIiIGlkPTNEInl1aV8zXzE2XzBfMV8x NDQ1MzM4MDY3OTMwXzcyNzQiIGRpcj0zRCI9Cmx0ciI+PGJyPjwvZGl2PjxkaXYgY2xhc3M9M0Qi eWl2OTM2NjMxMDM2MnF0ZFNlcGFyYXRlQlIiIGlkPTNEInl1aV8zXzE2XzBfMT0KXzE0NDUzMzgw Njc5MzBfNzI3NCIgZGlyPTNEImx0ciI+aG9wZSBpdCBoZWxwcy4mbmJzcDs8YnIgY2xlYXI9M0Qi bm9uZSI+PGJyPQogY2xlYXI9M0Qibm9uZSI+PC9kaXY+PGRpdiBjbGFzcz0zRCJ5aXY5MzY2MzEw MzYyeXF0MDU2Mjc3NzI4MiIgaWQ9M0QieWl2OTM9CjY2MzEwMzYyeXF0ODE1OTEiPjwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9M0QiLnlpdjkzNjYzMTAzNjJ5YWhvbz0KX3F1b3Rl ZCIgaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfODUzMyI+IDxkaXYgc3R5bGU9M0Qi Zm9udC1mYW1pbHk6PQpIZWx2ZXRpY2FOZXVlLUxpZ2h0LCBIZWx2ZXRpY2EgTmV1ZSBMaWdodCwg SGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWw9CiwgTHVjaWRhIEdyYW5kZSwgc2Fucy1z ZXJpZjtmb250LXNpemU6MTNweDsiIGlkPTNEInl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OT0KMzBf ODUzMiI+IDxkaXYgc3R5bGU9M0QiZm9udC1mYW1pbHk6SGVsdmV0aWNhTmV1ZSwgSGVsdmV0aWNh IE5ldWUsIEhlbHZldGljPQphLCBBcmlhbCwgTHVjaWRhIEdyYW5kZSwgc2Fucy1zZXJpZjtmb250 LXNpemU6MTZweDsiIGlkPTNEInl1aV8zXzE2XzBfMV8xNDQ9CjUzMzgwNjc5MzBfODUzMSI+IDxk aXYgZGlyPTNEImx0ciIgaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfODU1NCI+ID0K PGZvbnQgc2l6ZT0zRCIyIiBmYWNlPTNEIkFyaWFsIiBpZD0zRCJ5dWlfM18xNl8wXzFfMTQ0NTMz ODA2NzkzMF84NTU5Ij4gT24gPQpNb25kYXksIE9jdG9iZXIgMTksIDIwMTUgNjowNSBQTSwgU2Fs aWZvdSBTaWRpIE0uIE1hbGljayAmbHQ7c3NpZGltYWhAcmVkaGE9CnQuY29tJmd0OyB3cm90ZTo8 YnIgY2xlYXI9M0Qibm9uZSI+IDwvZm9udD4gPC9kaXY+ICA8YnIgY2xlYXI9M0Qibm9uZSI+PGJy ID0KY2xlYXI9M0Qibm9uZSI+IDxkaXYgY2xhc3M9M0QieWl2OTM2NjMxMDM2MnlfbXNnX2NvbnRh aW5lciIgaWQ9M0QieXVpXzNfMTZfPQowXzFfMTQ0NTMzODA2NzkzMF84NzEyIj5IaSBNaWNoZWFs LDxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+VGg9CmFua3MgZm9yIHJlcGx5 aW5nLiBVbmZvcnR1bmF0ZWx5IHRoZSBoZWFkZXJzIGFyZSBkeW5hbWljIC4uLjxiciBjbGVhcj0z RCJubz0KbmUiPjxiciBjbGVhcj0zRCJub25lIj5IZXJlIGlzIHRoZSBzdG9yeTo8YnIgY2xlYXI9 M0Qibm9uZSI+PGJyIGNsZWFyPTNEIm5vPQpuZSI+V2UgaW1wbGVtZW50ZWQgYSBjdXN0b20gUkhF Vi1NIEFBQSBtb2R1bGUgZm9yIGEgY2xpZW50PGJyIGNsZWFyPTNEIm5vbmU9CiI+aW4gb3JkZXIg dG8gYWxsb3cgdGhlaXIgY3VzdG9tIHBvcnRhbCB0byBtYWtlIFJIRVYtTSBBUEkgPGJyIGNsZWFy PTNEIm5vbj0KZSI+Y2FsbHMuIDxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+ VGhlIGN1c3RvbSBBQUEgbW9kdWxlIHJlcXVpPQpyZXMgZXh0cmEgZHluYW1pYyBkYXRhIGluIHRo ZSBIVFRQIDxiciBjbGVhcj0zRCJub25lIj5yZXF1ZXN0IChhcyByZXF1ZXN0IGg9CmVhZGVycyBm b3Igbm93IGJ1dCByZXF1ZXN0IHBhcmFtZXRlcnMgPGJyIGNsZWFyPTNEIm5vbmUiPnNob3VsZCBi ZSBmaW5lIHRvbz0KKS4gPGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj5UaGVp ciBpcyBubyBwcm9ibGVtIGlmIHRoZXkgZ28gd2l0PQpoIHRoZSBSRVNUIEFQSSwgSSBhbSBqdXN0 IDxiciBjbGVhcj0zRCJub25lIj50cnlpbmcgdG8gYW50aWNpcGF0ZS9pZGVudGlmeSA9CnBvdGVu dGlhbCBpbnRlZ3JhdGlvbiBwcm9ibGVtIC4uLjxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9 M0Qibm9uZSI+SXQgcz0KZWVtcyBsaWtlIHRoZXkgd2lsbCBoYXZlIHRvIHVzZSB0aGUgUkVTVCBB UEkgb3IgbW9kaWZ5IHRoZSA8YnIgY2xlYXI9M0Qibm9uPQplIj5qYXZhIHNkayAuLi4mbmJzcDsg PGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj5UaGFua3MgYSBsb3QsPGI9CnIg Y2xlYXI9M0Qibm9uZSI+U2FsaWZvdTxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9u ZSI+PGRpdiBjbGFzcz0zRD0KInlpdjkzNjYzMTAzNjJ5cXQ4MDIzMTAzNTQyIiBpZD0zRCJ5aXY5 MzY2MzEwMzYyeXF0ZmQ4MzgwOCI+PGJyIGNsZWFyPTNEIm5vPQpuZSI+LS0tLS0gT3JpZ2luYWwg TWVzc2FnZSAtLS0tLTxiciBjbGVhcj0zRCJub25lIj5Gcm9tOiAiTWljaGFlbCBQYXN0ZXJuYWs9 CiIgJmx0OzxhIHJlbD0zRCJub2ZvbGxvdyIgc2hhcGU9M0QicmVjdCIgeW1haWx0bz0zRCJtYWls dG86bWlzaGthODUyMEB5YWhvbz0KLmNvbSIgdGFyZ2V0PTNEIl9ibGFuayIgaHJlZj0zRCJtYWls dG86bWlzaGthODUyMEB5YWhvby5jb20iPm1pc2hrYTg1MjBAeWFoPQpvby5jb208L2E+Jmd0Ozxi ciBjbGVhcj0zRCJub25lIj5UbzogIlNhbGlmb3UgU2lkaSBNLiBNYWxpY2siICZsdDs8YSByZWw9 M0Q9CiJub2ZvbGxvdyIgc2hhcGU9M0QicmVjdCIgeW1haWx0bz0zRCJtYWlsdG86c3NpZGltYWhA cmVkaGF0LmNvbSIgdGFyZ2V0PTNEIj0KX2JsYW5rIiBocmVmPTNEIm1haWx0bzpzc2lkaW1haEBy ZWRoYXQuY29tIj5zc2lkaW1haEByZWRoYXQuY29tPC9hPiZndDs8YnIgPQpjbGVhcj0zRCJub25l Ij5DYzogIlVzZXJzIiAmbHQ7PGEgcmVsPTNEIm5vZm9sbG93IiBzaGFwZT0zRCJyZWN0IiB5bWFp bHRvPQo9M0QibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyIgdGFyZ2V0PTNEIl9ibGFuayIgaHJlZj0z RCJtYWlsdG86dXNlcnNAb3ZpcnQub3I9CmciPnVzZXJzQG92aXJ0Lm9yZzwvYT4mZ3Q7PGJyIGNs ZWFyPTNEIm5vbmUiPlNlbnQ6IFN1bmRheSwgT2N0b2JlciAxOCwgMjAxNT0KIDU6NDU6MDUgQU08 YnIgY2xlYXI9M0Qibm9uZSI+U3ViamVjdDogUmU6IFF1ZXN0aW9uIGFib3V0IHRoZSBvdmlydC1l bmdpbmUtPQpzZGstamF2YTxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+SGkm bmJzcDtTYWxpZm91LDxiciBjbGVhcj0zRCI9Cm5vbmUiPkFjdHVhbGx5IGphdmEgc2RrIGlzJm5i c3A7aW50ZW50aW9uYWxseSZuYnNwO2hpZGluZyB0cmFuc3BvcnQgbGV2ZWwgaT0KbnRlcm5hbHMg c28gZGV2ZWxvcGVycyBjb3VsZCBzdGF5IGluIGphdmEgZG9tYWluLGlmIHlvdXIgaGVhZGVycyBh cmUgc3RhdGljPQosIGVhc2llc3Qgd2F5IHdvdWxkIGJlIHVzaW5nIHJldmVyc2UgcHJveHkgaW4g YSBtaWRkbGUgdG8gaW50ZXJjZXB0IHJlcXVlc3Q9CnMsJm5ic3A7PGJyIGNsZWFyPTNEIm5vbmUi PjxiciBjbGVhcj0zRCJub25lIj5jYW4geW91IHRlbGwgbWUgd2h5IGRvIHlvdSBuZT0KZWQgdGhp cz88YnIgY2xlYXI9M0Qibm9uZSI+IDxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9u ZSI+PGJyIGNsZWFyPQo9M0Qibm9uZSI+Jm5ic3A7ICZuYnNwOyAgT24gRnJpZGF5LCBPY3RvYmVy IDE2LCAyMDE1IDE6MTQgQU0sIFNhbGlmb3UgU2lkaSA9Ck0uIE1hbGljayAmbHQ7PGEgcmVsPTNE Im5vZm9sbG93IiBzaGFwZT0zRCJyZWN0IiB5bWFpbHRvPTNEIm1haWx0bzpzc2lkaW1haD0KQHJl ZGhhdC5jb20iIHRhcmdldD0zRCJfYmxhbmsiIGhyZWY9M0QibWFpbHRvOnNzaWRpbWFoQHJlZGhh dC5jb20iPnNzaWRpbWFoPQpAcmVkaGF0LmNvbTwvYT4mZ3Q7IHdyb3RlOjxiciBjbGVhcj0zRCJu b25lIj4mbmJzcDsgIDxiciBjbGVhcj0zRCJub25lIj48YnI9CiBjbGVhcj0zRCJub25lIj4gSGkg TWljaGVhbCw8YnIgY2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFyPTNEIm5vbmUiPkkgaGF2ZSBhID0K cXVlc3Rpb24gYWJvdXQgdGhlIG92aXJ0LWVuZ2luZS1zZGstamF2YS48YnIgY2xlYXI9M0Qibm9u ZSI+PGJyIGNsZWFyPTNEIm5vPQpuZSI+SXMgdGhlcmUgYSB3YXkgdG8gYWRkIGN1c3RvbSByZXF1 ZXN0IGhlYWRlcnMgdG8gZWFjaCBSSEVWTSBBUEkgY2FsbD88YnI9CiBjbGVhcj0zRCJub25lIj48 YnIgY2xlYXI9M0Qibm9uZSI+SGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgcmVxdWVzdCB0aGF0IEkg dz0Kb3VsZCBsaWtlIHRvIGRvOjxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+ JCBjdXJsIC12IC1rIFw8YnIgY2xlPQphcj0zRCJub25lIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7IC1IICJJRDogPGEgcmVsPTNEIm5vZm9sbG93IiA9CnNoYXBlPTNEInJlY3Qi IHltYWlsdG89M0QibWFpbHRvOnVzZXIxQGFkLnh5ei5jb20iIHRhcmdldD0zRCJfYmxhbmsiIGhy ZWY9Cj0zRCJtYWlsdG86dXNlcjFAYWQueHl6LmNvbSI+dXNlcjFAYWQueHl6LmNvbTwvYT4iIFw8 YnIgY2xlYXI9M0Qibm9uZSI+Jm5icz0KcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IC1I ICJQQVNTV09SRDogUHdzc2QiIFw8YnIgY2xlYXI9M0Qibm9uZSI+Jm5iPQpzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7IC1IICJUQVJHRVQ6IGtvYmUiIFw8YnIgY2xlYXI9M0Qibm9uZSI+ Jm5ic3A9CjsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IDxhIHJlbD0zRCJub2ZvbGxvdyIg c2hhcGU9M0QicmVjdCIgdGFyZ2V0PTNEIj0KX2JsYW5rIiBocmVmPTNEImh0dHBzOi8vdm0wLnNt YWxpY2suY29tL2FwaS9ob3N0cyI+aHR0cHM6Ly92bTAuc21hbGljay5jb20vPQphcGkvaG9zdHM8 L2E+PGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9u ZSI+SSB3b3U9CmxkIGxpa2UgdG8gYWRkIElELCBQQVNTV09SRCBhbmQgVEFSR0VUIGFzIEhUVFAg cmVxdWVzdCBoZWFkZXIuIDxiciBjbGVhcj0zRD0KIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj5U aGFua3MsPGJyIGNsZWFyPTNEIm5vbmUiPlNhbGlmb3U8YnIgY2xlYXI9M0Qibm9uPQplIj48YnIg Y2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFyPTNEIm5vbmUiPjwvZGl2PjxiciBjbGVhcj0zRCJub25l Ij48YnIgY2xlYXI9Cj0zRCJub25lIj48L2Rpdj4gIDwvZGl2PiA8L2Rpdj4gIDwvZGl2PjwvZGl2 PjwvYm9keT48L2h0bWw+Ci0tLS0tLT1fUGFydF8yNTg1NzNfMjY0OTIzNDkxLjE0NDUzNDcyNTg1 MzMtLQo= --===============6574289206036091575==--