From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4395304608057518548==" MIME-Version: 1.0 From: Shahar Salzman Subject: Re: [SPDK] Building spdk on CentOS6 Date: Thu, 10 May 2018 13:39:16 +0000 Message-ID: In-Reply-To: 82C9F782B054C94B9FC04A331649C77AA6F72634@fmsmsx104.amr.corp.intel.com List-ID: To: spdk@lists.01.org --===============4395304608057518548== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Daniel, I updated the patch as you suggested. How do you want to approach the gcc flag and the modules that spdk does not= need? If you are building dpdk from an external makefile (as we are doing), all o= f the above can be added to the makefile with CONFIG...=3Dn and EXTRA_CFLAG= S=3D"-fno-strict-aliasing", or I can send you another dpdk patch fixing thi= s within dpdk, so there is no change in the builder, and maybe there is ano= ther option. WDYT? Shahar ________________________________ From: SPDK on behalf of Luse, Paul E Sent: Wednesday, May 9, 2018 8:19:33 PM To: Storage Performance Development Kit Subject: Re: [SPDK] Building spdk on CentOS6 That=E2=80=99s great, thanks Daniel! From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Verkamp, Daniel Sent: Wednesday, May 9, 2018 9:43 AM To: Storage Performance Development Kit Subject: Re: [SPDK] Building spdk on CentOS6 I agree with Paul=E2=80=99s review; it looks like it shouldn=E2=80=99t be a= big problem to carry a patch for this in our DPDK submodule, at least whil= e CentOS 6 is still officially supported. (I posted a few review comments o= n the patch, but the general approach looks fine.) The Intel build pool had a CentOS 6 test machine in the pool until recently= , and we should be able to resurrect it to provide test coverage again. Thanks, -- Daniel From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzman Sent: Wednesday, May 9, 2018 6:12 AM To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 Hi Paul, Thanks for the review. We are now working on CentOS7 support, but it is not complete yet, so we wi= ll be on CentOS6 about 6-12 months. Shahar ________________________________ From: SPDK = > on behalf of Luse, Paul E > Sent: Wednesday, May 9, 2018 3:51:23 PM To: Storage Performance Development Kit Subject: Re: [SPDK] Building spdk on CentOS6 Thanks for doing that! I put my 2 cents on the review, one more data point = for the maintainers might help =E2=80=93 help long do you believe your team= will be on CentOS6? Don=E2=80=99t need a specific date but are we talking = months, years, indefinitely? I think the other implication of accepting this in the community would be t= o spin up a CentOS6 VM for some basic testing for as long as we hold that p= atch in our DPDK fork which is not a huge thing but want to make sure that= =E2=80=99s clear as well. If nothing else we=E2=80=99ll know if something e= lse breaks it sooner than later and will need to decide, again, at that tim= e if we pull it or if it=E2=80=99s a high enough priority for anyone to dig= in and find a potential solution like you did here. Assuming, of course, = that this one is accepted :) Thanks, Paul From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzman Sent: Wednesday, May 9, 2018 2:01 AM To: spdk(a)lists.01.org Subject: Re: [SPDK] Building spdk on CentOS6 Hi Ben, Pushed the fix to gerrithub - https://review.gerrithub.io/#/c/spdk/dpdk/+/4= 10559/ We are currently using a "frozen" dpdk tree based version 16.07, but I am p= ushing to using the spdk fork and performing regular updates so if things b= reak, I will attempt to fix them, and post on the list. The above fixes a blunt gcc API issue, but there are more subtle inner modu= le issues which I have not investigated, simply removed the modules all tog= ether as they are not needed by spdk. I can set up a howto for users who may need CentOS6 support or we can modif= y the config (as these modules are not really needed for spdk). For the sak= e of clarity here are the modules "configed out" (as I mentioned they are n= ot used by spdk): +CONFIG_RTE_LIBRTE_PMD_BOND=3Dn +CONFIG_RTE_LIBRTE_CRYPTODEV=3Dn +CONFIG_RTE_LIBRTE_SECURITY=3Dn +CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=3Dn +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=3Dn +CONFIG_RTE_LIBRTE_LPM=3Dn +CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=3Dn +CONFIG_RTE_LIBRTE_TABLE=3Dn +CONFIG_RTE_LIBRTE_PIPELINE=3Dn +CONFIG_RTE_TEST_PMD=3Dn +CONFIG_RTE_LIBRTE_PMD_TAP=3Dn +CONFIG_RTE_LIBRTE_AVP_PMD=3Dn Regarding the -fn-strict-aliasing issue, I'll see if I can do the same tric= k I did for the gcc alias in the Makefile, and push the fix for review. Shahar ________________________________ From: SPDK = > on behalf of Walker, Benjamin > Sent: Tuesday, May 8, 2018 7:49:44 PM To: spdk(a)lists.01.org Subject: Re: [SPDK] Building spdk on CentOS6 On Tue, 2018-05-08 at 14:34 +0000, Shahar Salzman wrote: > Got it. > > I was tracking the dpdk project, and focused on the branch that Daniel to= ld me > to work on. > So would the correct process be to push the patch to the spdk/dpdk gerrit= hub > and discuss the commit, or the other way around? Yes - go ahead and push to spdk/dpdk on GerritHub so we can all review it. = The SPDK project has never written out a policy on which versions of DPDK are supported for any given SPDK release. The code is always tested using the l= atest released DPDK, and then attempts to support older versions of DPDK are done= in an ad hoc manner. Similarly, the project never explicitly states which oper= ating systems are supported. Instead, we indicate which operating systems the cod= e is regularly tested on (Fedora N and N-1, Ubuntu latest, Ubuntu LTS, CentOS 7, FreeBSD 11). I see that CentOS 6 is no longer receiving full updates and is in maintenan= ce only mode. It will stop receiving even maintenance updates in 2020. I think= that is indicative of the level of support SPDK should provide here. Given the above, if this patch can be applied to the DPDK fork and doesn't = have any additional impact, I'm not opposed to applying it. That wouldn't, in my mind, mean that SPDK is committed to supporting CentOS 6 indefinitely. But certainly that support could continue while it is relatively easy and convenient. > > From: SPDK > on behalf of Luse, Paul E > intel.com> > Sent: Tuesday, May 8, 2018 5:14:10 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Sure, I understand that. SPDK maintains a fork of dpdk in github at http= s://g > ithub.com/spdk/dpdk for the purpose of temporarily putting things in that= we > need that can=E2=80=99t make it upstream yet for whatever reason =E2=80= =93 this is the > submodule in the SPDK repo. I=E2=80=99m not saying that it makes sense f= or your patch > to land there permanently but it does make sense to talk about it. > > No problem on not being on the call, we=E2=80=99ll get some input from th= e maintainers > and others I=E2=80=99m sure=E2=80=A6 > > Thx > Paul > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzm= an > Sent: Tuesday, May 8, 2018 7:04 AM > To: Storage Performance Development Kit > > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hey Paul, > > The problem is that the patch is in dpdk and not in spdk, and this is the > reason I offered to support it. > The patch (bellow) is only a few lines long modifying the deprecated attr= ibute > definition, a modification to the config, and an extra compilation flag. > All of the above are required in order to build dpdk 18.01 on CentOS6, th= ere > are no problems building spdk on CentOS6. > > I understood that you are already applying minor patches to dpdk, so ques= tion > is, whether this patch can be added? > > Unfortunately due to some personal issues, I am unable to participate in > today's meeting. > > Thanks, > Shahar > From: SPDK > on behalf of Luse, Paul E > intel.com> > Sent: Tuesday, May 8, 2018 4:25:29 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hi Shahar, > > Couple of quick things: > > * thanks for putting all this time and effort into trying to make this wo= rk! > * in the community model, patches aren=E2=80=99t accepted based on one in= dividual=E2=80=99s > ability/desire to support them so appreciate the offer but in general any > patch that is accepted becomes the responsibly of the community (mostly t= he > maintainers) to support it long term. Otherwise we=E2=80=99d have what I= like to call > =E2=80=9Cthe flea market model=E2=80=9D where there=E2=80=99s a bunch of = separate individuals > supporting their own things with very little cohesiveness across everythi= ng J > > So, wrt next steps, if the patch isn=E2=80=99t a tremendous amount of eff= ort I would > suggest you go ahead and submit it. That=E2=80=99s the best way to get ev= eryone on the > same page wrt exactly what we=E2=80=99re talking about. If it is some si= gnificant > effort then, as Pawel states, you can call into a community meeting (see = email > I sent out last night) or you can explain more details on this list. > > Thanks again!! > Paul > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Wodkowski, P= awelX > Sent: Tuesday, May 8, 2018 5:57 AM > To: Storage Performance Development Kit > > Subject: Re: [SPDK] Building spdk on CentOS6 > > I think someone will answer you on this mailing list but there is communi= ty > meeting today too. You can raise this if you wish. > > Pawel > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzm= an > Sent: Tuesday, May 8, 2018 2:23 PM > To: Storage Performance Development Kit > > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hi, > > I attempted to push the gcc support patch to dpdk, and got rejected since= they > do not wish to support CentOS6. > Would it be possible to manually add the patch to the supported dpdk vers= ion > (currently 18.01). > I would be happy to support CentOS6 issues. > > Thanks, > Shahar > > From: Shahar Salzman > Sent: Tuesday, April 24, 2018 3:40:51 PM > To: Storage Performance Development Kit > Cc: Ilan Steinberg; Ido Benda; Yael Shavit > Subject: Re: Building spdk on CentOS6 > > OK, got everything to work. > > For DPDK, I had to to do the following: > add a patch to make the new __rte_experimental attribute to work > remove a bunch of modules via config which had some gnarly compilation er= rors, > and are not needed for spdk > use -fno-strict-aliasing in the EXTRA_CFLAGS to avoid a ton of strict ali= asing > errors. > > I tried spdk 18.01, and ran into some issues with the shared library buil= d. As > I saw that Daniel had already dealt with them, I tried cherry picking, but > eventually used the master branch. > I got these type of warnings: > > /usr/bin/ld: warning: librte_mbuf.so.3.1, needed by > /khome/shahar.salzman/Kaminario/git/dpdk/x86_64-native-linuxapp- > gcc/lib/librte_bus_pci.so, not found (try using -rpath or -rpath-link) > /usr/bin/ld: warning: librte_ethdev.so.8.1, needed by > /khome/shahar.salzman/Kaminario/git/dpdk/x86_64-native-linuxapp- > gcc/lib/librte_bus_pci.so, not found (try using -rpath or -rpath-link) > > I added the following patch bellow to make them go away. > > I'll approach the dpdk community on the mailing list in order to get the > __rte_experimental stuff to work. > My final configuration is: > CenrOS6.4 > gcc 4.4.7-17 > dpdk v18.02 > spdk master > > What are the next steps? > > Shahar > > P.S. Here is the patch to remove the warnings above. > commit d4ef744de1cc4928972b7042d1c90aff12db7867 > Author: shahar salzman > > Date: Tue Apr 24 14:31:52 2018 +0300 > > lib/env_dpdk: add required libraries > > diff --git a/lib/env_dpdk/env.mk b/lib/env_dpdk/env.mk > index 450043c..b46bfed 100644 > --- a/lib/env_dpdk/env.mk > +++ b/lib/env_dpdk/env.mk > @@ -68,6 +68,18 @@ ifneq ($(wildcard $(DPDK_ABS_DIR)/lib/librte_malloc.*)= ,) > DPDK_LIB_LIST +=3D rte_malloc > endif > > +ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_mbuf.*)) > +DPDK_LIB_LIST +=3D rte_mbuf > +endif > + > +ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_net.*)) > +DPDK_LIB_LIST +=3D rte_net > +endif > + > +ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_ethdev.*)) > +DPDK_LIB_LIST +=3D rte_ethdev > +endif > + > # librte_pci and librte_bus_pci were added in DPDK 17.11. Link these > libraries conditionally > # based on their existence to maintain backward compatibility. > ifneq (, $(wildcard $(DPDK_ABS_DIR)/lib/librte_pci.*)) > > > > From: SPDK > on behalf of Shahar Salzman zman(a)kaminario.com> > Sent: Tuesday, April 24, 2018 9:57 AM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Great, and thanks! > > I have been running into issues compiling dpdk 17.11 on CentOS6 (there se= ems > to be a gcc issue that does not exist in other versions), I'll focus my > efforts on dpdk 18.02. > From: SPDK > on behalf of Verkamp, Daniel rkamp(a)intel.com> > Sent: Monday, April 23, 2018 9:40:36 PM > To: Storage Performance Development Kit > Subject: Re: [SPDK] Building spdk on CentOS6 > > Hi Shahar, > > I=E2=80=99ve pushed a patch for the SPDK master branch that should allow = it to compile > with DPDK 16.07: https://review.gerrithub.io/#/c/spdk/spdk/+/408743/ > > Gerrit Code Review > > review.gerrithub.io > > Keep in touch. Copyright =C2=A9 2017 | GerritForge Ltd. info(a)gerritforg= e.com > www.gerritforge.com > > > However, DPDK 16.07 is no longer supported upstream; I highly recommend t= hat > you update to a newer version. SPDK is currently tested with DPDK 18.02. > > The VFIO issue you mention has also been fixed on SPDK master, and it wil= l be > part of the SPDK v18.04 release. > > Thanks, > -- Daniel > > From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Shahar Salzm= an > Sent: Sunday, April 22, 2018 6:41 AM > To: Storage Performance Development Kit > > Subject: [SPDK] Building spdk on CentOS6 > > Hi, > > Finally got to looking at support of spdk build on CentOS6, things look g= ood, > except for one issue. > spdk is latest 18.01.x version, dpdk is 16.07 (+3 dpdk patches to allow > compilation) and some minor patches (mainly some memory configuration stu= ff), > kernel is a patched 4.9.6. > > build succeeded except for the usage of the dpdk function pci_vfio_is_ena= bled. > I had to apply the patch bellow, removing the usage of this function and = then > compilation completed without any issues. > > It seems that I am missing some sort of dpdk configuration as I see that = the > function is built, but not packaged into the generated archive. > > I went back to square one and ran the instructions in http://www.spdk.io/= doc/g > etting_started.html, but I see no mention of dpdk there. Actually the > ./configure requires it. > > My next step is to use a more recent dpdk, but shouldn't this work with my > version? Am I missing some dpdk configuration? > BTW, as we are not using vhost, on our 17.07 version we simply use > CONFIG_VHOST=3Dn in order to skip this, but I would be happier if we used= a > better solution. > > Shahar > > P.S. Here is the patch to remove use of this function: > diff --git a/lib/env_dpdk/vtophys.c b/lib/env_dpdk/vtophys.c > index 92aa256..f38929f 100644 > --- a/lib/env_dpdk/vtophys.c > +++ b/lib/env_dpdk/vtophys.c > @@ -53,8 +53,10 @@ > #define SPDK_VFIO_ENABLED 1 > #include > > +#if 0 > /* Internal DPDK function forward declaration */ > int pci_vfio_is_enabled(void); > +#endif > > struct spdk_vfio_dma_map { > struct vfio_iommu_type1_dma_map map; > @@ -341,9 +343,11 @@ spdk_vtophys_iommu_init(void) > DIR *dir; > struct dirent *d; > > +#if 0 > if (!pci_vfio_is_enabled()) { > return; > } > +#endif > > dir =3D opendir("/proc/self/fd"); > if (!dir) { > > > _______________________________________________ > 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 --===============4395304608057518548== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl eHQvaHRtbDsgY2hhcnNldD1XaW5kb3dzLTEyNTIiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiIHN0 eWxlPSJkaXNwbGF5Om5vbmU7Ij48IS0tIFAge21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7 fSAtLT48L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IGRpcj0ibHRyIj4KPGRpdiBpZD0iZGl2dGFnZGVm YXVsdHdyYXBwZXIiIHN0eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQtZmFt aWx5OkNhbGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IiBkaXI9Imx0ciI+CjxwIHN0eWxlPSJt YXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowIj5IaSBEYW5pZWwsPC9wPgo8cCBzdHlsZT0ibWFy Z2luLXRvcDowO21hcmdpbi1ib3R0b206MCI+PGJyPgo8L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9w OjA7bWFyZ2luLWJvdHRvbTowIj5JIHVwZGF0ZWQgdGhlIHBhdGNoIGFzIHlvdSBzdWdnZXN0ZWQu PC9wPgo8cCBzdHlsZT0ibWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MCI+SG93IGRvIHlvdSB3 YW50IHRvIGFwcHJvYWNoIHRoZSBnY2MgZmxhZyBhbmQgdGhlIG1vZHVsZXMgdGhhdCBzcGRrIGRv ZXMgbm90IG5lZWQ/PC9wPgo8cCBzdHlsZT0ibWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MCI+ SWYgeW91IGFyZSBidWlsZGluZyBkcGRrIGZyb20gYW4gZXh0ZXJuYWwgbWFrZWZpbGUgKGFzIHdl IGFyZSBkb2luZyksIGFsbCBvZiB0aGUgYWJvdmUgY2FuIGJlIGFkZGVkIHRvIHRoZSBtYWtlZmls ZSB3aXRoIENPTkZJRy4uLj1uIGFuZCBFWFRSQV9DRkxBR1M9JnF1b3Q7LWZuby1zdHJpY3QtYWxp YXNpbmcmcXVvdDssIG9yIEkgY2FuIHNlbmQgeW91IGFub3RoZXIgZHBkayBwYXRjaCBmaXhpbmcK IHRoaXMgd2l0aGluIGRwZGssIHNvIHRoZXJlIGlzIG5vIGNoYW5nZSBpbiB0aGUgYnVpbGRlciwg YW5kIG08c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyI+YXliZSB0aGVyZSBpcyBhbm90aGVy IG9wdGlvbi48L3NwYW4+PC9wPgo8cCBzdHlsZT0ibWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206 MCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsiPjxicj4KPC9zcGFuPjwvcD4KPHAgc3R5 bGU9Im1hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjAiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDEycHQ7Ij5XRFlUPzwvc3Bhbj48L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7bWFyZ2luLWJv dHRvbTowIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyI+PGJyPgo8L3NwYW4+PC9wPgo8 cCBzdHlsZT0ibWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MCI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTJwdDsiPlNoYWhhcjwvc3Bhbj48L3A+CjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7bWFy Z2luLWJvdHRvbTowIj48YnI+CjwvcD4KPC9kaXY+CjxociBzdHlsZT0iZGlzcGxheTppbmxpbmUt YmxvY2s7d2lkdGg6OTglIiB0YWJpbmRleD0iLTEiPgo8ZGl2IGlkPSJkaXZScGx5RndkTXNnIiBk aXI9Imx0ciI+PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQtc2l6 ZToxMXB0IiBjb2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+IFNQREsgJmx0O3NwZGstYm91bmNl c0BsaXN0cy4wMS5vcmcmZ3Q7IG9uIGJlaGFsZiBvZiBMdXNlLCBQYXVsIEUgJmx0O3BhdWwuZS5s dXNlQGludGVsLmNvbSZndDs8YnI+CjxiPlNlbnQ6PC9iPiBXZWRuZXNkYXksIE1heSA5LCAyMDE4 IDg6MTk6MzMgUE08YnI+CjxiPlRvOjwvYj4gU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVu dCBLaXQ8YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW1NQREtdIEJ1aWxkaW5nIHNwZGsgb24gQ2Vu dE9TNjwvZm9udD4KPGRpdj4mbmJzcDs8L2Rpdj4KPC9kaXY+CjxtZXRhIGNvbnRlbnQ9InRleHQv aHRtbDsgY2hhcnNldD1XaW5kb3dzLTEyNTIiPgo8bWV0YSBuYW1lPSJ4X0dlbmVyYXRvciIgY29u dGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8c3R5bGU+CjwhLS0K QGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OldpbmdkaW5nc30KQGZvbnQtZmFjZQoJe2ZvbnQtZmFt aWx5OiJDYW1icmlhIE1hdGgifQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaX0KcC54 X01zb05vcm1hbCwgbGkueF9Nc29Ob3JtYWwsIGRpdi54X01zb05vcm1hbAoJe21hcmdpbjowaW47 CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6 IlRpbWVzIE5ldyBSb21hbiIsc2VyaWZ9CmE6eF9saW5rLCBzcGFuLnhfTXNvSHlwZXJsaW5rCgl7 Y29sb3I6Ymx1ZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9CmE6eF92aXNpdGVkLCBzcGFu LnhfTXNvSHlwZXJsaW5rRm9sbG93ZWQKCXtjb2xvcjpwdXJwbGU7Cgl0ZXh0LWRlY29yYXRpb246 dW5kZXJsaW5lfQpwCgl7bWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQt c2l6ZToxMi4wcHQ7Cglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIixzZXJpZn0KcC54X01z b0xpc3RQYXJhZ3JhcGgsIGxpLnhfTXNvTGlzdFBhcmFncmFwaCwgZGl2LnhfTXNvTGlzdFBhcmFn cmFwaAoJe21hcmdpbi10b3A6MGluOwoJbWFyZ2luLXJpZ2h0OjBpbjsKCW1hcmdpbi1ib3R0b206 MGluOwoJbWFyZ2luLWxlZnQ6LjVpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6 ZToxMi4wcHQ7Cglmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIixzZXJpZn0KcC54X3htc29u b3JtYWwsIGxpLnhfeG1zb25vcm1hbCwgZGl2LnhfeG1zb25vcm1hbAoJe21hcmdpbjowaW47Cglt YXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglmb250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6IlRp bWVzIE5ldyBSb21hbiIsc2VyaWZ9CnAueF94bXNvY2hwZGVmYXVsdCwgbGkueF94bXNvY2hwZGVm YXVsdCwgZGl2LnhfeG1zb2NocGRlZmF1bHQKCXttYXJnaW46MGluOwoJbWFyZ2luLWJvdHRvbTou MDAwMXB0OwoJZm9udC1zaXplOjEwLjBwdDsKCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4i LHNlcmlmfQpzcGFuLnhfeGVtYWlsc3R5bGUxOAoJe2ZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5z LXNlcmlmOwoJY29sb3I6IzFGNDk3RH0Kc3Bhbi54X0VtYWlsU3R5bGUyMgoJe2ZvbnQtZmFtaWx5 OiJDYWxpYnJpIixzYW5zLXNlcmlmOwoJY29sb3I6IzFGNDk3RH0Kc3Bhbi54X0VtYWlsU3R5bGUy MwoJe2ZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOwoJY29sb3I6IzFGNDk3RH0KLnhf TXNvQ2hwRGVmYXVsdAoJe2ZvbnQtc2l6ZToxMC4wcHR9CkBwYWdlIFdvcmRTZWN0aW9uMQoJe21h cmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbn0KZGl2LnhfV29yZFNlY3Rpb24xCgl7fQotLT4K PC9zdHlsZT4KPGRpdiBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+Cjxk aXYgY2xhc3M9InhfV29yZFNlY3Rpb24xIj4KPHAgY2xhc3M9InhfTXNvTm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjExLjBwdDsgZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmOyBjb2xvcjojMUY0OTdEIj5UaGF0knMgZ3JlYXQsIHRoYW5rcyBEYW5pZWwhPC9z cGFuPjwvcD4KPHAgY2xhc3M9InhfTXNvTm9ybWFsIj48YSBuYW1lPSJ4X19NYWlsRW5kQ29tcG9z ZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjwvYT48L3A+ CjxkaXY+CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lOyBib3JkZXItdG9wOnNvbGlkICNFMUUxRTEg MS4wcHQ7IHBhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPgo8cCBjbGFzcz0ieF9Nc29Ob3JtYWwi PjxhIG5hbWU9InhfX19fX19yZXBseXNlcGFyYXRvciI+PC9hPjxiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTEuMHB0OyBmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYi PkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDsgZm9udC1mYW1p bHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4gU1BESyBbbWFpbHRvOnNwZGstYm91 bmNlc0BsaXN0cy4wMS5vcmddCjxiPk9uIEJlaGFsZiBPZiA8L2I+VmVya2FtcCwgRGFuaWVsPGJy Pgo8Yj5TZW50OjwvYj4gV2VkbmVzZGF5LCBNYXkgOSwgMjAxOCA5OjQzIEFNPGJyPgo8Yj5Ubzo8 L2I+IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDtzcGRrQGxpc3RzLjAx Lm9yZyZndDs8YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW1NQREtdIEJ1aWxkaW5nIHNwZGsgb24g Q2VudE9TNjwvc3Bhbj48L3A+CjwvZGl2Pgo8L2Rpdj4KPHAgY2xhc3M9InhfTXNvTm9ybWFsIj4m bmJzcDs8L3A+CjxwIGNsYXNzPSJ4X01zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6 IzFGNDk3RCI+SSBhZ3JlZSB3aXRoIFBhdWyScyByZXZpZXc7IGl0IGxvb2tzIGxpa2UgaXQgc2hv dWxkbpJ0IGJlIGEgYmlnIHByb2JsZW0gdG8gY2FycnkgYSBwYXRjaCBmb3IgdGhpcyBpbiBvdXIg RFBESyBzdWJtb2R1bGUsIGF0IGxlYXN0IHdoaWxlIENlbnRPUyA2IGlzIHN0aWxsCiBvZmZpY2lh bGx5IHN1cHBvcnRlZC4gKEkgcG9zdGVkIGEgZmV3IHJldmlldyBjb21tZW50cyBvbiB0aGUgcGF0 Y2gsIGJ1dCB0aGUgZ2VuZXJhbCBhcHByb2FjaCBsb29rcyBmaW5lLik8L3NwYW4+PC9wPgo8cCBj bGFzcz0ieF9Nc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiMxRjQ5N0QiPiZuYnNw Ozwvc3Bhbj48L3A+CjxwIGNsYXNzPSJ4X01zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29s b3I6IzFGNDk3RCI+VGhlIEludGVsIGJ1aWxkIHBvb2wgaGFkIGEgQ2VudE9TIDYgdGVzdCBtYWNo aW5lIGluIHRoZSBwb29sIHVudGlsIHJlY2VudGx5LCBhbmQgd2Ugc2hvdWxkIGJlIGFibGUgdG8g cmVzdXJyZWN0IGl0IHRvIHByb3ZpZGUgdGVzdCBjb3ZlcmFnZSBhZ2Fpbi48L3NwYW4+PC9wPgo8 cCBjbGFzcz0ieF9Nc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiMxRjQ5N0QiPiZu YnNwOzwvc3Bhbj48L3A+CjxwIGNsYXNzPSJ4X01zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsg Y29sb3I6IzFGNDk3RCI+VGhhbmtzLDwvc3Bhbj48L3A+CjxwIGNsYXNzPSJ4X01zb05vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IzFGNDk3RCI+LS0gRGFuaWVsPC9zcGFuPjwvcD4KPHAg Y2xhc3M9InhfTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDsgZm9udC1m YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjojMUY0OTdEIj4mbmJz cDs8L3NwYW4+PC9wPgo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTsgYm9yZGVyLWxlZnQ6c29saWQg Ymx1ZSAxLjVwdDsgcGFkZGluZzowaW4gMGluIDBpbiA0LjBwdCI+CjxkaXY+CjxkaXYgc3R5bGU9 ImJvcmRlcjpub25lOyBib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7IHBhZGRpbmc6My4w cHQgMGluIDBpbiAwaW4iPgo8cCBjbGFzcz0ieF9Nc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTEuMHB0OyBmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDsgZm9udC1m YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmIj4gU1BESyBbPGEgaHJlZj0ibWFp bHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMu MDEub3JnPC9hPl0KPGI+T24gQmVoYWxmIE9mIDwvYj5TaGFoYXIgU2Fsem1hbjxicj4KPGI+U2Vu dDo8L2I+IFdlZG5lc2RheSwgTWF5IDksIDIwMTggNjoxMiBBTTxicj4KPGI+VG86PC9iPiBTdG9y YWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtA bGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7PGJyPgo8Yj5TdWJqZWN0Ojwv Yj4gUmU6IFtTUERLXSBCdWlsZGluZyBzcGRrIG9uIENlbnRPUzY8L3NwYW4+PC9wPgo8L2Rpdj4K PC9kaXY+CjxwIGNsYXNzPSJ4X01zb05vcm1hbCI+Jm5ic3A7PC9wPgo8ZGl2IGlkPSJ4X2RpdnRh Z2RlZmF1bHR3cmFwcGVyIj4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGli cmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPkhpIFBhdWwsPC9zcGFuPjwvcD4KPHA+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsg Y29sb3I6YmxhY2siPiZuYnNwOzwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWls eTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj5UaGFua3MgZm9y IHRoZSByZXZpZXcuPC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPldlIGFyZSBub3cgd29ya2lu ZyBvbiBDZW50T1M3IHN1cHBvcnQsIGJ1dCBpdCBpcyBub3QgY29tcGxldGUgeWV0LCBzbyB3ZSB3 aWxsIGJlIG9uIENlbnRPUzYmbmJzcDthYm91dCA2LTEyIG1vbnRocy48L3NwYW4+PC9wPgo8cD48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBj b2xvcjpibGFjayI+Jm5ic3A7PC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPlNoYWhhcjwvc3Bh bj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ4X01zb05vcm1hbCIgYWxpZ249ImNlbnRlciIgc3R5 bGU9InRleHQtYWxpZ246Y2VudGVyIj4KPGhyIHNpemU9IjMiIHdpZHRoPSI5OCUiIGFsaWduPSJj ZW50ZXIiPgo8L2Rpdj4KPGRpdiBpZD0ieF9kaXZScGx5RndkTXNnIj4KPHAgY2xhc3M9InhfTXNv Tm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDsgZm9udC1mYW1pbHk6JnF1 b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+RnJvbTo8L3NwYW4+PC9i PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj4gU1BESyAmbHQ7PGEgaHJlZj0ibWFpbHRv OnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmc8L2E+ Jmd0Owogb24gYmVoYWxmIG9mIEx1c2UsIFBhdWwgRSAmbHQ7PGEgaHJlZj0ibWFpbHRvOnBhdWwu ZS5sdXNlQGludGVsLmNvbSI+cGF1bC5lLmx1c2VAaW50ZWwuY29tPC9hPiZndDs8YnI+CjxiPlNl bnQ6PC9iPiBXZWRuZXNkYXksIE1heSA5LCAyMDE4IDM6NTE6MjMgUE08YnI+CjxiPlRvOjwvYj4g U3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+CjxiPlN1YmplY3Q6PC9iPiBS ZTogW1NQREtdIEJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNjwvc3Bhbj4gPC9wPgo8ZGl2Pgo8cCBj bGFzcz0ieF9Nc29Ob3JtYWwiPiZuYnNwOzwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2Pgo8 cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDsgZm9u dC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjojMUY0OTdEIj5U aGFua3MgZm9yIGRvaW5nIHRoYXQhIEkgcHV0IG15IDIgY2VudHMgb24gdGhlIHJldmlldywgb25l IG1vcmUgZGF0YSBwb2ludCBmb3IgdGhlIG1haW50YWluZXJzIG1pZ2h0IGhlbHAgliBoZWxwIGxv bmcgZG8geW91IGJlbGlldmUgeW91ciB0ZWFtIHdpbGwgYmUgb24KIENlbnRPUzY/IERvbpJ0IG5l ZWQgYSBzcGVjaWZpYyBkYXRlIGJ1dCBhcmUgd2UgdGFsa2luZyBtb250aHMsIHllYXJzLCBpbmRl ZmluaXRlbHk/PC9zcGFuPjwvcD4KPHAgY2xhc3M9InhfeG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZjsgY29sb3I6IzFGNDk3RCI+Jm5ic3A7PC9zcGFuPjwvcD4KPHAgY2xhc3M9InhfeG1zb25v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7IGZvbnQtZmFtaWx5OiZxdW90O0Nh bGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IzFGNDk3RCI+SSB0aGluayB0aGUgb3RoZXIg aW1wbGljYXRpb24gb2YgYWNjZXB0aW5nIHRoaXMgaW4gdGhlIGNvbW11bml0eSB3b3VsZCBiZSB0 byBzcGluIHVwIGEgQ2VudE9TNiBWTSBmb3Igc29tZSBiYXNpYyB0ZXN0aW5nIGZvciBhcyBsb25n IGFzIHdlIGhvbGQgdGhhdCBwYXRjaAogaW4gb3VyIERQREsgZm9yayB3aGljaCBpcyBub3QgYSBo dWdlIHRoaW5nIGJ1dCB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0knMgY2xlYXIgYXMgd2VsbC4gSWYg bm90aGluZyBlbHNlIHdlkmxsIGtub3cgaWYgc29tZXRoaW5nIGVsc2UgYnJlYWtzIGl0IHNvb25l ciB0aGFuIGxhdGVyIGFuZCB3aWxsIG5lZWQgdG8gZGVjaWRlLCBhZ2FpbiwgYXQgdGhhdCB0aW1l IGlmIHdlIHB1bGwgaXQgb3IgaWYgaXSScyBhIGhpZ2ggZW5vdWdoIHByaW9yaXR5IGZvcgogYW55 b25lIHRvIGRpZyBpbiBhbmQgZmluZCBhIHBvdGVudGlhbCBzb2x1dGlvbiBsaWtlIHlvdSBkaWQg aGVyZS4mbmJzcDsgQXNzdW1pbmcsIG9mIGNvdXJzZSwgdGhhdCB0aGlzIG9uZSBpcyBhY2NlcHRl ZAo8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7IGZvbnQtZmFtaWx5Oldpbmdk aW5nczsgY29sb3I6IzFGNDk3RCI+Sjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwi PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250LWZhbWlseTomcXVvdDtDYWxpYnJp JnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiMxRjQ5N0QiPiZuYnNwOzwvc3Bhbj48L3A+CjxwIGNs YXNzPSJ4X3htc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250LWZh bWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiMxRjQ5N0QiPlRoYW5r cyw8L3NwYW4+PC9wPgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdDsgZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBj b2xvcjojMUY0OTdEIj5QYXVsPC9zcGFuPjwvcD4KPHAgY2xhc3M9InhfeG1zb25vcm1hbCI+PGEg bmFtZT0ieF94X19NYWlsRW5kQ29tcG9zZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7 IGZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IzFGNDk3 RCI+Jm5ic3A7PC9zcGFuPjwvYT48L3A+CjxkaXY+CjxkaXYgc3R5bGU9ImJvcmRlcjpub25lOyBi b3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7IHBhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4i Pgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48YSBuYW1lPSJ4X3hfX19fX19yZXBseXNlcGFyYXRv ciI+PC9hPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250LWZhbWlseTomcXVv dDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWYiPkZyb206PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDsgZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNl cmlmIj4gU1BESyBbPGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPm1h aWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPl0KPGI+T24gQmVoYWxmIE9mIDwvYj5T aGFoYXIgU2Fsem1hbjxicj4KPGI+U2VudDo8L2I+IFdlZG5lc2RheSwgTWF5IDksIDIwMTggMjow MSBBTTxicj4KPGI+VG86PC9iPiA8YSBocmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNw ZGtAbGlzdHMuMDEub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbU1BES10gQnVpbGRp bmcgc3BkayBvbiBDZW50T1M2PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2Pgo8cCBjbGFzcz0ieF94 bXNvbm9ybWFsIj4mbmJzcDs8L3A+CjxkaXYgaWQ9InhfeF9kaXZ0YWdkZWZhdWx0d3JhcHBlciI+ CjxkaXYgaWQ9InhfeF9kaXZ0YWdkZWZhdWx0d3JhcHBlciI+CjxwPjxzcGFuIHN0eWxlPSJmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj5IaSBC ZW4sPC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiZuYnNwOzwvc3Bhbj48L3A+CjxwPjxzcGFu IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9y OmJsYWNrIj5QdXNoZWQgdGhlIGZpeCB0byBnZXJyaXRodWIgLSZuYnNwOzxhIGhyZWY9Imh0dHBz Oi8vcmV2aWV3LmdlcnJpdGh1Yi5pby8jL2Mvc3Bkay9kcGRrLyYjNDM7LzQxMDU1OS8iIGlkPSJM UGxuazIwMTI4MyI+aHR0cHM6Ly9yZXZpZXcuZ2Vycml0aHViLmlvLyMvYy9zcGRrL2RwZGsvJiM0 MzsvNDEwNTU5LzwvYT48L3NwYW4+PC9wPgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpi bGFjayI+Jm5ic3A7PC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPldlIGFyZSBjdXJyZW50bHkg dXNpbmcgYSAmcXVvdDtmcm96ZW4mcXVvdDsgZHBkayB0cmVlIGJhc2VkIHZlcnNpb24gMTYuMDcs IGJ1dCBJIGFtIHB1c2hpbmcgdG8gdXNpbmcgdGhlIHNwZGsgZm9yayBhbmQgcGVyZm9ybWluZyBy ZWd1bGFyIHVwZGF0ZXMgc28gaWYgdGhpbmdzIGJyZWFrLCBJIHdpbGwgYXR0ZW1wdCB0byBmaXgg dGhlbSwgYW5kIHBvc3Qgb24KIHRoZSBsaXN0Ljwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxlPSJm b250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj4m bmJzcDs8L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJy aSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+VGhlIGFib3ZlIGZpeGVzIGEgYmx1bnQg Z2NjJm5ic3A7QVBJIGlzc3VlLCBidXQgdGhlcmUgYXJlIG1vcmUgc3VidGxlIGlubmVyIG1vZHVs ZSBpc3N1ZXMgd2hpY2ggSSBoYXZlIG5vdCBpbnZlc3RpZ2F0ZWQsIHNpbXBseSByZW1vdmVkIHRo ZSBtb2R1bGVzIGFsbCB0b2dldGhlciBhcyB0aGV5IGFyZSBub3QgbmVlZGVkIGJ5IHNwZGsuPC9z cGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiZuYnNwOzwvc3Bhbj48L3A+CjxwPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNr Ij5JIGNhbiBzZXQgdXAgYSBob3d0byBmb3IgdXNlcnMgd2hvIG1heSBuZWVkIENlbnRPUzYgc3Vw cG9ydCBvciB3ZSBjYW4gbW9kaWZ5IHRoZSBjb25maWcgKGFzIHRoZXNlIG1vZHVsZXMgYXJlIG5v dCByZWFsbHkgbmVlZGVkIGZvciBzcGRrKS4gRm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkgaGVyZSBh cmUgdGhlIG1vZHVsZXMgJnF1b3Q7Y29uZmlnZWQKIG91dCZxdW90OyAoYXMgSSBtZW50aW9uZWQg dGhleSBhcmUgbm90IHVzZWQgYnkgc3Bkayk6PC9zcGFuPjwvcD4KPGRpdj4KPHAgY2xhc3M9Inhf eG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDss c2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiYjNDM7Q09ORklHX1JURV9MSUJSVEVfUE1EX0JPTkQ9 bjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpi bGFjayI+JiM0MztDT05GSUdfUlRFX0xJQlJURV9DUllQVE9ERVY9bjwvc3Bhbj48L3A+CjwvZGl2 Pgo8ZGl2Pgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+JiM0MztDT05GSUdf UlRFX0xJQlJURV9TRUNVUklUWT1uPC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJ4 X3htc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7 LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj4mIzQzO0NPTkZJR19SVEVfTElCUlRFX1BNRF9TV19F VkVOVERFVj1uPC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwi PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7 IGNvbG9yOmJsYWNrIj4mIzQzO0NPTkZJR19SVEVfTElCUlRFX1BNRF9PQ1RFT05UWF9TU09WRj1u PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwiPjxzcGFuIHN0 eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJs YWNrIj4mIzQzO0NPTkZJR19SVEVfTElCUlRFX0xQTT1uPC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+ CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtD YWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj4mIzQzO0NPTkZJR19SVEVfTElC UlRFX0ZMT1dfQ0xBU1NJRlk9bjwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0ieF94 bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90Oyxz YW5zLXNlcmlmOyBjb2xvcjpibGFjayI+JiM0MztDT05GSUdfUlRFX0xJQlJURV9UQUJMRT1uPC9z cGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNr Ij4mIzQzO0NPTkZJR19SVEVfTElCUlRFX1BJUEVMSU5FPW48L3NwYW4+PC9wPgo8L2Rpdj4KPGRp dj4KPHAgY2xhc3M9InhfeG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiYjNDM7Q09ORklHX1JURV9U RVNUX1BNRD1uPC9zcGFuPjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwi PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7 IGNvbG9yOmJsYWNrIj4mIzQzO0NPTkZJR19SVEVfTElCUlRFX1BNRF9UQVA9bjwvc3Bhbj48L3A+ CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+JiM0MztD T05GSUdfUlRFX0xJQlJURV9BVlBfUE1EPW48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xh c3M9InhfeG1zb25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkm cXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiZuYnNwOzwvc3Bhbj48L3A+CjwvZGl2Pgo8 ZGl2Pgo8cCBjbGFzcz0ieF94bXNvbm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+UmVnYXJkaW5nIHRoZSAt Zm4tc3RyaWN0LWFsaWFzaW5nIGlzc3VlLCBJJ2xsIHNlZSBpZiBJIGNhbiBkbyB0aGUgc2FtZSB0 cmljayBJIGRpZCBmb3IgdGhlIGdjYyBhbGlhcyBpbiB0aGUgTWFrZWZpbGUsIGFuZCBwdXNoIHRo ZSBmaXggZm9yIHJldmlldy48L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9InhfeG1z b25vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjsgY29sb3I6YmxhY2siPiZuYnNwOzwvc3Bhbj48L3A+CjwvZGl2Pgo8cD48c3BhbiBz dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpi bGFjayI+U2hhaGFyPC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiZuYnNwOzwvc3Bhbj48L3A+ CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ4X01zb05vcm1hbCIgYWxpZ249ImNlbnRlciIgc3R5bGU9InRl eHQtYWxpZ246Y2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZx dW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+CjxociBzaXplPSI0IiB3aWR0aD0iOTglIiBh bGlnbj0iY2VudGVyIj4KPC9zcGFuPjwvZGl2Pgo8ZGl2IGlkPSJ4X3hfZGl2UnBseUZ3ZE1zZyI+ CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0 OyBmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNr Ij5Gcm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7IGZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6YmxhY2siPiBTUERLICZs dDs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1ib3VuY2Vz QGxpc3RzLjAxLm9yZzwvYT4mZ3Q7CiBvbiBiZWhhbGYgb2YgV2Fsa2VyLCBCZW5qYW1pbiAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmJlbmphbWluLndhbGtlckBpbnRlbC5jb20iPmJlbmphbWluLndhbGtl ckBpbnRlbC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIE1heSA4LCAyMDE4 IDc6NDk6NDQgUE08YnI+CjxiPlRvOjwvYj4gPGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEu b3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW1NQREtd IEJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjpibGFjayI+Cjwvc3Bhbj48L3A+ CjxkaXY+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTom cXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj4mbmJzcDs8L3NwYW4+ PC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXY+CjxkaXY+CjxwIGNsYXNzPSJ4X3htc29ub3JtYWwiPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0OyBmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOmJsYWNrIj5PbiBUdWUsIDIwMTgtMDUtMDggYXQgMTQ6MzQg JiM0MzswMDAwLCBTaGFoYXIgU2Fsem1hbiB3cm90ZTo8YnI+CiZndDsgR290IGl0Ljxicj4KJmd0 OyA8YnI+CiZndDsgSSB3YXMgdHJhY2tpbmcgdGhlIGRwZGsgcHJvamVjdCwgYW5kIGZvY3VzZWQg b24gdGhlIGJyYW5jaCB0aGF0IERhbmllbCB0b2xkIG1lPGJyPgomZ3Q7IHRvIHdvcmsgb24uPGJy PgomZ3Q7IFNvIHdvdWxkIHRoZSBjb3JyZWN0IHByb2Nlc3MgYmUgdG8gcHVzaCB0aGUgcGF0Y2gg dG8gdGhlIHNwZGsvZHBkayBnZXJyaXRodWI8YnI+CiZndDsgYW5kIGRpc2N1c3MgdGhlIGNvbW1p dCwgb3IgdGhlIG90aGVyIHdheSBhcm91bmQ/PGJyPgo8YnI+ClllcyAtIGdvIGFoZWFkIGFuZCBw dXNoIHRvIHNwZGsvZHBkayBvbiBHZXJyaXRIdWIgc28gd2UgY2FuIGFsbCByZXZpZXcgaXQuIFRo ZTxicj4KU1BESyBwcm9qZWN0IGhhcyBuZXZlciB3cml0dGVuIG91dCBhIHBvbGljeSBvbiB3aGlj aCB2ZXJzaW9ucyBvZiBEUERLIGFyZTxicj4Kc3VwcG9ydGVkIGZvciBhbnkgZ2l2ZW4gU1BESyBy ZWxlYXNlLiBUaGUgY29kZSBpcyBhbHdheXMgdGVzdGVkIHVzaW5nIHRoZSBsYXRlc3Q8YnI+CnJl bGVhc2VkIERQREssIGFuZCB0aGVuIGF0dGVtcHRzIHRvIHN1cHBvcnQgb2xkZXIgdmVyc2lvbnMg b2YgRFBESyBhcmUgZG9uZSBpbjxicj4KYW4gYWQgaG9jIG1hbm5lci4gU2ltaWxhcmx5LCB0aGUg cHJvamVjdCBuZXZlciBleHBsaWNpdGx5IHN0YXRlcyB3aGljaCBvcGVyYXRpbmc8YnI+CnN5c3Rl bXMgYXJlIHN1cHBvcnRlZC4gSW5zdGVhZCwgd2UgaW5kaWNhdGUgd2hpY2ggb3BlcmF0aW5nIHN5 c3RlbXMgdGhlIGNvZGUgaXM8YnI+CnJlZ3VsYXJseSB0ZXN0ZWQgb24gKEZlZG9yYSBOIGFuZCBO LTEsIFVidW50dSBsYXRlc3QsIFVidW50dSBMVFMsIENlbnRPUyA3LDxicj4KRnJlZUJTRCAxMSku PGJyPgo8YnI+Ckkgc2VlIHRoYXQgQ2VudE9TIDYgaXMgbm8gbG9uZ2VyIHJlY2VpdmluZyBmdWxs IHVwZGF0ZXMgYW5kIGlzIGluIG1haW50ZW5hbmNlPGJyPgpvbmx5IG1vZGUuIEl0IHdpbGwgc3Rv cCByZWNlaXZpbmcgZXZlbiBtYWludGVuYW5jZSB1cGRhdGVzIGluIDIwMjAuIEkgdGhpbmsgdGhh dDxicj4KaXMgaW5kaWNhdGl2ZSBvZiB0aGUgbGV2ZWwgb2Ygc3VwcG9ydCBTUERLIHNob3VsZCBw cm92aWRlIGhlcmUuPGJyPgo8YnI+CkdpdmVuIHRoZSBhYm92ZSwgaWYgdGhpcyBwYXRjaCBjYW4g YmUgYXBwbGllZCB0byB0aGUgRFBESyBmb3JrIGFuZCBkb2Vzbid0IGhhdmU8YnI+CmFueSBhZGRp dGlvbmFsIGltcGFjdCwgSSdtIG5vdCBvcHBvc2VkIHRvIGFwcGx5aW5nIGl0LiBUaGF0IHdvdWxk bid0LCBpbiBteTxicj4KbWluZCwgbWVhbiB0aGF0IFNQREsgaXMgY29tbWl0dGVkIHRvIHN1cHBv cnRpbmcgQ2VudE9TIDYgaW5kZWZpbml0ZWx5LiBCdXQ8YnI+CmNlcnRhaW5seSB0aGF0IHN1cHBv cnQgY291bGQgY29udGludWUgd2hpbGUgaXQgaXMgcmVsYXRpdmVseSBlYXN5IGFuZDxicj4KY29u dmVuaWVudC48YnI+Cjxicj4KJmd0OyA8YnI+CiZndDsgRnJvbTogU1BESyAmbHQ7PGEgaHJlZj0i bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPnNwZGstYm91bmNlc0BsaXN0cy4wMS5v cmc8L2E+Jmd0OyBvbiBiZWhhbGYgb2YgTHVzZSwgUGF1bCBFICZsdDs8YSBocmVmPSJtYWlsdG86 cGF1bC5lLmx1c2VAJTBiIj5wYXVsLmUubHVzZUA8YnI+CjwvYT4mZ3Q7IGludGVsLmNvbSZndDs8 YnI+CiZndDsgU2VudDogVHVlc2RheSwgTWF5IDgsIDIwMTggNToxNDoxMCBQTTxicj4KJmd0OyBU bzogU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+CiZndDsgU3ViamVjdDog UmU6IFtTUERLXSBCdWlsZGluZyBzcGRrIG9uIENlbnRPUzY8YnI+CiZndDsmbmJzcDsgPGJyPgom Z3Q7IFN1cmUsIEkgdW5kZXJzdGFuZCB0aGF0LiZuYnNwOyBTUERLIG1haW50YWlucyBhIGZvcmsg b2YgZHBkayBpbiBnaXRodWIgYXQgPGEgaHJlZj0iaHR0cHM6Ly9nIj4KaHR0cHM6Ly9nPC9hPjxi cj4KJmd0OyBpdGh1Yi5jb20vc3Bkay9kcGRrIGZvciB0aGUgcHVycG9zZSBvZiB0ZW1wb3Jhcmls eSBwdXR0aW5nIHRoaW5ncyBpbiB0aGF0IHdlPGJyPgomZ3Q7IG5lZWQgdGhhdCBjYW6SdCBtYWtl IGl0IHVwc3RyZWFtIHlldCBmb3Igd2hhdGV2ZXIgcmVhc29uIJYgdGhpcyBpcyB0aGU8YnI+CiZn dDsgc3VibW9kdWxlIGluIHRoZSBTUERLIHJlcG8uJm5ic3A7IEmSbSBub3Qgc2F5aW5nIHRoYXQg aXQgbWFrZXMgc2Vuc2UgZm9yIHlvdXIgcGF0Y2g8YnI+CiZndDsgdG8gbGFuZCB0aGVyZSBwZXJt YW5lbnRseSBidXQgaXQgZG9lcyBtYWtlIHNlbnNlIHRvIHRhbGsgYWJvdXQgaXQuPGJyPgomZ3Q7 Jm5ic3A7IDxicj4KJmd0OyBObyBwcm9ibGVtIG9uIG5vdCBiZWluZyBvbiB0aGUgY2FsbCwgd2WS bGwgZ2V0IHNvbWUgaW5wdXQgZnJvbSB0aGUgbWFpbnRhaW5lcnM8YnI+CiZndDsgYW5kIG90aGVy cyBJkm0gc3VyZYU8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IFRoeDxicj4KJmd0OyBQYXVsPGJy PgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBGcm9tOiBTUERLIFs8YSBocmVmPSJtYWlsdG86c3Bkay1i b3VuY2VzQGxpc3RzLjAxLm9yZyIgaWQ9IkxQbG5rMzQwNTc2Ij5tYWlsdG86c3Bkay1ib3VuY2Vz QGxpc3RzLjAxLm9yZzwvYT5dIE9uIEJlaGFsZiBPZiBTaGFoYXIgU2Fsem1hbjxicj4KJmd0OyBT ZW50OiBUdWVzZGF5LCBNYXkgOCwgMjAxOCA3OjA0IEFNPGJyPgomZ3Q7IFRvOiBTdG9yYWdlIFBl cmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMu MDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7PGJyPgomZ3Q7IFN1YmplY3Q6IFJlOiBb U1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBI ZXkgUGF1bCw8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhl IHBhdGNoIGlzIGluIGRwZGsgYW5kIG5vdCBpbiBzcGRrLCBhbmQgdGhpcyBpcyB0aGU8YnI+CiZn dDsgcmVhc29uIEkgb2ZmZXJlZCB0byBzdXBwb3J0IGl0Ljxicj4KJmd0OyBUaGUgcGF0Y2ggKGJl bGxvdykgaXMgb25seSBhIGZldyBsaW5lcyBsb25nIG1vZGlmeWluZyB0aGUgZGVwcmVjYXRlZCBh dHRyaWJ1dGU8YnI+CiZndDsgZGVmaW5pdGlvbiwgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvbmZp ZywgYW5kIGFuIGV4dHJhIGNvbXBpbGF0aW9uIGZsYWcuPGJyPgomZ3Q7IEFsbCBvZiB0aGUgYWJv dmUgYXJlIHJlcXVpcmVkIGluIG9yZGVyIHRvIGJ1aWxkIGRwZGsgMTguMDEgb24gQ2VudE9TNiwg dGhlcmU8YnI+CiZndDsgYXJlIG5vIHByb2JsZW1zIGJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNi48 YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEkgdW5kZXJzdG9vZCB0aGF0IHlvdSBhcmUgYWxyZWFk eSBhcHBseWluZyBtaW5vciBwYXRjaGVzIHRvIGRwZGssIHNvIHF1ZXN0aW9uPGJyPgomZ3Q7IGlz LCB3aGV0aGVyIHRoaXMgcGF0Y2ggY2FuIGJlIGFkZGVkPzxicj4KJmd0OyZuYnNwOyA8YnI+CiZn dDsgVW5mb3J0dW5hdGVseSBkdWUgdG8gc29tZSBwZXJzb25hbCBpc3N1ZXMsIEkgYW0gdW5hYmxl IHRvIHBhcnRpY2lwYXRlIGluPGJyPgomZ3Q7IHRvZGF5J3MgbWVldGluZy48YnI+CiZndDsmbmJz cDsgPGJyPgomZ3Q7IFRoYW5rcyw8YnI+CiZndDsgU2hhaGFyPGJyPgomZ3Q7IEZyb206IFNQREsg Jmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIj5zcGRrLWJvdW5j ZXNAbGlzdHMuMDEub3JnPC9hPiZndDsgb24gYmVoYWxmIG9mIEx1c2UsIFBhdWwgRSAmbHQ7PGEg aHJlZj0ibWFpbHRvOnBhdWwuZS5sdXNlQCUwYiI+cGF1bC5lLmx1c2VAPGJyPgo8L2E+Jmd0OyBp bnRlbC5jb20mZ3Q7PGJyPgomZ3Q7IFNlbnQ6IFR1ZXNkYXksIE1heSA4LCAyMDE4IDQ6MjU6Mjkg UE08YnI+CiZndDsgVG86IFN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPgom Z3Q7IFN1YmplY3Q6IFJlOiBbU1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJyPgomZ3Q7 Jm5ic3A7IDxicj4KJmd0OyBIaSBTaGFoYXIsPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBDb3Vw bGUgb2YgcXVpY2sgdGhpbmdzOjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgKiB0aGFua3MgZm9y IHB1dHRpbmcgYWxsIHRoaXMgdGltZSBhbmQgZWZmb3J0IGludG8gdHJ5aW5nIHRvIG1ha2UgdGhp cyB3b3JrITxicj4KJmd0OyAqIGluIHRoZSBjb21tdW5pdHkgbW9kZWwsIHBhdGNoZXMgYXJlbpJ0 IGFjY2VwdGVkIGJhc2VkIG9uIG9uZSBpbmRpdmlkdWFsknM8YnI+CiZndDsgYWJpbGl0eS9kZXNp cmUgdG8gc3VwcG9ydCB0aGVtIHNvIGFwcHJlY2lhdGUgdGhlIG9mZmVyIGJ1dCBpbiBnZW5lcmFs IGFueTxicj4KJmd0OyBwYXRjaCB0aGF0IGlzIGFjY2VwdGVkIGJlY29tZXMgdGhlIHJlc3BvbnNp Ymx5IG9mIHRoZSBjb21tdW5pdHkgKG1vc3RseSB0aGU8YnI+CiZndDsgbWFpbnRhaW5lcnMpIHRv IHN1cHBvcnQgaXQgbG9uZyB0ZXJtLiZuYnNwOyBPdGhlcndpc2Ugd2WSZCBoYXZlIHdoYXQgSSBs aWtlIHRvIGNhbGw8YnI+CiZndDsgk3RoZSBmbGVhIG1hcmtldCBtb2RlbJQgd2hlcmUgdGhlcmWS cyBhIGJ1bmNoIG9mIHNlcGFyYXRlIGluZGl2aWR1YWxzPGJyPgomZ3Q7IHN1cHBvcnRpbmcgdGhl aXIgb3duIHRoaW5ncyB3aXRoIHZlcnkgbGl0dGxlIGNvaGVzaXZlbmVzcyBhY3Jvc3MgZXZlcnl0 aGluZyBKPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBTbywgd3J0IG5leHQgc3RlcHMsIGlmIHRo ZSBwYXRjaCBpc26SdCBhIHRyZW1lbmRvdXMgYW1vdW50IG9mIGVmZm9ydCBJIHdvdWxkPGJyPgom Z3Q7IHN1Z2dlc3QgeW91IGdvIGFoZWFkIGFuZCBzdWJtaXQgaXQuIFRoYXSScyB0aGUgYmVzdCB3 YXkgdG8gZ2V0IGV2ZXJ5b25lIG9uIHRoZTxicj4KJmd0OyBzYW1lIHBhZ2Ugd3J0IGV4YWN0bHkg d2hhdCB3ZZJyZSB0YWxraW5nIGFib3V0LiZuYnNwOyBJZiBpdCBpcyBzb21lIHNpZ25pZmljYW50 PGJyPgomZ3Q7IGVmZm9ydCB0aGVuLCBhcyBQYXdlbCBzdGF0ZXMsIHlvdSBjYW4gY2FsbCBpbnRv IGEgY29tbXVuaXR5IG1lZXRpbmcgKHNlZSBlbWFpbDxicj4KJmd0OyBJIHNlbnQgb3V0IGxhc3Qg bmlnaHQpIG9yIHlvdSBjYW4gZXhwbGFpbiBtb3JlIGRldGFpbHMgb24gdGhpcyBsaXN0Ljxicj4K Jmd0OyZuYnNwOyA8YnI+CiZndDsgVGhhbmtzIGFnYWluISE8YnI+CiZndDsgUGF1bDxicj4KJmd0 OyZuYnNwOyA8YnI+CiZndDsgRnJvbTogU1BESyBbPGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNl c0BsaXN0cy4wMS5vcmciIGlkPSJMUGxuazI3MDAwNyI+bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0 cy4wMS5vcmc8L2E+XSBPbiBCZWhhbGYgT2YgV29ka293c2tpLCBQYXdlbFg8YnI+CiZndDsgU2Vu dDogVHVlc2RheSwgTWF5IDgsIDIwMTggNTo1NyBBTTxicj4KJmd0OyBUbzogU3RvcmFnZSBQZXJm b3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAx Lm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4KJmd0OyBTdWJqZWN0OiBSZTogW1NQ REtdIEJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSSB0 aGluayBzb21lb25lIHdpbGwgYW5zd2VyIHlvdSBvbiB0aGlzIG1haWxpbmcgbGlzdCBidXQgdGhl cmUgaXMgY29tbXVuaXR5PGJyPgomZ3Q7IG1lZXRpbmcgdG9kYXkgdG9vLiBZb3UgY2FuIHJhaXNl IHRoaXMgaWYgeW91IHdpc2guPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBQYXdlbDxicj4KJmd0 OyZuYnNwOyA8YnI+CiZndDsgRnJvbTogU1BESyBbPGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNl c0BsaXN0cy4wMS5vcmciIGlkPSJMUGxuazIyMzQ0MyI+bWFpbHRvOnNwZGstYm91bmNlc0BsaXN0 cy4wMS5vcmc8L2E+XSBPbiBCZWhhbGYgT2YgU2hhaGFyIFNhbHptYW48YnI+CiZndDsgU2VudDog VHVlc2RheSwgTWF5IDgsIDIwMTggMjoyMyBQTTxicj4KJmd0OyBUbzogU3RvcmFnZSBQZXJmb3Jt YW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9y ZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4KJmd0OyBTdWJqZWN0OiBSZTogW1NQREtd IEJ1aWxkaW5nIHNwZGsgb24gQ2VudE9TNjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSGksPGJy PgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBJIGF0dGVtcHRlZCB0byBwdXNoIHRoZSBnY2Mgc3VwcG9y dCBwYXRjaCB0byBkcGRrLCBhbmQgZ290IHJlamVjdGVkIHNpbmNlIHRoZXk8YnI+CiZndDsgZG8g bm90IHdpc2ggdG8gc3VwcG9ydCBDZW50T1M2Ljxicj4KJmd0OyBXb3VsZCBpdCBiZSBwb3NzaWJs ZSB0byBtYW51YWxseSBhZGQgdGhlIHBhdGNoIHRvIHRoZSBzdXBwb3J0ZWQgZHBkayB2ZXJzaW9u PGJyPgomZ3Q7IChjdXJyZW50bHkgMTguMDEpLjxicj4KJmd0OyBJIHdvdWxkIGJlIGhhcHB5IHRv IHN1cHBvcnQgQ2VudE9TNiBpc3N1ZXMuPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBUaGFua3Ms PGJyPgomZ3Q7IFNoYWhhcjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgRnJvbTogU2hhaGFyIFNh bHptYW48YnI+CiZndDsgU2VudDogVHVlc2RheSwgQXByaWwgMjQsIDIwMTggMzo0MDo1MSBQTTxi cj4KJmd0OyBUbzogU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+CiZndDsg Q2M6IElsYW4gU3RlaW5iZXJnOyBJZG8gQmVuZGE7IFlhZWwgU2hhdml0PGJyPgomZ3Q7IFN1Ympl Y3Q6IFJlOiBCdWlsZGluZyBzcGRrIG9uIENlbnRPUzY8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7 IE9LLCBnb3QgZXZlcnl0aGluZyB0byB3b3JrLjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgRm9y IERQREssIEkgaGFkIHRvIHRvIGRvIHRoZSBmb2xsb3dpbmc6PGJyPgomZ3Q7IGFkZCBhIHBhdGNo IHRvIG1ha2UgdGhlIG5ldyBfX3J0ZV9leHBlcmltZW50YWwgYXR0cmlidXRlIHRvIHdvcms8YnI+ CiZndDsgcmVtb3ZlIGEgYnVuY2ggb2YgbW9kdWxlcyB2aWEgY29uZmlnIHdoaWNoIGhhZCBzb21l IGduYXJseSBjb21waWxhdGlvbiBlcnJvcnMsPGJyPgomZ3Q7IGFuZCBhcmUgbm90IG5lZWRlZCBm b3Igc3Bkazxicj4KJmd0OyB1c2UgLWZuby1zdHJpY3QtYWxpYXNpbmcgaW4gdGhlIEVYVFJBX0NG TEFHUyB0byBhdm9pZCBhIHRvbiBvZiBzdHJpY3QgYWxpYXNpbmc8YnI+CiZndDsgZXJyb3JzLjxi cj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSSB0cmllZCBzcGRrIDE4LjAxLCBhbmQgcmFuIGludG8g c29tZSBpc3N1ZXMgd2l0aCB0aGUgc2hhcmVkIGxpYnJhcnkgYnVpbGQuIEFzPGJyPgomZ3Q7IEkg c2F3IHRoYXQgRGFuaWVsIGhhZCBhbHJlYWR5IGRlYWx0IHdpdGggdGhlbSwgSSB0cmllZCBjaGVy cnkgcGlja2luZywgYnV0PGJyPgomZ3Q7IGV2ZW50dWFsbHkgdXNlZCB0aGUgbWFzdGVyIGJyYW5j aC48YnI+CiZndDsgSSBnb3QgdGhlc2UgdHlwZSBvZiB3YXJuaW5nczo8YnI+CiZndDsmbmJzcDsg PGJyPgomZ3Q7IC91c3IvYmluL2xkOiB3YXJuaW5nOiBsaWJydGVfbWJ1Zi5zby4zLjEsIG5lZWRl ZCBieTxicj4KJmd0OyAva2hvbWUvc2hhaGFyLnNhbHptYW4vS2FtaW5hcmlvL2dpdC9kcGRrL3g4 Nl82NC1uYXRpdmUtbGludXhhcHAtPGJyPgomZ3Q7IGdjYy9saWIvbGlicnRlX2J1c19wY2kuc28s IG5vdCBmb3VuZCAodHJ5IHVzaW5nIC1ycGF0aCBvciAtcnBhdGgtbGluayk8YnI+CiZndDsgL3Vz ci9iaW4vbGQ6IHdhcm5pbmc6IGxpYnJ0ZV9ldGhkZXYuc28uOC4xLCBuZWVkZWQgYnk8YnI+CiZn dDsgL2tob21lL3NoYWhhci5zYWx6bWFuL0thbWluYXJpby9naXQvZHBkay94ODZfNjQtbmF0aXZl LWxpbnV4YXBwLTxicj4KJmd0OyBnY2MvbGliL2xpYnJ0ZV9idXNfcGNpLnNvLCBub3QgZm91bmQg KHRyeSB1c2luZyAtcnBhdGggb3IgLXJwYXRoLWxpbmspPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0 OyBJIGFkZGVkIHRoZSBmb2xsb3dpbmcgcGF0Y2ggYmVsbG93IHRvIG1ha2UgdGhlbSBnbyBhd2F5 Ljxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgSSdsbCBhcHByb2FjaCB0aGUgZHBkayBjb21tdW5p dHkgb24gdGhlIG1haWxpbmcgbGlzdCBpbiBvcmRlciB0byBnZXQgdGhlPGJyPgomZ3Q7IF9fcnRl X2V4cGVyaW1lbnRhbCBzdHVmZiB0byB3b3JrLjxicj4KJmd0OyBNeSBmaW5hbCBjb25maWd1cmF0 aW9uIGlzOjxicj4KJmd0OyBDZW5yT1M2LjQ8YnI+CiZndDsgZ2NjIDQuNC43LTE3PGJyPgomZ3Q7 IGRwZGsgdjE4LjAyPGJyPgomZ3Q7IHNwZGsgbWFzdGVyPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0 OyBXaGF0IGFyZSB0aGUgbmV4dCBzdGVwcz88YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IFNoYWhh cjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgUC5TLiBIZXJlIGlzIHRoZSBwYXRjaCB0byByZW1v dmUgdGhlIHdhcm5pbmdzIGFib3ZlLjxicj4KJmd0OyBjb21taXQgZDRlZjc0NGRlMWNjNDkyODk3 MmI3MDQyZDFjOTBhZmYxMmRiNzg2Nzxicj4KJmd0OyBBdXRob3I6IHNoYWhhciBzYWx6bWFuICZs dDs8YSBocmVmPSJtYWlsdG86c2hhaGFyLnNhbHptYW5Aa2FtaW5hcmlvLmNvbSI+c2hhaGFyLnNh bHptYW5Aa2FtaW5hcmlvLmNvbTwvYT4mZ3Q7PGJyPgomZ3Q7IERhdGU6Jm5ic3A7Jm5ic3A7IFR1 ZSBBcHIgMjQgMTQ6MzE6NTIgMjAxOCAmIzQzOzAzMDA8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGxpYi9lbnZfZHBkazogYWRkIHJlcXVpcmVkIGxpYnJh cmllczxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgZGlmZiAtLWdpdCBhL2xpYi9lbnZfZHBkay9l bnYubWsgYi9saWIvZW52X2RwZGsvZW52Lm1rPGJyPgomZ3Q7IGluZGV4IDQ1MDA0M2MuLmI0NmJm ZWQgMTAwNjQ0PGJyPgomZ3Q7IC0tLSBhL2xpYi9lbnZfZHBkay9lbnYubWs8YnI+CiZndDsgJiM0 MzsmIzQzOyYjNDM7IGIvbGliL2Vudl9kcGRrL2Vudi5tazxicj4KJmd0OyBAQCAtNjgsNiAmIzQz OzY4LDE4IEBAIGlmbmVxICgkKHdpbGRjYXJkICQoRFBES19BQlNfRElSKS9saWIvbGlicnRlX21h bGxvYy4qKSwpPGJyPgomZ3Q7Jm5ic3A7IERQREtfTElCX0xJU1QgJiM0Mzs9IHJ0ZV9tYWxsb2M8 YnI+CiZndDsmbmJzcDsgZW5kaWY8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7ICYjNDM7aWZuZXEg KCwgJCh3aWxkY2FyZCAkKERQREtfQUJTX0RJUikvbGliL2xpYnJ0ZV9tYnVmLiopKTxicj4KJmd0 OyAmIzQzO0RQREtfTElCX0xJU1QgJiM0Mzs9IHJ0ZV9tYnVmPGJyPgomZ3Q7ICYjNDM7ZW5kaWY8 YnI+CiZndDsgJiM0Mzs8YnI+CiZndDsgJiM0MztpZm5lcSAoLCAkKHdpbGRjYXJkICQoRFBES19B QlNfRElSKS9saWIvbGlicnRlX25ldC4qKSk8YnI+CiZndDsgJiM0MztEUERLX0xJQl9MSVNUICYj NDM7PSBydGVfbmV0PGJyPgomZ3Q7ICYjNDM7ZW5kaWY8YnI+CiZndDsgJiM0Mzs8YnI+CiZndDsg JiM0MztpZm5lcSAoLCAkKHdpbGRjYXJkICQoRFBES19BQlNfRElSKS9saWIvbGlicnRlX2V0aGRl di4qKSk8YnI+CiZndDsgJiM0MztEUERLX0xJQl9MSVNUICYjNDM7PSBydGVfZXRoZGV2PGJyPgom Z3Q7ICYjNDM7ZW5kaWY8YnI+CiZndDsgJiM0Mzs8YnI+CiZndDsmbmJzcDsgIyBsaWJydGVfcGNp IGFuZCBsaWJydGVfYnVzX3BjaSB3ZXJlIGFkZGVkIGluIERQREsgMTcuMTEuIExpbmsgdGhlc2U8 YnI+CiZndDsgbGlicmFyaWVzIGNvbmRpdGlvbmFsbHk8YnI+CiZndDsmbmJzcDsgIyBiYXNlZCBv biB0aGVpciBleGlzdGVuY2UgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eS48YnI+ CiZndDsmbmJzcDsgaWZuZXEgKCwgJCh3aWxkY2FyZCAkKERQREtfQUJTX0RJUikvbGliL2xpYnJ0 ZV9wY2kuKikpPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsg PGJyPgomZ3Q7IEZyb206IFNQREsgJmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlz dHMuMDEub3JnIj5zcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPiZndDsgb24gYmVoYWxmIG9m IFNoYWhhciBTYWx6bWFuICZsdDtzaGFoYXIuc2FsPGJyPgomZ3Q7IDxhIGhyZWY9Im1haWx0bzp6 bWFuQGthbWluYXJpby5jb20iPnptYW5Aa2FtaW5hcmlvLmNvbTwvYT4mZ3Q7PGJyPgomZ3Q7IFNl bnQ6IFR1ZXNkYXksIEFwcmlsIDI0LCAyMDE4IDk6NTcgQU08YnI+CiZndDsgVG86IFN0b3JhZ2Ug UGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPgomZ3Q7IFN1YmplY3Q6IFJlOiBbU1BES10g QnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBHcmVhdCwg YW5kIHRoYW5rcyE8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEkgaGF2ZSBiZWVuIHJ1bm5pbmcg aW50byBpc3N1ZXMgY29tcGlsaW5nIGRwZGsgMTcuMTEgb24gQ2VudE9TNiAodGhlcmUgc2VlbXM8 YnI+CiZndDsgdG8gYmUgYSBnY2MgaXNzdWUgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBvdGhlciB2 ZXJzaW9ucyksIEknbGwgZm9jdXMgbXk8YnI+CiZndDsgZWZmb3J0cyBvbiBkcGRrIDE4LjAyLjxi cj4KJmd0OyBGcm9tOiBTUERLICZsdDs8YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3Rz LjAxLm9yZyI+c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT4mZ3Q7IG9uIGJlaGFsZiBvZiBW ZXJrYW1wLCBEYW5pZWwgJmx0O2RhbmllbC52ZTxicj4KJmd0OyA8YSBocmVmPSJtYWlsdG86cmth bXBAaW50ZWwuY29tIj5ya2FtcEBpbnRlbC5jb208L2E+Jmd0Ozxicj4KJmd0OyBTZW50OiBNb25k YXksIEFwcmlsIDIzLCAyMDE4IDk6NDA6MzYgUE08YnI+CiZndDsgVG86IFN0b3JhZ2UgUGVyZm9y bWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPgomZ3Q7IFN1YmplY3Q6IFJlOiBbU1BES10gQnVpbGRp bmcgc3BkayBvbiBDZW50T1M2PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBIaSBTaGFoYXIsPGJy PgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBJknZlIHB1c2hlZCBhIHBhdGNoIGZvciB0aGUgU1BESyBt YXN0ZXIgYnJhbmNoIHRoYXQgc2hvdWxkIGFsbG93IGl0IHRvIGNvbXBpbGU8YnI+CiZndDsgd2l0 aCBEUERLIDE2LjA3OiA8YSBocmVmPSJodHRwczovL3Jldmlldy5nZXJyaXRodWIuaW8vIy9jL3Nw ZGsvc3Bkay8mIzQzOy80MDg3NDMvIiBpZD0iTFBsbms1NzI3MTIiPgpodHRwczovL3Jldmlldy5n ZXJyaXRodWIuaW8vIy9jL3NwZGsvc3Bkay8mIzQzOy80MDg3NDMvPC9hPjxicj4KJmd0OyZuYnNw OyA8YnI+CiZndDsgR2Vycml0IENvZGUgUmV2aWV3PGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBy ZXZpZXcuZ2Vycml0aHViLmlvPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBLZWVwIGluIHRvdWNo LiBDb3B5cmlnaHQgqSAyMDE3IHwgR2Vycml0Rm9yZ2UgTHRkLiA8YSBocmVmPSJtYWlsdG86aW5m b0BnZXJyaXRmb3JnZS5jb20iPgppbmZvQGdlcnJpdGZvcmdlLmNvbTwvYT48YnI+CiZndDsgPGEg aHJlZj0iaHR0cDovL3d3dy5nZXJyaXRmb3JnZS5jb20iIGlkPSJMUGxuazMwNjMyIj53d3cuZ2Vy cml0Zm9yZ2UuY29tPC9hPjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7 IEhvd2V2ZXIsIERQREsgMTYuMDcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCB1cHN0cmVhbTsgSSBo aWdobHkgcmVjb21tZW5kIHRoYXQ8YnI+CiZndDsgeW91IHVwZGF0ZSB0byBhIG5ld2VyIHZlcnNp b24uIFNQREsgaXMgY3VycmVudGx5IHRlc3RlZCB3aXRoIERQREsgMTguMDIuPGJyPgomZ3Q7Jm5i c3A7IDxicj4KJmd0OyBUaGUgVkZJTyBpc3N1ZSB5b3UgbWVudGlvbiBoYXMgYWxzbyBiZWVuIGZp eGVkIG9uIFNQREsgbWFzdGVyLCBhbmQgaXQgd2lsbCBiZTxicj4KJmd0OyBwYXJ0IG9mIHRoZSBT UERLIHYxOC4wNCByZWxlYXNlLjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgVGhhbmtzLDxicj4K Jmd0OyAtLSBEYW5pZWw8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEZyb206IFNQREsgWzxhIGhy ZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIiBpZD0iTFBsbms4MjkxMDAiPm1h aWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnPC9hPl0gT24gQmVoYWxmIE9mIFNoYWhhciBT YWx6bWFuPGJyPgomZ3Q7IFNlbnQ6IFN1bmRheSwgQXByaWwgMjIsIDIwMTggNjo0MSBBTTxicj4K Jmd0OyBUbzogU3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQgJmx0OzxhIGhyZWY9 Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8L2E+Jmd0Ozxicj4K Jmd0OyBTdWJqZWN0OiBbU1BES10gQnVpbGRpbmcgc3BkayBvbiBDZW50T1M2PGJyPgomZ3Q7Jm5i c3A7IDxicj4KJmd0OyBIaSw8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IEZpbmFsbHkgZ290IHRv IGxvb2tpbmcgYXQgc3VwcG9ydCBvZiBzcGRrIGJ1aWxkIG9uIENlbnRPUzYsIHRoaW5ncyBsb29r IGdvb2QsPGJyPgomZ3Q7IGV4Y2VwdCBmb3Igb25lIGlzc3VlLjxicj4KJmd0OyBzcGRrIGlzIGxh dGVzdCAxOC4wMS54IHZlcnNpb24sIGRwZGsgaXMgMTYuMDcgKCYjNDM7MyBkcGRrIHBhdGNoZXMg dG8gYWxsb3c8YnI+CiZndDsgY29tcGlsYXRpb24pIGFuZCBzb21lIG1pbm9yIHBhdGNoZXMgKG1h aW5seSBzb21lIG1lbW9yeSBjb25maWd1cmF0aW9uIHN0dWZmKSw8YnI+CiZndDsga2VybmVsIGlz IGEgcGF0Y2hlZCA0LjkuNi48YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IGJ1aWxkIHN1Y2NlZWRl ZCBleGNlcHQgZm9yIHRoZSB1c2FnZSBvZiB0aGUgZHBkayBmdW5jdGlvbiBwY2lfdmZpb19pc19l bmFibGVkLjxicj4KJmd0OyBJIGhhZCB0byBhcHBseSB0aGUgcGF0Y2ggYmVsbG93LCByZW1vdmlu ZyB0aGUgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbiBhbmQgdGhlbjxicj4KJmd0OyBjb21waWxhdGlv biBjb21wbGV0ZWQgd2l0aG91dCBhbnkgaXNzdWVzLjxicj4KJmd0OyZuYnNwOyA8YnI+CiZndDsg SXQgc2VlbXMgdGhhdCBJIGFtIG1pc3Npbmcgc29tZSBzb3J0IG9mIGRwZGsgY29uZmlndXJhdGlv biBhcyBJIHNlZSB0aGF0IHRoZTxicj4KJmd0OyBmdW5jdGlvbiBpcyBidWlsdCwgYnV0IG5vdCBw YWNrYWdlZCBpbnRvIHRoZSBnZW5lcmF0ZWQgYXJjaGl2ZS48YnI+CiZndDsmbmJzcDsgPGJyPgom Z3Q7IEkgd2VudCBiYWNrIHRvIHNxdWFyZSBvbmUgYW5kIHJhbiB0aGUgaW5zdHJ1Y3Rpb25zIGlu IDxhIGhyZWY9Imh0dHA6Ly93d3cuc3Bkay5pby9kb2MvZyIgaWQ9IkxQbG5rMjkzMzAxIj4KaHR0 cDovL3d3dy5zcGRrLmlvL2RvYy9nPC9hPjxicj4KJmd0OyBldHRpbmdfc3RhcnRlZC5odG1sLCBi dXQgSSBzZWUgbm8gbWVudGlvbiBvZiBkcGRrIHRoZXJlLiBBY3R1YWxseSB0aGU8YnI+CiZndDsg Li9jb25maWd1cmUgcmVxdWlyZXMgaXQuPGJyPgomZ3Q7Jm5ic3A7IDxicj4KJmd0OyBNeSBuZXh0 IHN0ZXAgaXMgdG8gdXNlIGEgbW9yZSByZWNlbnQgZHBkaywgYnV0IHNob3VsZG4ndCB0aGlzIHdv cmsgd2l0aCBteTxicj4KJmd0OyB2ZXJzaW9uPyBBbSBJIG1pc3Npbmcgc29tZSBkcGRrIGNvbmZp Z3VyYXRpb24/PGJyPgomZ3Q7IEJUVywgYXMgd2UgYXJlIG5vdCB1c2luZyB2aG9zdCwgb24gb3Vy IDE3LjA3IHZlcnNpb24gd2Ugc2ltcGx5IHVzZTxicj4KJmd0OyBDT05GSUdfVkhPU1Q9biBpbiBv cmRlciB0byBza2lwIHRoaXMsIGJ1dCBJIHdvdWxkIGJlIGhhcHBpZXIgaWYgd2UgdXNlZCBhPGJy PgomZ3Q7IGJldHRlciBzb2x1dGlvbi48YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IFNoYWhhcjxi cj4KJmd0OyZuYnNwOyA8YnI+CiZndDsgUC5TLiBIZXJlIGlzIHRoZSBwYXRjaCB0byByZW1vdmUg dXNlIG9mIHRoaXMgZnVuY3Rpb246PGJyPgomZ3Q7IGRpZmYgLS1naXQgYS9saWIvZW52X2RwZGsv dnRvcGh5cy5jIGIvbGliL2Vudl9kcGRrL3Z0b3BoeXMuYzxicj4KJmd0OyBpbmRleCA5MmFhMjU2 Li5mMzg5MjlmIDEwMDY0NDxicj4KJmd0OyAtLS0gYS9saWIvZW52X2RwZGsvdnRvcGh5cy5jPGJy PgomZ3Q7ICYjNDM7JiM0MzsmIzQzOyBiL2xpYi9lbnZfZHBkay92dG9waHlzLmM8YnI+CiZndDsg QEAgLTUzLDggJiM0Mzs1MywxMCBAQDxicj4KJmd0OyZuYnNwOyAjZGVmaW5lIFNQREtfVkZJT19F TkFCTEVEIDE8YnI+CiZndDsmbmJzcDsgI2luY2x1ZGUgJmx0O2xpbnV4L3ZmaW8uaCZndDs8YnI+ CiZndDsmbmJzcDsgPGJyPgomZ3Q7ICYjNDM7I2lmIDA8YnI+CiZndDsmbmJzcDsgLyogSW50ZXJu YWwgRFBESyBmdW5jdGlvbiBmb3J3YXJkIGRlY2xhcmF0aW9uICovPGJyPgomZ3Q7Jm5ic3A7IGlu dCBwY2lfdmZpb19pc19lbmFibGVkKHZvaWQpOzxicj4KJmd0OyAmIzQzOyNlbmRpZjxicj4KJmd0 OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgc3RydWN0IHNwZGtfdmZpb19kbWFfbWFwIHs8YnI+CiZn dDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0 IHZmaW9faW9tbXVfdHlwZTFfZG1hX21hcCBtYXA7PGJyPgomZ3Q7IEBAIC0zNDEsOSAmIzQzOzM0 MywxMSBAQCBzcGRrX3Z0b3BoeXNfaW9tbXVfaW5pdCh2b2lkKTxicj4KJmd0OyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBESVIgKmRpcjs8YnI+CiZndDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IGRp cmVudCAqZDs8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7ICYjNDM7I2lmIDA8YnI+CiZndDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKCFwY2lfdmZp b19pc19lbmFibGVkKCkpIHs8YnI+CiZndDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgcmV0dXJuOzxicj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyB9PGJyPgomZ3Q7ICYjNDM7I2VuZGlmPGJyPgomZ3Q7Jm5ic3A7IDxi cj4KJmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBk aXIgPSBvcGVuZGlyKCZxdW90Oy9wcm9jL3NlbGYvZmQmcXVvdDspOzxicj4KJmd0OyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoIWRpcikgezxicj4K Jmd0OyZuYnNwOyA8YnI+CiZndDsmbmJzcDsgPGJyPgomZ3Q7IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgomZ3Q7IFNQREsgbWFpbGluZyBsaXN0PGJy PgomZ3Q7IDxhIGhyZWY9Im1haWx0bzpTUERLQGxpc3RzLjAxLm9yZyI+U1BES0BsaXN0cy4wMS5v cmc8L2E+PGJyPgomZ3Q7IDxhIGhyZWY9Imh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlz dGluZm8vc3BkayIgaWQ9IkxQbG5rNjYxMzQyIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFu L2xpc3RpbmZvL3NwZGs8L2E+PGJyPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXzxicj4KU1BESyBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpT UERLQGxpc3RzLjAxLm9yZyI+U1BES0BsaXN0cy4wMS5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRw czovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3NwZGsiIGlkPSJMUGxuazU4OTI4MSI+ aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9zcGRrPC9hPjwvc3Bhbj48L3A+ CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4K PC9ib2R5Pgo8L2h0bWw+Cg== --===============4395304608057518548==--