From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0267370145085625374==" MIME-Version: 1.0 From: =?utf-8?q?=E6=9D=BE=E6=9C=AC=E5=91=A8=E5=B9=B3_/_MATSUMOTO=EF=BC=8CSHUUHE?= =?utf-8?q?I_=3Cshuhei=2Ematsumoto=2Ext_at_hitachi=2Ecom=3E?= Subject: Re: [SPDK] SPDK + user space appliance Date: Wed, 09 May 2018 08:43:43 +0000 Message-ID: In-Reply-To: AM3PR04MB370F7E8E080D5F9A6CFCF0889990@AM3PR04MB370.eurprd04.prod.outlook.com List-ID: To: spdk@lists.01.org --===============0267370145085625374== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Shahar, Thank you for your interesting proposal and excuse me for cutting in the th= read. Do you have any plan to use similar or better mechanism between your applic= ation and another backend SPDK bdev or device driver (e.g. nvme, bdev_nvme)= ? Thanks, Shuhei ________________________________ =E5=B7=AE=E5=87=BA=E4=BA=BA: SPDK =E3=81=8C S= hahar Salzman =E3=81=AE=E4=BB=A3=E7=90=86= =E3=81=A7=E9=80=81=E4=BF=A1 =E9=80=81=E4=BF=A1=E6=97=A5=EF=BF=BD: 2018=E5=B9=B45=E6=9C=889=E6=97=A5 16:= 48:37 =E5=AE=9B=E5=85=88: spdk(a)lists.01.org =E4=BB=B6=E5=90=8D: [!]Re: [SPDK] SPDK + user space appliance Hi Ben, To answer your question first, the main reason to have a generic spdk IO AP= I for storage appliance is being able to maintain functionality over versio= ns. We started with our module in version 17.07, but when we started integratin= g it into 17.07.01, and the 18.X version we started running into issues. Si= nce the bdev layer is internal to spdk, it makes sense that it will change = both in functionality and in interface from time to time especially in NVMe= F where the specifications are so young, which is the reason that we would = like to have an API which is more stable over versions. As a storage appliance, the requirements are fairly stable, and at least in= the case of SCSI, a thin "glue API" had been enough to get the core applia= nce work with multiple frontend targets (e.g. both SCSI and internal replic= ation). I believe that the same method can be applied to NVMEF. In addition, I think that our use case is not unique to the way we are inte= grating spdk, which means that the work we put in can benefit other users, = and hopefully via their experience, the code can become more robust and use= ful. Shahar ________________________________ From: SPDK on behalf of Walker, Benjamin Sent: Tuesday, May 8, 2018 8:30:20 PM To: spdk(a)lists.01.org Subject: Re: [SPDK] SPDK + user space appliance On Tue, 2018-05-08 at 07:36 +0000, Shahar Salzman wrote: > Hi Jim and Ben, > > For the threading issue, I agree that there is something not very clean i= n the > interface, as there is an assumption on how the user implements it. As I = did > in the bdev_user_example, we also use a ring in order to place all the > incoming IO without delaying the reactor, and then use multiple pollers to > actually handle the IO (deduplication, compression, HA etc.). This is why > there are 2 distinct interfaces - submit_io callback, and > the bdev_user_submit_completion interface which (normally) is called on > another thread (not the original poller), and passed back to the reactor = via > the completion queue on the bdev_user_io_channel, and the registered poll= er > thread which takes from the user completion queue. > Do you think that a cleaner interface would be modifying the submit_io > callback to a poll_io interface which checks a bdev_user internal ring fo= r IO? > Or do you think that the current interface is OK provided good documentat= ion? > > Regarding the spdk_call_unaffinitized, I am currently using spdk_event_ca= ll in > order to register my volumes, I don't really like this since it forces me= to > (eventually) add another async callback in my app to verify that device > registration was successful (and this just adds more conditions, futures = etc. > in the application). Is there a way to call spdk interfaces directly with= a > "non-spdk" thread (i.e. TLS is not initialized)? I'm not so much concerned yet with the interface you've defined, but rather understanding the whole approach at a high level. The SPDK bdev layer is designed for custom bdev modules to be added, so my primary question is why write a generic bdev_user module as opposed to writing a "your custom stora= ge backend" module? I think this is the key piece, and understanding the proce= ss you went through as you designed this will probably yield a whole bunch of = good improvements to the current bdev module system. Thanks, Ben > > Hope this answers the questions, > Shahar > From: SPDK on behalf of Harris, James R > > Sent: Monday, May 7, 2018 9:18:20 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] SPDK + user space appliance > > There are also calls such as spdk_call_unaffinitized() and > spdk_unaffinitize_thread() which have been added to enable cases where a = bdev > module may need to spawn non-polling threads and don=E2=80=99t want those= threads to > inherit the affinity of the calling thread. The SPDK rbd module currently > uses these (see git commit fa5206c4) since rbd_open is a blocking call. = (Note > that librbd does now support rbd_aio_open which is better suited for SPDK= .) > > -Jim > > > On 5/7/18, 11:02 AM, "SPDK on behalf of Walker, Benjamin" 01.org on behalf of benjamin.walker(a)intel.com> wrote: > > Hi Shahar, > > Thank you for submitting the patch. I've looked through it in detail = and I > think > I understand the purpose of this code, but I'm going to explain it ba= ck to > you > so you can correct me where I'm wrong. > > I think this code solves two distinct problems: > > 1) You need to forward I/O out of the bdev layer to some custom backe= nd, > and you > want the code that does that to live outside of the SPDK repository. > > 2) Your custom back-end library isn't suitable for use in a run-to- > completion > model. By that I mean that you can't just call your library directly = on > the > thread that originally receives the spdk_bdev_io request because your > library > either blocks or generally takes too long to return from the submissi= on > call > (maybe it is doing inline compression or something). Instead, you nee= d to > shuttle those requests off to separate threads for handling. > > As far as point #1, today the SPDK build system does not nicely > accommodate bdev > modules whose code lives outside of SPDK. SPDK expects them to be in > lib/bdev/. However, that's a fairly straightforward chan= ge to > the > build system and it's one we've been intending to make for some time. > > For point #2, this is likely the case for a large number of storage b= ack- > ends, > but I think the proper way to solve it is probably back-end specific = and > not > general purpose. As a counter-point, SPDK already integrates with a n= umber > of > third-party storage back-ends today (Ceph RBD, libiscsi, libaio, etc.= ) and > none > of those ended up needing to pass messages to other threads. They all > support > asynchronous operations, though. I could imagine writing a bdev module > that > ultimately makes POSIX preadv calls, for instance. That would need to= be > implemented with a thread pool and each bdev_io gets funneled off to a > thread in > the pool to perform the blocking operation. > > Ok - I explained what I think I'm understanding. Now tell me where I = went > wrong > :) > > Thanks, > Ben > > On Sun, 2018-05-06 at 10:32 +0000, Shahar Salzman wrote: > > Hi, > > > > I pushed the code for review, thanks Daniel for the help. > > > > In a nutshell: > > - bdev_user - an API for a user appliance to use spdk as an iSCSI/N= VMeF > target > > - bdev_user_example - reference application > > - The API relies on rings in order to submit/complete IOs > > - User appliance registers callbacks for submit_io (should we have > > read/write/other instead?) > > - User appliance registers its devices so that they may be added to= an > > existing namespace (I am using RPC to do the management) > > > > Thanks, > > Shahar > > > > > > From: SPDK on behalf of Verkamp, Dani= el > > rkamp(a)intel.com> > > Sent: Thursday, May 3, 2018 8:50 PM > > To: Storage Performance Development Kit > > Subject: Re: [SPDK] SPDK + user space appliance > > > > Hi Shahar, > > > > The target branch for the push should be =E2=80=98refs/for/master= =E2=80=99, not =E2=80=98master=E2=80=99 > =EF=BF=BD if > > you configured a remote as specified in http://www.spdk.io/developm= ent/ > it > > should look like: > > > > [remote "review"] > > url =3D https://review.gerrithub.io/spdk/spdk > > push =3D HEAD:refs/for/master > > > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar > Salzman > > Sent: Thursday, May 3, 2018 1:00 AM > > To: Storage Performance Development Kit > > Subject: Re: [SPDK] SPDK + user space appliance > > > > Hi Ben, > > > > I have the code ready for review (spdk/master on dpdk/18.02), but I= do > not > > have push rights for gerrithub: > > shahar.salzman(a)shahars-vm:~/Kaminario/git/spdk$ git push spdk-rev= iew > > HEAD:master > > Password for 'https://ShaharSalzman-K(a)review.gerrithub.io': > > Counting objects: 109, done. > > Compressing objects: 100% (22/22), done. > > Writing objects: 100% (22/22), 8.70 KiB | 0 bytes/s, done. > > Total 22 (delta 14), reused 0 (delta 0) > > remote: Resolving deltas: 100% (14/14) > > remote: Branch refs/heads/master: > > remote: You are not allowed to perform this operation. > > remote: To push into this reference you need 'Push' rights. > > remote: User: ShaharSalzman-K > > remote: Please read the documentation and contact an administrator > > remote: if you feel the configuration is incorrect > > remote: Processing changes: refs: 1, done > > To https://ShaharSalzman-K(a)review.gerrithub.io/a/spdk/spdk > > ! [remote rejected] HEAD -> master (prohibited by Gerrit: ref upda= te > access > > denied) > > error: failed to push some refs to 'https://clicktime.symantec.com/= a/1/iPAMfi9JTgrCsBpj-3dTOiwjRg4TO0R9p-532zfvTJo=3D?d=3DIZ4agxX_ZpqPkWiNnTNr= j_NBs2FhvVhL0C4ui7usNFbwWvaeFL_6xxEiJsoIsqQ7V52cWaZFVACNr_1h7jLWbAwFsIludxq= vouLeR7LlLOfQ0bFlPUpvFZ6_PMy3CfWbTeNsbADtICHCz_POTCbaFpNsuI2rlqB8puvuZJTP3O= x46efqw1FrkS0cNBzg8d-EuPrkwq9O0Z_X5JWfRIeyC8OdQ0LgZbmYLhHv74Ef6cPNqSlyLNHic= 0Jl3IcH3yyZoJ8yW8_S9YWGC8KctqorrU9ydDY5LxaRivXyr73oPW0zCi7L_F_ruhFLmKNLLqGy= TuILXnS4oYr3CQn3fJc9OCnuVkU4qPnBXZN65eLGxDVtsZifysY6Ncn_9vBe9bWoMqpmX4PvgHR= psz32FSPKiHJdU-qNNiGiG-AYIgDEjOIw&u=3Dhttps%3A%2F%2FShaharSalzman-K%40revie= w.gerri > thub.i > > o/a/spdk/spdk' > > > > Am I doing something incorrect, or is this just a permission issue? > > > > Thanks, > > Shahar > > From: SPDK on behalf of Shahar Salzman > > zman(a)kaminario.com> > > Sent: Wednesday, April 25, 2018 9:02:38 AM > > To: Storage Performance Development Kit > > Subject: Re: [SPDK] SPDK + user space appliance > > > > Hi Ben, > > > > The code is currently working on v17.07, we are planning on bumping= the > > version to one of the latest stable versions (18.01?) + master. > > It will take me (hopefully) a few days to update the code and have = our > > internal CI start running on this version, not sure it would be use= ful, > but I > > can get our working 17.07 code (+ reference application) for review= much > > faster. > > What is the best course of action? > > > > Shahar > > From: SPDK on behalf of Walker, Benja= min > > .walker(a)intel.com> > > Sent: Tuesday, April 24, 2018 7:19:12 PM > > To: Storage Performance Development Kit > > Subject: Re: [SPDK] SPDK + user space appliance > > > > Hi Shahar, > > > > Would you be willing to submit your bdev module as a patch on Gerri= tHub? > That > > way everyone can take a look and provide feedback. If you don=E2=80= =99t want it > to run > > the tests, you can put [RFC] and the beginning of the commit messag= e. > > > > Thanks, > > Ben > > > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar > Salzman > > Sent: Monday, April 23, 2018 8:45 AM > > To: spdk(a)lists.01.org > > Subject: Re: [SPDK] SPDK + user space appliance > > > > Hi Ben, > > > > Bumping this thread since I've been having some new thoughts on the > issue now > > that we are starting integration with newer spdk versions. > > Unfortunately the merge isn't as smooth as I'd like it to be since = the > bdev > > module is pretty tightly integrated into spdk, perhaps we made some > false > > assumptions writing the module, but it seems some of the newer spdk > features > > are complicating the integration. > > My question is, if this passthrough module is useful, wouldn't it be > better to > > maintain it as part of spdk so that we can catch issues as soon as = they > show > > up? > > We would be happy to help with maintaining this module, the module = with > is > > currently part of our CI with our "frozen" spdk version, but once > integrated > > into the newer version we choose, I'll add it to the CI our CI as w= ell. > > > > Shahar > > From: SPDK on behalf of Walker, Benja= min > > .walker(a)intel.com> > > Sent: Friday, February 2, 2018 11:43:58 PM > > To: spdk(a)lists.01.org > > Subject: Re: [SPDK] SPDK + user space appliance > > > > On Thu, 2018-02-01 at 08:29 +0000, Shahar Salzman wrote: > > > Hi Ben, > > > > > > Would you also like to take a look at the bdev_user module? > > > It still needs some patching (as some of the stuff is still hard > coded), but > > I > > > think we can get most of it cleaned up in a couple of days. > > > > > > In any case, is it the intention that the user write his own bdev > module, or > > > would this user appliance glue be a useful generic module? > > > > For existing storage stacks that serve block I/O, like the internal= s of > a SAN, > > the idea is that you write your own bdev module to forward I/O comi= ng > out of > > the > > SPDK bdev layer. Then you can use the SPDK iSCSI/NVMe-oF/vhost targ= ets > mostly > > as-is. > > > > In some cases, the actual iSCSI/NVMe-oF/vhost target applications w= on't > > integrate nicely directly into an existing storage application beca= use > they > > spawn their own threads and allocate their own memory. To support t= hat, > the > > libraries may be consumed directly instead of the applications > (lib/iscsi, > > lib/scsi, lib/nvmf, etc.). The libraries don't spawn any of their o= wn > threads, > > but instead rely on SPDK's abstractions in include/spdk/io_channel.= h. > See > > > > http://www.spdk.io/doc/concurrency.html > > > > We don't currently have a way to write a custom bdev module that re= sides > > outside > > of the SPDK source tree, but it's very possible to add support for = that. > But > > beyond that inconvenience (just drop your module in lib/bdev for no= w), > writing > > a > > bdev module is the recommended way of interacting with the bottom e= nd of > the > > SPDK bdev layer. I think that's what you really want to be doing in= your > code, > > from what I can tell. > > > > I hope that helps! > > _______________________________________________ > > SPDK mailing list > > SPDK(a)lists.01.org > > https://lists.01.org/mailman/listinfo/spdk > > > > _______________________________________________ > > SPDK mailing list > > SPDK(a)lists.01.org > > https://lists.01.org/mailman/listinfo/spdk > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk > > > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk _______________________________________________ SPDK mailing list SPDK(a)lists.01.org https://lists.01.org/mailman/listinfo/spdk --===============0267370145085625374== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl eHQvaHRtbDsgY2hhcnNldD1nYjIzMTIiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiIHN0eWxlPSJk aXNwbGF5Om5vbmU7Ij48IS0tIFAge21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7fSAtLT48 L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IGRpcj0ibHRyIj4KPGRpdiBpZD0iZGl2dGFnZGVmYXVsdHdy YXBwZXIiIHN0eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNh bGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IiBkaXI9Imx0ciI+CjxkaXYgaWQ9ImRpdnRhZ2Rl ZmF1bHR3cmFwcGVyIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IENh bGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWYsJnF1b3Q7RW1vamlGb250JnF1b3Q7LCZxdW90O0Fw cGxlIENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7LE5vdG9Db2xv ckVtb2ppLCZxdW90O1NlZ29lIFVJIFN5bWJvbCZxdW90OywmcXVvdDtBbmRyb2lkIEVtb2ppJnF1 b3Q7LEVtb2ppU3ltYm9sczsgZm9udC1zaXplOiAxMnB0OyIgZGlyPSJsdHIiPgo8cCBzdHlsZT0i bWFyZ2luLXRvcDowOyBtYXJnaW4tYm90dG9tOjAiPkhpIFNoYWhhciw8L3A+CjxwIHN0eWxlPSJt YXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MCI+PGJyPgo8L3A+CjxwIHN0eWxlPSJtYXJnaW4t dG9wOjA7IG1hcmdpbi1ib3R0b206MCI+VGhhbmsgeW91IGZvciB5b3VyIGludGVyZXN0aW5nIHBy b3Bvc2FsIGFuZCBleGN1c2UgbWUgZm9yIGN1dHRpbmcgaW4gdGhlIHRocmVhZC48L3A+CjxwIHN0 eWxlPSJtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MCI+RG8geW91IGhhdmUgYW55IHBsYW4g dG8gdXNlIHNpbWlsYXIgb3IgYmV0dGVyIG1lY2hhbmlzbSBiZXR3ZWVuIHlvdXIgYXBwbGljYXRp b24gYW5kIGFub3RoZXIgYmFja2VuZCBTUERLIGJkZXYgb3IgZGV2aWNlIGRyaXZlciAoZS5nLiBu dm1lLCBiZGV2X252bWUpID88L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0 b206MCI+PGJyPgo8L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MCI+ VGhhbmtzLDwvcD4KPHAgc3R5bGU9Im1hcmdpbi10b3A6MDsgbWFyZ2luLWJvdHRvbTowIj5TaHVo ZWk8L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MCI+PGJyPgo8L3A+ CjwvZGl2Pgo8aHIgdGFiaW5kZXg9Ii0xIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7IHdp ZHRoOjk4JSI+CjxkaXYgaWQ9ImRpdlJwbHlGd2RNc2ciIGRpcj0ibHRyIj48Zm9udCBjb2xvcj0i IzAwMDAwMCIgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQtc2l6ZToxMXB0 Ij48Yj6y7rP2yMs6PC9iPiBTUERLICZsdDtzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnJmd0OyCk rCBTaGFoYXIgU2Fsem1hbiAmbHQ7c2hhaGFyLnNhbHptYW5Aa2FtaW5hcmlvLmNvbSZndDsgpM60 +sDtpMfLzdDFPGJyPgo8Yj7LzdDFyNWVcjo8L2I+IDIwMTjE6jXUwjnI1SAxNjo0ODozNzxicj4K PGI+zfDPyDo8L2I+IHNwZGtAbGlzdHMuMDEub3JnPGJyPgo8Yj68/sP7OjwvYj4gWyFdUmU6IFtT UERLXSBTUERLICYjNDM7IHVzZXIgc3BhY2UgYXBwbGlhbmNlPC9mb250Pgo8ZGl2PiZuYnNwOzwv ZGl2Pgo8L2Rpdj4KPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVdpbmRvd3MtMTI1 MiI+CjxkaXYgZGlyPSJsdHIiPgo8ZGl2IGlkPSJ4X2RpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHls ZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IENhbGlicmksSGVsdmV0aWNhLHNh bnMtc2VyaWYsJnF1b3Q7RW1vamlGb250JnF1b3Q7LCZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1 b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7LE5vdG9Db2xvckVtb2ppLCZxdW90O1NlZ29l IFVJIFN5bWJvbCZxdW90OywmcXVvdDtBbmRyb2lkIEVtb2ppJnF1b3Q7LEVtb2ppU3ltYm9sczsg Zm9udC1zaXplOiAxMnB0OyIgZGlyPSJsdHIiPgo8cCBzdHlsZT0ibWFyZ2luLXRvcDowOyBtYXJn aW4tYm90dG9tOjAiPkhpIEJlbiw8L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7IG1hcmdpbi1i b3R0b206MCI+PGJyPgo8L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206 MCI+VG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24gZmlyc3QsIHRoZSBtYWluJm5ic3A7cmVhc29uIHRv IGhhdmUgYSBnZW5lcmljIHNwZGsgSU8mbmJzcDtBUEkgZm9yIHN0b3JhZ2UgYXBwbGlhbmNlIGlz IGJlaW5nIGFibGUgdG8gbWFpbnRhaW4gZnVuY3Rpb25hbGl0eSBvdmVyIHZlcnNpb25zLjwvcD4K PHAgc3R5bGU9Im1hcmdpbi10b3A6MDsgbWFyZ2luLWJvdHRvbTowIj5XZSBzdGFydGVkIHdpdGgg b3VyIG1vZHVsZSBpbiB2ZXJzaW9uIDE3LjA3LCBidXQgd2hlbiB3ZSBzdGFydGVkIGludGVncmF0 aW5nIGl0IGludG8gMTcuMDcuMDEsIGFuZCB0aGUgMTguWCB2ZXJzaW9uIHdlIHN0YXJ0ZWQgcnVu bmluZyBpbnRvIGlzc3Vlcy4gU2luY2UgdGhlIGJkZXYgbGF5ZXIgaXMgaW50ZXJuYWwgdG8gc3Bk aywgaXQgbWFrZXMgc2Vuc2UgdGhhdCBpdCB3aWxsCiBjaGFuZ2UgYm90aCBpbiBmdW5jdGlvbmFs aXR5IGFuZCBpbiBpbnRlcmZhY2UgZnJvbSB0aW1lIHRvIHRpbWUgZXNwZWNpYWxseSBpbiBOVk1l RiB3aGVyZSB0aGUgc3BlY2lmaWNhdGlvbnMgYXJlIHNvIHlvdW5nLCB3aGljaCBpcyB0aGUgcmVh c29uIHRoYXQgd2Ugd291bGQgbGlrZSB0byBoYXZlIGFuIEFQSSB3aGljaCBpcyBtb3JlIHN0YWJs ZSBvdmVyIHZlcnNpb25zLjwvcD4KPHAgc3R5bGU9Im1hcmdpbi10b3A6MDsgbWFyZ2luLWJvdHRv bTowIj5BcyBhIHN0b3JhZ2UgYXBwbGlhbmNlLCB0aGUgcmVxdWlyZW1lbnRzIGFyZSBmYWlybHkg c3RhYmxlLCBhbmQgYXQgbGVhc3QgaW4gdGhlIGNhc2Ugb2YgU0NTSSwgYSB0aGluICZxdW90O2ds dWUgQVBJJnF1b3Q7IGhhZCBiZWVuIGVub3VnaCB0byBnZXQgdGhlIGNvcmUgYXBwbGlhbmNlIHdv cmsgd2l0aCBtdWx0aXBsZSBmcm9udGVuZCB0YXJnZXRzIChlLmcuIGJvdGggU0NTSSBhbmQgaW50 ZXJuYWwKIHJlcGxpY2F0aW9uKS4gSSBiZWxpZXZlIHRoYXQgdGhlIHNhbWUgbWV0aG9kIGNhbiBi ZSBhcHBsaWVkIHRvIE5WTUVGLjwvcD4KPHAgc3R5bGU9Im1hcmdpbi10b3A6MDsgbWFyZ2luLWJv dHRvbTowIj5JbiBhZGRpdGlvbiwgSSB0aGluayB0aGF0IG91ciB1c2UgY2FzZSBpcyBub3QgdW5p cXVlIHRvIHRoZSB3YXkgd2UgYXJlIGludGVncmF0aW5nIHNwZGssIHdoaWNoIG1lYW5zIHRoYXQg dGhlIHdvcmsgd2UgcHV0IGluIGNhbiBiZW5lZml0IG90aGVyIHVzZXJzLCBhbmQgaG9wZWZ1bGx5 IHZpYSB0aGVpciBleHBlcmllbmNlLCB0aGUgY29kZSBjYW4gYmVjb21lIG1vcmUgcm9idXN0CiBh bmQgdXNlZnVsLjwvcD4KPHAgc3R5bGU9Im1hcmdpbi10b3A6MDsgbWFyZ2luLWJvdHRvbTowIj48 YnI+CjwvcD4KPHAgc3R5bGU9Im1hcmdpbi10b3A6MDsgbWFyZ2luLWJvdHRvbTowIj5TaGFoYXI8 L3A+CjwvZGl2Pgo8aHIgdGFiaW5kZXg9Ii0xIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7 IHdpZHRoOjk4JSI+CjxkaXYgaWQ9InhfZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250IGNv bG9yPSIjMDAwMDAwIiBmYWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdHlsZT0iZm9udC1zaXpl OjExcHQiPjxiPkZyb206PC9iPiBTUERLICZsdDtzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnJmd0 OyBvbiBiZWhhbGYgb2YgV2Fsa2VyLCBCZW5qYW1pbiAmbHQ7YmVuamFtaW4ud2Fsa2VyQGludGVs LmNvbSZndDs8YnI+CjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBNYXkgOCwgMjAxOCA4OjMwOjIwIFBN PGJyPgo8Yj5Ubzo8L2I+IHNwZGtAbGlzdHMuMDEub3JnPGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6 IFtTUERLXSBTUERLICYjNDM7IHVzZXIgc3BhY2UgYXBwbGlhbmNlPC9mb250Pgo8ZGl2PiZuYnNw OzwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ieF9Cb2R5RnJhZ21lbnQiPjxmb250IHNpemU9IjIi PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdCI+CjxkaXYgY2xhc3M9InhfUGxhaW5UZXh0Ij5P biBUdWUsIDIwMTgtMDUtMDggYXQgMDc6MzYgJiM0MzswMDAwLCBTaGFoYXIgU2Fsem1hbiB3cm90 ZTo8YnI+CiZndDsgSGkgSmltIGFuZCBCZW4sPGJyPgomZ3Q7IDxicj4KJmd0OyBGb3IgdGhlIHRo cmVhZGluZyBpc3N1ZSwgSSBhZ3JlZSB0aGF0IHRoZXJlIGlzIHNvbWV0aGluZyBub3QgdmVyeSBj bGVhbiBpbiB0aGU8YnI+CiZndDsgaW50ZXJmYWNlLCBhcyB0aGVyZSBpcyBhbiBhc3N1bXB0aW9u IG9uIGhvdyB0aGUgdXNlciBpbXBsZW1lbnRzIGl0LiBBcyBJIGRpZDxicj4KJmd0OyBpbiB0aGUg YmRldl91c2VyX2V4YW1wbGUsIHdlIGFsc28gdXNlIGEgcmluZyBpbiBvcmRlciB0byBwbGFjZSBh bGwgdGhlPGJyPgomZ3Q7IGluY29taW5nIElPIHdpdGhvdXQgZGVsYXlpbmcgdGhlIHJlYWN0b3Is IGFuZCB0aGVuIHVzZSBtdWx0aXBsZSBwb2xsZXJzIHRvPGJyPgomZ3Q7IGFjdHVhbGx5IGhhbmRs ZSB0aGUgSU8gKGRlZHVwbGljYXRpb24sIGNvbXByZXNzaW9uLCBIQSBldGMuKS4gVGhpcyBpcyB3 aHk8YnI+CiZndDsgdGhlcmUgYXJlIDIgZGlzdGluY3QgaW50ZXJmYWNlcyAtIHN1Ym1pdF9pbyBj YWxsYmFjaywgYW5kPGJyPgomZ3Q7IHRoZSBiZGV2X3VzZXJfc3VibWl0X2NvbXBsZXRpb24gaW50 ZXJmYWNlIHdoaWNoIChub3JtYWxseSkgaXMgY2FsbGVkIG9uPGJyPgomZ3Q7IGFub3RoZXIgdGhy ZWFkIChub3QgdGhlIG9yaWdpbmFsIHBvbGxlciksIGFuZCBwYXNzZWQgYmFjayB0byB0aGUgcmVh Y3RvciB2aWE8YnI+CiZndDsgdGhlIGNvbXBsZXRpb24gcXVldWUgb24gdGhlIGJkZXZfdXNlcl9p b19jaGFubmVsLCBhbmQgdGhlIHJlZ2lzdGVyZWQgcG9sbGVyPGJyPgomZ3Q7IHRocmVhZCB3aGlj aCB0YWtlcyBmcm9tIHRoZSB1c2VyIGNvbXBsZXRpb24gcXVldWUuPGJyPgomZ3Q7IERvIHlvdSB0 aGluayB0aGF0IGEgY2xlYW5lciBpbnRlcmZhY2Ugd291bGQgYmUgbW9kaWZ5aW5nIHRoZSBzdWJt aXRfaW88YnI+CiZndDsgY2FsbGJhY2sgdG8gYSBwb2xsX2lvIGludGVyZmFjZSB3aGljaCBjaGVj a3MgYSBiZGV2X3VzZXIgaW50ZXJuYWwgcmluZyBmb3IgSU8/PGJyPgomZ3Q7IE9yIGRvIHlvdSB0 aGluayB0aGF0IHRoZSBjdXJyZW50IGludGVyZmFjZSBpcyBPSyBwcm92aWRlZCBnb29kIGRvY3Vt ZW50YXRpb24/PGJyPgomZ3Q7IDxicj4KJmd0OyBSZWdhcmRpbmcgdGhlIHNwZGtfY2FsbF91bmFm ZmluaXRpemVkLCBJIGFtIGN1cnJlbnRseSB1c2luZyBzcGRrX2V2ZW50X2NhbGwgaW48YnI+CiZn dDsgb3JkZXIgdG8gcmVnaXN0ZXIgbXkgdm9sdW1lcywgSSBkb24ndCByZWFsbHkgbGlrZSB0aGlz IHNpbmNlIGl0IGZvcmNlcyBtZSB0bzxicj4KJmd0OyAoZXZlbnR1YWxseSkgYWRkIGFub3RoZXIg YXN5bmMgY2FsbGJhY2sgaW4gbXkgYXBwIHRvIHZlcmlmeSB0aGF0IGRldmljZTxicj4KJmd0OyBy ZWdpc3RyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGFuZCB0aGlzIGp1c3QgYWRkcyBtb3JlIGNvbmRp dGlvbnMsIGZ1dHVyZXMgZXRjLjxicj4KJmd0OyBpbiB0aGUgYXBwbGljYXRpb24pLiBJcyB0aGVy ZSBhIHdheSB0byBjYWxsIHNwZGsgaW50ZXJmYWNlcyBkaXJlY3RseSB3aXRoIGE8YnI+CiZndDsg JnF1b3Q7bm9uLXNwZGsmcXVvdDsgdGhyZWFkIChpLmUuIFRMUyBpcyBub3QgaW5pdGlhbGl6ZWQp Pzxicj4KPGJyPgpJJ20gbm90IHNvIG11Y2ggY29uY2VybmVkIHlldCB3aXRoIHRoZSBpbnRlcmZh Y2UgeW91J3ZlIGRlZmluZWQsIGJ1dCByYXRoZXI8YnI+CnVuZGVyc3RhbmRpbmcgdGhlIHdob2xl IGFwcHJvYWNoIGF0IGEgaGlnaCBsZXZlbC4gVGhlIFNQREsgYmRldiBsYXllciBpczxicj4KZGVz aWduZWQgZm9yIGN1c3RvbSBiZGV2IG1vZHVsZXMgdG8gYmUgYWRkZWQsIHNvIG15IHByaW1hcnkg cXVlc3Rpb24gaXMgd2h5PGJyPgp3cml0ZSBhIGdlbmVyaWMgYmRldl91c2VyIG1vZHVsZSBhcyBv cHBvc2VkIHRvIHdyaXRpbmcgYSAmcXVvdDt5b3VyIGN1c3RvbSBzdG9yYWdlPGJyPgpiYWNrZW5k JnF1b3Q7IG1vZHVsZT8gSSB0aGluayB0aGlzIGlzIHRoZSBrZXkgcGllY2UsIGFuZCB1bmRlcnN0 YW5kaW5nIHRoZSBwcm9jZXNzPGJyPgp5b3Ugd2VudCB0aHJvdWdoIGFzIHlvdSBkZXNpZ25lZCB0 aGlzIHdpbGwgcHJvYmFibHkgeWllbGQgYSB3aG9sZSBidW5jaCBvZiBnb29kPGJyPgppbXByb3Zl bWVudHMgdG8gdGhlIGN1cnJlbnQgYmRldiBtb2R1bGUgc3lzdGVtLjxicj4KPGJyPgpUaGFua3Ms PGJyPgpCZW48YnI+Cjxicj4KPGJyPgomZ3Q7IDxicj4KJmd0OyBIb3BlIHRoaXMgYW5zd2VycyB0 aGUgcXVlc3Rpb25zLDxicj4KJmd0OyBTaGFoYXI8YnI+Cjxicj4KPGJyPgo8YnI+CiZndDsgRnJv bTogU1BESyAmbHQ7c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyZndDsgb24gYmVoYWxmIG9mIEhh cnJpcywgSmFtZXMgUjxicj4KJmd0OyAmbHQ7amFtZXMuci5oYXJyaXNAaW50ZWwuY29tJmd0Ozxi cj4KJmd0OyBTZW50OiBNb25kYXksIE1heSA3LCAyMDE4IDk6MTg6MjAgUE08YnI+CiZndDsgVG86 IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPgomZ3Q7IFN1YmplY3Q6IFJl OiBbU1BES10gU1BESyAmIzQzOyB1c2VyIHNwYWNlIGFwcGxpYW5jZTxicj4KJmd0OyZuYnNwOyA8 YnI+CiZndDsgVGhlcmUgYXJlIGFsc28gY2FsbHMgc3VjaCBhcyBzcGRrX2NhbGxfdW5hZmZpbml0 aXplZCgpIGFuZDxicj4KJmd0OyBzcGRrX3VuYWZmaW5pdGl6ZV90aHJlYWQoKSB3aGljaCBoYXZl IGJlZW4gYWRkZWQgdG8gZW5hYmxlIGNhc2VzIHdoZXJlIGEgYmRldjxicj4KJmd0OyBtb2R1bGUg bWF5IG5lZWQgdG8gc3Bhd24gbm9uLXBvbGxpbmcgdGhyZWFkcyBhbmQgZG9uoa90IHdhbnQgdGhv c2UgdGhyZWFkcyB0bzxicj4KJmd0OyBpbmhlcml0IHRoZSBhZmZpbml0eSBvZiB0aGUgY2FsbGlu ZyB0aHJlYWQuJm5ic3A7IFRoZSBTUERLIHJiZCBtb2R1bGUgY3VycmVudGx5PGJyPgomZ3Q7IHVz ZXMgdGhlc2UgKHNlZSBnaXQgY29tbWl0IGZhNTIwNmM0KSBzaW5jZSByYmRfb3BlbiBpcyBhIGJs b2NraW5nIGNhbGwuJm5ic3A7IChOb3RlPGJyPgomZ3Q7IHRoYXQgbGlicmJkIGRvZXMgbm93IHN1 cHBvcnQgcmJkX2Fpb19vcGVuIHdoaWNoIGlzIGJldHRlciBzdWl0ZWQgZm9yIFNQREsuKTxicj4K Jmd0OyA8YnI+CiZndDsgLUppbTxicj4KJmd0OyA8YnI+CiZndDsgPGJyPgomZ3Q7IE9uIDUvNy8x OCwgMTE6MDIgQU0sICZxdW90O1NQREsgb24gYmVoYWxmIG9mIFdhbGtlciwgQmVuamFtaW4mcXVv dDsgJmx0O3NwZGstYm91bmNlc0BsaXN0cy48YnI+CiZndDsgMDEub3JnIG9uIGJlaGFsZiBvZiBi ZW5qYW1pbi53YWxrZXJAaW50ZWwuY29tJmd0OyB3cm90ZTo8YnI+CiZndDsgPGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEhpIFNoYWhhciw8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRoYW5rIHlvdSBmb3Ig c3VibWl0dGluZyB0aGUgcGF0Y2guIEkndmUgbG9va2VkIHRocm91Z2ggaXQgaW4gZGV0YWlsIGFu ZCBJPGJyPgomZ3Q7IHRoaW5rPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEkgdW5k ZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIGNvZGUsIGJ1dCBJJ20gZ29pbmcgdG8gZXhwbGFp biBpdCBiYWNrIHRvPGJyPgomZ3Q7IHlvdTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyBzbyB5b3UgY2FuIGNvcnJlY3QgbWUgd2hlcmUgSSdtIHdyb25nLjxicj4KJmd0OyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgSSB0aGlu ayB0aGlzIGNvZGUgc29sdmVzIHR3byBkaXN0aW5jdCBwcm9ibGVtczo8YnI+CiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEpIFlv dSBuZWVkIHRvIGZvcndhcmQgSS9PIG91dCBvZiB0aGUgYmRldiBsYXllciB0byBzb21lIGN1c3Rv bSBiYWNrZW5kLDxicj4KJmd0OyBhbmQgeW91PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IHdhbnQgdGhlIGNvZGUgdGhhdCBkb2VzIHRoYXQgdG8gbGl2ZSBvdXRzaWRlIG9mIHRoZSBT UERLIHJlcG9zaXRvcnkuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxicj4KJmd0 OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAyKSBZb3VyIGN1c3RvbSBiYWNrLWVuZCBsaWJyYXJ5 IGlzbid0IHN1aXRhYmxlIGZvciB1c2UgaW4gYSBydW4tdG8tPGJyPgomZ3Q7IGNvbXBsZXRpb248 YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbW9kZWwuIEJ5IHRoYXQgSSBtZWFuIHRo YXQgeW91IGNhbid0IGp1c3QgY2FsbCB5b3VyIGxpYnJhcnkgZGlyZWN0bHkgb248YnI+CiZndDsg dGhlPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHRocmVhZCB0aGF0IG9yaWdpbmFs bHkgcmVjZWl2ZXMgdGhlIHNwZGtfYmRldl9pbyByZXF1ZXN0IGJlY2F1c2UgeW91cjxicj4KJmd0 OyBsaWJyYXJ5PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGVpdGhlciBibG9ja3Mg b3IgZ2VuZXJhbGx5IHRha2VzIHRvbyBsb25nIHRvIHJldHVybiBmcm9tIHRoZSBzdWJtaXNzaW9u PGJyPgomZ3Q7IGNhbGw8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKG1heWJlIGl0 IGlzIGRvaW5nIGlubGluZSBjb21wcmVzc2lvbiBvciBzb21ldGhpbmcpLiBJbnN0ZWFkLCB5b3Ug bmVlZCB0bzxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzaHV0dGxlIHRob3NlIHJl cXVlc3RzIG9mZiB0byBzZXBhcmF0ZSB0aHJlYWRzIGZvciBoYW5kbGluZy48YnI+CiZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEFz IGZhciBhcyBwb2ludCAjMSwgdG9kYXkgdGhlIFNQREsgYnVpbGQgc3lzdGVtIGRvZXMgbm90IG5p Y2VseTxicj4KJmd0OyBhY2NvbW1vZGF0ZSBiZGV2PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IG1vZHVsZXMgd2hvc2UgY29kZSBsaXZlcyBvdXRzaWRlIG9mIFNQREsuIFNQREsgZXhw ZWN0cyB0aGVtIHRvIGJlIGluPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGxpYi9i ZGV2LyZsdDttb2R1bGVfbmFtZSZndDsuIEhvd2V2ZXIsIHRoYXQncyBhIGZhaXJseSBzdHJhaWdo dGZvcndhcmQgY2hhbmdlIHRvPGJyPgomZ3Q7IHRoZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyBidWlsZCBzeXN0ZW0gYW5kIGl0J3Mgb25lIHdlJ3ZlIGJlZW4gaW50ZW5kaW5nIHRv IG1ha2UgZm9yIHNvbWUgdGltZS48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPGJy PgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEZvciBwb2ludCAjMiwgdGhpcyBpcyBsaWtl bHkgdGhlIGNhc2UgZm9yIGEgbGFyZ2UgbnVtYmVyIG9mIHN0b3JhZ2UgYmFjay08YnI+CiZndDsg ZW5kcyw8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYnV0IEkgdGhpbmsgdGhlIHBy b3BlciB3YXkgdG8gc29sdmUgaXQgaXMgcHJvYmFibHkgYmFjay1lbmQgc3BlY2lmaWMgYW5kPGJy PgomZ3Q7IG5vdDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBnZW5lcmFsIHB1cnBv c2UuIEFzIGEgY291bnRlci1wb2ludCwgU1BESyBhbHJlYWR5IGludGVncmF0ZXMgd2l0aCBhIG51 bWJlcjxicj4KJmd0OyBvZjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0aGlyZC1w YXJ0eSBzdG9yYWdlIGJhY2stZW5kcyB0b2RheSAoQ2VwaCBSQkQsIGxpYmlzY3NpLCBsaWJhaW8s IGV0Yy4pIGFuZDxicj4KJmd0OyBub25lPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IG9mIHRob3NlIGVuZGVkIHVwIG5lZWRpbmcgdG8gcGFzcyBtZXNzYWdlcyB0byBvdGhlciB0aHJl YWRzLiBUaGV5IGFsbDxicj4KJmd0OyBzdXBwb3J0PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLCB0aG91Z2guIEkgY291bGQgaW1hZ2luZSB3 cml0aW5nIGEgYmRldiBtb2R1bGU8YnI+CiZndDsgdGhhdDxicj4KJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyB1bHRpbWF0ZWx5IG1ha2VzIFBPU0lYIHByZWFkdiBjYWxscywgZm9yIGluc3Rh bmNlLiBUaGF0IHdvdWxkIG5lZWQgdG8gYmU8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgaW1wbGVtZW50ZWQgd2l0aCBhIHRocmVhZCBwb29sIGFuZCBlYWNoIGJkZXZfaW8gZ2V0cyBm dW5uZWxlZCBvZmYgdG8gYTxicj4KJmd0OyB0aHJlYWQgaW48YnI+CiZndDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgdGhlIHBvb2wgdG8gcGVyZm9ybSB0aGUgYmxvY2tpbmcgb3BlcmF0aW9uLjxi cj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgT2sgLSBJIGV4cGxhaW5lZCB3aGF0IEkgdGhpbmsgSSdtIHVuZGVyc3RhbmRpbmcu IE5vdyB0ZWxsIG1lIHdoZXJlIEkgd2VudDxicj4KJmd0OyB3cm9uZzxicj4KJmd0OyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyA6KTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YnI+ CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVGhhbmtzLDxicj4KJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBCZW48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPGJyPgom Z3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE9uIFN1biwgMjAxOC0wNS0wNiBhdCAxMDozMiAm IzQzOzAwMDAsIFNoYWhhciBTYWx6bWFuIHdyb3RlOjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyAmZ3Q7IEhpLDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IDxi cj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IEkgcHVzaGVkIHRoZSBjb2RlIGZv ciByZXZpZXcsIHRoYW5rcyBEYW5pZWwgZm9yIHRoZSBoZWxwLjxicj4KJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyAmZ3Q7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7 IEluIGEgbnV0c2hlbGw6PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgLSBi ZGV2X3VzZXIgLSBhbiBBUEkgZm9yIGEgdXNlciBhcHBsaWFuY2UgdG8gdXNlIHNwZGsgYXMgYW4g aVNDU0kvTlZNZUY8YnI+CiZndDsgdGFyZ2V0PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZndDsgLSBiZGV2X3VzZXJfZXhhbXBsZSAtIHJlZmVyZW5jZSBhcHBsaWNhdGlvbjxicj4K Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IC0gVGhlIEFQSSByZWxpZXMgb24gcmlu Z3MgaW4gb3JkZXIgdG8gc3VibWl0L2NvbXBsZXRlIElPczxicj4KJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyAmZ3Q7IC0gVXNlciBhcHBsaWFuY2UgcmVnaXN0ZXJzIGNhbGxiYWNrcyBmb3Ig c3VibWl0X2lvIChzaG91bGQgd2UgaGF2ZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyAmZ3Q7IHJlYWQvd3JpdGUvb3RoZXIgaW5zdGVhZD8pPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7ICZndDsgLSBVc2VyIGFwcGxpYW5jZSByZWdpc3RlcnMgaXRzIGRldmljZXMgc28g dGhhdCB0aGV5IG1heSBiZSBhZGRlZCB0byBhbjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAmZ3Q7IGV4aXN0aW5nIG5hbWVzcGFjZSAoSSBhbSB1c2luZyBSUEMgdG8gZG8gdGhlIG1h bmFnZW1lbnQpPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgPGJyPgomZ3Q7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgVGhhbmtzLDxicj4KJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyAmZ3Q7IFNoYWhhcjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyAmZ3Q7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IDxicj4KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IEZyb206IFNQREsgJmx0O3NwZGstYm91bmNlc0Bs aXN0cy4wMS5vcmcmZ3Q7IG9uIGJlaGFsZiBvZiBWZXJrYW1wLCBEYW5pZWw8YnI+CiZndDsgJmx0 O2RhbmllbC52ZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IHJrYW1wQGlu dGVsLmNvbSZndDs8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBTZW50OiBU aHVyc2RheSwgTWF5IDMsIDIwMTggODo1MCBQTTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAmZ3Q7IFRvOiBTdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdDxicj4KJmd0 OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IFN1YmplY3Q6IFJlOiBbU1BES10gU1BESyAm IzQzOyB1c2VyIHNwYWNlIGFwcGxpYW5jZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyAmZ3Q7Jm5ic3A7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IEhpIFNo YWhhciw8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZn dDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBUaGUgdGFyZ2V0IGJyYW5jaCBmb3IgdGhl IHB1c2ggc2hvdWxkIGJlIKGucmVmcy9mb3IvbWFzdGVyoa8sIG5vdCChrm1hc3RlcqGvPGJyPgom Z3Q7IKhDIGlmPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgeW91IGNvbmZp Z3VyZWQgYSByZW1vdGUgYXMgc3BlY2lmaWVkIGluIDxhIGNsYXNzPSJPV0FBdXRvTGluayIgaWQ9 IkxQbG5rODQ0MjUxIiBocmVmPSJodHRwczovL2NsaWNrdGltZS5zeW1hbnRlYy5jb20vYS8xL3Jo LTNWSFpZcHVlODM2V0w3eGs2UGVOajA3VWFzYS1mM21rMXFGLURsVDg9P2Q9SVo0YWd4WF9acHFQ a1dpTm5UTnJqX05CczJGaHZWaEwwQzR1aTd1c05GYndXdmFlRkxfNnh4RWlKc29Jc3FRN1Y1MmNX YVpGVkFDTnJfMWg3akxXYkF3RnNJbHVkeHF2b3VMZVI3TGxMT2ZRMGJGbFBVcHZGWjZfUE15M0Nm V2JUZU5zYkFEdElDSEN6X1BPVENiYUZwTnN1STJybHFCOHB1dnVaSlRQM094NDZlZnF3MUZya1Mw Y05Cemc4ZC1FdVBya3dxOU8wWl9YNUpXZlJJZXlDOE9kUTBMZ1pibVlMaEh2NzRFZjZjUE5xU2x5 TE5IaWMwSmwzSWNIM3l5Wm9KOHlXOF9TOVlXR0M4S2N0cW9yclU5eWREWTVMeGFSaXZYeXI3M29Q VzB6Q2k3TF9GX3J1aEZMbUtOTExxR3lUdUlMWG5TNG9ZcjNDUW4zZkpjOU9DbnVWa1U0cVBuQlha TjY1ZUxHeERWdHNaaWZ5c1k2TmNuXzl2QmU5YldvTXFwbVg0UHZnSFJwc3ozMkZTUEtpSEpkVS1x Tk5pR2lHLUFZSWdERWpPSXcmYW1wO3U9aHR0cCUzQSUyRiUyRnd3dy5zcGRrLmlvJTJGZGV2ZWxv cG1lbnQlMkYiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj4KaHR0cDovL3d3dy5zcGRrLmlvL2RldmVs b3BtZW50LzwvYT48YnI+CiZndDsgaXQ8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg Jmd0OyBzaG91bGQgbG9vayBsaWtlOjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAm Z3Q7Jm5ic3A7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IFtyZW1vdGUg JnF1b3Q7cmV2aWV3JnF1b3Q7XTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7 Jm5ic3A7Jm5ic3A7IHVybCA9IDxhIGNsYXNzPSJPV0FBdXRvTGluayIgaWQ9IkxQbG5rNzY0Mjg2 IiBocmVmPSJodHRwczovL2NsaWNrdGltZS5zeW1hbnRlYy5jb20vYS8xL09hUFZ1VnIxR19LWHg4 MmJwV3E2cXY0NXhjenc1R2JIWFh2NzA4UkR1WmM9P2Q9SVo0YWd4WF9acHFQa1dpTm5UTnJqX05C czJGaHZWaEwwQzR1aTd1c05GYndXdmFlRkxfNnh4RWlKc29Jc3FRN1Y1MmNXYVpGVkFDTnJfMWg3 akxXYkF3RnNJbHVkeHF2b3VMZVI3TGxMT2ZRMGJGbFBVcHZGWjZfUE15M0NmV2JUZU5zYkFEdElD SEN6X1BPVENiYUZwTnN1STJybHFCOHB1dnVaSlRQM094NDZlZnF3MUZya1MwY05Cemc4ZC1FdVBy a3dxOU8wWl9YNUpXZlJJZXlDOE9kUTBMZ1pibVlMaEh2NzRFZjZjUE5xU2x5TE5IaWMwSmwzSWNI M3l5Wm9KOHlXOF9TOVlXR0M4S2N0cW9yclU5eWREWTVMeGFSaXZYeXI3M29QVzB6Q2k3TF9GX3J1 aEZMbUtOTExxR3lUdUlMWG5TNG9ZcjNDUW4zZkpjOU9DbnVWa1U0cVBuQlhaTjY1ZUxHeERWdHNa aWZ5c1k2TmNuXzl2QmU5YldvTXFwbVg0UHZnSFJwc3ozMkZTUEtpSEpkVS1xTk5pR2lHLUFZSWdE RWpPSXcmYW1wO3U9aHR0cHMlM0ElMkYlMkZyZXZpZXcuZ2Vycml0aHViLmlvJTJGc3BkayUyRnNw ZGsiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj4KaHR0cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlvL3Nw ZGsvc3BkazwvYT48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyZu YnNwOyBwdXNoID0gSEVBRDpyZWZzL2Zvci9tYXN0ZXI8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0 OyBGcm9tOiBTUERLIFs8YSBjbGFzcz0iT1dBQXV0b0xpbmsiIGlkPSJMUGxuazEyODUyMSIgaHJl Zj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciIHByZXZpZXdyZW1vdmVkPSJ0cnVl Ij5tYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT5dIE9uIEJlaGFsZiBPZiBTaGFo YXI8YnI+CiZndDsgU2Fsem1hbjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7 IFNlbnQ6IFRodXJzZGF5LCBNYXkgMywgMjAxOCAxOjAwIEFNPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICZndDsgVG86IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0 ICZsdDtzcGRrQGxpc3RzLjAxLm9yZyZndDs8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgJmd0OyBTdWJqZWN0OiBSZTogW1NQREtdIFNQREsgJiM0MzsgdXNlciBzcGFjZSBhcHBsaWFu Y2U8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZndDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBIaSBCZW4sPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICZndDsgSSBoYXZlIHRoZSBjb2RlIHJlYWR5IGZvciByZXZpZXcgKHNwZGsvbWFzdGVyIG9uIGRw ZGsvMTguMDIpLCBidXQgSSBkbzxicj4KJmd0OyBub3Q8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgJmd0OyBoYXZlIHB1c2ggcmlnaHRzIGZvciBnZXJyaXRodWI6PGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgc2hhaGFyLnNhbHptYW5Ac2hhaGFycy12bTp+L0th bWluYXJpby9naXQvc3BkayQgZ2l0IHB1c2ggc3Bkay1yZXZpZXc8YnI+CiZndDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgJmd0OyBIRUFEOm1hc3Rlcjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyAmZ3Q7IFBhc3N3b3JkIGZvciAnPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBs bms2MTEwMDciIGhyZWY9Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNvbS9hLzEvdWQxaWZl ZGc0QTJUT0lXbEVQbzNrUkZaNjRCSEw2a1VtWjNMa3JENDlRRT0/ZD1JWjRhZ3hYX1pwcVBrV2lO blROcmpfTkJzMkZodlZoTDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lzcVE3VjUyY1dhWkZW QUNOcl8xaDdqTFdiQXdGc0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZaNl9QTXkzQ2ZXYlRl TnNiQUR0SUNIQ3pfUE9UQ2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVmcXcxRnJrUzBjTkJ6 ZzhkLUV1UHJrd3E5TzBaX1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVmNmNQTnFTbHlMTkhp YzBKbDNJY0gzeXlab0o4eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJpdlh5cjczb1BXMHpD aTdMX0ZfcnVoRkxtS05MTHFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZrVTRxUG5CWFpONjVl TEd4RFZ0c1ppZnlzWTZOY25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQS2lISmRVLXFOTmlH aUctQVlJZ0RFak9JdyZhbXA7dT1odHRwcyUzQSUyRiUyRlNoYWhhclNhbHptYW4tSyU0MHJldmll dy5nZXJyaXRodWIuaW8iIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj5odHRwczovL1NoYWhhclNhbHpt YW4tS0ByZXZpZXcuZ2Vycml0aHViLmlvPC9hPic6Cjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyAmZ3Q7IENvdW50aW5nIG9iamVjdHM6IDEwOSwgZG9uZS48YnI+CiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyMi8yMiks IGRvbmUuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgV3JpdGluZyBvYmpl Y3RzOiAxMDAlICgyMi8yMiksIDguNzAgS2lCIHwgMCBieXRlcy9zLCBkb25lLjxicj4KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IFRvdGFsIDIyIChkZWx0YSAxNCksIHJldXNlZCAw IChkZWx0YSAwKTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IHJlbW90ZTog UmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTQvMTQpPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZndDsgcmVtb3RlOiBCcmFuY2ggcmVmcy9oZWFkcy9tYXN0ZXI6PGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgcmVtb3RlOiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRv IHBlcmZvcm0gdGhpcyBvcGVyYXRpb24uPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICZndDsgcmVtb3RlOiBUbyBwdXNoIGludG8gdGhpcyByZWZlcmVuY2UgeW91IG5lZWQgJ1B1c2gn IHJpZ2h0cy48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyByZW1vdGU6IFVz ZXI6IFNoYWhhclNhbHptYW4tSzxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7 IHJlbW90ZTogUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gYW5kIGNvbnRhY3QgYW4gYWRt aW5pc3RyYXRvcjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IHJlbW90ZTog aWYgeW91IGZlZWwgdGhlIGNvbmZpZ3VyYXRpb24gaXMgaW5jb3JyZWN0PGJyPgomZ3Q7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgcmVtb3RlOiBQcm9jZXNzaW5nIGNoYW5nZXM6IHJlZnM6 IDEsIGRvbmUmbmJzcDsmbmJzcDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZndDsgVG8gPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbms2NDU1OTgiIGhyZWY9 Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNvbS9hLzEvQ3owVXc5RW4xMmVOMEZZb1hkOWlh d0dTc1JWSUIyempQZ0dzTzROSExMVT0/ZD1JWjRhZ3hYX1pwcVBrV2lOblROcmpfTkJzMkZodlZo TDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lzcVE3VjUyY1dhWkZWQUNOcl8xaDdqTFdiQXdG c0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZaNl9QTXkzQ2ZXYlRlTnNiQUR0SUNIQ3pfUE9U Q2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVmcXcxRnJrUzBjTkJ6ZzhkLUV1UHJrd3E5TzBa X1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVmNmNQTnFTbHlMTkhpYzBKbDNJY0gzeXlab0o4 eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJpdlh5cjczb1BXMHpDaTdMX0ZfcnVoRkxtS05M THFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZrVTRxUG5CWFpONjVlTEd4RFZ0c1ppZnlzWTZO Y25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQS2lISmRVLXFOTmlHaUctQVlJZ0RFak9JdyZh bXA7dT1odHRwcyUzQSUyRiUyRlNoYWhhclNhbHptYW4tSyU0MHJldmlldy5nZXJyaXRodWIuaW8l MkZhJTJGc3BkayUyRnNwZGsiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj4KaHR0cHM6Ly9TaGFoYXJT YWx6bWFuLUtAcmV2aWV3LmdlcnJpdGh1Yi5pby9hL3NwZGsvc3BkazwvYT48YnI+CiZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyAhIFtyZW1vdGUgcmVqZWN0ZWRdIEhFQUQg LSZndDsgbWFzdGVyIChwcm9oaWJpdGVkIGJ5IEdlcnJpdDogcmVmIHVwZGF0ZTxicj4KJmd0OyBh Y2Nlc3M8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBkZW5pZWQpPGJyPgom Z3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgZXJyb3I6IGZhaWxlZCB0byBwdXNoIHNv bWUgcmVmcyB0byAnPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbms4MTQ2ODUiIGhyZWY9 IiIgcHJldmlld3JlbW92ZWQ9InRydWUiPjwvYT5odHRwczovL2NsaWNrdGltZS5zeW1hbnRlYy5j b20vYS8xL2lQQU1maTlKVGdyQ3NCcGotM2RUT2l3alJnNFRPMFI5cC01MzJ6ZnZUSm89P2Q9SVo0 YWd4WF9acHFQa1dpTm5UTnJqX05CczJGaHZWaEwwQzR1aTd1c05GYndXdmFlRkxfNnh4RWlKc29J c3FRN1Y1MmNXYVpGVkFDTnJfMWg3akxXYkF3RnNJbHVkeHF2b3VMZVI3TGxMT2ZRMGJGbFBVcHZG WjZfUE15M0NmV2JUZU5zYkFEdElDSEN6X1BPVENiYUZwTnN1STJybHFCOHB1dnVaSlRQM094NDZl ZnF3MUZya1MwY05Cemc4ZC1FdVBya3dxOU8wWl9YNUpXZlJJZXlDOE9kUTBMZ1pibVlMaEh2NzRF ZjZjUE5xU2x5TE5IaWMwSmwzSWNIM3l5Wm9KOHlXOF9TOVlXR0M4S2N0cW9yclU5eWREWTVMeGFS aXZYeXI3M29QVzB6Q2k3TF9GX3J1aEZMbUtOTExxR3lUdUlMWG5TNG9ZcjNDUW4zZkpjOU9DbnVW a1U0cVBuQlhaTjY1ZUxHeERWdHNaaWZ5c1k2TmNuXzl2QmU5YldvTXFwbVg0UHZnSFJwc3ozMkZT UEtpSEpkVS1xTk5pR2lHLUFZSWdERWpPSXcmYW1wO3U9aHR0cHMlM0ElMkYlMkZTaGFoYXJTYWx6 bWFuLUslNDByZXZpZXcuZ2Vycmk8YnI+CiZndDsgdGh1Yi5pPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7ICZndDsgby9hL3NwZGsvc3Bkayc8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0 OyBBbSBJIGRvaW5nIHNvbWV0aGluZyBpbmNvcnJlY3QsIG9yIGlzIHRoaXMganVzdCBhIHBlcm1p c3Npb24gaXNzdWU/PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsmbmJzcDsg PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgVGhhbmtzLDxicj4KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IFNoYWhhcjxicj4KJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyAmZ3Q7IEZyb206IFNQREsgJmx0O3NwZGstYm91bmNlc0BsaXN0cy4wMS5vcmcm Z3Q7IG9uIGJlaGFsZiBvZiBTaGFoYXIgU2Fsem1hbjxicj4KJmd0OyAmbHQ7c2hhaGFyLnNhbDxi cj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IHptYW5Aa2FtaW5hcmlvLmNvbSZn dDs8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBTZW50OiBXZWRuZXNkYXks IEFwcmlsIDI1LCAyMDE4IDk6MDI6MzggQU08YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgJmd0OyBUbzogU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+CiZndDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBTdWJqZWN0OiBSZTogW1NQREtdIFNQREsgJiM0 MzsgdXNlciBzcGFjZSBhcHBsaWFuY2U8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg Jmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBIaSBCZW4s PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgVGhlIGNvZGUgaXMgY3VycmVudGx5IHdvcmtpbmcg b24gdjE3LjA3LCB3ZSBhcmUgcGxhbm5pbmcgb24gYnVtcGluZyB0aGU8YnI+CiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgJmd0OyB2ZXJzaW9uIHRvIG9uZSBvZiB0aGUgbGF0ZXN0IHN0YWJs ZSB2ZXJzaW9ucyAoMTguMDE/KSAmIzQzOyBtYXN0ZXIuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7ICZndDsgSXQgd2lsbCB0YWtlIG1lIChob3BlZnVsbHkpIGEgZmV3IGRheXMgdG8g dXBkYXRlIHRoZSBjb2RlIGFuZCBoYXZlIG91cjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAmZ3Q7IGludGVybmFsIENJIHN0YXJ0IHJ1bm5pbmcgb24gdGhpcyB2ZXJzaW9uLCBub3Qg c3VyZSBpdCB3b3VsZCBiZSB1c2VmdWwsPGJyPgomZ3Q7IGJ1dCBJPGJyPgomZ3Q7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7ICZndDsgY2FuIGdldCBvdXIgd29ya2luZyAxNy4wNyBjb2RlICgmIzQz OyByZWZlcmVuY2UgYXBwbGljYXRpb24pIGZvciByZXZpZXcgbXVjaDxicj4KJmd0OyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IGZhc3Rlci48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgJmd0OyBXaGF0IGlzIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24/PGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7ICZndDsgU2hhaGFyPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZn dDsgRnJvbTogU1BESyAmbHQ7c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyZndDsgb24gYmVoYWxm IG9mIFdhbGtlciwgQmVuamFtaW48YnI+CiZndDsgJmx0O2JlbmphbWluPGJyPgomZ3Q7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgLndhbGtlckBpbnRlbC5jb20mZ3Q7PGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgU2VudDogVHVlc2RheSwgQXByaWwgMjQsIDIwMTgg NzoxOToxMiBQTTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IFRvOiBTdG9y YWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyAmZ3Q7IFN1YmplY3Q6IFJlOiBbU1BES10gU1BESyAmIzQzOyB1c2VyIHNwYWNlIGFw cGxpYW5jZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7Jm5ic3A7IDxicj4K Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IEhpIFNoYWhhciw8YnI+CiZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgJmd0OyBXb3VsZCB5b3UgYmUgd2lsbGluZyB0byBzdWJtaXQgeW91ciBiZGV2IG1v ZHVsZSBhcyBhIHBhdGNoIG9uIEdlcnJpdEh1Yj88YnI+CiZndDsgVGhhdDxicj4KJmd0OyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IHdheSBldmVyeW9uZSBjYW4gdGFrZSBhIGxvb2sgYW5k IHByb3ZpZGUgZmVlZGJhY2suIElmIHlvdSBkb26hr3Qgd2FudCBpdDxicj4KJmd0OyB0byBydW48 YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyB0aGUgdGVzdHMsIHlvdSBjYW4g cHV0IFtSRkNdIGFuZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb21taXQgbWVzc2FnZS48YnI+CiZn dDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgJmd0OyBUaGFua3MsPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZndDsgQmVuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsmbmJzcDsg PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgRnJvbTogU1BESyBbPGEgY2xh c3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbms0MjY5MzMiIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5j ZXNAbGlzdHMuMDEub3JnIiBwcmV2aWV3cmVtb3ZlZD0idHJ1ZSI+bWFpbHRvOnNwZGstYm91bmNl c0BsaXN0cy4wMS5vcmc8L2E+XSBPbiBCZWhhbGYgT2YgU2hhaGFyPGJyPgomZ3Q7IFNhbHptYW48 YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBTZW50OiBNb25kYXksIEFwcmls IDIzLCAyMDE4IDg6NDUgQU08YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBU bzogc3Bka0BsaXN0cy4wMS5vcmc8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0 OyBTdWJqZWN0OiBSZTogW1NQREtdIFNQREsgJiM0MzsgdXNlciBzcGFjZSBhcHBsaWFuY2U8YnI+ CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBIaSBCZW4sPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsg QnVtcGluZyB0aGlzIHRocmVhZCBzaW5jZSBJJ3ZlIGJlZW4gaGF2aW5nIHNvbWUgbmV3IHRob3Vn aHRzIG9uIHRoZTxicj4KJmd0OyBpc3N1ZSBub3c8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgJmd0OyB0aGF0IHdlIGFyZSBzdGFydGluZyBpbnRlZ3JhdGlvbiB3aXRoIG5ld2VyIHNw ZGsgdmVyc2lvbnMuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgVW5mb3J0 dW5hdGVseSB0aGUgbWVyZ2UgaXNuJ3QgYXMgc21vb3RoIGFzIEknZCBsaWtlIGl0IHRvIGJlIHNp bmNlIHRoZTxicj4KJmd0OyBiZGV2PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZn dDsgbW9kdWxlIGlzIHByZXR0eSB0aWdodGx5IGludGVncmF0ZWQgaW50byBzcGRrLCBwZXJoYXBz IHdlIG1hZGUgc29tZTxicj4KJmd0OyBmYWxzZTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAmZ3Q7IGFzc3VtcHRpb25zIHdyaXRpbmcgdGhlIG1vZHVsZSwgYnV0IGl0IHNlZW1zIHNv bWUgb2YgdGhlIG5ld2VyIHNwZGs8YnI+CiZndDsgZmVhdHVyZXM8YnI+CiZndDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgJmd0OyBhcmUgY29tcGxpY2F0aW5nIHRoZSBpbnRlZ3JhdGlvbi48YnI+ CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBNeSBxdWVzdGlvbiBpcywgaWYgdGhp cyBwYXNzdGhyb3VnaCBtb2R1bGUgaXMgdXNlZnVsLCB3b3VsZG4ndCBpdCBiZTxicj4KJmd0OyBi ZXR0ZXIgdG88YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBtYWludGFpbiBp dCBhcyBwYXJ0IG9mIHNwZGsgc28gdGhhdCB3ZSBjYW4gY2F0Y2ggaXNzdWVzIGFzIHNvb24gYXMg dGhleTxicj4KJmd0OyBzaG93PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsg dXA/PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgV2Ugd291bGQgYmUgaGFw cHkgdG8gaGVscCB3aXRoIG1haW50YWluaW5nIHRoaXMgbW9kdWxlLCB0aGUgbW9kdWxlIHdpdGg8 YnI+CiZndDsgaXM8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBjdXJyZW50 bHkgcGFydCBvZiBvdXIgQ0kgd2l0aCBvdXIgJnF1b3Q7ZnJvemVuJnF1b3Q7IHNwZGsgdmVyc2lv biwgYnV0IG9uY2U8YnI+CiZndDsgaW50ZWdyYXRlZDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyAmZ3Q7IGludG8gdGhlIG5ld2VyIHZlcnNpb24gd2UgY2hvb3NlLCBJJ2xsIGFkZCBp dCB0byB0aGUgQ0kgb3VyIENJIGFzIHdlbGwuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgU2hh aGFyPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgRnJvbTogU1BESyAmbHQ7 c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyZndDsgb24gYmVoYWxmIG9mIFdhbGtlciwgQmVuamFt aW48YnI+CiZndDsgJmx0O2JlbmphbWluPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICZndDsgLndhbGtlckBpbnRlbC5jb20mZ3Q7PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZndDsgU2VudDogRnJpZGF5LCBGZWJydWFyeSAyLCAyMDE4IDExOjQzOjU4IFBNPGJyPgom Z3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgVG86IHNwZGtAbGlzdHMuMDEub3JnPGJy PgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgU3ViamVjdDogUmU6IFtTUERLXSBT UERLICYjNDM7IHVzZXIgc3BhY2UgYXBwbGlhbmNlPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZndDsmbmJzcDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsg T24gVGh1LCAyMDE4LTAyLTAxIGF0IDA4OjI5ICYjNDM7MDAwMCwgU2hhaGFyIFNhbHptYW4gd3Jv dGU6PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgJmd0OyBIaSBCZW4sPGJy PgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgJmd0OyA8YnI+CiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgJmd0OyAmZ3Q7IFdvdWxkIHlvdSBhbHNvIGxpa2UgdG8gdGFrZSBh IGxvb2sgYXQgdGhlIGJkZXZfdXNlciBtb2R1bGU/PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZndDsgJmd0OyBJdCBzdGlsbCBuZWVkcyBzb21lIHBhdGNoaW5nIChhcyBzb21lIG9m IHRoZSBzdHVmZiBpcyBzdGlsbCBoYXJkPGJyPgomZ3Q7IGNvZGVkKSwgYnV0PGJyPgomZ3Q7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgSTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAmZ3Q7ICZndDsgdGhpbmsgd2UgY2FuIGdldCBtb3N0IG9mIGl0IGNsZWFuZWQgdXAgaW4g YSBjb3VwbGUgb2YgZGF5cy48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyAm Z3Q7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7ICZndDsgSW4gYW55IGNh c2UsIGlzIGl0IHRoZSBpbnRlbnRpb24gdGhhdCB0aGUgdXNlciB3cml0ZSBoaXMgb3duIGJkZXY8 YnI+CiZndDsgbW9kdWxlLCBvcjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7 ICZndDsgd291bGQgdGhpcyB1c2VyIGFwcGxpYW5jZSBnbHVlIGJlIGEgdXNlZnVsIGdlbmVyaWMg bW9kdWxlPzxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IDxicj4KJmd0OyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IEZvciBleGlzdGluZyBzdG9yYWdlIHN0YWNrcyB0 aGF0IHNlcnZlIGJsb2NrIEkvTywgbGlrZSB0aGUgaW50ZXJuYWxzIG9mPGJyPgomZ3Q7IGEgU0FO LDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IHRoZSBpZGVhIGlzIHRoYXQg eW91IHdyaXRlIHlvdXIgb3duIGJkZXYgbW9kdWxlIHRvIGZvcndhcmQgSS9PIGNvbWluZzxicj4K Jmd0OyBvdXQgb2Y8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyB0aGU8YnI+ CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBTUERLIGJkZXYgbGF5ZXIuIFRoZW4g eW91IGNhbiB1c2UgdGhlIFNQREsgaVNDU0kvTlZNZS1vRi92aG9zdCB0YXJnZXRzPGJyPgomZ3Q7 IG1vc3RseTxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IGFzLWlzLjxicj4K Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyAmZ3Q7IEluIHNvbWUgY2FzZXMsIHRoZSBhY3R1YWwgaVNDU0kvTlZNZS1vRi92 aG9zdCB0YXJnZXQgYXBwbGljYXRpb25zIHdvbid0PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZndDsgaW50ZWdyYXRlIG5pY2VseSBkaXJlY3RseSBpbnRvIGFuIGV4aXN0aW5nIHN0 b3JhZ2UgYXBwbGljYXRpb24gYmVjYXVzZTxicj4KJmd0OyB0aGV5PGJyPgomZ3Q7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7ICZndDsgc3Bhd24gdGhlaXIgb3duIHRocmVhZHMgYW5kIGFsbG9jYXRl IHRoZWlyIG93biBtZW1vcnkuIFRvIHN1cHBvcnQgdGhhdCw8YnI+CiZndDsgdGhlPGJyPgomZ3Q7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgbGlicmFyaWVzIG1heSBiZSBjb25zdW1lZCBk aXJlY3RseSBpbnN0ZWFkIG9mIHRoZSBhcHBsaWNhdGlvbnM8YnI+CiZndDsgKGxpYi9pc2NzaSw8 YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBsaWIvc2NzaSwgbGliL252bWYs IGV0Yy4pLiBUaGUgbGlicmFyaWVzIGRvbid0IHNwYXduIGFueSBvZiB0aGVpciBvd248YnI+CiZn dDsgdGhyZWFkcyw8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBidXQgaW5z dGVhZCByZWx5IG9uIFNQREsncyBhYnN0cmFjdGlvbnMgaW4gaW5jbHVkZS9zcGRrL2lvX2NoYW5u ZWwuaC48YnI+CiZndDsgU2VlPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsg PGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgPGEgY2xhc3M9Ik9XQUF1dG9M aW5rIiBpZD0iTFBsbms0NTkzMzYiIGhyZWY9Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNv bS9hLzEvTVMzY2U2TTY0UExXdWotcWwwT1R1VVlZTGVoaDRyWEZLRUw5Rnl3WjM1TT0/ZD1JWjRh Z3hYX1pwcVBrV2lOblROcmpfTkJzMkZodlZoTDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lz cVE3VjUyY1dhWkZWQUNOcl8xaDdqTFdiQXdGc0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZa Nl9QTXkzQ2ZXYlRlTnNiQUR0SUNIQ3pfUE9UQ2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVm cXcxRnJrUzBjTkJ6ZzhkLUV1UHJrd3E5TzBaX1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVm NmNQTnFTbHlMTkhpYzBKbDNJY0gzeXlab0o4eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJp dlh5cjczb1BXMHpDaTdMX0ZfcnVoRkxtS05MTHFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZr VTRxUG5CWFpONjVlTEd4RFZ0c1ppZnlzWTZOY25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQ S2lISmRVLXFOTmlHaUctQVlJZ0RFak9JdyZhbXA7dT1odHRwJTNBJTJGJTJGd3d3LnNwZGsuaW8l MkZkb2MlMkZjb25jdXJyZW5jeS5odG1sIiBwcmV2aWV3cmVtb3ZlZD0idHJ1ZSI+Cmh0dHA6Ly93 d3cuc3Bkay5pby9kb2MvY29uY3VycmVuY3kuaHRtbDwvYT48YnI+CiZndDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgJmd0OyA8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBX ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhIHdheSB0byB3cml0ZSBhIGN1c3RvbSBiZGV2IG1vZHVs ZSB0aGF0IHJlc2lkZXM8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBvdXRz aWRlPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgb2YgdGhlIFNQREsgc291 cmNlIHRyZWUsIGJ1dCBpdCdzIHZlcnkgcG9zc2libGUgdG8gYWRkIHN1cHBvcnQgZm9yIHRoYXQu PGJyPgomZ3Q7IEJ1dDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IGJleW9u ZCB0aGF0IGluY29udmVuaWVuY2UgKGp1c3QgZHJvcCB5b3VyIG1vZHVsZSBpbiBsaWIvYmRldiBm b3Igbm93KSw8YnI+CiZndDsgd3JpdGluZzxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyAmZ3Q7IGE8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBiZGV2IG1vZHVs ZSBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IG9mIGludGVyYWN0aW5nIHdpdGggdGhlIGJvdHRvbSBl bmQgb2Y8YnI+CiZndDsgdGhlPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsg U1BESyBiZGV2IGxheWVyLiBJIHRoaW5rIHRoYXQncyB3aGF0IHlvdSByZWFsbHkgd2FudCB0byBi ZSBkb2luZyBpbiB5b3VyPGJyPgomZ3Q7IGNvZGUsPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZndDsgZnJvbSB3aGF0IEkgY2FuIHRlbGwuPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7ICZndDsgPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgSSBo b3BlIHRoYXQgaGVscHMhPGJyPgomZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CiZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyBTUERLIG1haWxpbmcgbGlzdDxicj4KJmd0OyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IFNQREtAbGlzdHMuMDEub3JnPGJyPgomZ3Q7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbms0 MTE4NzYiIGhyZWY9Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNvbS9hLzEvYjJyZHNmNjlM djdqcndta3RnNFhqQjh6eHBfdHBHM0V4Z043NFJ0YWJfMD0/ZD1JWjRhZ3hYX1pwcVBrV2lOblRO cmpfTkJzMkZodlZoTDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lzcVE3VjUyY1dhWkZWQUNO cl8xaDdqTFdiQXdGc0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZaNl9QTXkzQ2ZXYlRlTnNi QUR0SUNIQ3pfUE9UQ2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVmcXcxRnJrUzBjTkJ6Zzhk LUV1UHJrd3E5TzBaX1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVmNmNQTnFTbHlMTkhpYzBK bDNJY0gzeXlab0o4eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJpdlh5cjczb1BXMHpDaTdM X0ZfcnVoRkxtS05MTHFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZrVTRxUG5CWFpONjVlTEd4 RFZ0c1ppZnlzWTZOY25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQS2lISmRVLXFOTmlHaUct QVlJZ0RFak9JdyZhbXA7dT1odHRwcyUzQSUyRiUyRmxpc3RzLjAxLm9yZyUyRm1haWxtYW4lMkZs aXN0aW5mbyUyRnNwZGsiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj4KaHR0cHM6Ly9saXN0cy4wMS5v cmcvbWFpbG1hbi9saXN0aW5mby9zcGRrPC9hPjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAmZ3Q7IDxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmZ3Q7IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgomZ3Q7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7ICZndDsgU1BESyBtYWlsaW5nIGxpc3Q8YnI+CiZndDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgJmd0OyBTUERLQGxpc3RzLjAxLm9yZzxicj4KJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyAmZ3Q7IDxhIGNsYXNzPSJPV0FBdXRvTGluayIgaWQ9IkxQbG5rNDMxMTQ5 IiBocmVmPSJodHRwczovL2NsaWNrdGltZS5zeW1hbnRlYy5jb20vYS8xL2IycmRzZjY5THY3anJ3 bWt0ZzRYakI4enhwX3RwRzNFeGdONzRSdGFiXzA9P2Q9SVo0YWd4WF9acHFQa1dpTm5UTnJqX05C czJGaHZWaEwwQzR1aTd1c05GYndXdmFlRkxfNnh4RWlKc29Jc3FRN1Y1MmNXYVpGVkFDTnJfMWg3 akxXYkF3RnNJbHVkeHF2b3VMZVI3TGxMT2ZRMGJGbFBVcHZGWjZfUE15M0NmV2JUZU5zYkFEdElD SEN6X1BPVENiYUZwTnN1STJybHFCOHB1dnVaSlRQM094NDZlZnF3MUZya1MwY05Cemc4ZC1FdVBy a3dxOU8wWl9YNUpXZlJJZXlDOE9kUTBMZ1pibVlMaEh2NzRFZjZjUE5xU2x5TE5IaWMwSmwzSWNI M3l5Wm9KOHlXOF9TOVlXR0M4S2N0cW9yclU5eWREWTVMeGFSaXZYeXI3M29QVzB6Q2k3TF9GX3J1 aEZMbUtOTExxR3lUdUlMWG5TNG9ZcjNDUW4zZkpjOU9DbnVWa1U0cVBuQlhaTjY1ZUxHeERWdHNa aWZ5c1k2TmNuXzl2QmU5YldvTXFwbVg0UHZnSFJwc3ozMkZTUEtpSEpkVS1xTk5pR2lHLUFZSWdE RWpPSXcmYW1wO3U9aHR0cHMlM0ElMkYlMkZsaXN0cy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGlu Zm8lMkZzcGRrIiBwcmV2aWV3cmVtb3ZlZD0idHJ1ZSI+Cmh0dHBzOi8vbGlzdHMuMDEub3JnL21h aWxtYW4vbGlzdGluZm8vc3BkazwvYT48YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CiZndDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU1BESyBtYWlsaW5nIGxpc3Q8YnI+CiZndDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgU1BES0BsaXN0cy4wMS5vcmc8YnI+CiZndDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbmszOTQzNDYiIGhyZWY9 Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNvbS9hLzEvYjJyZHNmNjlMdjdqcndta3RnNFhq Qjh6eHBfdHBHM0V4Z043NFJ0YWJfMD0/ZD1JWjRhZ3hYX1pwcVBrV2lOblROcmpfTkJzMkZodlZo TDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lzcVE3VjUyY1dhWkZWQUNOcl8xaDdqTFdiQXdG c0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZaNl9QTXkzQ2ZXYlRlTnNiQUR0SUNIQ3pfUE9U Q2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVmcXcxRnJrUzBjTkJ6ZzhkLUV1UHJrd3E5TzBa X1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVmNmNQTnFTbHlMTkhpYzBKbDNJY0gzeXlab0o4 eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJpdlh5cjczb1BXMHpDaTdMX0ZfcnVoRkxtS05M THFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZrVTRxUG5CWFpONjVlTEd4RFZ0c1ppZnlzWTZO Y25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQS2lISmRVLXFOTmlHaUctQVlJZ0RFak9JdyZh bXA7dT1odHRwcyUzQSUyRiUyRmxpc3RzLjAxLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5mbyUyRnNw ZGsiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj4KaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9s aXN0aW5mby9zcGRrPC9hPjxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8YnI+CiZn dDsgPGJyPgomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fPGJyPgomZ3Q7IFNQREsgbWFpbGluZyBsaXN0PGJyPgomZ3Q7IFNQREtAbGlzdHMuMDEub3Jn PGJyPgomZ3Q7IDxhIGNsYXNzPSJPV0FBdXRvTGluayIgaWQ9IkxQbG5rMzYyOTMzIiBocmVmPSJo dHRwczovL2NsaWNrdGltZS5zeW1hbnRlYy5jb20vYS8xL2IycmRzZjY5THY3anJ3bWt0ZzRYakI4 enhwX3RwRzNFeGdONzRSdGFiXzA9P2Q9SVo0YWd4WF9acHFQa1dpTm5UTnJqX05CczJGaHZWaEww QzR1aTd1c05GYndXdmFlRkxfNnh4RWlKc29Jc3FRN1Y1MmNXYVpGVkFDTnJfMWg3akxXYkF3RnNJ bHVkeHF2b3VMZVI3TGxMT2ZRMGJGbFBVcHZGWjZfUE15M0NmV2JUZU5zYkFEdElDSEN6X1BPVENi YUZwTnN1STJybHFCOHB1dnVaSlRQM094NDZlZnF3MUZya1MwY05Cemc4ZC1FdVBya3dxOU8wWl9Y NUpXZlJJZXlDOE9kUTBMZ1pibVlMaEh2NzRFZjZjUE5xU2x5TE5IaWMwSmwzSWNIM3l5Wm9KOHlX OF9TOVlXR0M4S2N0cW9yclU5eWREWTVMeGFSaXZYeXI3M29QVzB6Q2k3TF9GX3J1aEZMbUtOTExx R3lUdUlMWG5TNG9ZcjNDUW4zZkpjOU9DbnVWa1U0cVBuQlhaTjY1ZUxHeERWdHNaaWZ5c1k2TmNu Xzl2QmU5YldvTXFwbVg0UHZnSFJwc3ozMkZTUEtpSEpkVS1xTk5pR2lHLUFZSWdERWpPSXcmYW1w O3U9aHR0cHMlM0ElMkYlMkZsaXN0cy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZzcGRr IiBwcmV2aWV3cmVtb3ZlZD0idHJ1ZSI+Cmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz dGluZm8vc3BkazwvYT48YnI+CiZndDsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX188YnI+CiZndDsgU1BESyBtYWlsaW5nIGxpc3Q8YnI+CiZndDsgU1BES0Bs aXN0cy4wMS5vcmc8YnI+CiZndDsgPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbms1MTE2 MTYiIGhyZWY9Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNvbS9hLzEvYjJyZHNmNjlMdjdq cndta3RnNFhqQjh6eHBfdHBHM0V4Z043NFJ0YWJfMD0/ZD1JWjRhZ3hYX1pwcVBrV2lOblROcmpf TkJzMkZodlZoTDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lzcVE3VjUyY1dhWkZWQUNOcl8x aDdqTFdiQXdGc0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZaNl9QTXkzQ2ZXYlRlTnNiQUR0 SUNIQ3pfUE9UQ2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVmcXcxRnJrUzBjTkJ6ZzhkLUV1 UHJrd3E5TzBaX1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVmNmNQTnFTbHlMTkhpYzBKbDNJ Y0gzeXlab0o4eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJpdlh5cjczb1BXMHpDaTdMX0Zf cnVoRkxtS05MTHFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZrVTRxUG5CWFpONjVlTEd4RFZ0 c1ppZnlzWTZOY25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQS2lISmRVLXFOTmlHaUctQVlJ Z0RFak9JdyZhbXA7dT1odHRwcyUzQSUyRiUyRmxpc3RzLjAxLm9yZyUyRm1haWxtYW4lMkZsaXN0 aW5mbyUyRnNwZGsiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj4KaHR0cHM6Ly9saXN0cy4wMS5vcmcv bWFpbG1hbi9saXN0aW5mby9zcGRrPC9hPjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX188YnI+ClNQREsgbWFpbGluZyBsaXN0PGJyPgpTUERLQGxpc3Rz LjAxLm9yZzxicj4KPGEgY2xhc3M9Ik9XQUF1dG9MaW5rIiBpZD0iTFBsbms4MTI5OTIiIGhyZWY9 Imh0dHBzOi8vY2xpY2t0aW1lLnN5bWFudGVjLmNvbS9hLzEvYjJyZHNmNjlMdjdqcndta3RnNFhq Qjh6eHBfdHBHM0V4Z043NFJ0YWJfMD0/ZD1JWjRhZ3hYX1pwcVBrV2lOblROcmpfTkJzMkZodlZo TDBDNHVpN3VzTkZid1d2YWVGTF82eHhFaUpzb0lzcVE3VjUyY1dhWkZWQUNOcl8xaDdqTFdiQXdG c0lsdWR4cXZvdUxlUjdMbExPZlEwYkZsUFVwdkZaNl9QTXkzQ2ZXYlRlTnNiQUR0SUNIQ3pfUE9U Q2JhRnBOc3VJMnJscUI4cHV2dVpKVFAzT3g0NmVmcXcxRnJrUzBjTkJ6ZzhkLUV1UHJrd3E5TzBa X1g1SldmUklleUM4T2RRMExnWmJtWUxoSHY3NEVmNmNQTnFTbHlMTkhpYzBKbDNJY0gzeXlab0o4 eVc4X1M5WVdHQzhLY3Rxb3JyVTl5ZERZNUx4YVJpdlh5cjczb1BXMHpDaTdMX0ZfcnVoRkxtS05M THFHeVR1SUxYblM0b1lyM0NRbjNmSmM5T0NudVZrVTRxUG5CWFpONjVlTEd4RFZ0c1ppZnlzWTZO Y25fOXZCZTliV29NcXBtWDRQdmdIUnBzejMyRlNQS2lISmRVLXFOTmlHaUctQVlJZ0RFak9JdyZh bXA7dT1odHRwcyUzQSUyRiUyRmxpc3RzLjAxLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5mbyUyRnNw ZGsiIHByZXZpZXdyZW1vdmVkPSJ0cnVlIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xp c3RpbmZvL3NwZGs8L2E+PGJyPgo8L2Rpdj4KPC9zcGFuPjwvZm9udD48L2Rpdj4KPC9kaXY+Cjwv ZGl2Pgo8L2JvZHk+CjwvaHRtbD4K --===============0267370145085625374==--