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==--