Re: chipsec-1.5.0 in EFI Shell
Holtsclaw, Brent <[email protected]> Tue, 29 Dec 2020 17:59:00 +0000
| Newsgroups | dev.linux.lists.oe-chipsec |
|---|---|
| Message-ID | <MW3PR11MB47467F7E6BC2FE277003885DFBD80@MW3PR11MB4746.namprd11.prod.outlook.com> |
--===============6874041782243895695== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Please try putting the chipsec files in a chipsec folder and running. Ther= e have been problems in the past when the chipsec files are placed within t= he root directory. Thanks, Brent From: Vorname Nachname <[email protected]> Sent: Friday, June 5, 2020 2:20 AM To: chipsec(a)lists.01.org Subject: [chipsec] Re: chipsec-1.5.0 in EFI Shell Hello, I saw a new chipsec version 1.5.1 is released now. I followed the instructi= ons from chipsec-manual.pdf and used the python version from chipsec archive. I= took the shell from edk2 package again. See this both links: https://github.com/chipsec/chipsec/archive/1.5.1.tar.gz https://github.com/tianocore/edk2/archive/edk2-stable201903.tar.gz I got almost the same error as before with a different number. I attached a screenshot. Can anyone verify this issue? Best Regards, Philipp Am Fr., 29. Mai 2020 um 17:16 Uhr schrieb Vorname Nachname <ldevlzero(a)gma= il.com<mailto:[email protected]>>: Hello, Many thanks for the quick answers. I followed the instructions from the chi= psec-manual.pdf of chipsec-1.5.0. In my first test I used python version fr= om chipsec-1.5.0 (chipsec_uefi_x64.zip) and UEFI-Shell from edk2 release 20= 19-03-08 (https://github.com/tianocore/edk2/archive/edk2-stable201903.tar.g= z). This includes a precompiled UEFI-Shell binary which I used (edk2-edk2-s= table201903/ShellBinPkg/UefiShell/X64). With this setup I got this error: OSError: [Errno 22] Invalid argument: 'FS0:FS0:chipsec' Can you tell me your working setup (UEFI-Binary and pyhton version)? Best regards Philipp Am Fr., 29. Mai 2020 um 17:13 Uhr schrieb Vorname Nachname <ldevlzero(a)gma= il.com<mailto:[email protected]>>: Hello, Many thanks for the quick answers. I followed the instructions from the chi= psec-manual.pdf of chipsec-1.5.0. In my first test I used python version fr= om chipsec-1.5.0 (chipsec_uefi_x64.zip) and UEFI-Shell from edk2 release 20= 19-03-08 (https://github.com/tianocore/edk2/archive/edk2-stable201903.tar.g= z). This includes a precompiled UEFI-Shell binary which I used (edk2-edk2-s= table201903/ShellBinPkg/UefiShell/X64). With this setup I got this error: OSError: [Errno 22] Invalid argument: 'FS0:FS0:chipsec' Can you tell me your working setup (UEFI-Binary and pyhton version)? Best regards Philipp Am Fr., 29. Mai 2020 um 00:24 Uhr schrieb Holtsclaw, Brent <brent.holtsclaw= (a)intel.com<mailto:[email protected]>>: Did you follow the instructions from https://github.com/chipsec/chipsec/wik= i/Creating-a-Bootable-USB-drive-with-UEFI-Shell? They should have enough i= nformation to help out. It sounds like UEFI SHELL is not the problem in th= is case. Can you elaborate on the python that you are using. There is a p= ython.efi module within the chipsec_uefi zipfile. Python has been modified= to include some chipsec specific commands with chipsec. There are steps t= o reproduce the build, however I'm not sure that they work with the latest = EDK and you may need to build from an older version. To my knowledge the c= ode within chipsec is still compatible with python2 at this point and you s= hould be able to use 1.5.0. If you can run chipsec with the debug flag and= let us know where it is failing that would help. Thanks, Brent -----Original Message----- From: Blibbet <blibbet(a)gmail.com<mailto:[email protected]>> Sent: Thursday, May 28, 2020 2:55 PM To: Vorname Nachname <ldevlzero(a)gmail.com<mailto:[email protected]>> Cc: chipsec(a)lists.01.org<mailto:[email protected]> Subject: [chipsec] Re: chipsec-1.5.0 in EFI Shell What UEFI Shell are you using? "EFI Shell" may mean an ancient one. I think= I recall some thread where someone was trying to get CHIPSEC running using= an old (1.x?) OEM's shell (Apple?), and they had to provide their own inst= ead. There is an older and a newer UEFI Shell. You should also include info about other Python code you were able to succe= ssfully run in this EFI Shell. Maybe CHIPSEC is not the issue, the issue is= your EFI Shell and Python. Instead of building your own UEFI Python, what happens when you use the CHI= PSEC instructions and use their supplied python.efi? Wasn't there some spec= ial CHIPSEC-centric options needed to build Python with? If so, that should= be clarified better in build docs. (Granted, it sucks having a security tool ship a pre-compiled Python binary= in their source tree, built in an unknown manner, with no checksums, and n= o reproducable builds, and have the tool rely on this for determining platf= orm security. But that's another issue...) Intel has abandoned CPython V2 for UEFI patch, and is instead is working on= MicroPython for UEFI (which has some Python V3 support). Though Python V2 = is deprecated and most of world has moved to Python V3, CHIPSEC team is sti= ll using/bundling CPython V2, and hasn't switched over to using/relying-on/= bundling MicroPython for UEFI. FWIW, I rarely see replies from the team for support questions on this mail= ing list nor the Google Groups lists. It I was looking for a reply, I'd fil= e a Github issue (and include more info), or use Twitter. You might want to clarify that you're trying to run this on an Intel system= , not another ISA (like AMD or ARM or RISC-V), as that'd also not work. HTH, Lee On 5/28/20 7:36 AM, Vorname Nachname wrote: > Hello, > > I tried to run chipsec-1.5.0 in EFI Shell without operating system but > unfortunately it doesn't run in the EFI Shell. I ran these commands: > > Shell> fs0: > FS0:\> python -^# chipsec_main.py -m debugenabled > > This results in a traceback with the last file chipsec/defines.py > called function get_version(). > > OSError: [Errno 22] Invalud argument: 'FS0:FS0:chipsec' > > After that I compiled python 2.7.2 and python 2.7.10 from edk2 package > version edk2-stable201903. This is the last package version with > pyhton inside. With this version of pyhton I received another error > message with the last line: > > ImportError: No module named expat; use SimpleXMLTreeBuilder instead. > > What is the best way to start the latest version of chipsec in the EFI > Shell? What version of EFI Shell and pyhton is required? > > best wishes > Philipp > > > _______________________________________________ > chipsec mailing list -- chipsec(a)lists.01.org<mailto:[email protected].= org> To unsubscribe send an > email to chipsec-leave(a)lists.01.org<mailto:[email protected]> _______________________________________________ chipsec mailing list -- chipsec(a)lists.01.org<mailto:[email protected]= g> To unsubscribe send an email to chipsec-leave(a)lists.01.org<mailto:chip= [email protected]> _______________________________________________ chipsec mailing list -- chipsec(a)lists.01.org<mailto:[email protected]= g> To unsubscribe send an email to chipsec-leave(a)lists.01.org<mailto:chipsec= [email protected]> --===============6874041782243895695== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OkNhbGlicmk7DQoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAy IDQ7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWws IGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBpbjsNCgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7DQoJ Zm9udC1zaXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjt9DQph OmxpbmssIHNwYW4uTXNvSHlwZXJsaW5rDQoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xv cjpibHVlOw0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0Kc3Bhbi5FbWFpbFN0eWxlMTgN Cgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmki LHNhbnMtc2VyaWY7DQoJY29sb3I6d2luZG93dGV4dDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28t c3R5bGUtdHlwZTpleHBvcnQtb25seTsNCglmb250LXNpemU6MTAuMHB0Ow0KCWZvbnQtZmFtaWx5 OiJDYWxpYnJpIixzYW5zLXNlcmlmO30NCkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjguNWlu IDExLjBpbjsNCgltYXJnaW46MS4waW4gMS4waW4gMS4waW4gMS4waW47fQ0KZGl2LldvcmRTZWN0 aW9uMQ0KCXtwYWdlOldvcmRTZWN0aW9uMTt9DQotLT48L3N0eWxlPjwhLS1baWYgZ3RlIG1zbyA5 XT48eG1sPg0KPG86c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4N CjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPg0KPG86c2hhcGVsYXlv dXQgdjpleHQ9ImVkaXQiPg0KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+DQo8L286 c2hhcGVsYXlvdXQ+PC94bWw+PCFbZW5kaWZdLS0+DQo8L2hlYWQ+DQo8Ym9keSBsYW5nPSJFTi1V UyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+DQo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEi Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+UGxlYXNlIHRyeSBwdXR0aW5nIHRoZSBjaGlwc2VjIGZp bGVzIGluIGEgY2hpcHNlYyBmb2xkZXIgYW5kIHJ1bm5pbmcuJm5ic3A7IFRoZXJlIGhhdmUgYmVl biBwcm9ibGVtcyBpbiB0aGUgcGFzdCB3aGVuIHRoZSBjaGlwc2VjIGZpbGVzIGFyZSBwbGFjZWQg d2l0aGluIHRoZSByb290IGRpcmVjdG9yeS4mbmJzcDsNCjxvOnA+PC9vOnA+PC9wPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij5UaGFua3MsPG86cD48L286cD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5CcmVudDxvOnA+ PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj5Gcm9tOjwvYj4gVm9ybmFtZSBOYWNobmFtZSAmbHQ7bGRl dmx6ZXJvQGdtYWlsLmNvbSZndDsgPGJyPg0KPGI+U2VudDo8L2I+IEZyaWRheSwgSnVuZSA1LCAy MDIwIDI6MjAgQU08YnI+DQo8Yj5Ubzo8L2I+IGNoaXBzZWNAbGlzdHMuMDEub3JnPGJyPg0KPGI+ U3ViamVjdDo8L2I+IFtjaGlwc2VjXSBSZTogY2hpcHNlYy0xLjUuMCBpbiBFRkkgU2hlbGw8bzpw PjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0K PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhlbGxvLDxicj4NCjxicj4NCkkgc2F3IGEgbmV3 IGNoaXBzZWMgdmVyc2lvbiAxLjUuMSBpcyByZWxlYXNlZCBub3cuIEkgZm9sbG93ZWQgdGhlIGlu c3RydWN0aW9uczxicj4NCmZyb20gY2hpcHNlYy1tYW51YWwucGRmIGFuZCB1c2VkIHRoZSBweXRo b24gdmVyc2lvbiBmcm9tIGNoaXBzZWMgYXJjaGl2ZS4gSSB0b29rPGJyPg0KdGhlIHNoZWxsIGZy b20gZWRrMiBwYWNrYWdlIGFnYWluLiBTZWUgdGhpcyBib3RoIGxpbmtzOjxicj4NCjxicj4NCjxh IGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBzZWMvYXJjaGl2ZS8xLjUuMS50 YXIuZ3oiPmh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBzZWMvYXJjaGl2ZS8xLjUuMS50 YXIuZ3o8L2E+PGJyPg0KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsy L2FyY2hpdmUvZWRrMi1zdGFibGUyMDE5MDMudGFyLmd6Ij5odHRwczovL2dpdGh1Yi5jb20vdGlh bm9jb3JlL2VkazIvYXJjaGl2ZS9lZGsyLXN0YWJsZTIwMTkwMy50YXIuZ3o8L2E+PGJyPg0KPGJy Pg0KSSBnb3QgYWxtb3N0IHRoZSBzYW1lIGVycm9yIGFzIGJlZm9yZSB3aXRoIGEgZGlmZmVyZW50 IG51bWJlci4gSSBhdHRhY2hlZCBhPGJyPg0Kc2NyZWVuc2hvdC48YnI+DQo8YnI+DQpDYW4gYW55 b25lIHZlcmlmeSB0aGlzIGlzc3VlPzxicj4NCjxicj4NCkJlc3QgUmVnYXJkcyw8YnI+DQpQaGls aXBwPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5i c3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BbSBGci4s IDI5LiBNYWkgMjAyMCB1bSAxNzoxNiZuYnNwO1VociBzY2hyaWViIFZvcm5hbWUgTmFjaG5hbWUg Jmx0OzxhIGhyZWY9Im1haWx0bzpsZGV2bHplcm9AZ21haWwuY29tIj5sZGV2bHplcm9AZ21haWwu Y29tPC9hPiZndDs6PG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJi b3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGluIDBp biAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXRvcDo1LjBwdDttYXJnaW4tcmln aHQ6MGluO21hcmdpbi1ib3R0b206NS4wcHQiPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi PkhlbGxvLDxicj4NCjxicj4NCk1hbnkgdGhhbmtzIGZvciB0aGUgcXVpY2sgYW5zd2Vycy4gSSBm b2xsb3dlZCB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIGNoaXBzZWMtbWFudWFsLnBkZiBvZiBj aGlwc2VjLTEuNS4wLiBJbiBteSBmaXJzdCB0ZXN0IEkgdXNlZCBweXRob24gdmVyc2lvbiBmcm9t IGNoaXBzZWMtMS41LjAgKGNoaXBzZWNfdWVmaV94NjQuemlwKSBhbmQgVUVGSS1TaGVsbCBmcm9t IGVkazIgcmVsZWFzZSAyMDE5LTAzLTA4ICg8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGlh bm9jb3JlL2VkazIvYXJjaGl2ZS9lZGsyLXN0YWJsZTIwMTkwMy50YXIuZ3oiIHRhcmdldD0iX2Js YW5rIj5odHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYXJjaGl2ZS9lZGsyLXN0YWJs ZTIwMTkwMy50YXIuZ3o8L2E+KS4NCiBUaGlzIGluY2x1ZGVzIGEgcHJlY29tcGlsZWQgVUVGSS1T aGVsbCBiaW5hcnkgd2hpY2ggSSB1c2VkIChlZGsyLWVkazItc3RhYmxlMjAxOTAzL1NoZWxsQmlu UGtnL1VlZmlTaGVsbC9YNjQpLiBXaXRoIHRoaXMgc2V0dXAgSSBnb3QgdGhpcyBlcnJvcjo8YnI+ DQo8YnI+DQpPU0Vycm9yOiBbRXJybm8gMjJdIEludmFsaWQgYXJndW1lbnQ6ICdGUzA6RlMwOmNo aXBzZWMnPGJyPg0KPGJyPg0KQ2FuIHlvdSB0ZWxsIG1lIHlvdXIgd29ya2luZyBzZXR1cCAoVUVG SS1CaW5hcnkgYW5kIHB5aHRvbiB2ZXJzaW9uKT88YnI+DQo8YnI+DQpCZXN0IHJlZ2FyZHM8YnI+ DQpQaGlsaXBwPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxv OnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5B bSBGci4sIDI5LiBNYWkgMjAyMCB1bSAxNzoxMyZuYnNwO1VociBzY2hyaWViIFZvcm5hbWUgTmFj aG5hbWUgJmx0OzxhIGhyZWY9Im1haWx0bzpsZGV2bHplcm9AZ21haWwuY29tIiB0YXJnZXQ9Il9i bGFuayI+bGRldmx6ZXJvQGdtYWlsLmNvbTwvYT4mZ3Q7OjxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+ DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0ND QyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdp bi10b3A6NS4wcHQ7bWFyZ2luLXJpZ2h0OjBpbjttYXJnaW4tYm90dG9tOjUuMHB0Ij4NCjxkaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IZWxsbyw8YnI+DQo8YnI+DQpNYW55IHRoYW5rcyBmb3Ig dGhlIHF1aWNrIGFuc3dlcnMuIEkgZm9sbG93ZWQgdGhlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBj aGlwc2VjLW1hbnVhbC5wZGYgb2YgY2hpcHNlYy0xLjUuMC4gSW4gbXkgZmlyc3QgdGVzdCBJIHVz ZWQgcHl0aG9uIHZlcnNpb24gZnJvbSBjaGlwc2VjLTEuNS4wIChjaGlwc2VjX3VlZmlfeDY0Lnpp cCkgYW5kIFVFRkktU2hlbGwgZnJvbSBlZGsyIHJlbGVhc2UgMjAxOS0wMy0wOCAoPGEgaHJlZj0i aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2FyY2hpdmUvZWRrMi1zdGFibGUyMDE5 MDMudGFyLmd6IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9l ZGsyL2FyY2hpdmUvZWRrMi1zdGFibGUyMDE5MDMudGFyLmd6PC9hPikuDQogVGhpcyBpbmNsdWRl cyBhIHByZWNvbXBpbGVkIFVFRkktU2hlbGwgYmluYXJ5IHdoaWNoIEkgdXNlZCAoZWRrMi1lZGsy LXN0YWJsZTIwMTkwMy9TaGVsbEJpblBrZy9VZWZpU2hlbGwvWDY0KS4gV2l0aCB0aGlzIHNldHVw IEkgZ290IHRoaXMgZXJyb3I6PGJyPg0KPGJyPg0KT1NFcnJvcjogW0Vycm5vIDIyXSBJbnZhbGlk IGFyZ3VtZW50OiAnRlMwOkZTMDpjaGlwc2VjJzxicj4NCjxicj4NCkNhbiB5b3UgdGVsbCBtZSB5 b3VyIHdvcmtpbmcgc2V0dXAgKFVFRkktQmluYXJ5IGFuZCBweWh0b24gdmVyc2lvbik/PGJyPg0K PGJyPg0KQmVzdCByZWdhcmRzPGJyPg0KUGhpbGlwcDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+QW0gRnIuLCAyOS4gTWFpIDIwMjAgdW0gMDA6MjQmbmJzcDtV aHIgc2NocmllYiBIb2x0c2NsYXcsIEJyZW50ICZsdDs8YSBocmVmPSJtYWlsdG86YnJlbnQuaG9s dHNjbGF3QGludGVsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmJyZW50LmhvbHRzY2xhd0BpbnRlbC5j b208L2E+Jmd0Ozo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGJsb2NrcXVvdGUgc3R5bGU9ImJv cmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNDQ0NDQ0MgMS4wcHQ7cGFkZGluZzowaW4gMGlu IDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tdG9wOjUuMHB0O21hcmdpbi1yaWdo dDowaW47bWFyZ2luLWJvdHRvbTo1LjBwdCI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5EaWQgeW91 IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29t L2NoaXBzZWMvY2hpcHNlYy93aWtpL0NyZWF0aW5nLWEtQm9vdGFibGUtVVNCLWRyaXZlLXdpdGgt VUVGSS1TaGVsbCIgdGFyZ2V0PSJfYmxhbmsiPg0KaHR0cHM6Ly9naXRodWIuY29tL2NoaXBzZWMv Y2hpcHNlYy93aWtpL0NyZWF0aW5nLWEtQm9vdGFibGUtVVNCLWRyaXZlLXdpdGgtVUVGSS1TaGVs bDwvYT4/Jm5ic3A7IFRoZXkgc2hvdWxkIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGhlbHAg b3V0LiZuYnNwOyBJdCBzb3VuZHMgbGlrZSBVRUZJIFNIRUxMIGlzIG5vdCB0aGUgcHJvYmxlbSBp biB0aGlzIGNhc2UuJm5ic3A7IENhbiB5b3UgZWxhYm9yYXRlIG9uIHRoZSBweXRob24gdGhhdCB5 b3UgYXJlIHVzaW5nLiZuYnNwOyBUaGVyZQ0KIGlzIGEgcHl0aG9uLmVmaSBtb2R1bGUgd2l0aGlu IHRoZSBjaGlwc2VjX3VlZmkgemlwZmlsZS4mbmJzcDsgUHl0aG9uIGhhcyBiZWVuIG1vZGlmaWVk IHRvIGluY2x1ZGUgc29tZSBjaGlwc2VjIHNwZWNpZmljIGNvbW1hbmRzIHdpdGggY2hpcHNlYy4m bmJzcDsgVGhlcmUgYXJlIHN0ZXBzIHRvIHJlcHJvZHVjZSB0aGUgYnVpbGQsIGhvd2V2ZXIgSSdt IG5vdCBzdXJlIHRoYXQgdGhleSB3b3JrIHdpdGggdGhlIGxhdGVzdCBFREsgYW5kIHlvdSBtYXkg bmVlZCB0byBidWlsZA0KIGZyb20gYW4gb2xkZXIgdmVyc2lvbi4mbmJzcDsgVG8gbXkga25vd2xl ZGdlIHRoZSBjb2RlIHdpdGhpbiBjaGlwc2VjIGlzIHN0aWxsIGNvbXBhdGlibGUgd2l0aCBweXRo b24yIGF0IHRoaXMgcG9pbnQgYW5kIHlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgMS41LjAuJm5i c3A7IElmIHlvdSBjYW4gcnVuIGNoaXBzZWMgd2l0aCB0aGUgZGVidWcgZmxhZyBhbmQgbGV0IHVz IGtub3cgd2hlcmUgaXQgaXMgZmFpbGluZyB0aGF0IHdvdWxkIGhlbHAuPGJyPg0KPGJyPg0KVGhh bmtzLDxicj4NCkJyZW50PGJyPg0KPGJyPg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS08YnI+ DQpGcm9tOiBCbGliYmV0ICZsdDs8YSBocmVmPSJtYWlsdG86YmxpYmJldEBnbWFpbC5jb20iIHRh cmdldD0iX2JsYW5rIj5ibGliYmV0QGdtYWlsLmNvbTwvYT4mZ3Q7DQo8YnI+DQpTZW50OiBUaHVy c2RheSwgTWF5IDI4LCAyMDIwIDI6NTUgUE08YnI+DQpUbzogVm9ybmFtZSBOYWNobmFtZSAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmxkZXZsemVyb0BnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5sZGV2 bHplcm9AZ21haWwuY29tPC9hPiZndDs8YnI+DQpDYzogPGEgaHJlZj0ibWFpbHRvOmNoaXBzZWNA bGlzdHMuMDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+Y2hpcHNlY0BsaXN0cy4wMS5vcmc8L2E+PGJy Pg0KU3ViamVjdDogW2NoaXBzZWNdIFJlOiBjaGlwc2VjLTEuNS4wIGluIEVGSSBTaGVsbDxicj4N Cjxicj4NCldoYXQgVUVGSSBTaGVsbCBhcmUgeW91IHVzaW5nPyAmcXVvdDtFRkkgU2hlbGwmcXVv dDsgbWF5IG1lYW4gYW4gYW5jaWVudCBvbmUuIEkgdGhpbmsgSSByZWNhbGwgc29tZSB0aHJlYWQg d2hlcmUgc29tZW9uZSB3YXMgdHJ5aW5nIHRvIGdldCBDSElQU0VDIHJ1bm5pbmcgdXNpbmcgYW4g b2xkICgxLng/KSBPRU0ncyBzaGVsbCAoQXBwbGU/KSwgYW5kIHRoZXkgaGFkIHRvIHByb3ZpZGUg dGhlaXIgb3duIGluc3RlYWQuIFRoZXJlIGlzIGFuIG9sZGVyIGFuZCBhIG5ld2VyDQogVUVGSSBT aGVsbC48YnI+DQo8YnI+DQpZb3Ugc2hvdWxkIGFsc28gaW5jbHVkZSBpbmZvIGFib3V0IG90aGVy IFB5dGhvbiBjb2RlIHlvdSB3ZXJlIGFibGUgdG8gc3VjY2Vzc2Z1bGx5IHJ1biBpbiB0aGlzIEVG SSBTaGVsbC4gTWF5YmUgQ0hJUFNFQyBpcyBub3QgdGhlIGlzc3VlLCB0aGUgaXNzdWUgaXMgeW91 ciBFRkkgU2hlbGwgYW5kIFB5dGhvbi48YnI+DQo8YnI+DQpJbnN0ZWFkIG9mIGJ1aWxkaW5nIHlv dXIgb3duIFVFRkkgUHl0aG9uLCB3aGF0IGhhcHBlbnMgd2hlbiB5b3UgdXNlIHRoZSBDSElQU0VD IGluc3RydWN0aW9ucyBhbmQgdXNlIHRoZWlyIHN1cHBsaWVkIHB5dGhvbi5lZmk/IFdhc24ndCB0 aGVyZSBzb21lIHNwZWNpYWwgQ0hJUFNFQy1jZW50cmljIG9wdGlvbnMgbmVlZGVkIHRvIGJ1aWxk IFB5dGhvbiB3aXRoPyBJZiBzbywgdGhhdCBzaG91bGQgYmUgY2xhcmlmaWVkIGJldHRlciBpbiBi dWlsZCBkb2NzLjxicj4NCjxicj4NCihHcmFudGVkLCBpdCBzdWNrcyBoYXZpbmcgYSBzZWN1cml0 eSB0b29sIHNoaXAgYSBwcmUtY29tcGlsZWQgUHl0aG9uIGJpbmFyeSBpbiB0aGVpciBzb3VyY2Ug dHJlZSwgYnVpbHQgaW4gYW4gdW5rbm93biBtYW5uZXIsIHdpdGggbm8gY2hlY2tzdW1zLCBhbmQg bm8gcmVwcm9kdWNhYmxlIGJ1aWxkcywgYW5kIGhhdmUgdGhlIHRvb2wgcmVseSBvbiB0aGlzIGZv ciBkZXRlcm1pbmluZyBwbGF0Zm9ybSBzZWN1cml0eS4gQnV0IHRoYXQncyBhbm90aGVyDQogaXNz dWUuLi4pPGJyPg0KPGJyPg0KSW50ZWwgaGFzIGFiYW5kb25lZCBDUHl0aG9uIFYyIGZvciBVRUZJ IHBhdGNoLCBhbmQgaXMgaW5zdGVhZCBpcyB3b3JraW5nIG9uIE1pY3JvUHl0aG9uIGZvciBVRUZJ ICh3aGljaCBoYXMgc29tZSBQeXRob24gVjMgc3VwcG9ydCkuIFRob3VnaCBQeXRob24gVjIgaXMg ZGVwcmVjYXRlZCBhbmQgbW9zdCBvZiB3b3JsZCBoYXMgbW92ZWQgdG8gUHl0aG9uIFYzLCBDSElQ U0VDIHRlYW0gaXMgc3RpbGwgdXNpbmcvYnVuZGxpbmcgQ1B5dGhvbiBWMiwgYW5kDQogaGFzbid0 IHN3aXRjaGVkIG92ZXIgdG8gdXNpbmcvcmVseWluZy1vbi9idW5kbGluZyBNaWNyb1B5dGhvbiBm b3IgVUVGSS48YnI+DQo8YnI+DQpGV0lXLCBJIHJhcmVseSBzZWUgcmVwbGllcyBmcm9tIHRoZSB0 ZWFtIGZvciBzdXBwb3J0IHF1ZXN0aW9ucyBvbiB0aGlzIG1haWxpbmcgbGlzdCBub3IgdGhlIEdv b2dsZSBHcm91cHMgbGlzdHMuIEl0IEkgd2FzIGxvb2tpbmcgZm9yIGEgcmVwbHksIEknZCBmaWxl IGEgR2l0aHViIGlzc3VlIChhbmQgaW5jbHVkZSBtb3JlIGluZm8pLCBvciB1c2UgVHdpdHRlci48 YnI+DQo8YnI+DQpZb3UgbWlnaHQgd2FudCB0byBjbGFyaWZ5IHRoYXQgeW91J3JlIHRyeWluZyB0 byBydW4gdGhpcyBvbiBhbiBJbnRlbCBzeXN0ZW0sIG5vdCBhbm90aGVyIElTQSAobGlrZSBBTUQg b3IgQVJNIG9yIFJJU0MtViksIGFzIHRoYXQnZCBhbHNvIG5vdCB3b3JrLjxicj4NCjxicj4NCkhU SCw8YnI+DQpMZWU8YnI+DQo8YnI+DQpPbiA1LzI4LzIwIDc6MzYgQU0sIFZvcm5hbWUgTmFjaG5h bWUgd3JvdGU6PGJyPg0KJmd0OyBIZWxsbyw8YnI+DQomZ3Q7PGJyPg0KJmd0OyBJIHRyaWVkIHRv IHJ1biBjaGlwc2VjLTEuNS4wIGluIEVGSSBTaGVsbCB3aXRob3V0IG9wZXJhdGluZyBzeXN0ZW0g YnV0IDxicj4NCiZndDsgdW5mb3J0dW5hdGVseSBpdCBkb2Vzbid0IHJ1biBpbiB0aGUgRUZJIFNo ZWxsLiBJIHJhbiB0aGVzZSBjb21tYW5kczo8YnI+DQomZ3Q7PGJyPg0KJmd0OyBTaGVsbCZndDsg ZnMwOjxicj4NCiZndDsgRlMwOlwmZ3Q7IHB5dGhvbiAtXiMgY2hpcHNlY19tYWluLnB5IC1tIGRl YnVnZW5hYmxlZDxicj4NCiZndDs8YnI+DQomZ3Q7IFRoaXMgcmVzdWx0cyBpbiBhIHRyYWNlYmFj ayB3aXRoIHRoZSBsYXN0IGZpbGUgY2hpcHNlYy9kZWZpbmVzLnB5IDxicj4NCiZndDsgY2FsbGVk IGZ1bmN0aW9uIGdldF92ZXJzaW9uKCkuPGJyPg0KJmd0Ozxicj4NCiZndDsgT1NFcnJvcjogW0Vy cm5vIDIyXSBJbnZhbHVkIGFyZ3VtZW50OiAnRlMwOkZTMDpjaGlwc2VjJzxicj4NCiZndDs8YnI+ DQomZ3Q7IEFmdGVyIHRoYXQgSSBjb21waWxlZCBweXRob24gMi43LjIgYW5kIHB5dGhvbiAyLjcu MTAgZnJvbSBlZGsyIHBhY2thZ2UgPGJyPg0KJmd0OyB2ZXJzaW9uIGVkazItc3RhYmxlMjAxOTAz LiBUaGlzIGlzIHRoZSBsYXN0IHBhY2thZ2UgdmVyc2lvbiB3aXRoIDxicj4NCiZndDsgcHlodG9u IGluc2lkZS4gV2l0aCB0aGlzIHZlcnNpb24gb2YgcHlodG9uIEkgcmVjZWl2ZWQgYW5vdGhlciBl cnJvciA8YnI+DQomZ3Q7IG1lc3NhZ2Ugd2l0aCB0aGUgbGFzdCBsaW5lOjxicj4NCiZndDs8YnI+ DQomZ3Q7IEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgZXhwYXQ7IHVzZSBTaW1wbGVYTUxU cmVlQnVpbGRlciBpbnN0ZWFkLjxicj4NCiZndDs8YnI+DQomZ3Q7IFdoYXQgaXMgdGhlIGJlc3Qg d2F5IHRvIHN0YXJ0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBjaGlwc2VjIGluIHRoZSBFRkkgPGJy Pg0KJmd0OyBTaGVsbD8gV2hhdCB2ZXJzaW9uIG9mIEVGSSBTaGVsbCBhbmQgcHlodG9uIGlzIHJl cXVpcmVkPzxicj4NCiZndDs8YnI+DQomZ3Q7IGJlc3Qgd2lzaGVzPGJyPg0KJmd0OyBQaGlsaXBw PGJyPg0KJmd0Ozxicj4NCiZndDs8YnI+DQomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fPGJyPg0KJmd0OyBjaGlwc2VjIG1haWxpbmcgbGlzdCAtLSA8 YSBocmVmPSJtYWlsdG86Y2hpcHNlY0BsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlw c2VjQGxpc3RzLjAxLm9yZzwvYT4gVG8gdW5zdWJzY3JpYmUgc2VuZCBhbg0KPGJyPg0KJmd0OyBl bWFpbCB0byA8YSBocmVmPSJtYWlsdG86Y2hpcHNlYy1sZWF2ZUBsaXN0cy4wMS5vcmciIHRhcmdl dD0iX2JsYW5rIj5jaGlwc2VjLWxlYXZlQGxpc3RzLjAxLm9yZzwvYT48YnI+DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4NCmNoaXBzZWMgbWFpbGlu ZyBsaXN0IC0tIDxhIGhyZWY9Im1haWx0bzpjaGlwc2VjQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJf YmxhbmsiPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9hPiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVt YWlsIHRvDQo8YSBocmVmPSJtYWlsdG86Y2hpcHNlYy1sZWF2ZUBsaXN0cy4wMS5vcmciIHRhcmdl dD0iX2JsYW5rIj5jaGlwc2VjLWxlYXZlQGxpc3RzLjAxLm9yZzwvYT48YnI+DQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4NCmNoaXBzZWMgbWFpbGlu ZyBsaXN0IC0tIDxhIGhyZWY9Im1haWx0bzpjaGlwc2VjQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJf YmxhbmsiPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9hPjxicj4NClRvIHVuc3Vic2NyaWJlIHNlbmQg YW4gZW1haWwgdG8gPGEgaHJlZj0ibWFpbHRvOmNoaXBzZWMtbGVhdmVAbGlzdHMuMDEub3JnIiB0 YXJnZXQ9Il9ibGFuayI+DQpjaGlwc2VjLWxlYXZlQGxpc3RzLjAxLm9yZzwvYT48bzpwPjwvbzpw PjwvcD4NCjwvYmxvY2txdW90ZT4NCjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Js b2NrcXVvdGU+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --===============6874041782243895695==--