Re: [Luv] Results and a few questions
Darren Bilby <[email protected]> Thu, 29 Oct 2015 06:12:37 +0000
| Newsgroups | dev.linux.lists.oe-chipsec |
|---|---|
| Message-ID | <CAFzMC=mdZa9qZ2LmY2+7D0JJ5uhT+mTdHSBMOx6oVgR-Mf6Zpg@mail.gmail.com> |
--===============1256502467235395097== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I originally discovered the issue when attempting to build a chipsec egg file as part of work to make it useful in github.com/google/grr. Build of an egg uses the same setup.py so had the same issue with the lack of xml files. On Thu, Oct 29, 2015 at 4:54 PM Loucaides, John <[email protected]> wrote: > Interesting=E2=80=A6 I=E2=80=99m looking into this. We=E2=80=99re trying = to finish up a 1.2.2 > release, and I plan to go through the pull requests over the next day or > two. > > > > Btw, have you seen bugs related to setup.py outside LUV as well? > > > > Thanks, > > - John > > > > *From:* chipsec [mailto:chipsec-bounces(a)lists.01.org] *On Behalf Of *Da= rren > Bilby > *Sent:* Wednesday, October 28, 2015 5:55 PM > *To:* Ricardo Neri <[email protected]>; > kusuriya(a)corrupted.io > *Cc:* chipsec(a)lists.01.org; luv(a)lists.01.org > *Subject:* Re: [chipsec] [Luv] Results and a few questions > > > > I'm actually not convinced Chipsec on LUV has ever worked. > > The configuration in setup.py for Chipsec doesn't include the XML files in > the deployment, thus no XML files in LUV, and therefore the errors. > > There is a fix for it in a pull request here > https://github.com/chipsec/chipsec/pull/7 but there are a bunch of other > very old pull requests that don't seem to be being looked at. > > > > On Thu, Oct 29, 2015 at 9:26 AM Ricardo Neri < > ricardo.neri-calderon(a)linux.intel.com> wrote: > > Actually including the CHIPSEC mailing list this time. > On Mon, 2015-10-26 at 19:51 +0000, Neri, Ricardo wrote: > > +CHIPSEC mailing list > > > > Hi Jason, > > > > Thanks for your report. > > > > On Mon, 2015-10-26 at 12:04 -0700, Jason Barbier wrote: > > > Hey all, > > > I ran LUV-Live and my results are attached as a zip, I sort of was > > > wondering about the errors in the chipsec log though, > > > These were similar errors that I got last week that caused some issues > > > with my clock being reset using version 1.2, the latest RC seems to n= ot > > > do that but It still can not seem to run all the tests. > > > > > > -- > > > WARNING: 'SPIBAR' MMIO BAR definition not found/correct in XML config > > > [pci] reading B/D/F: 0/31/0, offset: 0xF0, value: 0xFED1C001 > > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB) > > > [spi] SPI MMIO base: 0x00000000FED1F800 (assuming below 4GB) > > > [-] Traceback (most recent call last): > > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291, = in > > > run_module > > > result =3D modx.run( module_argv ) > > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 69, > in > > > run > > > result =3D self.get_module_object() > > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 101, > > > in get_module_object > > > self.mod_obj =3D iref() > > > File > > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/bios_wp.py= ", > > > line 51, in __init__ > > > self.spi =3D SPI( self.cs ) > > > File "/usr/lib/python2.7/site-packages/chipsec/hal/spi.py", line 17= 6, > > > in __init__ > > > self.hsfs_off =3D int(chipsec.chipset.get_register_def( self.cs, > > > "HSFS" )['offset'],16) > > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 46= 7, > > > in get_register_def > > > return _cs.Cfg.REGISTERS[ reg_name ] > > > KeyError: 'HSFS' > > > -- > > > [-] Traceback (most recent call last): > > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291, = in > > > run_module > > > result =3D modx.run( module_argv ) > > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80, > in > > > run > > > result =3D self.mod_obj.run(module_argv) > > > File > > > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.py", > > > line 68, in run > > > return self.check_flash_access_permissions() > > > File > > > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_desc.py", > > > line 48, in check_flash_access_permissions > > > frap =3D chipsec.chipset.read_register( self.cs, 'FRAP' ) > > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 47= 0, > > > in read_register > > > reg =3D _cs.Cfg.REGISTERS[ reg_name ] > > > KeyError: 'FRAP' > > > > > > ERROR: Exception occurred during chipsec.modules.common.spi_desc.run(= ): > > > ''FRAP'' > > > -- > > > [-] Traceback (most recent call last): > > > File "/usr/lib/python2.7/site-packages/chipsec_main.py", line 291, = in > > > run_module > > > result =3D modx.run( module_argv ) > > > File "/usr/lib/python2.7/site-packages/chipsec/module.py", line 80, > in > > > run > > > result =3D self.mod_obj.run(module_argv) > > > File > > > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.py", > > > line 59, in run > > > return self.check_spi_lock() > > > File > > > > "/usr/lib/python2.7/site-packages/chipsec/modules/common/spi_lock.py", > > > line 46, in check_spi_lock > > > hsfs_reg =3D chipsec.chipset.read_register( self.cs, 'HSFS' ) > > > File "/usr/lib/python2.7/site-packages/chipsec/chipset.py", line 47= 0, > > > in read_register > > > reg =3D _cs.Cfg.REGISTERS[ reg_name ] > > > KeyError: 'HSFS' > > > > > > ERROR: Exception occurred during chipsec.modules.common.spi_lock.run(= ): > > > ''HSFS'' > > > -- > > > > > I added the CHIPSEC mailing list. Perhaps they can give further insight > > on what the problem might be. > > > > As per LUV, it seems that this exception somehow caused a crash in the > > LUV test manager and it prevented it from running the tests of the > > tests. It seems we need to add some safeguards so that LUV can handle > > these errors more gracefully. > > > > Thanks and BR, > > Ricardo > > > > > > > > _______________________________________________ > > > Luv mailing list > > > Luv(a)lists.01.org > > > https://lists.01.org/mailman/listinfo/luv > > > > _______________________________________________ > > Luv mailing list > > Luv(a)lists.01.org > > https://lists.01.org/mailman/listinfo/luv > > > _______________________________________________ > chipsec mailing list > chipsec(a)lists.01.org > https://lists.01.org/mailman/listinfo/chipsec > > --===============1256502467235395097== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+SSBvcmlnaW5hbGx5IGRpc2NvdmVyZWQgdGhlIGlzc3VlIHdoZW4gYXR0 ZW1wdGluZyB0byBidWlsZCBhIGNoaXBzZWMgZWdnIGZpbGUgYXMgcGFydCBvZiB3b3JrIHRvIG1h a2UgaXQgdXNlZnVsIGluIDxhIGhyZWY9Imh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9ncnIiPmdp dGh1Yi5jb20vZ29vZ2xlL2dycjwvYT4uIEJ1aWxkIG9mIGFuIGVnZyB1c2VzIHRoZSBzYW1lIHNl dHVwLnB5IHNvIGhhZCB0aGUgczxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDoxLjUiPmFtZSBpc3N1 ZSB3aXRoIHRoZSBsYWNrIG9mIHhtbCBmaWxlcy7CoDwvc3Bhbj48ZGl2Pjxicj48L2Rpdj48L2Rp dj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiPk9uIFRodSwgT2N0 IDI5LCAyMDE1IGF0IDQ6NTQgUE0gTG91Y2FpZGVzLCBKb2huICZsdDs8YSBocmVmPSJtYWlsdG86 am9obi5sb3VjYWlkZXNAaW50ZWwuY29tIj5qb2huLmxvdWNhaWRlc0BpbnRlbC5jb208L2E+Jmd0 OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i bWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0 OjFleCI+CgoKCgoKPGRpdiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+ CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMWY0OTdk Ij5JbnRlcmVzdGluZ+KApiBJ4oCZbSBsb29raW5nIGludG8gdGhpcy4gV2XigJlyZSB0cnlpbmcg dG8gZmluaXNoIHVwIGEgMS4yLjIgcmVsZWFzZSwgYW5kIEkgcGxhbiB0byBnbyB0aHJvdWdoIHRo ZSBwdWxsIHJlcXVlc3RzIG92ZXIgdGhlIG5leHQgZGF5IG9yIHR3by4KPHU+PC91Pjx1PjwvdT48 L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFm NDk3ZCI+PHU+PC91PsKgPHU+PC91Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssc2Fucy1zZXJpZjtjb2xvcjojMWY0OTdkIj5CdHcsIGhhdmUgeW91IHNlZW4gYnVncyByZWxh dGVkIHRvIHNldHVwLnB5IG91dHNpZGUgTFVWIGFzIHdlbGw/PHU+PC91Pjx1PjwvdT48L3NwYW4+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFmNDk3ZCI+ PHU+PC91PsKgPHU+PC91Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjojMWY0OTdkIj5UaGFua3MsPHU+PC91Pjx1PjwvdT48L3NwYW4+PC9wPgo8 cCBzdHlsZT0ibWFyZ2luLWxlZnQ6MjAuMjVwdCI+Cjx1PjwvdT48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29s b3I6IzFmNDk3ZCI+PHNwYW4+LTxzcGFuIHN0eWxlPSJmb250OjcuMHB0ICZxdW90O1RpbWVzIE5l dyBSb21hbiZxdW90OyI+wqDCoMKgwqDCoMKgwqDCoMKgCjwvc3Bhbj48L3NwYW4+PC9zcGFuPjx1 PjwvdT48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxp YnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFmNDk3ZCI+Sm9objx1PjwvdT48dT48L3U+PC9z cGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxZjQ5 N2QiPjx1PjwvdT7CoDx1PjwvdT48L3NwYW4+PC9wPgo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTti b3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNC4wcHQiPgo8 ZGl2Pgo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNlMWUxZTEgMS4w cHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVv dDssc2Fucy1zZXJpZiI+RnJvbTo8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu MHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZiI+IGNoaXBzZWMg W21haWx0bzo8YSBocmVmPSJtYWlsdG86Y2hpcHNlYy1ib3VuY2VzQGxpc3RzLjAxLm9yZyIgdGFy Z2V0PSJfYmxhbmsiPmNoaXBzZWMtYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+XQo8Yj5PbiBCZWhh bGYgT2YgPC9iPkRhcnJlbiBCaWxieTxicj4KPGI+U2VudDo8L2I+IFdlZG5lc2RheSwgT2N0b2Jl ciAyOCwgMjAxNSA1OjU1IFBNPGJyPgo8Yj5Ubzo8L2I+IFJpY2FyZG8gTmVyaSAmbHQ7PGEgaHJl Zj0ibWFpbHRvOnJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20iIHRhcmdldD0i X2JsYW5rIj5yaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPC9hPiZndDs7IDxh IGhyZWY9Im1haWx0bzprdXN1cml5YUBjb3JydXB0ZWQuaW8iIHRhcmdldD0iX2JsYW5rIj5rdXN1 cml5YUBjb3JydXB0ZWQuaW88L2E+PGJyPgo8Yj5DYzo8L2I+IDxhIGhyZWY9Im1haWx0bzpjaGlw c2VjQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9h PjsgPGEgaHJlZj0ibWFpbHRvOmx1dkBsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5sdXZA bGlzdHMuMDEub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbY2hpcHNlY10gW0x1dl0g UmVzdWx0cyBhbmQgYSBmZXcgcXVlc3Rpb25zPHU+PC91Pjx1PjwvdT48L3NwYW4+PC9wPgo8L2Rp dj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIg dmxpbms9InB1cnBsZSI+PGRpdj48ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpz b2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNC4wcHQiPgo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5J JiMzOTttIGFjdHVhbGx5IG5vdCBjb252aW5jZWQgQ2hpcHNlYyBvbiBMVVYgaGFzIGV2ZXIgd29y a2VkLsKgPHU+PC91Pjx1PjwvdT48L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoZSBj b25maWd1cmF0aW9uIGluIHNldHVwLnB5IGZvciBDaGlwc2VjIGRvZXNuJiMzOTt0IGluY2x1ZGUg dGhlIFhNTCBmaWxlcyBpbiB0aGUgZGVwbG95bWVudCwgdGh1cyBubyBYTUwgZmlsZXMgaW4gTFVW LCBhbmQgdGhlcmVmb3JlIHRoZSBlcnJvcnMuwqA8dT48L3U+PHU+PC91PjwvcD4KPC9kaXY+Cjxk aXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoZXJlIGlzIGEgZml4IGZvciBpdCBpbiBhIHB1bGwg cmVxdWVzdCBoZXJlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBzZWMv cHVsbC83IiB0YXJnZXQ9Il9ibGFuayI+Cmh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBz ZWMvcHVsbC83PC9hPsKgYnV0IHRoZXJlIGFyZSBhIGJ1bmNoIG9mIG90aGVyIHZlcnkgb2xkIHB1 bGwgcmVxdWVzdHMgdGhhdCBkb24mIzM5O3Qgc2VlbSB0byBiZSBiZWluZyBsb29rZWQgYXQuwqA8 dT48L3U+PHU+PC91PjwvcD4KPC9kaXY+CjwvZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48 L3U+wqA8dT48L3U+PC9wPgo8ZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5PbiBUaHUs IE9jdCAyOSwgMjAxNSBhdCA5OjI2IEFNIFJpY2FyZG8gTmVyaSAmbHQ7PGEgaHJlZj0ibWFpbHRv OnJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20iIHRhcmdldD0iX2JsYW5rIj5y aWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPC9hPiZndDsgd3JvdGU6PHU+PC91 Pjx1PjwvdT48L3A+CjwvZGl2Pgo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVy LWxlZnQ6c29saWQgI2NjY2NjYyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGluIDYuMHB0O21hcmdp bi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BY3R1 YWxseSBpbmNsdWRpbmcgdGhlIENISVBTRUMgbWFpbGluZyBsaXN0IHRoaXMgdGltZS48YnI+Ck9u IE1vbiwgMjAxNS0xMC0yNiBhdCAxOTo1MSArMDAwMCwgTmVyaSwgUmljYXJkbyB3cm90ZTo8YnI+ CiZndDsgK0NISVBTRUMgbWFpbGluZyBsaXN0PGJyPgomZ3Q7PGJyPgomZ3Q7IEhpIEphc29uLDxi cj4KJmd0Ozxicj4KJmd0OyBUaGFua3MgZm9yIHlvdXIgcmVwb3J0Ljxicj4KJmd0Ozxicj4KJmd0 OyBPbiBNb24sIDIwMTUtMTAtMjYgYXQgMTI6MDQgLTA3MDAsIEphc29uIEJhcmJpZXIgd3JvdGU6 PGJyPgomZ3Q7ICZndDsgSGV5IGFsbCw8YnI+CiZndDsgJmd0OyBJIHJhbiBMVVYtTGl2ZSBhbmQg bXkgcmVzdWx0cyBhcmUgYXR0YWNoZWQgYXMgYSB6aXAsIEkgc29ydCBvZiB3YXM8YnI+CiZndDsg Jmd0OyB3b25kZXJpbmcgYWJvdXQgdGhlIGVycm9ycyBpbiB0aGUgY2hpcHNlYyBsb2cgdGhvdWdo LDxicj4KJmd0OyAmZ3Q7IFRoZXNlIHdlcmUgc2ltaWxhciBlcnJvcnMgdGhhdCBJIGdvdCBsYXN0 IHdlZWsgdGhhdCBjYXVzZWQgc29tZSBpc3N1ZXM8YnI+CiZndDsgJmd0OyB3aXRoIG15IGNsb2Nr IGJlaW5nIHJlc2V0IHVzaW5nIHZlcnNpb24gMS4yLCB0aGUgbGF0ZXN0IFJDIHNlZW1zIHRvIG5v dDxicj4KJmd0OyAmZ3Q7IGRvIHRoYXQgYnV0IEl0IHN0aWxsIGNhbiBub3Qgc2VlbSB0byBydW4g YWxsIHRoZSB0ZXN0cy48YnI+CiZndDsgJmd0Ozxicj4KJmd0OyAmZ3Q7IC0tPGJyPgomZ3Q7ICZn dDsgV0FSTklORzogJiMzOTtTUElCQVImIzM5OyBNTUlPIEJBUiBkZWZpbml0aW9uIG5vdCBmb3Vu ZC9jb3JyZWN0IGluIFhNTCBjb25maWc8YnI+CiZndDsgJmd0OyBbcGNpXSByZWFkaW5nIEIvRC9G OiAwLzMxLzAsIG9mZnNldDogMHhGMCwgdmFsdWU6IDB4RkVEMUMwMDE8YnI+CiZndDsgJmd0OyBb c3BpXSBTUEkgTU1JTyBiYXNlOiAweDAwMDAwMDAwRkVEMUY4MDAgKGFzc3VtaW5nIGJlbG93IDRH Qik8YnI+CiZndDsgJmd0OyBbc3BpXSBTUEkgTU1JTyBiYXNlOiAweDAwMDAwMDAwRkVEMUY4MDAg KGFzc3VtaW5nIGJlbG93IDRHQik8YnI+CiZndDsgJmd0OyBbLV0gVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOjxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZxdW90Oy91c3IvbGliL3B5 dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWNfbWFpbi5weSZxdW90OywgbGluZSAyOTEsIGlu PGJyPgomZ3Q7ICZndDvCoCDCoHJ1bl9tb2R1bGU8YnI+CiZndDsgJmd0O8KgIMKgIMKgcmVzdWx0 ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+CiZndDsgJmd0O8KgIMKgRmlsZSAmcXVvdDsv dXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL21vZHVsZS5weSZxdW90Oywg bGluZSA2OSwgaW48YnI+CiZndDsgJmd0O8KgIMKgcnVuPGJyPgomZ3Q7ICZndDvCoCDCoCDCoHJl c3VsdCA9IHNlbGYuZ2V0X21vZHVsZV9vYmplY3QoKTxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZx dW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvbW9kdWxlLnB5JnF1 b3Q7LCBsaW5lIDEwMSw8YnI+CiZndDsgJmd0O8KgIMKgaW4gZ2V0X21vZHVsZV9vYmplY3Q8YnI+ CiZndDsgJmd0O8KgIMKgIMKgc2VsZi5tb2Rfb2JqID0gaXJlZigpPGJyPgomZ3Q7ICZndDvCoCDC oEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFj a2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9iaW9zX3dwLnB5JnF1b3Q7LDxicj4KJmd0OyAm Z3Q7wqAgwqBsaW5lIDUxLCBpbiBfX2luaXRfXzxicj4KJmd0OyAmZ3Q7wqAgwqAgwqBzZWxmLnNw acKgIMKgID0gU1BJKCBzZWxmLmNzICk8YnI+CiZndDsgJmd0O8KgIMKgRmlsZSAmcXVvdDsvdXNy L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL2hhbC9zcGkucHkmcXVvdDssIGxp bmUgMTc2LDxicj4KJmd0OyAmZ3Q7wqAgwqBpbiBfX2luaXRfXzxicj4KJmd0OyAmZ3Q7wqAgwqAg wqBzZWxmLmhzZnNfb2ZmwqAgwqA9IGludChjaGlwc2VjLmNoaXBzZXQuZ2V0X3JlZ2lzdGVyX2Rl Ziggc2VsZi5jcyw8YnI+CiZndDsgJmd0O8KgIMKgIMKgJnF1b3Q7SFNGUyZxdW90OyApWyYjMzk7 b2Zmc2V0JiMzOTtdLDE2KTxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZxdW90Oy91c3IvbGliL3B5 dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZxdW90OywgbGluZSA0Njcs PGJyPgomZ3Q7ICZndDvCoCDCoGluIGdldF9yZWdpc3Rlcl9kZWY8YnI+CiZndDsgJmd0O8KgIMKg IMKgcmV0dXJuIF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJyPgomZ3Q7ICZndDsgS2V5 RXJyb3I6ICYjMzk7SFNGUyYjMzk7PGJyPgomZ3Q7ICZndDsgLS08YnI+CiZndDsgJmd0OyBbLV0g VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxl ICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWNfbWFpbi5weSZx dW90OywgbGluZSAyOTEsIGluPGJyPgomZ3Q7ICZndDvCoCDCoHJ1bl9tb2R1bGU8YnI+CiZndDsg Jmd0O8KgIMKgIMKgcmVzdWx0ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+CiZndDsgJmd0 O8KgIMKgRmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2Vj L21vZHVsZS5weSZxdW90OywgbGluZSA4MCwgaW48YnI+CiZndDsgJmd0O8KgIMKgcnVuPGJyPgom Z3Q7ICZndDvCoCDCoCDCoHJlc3VsdCA9IHNlbGYubW9kX29iai5ydW4obW9kdWxlX2FyZ3YpPGJy PgomZ3Q7ICZndDvCoCDCoEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vzci9saWIvcHl0 aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfZGVzYy5weSZx dW90Oyw8YnI+CiZndDsgJmd0O8KgIMKgbGluZSA2OCwgaW4gcnVuPGJyPgomZ3Q7ICZndDvCoCDC oCDCoHJldHVybiBzZWxmLmNoZWNrX2ZsYXNoX2FjY2Vzc19wZXJtaXNzaW9ucygpPGJyPgomZ3Q7 ICZndDvCoCDCoEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43 L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfZGVzYy5weSZxdW90Oyw8 YnI+CiZndDsgJmd0O8KgIMKgbGluZSA0OCwgaW4gY2hlY2tfZmxhc2hfYWNjZXNzX3Blcm1pc3Np b25zPGJyPgomZ3Q7ICZndDvCoCDCoCDCoGZyYXAgPSBjaGlwc2VjLmNoaXBzZXQucmVhZF9yZWdp c3Rlciggc2VsZi5jcywgJiMzOTtGUkFQJiMzOTsgKTxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZx dW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZx dW90OywgbGluZSA0NzAsPGJyPgomZ3Q7ICZndDvCoCDCoGluIHJlYWRfcmVnaXN0ZXI8YnI+CiZn dDsgJmd0O8KgIMKgIMKgcmVnID0gX2NzLkNmZy5SRUdJU1RFUlNbIHJlZ19uYW1lIF08YnI+CiZn dDsgJmd0OyBLZXlFcnJvcjogJiMzOTtGUkFQJiMzOTs8YnI+CiZndDsgJmd0Ozxicj4KJmd0OyAm Z3Q7IEVSUk9SOiBFeGNlcHRpb24gb2NjdXJyZWQgZHVyaW5nIGNoaXBzZWMubW9kdWxlcy5jb21t b24uc3BpX2Rlc2MucnVuKCk6PGJyPgomZ3Q7ICZndDsgJiMzOTsmIzM5O0ZSQVAmIzM5OyYjMzk7 PGJyPgomZ3Q7ICZndDsgLS08YnI+CiZndDsgJmd0OyBbLV0gVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOjxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhv bjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWNfbWFpbi5weSZxdW90OywgbGluZSAyOTEsIGluPGJy PgomZ3Q7ICZndDvCoCDCoHJ1bl9tb2R1bGU8YnI+CiZndDsgJmd0O8KgIMKgIMKgcmVzdWx0ID0g bW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+CiZndDsgJmd0O8KgIMKgRmlsZSAmcXVvdDsvdXNy L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL21vZHVsZS5weSZxdW90OywgbGlu ZSA4MCwgaW48YnI+CiZndDsgJmd0O8KgIMKgcnVuPGJyPgomZ3Q7ICZndDvCoCDCoCDCoHJlc3Vs dCA9IHNlbGYubW9kX29iai5ydW4obW9kdWxlX2FyZ3YpPGJyPgomZ3Q7ICZndDvCoCDCoEZpbGU8 YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMv Y2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfbG9jay5weSZxdW90Oyw8YnI+CiZndDsgJmd0O8Kg IMKgbGluZSA1OSwgaW4gcnVuPGJyPgomZ3Q7ICZndDvCoCDCoCDCoHJldHVybiBzZWxmLmNoZWNr X3NwaV9sb2NrKCk8YnI+CiZndDsgJmd0O8KgIMKgRmlsZTxicj4KJmd0OyAmZ3Q7wqAgwqAmcXVv dDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL21vZHVsZXMvY29tbW9u L3NwaV9sb2NrLnB5JnF1b3Q7LDxicj4KJmd0OyAmZ3Q7wqAgwqBsaW5lIDQ2LCBpbiBjaGVja19z cGlfbG9jazxicj4KJmd0OyAmZ3Q7wqAgwqAgwqBoc2ZzX3JlZyA9IGNoaXBzZWMuY2hpcHNldC5y ZWFkX3JlZ2lzdGVyKCBzZWxmLmNzLCAmIzM5O0hTRlMmIzM5OyApPGJyPgomZ3Q7ICZndDvCoCDC oEZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9jaGlw c2V0LnB5JnF1b3Q7LCBsaW5lIDQ3MCw8YnI+CiZndDsgJmd0O8KgIMKgaW4gcmVhZF9yZWdpc3Rl cjxicj4KJmd0OyAmZ3Q7wqAgwqAgwqByZWcgPSBfY3MuQ2ZnLlJFR0lTVEVSU1sgcmVnX25hbWUg XTxicj4KJmd0OyAmZ3Q7IEtleUVycm9yOiAmIzM5O0hTRlMmIzM5Ozxicj4KJmd0OyAmZ3Q7PGJy PgomZ3Q7ICZndDsgRVJST1I6IEV4Y2VwdGlvbiBvY2N1cnJlZCBkdXJpbmcgY2hpcHNlYy5tb2R1 bGVzLmNvbW1vbi5zcGlfbG9jay5ydW4oKTo8YnI+CiZndDsgJmd0OyAmIzM5OyYjMzk7SFNGUyYj Mzk7JiMzOTs8YnI+CiZndDsgJmd0OyAtLTxicj4KJmd0OyAmZ3Q7PGJyPgomZ3Q7IEkgYWRkZWQg dGhlIENISVBTRUMgbWFpbGluZyBsaXN0LiBQZXJoYXBzIHRoZXkgY2FuIGdpdmUgZnVydGhlciBp bnNpZ2h0PGJyPgomZ3Q7IG9uIHdoYXQgdGhlIHByb2JsZW0gbWlnaHQgYmUuPGJyPgomZ3Q7PGJy PgomZ3Q7IEFzIHBlciBMVVYsIGl0IHNlZW1zIHRoYXQgdGhpcyBleGNlcHRpb24gc29tZWhvdyBj YXVzZWQgYSBjcmFzaCBpbiB0aGU8YnI+CiZndDsgTFVWIHRlc3QgbWFuYWdlciBhbmQgaXQgcHJl dmVudGVkIGl0IGZyb20gcnVubmluZyB0aGUgdGVzdHMgb2YgdGhlPGJyPgomZ3Q7IHRlc3RzLiBJ dCBzZWVtcyB3ZSBuZWVkIHRvIGFkZCBzb21lIHNhZmVndWFyZHMgc28gdGhhdCBMVVYgY2FuIGhh bmRsZTxicj4KJmd0OyB0aGVzZSBlcnJvcnMgbW9yZSBncmFjZWZ1bGx5Ljxicj4KJmd0Ozxicj4K Jmd0OyBUaGFua3MgYW5kIEJSLDxicj4KJmd0OyBSaWNhcmRvPGJyPgomZ3Q7PGJyPgomZ3Q7ICZn dDs8YnI+CiZndDsgJmd0OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXzxicj4KJmd0OyAmZ3Q7IEx1diBtYWlsaW5nIGxpc3Q8YnI+CiZndDsgJmd0OyA8YSBo cmVmPSJtYWlsdG86THV2QGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkx1dkBsaXN0cy4w MS5vcmc8L2E+PGJyPgomZ3Q7ICZndDsgPGEgaHJlZj0iaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFp bG1hbi9saXN0aW5mby9sdXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2x1djwvYT48YnI+CiZndDs8YnI+CiZndDsgX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CiZndDsgTHV2IG1haWxpbmcgbGlz dDxicj4KJmd0OyA8YSBocmVmPSJtYWlsdG86THV2QGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxh bmsiPkx1dkBsaXN0cy4wMS5vcmc8L2E+PGJyPgomZ3Q7IDxhIGhyZWY9Imh0dHBzOi8vbGlzdHMu MDEub3JnL21haWxtYW4vbGlzdGluZm8vbHV2IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0 cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9sdXY8L2E+PGJyPgo8YnI+Cjxicj4KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CmNoaXBzZWMgbWFpbGlu ZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Y2hpcHNlY0BsaXN0cy4wMS5vcmciIHRhcmdldD0i X2JsYW5rIj5jaGlwc2VjQGxpc3RzLjAxLm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlz dHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vY2hpcHNlYyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBz Oi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vY2hpcHNlYzwvYT48dT48L3U+PHU+PC91 PjwvcD4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3Rl PjwvZGl2Pgo= --===============1256502467235395097==--