From dougsland at redhat.com Thu Aug 30 15:03:45 2012 Content-Type: multipart/mixed; boundary="===============2744952827520230199==" MIME-Version: 1.0 From: Douglas Landgraf To: users at ovirt.org Subject: Re: [Users] HowTo: Spice ActiveX Plugin/Virt Viewer Console on oVirt 3.1 Date: Thu, 30 Aug 2012 16:03:33 -0400 Message-ID: <503FC715.805@redhat.com> In-Reply-To: 2063822397.62059658.1346307725497.JavaMail.root@redhat.com --===============2744952827520230199== 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. --------------040104040508080203070706 Content-Type: text/plain; charset=3DISO-8859-1; format=3Dflowed Content-Transfer-Encoding: 7bit On 08/30/2012 02:22 AM, Yaniv Kaul wrote: > Thanks! > Can you wiki'fy it (@ wiki.ovirt.org) ? > Y. +1 Thanks! > > ------------------------------------------------------------------------ > > I have seen this question asked many times on this list and the > spice-devel list. Now having figured out how to make it work I > will provide the answer to the rest of the community. > > *NOTE* this only applies to Windows/Internet Explorer users. There > exists no other option other than the html5 spice console (still > beta/in development) for windows users ATM. This will also only > work with Internet Explorer. > > Basic Steps: > - Install an oVirt server. > - Add at least one node > - Setup storage/iso/export domains > > Advanced steps > - Start by downloading: http://elmarco.fedorapeople.org/spice.cab > - Create a directory for it oVirt looks by default in /usr/share/spice > - Rename spice.cab to SpiceX.cab and copy it into /usr/share/spice > - Now edit /usr/share/ovirt-engine/engine.ear/root.war/WEB-INF and > add the following: > > > > SpiceX.cab > org.ovirt.engine.core.FileServlet > > type > application/octet-stream > > > file > /usr/share/spice/SpiceX.cab > > > > SpiceX.cab > /spice/SpiceX.cab > > > - Next create an html file within > /usr/share/ovirt-engine/engine.ear/root.war > - In the example below an html file called "spice.html" > - Copy/Paste the below into spice.html: > > > > > SPICE Plugin Installer > > > > > >

>

Spice ActiveX Plugin

> >

> > > > - Save the file > - You will now need to restart the ovirt-engine service EG: > systemctl restart ovirt-engine.service OR service ovirt-engine restart > - The installer page will now be available at http:// server>/spice.html EX: http://ovirt.azeroth.net/spice.html > - Navigate to that page and click the install button > - IE will prompt you to deploy/install the SpiceX cabinet file > - It may gripe about an unsigned or untrusted source, acknowledge > this an proceed anyways > - If the install succeeds the text "Spice ActiveX Plugin" on the > page will change to blank (it's actually the plugin with null values) > - The console button in the user and webadmin portals will now > launch the new virt-viwer spice based console! > > Happy Spice Consoling to your VM's from Windows! > > *NOTE* > To uninstall the plugin: > - The below removes the add-on from IE (EG: removes knowledge of > "application/x-spice") > - pop a command terminal and type: > On Windows XP: regsvr32 /u "C:\Documents and > Settings\Administrator\Local Settings\Application > Data\virt-viewer\bin\SpiceX.dll" > On Windows 7 regsvr32 /u C:\Documents and > Settings\Administrator\Local > Settings\AppData\virt-viewer\bin\SpiceX.dll" > - Next we need to remove the rest of virt-viewer > - Go to add/remove programs and uninstall virt-viewer, this > removes the rest of virt-viewer from the system > > _______________________________________________ > 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 -- = Cheers Douglas --------------040104040508080203070706 Content-Type: text/html; charset=3DISO-8859-1 Content-Transfer-Encoding: 7bit On 08/30/2012 02:22 AM, Yaniv Kaul wrote:
Thanks!
Can you wiki'fy it (@ wiki.ovirt.org) ?
Y.
+1

Thanks!


I have seen this question asked many times on this list and the spice-devel list. Now having figured out how to make it work I will provide the answer to the rest of the community.

*NOTE* this only applies to Windows/Internet Explorer users. There exists no other option other than the html5 spice console (still beta/in development) for windows users ATM. This will also only work with Internet Explorer.

Basic Steps:
- Install an oVirt server.
- Add at least one node
- Setup storage/iso/export domains

Advanced steps
- Start by downloading: http://elmarco.fedorapeople.org/spice.cab
- Create a directory for it oVirt looks by default in /usr/share/spice
- Rename spice.cab to SpiceX.cab and copy it into /usr/share/spice
- Now edit /usr/share/ovirt-engine/engine.ear/root.war/WEB-INF and add the following:
 
 <!-- SpiceX.cab -->
  <servlet>
    <servlet-name>SpiceX.cab</servlet-n= ame>
    <servlet-class>org.ovirt.engine.core.FileServlet</servlet-class>= ;
    <init-param>
      <param-name>type</param= -name>
      <param-value>application/octet-stream</param-value>=
    </init-param>
    <init-param>
      <param-name>file</param= -name>
      <param-value>/usr/share/spice/SpiceX.cab</param-value&= gt;
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpiceX.cab</servlet-n= ame>
    <url-pattern>/spice/SpiceX.cab</url= -pattern>
  </servlet-mapping>

