Re: [Luv] Results and a few questions

Darren Bilby <[email protected]> Fri, 04 Dec 2015 17:41:02 +1100
Newsgroups dev.linux.lists.oe-chipsec
Message-ID <CAFzMC=maSUJxoAa8mLP1NBzNUKdZOos6LzEN7i0FPFCOOTijyA@mail.gmail.com>
--===============8864322001466470388==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Hi John,
1.2.2 does fix the xml file issue and I think it should work in LUV as is
(although I haven't tested).

I assume the pull request you refer to is
https://github.com/chipsec/chipsec/pull/11 ? That helps solve the issue of
chipsec expecting the xml files to be in a particular place, which
currently prevents us using the setup.py in a virtualenv or using it as an
egg (https://github.com/chipsec/chipsec/issues/12).

Thanks, Darren

On Thu, Dec 3, 2015 at 10:09 AM, Loucaides, John <[email protected]=
m>
wrote:

> Darren, would you mind checking 1.2.2 to see if setup.py works, now?
>
>
>
> I see a pull request that does more=E2=80=A6 trying to figure out if 1.2.=
2 is
> still broken, though.
>
>
>
> Thanks,
>
> -          John
>
>
>
> *From:* Darren Bilby [mailto:darrenbilby(a)gmail.com]
> *Sent:* Wednesday, October 28, 2015 11:13 PM
> *To:* Loucaides, John <[email protected]>; Ricardo Neri <
> ricardo.neri-calderon(a)linux.intel.com>; 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 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]=
om>
> 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
>
>

--===============8864322001466470388==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"

PGRpdiBkaXI9Imx0ciI+SGkgSm9obiw8ZGl2PjEuMi4yIGRvZXMgZml4IHRoZSB4bWwgZmlsZSBp
c3N1ZSBhbmQgSSB0aGluayBpdCBzaG91bGQgd29yayBpbiBMVVYgYXMgaXMgKGFsdGhvdWdoIEkg
aGF2ZW4mIzM5O3QgdGVzdGVkKS7CoDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+SSBhc3N1bWUg
dGhlIHB1bGwgcmVxdWVzdCB5b3UgcmVmZXIgdG8gaXMgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIu
Y29tL2NoaXBzZWMvY2hpcHNlYy9wdWxsLzExIj5odHRwczovL2dpdGh1Yi5jb20vY2hpcHNlYy9j
aGlwc2VjL3B1bGwvMTE8L2E+ID8gVGhhdCBoZWxwcyBzb2x2ZSB0aGUgaXNzdWUgb2YgY2hpcHNl
YyBleHBlY3RpbmcgdGhlIHhtbCBmaWxlcyB0byBiZSBpbiBhIHBhcnRpY3VsYXIgcGxhY2UsIHdo
aWNoIGN1cnJlbnRseSBwcmV2ZW50cyB1cyB1c2luZyB0aGUgc2V0dXAucHkgaW4gYSB2aXJ0dWFs
ZW52IG9yIHVzaW5nIGl0IGFzIGFuIGVnZyAoPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2No
aXBzZWMvY2hpcHNlYy9pc3N1ZXMvMTIiPmh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBz
ZWMvaXNzdWVzLzEyPC9hPikuwqA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoYW5rcywgRGFy
cmVuPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj48ZGl2IGNsYXNzPSJn
bWFpbF9xdW90ZSI+T24gVGh1LCBEZWMgMywgMjAxNSBhdCAxMDowOSBBTSwgTG91Y2FpZGVzLCBK
b2huIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmpvaG4ubG91Y2FpZGVzQGlu
dGVsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmpvaG4ubG91Y2FpZGVzQGludGVsLmNvbTwvYT4mZ3Q7
PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i
bWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0
OjFleCI+CgoKCgoKPGRpdiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+
CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0
O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMWY0OTdk
Ij5EYXJyZW4sIHdvdWxkIHlvdSBtaW5kIGNoZWNraW5nIDEuMi4yIHRvIHNlZSBpZiBzZXR1cC5w
eSB3b3Jrcywgbm93Pzx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy
aSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxZjQ5N2QiPjx1PjwvdT7CoDx1PjwvdT48L3NwYW4+
PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtm
b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFmNDk3ZCI+
SSBzZWUgYSBwdWxsIHJlcXVlc3QgdGhhdCBkb2VzIG1vcmXigKYgdHJ5aW5nIHRvIGZpZ3VyZSBv
dXQgaWYgMS4yLjIgaXMgc3RpbGwgYnJva2VuLCB0aG91Z2guPHU+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+IERhcnJlbiBC
aWxieSBbbWFpbHRvOjxhIGhyZWY9Im1haWx0bzpkYXJyZW5iaWxieUBnbWFpbC5jb20iIHRhcmdl
dD0iX2JsYW5rIj5kYXJyZW5iaWxieUBnbWFpbC5jb208L2E+XQo8YnI+CjxiPlNlbnQ6PC9iPiBX
ZWRuZXNkYXksIE9jdG9iZXIgMjgsIDIwMTUgMTE6MTMgUE08YnI+CjxiPlRvOjwvYj4gTG91Y2Fp
ZGVzLCBKb2huICZsdDs8YSBocmVmPSJtYWlsdG86am9obi5sb3VjYWlkZXNAaW50ZWwuY29tIiB0
YXJnZXQ9Il9ibGFuayI+am9obi5sb3VjYWlkZXNAaW50ZWwuY29tPC9hPiZndDs7IFJpY2FyZG8g
TmVyaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRl
bC5jb20iIHRhcmdldD0iX2JsYW5rIj5yaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwu
Y29tPC9hPiZndDs7IDxhIGhyZWY9Im1haWx0bzprdXN1cml5YUBjb3JydXB0ZWQuaW8iIHRhcmdl
dD0iX2JsYW5rIj5rdXN1cml5YUBjb3JydXB0ZWQuaW88L2E+PC9zcGFuPjwvcD48ZGl2PjxkaXYg
Y2xhc3M9Img1Ij48YnI+CjxiPkNjOjwvYj4gPGEgaHJlZj0ibWFpbHRvOmNoaXBzZWNAbGlzdHMu
MDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+Y2hpcHNlY0BsaXN0cy4wMS5vcmc8L2E+OyA8YSBocmVm
PSJtYWlsdG86bHV2QGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmx1dkBsaXN0cy4wMS5v
cmc8L2E+PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtjaGlwc2VjXSBbTHV2XSBSZXN1bHRzIGFu
ZCBhIGZldyBxdWVzdGlvbnM8dT48L3U+PHU+PC91PjwvZGl2PjwvZGl2PjxwPjwvcD4KPC9kaXY+
CjwvZGl2PjxkaXY+PGRpdiBjbGFzcz0iaDUiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+
wqA8dT48L3U+PC9wPgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIG9yaWdpbmFsbHkgZGlz
Y292ZXJlZCB0aGUgaXNzdWUgd2hlbiBhdHRlbXB0aW5nIHRvIGJ1aWxkIGEgY2hpcHNlYyBlZ2cg
ZmlsZSBhcyBwYXJ0IG9mIHdvcmsgdG8gbWFrZSBpdCB1c2VmdWwgaW4KPGEgaHJlZj0iaHR0cDov
L2dpdGh1Yi5jb20vZ29vZ2xlL2dyciIgdGFyZ2V0PSJfYmxhbmsiPmdpdGh1Yi5jb20vZ29vZ2xl
L2dycjwvYT4uIEJ1aWxkIG9mIGFuIGVnZyB1c2VzIHRoZSBzYW1lIHNldHVwLnB5IHNvIGhhZCB0
aGUgc2FtZSBpc3N1ZSB3aXRoIHRoZSBsYWNrIG9mIHhtbCBmaWxlcy7CoDx1PjwvdT48dT48L3U+
PC9wPgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPgo8L2Rp
dj4KPC9kaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+CjxkaXY+
CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPk9uIFRodSwgT2N0IDI5LCAyMDE1IGF0IDQ6NTQg
UE0gTG91Y2FpZGVzLCBKb2huICZsdDs8YSBocmVmPSJtYWlsdG86am9obi5sb3VjYWlkZXNAaW50
ZWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+am9obi5sb3VjYWlkZXNAaW50ZWwuY29tPC9hPiZndDsg
d3JvdGU6PHU+PC91Pjx1PjwvdT48L3A+CjwvZGl2Pgo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVy
Om5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI2NjY2NjYyAxLjBwdDtwYWRkaW5nOjBpbiAwaW4gMGlu
IDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowaW4iPgo8ZGl2Pgo8ZGl2Pgo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZh
bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFmNDk3ZCI+SW50ZXJl
c3RpbmfigKYgSeKAmW0gbG9va2luZyBpbnRvIHRoaXMuIFdl4oCZcmUgdHJ5aW5nIHRvIGZpbmlz
aCB1cCBhIDEuMi4yIHJlbGVhc2UsIGFuZCBJIHBsYW4gdG8gZ28gdGhyb3VnaAogdGhlIHB1bGwg
cmVxdWVzdHMgb3ZlciB0aGUgbmV4dCBkYXkgb3IgdHdvLiA8L3NwYW4+PHU+PC91Pjx1PjwvdT48
L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2Zv
bnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMWY0OTdkIj7C
oDwvc3Bhbj48dT48L3U+PHU+PC91PjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z
LXNlcmlmO2NvbG9yOiMxZjQ5N2QiPkJ0dywgaGF2ZSB5b3Ugc2VlbiBidWdzIHJlbGF0ZWQgdG8g
c2V0dXAucHkgb3V0c2lkZSBMVVYgYXMgd2VsbD88L3NwYW4+PHU+PC91Pjx1PjwvdT48L3A+Cjxw
IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFt
aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMWY0OTdkIj7CoDwvc3Bh
bj48dT48L3U+PHU+PC91PjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZv
bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlm
O2NvbG9yOiMxZjQ5N2QiPlRoYW5rcyw8L3NwYW4+PHU+PC91Pjx1PjwvdT48L3A+CjxwIHN0eWxl
PSJtYXJnaW4tbGVmdDoyMC4yNXB0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250
LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFmNDk3ZCI+LTwv
c3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjcuMHB0O2NvbG9yOiMxZjQ5N2QiPsKgwqDCoMKg
wqDCoMKgwqDCoAo8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1p
bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxZjQ5N2QiPkpvaG48L3Nw
YW4+PHU+PC91Pjx1PjwvdT48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJm
b250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJp
Zjtjb2xvcjojMWY0OTdkIj7CoDwvc3Bhbj48dT48L3U+PHU+PC91PjwvcD4KPGRpdiBzdHlsZT0i
Ym9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVwdDtwYWRkaW5nOjBpbiAwaW4g
MGluIDQuMHB0Ij4KPGRpdj4KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xp
ZCAjZTFlMWUxIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPgo8cCBjbGFzcz0iTXNv
Tm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVv
dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0i
Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy
aWYiPiBjaGlwc2VjIFttYWlsdG86PGEgaHJlZj0ibWFpbHRvOmNoaXBzZWMtYm91bmNlc0BsaXN0
cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlwc2VjLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9h
Pl0KPGI+T24gQmVoYWxmIE9mIDwvYj5EYXJyZW4gQmlsYnk8YnI+CjxiPlNlbnQ6PC9iPiBXZWRu
ZXNkYXksIE9jdG9iZXIgMjgsIDIwMTUgNTo1NSBQTTxicj4KPGI+VG86PC9iPiBSaWNhcmRvIE5l
cmkgJmx0OzxhIGhyZWY9Im1haWx0bzpyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwu
Y29tIiB0YXJnZXQ9Il9ibGFuayI+cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNv
bTwvYT4mZ3Q7Owo8YSBocmVmPSJtYWlsdG86a3VzdXJpeWFAY29ycnVwdGVkLmlvIiB0YXJnZXQ9
Il9ibGFuayI+a3VzdXJpeWFAY29ycnVwdGVkLmlvPC9hPjxicj4KPGI+Q2M6PC9iPiA8YSBocmVm
PSJtYWlsdG86Y2hpcHNlY0BsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlwc2VjQGxp
c3RzLjAxLm9yZzwvYT47CjxhIGhyZWY9Im1haWx0bzpsdXZAbGlzdHMuMDEub3JnIiB0YXJnZXQ9
Il9ibGFuayI+bHV2QGxpc3RzLjAxLm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW2No
aXBzZWNdIFtMdXZdIFJlc3VsdHMgYW5kIGEgZmV3IHF1ZXN0aW9uczwvc3Bhbj48dT48L3U+PHU+
PC91PjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2Pgo8
ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3BhZGRp
bmc6MGluIDBpbiAwaW4gNC4wcHQiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj7CoDx1PjwvdT48dT48
L3U+PC9wPgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JJiMzOTttIGFjdHVhbGx5IG5vdCBj
b252aW5jZWQgQ2hpcHNlYyBvbiBMVVYgaGFzIGV2ZXIgd29ya2VkLsKgPHU+PC91Pjx1PjwvdT48
L3A+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoZSBjb25maWd1cmF0aW9uIGluIHNldHVw
LnB5IGZvciBDaGlwc2VjIGRvZXNuJiMzOTt0IGluY2x1ZGUgdGhlIFhNTCBmaWxlcyBpbiB0aGUg
ZGVwbG95bWVudCwgdGh1cyBubyBYTUwgZmlsZXMgaW4gTFVWLCBhbmQgdGhlcmVmb3JlIHRoZSBl
cnJvcnMuwqA8dT48L3U+PHU+PC91PjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPlRoZXJlIGlzIGEgZml4IGZvciBpdCBpbiBhIHB1bGwgcmVxdWVzdCBoZXJlCjxhIGhyZWY9
Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBzZWMvcHVsbC83IiB0YXJnZXQ9Il9ibGFu
ayI+aHR0cHM6Ly9naXRodWIuY29tL2NoaXBzZWMvY2hpcHNlYy9wdWxsLzc8L2E+wqBidXQgdGhl
cmUgYXJlIGEgYnVuY2ggb2Ygb3RoZXIgdmVyeSBvbGQgcHVsbCByZXF1ZXN0cyB0aGF0IGRvbiYj
Mzk7dCBzZWVtIHRvIGJlIGJlaW5nIGxvb2tlZCBhdC7CoDx1PjwvdT48dT48L3U+PC9wPgo8L2Rp
dj4KPC9kaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPsKgPHU+PC91Pjx1PjwvdT48L3A+CjxkaXY+
CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPk9uIFRodSwgT2N0IDI5LCAyMDE1IGF0IDk6MjYg
QU0gUmljYXJkbyBOZXJpICZsdDs8YSBocmVmPSJtYWlsdG86cmljYXJkby5uZXJpLWNhbGRlcm9u
QGxpbnV4LmludGVsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnJpY2FyZG8ubmVyaS1jYWxkZXJvbkBs
aW51eC5pbnRlbC5jb208L2E+Jmd0OyB3cm90ZTo8dT48L3U+PHU+PC91PjwvcD4KPC9kaXY+Cjxi
bG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjY2NjY2NjIDEu
MHB0O3BhZGRpbmc6MGluIDBpbiAwaW4gNi4wcHQ7bWFyZ2luLWxlZnQ6NC44cHQ7bWFyZ2luLXRv
cDo1LjBwdDttYXJnaW4tcmlnaHQ6MGluO21hcmdpbi1ib3R0b206NS4wcHQiPgo8cCBjbGFzcz0i
TXNvTm9ybWFsIj5BY3R1YWxseSBpbmNsdWRpbmcgdGhlIENISVBTRUMgbWFpbGluZyBsaXN0IHRo
aXMgdGltZS48YnI+Ck9uIE1vbiwgMjAxNS0xMC0yNiBhdCAxOTo1MSArMDAwMCwgTmVyaSwgUmlj
YXJkbyB3cm90ZTo8YnI+CiZndDsgK0NISVBTRUMgbWFpbGluZyBsaXN0PGJyPgomZ3Q7PGJyPgom
Z3Q7IEhpIEphc29uLDxicj4KJmd0Ozxicj4KJmd0OyBUaGFua3MgZm9yIHlvdXIgcmVwb3J0Ljxi
cj4KJmd0Ozxicj4KJmd0OyBPbiBNb24sIDIwMTUtMTAtMjYgYXQgMTI6MDQgLTA3MDAsIEphc29u
IEJhcmJpZXIgd3JvdGU6PGJyPgomZ3Q7ICZndDsgSGV5IGFsbCw8YnI+CiZndDsgJmd0OyBJIHJh
biBMVVYtTGl2ZSBhbmQgbXkgcmVzdWx0cyBhcmUgYXR0YWNoZWQgYXMgYSB6aXAsIEkgc29ydCBv
ZiB3YXM8YnI+CiZndDsgJmd0OyB3b25kZXJpbmcgYWJvdXQgdGhlIGVycm9ycyBpbiB0aGUgY2hp
cHNlYyBsb2cgdGhvdWdoLDxicj4KJmd0OyAmZ3Q7IFRoZXNlIHdlcmUgc2ltaWxhciBlcnJvcnMg
dGhhdCBJIGdvdCBsYXN0IHdlZWsgdGhhdCBjYXVzZWQgc29tZSBpc3N1ZXM8YnI+CiZndDsgJmd0
OyB3aXRoIG15IGNsb2NrIGJlaW5nIHJlc2V0IHVzaW5nIHZlcnNpb24gMS4yLCB0aGUgbGF0ZXN0
IFJDIHNlZW1zIHRvIG5vdDxicj4KJmd0OyAmZ3Q7IGRvIHRoYXQgYnV0IEl0IHN0aWxsIGNhbiBu
b3Qgc2VlbSB0byBydW4gYWxsIHRoZSB0ZXN0cy48YnI+CiZndDsgJmd0Ozxicj4KJmd0OyAmZ3Q7
IC0tPGJyPgomZ3Q7ICZndDsgV0FSTklORzogJiMzOTtTUElCQVImIzM5OyBNTUlPIEJBUiBkZWZp
bml0aW9uIG5vdCBmb3VuZC9jb3JyZWN0IGluIFhNTCBjb25maWc8YnI+CiZndDsgJmd0OyBbcGNp
XSByZWFkaW5nIEIvRC9GOiAwLzMxLzAsIG9mZnNldDogMHhGMCwgdmFsdWU6IDB4RkVEMUMwMDE8
YnI+CiZndDsgJmd0OyBbc3BpXSBTUEkgTU1JTyBiYXNlOiAweDAwMDAwMDAwRkVEMUY4MDAgKGFz
c3VtaW5nIGJlbG93IDRHQik8YnI+CiZndDsgJmd0OyBbc3BpXSBTUEkgTU1JTyBiYXNlOiAweDAw
MDAwMDAwRkVEMUY4MDAgKGFzc3VtaW5nIGJlbG93IDRHQik8YnI+CiZndDsgJmd0OyBbLV0gVHJh
Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZx
dW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWNfbWFpbi5weSZxdW90
OywgbGluZSAyOTEsIGluPGJyPgomZ3Q7ICZndDvCoCDCoHJ1bl9tb2R1bGU8YnI+CiZndDsgJmd0
O8KgIMKgIMKgcmVzdWx0ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+CiZndDsgJmd0O8Kg
IMKgRmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL21v
ZHVsZS5weSZxdW90OywgbGluZSA2OSwgaW48YnI+CiZndDsgJmd0O8KgIMKgcnVuPGJyPgomZ3Q7
ICZndDvCoCDCoCDCoHJlc3VsdCA9IHNlbGYuZ2V0X21vZHVsZV9vYmplY3QoKTxicj4KJmd0OyAm
Z3Q7wqAgwqBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBz
ZWMvbW9kdWxlLnB5JnF1b3Q7LCBsaW5lIDEwMSw8YnI+CiZndDsgJmd0O8KgIMKgaW4gZ2V0X21v
ZHVsZV9vYmplY3Q8YnI+CiZndDsgJmd0O8KgIMKgIMKgc2VsZi5tb2Rfb2JqID0gaXJlZigpPGJy
PgomZ3Q7ICZndDvCoCDCoEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vzci9saWIvcHl0
aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9iaW9zX3dwLnB5JnF1
b3Q7LDxicj4KJmd0OyAmZ3Q7wqAgwqBsaW5lIDUxLCBpbiBfX2luaXRfXzxicj4KJmd0OyAmZ3Q7
wqAgwqAgwqBzZWxmLnNwacKgIMKgID0gU1BJKCBzZWxmLmNzICk8YnI+CiZndDsgJmd0O8KgIMKg
RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL2hhbC9z
cGkucHkmcXVvdDssIGxpbmUgMTc2LDxicj4KJmd0OyAmZ3Q7wqAgwqBpbiBfX2luaXRfXzxicj4K
Jmd0OyAmZ3Q7wqAgwqAgwqBzZWxmLmhzZnNfb2ZmwqAgwqA9IGludChjaGlwc2VjLmNoaXBzZXQu
Z2V0X3JlZ2lzdGVyX2RlZiggc2VsZi5jcyw8YnI+CiZndDsgJmd0O8KgIMKgIMKgJnF1b3Q7SFNG
UyZxdW90OyApWyYjMzk7b2Zmc2V0JiMzOTtdLDE2KTxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZx
dW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWMvY2hpcHNldC5weSZx
dW90OywgbGluZSA0NjcsPGJyPgomZ3Q7ICZndDvCoCDCoGluIGdldF9yZWdpc3Rlcl9kZWY8YnI+
CiZndDsgJmd0O8KgIMKgIMKgcmV0dXJuIF9jcy5DZmcuUkVHSVNURVJTWyByZWdfbmFtZSBdPGJy
PgomZ3Q7ICZndDsgS2V5RXJyb3I6ICYjMzk7SFNGUyYjMzk7PGJyPgomZ3Q7ICZndDsgLS08YnI+
CiZndDsgJmd0OyBbLV0gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjxicj4KJmd0
OyAmZ3Q7wqAgwqBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2No
aXBzZWNfbWFpbi5weSZxdW90OywgbGluZSAyOTEsIGluPGJyPgomZ3Q7ICZndDvCoCDCoHJ1bl9t
b2R1bGU8YnI+CiZndDsgJmd0O8KgIMKgIMKgcmVzdWx0ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2
ICk8YnI+CiZndDsgJmd0O8KgIMKgRmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1w
YWNrYWdlcy9jaGlwc2VjL21vZHVsZS5weSZxdW90OywgbGluZSA4MCwgaW48YnI+CiZndDsgJmd0
O8KgIMKgcnVuPGJyPgomZ3Q7ICZndDvCoCDCoCDCoHJlc3VsdCA9IHNlbGYubW9kX29iai5ydW4o
bW9kdWxlX2FyZ3YpPGJyPgomZ3Q7ICZndDvCoCDCoEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1
b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1v
bi9zcGlfZGVzYy5weSZxdW90Oyw8YnI+CiZndDsgJmd0O8KgIMKgbGluZSA2OCwgaW4gcnVuPGJy
PgomZ3Q7ICZndDvCoCDCoCDCoHJldHVybiBzZWxmLmNoZWNrX2ZsYXNoX2FjY2Vzc19wZXJtaXNz
aW9ucygpPGJyPgomZ3Q7ICZndDvCoCDCoEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vz
ci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlf
ZGVzYy5weSZxdW90Oyw8YnI+CiZndDsgJmd0O8KgIMKgbGluZSA0OCwgaW4gY2hlY2tfZmxhc2hf
YWNjZXNzX3Blcm1pc3Npb25zPGJyPgomZ3Q7ICZndDvCoCDCoCDCoGZyYXAgPSBjaGlwc2VjLmNo
aXBzZXQucmVhZF9yZWdpc3Rlciggc2VsZi5jcywgJiMzOTtGUkFQJiMzOTsgKTxicj4KJmd0OyAm
Z3Q7wqAgwqBGaWxlICZxdW90Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBz
ZWMvY2hpcHNldC5weSZxdW90OywgbGluZSA0NzAsPGJyPgomZ3Q7ICZndDvCoCDCoGluIHJlYWRf
cmVnaXN0ZXI8YnI+CiZndDsgJmd0O8KgIMKgIMKgcmVnID0gX2NzLkNmZy5SRUdJU1RFUlNbIHJl
Z19uYW1lIF08YnI+CiZndDsgJmd0OyBLZXlFcnJvcjogJiMzOTtGUkFQJiMzOTs8YnI+CiZndDsg
Jmd0Ozxicj4KJmd0OyAmZ3Q7IEVSUk9SOiBFeGNlcHRpb24gb2NjdXJyZWQgZHVyaW5nIGNoaXBz
ZWMubW9kdWxlcy5jb21tb24uc3BpX2Rlc2MucnVuKCk6PGJyPgomZ3Q7ICZndDsgJiMzOTsmIzM5
O0ZSQVAmIzM5OyYjMzk7PGJyPgomZ3Q7ICZndDsgLS08YnI+CiZndDsgJmd0OyBbLV0gVHJhY2Vi
YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjxicj4KJmd0OyAmZ3Q7wqAgwqBGaWxlICZxdW90
Oy91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2NoaXBzZWNfbWFpbi5weSZxdW90Oywg
bGluZSAyOTEsIGluPGJyPgomZ3Q7ICZndDvCoCDCoHJ1bl9tb2R1bGU8YnI+CiZndDsgJmd0O8Kg
IMKgIMKgcmVzdWx0ID0gbW9keC5ydW4oIG1vZHVsZV9hcmd2ICk8YnI+CiZndDsgJmd0O8KgIMKg
RmlsZSAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2VjL21vZHVs
ZS5weSZxdW90OywgbGluZSA4MCwgaW48YnI+CiZndDsgJmd0O8KgIMKgcnVuPGJyPgomZ3Q7ICZn
dDvCoCDCoCDCoHJlc3VsdCA9IHNlbGYubW9kX29iai5ydW4obW9kdWxlX2FyZ3YpPGJyPgomZ3Q7
ICZndDvCoCDCoEZpbGU8YnI+CiZndDsgJmd0O8KgIMKgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43
L3NpdGUtcGFja2FnZXMvY2hpcHNlYy9tb2R1bGVzL2NvbW1vbi9zcGlfbG9jay5weSZxdW90Oyw8
YnI+CiZndDsgJmd0O8KgIMKgbGluZSA1OSwgaW4gcnVuPGJyPgomZ3Q7ICZndDvCoCDCoCDCoHJl
dHVybiBzZWxmLmNoZWNrX3NwaV9sb2NrKCk8YnI+CiZndDsgJmd0O8KgIMKgRmlsZTxicj4KJmd0
OyAmZ3Q7wqAgwqAmcXVvdDsvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9jaGlwc2Vj
L21vZHVsZXMvY29tbW9uL3NwaV9sb2NrLnB5JnF1b3Q7LDxicj4KJmd0OyAmZ3Q7wqAgwqBsaW5l
IDQ2LCBpbiBjaGVja19zcGlfbG9jazxicj4KJmd0OyAmZ3Q7wqAgwqAgwqBoc2ZzX3JlZyA9IGNo
aXBzZWMuY2hpcHNldC5yZWFkX3JlZ2lzdGVyKCBzZWxmLmNzLCAmIzM5O0hTRlMmIzM5OyApPGJy
PgomZ3Q7ICZndDvCoCDCoEZpbGUgJnF1b3Q7L3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2Fn
ZXMvY2hpcHNlYy9jaGlwc2V0LnB5JnF1b3Q7LCBsaW5lIDQ3MCw8YnI+CiZndDsgJmd0O8KgIMKg
aW4gcmVhZF9yZWdpc3Rlcjxicj4KJmd0OyAmZ3Q7wqAgwqAgwqByZWcgPSBfY3MuQ2ZnLlJFR0lT
VEVSU1sgcmVnX25hbWUgXTxicj4KJmd0OyAmZ3Q7IEtleUVycm9yOiAmIzM5O0hTRlMmIzM5Ozxi
cj4KJmd0OyAmZ3Q7PGJyPgomZ3Q7ICZndDsgRVJST1I6IEV4Y2VwdGlvbiBvY2N1cnJlZCBkdXJp
bmcgY2hpcHNlYy5tb2R1bGVzLmNvbW1vbi5zcGlfbG9jay5ydW4oKTo8YnI+CiZndDsgJmd0OyAm
IzM5OyYjMzk7SFNGUyYjMzk7JiMzOTs8YnI+CiZndDsgJmd0OyAtLTxicj4KJmd0OyAmZ3Q7PGJy
PgomZ3Q7IEkgYWRkZWQgdGhlIENISVBTRUMgbWFpbGluZyBsaXN0LiBQZXJoYXBzIHRoZXkgY2Fu
IGdpdmUgZnVydGhlciBpbnNpZ2h0PGJyPgomZ3Q7IG9uIHdoYXQgdGhlIHByb2JsZW0gbWlnaHQg
YmUuPGJyPgomZ3Q7PGJyPgomZ3Q7IEFzIHBlciBMVVYsIGl0IHNlZW1zIHRoYXQgdGhpcyBleGNl
cHRpb24gc29tZWhvdyBjYXVzZWQgYSBjcmFzaCBpbiB0aGU8YnI+CiZndDsgTFVWIHRlc3QgbWFu
YWdlciBhbmQgaXQgcHJldmVudGVkIGl0IGZyb20gcnVubmluZyB0aGUgdGVzdHMgb2YgdGhlPGJy
PgomZ3Q7IHRlc3RzLiBJdCBzZWVtcyB3ZSBuZWVkIHRvIGFkZCBzb21lIHNhZmVndWFyZHMgc28g
dGhhdCBMVVYgY2FuIGhhbmRsZTxicj4KJmd0OyB0aGVzZSBlcnJvcnMgbW9yZSBncmFjZWZ1bGx5
Ljxicj4KJmd0Ozxicj4KJmd0OyBUaGFua3MgYW5kIEJSLDxicj4KJmd0OyBSaWNhcmRvPGJyPgom
Z3Q7PGJyPgomZ3Q7ICZndDs8YnI+CiZndDsgJmd0OyBfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXzxicj4KJmd0OyAmZ3Q7IEx1diBtYWlsaW5nIGxpc3Q8YnI+
CiZndDsgJmd0OyA8YSBocmVmPSJtYWlsdG86THV2QGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxh
bmsiPkx1dkBsaXN0cy4wMS5vcmc8L2E+PGJyPgomZ3Q7ICZndDsgPGEgaHJlZj0iaHR0cHM6Ly9s
aXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9sdXYiIHRhcmdldD0iX2JsYW5rIj5odHRwczov
L2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2x1djwvYT48YnI+CiZndDs8YnI+CiZndDsg
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CiZndDsg
THV2IG1haWxpbmcgbGlzdDxicj4KJmd0OyA8YSBocmVmPSJtYWlsdG86THV2QGxpc3RzLjAxLm9y
ZyIgdGFyZ2V0PSJfYmxhbmsiPkx1dkBsaXN0cy4wMS5vcmc8L2E+PGJyPgomZ3Q7IDxhIGhyZWY9
Imh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vbHV2IiB0YXJnZXQ9Il9ibGFu
ayI+aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9sdXY8L2E+PGJyPgo8YnI+
Cjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+
CmNoaXBzZWMgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Y2hpcHNlY0BsaXN0cy4w
MS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlwc2VjQGxpc3RzLjAxLm9yZzwvYT48YnI+CjxhIGhy
ZWY9Imh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vY2hpcHNlYyIgdGFyZ2V0
PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vY2hpcHNlYzwv
YT48dT48L3U+PHU+PC91PjwvcD4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8
L2Rpdj4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+CjwvZGl2Pgo8L2Rp
dj4KCjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+Cg==

--===============8864322001466470388==--