- Next create an html file within /usr/share/ovirt-engine/engine.ear/root.war
- In the example below an html file called "spice.html"
- Copy/Paste the below into spice.html:

<!DOCTYPE html>
<html>
<head>
<title>SPICE Plugin Installer</title>

<script type=3D"text/javascript">
function installSpice()
{
try {
    document.getElementById('SpiceX').innerHTML = =3D '<OBJECT id=3D"SpiceX" codebase=3D"/spice/SpiceX.cab" classid=3D"clsid:ACD6D89C-938D-49B4-8E81-DDBD13F4B48A" width=3D"0" height=3D"0"></OBJECT>';
    } catch (ex) {
        alert("Epic Fail!: "= + ex.Description);
    }
}     
</script>

</head>
<body>
    <p>
    <p><b id=3D'SpiceX'>Spice ActiveX Plugin</b> </p>
    <button onclick=3D'installSpice()'>Ins= tall Spice Plugin</button>
    </p>
</body>
</html>

- Save the file
- You will now need to restart the ovirt-engine service EG: systemctl restart ovirt-engine.service OR service ovirt-engine restart
- The installer page will now be available at
http://<url to ovirt server>/spice.html EX: http://ovirt.azeroth.net/spice.html
- Navigate to that page and click the install button
- IE will prompt you to deploy/install the SpiceX cabinet file
- It may gripe about an unsigned or untrusted source, acknowledge this an proceed anyways
- If the install succeeds the text "Spice ActiveX Plugin" on the page will change to blank (it's actually the plugin with null values)
- The console button in the user and webadmin portals will now launch the new virt-viwer spice based console!

Happy Spice Consoling to your VM's from Windows!

*NOTE*
To uninstall the plugin:
- The below removes the add-on from IE (EG: removes knowledge of "application/x-spice")
- pop a command terminal and type:
On Windows XP: regsvr32 /u "C:\Documents and Settings\Administrator\Local Settings\Application Data\virt-viewer\bin\SpiceX.dll"
On Windows 7 regsvr32 /u C:\Documents and Settings\Administrator\Local Settings\AppData\virt-viewer\bin\SpiceX.dll"
- Next we need to remove the rest of virt-viewer
- Go to add/remove programs and uninstall virt-viewer, this removes the rest of virt-viewer from the system

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



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


-- =

Cheers
Douglas
--------------040104040508080203070706-- --===============2744952827520230199== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS0wNDAxMDQwNDA1MDgwODAyMDMwNzA3MDYKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PUlTTy04ODU5LTE7IGZvcm1hdD1mbG93ZWQKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKT24gMDgvMzAvMjAxMiAwMjoyMiBBTSwgWWFuaXYgS2F1bCB3cm90ZToKPiBUaGFua3Mh Cj4gQ2FuIHlvdSB3aWtpJ2Z5IGl0IChAIHdpa2kub3ZpcnQub3JnKSA/Cj4gWS4KKzEKClRoYW5r cyEKPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gICAgIEkgaGF2ZSBzZWVuIHRoaXMgcXVlc3Rpb24g YXNrZWQgbWFueSB0aW1lcyBvbiB0aGlzIGxpc3QgYW5kIHRoZQo+ICAgICBzcGljZS1kZXZlbCBs aXN0LiBOb3cgaGF2aW5nIGZpZ3VyZWQgb3V0IGhvdyB0byBtYWtlIGl0IHdvcmsgSQo+ICAgICB3 aWxsIHByb3ZpZGUgdGhlIGFuc3dlciB0byB0aGUgcmVzdCBvZiB0aGUgY29tbXVuaXR5Lgo+Cj4g ICAgICpOT1RFKiB0aGlzIG9ubHkgYXBwbGllcyB0byBXaW5kb3dzL0ludGVybmV0IEV4cGxvcmVy IHVzZXJzLiBUaGVyZQo+ICAgICBleGlzdHMgbm8gb3RoZXIgb3B0aW9uIG90aGVyIHRoYW4gdGhl IGh0bWw1IHNwaWNlIGNvbnNvbGUgKHN0aWxsCj4gICAgIGJldGEvaW4gZGV2ZWxvcG1lbnQpIGZv ciB3aW5kb3dzIHVzZXJzIEFUTS4gVGhpcyB3aWxsIGFsc28gb25seQo+ICAgICB3b3JrIHdpdGgg SW50ZXJuZXQgRXhwbG9yZXIuCj4KPiAgICAgQmFzaWMgU3RlcHM6Cj4gICAgIC0gSW5zdGFsbCBh biBvVmlydCBzZXJ2ZXIuCj4gICAgIC0gQWRkIGF0IGxlYXN0IG9uZSBub2RlCj4gICAgIC0gU2V0 dXAgc3RvcmFnZS9pc28vZXhwb3J0IGRvbWFpbnMKPgo+ICAgICBBZHZhbmNlZCBzdGVwcwo+ICAg ICAtIFN0YXJ0IGJ5IGRvd25sb2FkaW5nOiBodHRwOi8vZWxtYXJjby5mZWRvcmFwZW9wbGUub3Jn L3NwaWNlLmNhYgo+ICAgICAtIENyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgaXQgb1ZpcnQgbG9va3Mg YnkgZGVmYXVsdCBpbiAvdXNyL3NoYXJlL3NwaWNlCj4gICAgIC0gUmVuYW1lIHNwaWNlLmNhYiB0 byBTcGljZVguY2FiIGFuZCBjb3B5IGl0IGludG8gL3Vzci9zaGFyZS9zcGljZQo+ICAgICAtIE5v dyBlZGl0IC91c3Ivc2hhcmUvb3ZpcnQtZW5naW5lL2VuZ2luZS5lYXIvcm9vdC53YXIvV0VCLUlO RiBhbmQKPiAgICAgYWRkIHRoZSBmb2xsb3dpbmc6Cj4KPiAgICAgPCEtLSBTcGljZVguY2FiIC0t Pgo+ICAgICA8c2VydmxldD4KPiAgICAgPHNlcnZsZXQtbmFtZT5TcGljZVguY2FiPC9zZXJ2bGV0 LW5hbWU+Cj4gICAgIDxzZXJ2bGV0LWNsYXNzPm9yZy5vdmlydC5lbmdpbmUuY29yZS5GaWxlU2Vy dmxldDwvc2VydmxldC1jbGFzcz4KPiAgICAgPGluaXQtcGFyYW0+Cj4gICAgIDxwYXJhbS1uYW1l PnR5cGU8L3BhcmFtLW5hbWU+Cj4gICAgIDxwYXJhbS12YWx1ZT5hcHBsaWNhdGlvbi9vY3RldC1z dHJlYW08L3BhcmFtLXZhbHVlPgo+ICAgICA8L2luaXQtcGFyYW0+Cj4gICAgIDxpbml0LXBhcmFt Pgo+ICAgICA8cGFyYW0tbmFtZT5maWxlPC9wYXJhbS1uYW1lPgo+ICAgICA8cGFyYW0tdmFsdWU+ L3Vzci9zaGFyZS9zcGljZS9TcGljZVguY2FiPC9wYXJhbS12YWx1ZT4KPiAgICAgPC9pbml0LXBh cmFtPgo+ICAgICA8L3NlcnZsZXQ+Cj4gICAgIDxzZXJ2bGV0LW1hcHBpbmc+Cj4gICAgIDxzZXJ2 bGV0LW5hbWU+U3BpY2VYLmNhYjwvc2VydmxldC1uYW1lPgo+ICAgICA8dXJsLXBhdHRlcm4+L3Nw aWNlL1NwaWNlWC5jYWI8L3VybC1wYXR0ZXJuPgo+ICAgICA8L3NlcnZsZXQtbWFwcGluZz4KPgo+ ICAgICAtIE5leHQgY3JlYXRlIGFuIGh0bWwgZmlsZSB3aXRoaW4KPiAgICAgL3Vzci9zaGFyZS9v dmlydC1lbmdpbmUvZW5naW5lLmVhci9yb290Lndhcgo+ICAgICAtIEluIHRoZSBleGFtcGxlIGJl bG93IGFuIGh0bWwgZmlsZSBjYWxsZWQgInNwaWNlLmh0bWwiCj4gICAgIC0gQ29weS9QYXN0ZSB0 aGUgYmVsb3cgaW50byBzcGljZS5odG1sOgo+Cj4gICAgIDwhRE9DVFlQRSBodG1sPgo+ICAgICA8 aHRtbD4KPiAgICAgPGhlYWQ+Cj4gICAgIDx0aXRsZT5TUElDRSBQbHVnaW4gSW5zdGFsbGVyPC90 aXRsZT4KPgo+ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cj4gICAgIGZ1bmN0 aW9uIGluc3RhbGxTcGljZSgpCj4gICAgIHsKPiAgICAgdHJ5IHsKPiAgICAgICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdTcGljZVgnKS5pbm5lckhUTUwgPSAnPE9CSkVDVAo+ICAgICBpZD0i U3BpY2VYIiBjb2RlYmFzZT0iL3NwaWNlL1NwaWNlWC5jYWIiCj4gICAgIGNsYXNzaWQ9ImNsc2lk OkFDRDZEODlDLTkzOEQtNDlCNC04RTgxLUREQkQxM0Y0QjQ4QSIgd2lkdGg9IjAiCj4gICAgIGhl aWdodD0iMCI+PC9PQkpFQ1Q+JzsKPiAgICAgICAgIH0gY2F0Y2ggKGV4KSB7Cj4gICAgICAgICAg ICAgYWxlcnQoIkVwaWMgRmFpbCE6ICIgKyBleC5EZXNjcmlwdGlvbik7Cj4gICAgICAgICB9Cj4g ICAgIH0KPiAgICAgPC9zY3JpcHQ+Cj4KPiAgICAgPC9oZWFkPgo+ICAgICA8Ym9keT4KPiAgICAg PHA+Cj4gICAgIDxwPjxiIGlkPSdTcGljZVgnPlNwaWNlIEFjdGl2ZVggUGx1Z2luPC9iPiA8L3A+ Cj4gICAgIDxidXR0b24gb25jbGljaz0naW5zdGFsbFNwaWNlKCknPkluc3RhbGwgU3BpY2UgUGx1 Z2luPC9idXR0b24+Cj4gICAgIDwvcD4KPiAgICAgPC9ib2R5Pgo+ICAgICA8L2h0bWw+Cj4KPiAg ICAgLSBTYXZlIHRoZSBmaWxlCj4gICAgIC0gWW91IHdpbGwgbm93IG5lZWQgdG8gcmVzdGFydCB0 aGUgb3ZpcnQtZW5naW5lIHNlcnZpY2UgRUc6Cj4gICAgIHN5c3RlbWN0bCByZXN0YXJ0IG92aXJ0 LWVuZ2luZS5zZXJ2aWNlIE9SIHNlcnZpY2Ugb3ZpcnQtZW5naW5lIHJlc3RhcnQKPiAgICAgLSBU aGUgaW5zdGFsbGVyIHBhZ2Ugd2lsbCBub3cgYmUgYXZhaWxhYmxlIGF0IGh0dHA6Ly88dXJsIHRv IG92aXJ0Cj4gICAgIHNlcnZlcj4vc3BpY2UuaHRtbCBFWDogaHR0cDovL292aXJ0LmF6ZXJvdGgu bmV0L3NwaWNlLmh0bWwKPiAgICAgLSBOYXZpZ2F0ZSB0byB0aGF0IHBhZ2UgYW5kIGNsaWNrIHRo ZSBpbnN0YWxsIGJ1dHRvbgo+ICAgICAtIElFIHdpbGwgcHJvbXB0IHlvdSB0byBkZXBsb3kvaW5z dGFsbCB0aGUgU3BpY2VYIGNhYmluZXQgZmlsZQo+ICAgICAtIEl0IG1heSBncmlwZSBhYm91dCBh biB1bnNpZ25lZCBvciB1bnRydXN0ZWQgc291cmNlLCBhY2tub3dsZWRnZQo+ICAgICB0aGlzIGFu IHByb2NlZWQgYW55d2F5cwo+ICAgICAtIElmIHRoZSBpbnN0YWxsIHN1Y2NlZWRzIHRoZSB0ZXh0 ICJTcGljZSBBY3RpdmVYIFBsdWdpbiIgb24gdGhlCj4gICAgIHBhZ2Ugd2lsbCBjaGFuZ2UgdG8g YmxhbmsgKGl0J3MgYWN0dWFsbHkgdGhlIHBsdWdpbiB3aXRoIG51bGwgdmFsdWVzKQo+ICAgICAt IFRoZSBjb25zb2xlIGJ1dHRvbiBpbiB0aGUgdXNlciBhbmQgd2ViYWRtaW4gcG9ydGFscyB3aWxs IG5vdwo+ICAgICBsYXVuY2ggdGhlIG5ldyB2aXJ0LXZpd2VyIHNwaWNlIGJhc2VkIGNvbnNvbGUh Cj4KPiAgICAgSGFwcHkgU3BpY2UgQ29uc29saW5nIHRvIHlvdXIgVk0ncyBmcm9tIFdpbmRvd3Mh Cj4KPiAgICAgKk5PVEUqCj4gICAgIFRvIHVuaW5zdGFsbCB0aGUgcGx1Z2luOgo+ICAgICAtIFRo ZSBiZWxvdyByZW1vdmVzIHRoZSBhZGQtb24gZnJvbSBJRSAoRUc6IHJlbW92ZXMga25vd2xlZGdl IG9mCj4gICAgICJhcHBsaWNhdGlvbi94LXNwaWNlIikKPiAgICAgLSBwb3AgYSBjb21tYW5kIHRl cm1pbmFsIGFuZCB0eXBlOgo+ICAgICBPbiBXaW5kb3dzIFhQOiByZWdzdnIzMiAvdSAiQzpcRG9j dW1lbnRzIGFuZAo+ICAgICBTZXR0aW5nc1xBZG1pbmlzdHJhdG9yXExvY2FsIFNldHRpbmdzXEFw cGxpY2F0aW9uCj4gICAgIERhdGFcdmlydC12aWV3ZXJcYmluXFNwaWNlWC5kbGwiCj4gICAgIE9u IFdpbmRvd3MgNyByZWdzdnIzMiAvdSBDOlxEb2N1bWVudHMgYW5kCj4gICAgIFNldHRpbmdzXEFk bWluaXN0cmF0b3JcTG9jYWwKPiAgICAgU2V0dGluZ3NcQXBwRGF0YVx2aXJ0LXZpZXdlclxiaW5c U3BpY2VYLmRsbCIKPiAgICAgLSBOZXh0IHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSByZXN0IG9mIHZp cnQtdmlld2VyCj4gICAgIC0gR28gdG8gYWRkL3JlbW92ZSBwcm9ncmFtcyBhbmQgdW5pbnN0YWxs IHZpcnQtdmlld2VyLCB0aGlzCj4gICAgIHJlbW92ZXMgdGhlIHJlc3Qgb2YgdmlydC12aWV3ZXIg ZnJvbSB0aGUgc3lzdGVtCj4KPiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiAgICAgVXNlcnMgbWFpbGluZyBsaXN0Cj4gICAgIFVzZXJzQG92aXJ0 Lm9yZwo+ICAgICBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMK Pgo+Cj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gVXNlcnMgbWFpbGluZyBsaXN0Cj4gVXNlcnNAb3ZpcnQub3JnCj4gaHR0cDovL2xpc3RzLm92 aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzCgoKLS0gCkNoZWVycwpEb3VnbGFzCgoKLS0t LS0tLS0tLS0tLS0wNDAxMDQwNDA1MDgwODAyMDMwNzA3MDYKQ29udGVudC1UeXBlOiB0ZXh0L2h0 bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0Cgo8 aHRtbD4KICA8aGVhZD4KICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08t ODg1OS0xIgogICAgICBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPgogIDwvaGVhZD4KICA8Ym9k eSBiZ2NvbG9yPSIjRkZGRkZGIiB0ZXh0PSIjMDAwMDAwIj4KICAgIE9uIDA4LzMwLzIwMTIgMDI6 MjIgQU0sIFlhbml2IEthdWwgd3JvdGU6CiAgICA8YmxvY2txdW90ZQogICAgICBjaXRlPSJtaWQ6 MjA2MzgyMjM5Ny42MjA1OTY1OC4xMzQ2MzA3NzI1NDk3LkphdmFNYWlsLnJvb3RAcmVkaGF0LmNv bSIKICAgICAgdHlwZT0iY2l0ZSI+CiAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+cCB7IG1h cmdpbjogMDsgfTwvc3R5bGU+CiAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiB0aW1lcyBu ZXcgcm9tYW4sbmV3IHlvcmssdGltZXMsc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyI+VGhhbmtzIQogICAgICAgIDxkaXY+Q2FuIHlvdSB3aWtpJ2Z5 IGl0IChAIHdpa2kub3ZpcnQub3JnKSA/PC9kaXY+CiAgICAgICAgPGRpdj5ZLjxicj4KICAgICAg ICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICArMTxicj4KICAgIDxi cj4KICAgIFRoYW5rcyE8YnI+CiAgICA8YmxvY2txdW90ZQogICAgICBjaXRlPSJtaWQ6MjA2Mzgy MjM5Ny42MjA1OTY1OC4xMzQ2MzA3NzI1NDk3LkphdmFNYWlsLnJvb3RAcmVkaGF0LmNvbSIKICAg ICAgdHlwZT0iY2l0ZSI+CiAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiB0aW1lcyBuZXcg cm9tYW4sbmV3IHlvcmssdGltZXMsc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OyBjb2xv cjogIzAwMDAwMCI+CiAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICA8aHIgaWQ9Inp3Y2hyIj4K ICAgICAgICAgIDxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoycHggc29saWQgcmdiKDE2 LCAxNiwKMjU1KTttYXJnaW4tbGVmdDo1cHg7cGFkZGluZy1sZWZ0OjVweDtjb2xvcjojMDAwO2Zv bnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0eWxlOm5vcm1hbDt0ZXh0LWRlY29yYXRpb246bm9uZTtm b250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJwdDsiPkkK ICAgICAgICAgICAgaGF2ZSBzZWVuIHRoaXMgcXVlc3Rpb24gYXNrZWQgbWFueSB0aW1lcyBvbiB0 aGlzIGxpc3QgYW5kCiAgICAgICAgICAgIHRoZSBzcGljZS1kZXZlbCBsaXN0LiBOb3cgaGF2aW5n IGZpZ3VyZWQgb3V0IGhvdyB0byBtYWtlIGl0CiAgICAgICAgICAgIHdvcmsgSSB3aWxsIHByb3Zp ZGUgdGhlIGFuc3dlciB0byB0aGUgcmVzdCBvZiB0aGUgY29tbXVuaXR5Ljxicj4KICAgICAgICAg ICAgPGJyPgogICAgICAgICAgICAqTk9URSogdGhpcyBvbmx5IGFwcGxpZXMgdG8gV2luZG93cy9J bnRlcm5ldCBFeHBsb3JlciB1c2Vycy4KICAgICAgICAgICAgVGhlcmUgZXhpc3RzIG5vIG90aGVy IG9wdGlvbiBvdGhlciB0aGFuIHRoZSBodG1sNSBzcGljZQogICAgICAgICAgICBjb25zb2xlIChz dGlsbCBiZXRhL2luIGRldmVsb3BtZW50KSBmb3Igd2luZG93cyB1c2VycyBBVE0uCiAgICAgICAg ICAgIFRoaXMgd2lsbCBhbHNvIG9ubHkgd29yayB3aXRoIEludGVybmV0IEV4cGxvcmVyLjxicj4K ICAgICAgICAgICAgPGJyPgogICAgICAgICAgICBCYXNpYyBTdGVwczo8YnI+CiAgICAgICAgICAg IC0gSW5zdGFsbCBhbiBvVmlydCBzZXJ2ZXIuPGJyPgogICAgICAgICAgICAtIEFkZCBhdCBsZWFz dCBvbmUgbm9kZTxicj4KICAgICAgICAgICAgLSBTZXR1cCBzdG9yYWdlL2lzby9leHBvcnQgZG9t YWluczxicj4KICAgICAgICAgICAgPGJyPgogICAgICAgICAgICBBZHZhbmNlZCBzdGVwczxicj4K ICAgICAgICAgICAgLSBTdGFydCBieSBkb3dubG9hZGluZzogPGEgbW96LWRvLW5vdC1zZW5kPSJ0 cnVlIgogICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly9lbG1hcmNvLmZlZG9yYXBlb3BsZS5vcmcv c3BpY2UuY2FiIgogICAgICAgICAgICAgIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vZWxtYXJjby5m ZWRvcmFwZW9wbGUub3JnL3NwaWNlLmNhYjwvYT48YnI+CiAgICAgICAgICAgIC0gQ3JlYXRlIGEg ZGlyZWN0b3J5IGZvciBpdCBvVmlydCBsb29rcyBieSBkZWZhdWx0IGluCiAgICAgICAgICAgIC91 c3Ivc2hhcmUvc3BpY2U8YnI+CiAgICAgICAgICAgIC0gUmVuYW1lIHNwaWNlLmNhYiB0byBTcGlj ZVguY2FiIGFuZCBjb3B5IGl0IGludG8KICAgICAgICAgICAgL3Vzci9zaGFyZS9zcGljZTxicj4K ICAgICAgICAgICAgLSBOb3cgZWRpdAogICAgICAgICAgICAvdXNyL3NoYXJlL292aXJ0LWVuZ2lu ZS9lbmdpbmUuZWFyL3Jvb3Qud2FyL1dFQi1JTkYgYW5kIGFkZAogICAgICAgICAgICB0aGUgZm9s bG93aW5nOjxicj4KICAgICAgICAgICAgJm5ic3A7PGJyPgogICAgICAgICAgICAmbmJzcDsmbHQ7 IS0tIFNwaWNlWC5jYWIgLS0mZ3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsgJmx0O3NlcnZsZXQm Z3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgJmx0O3NlcnZsZXQtbmFtZSZn dDtTcGljZVguY2FiJmx0Oy9zZXJ2bGV0LW5hbWUmZ3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsm bmJzcDsmbmJzcDsKJmx0O3NlcnZsZXQtY2xhc3MmZ3Q7b3JnLm92aXJ0LmVuZ2luZS5jb3JlLkZp bGVTZXJ2bGV0Jmx0Oy9zZXJ2bGV0LWNsYXNzJmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5i c3A7Jm5ic3A7ICZsdDtpbml0LXBhcmFtJmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtwYXJhbS1uYW1lJmd0O3R5cGUmbHQ7L3BhcmFtLW5hbWUm Z3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKICAgICAg ICAgICAgJmx0O3BhcmFtLXZhbHVlJmd0O2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSZsdDsvcGFy YW0tdmFsdWUmZ3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy9pbml0 LXBhcmFtJmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtpbml0LXBh cmFtJmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZs dDtwYXJhbS1uYW1lJmd0O2ZpbGUmbHQ7L3BhcmFtLW5hbWUmZ3Q7PGJyPgogICAgICAgICAgICAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsKICAgICAgICAgICAgJmx0O3BhcmFtLXZhbHVl Jmd0Oy91c3Ivc2hhcmUvc3BpY2UvU3BpY2VYLmNhYiZsdDsvcGFyYW0tdmFsdWUmZ3Q7PGJyPgog ICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy9pbml0LXBhcmFtJmd0Ozxicj4KICAg ICAgICAgICAgJm5ic3A7ICZsdDsvc2VydmxldCZndDs8YnI+CiAgICAgICAgICAgICZuYnNwOyAm bHQ7c2VydmxldC1tYXBwaW5nJmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7 ICZsdDtzZXJ2bGV0LW5hbWUmZ3Q7U3BpY2VYLmNhYiZsdDsvc2VydmxldC1uYW1lJmd0Ozxicj4K ICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDt1cmwtcGF0dGVybiZndDsvc3BpY2Uv U3BpY2VYLmNhYiZsdDsvdXJsLXBhdHRlcm4mZ3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsgJmx0 Oy9zZXJ2bGV0LW1hcHBpbmcmZ3Q7PGJyPgogICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIC0g TmV4dCBjcmVhdGUgYW4gaHRtbCBmaWxlIHdpdGhpbgogICAgICAgICAgICAvdXNyL3NoYXJlL292 aXJ0LWVuZ2luZS9lbmdpbmUuZWFyL3Jvb3Qud2FyPGJyPgogICAgICAgICAgICAtIEluIHRoZSBl eGFtcGxlIGJlbG93IGFuIGh0bWwgZmlsZSBjYWxsZWQgInNwaWNlLmh0bWwiPGJyPgogICAgICAg ICAgICAtIENvcHkvUGFzdGUgdGhlIGJlbG93IGludG8gc3BpY2UuaHRtbDo8YnI+CiAgICAgICAg ICAgIDxicj4KICAgICAgICAgICAgJmx0OyFET0NUWVBFIGh0bWwmZ3Q7PGJyPgogICAgICAgICAg ICAmbHQ7aHRtbCZndDs8YnI+CiAgICAgICAgICAgICZsdDtoZWFkJmd0Ozxicj4KICAgICAgICAg ICAgJmx0O3RpdGxlJmd0O1NQSUNFIFBsdWdpbiBJbnN0YWxsZXImbHQ7L3RpdGxlJmd0Ozxicj4K ICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAmbHQ7c2NyaXB0IHR5cGU9InRleHQvamF2YXNj cmlwdCImZ3Q7PGJyPgogICAgICAgICAgICBmdW5jdGlvbiBpbnN0YWxsU3BpY2UoKTxicj4KICAg ICAgICAgICAgezxicj4KICAgICAgICAgICAgdHJ5IHs8YnI+CiAgICAgICAgICAgICZuYnNwOyZu YnNwOyZuYnNwOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnU3BpY2VYJykuaW5uZXJIVE1MID0K ICAgICAgICAgICAgJyZsdDtPQkpFQ1QgaWQ9IlNwaWNlWCIgY29kZWJhc2U9Ii9zcGljZS9TcGlj ZVguY2FiIgogICAgICAgICAgICBjbGFzc2lkPSJjbHNpZDpBQ0Q2RDg5Qy05MzhELTQ5QjQtOEU4 MS1EREJEMTNGNEI0OEEiCiAgICAgICAgICAgIHdpZHRoPSIwIiBoZWlnaHQ9IjAiJmd0OyZsdDsv T0JKRUNUJmd0Oyc7PGJyPgogICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgfSBjYXRjaCAo ZXgpIHs8YnI+CiAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBhbGVydCgiRXBpYyBGYWlsITogIiArIGV4LkRlc2NyaXB0aW9uKTs8YnI+CiAgICAg ICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPgogICAgICAgICAgICB9Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxicj4KICAgICAgICAgICAgJmx0Oy9zY3JpcHQmZ3Q7PGJyPgog ICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICZsdDsvaGVhZCZndDs8YnI+CiAgICAgICAgICAg ICZsdDtib2R5Jmd0Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtwJmd0 Ozxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtwJmd0OyZsdDtiIGlkPSdT cGljZVgnJmd0O1NwaWNlIEFjdGl2ZVgKICAgICAgICAgICAgUGx1Z2luJmx0Oy9iJmd0OyAmbHQ7 L3AmZ3Q7IDxicj4KICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZsdDtidXR0b24gb25j bGljaz0naW5zdGFsbFNwaWNlKCknJmd0O0luc3RhbGwgU3BpY2UKICAgICAgICAgICAgUGx1Z2lu Jmx0Oy9idXR0b24mZ3Q7PGJyPgogICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgJmx0Oy9w Jmd0Ozxicj4KICAgICAgICAgICAgJmx0Oy9ib2R5Jmd0Ozxicj4KICAgICAgICAgICAgJmx0Oy9o dG1sJmd0Ozxicj4KICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAtIFNhdmUgdGhlIGZpbGU8 YnI+CiAgICAgICAgICAgIC0gWW91IHdpbGwgbm93IG5lZWQgdG8gcmVzdGFydCB0aGUgb3ZpcnQt ZW5naW5lIHNlcnZpY2UgRUc6CiAgICAgICAgICAgIHN5c3RlbWN0bCByZXN0YXJ0IG92aXJ0LWVu Z2luZS5zZXJ2aWNlIE9SIHNlcnZpY2UKICAgICAgICAgICAgb3ZpcnQtZW5naW5lIHJlc3RhcnQ8 YnI+CiAgICAgICAgICAgIC0gVGhlIGluc3RhbGxlciBwYWdlIHdpbGwgbm93IGJlIGF2YWlsYWJs ZSBhdCA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwOi8vIj5odHRw Oi8vPC9hPiZsdDt1cmwKICAgICAgICAgICAgdG8gb3ZpcnQgc2VydmVyJmd0Oy9zcGljZS5odG1s IEVYOiA8YQogICAgICAgICAgICAgIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIKICAgICAgICAgICAg ICBocmVmPSJodHRwOi8vb3ZpcnQuYXplcm90aC5uZXQvc3BpY2UuaHRtbCIgdGFyZ2V0PSJfYmxh bmsiPmh0dHA6Ly9vdmlydC5hemVyb3RoLm5ldC9zcGljZS5odG1sPC9hPjxicj4KICAgICAgICAg ICAgLSBOYXZpZ2F0ZSB0byB0aGF0IHBhZ2UgYW5kIGNsaWNrIHRoZSBpbnN0YWxsIGJ1dHRvbjxi cj4KICAgICAgICAgICAgLSBJRSB3aWxsIHByb21wdCB5b3UgdG8gZGVwbG95L2luc3RhbGwgdGhl IFNwaWNlWCBjYWJpbmV0CiAgICAgICAgICAgIGZpbGU8YnI+CiAgICAgICAgICAgIC0gSXQgbWF5 IGdyaXBlIGFib3V0IGFuIHVuc2lnbmVkIG9yIHVudHJ1c3RlZCBzb3VyY2UsCiAgICAgICAgICAg IGFja25vd2xlZGdlIHRoaXMgYW4gcHJvY2VlZCBhbnl3YXlzPGJyPgogICAgICAgICAgICAtIElm IHRoZSBpbnN0YWxsIHN1Y2NlZWRzIHRoZSB0ZXh0ICJTcGljZSBBY3RpdmVYIFBsdWdpbiIgb24K ICAgICAgICAgICAgdGhlIHBhZ2Ugd2lsbCBjaGFuZ2UgdG8gYmxhbmsgKGl0J3MgYWN0dWFsbHkg dGhlIHBsdWdpbiB3aXRoCiAgICAgICAgICAgIG51bGwgdmFsdWVzKTxicj4KICAgICAgICAgICAg LSBUaGUgY29uc29sZSBidXR0b24gaW4gdGhlIHVzZXIgYW5kIHdlYmFkbWluIHBvcnRhbHMgd2ls bAogICAgICAgICAgICBub3cgbGF1bmNoIHRoZSBuZXcgdmlydC12aXdlciBzcGljZSBiYXNlZCBj b25zb2xlITxicj4KICAgICAgICAgICAgPGJyPgogICAgICAgICAgICBIYXBweSBTcGljZSBDb25z b2xpbmcgdG8geW91ciBWTSdzIGZyb20gV2luZG93cyE8YnI+CiAgICAgICAgICAgIDxicj4KICAg ICAgICAgICAgKk5PVEUqPGJyPgogICAgICAgICAgICBUbyB1bmluc3RhbGwgdGhlIHBsdWdpbjo8 YnI+CiAgICAgICAgICAgIC0gVGhlIGJlbG93IHJlbW92ZXMgdGhlIGFkZC1vbiBmcm9tIElFIChF RzogcmVtb3ZlcwogICAgICAgICAgICBrbm93bGVkZ2Ugb2YgImFwcGxpY2F0aW9uL3gtc3BpY2Ui KTxicj4KICAgICAgICAgICAgLSBwb3AgYSBjb21tYW5kIHRlcm1pbmFsIGFuZCB0eXBlOjxicj4K ICAgICAgICAgICAgT24gV2luZG93cyBYUDogcmVnc3ZyMzIgL3UgIkM6XERvY3VtZW50cyBhbmQK ICAgICAgICAgICAgU2V0dGluZ3NcQWRtaW5pc3RyYXRvclxMb2NhbCBTZXR0aW5nc1xBcHBsaWNh dGlvbgogICAgICAgICAgICBEYXRhXHZpcnQtdmlld2VyXGJpblxTcGljZVguZGxsIjxicj4KICAg ICAgICAgICAgT24gV2luZG93cyA3IHJlZ3N2cjMyIC91IEM6XERvY3VtZW50cyBhbmQKICAgICAg ICAgICAgU2V0dGluZ3NcQWRtaW5pc3RyYXRvclxMb2NhbAogICAgICAgICAgICBTZXR0aW5nc1xB cHBEYXRhXHZpcnQtdmlld2VyXGJpblxTcGljZVguZGxsIjxicj4KICAgICAgICAgICAgLSBOZXh0 IHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSByZXN0IG9mIHZpcnQtdmlld2VyPGJyPgogICAgICAgICAg ICAtIEdvIHRvIGFkZC9yZW1vdmUgcHJvZ3JhbXMgYW5kIHVuaW5zdGFsbCB2aXJ0LXZpZXdlciwg dGhpcwogICAgICAgICAgICByZW1vdmVzIHRoZSByZXN0IG9mIHZpcnQtdmlld2VyIGZyb20gdGhl IHN5c3RlbTxicj4KICAgICAgICAgICAgPGJyPgogICAgICAgICAgICBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4KICAgICAgICAgICAgVXNlcnMgbWFp bGluZyBsaXN0PGJyPgogICAgICAgICAgICA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlh dGVkIiBocmVmPSJtYWlsdG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0BvdmlydC5vcmc8L2E+PGJy PgogICAgICAgICAgICA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRw Oi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMiPmh0dHA6Ly9saXN0cy5v dmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VyczwvYT48YnI+CiAgICAgICAgICA8L2Jsb2Nr cXVvdGU+CiAgICAgICAgICA8YnI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8 YnI+CiAgICAgIDxmaWVsZHNldCBjbGFzcz0ibWltZUF0dGFjaG1lbnRIZWFkZXIiPjwvZmllbGRz ZXQ+CiAgICAgIDxicj4KICAgICAgPHByZSB3cmFwPSIiPl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClVzZXJzIG1haWxpbmcgbGlzdAo8YSBjbGFzcz0ibW96 LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJtYWlsdG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vy c0BvdmlydC5vcmc8L2E+CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Imh0 dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3Rz Lm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzPC9hPgo8L3ByZT4KICAgIDwvYmxvY2tx dW90ZT4KICAgIDxicj4KICAgIDxicj4KICAgIDxwcmUgY2xhc3M9Im1vei1zaWduYXR1cmUiIGNv bHM9IjcyIj4tLSAKQ2hlZXJzCkRvdWdsYXM8L3ByZT4KICA8L2JvZHk+CjwvaHRtbD4KCi0tLS0t LS0tLS0tLS0tMDQwMTA0MDQwNTA4MDgwMjAzMDcwNzA2LS0K --===============2744952827520230199==--