From masaki@sakura.mochipon.com  Tue Mar  6 02:27:49 2012
Return-Path: <masaki@sakura.mochipon.com>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 928C9106566B;
	Tue,  6 Mar 2012 02:27:49 +0000 (UTC)
	(envelope-from masaki@sakura.mochipon.com)
Received: from sakura.mochipon.com (sakura.mochipon.com [IPv6:2001:e41:31d4:7acc::1])
	by mx1.freebsd.org (Postfix) with ESMTP id 3439B8FC12;
	Tue,  6 Mar 2012 02:27:49 +0000 (UTC)
Received: from sakura.mochipon.com (localhost [127.0.0.1])
	by sakura.mochipon.com (8.14.4/8.14.4) with ESMTP id q262Rlpn035167;
	Tue, 6 Mar 2012 11:27:47 +0900 (JST)
	(envelope-from masaki@sakura.mochipon.com)
Received: (from masaki@localhost)
	by sakura.mochipon.com (8.14.4/8.14.4/Submit) id q262Rfib035166;
	Tue, 6 Mar 2012 11:27:41 +0900 (JST)
	(envelope-from masaki)
Message-Id: <201203060227.q262Rfib035166@sakura.mochipon.com>
Date: Tue, 6 Mar 2012 11:27:41 +0900 (JST)
From: Masaki TAGAWA <masaki@club.kyutech.ac.jp>
Reply-To: Masaki TAGAWA <masaki@club.kyutech.ac.jp>
To: FreeBSD-gnats-submit@freebsd.org
Cc: masaki@club.kyutech.ac.jp, scheidell@freebsd.org
Subject: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         165765
>Category:       ports
>Synopsis:       [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    scheidell
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 06 02:30:14 UTC 2012
>Closed-Date:    Sat Apr 07 16:37:01 UTC 2012
>Last-Modified:  Sat Apr  7 16:40:03 UTC 2012
>Originator:     Masaki TAGAWA
>Release:        FreeBSD 8.2-RELEASE-p5 amd64
>Organization:
Kyushu Institute of Technology
>Environment:
System: FreeBSD sakura.mochipon.com 8.2-RELEASE-p5 FreeBSD 8.2-RELEASE-p5 #2: Thu Jan 5 19:32:16 JST 2012 root@sakura.mochipon.com:/usr/obj/usr/src/sys/SAKURA-VPS amd64
>Description:
	- Modern revamping japanese/p5-Mail-SpamAssassin to work as a slave port
		- See: p5-Mail-SpamAssassin.shar
	- To work this slave port, some assignments on mail/p5-Mail-SpamAssassin should be changed
		- See: p5-Mail-SpamAssassin.diff
		- CC'd maintainer <scheidell@FreeBSD.org>
>How-To-Repeat:
	
>Fix:

	

--- p5-Mail-SpamAssassin.diff begins here ---
diff -ruN /tmp/p5-Mail-SpamAssassin.org/Makefile /tmp/p5-Mail-SpamAssassin/Makefile
--- /tmp/p5-Mail-SpamAssassin.org/Makefile	2012-02-08 00:17:28.000000000 +0900
+++ /tmp/p5-Mail-SpamAssassin/Makefile	2012-03-06 08:55:28.445163638 +0900
@@ -219,7 +219,7 @@
 .endif
 	@${INSTALL_DATA} ${WRKSRC}/spamc/libspamc.h ${PREFIX}/include
 
-post-install:
+post-install::
 .if defined (WITH_SPAMC)
 	@${STRIP_CMD} ${PREFIX}/bin/spamc
 .endif
--- p5-Mail-SpamAssassin.diff ends here ---

--- p5-Mail-SpamAssassin.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	p5-Mail-SpamAssassin
#	p5-Mail-SpamAssassin/Makefile
#	p5-Mail-SpamAssassin/distinfo
#	p5-Mail-SpamAssassin/pkg-message
#
echo c - p5-Mail-SpamAssassin
mkdir -p p5-Mail-SpamAssassin > /dev/null 2>&1
echo x - p5-Mail-SpamAssassin/Makefile
sed 's/^X//' >p5-Mail-SpamAssassin/Makefile << '00a579efcf618b9ea8e34785b9e57740'
X# New ports collection makefile for:	ja-p5-Mail-SpamAssassin
X# Date created:				Jun 24 2007
X# Whom:					TAOKA Fumiyoshi
X#
X# $FreeBSD: ports/japanese/p5-Mail-SpamAssassin/Makefile,v 1.28 2012/01/15 21:04:10 jgh Exp $
X#
X
XPORTNAME=Mail-SpamAssassin
XPORTREVISION= 2
XCATEGORIES=	japanese mail perl5
XPKGNAMEPREFIX=	ja-p5-
XDIST_SUBDIR= ja-spamassassin
X
XPATCH_SITES= http://spamassassin.emaillab.jp/pub/ja-patch/sa${PORTVERSION:R}/:JA
XPATCHFILES=	spamassassin-${PORTVERSION}-ja-${PATCHLEVEL}.patch:JA
XPATCHLEVEL=	1
XPATCH_DIST_STRIP= -p1
X
XMAINTAINER=	masaki@club.kyutech.ac.jp
XCOMMENT= SpamAssassin with paches for handle multibyte character
X
XMASTERDIR= ${.CURDIR}/../../mail/p5-Mail-SpamAssassin
X
XRUN_DEPENDS+= ja-p5-MeCab>=0.98:${PORTSDIR}/japanese/p5-MeCab
X
XCONFLICTS= p5-Mail-SpamAssassin-[0-9]*
X
XPKGMESSAGE= ${.CURDIR}/pkg-message
XDISTINFO_FILE= ${.CURDIR}/distinfo
X
XPORTDOCS+= ${DOCJA}
X
XDOCJA= ${PATCHFILES:S/.patch:JA/.txt/}
XTOKENIZER_PRE= tokenizer.pre
X
Xpost-install::
X	@${CP} ${DISTDIR}/${DIST_SUBDIR}/${TOKENIZER_PRE} ${PREFIX}/etc/mail/spamassassin/${TOKENIZER_PRE}.sample
X	@[ -f ${PREFIX}/etc/mail/spamassassin/${TOKENIZER_PRE} ] || \
X		${CP} ${PREFIX}/etc/mail/spamassassin/${TOKENIZER_PRE}.sample \
X			${PREFIX}/etc/mail/spamassassin/${TOKENIZER_PRE}
X
X.if !defined(NOPORTDOCS)
X	@${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/${DOCJA} ${DOCSDIR}
X.endif
X
X.include "${MASTERDIR}/Makefile"
00a579efcf618b9ea8e34785b9e57740
echo x - p5-Mail-SpamAssassin/distinfo
sed 's/^X//' >p5-Mail-SpamAssassin/distinfo << '6afdeefed8f212432234b9edf05e0e5a'
XSHA256 (ja-spamassassin/Mail-SpamAssassin-3.3.2.tar.gz) = 5323038939a0ef9fc97d5264defce3ae1d95e98b3a94c4c3b583341c927f32df
XSIZE (ja-spamassassin/Mail-SpamAssassin-3.3.2.tar.gz) = 1208182
XSHA256 (ja-spamassassin/spamassassin-3.3.2-ja-1.patch) = 073e9eaebf0dc2bf9e90f894c171a7654dad8444ed269528045e547302b7136a
XSIZE (ja-spamassassin/spamassassin-3.3.2-ja-1.patch) = 33740
6afdeefed8f212432234b9edf05e0e5a
echo x - p5-Mail-SpamAssassin/pkg-message
sed 's/^X//' >p5-Mail-SpamAssassin/pkg-message << 'cc5722da4a1afb9f9af1f5489b4b76f7'
X*************************************************************************
X*	    _  _____ _____ _____ _   _ _____ ___ ___  _   _ 		*
X*	   / \|_   _|_   _| ____| \ | |_   _|_ _/ _ \| \ | |		*
X*	  / _ \ | |   | | |  _| |  \| | | |  | | | | |  \| |		*
X*	 / ___ \| |   | | | |___| |\  | | |  | | |_| | |\  |		*
X*	/_/   \_\_|   |_| |_____|_| \_| |_| |___\___/|_| \_|		*
X*									*
X*	See PREFIX/share/doc/p5-Mail-SpamAssassin/INSTALL,		*
X*	and PREFIX/share/doc/p5-Mail-SpamAssassin/UPGRADE,		*
X*	or http://spamassassin.org/dist/INSTALL and			*
X*	http://spamassassin.org/dist/UPGRADE BEFORE enabling		*
X*	this version of SpamAssassin for important information		*
X*	regarding changes in this version.				*
X*									*
X*	SpamAssassin may require additional configuration in		*
X*	PREFIX/etc/mail/spamassassin/init.pre depending on		*
X*	the options you have installed.	 Otherwise, annoying		*
X*	(but harmless) error messages may result.  Read the		*
X*	files listed above.						*
X*									*
X*************************************************************************
XYou may wish to run sa-update now to obtain the latest rules.
X
XNOTE:  FREEBSD users: If you are updating from a version prior to 3.20.
Xsa-update now places state files in /var/db/spamassassin and not 
X/var/lib/spamassassin.  This is to be consistant with Freebsd file
Xdirectory conventions.
X
XIf you run sa-compile, you will notice that files are in 
X/var/db/spamassassin/compiled/<perlversion>/<version> instead of
X/var/db/spamassassin/compiled/<version>.
XNo attempts have been made to move old versions over. You must recompile.
X
XIf you are running with spamd, you must add the following to rc.conf:
Xspamd_enable="YES"
X
XSecurity Note:  If you did NOT deselected AS_ROOT, spamd will be running
Xas root. To change this, also add this to rc.conf:
Xspamd_flags="-u spamd -H /var/spool/spamd"
X
X************************************************************************
XFor Japanese users, see document in
XPREFIX/share/doc/ja-p5-Mail-SpamAssassin/
Xand
Xhttp://emaillab.jp/spamassassin/ja-patch/
X
XTokenizer::MeCab uses UTF-8 encoding.  You may have to manually
X(re)install the following ports with the build options for UTF-8:
X	japanese/mecab		WITH_CHARSET=utf-8
X	japanese/mecab-ipadic	WITH_CHARSET=utf-8
X	japanese/p5-MeCab
X************************************************************************
cc5722da4a1afb9f9af1f5489b4b76f7
exit
--- p5-Mail-SpamAssassin.shar ends here ---


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->perl 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Tue Mar 6 02:30:32 UTC 2012 
Responsible-Changed-Why:  
perl@ wants this port PRs (via the GNATS Auto Assign Tool) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=165765 
 
 Date: Wed, 21 Mar 2012 17:35:24 -0700
 From: Jason Helfman <jgh@FreeBSD.org>
 Sender: Jason Helfman <bsd-src@helfman.org>
 To: Michael Scheidell <scheidell@freebsd.org>
 Cc: bug-followup@freebsd.org
 Subject: Re: [PATCH] mail/p5-Mail-SpamAssassin: add support for AutoWhiteList
  (AWL)
 
  On Wed, Mar 21, 2012 at 08:28:22PM -0400, Michael Scheidell thus spake:
  >we went over this before, maybe not with you, but with others.
  >
  >I am not going to put an option knob in for something that does not
  >change the port, does not change the package, does not bring in more (or
  >less) dependencies, especially when awl is deprecated.
  >
  Where is it deprecated? Did you read the log?
  The fact that was in there originally and removed without any proof of when
  or how it was deprecated seems premature.
  
  It was me.
  
  -jgh
  
  -- 
  Jason Helfman         | FreeBSD Committer
  jgh@FreeBSD.org       | http://people.freebsd.org/~jgh
Responsible-Changed-From-To: perl->scheidell 
Responsible-Changed-By: scheidell 
Responsible-Changed-When: Fri Mar 23 14:13:39 UTC 2012 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=165765 
State-Changed-From-To: open->feedback 
State-Changed-By: scheidell 
State-Changed-When: Fri Mar 23 14:14:15 UTC 2012 
State-Changed-Why:  
Masaki: 

Thanks, this is looking better, or at least the concept is. 
Normally, for a portupdate or portrevision, you should send in a patch, (diff -ruN) against olv vs new. 
The reason you normally want to do that, is that the port committer can quickly look at the diff, and see what you changed. 
(this way, they can concentrate their portsfoo on the changes made, in case their is a problem) 
In this case, the diff might be very messy, because, you, are, in effect, mostly trashing the old ja-p5-Mail-SpamAssassin, and  
this is almost a 'new port'. 

My real question is, and maybe its something I don't know or understand: (and maybe my ignorance) 

in this port, you have a patch to p5-Mail-SpamAssassin: 
diff -ruN /tmp/p5-Mail-SpamAssassin.org/Makefile /tmp/p5-Mail-SpamAssassin/Makefile 
--- /tmp/p5-Mail-SpamAssassin.org/Makefile	2012-02-08 00:17:28.000000000 +0900 
+++ /tmp/p5-Mail-SpamAssassin/Makefile	2012-03-06 08:55:28.445163638 +0900 
@@ -219,7 +219,7 @@ 
.endif 
@${INSTALL_DATA} ${WRKSRC}/spamc/libspamc.h ${PREFIX}/include 

-post-install: 
+post-install:: 
.if defined (WITH_SPAMC) 
@${STRIP_CMD} ${PREFIX}/bin/spamc 
.endif 

What does the extra: add? again, maybe my ignorance, and I don't know if I have ever seen this before. 

(note: once this slave port is committed, life will be a lot easier for you and your users.  I, as the p5-Mail-SpamAssassin  
maintainer, if I have a revision to my port that affects you, it will be automatic: 

if a portversion changes, that will automatically change the new portversion for ja-p5-Mail-SpamAssassin. 
if I make a portrevision change, I will just bump the portrevision+1 in your port and commit it.  That way your users will be  
able to see the update and take advantage of any patches or minor fixes. 

Any other questions, let me know. 

Thanks for the work.  I suppose you got thrown into the fire with this.  A slave port is one of the hardest ports to do! 


http://www.freebsd.org/cgi/query-pr.cgi?pr=165765 

From: Michael Scheidell <scheidell@FreeBSD.org>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: ports/165765: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
Date: Fri, 23 Mar 2012 10:49:35 -0400

 Nevermind about the :: jgh explained it to me.
 
 But:
 please run portlint -abt before you submit anything.
 
 
 the shar you uploaded seems to be a 'copy/paste' from something.  this 
 does not preserve the [tab] vs [space].
 FATAL: Makefile: [9]: use a tab (not space) after a variable name
 FATAL: Makefile: [12]: use a tab (not space) after a variable name
 FATAL: Makefile: [14]: use a tab (not space) after a variable name
 FATAL: Makefile: [17]: use a tab (not space) after a variable name
 FATAL: Makefile: [20]: use a tab (not space) after a variable name
 FATAL: Makefile: [22]: use a tab (not space) after a variable name
 WARN: Makefile: [24]: use a tab (not space) after a variable name
 FATAL: Makefile: [26]: use a tab (not space) after a variable name
 FATAL: Makefile: [28]: use a tab (not space) after a variable name
 FATAL: Makefile: [29]: use a tab (not space) after a variable name
 WARN: Makefile: [31]: use a tab (not space) after a variable name
 FATAL: Makefile: [33]: use a tab (not space) after a variable name
 FATAL: Makefile: [34]: use a tab (not space) after a variable name
 
 
 And, this warning/and fatal:
 
 WARN: Makefile: extra item placed in the PATCH_SITES section, for 
 example, "PATCHLEVEL".
 FATAL: Makefile: extra item "MASTERDIR" placed in the LICENSE section.
 
 I can't tell from the shar if you want the rest of the files/* patches 
 deleted, or left alone.
 I can't tell if you need the pkg-* files you didn't touch deleted or 
 left alone.
 
 please doublecheck everything, edit the makefile and fix the above, and 
 then ATTACH (don't cut paste) a diff -ruN to the pr and I can test this.
 
 (to attach to an existing pr might be difficult, but, here is a 
 'workaround' if your command line mail on your server won't attach:
 #1, if you open a pr, and use cli tools, do a 'send-pr -a 
 {portpatch.patchfilename}'
 #2, if you use elm or mutt, (elm is -A), you also would use (for 
 followup!), the subject and 'to' that you would get from clicking on 
 'submit followup' on the web.
 
 if all else fails, attach the patch and just email the patch (as an 
 attachment!, not cut/paste) to me.
 
 
 
 -- 
 Michael Scheidell, CTO
  >*| * SECNAP Network Security Corporation
 d: +1.561.948.2259
 w: http://people.freebsd.org/~scheidell

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/165765: commit references a PR
Date: Tue, 27 Mar 2012 23:18:42 +0000 (UTC)

 scheidell    2012-03-27 23:18:33 UTC
 
   FreeBSD ports repository
 
   Modified files:
     mail/p5-Mail-SpamAssassin Makefile 
   Log:
   - Update to support ja-p5-Mail-SpamAssassin slave port
   - No PORTREVISION BUMP
   
   PR:             ports/165765
   Submitted by:   Masaki TAGAWA <masaki@club.kyutech.ac.jp>
   Feature safe:   yes
   
   Revision  Changes    Path
   1.153     +1 -1      ports/mail/p5-Mail-SpamAssassin/Makefile
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 

From: Masaki TAGAWA <masaki@club.kyutech.ac.jp>
To: bug-followup@freebsd.org
Cc: scheidell@freebsd.org, masaki@club.kyutech.ac.jp
Subject: Re: ports/165765: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
Date: Wed, 28 Mar 2012 10:13:54 +0900

 --e89a8f83a6456add3b04bc435364
 Content-Type: text/plain; charset=ISO-8859-1
 
 On Fri, Mar 23, 2012 at 23:24,  <scheidell@freebsd.org> wrote:
 > In this case, the diff might be very messy, because, you, are, in effect, mostly trashing the old ja-p5-Mail-SpamAssassin, and
 > this is almost a 'new port'.
 Yes, I thought so too.
 You can delete the rest of the files/* patches and pkg-* files. Files
 in the shar are all for this port.
 
 I edited some files and fixed. I sent a shar file, because I changed a
 lot from first one.
 I say again, (only) created files by this shar are all for this port.
 
 Notices are below.
 
 - Overwrite: pkg-message
  - I have to add some massages for japanese users, so that file was
 overwritten on this port.
 - Overwrite: post-install:: at Makefile
  - As you know, I have to install some files and docs, I made an
 addition to "post-install"
   - We have to use "::" because we want to execute lines in
 mail/p5-Mail-SpamAssassin, also some lines in
 japanese/p5-Mail-SpamAssassin
 - Add: PLIST, pre-install: at Makefile
  - The patch makes some new files. To create a packing list is
 correct, I took this workaround.
 - Add: files/spamassassin-3.3.2-ja-1.* files/tokenizer.pre
  - In the past, this port used PATCH_SITES, PATCHFILES and some
 workaround. That's Ok, but this is more smart. LICENCE checked.
 
 -- 
 Masaki TAGAWA
 
 --e89a8f83a6456add3b04bc435364
 Content-Type: application/x-shar; name="p5-Mail-SpamAssassin.shar"
 Content-Disposition: attachment; filename="p5-Mail-SpamAssassin.shar"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_h0bo2o890
 
 IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUgYW55
 dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50ZXJpbmcg
 InNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQg
 ZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBlcm1p
 c3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJcDUtTWFpbC1TcGFtQXNzYXNz
 aW4KIwlwNS1NYWlsLVNwYW1Bc3Nhc3Npbi9wa2ctbWVzc2FnZQojCXA1LU1haWwtU3BhbUFzc2Fz
 c2luL2ZpbGVzCiMJcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvdG9rZW5pemVyLnByZQojCXA1
 LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3NwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnR4dAojCXA1
 LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3NwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBhdGNoCiMJ
 cDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvc3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGxpc3QK
 IwlwNS1NYWlsLVNwYW1Bc3Nhc3Npbi9NYWtlZmlsZQojCmVjaG8gYyAtIHA1LU1haWwtU3BhbUFz
 c2Fzc2luCm1rZGlyIC1wIHA1LU1haWwtU3BhbUFzc2Fzc2luID4gL2Rldi9udWxsIDI+JjEKZWNo
 byB4IC0gcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLW1lc3NhZ2UKc2VkICdzL15YLy8nID5wNS1N
 YWlsLVNwYW1Bc3Nhc3Npbi9wa2ctbWVzc2FnZSA8PCAnY2M1NzIyZGE0YTFhZmI5ZjlhZjFmNTQ4
 OWI0Yjc2ZjcnClgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
 KioqKioqKioqKioqKioqKioqKioqKioqKioqClgqCSAgICBfICBfX19fXyBfX19fXyBfX19fXyBf
 ICAgXyBfX19fXyBfX18gX19fICBfICAgXyAJCSoKWCoJICAgLyBcfF8gICBffF8gICBffCBfX19f
 fCBcIHwgfF8gICBffF8gXy8gXyBcfCBcIHwgfAkJKgpYKgkgIC8gXyBcIHwgfCAgIHwgfCB8ICBf
 fCB8ICBcfCB8IHwgfCAgfCB8IHwgfCB8ICBcfCB8CQkqClgqCSAvIF9fXyBcfCB8ICAgfCB8IHwg
 fF9fX3wgfFwgIHwgfCB8ICB8IHwgfF98IHwgfFwgIHwJCSoKWCoJL18vICAgXF9cX3wgICB8X3wg
 fF9fX19ffF98IFxffCB8X3wgfF9fX1xfX18vfF98IFxffAkJKgpYKgkJCQkJCQkJCSoKWCoJU2Vl
 IFBSRUZJWC9zaGFyZS9kb2MvcDUtTWFpbC1TcGFtQXNzYXNzaW4vSU5TVEFMTCwJCSoKWCoJYW5k
 IFBSRUZJWC9zaGFyZS9kb2MvcDUtTWFpbC1TcGFtQXNzYXNzaW4vVVBHUkFERSwJCSoKWCoJb3Ig
 aHR0cDovL3NwYW1hc3Nhc3Npbi5vcmcvZGlzdC9JTlNUQUxMIGFuZAkJCSoKWCoJaHR0cDovL3Nw
 YW1hc3Nhc3Npbi5vcmcvZGlzdC9VUEdSQURFIEJFRk9SRSBlbmFibGluZwkJKgpYKgl0aGlzIHZl
 cnNpb24gb2YgU3BhbUFzc2Fzc2luIGZvciBpbXBvcnRhbnQgaW5mb3JtYXRpb24JCSoKWCoJcmVn
 YXJkaW5nIGNoYW5nZXMgaW4gdGhpcyB2ZXJzaW9uLgkJCQkqClgqCQkJCQkJCQkJKgpYKglTcGFt
 QXNzYXNzaW4gbWF5IHJlcXVpcmUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGluCQkqClgqCVBS
 RUZJWC9ldGMvbWFpbC9zcGFtYXNzYXNzaW4vaW5pdC5wcmUgZGVwZW5kaW5nIG9uCQkqClgqCXRo
 ZSBvcHRpb25zIHlvdSBoYXZlIGluc3RhbGxlZC4JIE90aGVyd2lzZSwgYW5ub3lpbmcJCSoKWCoJ
 KGJ1dCBoYXJtbGVzcykgZXJyb3IgbWVzc2FnZXMgbWF5IHJlc3VsdC4gIFJlYWQgdGhlCQkqClgq
 CWZpbGVzIGxpc3RlZCBhYm92ZS4JCQkJCQkqClgqCQkJCQkJCQkJKgpYKioqKioqKioqKioqKioq
 KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
 KgpYWW91IG1heSB3aXNoIHRvIHJ1biBzYS11cGRhdGUgbm93IHRvIG9idGFpbiB0aGUgbGF0ZXN0
 IHJ1bGVzLgpYClhOT1RFOiAgRlJFRUJTRCB1c2VyczogSWYgeW91IGFyZSB1cGRhdGluZyBmcm9t
 IGEgdmVyc2lvbiBwcmlvciB0byAzLjIwLgpYc2EtdXBkYXRlIG5vdyBwbGFjZXMgc3RhdGUgZmls
 ZXMgaW4gL3Zhci9kYi9zcGFtYXNzYXNzaW4gYW5kIG5vdCAKWC92YXIvbGliL3NwYW1hc3Nhc3Np
 bi4gIFRoaXMgaXMgdG8gYmUgY29uc2lzdGFudCB3aXRoIEZyZWVic2QgZmlsZQpYZGlyZWN0b3J5
 IGNvbnZlbnRpb25zLgpYClhJZiB5b3UgcnVuIHNhLWNvbXBpbGUsIHlvdSB3aWxsIG5vdGljZSB0
 aGF0IGZpbGVzIGFyZSBpbiAKWC92YXIvZGIvc3BhbWFzc2Fzc2luL2NvbXBpbGVkLzxwZXJsdmVy
 c2lvbj4vPHZlcnNpb24+IGluc3RlYWQgb2YKWC92YXIvZGIvc3BhbWFzc2Fzc2luL2NvbXBpbGVk
 Lzx2ZXJzaW9uPi4KWE5vIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlIHRvIG1vdmUgb2xkIHZlcnNp
 b25zIG92ZXIuIFlvdSBtdXN0IHJlY29tcGlsZS4KWApYSWYgeW91IGFyZSBydW5uaW5nIHdpdGgg
 c3BhbWQsIHlvdSBtdXN0IGFkZCB0aGUgZm9sbG93aW5nIHRvIHJjLmNvbmY6ClhzcGFtZF9lbmFi
 bGU9IllFUyIKWApYU2VjdXJpdHkgTm90ZTogIElmIHlvdSBkaWQgTk9UIGRlc2VsZWN0ZWQgQVNf
 Uk9PVCwgc3BhbWQgd2lsbCBiZSBydW5uaW5nClhhcyByb290LiBUbyBjaGFuZ2UgdGhpcywgYWxz
 byBhZGQgdGhpcyB0byByYy5jb25mOgpYc3BhbWRfZmxhZ3M9Ii11IHNwYW1kIC1IIC92YXIvc3Bv
 b2wvc3BhbWQiClgKWCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
 KioqKioqKioqKioqKioqKioqKioqKioqKioqKgpYRm9yIEphcGFuZXNlIHVzZXJzLCBzZWUgZG9j
 dW1lbnRzIGluClhQUkVGSVgvc2hhcmUvZG9jL2phLXA1LU1haWwtU3BhbUFzc2Fzc2luLwpYYW5k
 ClhodHRwOi8vZW1haWxsYWIuanAvc3BhbWFzc2Fzc2luL2phLXBhdGNoLwpYClhUb2tlbml6ZXI6
 Ok1lQ2FiIHVzZXMgVVRGLTggZW5jb2RpbmcuICBZb3UgbWF5IGhhdmUgdG8gbWFudWFsbHkKWChy
 ZSlpbnN0YWxsIHRoZSBmb2xsb3dpbmcgcG9ydHMgd2l0aCB0aGUgYnVpbGQgb3B0aW9ucyBmb3Ig
 VVRGLTg6ClgJamFwYW5lc2UvbWVjYWIJCVdJVEhfQ0hBUlNFVD11dGYtOApYCWphcGFuZXNlL21l
 Y2FiLWlwYWRpYwlXSVRIX0NIQVJTRVQ9dXRmLTgKWAlqYXBhbmVzZS9wNS1NZUNhYgpYKioqKioq
 KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
 KioqKioqKioqCmNjNTcyMmRhNGExYWZiOWY5YWYxZjU0ODliNGI3NmY3CmVjaG8gYyAtIHA1LU1h
 aWwtU3BhbUFzc2Fzc2luL2ZpbGVzCm1rZGlyIC1wIHA1LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVz
 ID4gL2Rldi9udWxsIDI+JjEKZWNobyB4IC0gcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvdG9r
 ZW5pemVyLnByZQpzZWQgJ3MvXlgvLycgPnA1LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3Rva2Vu
 aXplci5wcmUgPDwgJzNlYzM5MGY4NGY0OGI1ZGU3MjBmOWMzNDMzMzg0NmE0JwpYClgjIFRva2Vu
 aXplcjo6U2ltcGxlSkEKWCMKWGxvYWRwbHVnaW4gTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46
 OlRva2VuaXplcjo6U2ltcGxlSkEKWApYIyBUb2tlbml6ZXI6Ok1lQ2FiClgjClgjbG9hZHBsdWdp
 biBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyOjpNZUNhYgozZWMzOTBmODRm
 NDhiNWRlNzIwZjljMzQzMzM4NDZhNAplY2hvIHggLSBwNS1NYWlsLVNwYW1Bc3Nhc3Npbi9maWxl
 cy9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS50eHQKc2VkICdzL15YLy8nID5wNS1NYWlsLVNwYW1B
 c3Nhc3Npbi9maWxlcy9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS50eHQgPDwgJzhhYWVmMGYxZjVl
 MTgwZDBkYzMxYmU4YjZlNWU3ZTBkJwpYc3BhbWFzc2Fzc2luLTMuMy4yLWphLnBhdGNoICgyMDEx
 LTA3LTE5KQpYClgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClhSRUFETUUKWApYLS0tLQpY5qaC6KaBClgK
 WOOCquODquOCuOODiuODq+OBrlNwYW1Bc3Nhc3NpbuOBrjMuM+ezu+WIl+OBr25vcm1hbGl6ZV9j
 aGFyc2V044Kq44OX44K344On44Oz44KS5pyJ5Yq544Gr44GZ44KLCljjgZPjgajjgavjgojjgorj
 gIHml6XmnKzoqp7nrYnjga7jg57jg6vjg4Hjg5DjgqTjg4jjga7mloflrZfjgpJVVEYtOOOBq+at
 o+imj+WMluOBl+OBpuOBi+OCieOAgeODq+ODvOODq+OBrgpY6KmV5L6h44KS6KGM44GG44GT44Go
 44GM44Gn44GN44KL44GT44Go44GM5oSP5Zuz44GV44KM44Gm44GE44G+44GZ44CCCljjgZfjgYvj
 gZfjgIFTcGFtQXNzYXNzaW4gMy4zLjLjgafjga/jgIHlrp/jga/jgZPjga7oqK3lrprjgqrjg5fj
 grfjg6fjg7Pjga/ljYHliIbjgavjga/mqZ/og73jgZfjgabjgYQKWOOBvuOBm+OCk+OAggpY44Gd
 44Gu44Gf44KB44CB44GT44Gu5pel5pys6Kqe5a++5b+c44OR44OD44OB44Gn44Gv5pel5pys6Kqe
 562J44Gu44Oe44Or44OB44OQ44Kk44OI5paH5a2X44Gu6KiA6Kqe44KS5q2j44GX44GPCljmibHj
 gYbjgZPjgajjgYzjgafjgY3jgovjgojjgYbjgavjgZfjgabjgYTjgb7jgZnjgIIKWApY44Gq44GK
 44CB44GT44Gu44OR44OD44OB44Gv5pel5pysU3BhbUFzc2Fzc2lu44Om44O844K25LyaKGh0dHA6
 Ly9zcGFtYXNzYXNzaW4uanAvKeOBq+OCiOOCigpY6ZaL55m644GM6KGM44KP44KM44Gm44GE44G+
 44GZ44CCClgKWC0tLS0KWOODkOODvOOCuOODp+ODszMuMuezu+WIl+OBruaXpeacrOiqnuODkeOD
 g+ODgeOBqOOBrumBleOBhApYCljliIbjgYvjgaHmm7jjgY3jga7jgZ/jgoHjgavjgIEzLjLns7vl
 iJfjgafjga9NZUNhYuOBqOOBneOBrlBlcmzjg5DjgqTjg7Pjg4fjgqPjg7PjgrDjga7lrp/oo4Xj
 ga7kuIDjgaTjgafjgYLjgosKWFRleHQ6Ok1lQ2Fi44Oi44K444Ol44O844Or44KS5L2/44Gj44Gm
 44GE44G+44GX44Gf44GM44CBMy4z57O75YiX44Gn44GvTWVDYWLmqJnmupbjga5QZXJs44OQ44Kk
 44OH44Kj44OzCljjgrDjga5tZWNhYi1wZXJs44Oi44K444Ol44O844Or44KS5L2/44GG44KI44GG
 44Gr44Gq44KK44G+44GX44Gf44CCClgKWC0tLS0KWOaXpeacrOiqnuODkeODg+ODgeOCkuW9k+OB
 puOBpuOBhOOBquOBhOeJqeOBqOOBrumBleOBhApYClhJU08tMjAyMi1KUOOBruaWh+Wtl+OCkuOD
 kOOCpOODiOaWh+Wtl+OBp+iomOi/sOOBmeOCi+ODq+ODvOODq+OBr25vcm1hbGl6ZV9jaGFyc2V0
 44Kq44OX44K344On44OzCljjgpLmnInlirnjgavjgZnjgovjgajkvb/jgYjjgarjgY/jgarjgorj
 gb7jgZnjgIIKWApYLS0tLQpY44OR44OD44OB44Gu6YWN5biD5YWDClgKWOasoeOBruOCteOCpOOD
 iOOBi+OCieaXpeacrOiqnuWvvuW/nOODkeODg+ODgeOCkuODgOOCpuODs+ODreODvOODieOBp+OB
 jeOBvuOBmeOAggpYICBodHRwOi8vc3BhbWFzc2Fzc2luLmVtYWlsbGFiLmpwL3B1Yi9qYS1wYXRj
 aC9zYTMuMy8KWApY5Lul5LiL44Gu44OR44OD44OB562J44KS44OA44Km44Oz44Ot44O844OJ44Gn
 44GN44G+44GZ44CCClgKWOiqrOaYjuODleOCoeOCpOODq++8iOOBk+OBruODleOCoeOCpOODq++8
 iQpYICBzcGFtYXNzYXNzaW4tMy4zLjItamEtMS50eHQKWApY5pel5pys6Kqe5a++5b+c44OR44OD
 44OB77yI57eP5ZCI44OR44OD44OB77yJClggIHNwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBhdGNo
 ClgKWOWIhuOBi+OBoeabuOOBjeODl+ODqeOCsOOCpOODs+OBruioreWumuODleOCoeOCpOODqwpY
 ICB0b2tlbml6ZXIucHJlClgKWC0tLS0KWOOBk+OBruODkeODg+ODgeOBjOS7peS4i+OBruOBk+OB
 qOOCkuihjOOBo+OBpuOBhOOBvuOBmeOAggpYClggICAgKiBub3JtYWxpemVfY2hhcnNldOOCquOD
 l+OCt+ODp+ODs+OBruaUueiJrwpYICAgICAgICAgIG8gVVRGLTjjga7mloflrZfjgYzmloflrZfo
 kL3jgaHjgZnjgovjg5DjgrDjga7kv67mraMKWCAgICAgICAgICBvIOWIpOWumuaWueazleOBruaU
 ueiJrwpYICAgICog5paH5a2X44Ko44Oz44Kz44O844OH44Kj44Oz44Kw44KE6KiA6Kqe44Gu5Yik
 5a6a44Gr6Zai44GZ44KL44Om44O844OG44Kj44Oq44OG44Kj44Oi44K444Ol44O844Or44Gu6L+9
 5YqgClggICAgKiByZXBvcnRfY2hhcnNldOOCquODl+OCt+ODp+ODs+OBruaUueiJrwpYICAgICog
 44OZ44Kk44K444Ki44Oz44OV44Kj44Or44K/44GuVVRGLTjlr77lv5wKWCAgICAgICAgICBvIFVU
 Ri0444Gu5paH5a2X44GM5paH5a2X6JC944Gh44GZ44KL44OQ44Kw44Gu5L+u5q2jClggICAgKiDj
 g5njgqTjgrjjgqLjg7Pjg5XjgqPjg6vjgr/jga7ml6XmnKzoqp7lr77lv5wKWCAgICAgICAgICBv
 IOaXpeacrOiqnuOBruODiOODvOOCr+ODiuOCpOOCtuODvOOBrui/veWKoApYCljjgZPjga7jg5Hj
 g4Pjg4HjgYzmj5DkvpvjgZnjgovmqZ/og73jga/mrKHjga7jgoLjga7jgafjgZnjgIIKWApYICAg
 ICog44OG44K544OI44GuVVRGLTjlr77lv5wKWCAgICAgIOODmOODg+ODgOODhuOCueODiOOChOOD
 nOODh+OCo+ODhuOCueODiOOBp+ODkeOCv+ODvOODs+OCklVURi0444Gu5paH5a2X44Ko44Oz44Kz
 44O844OH44Kj44Oz44Kw44Gn6KiY6L+wClggICAgICDjgafjgY3jgovjgIIKWApYICAgICAg5L6L
 KQpYICAgICAgICAgaGVhZGVyICAgU1VCSl9NSVNIT0RBS1UgIFN1YmplY3QgPX4gLyjmnKp85pyr
 KeaJv+irvi8KWCAgICAgICAgIGJvZHkgICAgIERFQUkgICAgICAgICAgICAv5Ye6KOS8mnzpgKIp
 LwpYClggICAgKiDjg5njgqTjgrrjg5XjgqPjg6vjgr/jga7ml6XmnKzoqp7lr77lv5wKWCAgICAg
 IOODmeOCpOOCuuODleOCo+ODq+OCv+OBp+aXpeacrOiqnuOBruaWh+abuOOCkuato+OBl+OBj+Wt
 pue/kuODu+WIpOWumuOBp+OBjeOCi+OCiOOBhuOBq+OBquOCi+OAggpYCljjgZPjga7jg5Hjg4Pj
 g4Hjga7liLbpmZDkuovpoIXjga/mrKHjga7pgJrjgorjgafjgZnjgIIKWApYICAgICogc2EtY29t
 cGlsZeOBr1VURi0444Gu5paH5a2X44GM5ZCr44G+44KM44Gm44GE44KL44Go44Kz44Oz44OR44Kk
 44Or44Gu5a++6LGh5aSW44Gr44Gq44KK44G+44GZ44CCClggICAgICDjgZPjgozjga9TcGFtQXNz
 YXNzaW7jga7ku5Xmp5jjgafjgZnjgIIKWApYICAgICog44OR44K/44O844Oz44Gr44GK44GE44Gm
 VVRGLTjjga7mloflrZfjga7jg5bjg6njgrHjg4Pjg4jooajnj77vvIjmloflrZfjgq/jg6njgrnv
 vInjgpLkvb/nlKjjgZnjgosKWCAgICAgIOOBk+OBqOOBjOOBp+OBjeOBvuOBm+OCk+OAggpYICAg
 ICAg44Gk44G+44KKIi9b44GC44O844GKXSsvIuOBruOCiOOBhuOBquODkeOCv+ODvOODs+OCkuS9
 v+OBhuOBk+OBqOOBjOOBp+OBjeOBvuOBm+OCk+OAggpYClgtLS0tCljkvb/jgYTmlrkKWApYMS4g
 6Kit5a6a44OV44Kh44Kk44OrbGNvYWwuY2bjgavmrKHjga7ooYzjgpLoqJjov7DjgZfjgb7jgZnj
 gIIKWCAgICAgICBub3JtYWxpemVfY2hhcnNldCAxClgKWDIuIHRva2VuaXplci5wcmUo5Yil6YWN
 5biDKeOCkmxvY2FsLmNm44Go5ZCM44GY44OH44Kj44Os44Kv44OI44Oq44Gr44Kz44OU44O844GX
 44Gm5qyh44Gu6KGM44GuClggICDjgrPjg6Hjg7Pjg4jjgpLop6PpmaTjgZfjgaZTaW1wbGVKQeOD
 l+ODqeOCsOOCpOODs+OCkuacieWKueOBq+OBl+OBvuOBmeOAggpYICAgICAgIGxvYWRwbHVnaW4g
 TWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcjo6U2ltcGxlSkEKWCAgIFNpbXBs
 ZUpB44Gv5paH5a2X56iu77yI5ryi5a2X44CB44Gy44KJ44GM44Gq44CB44Kr44K/44Kr44OK44CB
 6Iux5pWw5a2X77yJ44Gr44KI44KK5YiG44GL44Gh5pu444GN44KSClggICDooYzjgYbjg5fjg6nj
 grDjgqTjg7PjgafjgZnjgIIKWCAgIOeyvuW6puOBrumrmOOBhOWIhuOBi+OBoeabuOOBjeOCkuih
 jOOBhuWgtOWQiOOBq+OBr01lQ2Fi44OX44Op44Kw44Kk44Oz44KS5L2/44Gj44Gm44GP44Gg44GV
 44GE44CCClggICBNZUNhYuODl+ODqeOCsOOCpOODs+OCkuS9v+OBhuWgtOWQiOOBr+asoeOBruih
 jOOBruOCs+ODoeODs+ODiOOCkuino+mZpOOBl+OBpuacieWKueOBq+OBl+OBvuOBmeOAggpYICAg
 ICAgIGxvYWRwbHVnaW4gTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcjo6TWVD
 YWIKWApYMy4gVVRGLTjlr77lv5zjga7jgqjjg4fjgqPjgr/jgafoqK3lrprjg5XjgqHjgqTjg6ts
 b2NhbC5jZix1c2VyX3ByZWZz562J44KS57eo6ZuG44GX44Gm44CBaGVhZGVyClggICDjg4bjgrnj
 g4jjgagiYm9keSLjg6vjg7zjg6vjgavjgYrjgYTjgabml6XmnKzoqp7jgafjg5Hjgr/jg7zjg7Pj
 gpLoqJjov7DjgZfjgb7jgZnjgIIKWCAgIOiomOi/sOOBl+OBn+OCieOAgeOBk+OBruODleOCoeOC
 pOODq+OCkuaWh+Wtl+OCqOODs+OCs+ODvOODh+OCo+ODs+OCsOOCklVURi0444Gr5oyH5a6a44GX
 44Gm5L+d5a2Y44GX44GmClggICDjgY/jgaDjgZXjgYTjgIIKWApYICAg44Or44O844Or44Gu6KiY
 6L+w5L6LOgpYICAgICAgIGhlYWRlciAgIFNVQkpfTUlTSE9EQUtVICBTdWJqZWN0ID1+IC8o5pyq
 fOacqynmib/oq74vClggICAgICAgZGVzY3JpYmUgU1VCSl9NSVNIT0RBS1UgIFN1YmplY3Q6IG1p
 c2hvZGFrdQpYICAgICAgIHNjb3JlICAgIFNVQkpfTUlTSE9EQUtVICAyLjUKWApYICAgICAgIGJv
 ZHkgICAgIERFQUkgICAgICAgICAgICAv5Ye6KOS8mnzpgKIpLwpYICAgICAgIGRlc2NyaWJlIERF
 QUkgICAgICAgICAgICAnZGVhaScKWCAgICAgICBzY29yZSAgICBERUFJICAgICAgICAgICAgMC41
 ClgKWDQuICJzcGFtYXNzYXNzaW4gLS1saW50IuOCkuWun+ihjOOBl+OBpuOAgeODr+ODvOODi+OD
 s+OCsOOBjOWHuuOBpuOBhOOBquOBhOOBi+OCkueiuuiqjeOBl+OBvuOBmeOAggpYClg1LiDku6Xk
 uIrjgafmupblgpnjgYzmlbTjgYTjgb7jgZfjgZ/jga7jgadzcGFtZOetieOBruODh+ODvOODouOD
 s+OCkuWIqeeUqOOBl+OBpuOBhOOCi+S6uuOBr+ODh+ODvOODouODswpYICAg44KS5YaN6LW35YuV
 44GX44Gm44GP44Gg44GV44GE44CCClgKWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KWElOU1RBTEwKWApY
 LS0tLQpY5LqL5YmN5rqW5YKZClgKWOasoeOBruOCveODleODiOOCpuOCp+OCouOCkuS6i+WJjeOB
 q+OCpOODs+OCueODiOODvOODq+OBl+OBpuOBj+OBoOOBleOBhOOAggpY44Gq44GK44CBMiwzLDTj
 gavplqLjgZfjgabjga9Ub2tlbml6ZXI6Ok1lQ2Fi44OX44Op44Kw44Kk44Oz44KS5L2/44GG5aC0
 5ZCI44Gr5b+F6KaB44Gn44GZ44CCClgKWDEuIOaWh+Wtl+OCqOODs+OCs+ODvOODh+OCo+ODs+OC
 sOaknOWHuuWZqEVuY29kZTo6RGV0ZWN0ClggICDphY3luIPlhYM6IGh0dHA6Ly9zZWFyY2guY3Bh
 bi5vcmcvfmpnbXllcnMvRW5jb2RlLURldGVjdC8KWApYMi4g5b2i5oWL57Sg6Kej5p6Q44Ko44Oz
 44K444OzTWVDYWIKWCAgIOW/heimgeOBqOOBmeOCi+ODkOODvOOCuOODp+ODszogMC45OOS7pemZ
 jQpYICAg6YWN5biD5YWDOiBodHRwOi8vbWVjYWIuc291cmNlZm9yZ2UuanAvClggICDjgqTjg7Pj
 grnjg4jjg7zjg6vmmYLjga7ms6jmhI/kuovpoIU6ClggICAgIC0gLi9jb25maWd1cmXjga7jgqrj
 g5fjgrfjg6fjg7PjgaciLS13aXRoLWNoYXJzZXQ9dXRmOCLjgpLku5jjgZHjgovlv4XopoHjgYzj
 gYLjgovjgIIKWApYMy4gTWVDYWLjga7ovp7mm7htZWNhYi1pcGFkaWMKWCAgIOW/heimgeOBqOOB
 meOCi+ODkOODvOOCuOODp+ODszogMi43LjAtMjAwNzA4MDHku6XpmY0KWCAgIOmFjeW4g+WFgzog
 aHR0cDovL21lY2FiLnNvdXJjZWZvcmdlLmpwLwpYICAg44Kk44Oz44K544OI44O844Or5pmC44Gu
 5rOo5oSP5LqL6aCFOgpYICAgICAtIC4vY29uZmlndXJl44Gu44Kq44OX44K344On44Oz44GnIi0t
 d2l0aC1jaGFyc2V0PXV0Zjgi44KS5LuY44GR44KL5b+F6KaB44GM44GC44KL44CCClgKWDQuIE1l
 Q2Fi44GuUGVybOODkOOCpOODs+ODh+OCo+ODs+OCsG1lY2FiLXBlcmwKWCAgIOW/heimgeOBqOOB
 meOCi+ODkOODvOOCuOODp+ODszogMC45OOS7pemZjQpYICAg6YWN5biD5YWDOiBodHRwOi8vbWVj
 YWIuc291cmNlZm9yZ2UuanAvClgKWC0tLS0KWFNwYW1Bc3Nhc3NpbgpYClhTcGFtQXNzYXNzaW7j
 ga50YXIgYmFsbOOCkuWxlemWi+W+jOOAgeOBk+OBruODkeODg+ODgeOCkuW9k+OBpuOBpuOBj+OB
 oOOBleOBhOOAggpYClggICAgY2QgTWFpbC1TcGFtQXNzYXNzaW4tMy4zLngKWCAgICBwYXRjaCAt
 cDEgPCBzcGFtYXNzYXNzaW4tMy4zLngtamEteXl5eS5wYXRjaApYCljlvozjga/jgIHpgJrluLjj
 ga5TcGFtQXNzYXNzaW7jga7jgqTjg7Pjgrnjg4jjg7zjg6vjgajlkIzjgZjjgafjgZnjgIIKWApY
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLQpYTElDRU5TRQpYClhBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
 LjDjgYzpganlv5zjgZXjgozjgb7jgZnjgIIKWApY44Op44Kk44K744Oz44K544Gr44Gk44GE44Gm
 44Gu6Kmz57Sw44Gv5LiL6KiYVVJM44KS5Y+C54Wn44GX44Gm44GP44Gg44GV44GE44CCClggICAg
 aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wClgKWC0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0KWEFVVEhPUgpYClgtIE1vdG9oYXJ1IEt1Ym8gPG1rdWJvIF9hdF8gM3dhcmUuY28u
 anA+ClgtIFRha2FzaGkgVGFraXphd2EgPHRha2kgX2F0XyAzd2FyZS5jby5qcD4gKEN1cnJlbnQg
 bWFpbnRhaW5lcikKWApYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpYVE9ETwpYClgtLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tClhDaGFuZ2VzClgKWC0tLS0KWHNwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBhdGNoICgy
 MDExLTA3LTE5KQpYClgtIFNwYW1Bc3Nhc3NpbiAzLjMuMuOBuOOBruWvvuW/nApYClgtLS0tClhz
 cGFtYXNzYXNzaW4tMy4zLjEtamEtMS5wYXRjaCAoMjAxMC0wOC0xNikKWApY5pen44OR44OD44OB
 c3BhbWFzc2Fzc2luLTMuMi41LW5vcm1hbGl6ZS10ZXN0MS5wYXRjaOOBi+OCieOBruWkieabtOeC
 uQpYClgtIE1lQ2Fi44GuUGVybOODkOOCpOODs+ODh+OCo+ODs+OCsOOBq21lY2FiLXBlcmzjgpLk
 vb/jgYbjgojjgYbjgavjgZfjgZ/jgIIKWApYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpYCjhhYWVmMGYx
 ZjVlMTgwZDBkYzMxYmU4YjZlNWU3ZTBkCmVjaG8geCAtIHA1LU1haWwtU3BhbUFzc2Fzc2luL2Zp
 bGVzL3NwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBhdGNoCnNlZCAncy9eWC8vJyA+cDUtTWFpbC1T
 cGFtQXNzYXNzaW4vZmlsZXMvc3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGF0Y2ggPDwgJ2M1ZWFl
 NDU3ZjViZmE2ODE1NzU2YzExYjhmYTgyN2FhJwpYZGlmZiAtdU5yIGxpYi9NYWlsL1NwYW1Bc3Nh
 c3Npbi9IVE1MLnBtIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9IVE1MLnBtClgtLS0gbGliL01haWwv
 U3BhbUFzc2Fzc2luL0hUTUwucG0JMjAxMS0wNi0wNyAwODo1OToxNy4wMDAwMDAwMDAgKzA5MDAK
 WCsrKyBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vSFRNTC5wbQkyMDExLTA3LTE0IDIyOjM1OjQ2LjAw
 MDAwMDAwMCArMDkwMApYQEAgLTg0LDcgKzg0LDcgQEAKWCAkb2tfYXR0cmlidXRlc3tzcGFufXsk
 X30gPSAxIGZvciBxdyggc3R5bGUgKTsKWCAKWCBzdWIgbmV3IHsKWC0gIG15ICgkY2xhc3MpID0g
 QF87ClgrICBteSAoJGNsYXNzLCAkb3B0cykgPSBAXzsKWCAgIG15ICRzZWxmID0gJGNsYXNzLT5T
 VVBFUjo6bmV3KApYIAkJYXBpX3ZlcnNpb24gPT4gMywKWCAJCWhhbmRsZXJzID0+IFsKWEBAIC05
 Nyw2ICs5Nyw3IEBAClggCQkJZGVjbGFyYXRpb24gPT4gWyJodG1sX2RlY2xhcmF0aW9uIiwgInNl
 bGYsdGV4dCJdLApYIAkJXSwKWCAJCW1hcmtlZF9zZWN0aW9ucyA9PiAxKTsKWCsgICRzZWxmLT57
 bm9ybWFsaXplfSA9ICRvcHRzLT57J25vcm1hbGl6ZSd9IHx8IDA7ClggClggICAkc2VsZjsKWCB9
 ClhAQCAtNjcyLDcgKzY3MywxNCBAQApYICAgICB9ClggICB9ClggICBlbHNlIHsKWC0gICAgJHRl
 eHQgPX4gcy9bIFx0XG5cclxmXHgwYlx4YTBdKy8gL2c7ClgrICAgIGlmICgkc2VsZi0+e25vcm1h
 bGl6ZX0pIHsKWCsgICAgICAkdGV4dCA9fiBzL1x4YzJceGEwLyAvZzsgICAgICAgICAgICMgbm8t
 YnJlYWsgc3BhY2UKWCsgICAgICAkdGV4dCA9fiBzL1x4ZTNceDgwXHg4MC8gL2c7ICAgICAgICMg
 aWRlb2dyYXBoaWNzcGFjZQpYKyAgICAgICR0ZXh0ID1+IHMvWyBcdFxuXHJcZlx4MGJdKy8gL2c7
 ClgrICAgIH0KWCsgICAgZWxzZSB7ClgrICAgICAgJHRleHQgPX4gcy9bIFx0XG5cclxmXHgwYlx4
 YTBdKy8gL2c7ClgrICAgIH0KWCAgICAgIyB0cmltIGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBwcmV2
 aW91cyBlbGVtZW50IHdhcyB3aGl0ZXNwYWNlIApYICAgICAjIGFuZCBjdXJyZW50IGVsZW1lbnQg
 aXMgbm90IGludmlzaWJsZQpYICAgICBpZiAoQHsgJHNlbGYtPnt0ZXh0fSB9ICYmICEkZGlzcGxh
 eXtpbnZpc2libGV9ICYmClhkaWZmIC11TnIgbGliL01haWwvU3BhbUFzc2Fzc2luL01lc3NhZ2Uv
 Tm9kZS5wbSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vTWVzc2FnZS9Ob2RlLnBtClgtLS0gbGliL01h
 aWwvU3BhbUFzc2Fzc2luL01lc3NhZ2UvTm9kZS5wbQkyMDExLTA2LTA3IDA4OjU5OjE3LjAwMDAw
 MDAwMCArMDkwMApYKysrIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9NZXNzYWdlL05vZGUucG0JMjAx
 MS0wNy0xNCAyMjozNTo0Ni4wMDAwMDAwMDAgKzA5MDAKWEBAIC00Miw2ICs0Miw3IEBAClggdXNl
 IE1haWw6OlNwYW1Bc3Nhc3Npbjo6Q29uc3RhbnRzIHF3KDpzYSk7ClggdXNlIE1haWw6OlNwYW1B
 c3Nhc3Npbjo6SFRNTDsKWCB1c2UgTWFpbDo6U3BhbUFzc2Fzc2luOjpMb2dnZXI7ClgrdXNlIE1h
 aWw6OlNwYW1Bc3Nhc3Npbjo6VXRpbDo6Q2hhcnNldDsKWCAKWCA9aXRlbSBuZXcoKQpYIApYQEAg
 LTM4NywyNyArMzg4LDEwIEBAClggClggc3ViIF9ub3JtYWxpemUgewpYICAgbXkgKCRzZWxmLCAk
 ZGF0YSwgJGNoYXJzZXQpID0gQF87ClgtICByZXR1cm4gJGRhdGEgdW5sZXNzICRzZWxmLT57bm9y
 bWFsaXplfTsKWCsgIHJldHVybiB3YW50YXJyYXkgPyAoJGRhdGEsICRjaGFyc2V0KSA6ICRkYXRh
 IHVubGVzcyAkc2VsZi0+e25vcm1hbGl6ZX07ClggClgtICBteSAkZGV0ZWN0ZWQgPSBFbmNvZGU6
 OkRldGVjdDo6RGV0ZWN0b3I6OmRldGVjdCgkZGF0YSk7ClgtClgtICBteSAkY29udmVydGVyOwpY
 LQpYLSAgaWYgKCRjaGFyc2V0ICYmICRjaGFyc2V0ICF+IC9edXMtYXNjaWkkL2kgJiYKWC0gICAg
 ICAoJGRldGVjdGVkIHx8ICdub25lJykgIX4gL14oPzpVVEZ8RVVDfElTTy0yMDIyfFNoaWZ0X0pJ
 U3xCaWc1fEdCKS9pKSB7ClgtICAgICAgZGJnKCJtZXNzYWdlOiBVc2luZyBsYWJlbGVkIGNoYXJz
 ZXQgJGNoYXJzZXQiKTsKWC0gICAgICAkY29udmVydGVyID0gRW5jb2RlOjpmaW5kX2VuY29kaW5n
 KCRjaGFyc2V0KTsKWC0gIH0KWC0KWC0gICRjb252ZXJ0ZXIgPSBFbmNvZGU6OmZpbmRfZW5jb2Rp
 bmcoJGRldGVjdGVkKSB1bmxlc3MgJGNvbnZlcnRlciB8fCAhZGVmaW5lZCgkZGV0ZWN0ZWQpOwpY
 LQpYLSAgcmV0dXJuICRkYXRhIHVubGVzcyAkY29udmVydGVyOwpYLQpYLSAgZGJnKCJtZXNzYWdl
 OiBDb252ZXJ0aW5nLi4uIik7ClgtClgtICBteSAkcnYgPSAkY29udmVydGVyLT5kZWNvZGUoJGRh
 dGEsIDApOwpYLSAgdXRmODo6ZG93bmdyYWRlKCRydiwgMSk7ClgtICByZXR1cm4gJHJ2ClgrICBt
 eSAoJGRlY29kZWRfZGF0YSwgJGRldGVjdGVkX2NoYXJzZXQpID0gbm9ybWFsaXplX2NoYXJzZXQo
 JGRhdGEsICRjaGFyc2V0KTsKWCsgIHJldHVybiB3YW50YXJyYXkgPyAoJGRlY29kZWRfZGF0YSwg
 JGRldGVjdGVkX2NoYXJzZXQpIDogJGRlY29kZWRfZGF0YTsKWCB9ClggClggPWl0ZW0gcmVuZGVy
 ZWQoKQpYQEAgLTQzMCw4ICs0MTQsMTIgQEAKWCAgICAgIyB0ZXh0L3gtYW9sIGlzIGlnbm9yZWQg
 aGVyZSwgYnV0IGxvb2tzIGxpa2UgdGV4dC9odG1sIC4uLgpYICAgICByZXR1cm4odW5kZWYsdW5k
 ZWYpIHVubGVzcyAoICRzZWxmLT57J3R5cGUnfSA9fiAvXnRleHRcLyg/OnBsYWlufGh0bWwpJC9p
 ICk7ClggClgtICAgIG15ICR0ZXh0ID0gJHNlbGYtPl9ub3JtYWxpemUoJHNlbGYtPmRlY29kZSgp
 LCAkc2VsZi0+e2NoYXJzZXR9KTsKWCsgICAgbXkgKCR0ZXh0LCAkY2hhcnNldCkgPSAkc2VsZi0+
 X25vcm1hbGl6ZSgkc2VsZi0+ZGVjb2RlKCksICRzZWxmLT57Y2hhcnNldH0pOwpYICAgICBteSAk
 cmF3ID0gbGVuZ3RoKCR0ZXh0KTsKWCsgICAgaWYgKCRzZWxmLT57bm9ybWFsaXplfSkgewpYKyAg
 ICAgICRzZWxmLT57Y2hhcnNldH0gPSAkY2hhcnNldDsKWCsgICAgICAkc2VsZi0+e2xhbmd1YWdl
 fSA9IGdldF9sYW5ndWFnZSgkdGV4dCwgJGNoYXJzZXQpOwpYKyAgICB9ClggClggICAgICMgcmVu
 ZGVyIHRleHQvaHRtbCBhbHdheXMsIG9yIGFueSBvdGhlciB0ZXh0fHRleHQvcGxhaW4gcGFydCBh
 cyB0ZXh0L2h0bWwKWCAgICAgIyBiYXNlZCBvbiBhIGhldXJpc3RpYyB3aGljaCBzaW11bGF0ZXMg
 YSBjZXJ0YWluIGNvbW1vbiBtYWlsIGNsaWVudApYQEAgLTQ0MSw3ICs0MjksNyBAQApYICAgICB7
 ClggICAgICAgJHNlbGYtPntyZW5kZXJlZF90eXBlfSA9ICd0ZXh0L2h0bWwnOwpYIApYLSAgICAg
 IG15ICRodG1sID0gTWFpbDo6U3BhbUFzc2Fzc2luOjpIVE1MLT5uZXcoKTsJIyBvYmplY3QKWCsg
 ICAgICBteSAkaHRtbCA9IE1haWw6OlNwYW1Bc3Nhc3Npbjo6SFRNTC0+bmV3KHtub3JtYWxpemU9
 PiRzZWxmLT57bm9ybWFsaXplfX0pOyAgICAgICAjIG9iamVjdApYICAgICAgICRodG1sLT5wYXJz
 ZSgkdGV4dCk7CQkJCSMgcGFyc2UrcmVuZGVyIHRleHQKWCAgICAgICAkc2VsZi0+e3JlbmRlcmVk
 fSA9ICRodG1sLT5nZXRfcmVuZGVyZWRfdGV4dCgpOwpYICAgICAgICRzZWxmLT57dmlzaWJsZV9y
 ZW5kZXJlZH0gPSAkaHRtbC0+Z2V0X3JlbmRlcmVkX3RleHQoaW52aXNpYmxlID0+IDApOwpYZGlm
 ZiAtdU5yIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9NZXNzYWdlLnBtIGxpYi9NYWlsL1NwYW1Bc3Nh
 c3Npbi9NZXNzYWdlLnBtClgtLS0gbGliL01haWwvU3BhbUFzc2Fzc2luL01lc3NhZ2UucG0JMjAx
 MS0wNi0wNyAwODo1OToxNy4wMDAwMDAwMDAgKzA5MDAKWCsrKyBsaWIvTWFpbC9TcGFtQXNzYXNz
 aW4vTWVzc2FnZS5wbQkyMDExLTA3LTE0IDIyOjM1OjQ2LjAwMDAwMDAwMCArMDkwMApYQEAgLTU1
 OSw2ICs1NTksOCBAQApYICAgZGVsZXRlICRzZWxmLT57J3ByaXN0aW5lX2hlYWRlcnMnfTsKWCAg
 IGRlbGV0ZSAkc2VsZi0+eydsaW5lX2VuZGluZyd9OwpYICAgZGVsZXRlICRzZWxmLT57J21pc3Np
 bmdfaGVhZF9ib2R5X3NlcGFyYXRvcid9OwpYKyAgZGVsZXRlICRzZWxmLT57J2NoYXJzZXQnfTsK
 WCsgIGRlbGV0ZSAkc2VsZi0+eydsYW5ndWFnZSd9OwpYIApYICAgbXkgQHRvY2xlYW4gPSAoICRz
 ZWxmICk7ClggClhAQCAtNTg1LDYgKzU4Nyw4IEBAClggICAgIGRlbGV0ZSAkcGFydC0+eydpbnZp
 c2libGVfcmVuZGVyZWQnfTsKWCAgICAgZGVsZXRlICRwYXJ0LT57J3R5cGUnfTsKWCAgICAgZGVs
 ZXRlICRwYXJ0LT57J3JlbmRlcmVkX3R5cGUnfTsKWCsgICAgZGVsZXRlICRzZWxmLT57J2NoYXJz
 ZXQnfTsKWCsgICAgZGVsZXRlICRzZWxmLT57J2xhbmd1YWdlJ307ClggClggICAgICMgaWYgdGhl
 cmUgYXJlIGNoaWxkcmVuIG5vZGVzLCBhZGQgdGhlbSB0byB0aGUgcXVldWUgb2Ygbm9kZXMgdG8g
 Y2xlYW4gdXAKWCAgICAgaWYgKGV4aXN0cyAkcGFydC0+eydib2R5X3BhcnRzJ30pIHsKWEBAIC0x
 MDE0LDcgKzEwMTgsMTQgQEAKWCAKWCAgICMgd2hpdGVzcGFjZSBoYW5kbGluZyAod2FybmluZzog
 c21hbGwgY2hhbmdlcyBoYXZlIGxhcmdlIGVmZmVjdHMhKQpYICAgJHRleHQgPX4gcy9cbitccypc
 bisvXGYvZ3M7CQkjIGRvdWJsZSBuZXdsaW5lcyA9PiBmb3JtIGZlZWQKWC0gICR0ZXh0ID1+IHRy
 LyBcdFxuXHJceDBiXHhhMC8gL3M7CSMgd2hpdGVzcGFjZSA9PiBzcGFjZQpYKyAgaWYgKCRzZWxm
 LT57bm9ybWFsaXplfSkgewpYKyAgICAkdGV4dCA9fiBzL1x4YzJceGEwLyAvZzsJCSMgbm8tYnJl
 YWsgc3BhY2UgPT4gc3BhY2UKWCsgICAgJHRleHQgPX4gcy9ceGUzXHg4MFx4ODAvIC9nOwkjIGlk
 ZW9ncmFwaGljc3BhY2UgPT4gc3BhY2UKWCsgICAgJHRleHQgPX4gdHIvIFx0XG5cclx4MGIvIC9z
 OwkjIHdoaXRlc3BhY2UgPT4gc3BhY2UKWCsgIH0KWCsgIGVsc2UgewpYKyAgICAkdGV4dCA9fiB0
 ci8gXHRcblxyXHgwYlx4YTAvIC9zOwkjIHdoaXRlc3BhY2UgPT4gc3BhY2UKWCsgIH0KWCAgICR0
 ZXh0ID1+IHRyL1xmL1xuLzsJCQkjIGZvcm0gZmVlZHMgPT4gbmV3bGluZQpYICAgClggICAjIHdh
 cm4gIm1lc3NhZ2U6ICR0ZXh0IjsKWEBAIC0xMDcxLDcgKzEwODIsMTQgQEAKWCAKWCAgICMgd2hp
 dGVzcGFjZSBoYW5kbGluZyAod2FybmluZzogc21hbGwgY2hhbmdlcyBoYXZlIGxhcmdlIGVmZmVj
 dHMhKQpYICAgJHRleHQgPX4gcy9cbitccypcbisvXGYvZ3M7CQkjIGRvdWJsZSBuZXdsaW5lcyA9
 PiBmb3JtIGZlZWQKWC0gICR0ZXh0ID1+IHRyLyBcdFxuXHJceDBiXHhhMC8gL3M7CSMgd2hpdGVz
 cGFjZSA9PiBzcGFjZQpYKyAgaWYgKCRzZWxmLT57bm9ybWFsaXplfSkgewpYKyAgICAkdGV4dCA9
 fiBzL1x4YzJceGEwLyAvZzsJCSMgbm8tYnJlYWsgc3BhY2UgPT4gc3BhY2UKWCsgICAgJHRleHQg
 PX4gcy9ceGUzXHg4MFx4ODAvIC9nOwkjIGlkZW9ncmFwaGljc3BhY2UgPT4gc3BhY2UKWCsgICAg
 JHRleHQgPX4gdHIvIFx0XG5cclx4MGIvIC9zOwkjIHdoaXRlc3BhY2UgPT4gc3BhY2UKWCsgIH0K
 WCsgIGVsc2UgewpYKyAgICAkdGV4dCA9fiB0ci8gXHRcblxyXHgwYlx4YTAvIC9zOwkjIHdoaXRl
 c3BhY2UgPT4gc3BhY2UKWCsgIH0KWCAgICR0ZXh0ID1+IHRyL1xmL1xuLzsJCQkjIGZvcm0gZmVl
 ZHMgPT4gbmV3bGluZQpYIApYICAgbXkgQHRleHRhcnkgPSBzcGxpdF9pbnRvX2FycmF5X29mX3No
 b3J0X2xpbmVzICgkdGV4dCk7ClhAQCAtMTEyMiw3ICsxMTQwLDE0IEBAClggClggICAjIHdoaXRl
 c3BhY2UgaGFuZGxpbmcgKHdhcm5pbmc6IHNtYWxsIGNoYW5nZXMgaGF2ZSBsYXJnZSBlZmZlY3Rz
 ISkKWCAgICR0ZXh0ID1+IHMvXG4rXHMqXG4rL1xmL2dzOwkJIyBkb3VibGUgbmV3bGluZXMgPT4g
 Zm9ybSBmZWVkClgtICAkdGV4dCA9fiB0ci8gXHRcblxyXHgwYlx4YTAvIC9zOwkjIHdoaXRlc3Bh
 Y2UgPT4gc3BhY2UKWCsgIGlmICgkc2VsZi0+e25vcm1hbGl6ZX0pIHsKWCsgICAgJHRleHQgPX4g
 cy9ceGMyXHhhMC8gL2c7CQkjIG5vLWJyZWFrIHNwYWNlID0+IHNwYWNlClgrICAgICR0ZXh0ID1+
 IHMvXHhlM1x4ODBceDgwLyAvZzsJIyBpZGVvZ3JhcGhpY3NwYWNlID0+IHNwYWNlClgrICAgICR0
 ZXh0ID1+IHRyLyBcdFxuXHJceDBiLyAvczsJIyB3aGl0ZXNwYWNlID0+IHNwYWNlClgrICB9Clgr
 ICBlbHNlIHsKWCsgICAgJHRleHQgPX4gdHIvIFx0XG5cclx4MGJceGEwLyAvczsJIyB3aGl0ZXNw
 YWNlID0+IHNwYWNlClgrICB9ClggICAkdGV4dCA9fiB0ci9cZi9cbi87CQkJIyBmb3JtIGZlZWRz
 ID0+IG5ld2xpbmUKWCAKWCAgIG15IEB0ZXh0YXJ5ID0gc3BsaXRfaW50b19hcnJheV9vZl9zaG9y
 dF9saW5lcyAoJHRleHQpOwpYQEAgLTExOTgsNiArMTIyMywyOCBAQApYIApYICMgLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tClggClgrc3ViIGdldF9sYW5ndWFnZSB7ClgrICBteSAoJHNlbGYpID0gQF87Clgr
 ClgrICBpZiAoZGVmaW5lZCAkc2VsZi0+e2xhbmd1YWdlfSkgeyByZXR1cm4gJHNlbGYtPntsYW5n
 dWFnZX07IH0KWCsgIG15IEBwYXJ0cyA9ICRzZWxmLT5maW5kX3BhcnRzKHFyL14oPzp0ZXh0fG1l
 c3NhZ2UpXGIvaSwxKTsKWCsgIHJldHVybiAnJyB1bmxlc3MgQHBhcnRzOwpYKwpYKyAgIyBHbyB0
 aHJvdWdoIGVhY2ggcGFydApYKyAgbXkgQGxhbmdzOwpYKyAgZm9yKG15ICRwdCA9IDAgOyAkcHQg
 PD0gJCNwYXJ0cyA7ICRwdCsrICkgewpYKyAgICBteSAkcCA9ICRwYXJ0c1skcHRdOwpYKyAgICBt
 eSAkbGFuZyA9ICRwLT57bGFuZ3VhZ2V9OwpYKyAgICBuZXh0IHVubGVzcyAoJGxhbmcpOwpYKyAg
 ICBwdXNoKEBsYW5ncywgJGxhbmcpIHVubGVzcyAoZ3JlcCgvXiRsYW5nJC8sIEBsYW5ncykpClgr
 ICB9ClgrICAkc2VsZi0+e2xhbmd1YWdlfSA9IHNjYWxhcihAbGFuZ3MpID8gam9pbignICcsIEBs
 YW5ncykgOiAnJzsKWCsgIHJldHVybiAkc2VsZi0+e2xhbmd1YWdlfTsKWCt9ClgrClgrIyAtLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0KWCsKWCsKWCAxOwpYIApYID1iYWNrClhkaWZmIC11TnIgbGliL01haWwv
 U3BhbUFzc2Fzc2luL1Blck1zZ1N0YXR1cy5wbSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGVyTXNn
 U3RhdHVzLnBtClgtLS0gbGliL01haWwvU3BhbUFzc2Fzc2luL1Blck1zZ1N0YXR1cy5wbQkyMDEx
 LTA2LTA3IDA4OjU5OjE3LjAwMDAwMDAwMCArMDkwMApYKysrIGxpYi9NYWlsL1NwYW1Bc3Nhc3Np
 bi9QZXJNc2dTdGF0dXMucG0JMjAxMS0wNy0xNCAyMjozNTo0Ni4wMDAwMDAwMDAgKzA5MDAKWEBA
 IC01Myw2ICs1Myw3IEBAClggdXNlIHdhcm5pbmdzOwpYIHVzZSByZSAndGFpbnQnOwpYIApYK3Vz
 ZSBFbmNvZGU7ClggdXNlIFRpbWU6OkhpUmVzIHF3KHRpbWUpOwpYIApYIHVzZSBNYWlsOjpTcGFt
 QXNzYXNzaW46OkNvbnN0YW50cyBxdyg6c2EpOwpYQEAgLTczMywxOSArNzM0LDQxIEBAClggClgg
 ICAjIHRoZSByZXBvcnQgY2hhcnNldApYICAgbXkgJHJlcG9ydF9jaGFyc2V0ID0gIjsgY2hhcnNl
 dD1pc28tODg1OS0xIjsKWC0gIGlmICgkc2VsZi0+e2NvbmZ9LT57cmVwb3J0X2NoYXJzZXR9KSB7
 ClgtICAgICRyZXBvcnRfY2hhcnNldCA9ICI7IGNoYXJzZXQ9IiAuICRzZWxmLT57Y29uZn0tPnty
 ZXBvcnRfY2hhcnNldH07ClgtICB9ClggClggICAjIHRoZSBTcGFtQXNzYXNzaW4gcmVwb3J0Clgg
 ICBteSAkcmVwb3J0ID0gJHNlbGYtPmdldF9yZXBvcnQoKTsKWCsgIGlmICgkc2VsZi0+e2NvbmZ9
 LT57cmVwb3J0X2NoYXJzZXR9KSB7ClgrICAgICRyZXBvcnRfY2hhcnNldCA9ICI7IGNoYXJzZXQ9
 IiAuICRzZWxmLT57Y29uZn0tPntyZXBvcnRfY2hhcnNldH07ClgrICB9ClggClggICAjIElmIHRo
 ZXJlIGFyZSBhbnkgd2lkZSBjaGFyYWN0ZXJzLCBuZWVkIHRvIE1JTUUtZW5jb2RlIGluIFVURi04
 ClggICAjIFRPRE86IElmICRyZXBvcnRfY2hhcnNldCBpcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBp
 c28tODg1OS0xL3VzLWFzY2lpLCB0aGVuClggICAjIHdlIGNvdWxkIHRyeSBjb252ZXJ0aW5nIHRv
 IHRoYXQgY2hhcnNldCBpZiBwb3NzaWJsZQpYLSAgdW5sZXNzICgkXSA8IDUuMDA4IHx8IHV0Zjg6
 OmRvd25ncmFkZSgkcmVwb3J0LCAxKSkgewpYKyAgbXkgJGlzX3V0ZjggPSAwOwpYKyAgaWYgKCRz
 ZWxmLT57Y29uZn0tPntub3JtYWxpemVfY2hhcnNldH0pIHsKWCsgICAgJHJlcG9ydCA9IEVuY29k
 ZTo6ZGVjb2RlX3V0ZjgoJHJlcG9ydCk7ClgrICAgICRpc191dGY4ID0gMTsKWCsgIH0KWCsgIGVs
 c2UgewpYKyAgICBpZiAoJHNlbGYtPnttc2d9LT57Y2hhcnNldH0pIHsKWCsgICAgICBldmFsIHsK
 WCsgICAgICAgIG15ICRzY3JhdGNoID0gJHJlcG9ydDsKWCsgICAgICAgICRyZXBvcnQgPSBFbmNv
 ZGU6OmRlY29kZSgkc2VsZi0+e21zZ30tPntjaGFyc2V0fSwkc2NyYXRjaCxFbmNvZGU6OkZCX0NS
 T0FLKTsKWCsgICAgICAgICRpc191dGY4ID0gMTsKWCsgICAgICB9OwpYKyAgICB9ClgrICB9Clgr
 ICBpZiAoJGlzX3V0ZjgpIHsKWCsgICAgJGlzX3V0ZjggPSAxOwpYKyAgICBldmFsIHsKWCsgICAg
 ICBteSAkc2NyYXRjaCA9ICRyZXBvcnQ7ClgrICAgICAgJHJlcG9ydCA9IEVuY29kZTo6ZW5jb2Rl
 KCRzZWxmLT57Y29uZn0tPntyZXBvcnRfY2hhcnNldH0sJHNjcmF0Y2gsRW5jb2RlOjpGQl9DUk9B
 Syk7ClgrICAgICAgJGlzX3V0ZjggPSAwOwpYKyAgICB9OwpYKyAgICBpZiAoJGlzX3V0ZjgpIHsK
 WCsgICAgICAkcmVwb3J0ID0gRW5jb2RlOjplbmNvZGVfdXRmOCgkcmVwb3J0KTsKWCAgICAgICAk
 cmVwb3J0X2NoYXJzZXQgPSAiOyBjaGFyc2V0PXV0Zi04IjsKWC0gICAgICB1dGY4OjplbmNvZGUo
 JHJlcG9ydCk7ClgrICAgIH0KWCAgIH0KWCAKWCAgICMgZ2V0IG9yaWdpbmFsIGhlYWRlcnMsICJw
 cmlzdGluZSIgaWYgd2UgY2FuIGRvIGl0ClhkaWZmIC11TnIgbGliL01haWwvU3BhbUFzc2Fzc2lu
 L1BsdWdpbi9CYXllcy5wbSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL0JheWVzLnBtClgt
 LS0gbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9CYXllcy5wbQkyMDExLTA2LTA3IDA4OjU5
 OjE3LjAwMDAwMDAwMCArMDkwMApYKysrIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vQmF5
 ZXMucG0JMjAxMS0wNy0xNCAyMjozNTo0Ni4wMDAwMDAwMDAgKzA5MDAKWEBAIC0yMjMsNiArMjIz
 LDE1IEBAClggIyB3aWxsIHJlcXVpcmUgYSBsb25nZXIgdG9rZW4gdGhhbiBFbmdsaXNoIG9uZXMu
 KQpYIHVzZSBjb25zdGFudCBNQVhfVE9LRU5fTEVOR1RIID0+IDE1OwpYIApYKyMgU2tpcCBpZiBh
 IHRva2VuIGlzIHRvbyBzaG9ydC4KWCtvdXIgJFNLSVBfVVRGOF9TSE9SVF9UT0tFTlNfUkUgPSBx
 cnsoPzoKWCsgICAgW1x4MDAtXHg3Rl0gICAgICAgICAgICAgICAgIyAxIGJ5dGUKWCsgIHwgW1x4
 QzAtXHhERl1bXHg4MC1ceEJGXSAgICAgIyAyIGJ5dGVzClgrICB8IFtceEUwLVx4RUZdW1x4ODAt
 XHhCRl17Mn0gICMgMyBieXRlcwpYKyAgfCBbXHhGMC1ceEY3XVtceDgwLVx4QkZdezN9ICAjIDQg
 Ynl0ZXMKWCsgIHwgKD86XHhFM1tceDgxLVx4ODNdW1x4ODAtXHhCRl0pezJ9ICMgMiBjaGFyYWN0
 ZXJzIG9mIEhpcmFnYW5hIGFuZCBLYXRha2FuYQpYKyl9eDsKWCsKWCAjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMKWCAKWCBzdWIgbmV3IHsKWEBAIC05ODMsOSArOTkyLDI4IEBAClggICAkbXNnZGF0YS0+e2Jh
 eWVzX3Rva2VuX2JvZHl9ID0gJG1zZy0+e21zZ30tPmdldF92aXNpYmxlX3JlbmRlcmVkX2JvZHlf
 dGV4dF9hcnJheSgpOwpYICAgJG1zZ2RhdGEtPntiYXllc190b2tlbl9pbnZpen0gPSAkbXNnLT57
 bXNnfS0+Z2V0X2ludmlzaWJsZV9yZW5kZXJlZF9ib2R5X3RleHRfYXJyYXkoKTsKWCAgIEB7JG1z
 Z2RhdGEtPntiYXllc190b2tlbl91cmlzfX0gPSAkbXNnLT5nZXRfdXJpX2xpc3QoKTsKWCsgIGlm
 ICgkc2VsZi0+e2NvbmZ9LT57bm9ybWFsaXplX2NoYXJzZXR9KSB7ClgrICAgIG15ICR0b2tlbml6
 ZXIgPSAkc2VsZi0+Z2V0X3Rva2VuaXplcigkbXNnKTsKWCsgICAgaWYgKHJlZigkdG9rZW5pemVy
 KSkgewpYKyAgICAgICRtc2dkYXRhLT57YmF5ZXNfdG9rZW5fYm9keX0gPSAkdG9rZW5pemVyLT50
 b2tlbml6ZSgkbXNnZGF0YS0+e2JheWVzX3Rva2VuX2JvZHl9KTsKWCsgICAgICAkbXNnZGF0YS0+
 e2JheWVzX3Rva2VuX2ludml6fSA9ICR0b2tlbml6ZXItPnRva2VuaXplKCRtc2dkYXRhLT57YmF5
 ZXNfdG9rZW5faW52aXp9KTsKWCsgICAgfQpYKyAgfQpYICAgcmV0dXJuICRtc2dkYXRhOwpYIH0K
 WCAKWCtzdWIgZ2V0X3Rva2VuaXplciB7ClgrICBteSAoJHNlbGYsICRtc2cpID0gQF87ClgrClgr
 ICBteSAkdG9rZW5pemVyOwpYKyAgbXkgQGxhbmd1YWdlcyA9IHNwbGl0KC9ccysvLCAkbXNnLT57
 bXNnfS0+Z2V0X2xhbmd1YWdlKCkpOwpYKyAgZm9yZWFjaCBteSAkbGFuZyAoQGxhbmd1YWdlcykg
 ewpYKyAgICAkdG9rZW5pemVyID0gJHNlbGYtPnsnY29uZid9LT57J3Rva2VuaXplcid9LT57JGxh
 bmd9OwpYKyAgICBsYXN0IGlmIChyZWYoJHRva2VuaXplcikpOwpYKyAgfQpYKyAgcmV0dXJuICR0
 b2tlbml6ZXI7ClgrfQpYKwpYICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpYIApYICMgVGhlIGNhbGxpbmcg
 ZnVuY3Rpb25zIGV4cGVjdCBhIHVuaXEnZWQgYXJyYXkgb2YgdG9rZW5zIC4uLgpYQEAgLTEwMzks
 NyArMTA2Nyw3IEBAClggICAjIGluY2x1ZGUgcXVvdGVzLCAuJ3MgYW5kIC0ncyBmb3IgVVJJcywg
 YW5kIFskLF0ncyBmb3IgTmlnZXJpYW4tc2NhbSBzdHJpbmdzLApYICAgIyBhbmQgSVNPLTg4NTkt
 MTUgYWxwaGFzLiAgRG8gbm90IHNwbGl0IG9uIEAnczsgYmV0dGVyIHJlc3VsdHMga2VlcGluZyBp
 dC4KWCAgICMgU29tZSB1c2VmdWwgdG9rZW5zOiAiJDMxLDAwMCwwMDAiICJ3d3cuY2xvY2stc3Bl
 ZWQubmV0IiAiZipjayIgIkhpdHMhIgpYLSAgdHIvLUEtWmEtejAtOSxcQFwqXCFfJyJcJC5cMjQx
 LVwzNzcgLyAvY3M7ClgrICB0ci8tQS1aYS16MC05LFxAXCpcIV8nIlwkLlwyMDAtXDM3NyAvIC9j
 czsKWCAKWCAgICMgRE8gc3BsaXQgb24gIi4uLiIgb3IgIi0tIiBvciAiLS0tIjsgY29tbW9uIGZv
 cm1hdHRpbmcgZXJyb3IgcmVzdWx0aW5nIGluClggICAjIGhhcGF4ZXMuICBLZWVwIHRoZSBzZXBh
 cmF0b3IgaXRzZWxmIGFzIGEgdG9rZW4sIHRob3VnaCwgYXMgbG9uZyBvbmVzIGNhbgpYQEAgLTEw
 NjgsNiArMTA5NiwxMSBAQApYICAgICAjClggICAgIG5leHQgaWYgKCBkZWZpbmVkICRtYWdpY19y
 ZSAmJiAkdG9rZW4gPX4gLyRtYWdpY19yZS8gKTsKWCAKWCsgICAgIyBTa2lwIHNob3J0IFVURi04
 IHRva2Vucy4KWCsgICAgaWYgKCRzZWxmLT57Y29uZn0tPntub3JtYWxpemVfY2hhcnNldH0pIHsK
 WCsgICAgICBuZXh0IGlmICgkdG9rZW4gPX4gL14kU0tJUF9VVEY4X1NIT1JUX1RPS0VOU19SRSQv
 byk7ClgrICAgIH0KWCsKWCAgICAgIyAqZG8qIGtlZXAgMy1ieXRlIHRva2VuczsgdGhlcmUncyBz
 b21lIHNvbGlkIHNpZ25zIGluIHRoZXJlClggICAgIG15ICRsZW4gPSBsZW5ndGgoJHRva2VuKTsK
 WCAKWEBAIC0xMDk2LDE0ICsxMTI5LDE2IEBAClggICAgICMgdGhlIGRvbWFpbiAiLm5ldCIgYXBw
 ZWFyZWQgaW4gdGhlIFRvIGhlYWRlci4KWCAgICAgIwpYICAgICBpZiAoJGxlbiA+IE1BWF9UT0tF
 Tl9MRU5HVEggJiYgJHRva2VuICF+IC9cKi8pIHsKWC0gICAgICBpZiAoVE9LRU5JWkVfTE9OR184
 QklUX1NFUVNfQVNfVFVQTEVTICYmICR0b2tlbiA9fiAvW1x4YTAtXHhmZl17Mn0vKSB7ClgtCSMg
 TWF0dCBzZXo6ICJDb3VsZCBiZSBhc2lhbj8gQXV0cmlqdXMgc3VnZ2VzdGVkIGRvaW5nIGNoYXJh
 Y3RlciBuZ3JhbXMsClgtCSMgYnV0IEknbSBkb2luZyB0dXBsZXMgdG8ga2VlcCB0aGUgZGJzIHNt
 YWxsKGVyKS4iICBTb3VuZHMgbGlrZSBhIHBsYW4KWC0JIyB0byBtZSEgKGptKQpYLQl3aGlsZSAo
 JHRva2VuID1+IHMvXiguLj8pLy8pIHsKWC0JICBwdXNoIChAcmV0dG9rZW5zLCAiODokMSIpOwpY
 LQl9ClgtCW5leHQ7ClgrICAgICAgdW5sZXNzICgkc2VsZi0+e2NvbmZ9LT57bm9ybWFsaXplX2No
 YXJzZXR9KSB7ClgrICAgICAgICBpZiAoVE9LRU5JWkVfTE9OR184QklUX1NFUVNfQVNfVFVQTEVT
 ICYmICR0b2tlbiA9fiAvW1x4YTAtXHhmZl17Mn0vKSB7ClgrCSAgIyBNYXR0IHNlejogIkNvdWxk
 IGJlIGFzaWFuPyBBdXRyaWp1cyBzdWdnZXN0ZWQgZG9pbmcgY2hhcmFjdGVyIG5ncmFtcywKWCsJ
 ICAjIGJ1dCBJJ20gZG9pbmcgdHVwbGVzIHRvIGtlZXAgdGhlIGRicyBzbWFsbChlcikuIiAgU291
 bmRzIGxpa2UgYSBwbGFuClgrCSAgIyB0byBtZSEgKGptKQpYKwkgIHdoaWxlICgkdG9rZW4gPX4g
 cy9eKC4uPykvLykgewpYKwkgICAgcHVzaCAoQHJldHRva2VucywgIjg6JDEiKTsKWCsJICB9Clgr
 CSAgbmV4dDsKWCsgICAgICAgIH0KWCAgICAgICB9ClggClggICAgICAgaWYgKCgkcmVnaW9uID09
 IDAgJiYgSERSU19UT0tFTklaRV9MT05HX1RPS0VOU19BU19TS0lQUykKWGRpZmYgLXVOciBsaWIv
 TWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci9NZUNhYi5wbSBsaWIvTWFpbC9TcGFt
 QXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci9NZUNhYi5wbQpYLS0tIGxpYi9NYWlsL1NwYW1Bc3Nh
 c3Npbi9QbHVnaW4vVG9rZW5pemVyL01lQ2FiLnBtCTE5NzAtMDEtMDEgMDk6MDA6MDAuMDAwMDAw
 MDAwICswOTAwClgrKysgbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tlbml6ZXIvTWVD
 YWIucG0JMjAxMS0wNy0xNCAyMjoyOToxOS4wMDAwMDAwMDAgKzA5MDAKWEBAIC0wLDAgKzEsODQg
 QEAKWCsjIDxATElDRU5TRT4KWCsjIENvcHlyaWdodCAyMDA0IEFwYWNoZSBTb2Z0d2FyZSBGb3Vu
 ZGF0aW9uClgrIyAKWCsjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
 biAyLjAgKHRoZSAiTGljZW5zZSIpOwpYKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
 cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpYKyMgWW91IG1heSBvYnRhaW4gYSBj
 b3B5IG9mIHRoZSBMaWNlbnNlIGF0ClgrIyAKWCsjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
 bGljZW5zZXMvTElDRU5TRS0yLjAKWCsjIApYKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
 bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpYKyMgZGlzdHJpYnV0ZWQg
 dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKWCsj
 IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
 cmVzcyBvciBpbXBsaWVkLgpYKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
 Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApYKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhl
 IExpY2Vuc2UuClgrIyA8L0BMSUNFTlNFPgpYKwpYKz1oZWFkMSBOQU1FClgrClgrVG9rZW5pemVy
 OjpNZUNhYiAtIEphcGFuZXNlIHRva2VuaXplciB3aXRoIE1lQ2FiClgrClgrPWhlYWQxIFNZTk9Q
 U0lTClgrClgrbG9hZHBsdWdpbiAgICAgTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2Vu
 aXplcjo6TWVDYWIKWCsKWCs9aGVhZDEgREVTQ1JJUFRJT04KWCsKWCtUaGlzIHBsdWdpbiB0b2tl
 bml6ZXMgYSBKYXBhbmVzZSBzdHJpbmcgd2l0aCBNZUNhYiB0aGF0IGlzIApYK3RoZSBtb3JwaG9s
 b2dpY2FsIGFuYWx5c2lzIGVuZ2luZS4gClgrClgrVGV4dDo6TWVDYWIgMC4xMiBvciBvdmVyIGlz
 IHJlcXVpcmVkLgpYKwpYKz1jdXQKWCsKWCtwYWNrYWdlIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1
 Z2luOjpUb2tlbml6ZXI6Ok1lQ2FiOwpYKwpYK3VzZSBzdHJpY3Q7ClgrdXNlIHdhcm5pbmdzOwpY
 K3VzZSBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyOwpYKwpYK3VzZSB2YXJz
 IHF3KEBJU0EpOwpYK0BJU0EgPSBxdyhNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5p
 emVyKTsKWCsKWCsjIEhhdmUgdG8gZG8gdGhpcyBzbyB0aGF0IFJQTSBkb2Vzbid0IGZpbmQgdGhl
 c2UgYXMgcmVxdWlyZWQgcGVybCBtb2R1bGVzClgrQkVHSU4geyByZXF1aXJlIE1lQ2FiOyB9Clgr
 b3VyICRsYW5ndWFnZSA9ICdqYSc7Clgrb3VyICRtZWNhYiA9IG5ldyBNZUNhYjo6VGFnZ2VyKC1P
 Y2hhc2VuKTsKWCsKWCtzdWIgbmV3IHsKWCsgIG15ICRjbGFzcyA9IHNoaWZ0OwpYKyAgbXkgJG1h
 aWxzYW9iamVjdCA9IHNoaWZ0OwpYKwpYKyAgJGNsYXNzID0gcmVmKCRjbGFzcykgfHwgJGNsYXNz
 OwpYKyAgbXkgJHNlbGYgPSAkY2xhc3MtPlNVUEVSOjpuZXcoJG1haWxzYW9iamVjdCwgJGxhbmd1
 YWdlKTsKWCsgIGJsZXNzICgkc2VsZiwgJGNsYXNzKTsKWCsKWCsgIHJldHVybiAkc2VsZjsKWCt9
 ClgrClgrc3ViIHRva2VuaXplIHsKWCsgIG15ICRzZWxmID0gc2hpZnQ7ClgrICBteSAkdGV4dF9h
 cnJheSA9IHNoaWZ0OwpYKwpYKyAgbXkgQHRva2VuaXplZF9hcnJheTsKWCsgIGZvcmVhY2ggbXkg
 JHRleHQgKEAkdGV4dF9hcnJheSkgewpYKyAgICBuZXh0IHVubGVzcyAoJHRleHQpOwpYKyAgICAk
 dGV4dCA9fiBzLyhbXHg4MC1ceEZGXXszLH0pLyZfdG9rZW5pemUoJDEpL2VnOwpYKyAgICBwdXNo
 KEB0b2tlbml6ZWRfYXJyYXksICR0ZXh0KTsKWCsgIH0KWCsgIHJldHVybiBcQHRva2VuaXplZF9h
 cnJheTsKWCt9ClgrClgrc3ViIF90b2tlbml6ZSB7ClgrICBteSAkdGV4dCA9IHNoaWZ0OwpYKwpY
 KyAgbXkgQGJ1ZjsKWCsgIGZvciAobXkgJG5vZGUgPSAkbWVjYWItPnBhcnNlVG9Ob2RlKCR0ZXh0
 KTsgJG5vZGUtPntuZXh0fTsgJG5vZGUgPSAkbm9kZS0+e25leHR9KSB7ClgrICAgIHB1c2goQGJ1
 ZiwgJG5vZGUtPntzdXJmYWNlfSk7ClgrICB9ClgrICBteSAkdG9rZW5pemVkID0gam9pbignICcs
 IEBidWYpIC4gJyAnOwpYKyAgcmV0dXJuICR0b2tlbml6ZWQ7ClgrfQpYKwpYKzE7ClgrClhkaWZm
 IC11TnIgbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tlbml6ZXIvU2ltcGxlSkEucG0g
 bGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tlbml6ZXIvU2ltcGxlSkEucG0KWC0tLSBs
 aWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci9TaW1wbGVKQS5wbQkxOTcwLTAx
 LTAxIDA5OjAwOjAwLjAwMDAwMDAwMCArMDkwMApYKysrIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9Q
 bHVnaW4vVG9rZW5pemVyL1NpbXBsZUpBLnBtCTIwMTEtMDctMTQgMjI6Mjk6MTkuMDAwMDAwMDAw
 ICswOTAwClhAQCAtMCwwICsxLDExMSBAQApYKyMgPEBMSUNFTlNFPgpYKyMgQ29weXJpZ2h0IDIw
 MDQgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KWCsjIApYKyMgTGljZW5zZWQgdW5kZXIgdGhl
 IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7ClgrIyB5b3UgbWF5
 IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
 ClgrIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKWCsjIApYKyMgICAg
 IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMApYKyMgClgrIyBVbmxl
 c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
 ZnR3YXJlClgrIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
 biBhbiAiQVMgSVMiIEJBU0lTLApYKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
 T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClgrIyBTZWUgdGhlIExpY2Vu
 c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kClgr
 IyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KWCsjIDwvQExJQ0VOU0U+ClgrClgrPWhl
 YWQxIE5BTUUKWCsKWCtUb2tlbml6ZXI6OlNpbXBsZUpBIC0gc2ltcGxlIEphcGFuZXNlIHRva2Vu
 aXplcgpYKwpYKz1oZWFkMSBTWU5PUFNJUwpYKwpYK2xvYWRwbHVnaW4gICAgIE1haWw6OlNwYW1B
 c3Nhc3Npbjo6UGx1Z2luOjpUb2tlbml6ZXI6OlNpbXBsZUpBClgrClgrPWhlYWQxIERFU0NSSVBU
 SU9OClgrClgrVGhpcyBwbHVnaW4gc2ltcGx5IHRva2VuaXplcyBhIEphcGFuZXNlIHN0cmluZyBi
 eSBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gClgrdGhlIGFscGhhYmV0LCB0aGUgQ2hpbmVzZSBjaGFy
 YWN0ZXIsIGFuZCB0aGUga2F0YWthbmEuIApYKwpYKz1jdXQKWCsKWCtwYWNrYWdlIE1haWw6OlNw
 YW1Bc3Nhc3Npbjo6UGx1Z2luOjpUb2tlbml6ZXI6OlNpbXBsZUpBOwpYKwpYK3VzZSBzdHJpY3Q7
 ClgrdXNlIHdhcm5pbmdzOwpYK3VzZSBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5p
 emVyOwpYKwpYK3VzZSB2YXJzIHF3KEBJU0EpOwpYK0BJU0EgPSBxdyhNYWlsOjpTcGFtQXNzYXNz
 aW46OlBsdWdpbjo6VG9rZW5pemVyKTsKWCsKWCtvdXIgJGxhbmd1YWdlID0gJ2phJzsKWCsKWCtv
 dXIgJFJFID0gcXJ7KApYKyAgIyBIaXJhZ2FuYQpYKyAgICAoPzoKWCsgICAgICAgIFx4RTNceDgx
 W1x4ODAtXHhCRl0KWCsgICAgICB8IFx4RTNceDgyW1x4ODAtXHg5Rl0KWCsgICAgKSsKWCsgICMg
 S2F0YWthbmEKWCsgIHwgKD86ClgrICAgICAgICBceEUzXHg4MltceEEwLVx4QkZdClgrICAgICAg
 fCBceEUzXHg4M1tceDgwLVx4QkZdClgrICAgICkrClgrICAjIEthbmppClgrICB8ICg/OgpYKyAg
 ICAgICAgXHhFM1tceDkwLVx4QkZdW1x4ODAtXHhCRl0KWCsgICAgICB8IFtceEU0LVx4RTldW1x4
 ODAtXHhCRl17Mn0KWCsgICAgICB8IFx4RUZbXHhBNC1ceEFCXVtceDgwLVx4QkZdClgrICAgICkr
 ClgrICAjIEZ1bGx3aWR0aApYKyAgfCAoPzoKWCsgICAgICAgIFx4RUZceEJDW1x4ODAtXHhCRl0K
 WCsgICAgICB8IFx4RUZceEJEW1x4ODAtXHg5Rl0KWCsgICAgKSsKWCsgICMgT3RoZXJzClgrICB8
 IFtceEMwLVx4REZdW1x4ODAtXHhCRl0KWCsgIHwgW1x4RTAtXHhFMl1bXHg4MC1ceEJGXXsyfQpY
 KyAgfCBceEUzXHg4MFtceDgwLVx4QkZdClgrICB8IFx4RTNbXHg4NC1ceDhGXVtceDgwLVx4QkZd
 ClgrICB8IFtceEVBLVx4RUVdW1x4ODAtXHhCRl17Mn0KWCsgIHwgXHhFRltceDgwLVx4QTNdW1x4
 ODAtXHhCRl0KWCsgIHwgXHhFRltceEFDLVx4QkJdW1x4ODAtXHhCRl0KWCsgIHwgXHhFRlx4QkRb
 XHhBMC1ceEJGXQpYKyAgfCBceEVGW1x4QkUtXHhCRl1bXHg4MC1ceEJGXQpYKyAgfCBbXHhGMC1c
 eEY3XVtceDgwLVx4QkZdezN9ClgrKX14OwpYKwpYK3N1YiBuZXcgewpYKyAgbXkgJGNsYXNzID0g
 c2hpZnQ7ClgrICBteSAkbWFpbHNhb2JqZWN0ID0gc2hpZnQ7ClgrClgrICAkY2xhc3MgPSByZWYo
 JGNsYXNzKSB8fCAkY2xhc3M7ClgrICBteSAkc2VsZiA9ICRjbGFzcy0+U1VQRVI6Om5ldygkbWFp
 bHNhb2JqZWN0LCAkbGFuZ3VhZ2UpOwpYKyAgYmxlc3MgKCRzZWxmLCAkY2xhc3MpOwpYKwpYKyAg
 cmV0dXJuICRzZWxmOwpYK30KWCsKWCtzdWIgdG9rZW5pemUgewpYKyAgbXkgJHNlbGYgPSBzaGlm
 dDsKWCsgIG15ICR0ZXh0X2FycmF5ID0gc2hpZnQ7ClgrClgrICBteSBAdG9rZW5pemVkX2FycmF5
 OwpYKyAgZm9yZWFjaCBteSAkdGV4dCAoQCR0ZXh0X2FycmF5KSB7ClgrICAgIG5leHQgdW5sZXNz
 ICgkdGV4dCk7ClgrICAgICR0ZXh0ID1+IHMvKFtceDgwLVx4RkZdezMsfSkvJl90b2tlbml6ZSgk
 MSkvZWc7ClgrICAgIHB1c2goQHRva2VuaXplZF9hcnJheSwgJHRleHQpOwpYKyAgfQpYKyAgcmV0
 dXJuIFxAdG9rZW5pemVkX2FycmF5OwpYK30KWCsKWCtzdWIgX3Rva2VuaXplIHsKWCsgIG15ICR0
 ZXh0ID0gc2hpZnQ7ClgrClgrICAkdGV4dCA9fiBzLyRSRS8kMSAvb2c7ClgrICAkdGV4dCA9ICcg
 JyAuICR0ZXh0OwpYKyAgcmV0dXJuICR0ZXh0OwpYK30KWCsKWCsxOwpYKwpYZGlmZiAtdU5yIGxp
 Yi9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vVG9rZW5pemVyLnBtIGxpYi9NYWlsL1NwYW1Bc3Nh
 c3Npbi9QbHVnaW4vVG9rZW5pemVyLnBtClgtLS0gbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdp
 bi9Ub2tlbml6ZXIucG0JMTk3MC0wMS0wMSAwOTowMDowMC4wMDAwMDAwMDAgKzA5MDAKWCsrKyBs
 aWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci5wbQkyMDExLTA3LTE0IDIyOjM1
 OjQ2LjAwMDAwMDAwMCArMDkwMApYQEAgLTAsMCArMSwxMTUgQEAKWCsjIDxATElDRU5TRT4KWCsj
 IENvcHlyaWdodCAyMDA0IEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uClgrIyAKWCsjIExpY2Vu
 c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
 OwpYKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
 IHRoZSBMaWNlbnNlLgpYKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
 ClgrIyAKWCsjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAK
 WCsjIApYKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
 biB3cml0aW5nLCBzb2Z0d2FyZQpYKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
 ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKWCsjIFdJVEhPVVQgV0FSUkFOVElFUyBP
 UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpYKyMg
 U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
 c3Npb25zIGFuZApYKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuClgrIyA8L0BMSUNF
 TlNFPgpYKwpYKz1oZWFkMSBOQU1FClgrClgrTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRv
 a2VuaXplciAtIFRva2VuaXplciBwbHVnaW4gYmFzZSBjbGFzcwpYKwpYKz1oZWFkMSBTWU5PUFNJ
 UwpYKwpYKz1oZWFkMiBTcGFtQXNzYXNzaW4gY29uZmlndXJhdGlvbjoKWCsKWCsgIGxvYWRwbHVn
 aW4gTXlUb2tlbml6ZXJQbHVnaW4gL3BhdGgvdG8vTXlUb2tlbml6ZXJQbHVnaW4ucG0KWCsKWCs9
 aGVhZDIgUGVybCBjb2RlOgpYKwpYKyAgdXNlIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpU
 b2tlbml6ZXI7ClgrICB1c2UgdmFycyBxdyhASVNBKTsKWCsgIEBJU0EgPSBxdyhNYWlsOjpTcGFt
 QXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyKTsKWCsgICMgbGFuZ3VhZ2UgdG8gdXNlIHRoaXMg
 cGx1Z2luClgrICBvdXIgJGxhbmd1YWdlID0gJ2phJzsKWCsKWCsgICMgY29uc3RydWN0b3I6IHJl
 Z2lzdGVyIGxhbmd1YWdlClgrICBzdWIgbmV3IHsKWCsgICAgbXkgJGNsYXNzID0gc2hpZnQ7Clgr
 ICAgIG15ICRtYWlsc2FvYmplY3QgPSBzaGlmdDsKWCsKWCsgICAgIyBzb21lIGJvaWxlcnBsYXRl
 Li4uClgrICAgICRjbGFzcyA9IHJlZigkY2xhc3MpIHx8ICRjbGFzczsKWCsgICAgbXkgJHNlbGYg
 PSAkY2xhc3MtPlNVUEVSOjpuZXcoJG1haWxzYW9iamVjdCwgJGxhbmd1YWdlKTsKWCsgICAgYmxl
 c3MgKCRzZWxmLCAkY2xhc3MpOwpYKwpYKyAgICByZXR1cm4gJHNlbGY7ClgrICB9ClgrClgrICAj
 IHRva2VuaXplIGZ1bmN0aW9uClgrICBzdWIgdG9rZW5pemUgewpYKyAgICBteSAkc2VsZiA9IHNo
 aWZ0OwpYKyAgICBteSAkdGV4dF9hcnJheV9yZWYgPSBzaGlmdDsKWCsKWCsgICAgLi4uLi4uClgr
 ClgrICAgIHJldHVybiAkdG9rZW5pemVkX2FycmF5X3JlZjsKWCsgIH0KWCsKWCsKWCs9aGVhZDEg
 REVTQ1JJUFRJT04KWCsKWCtUaGlzIHBsdWdpbiBpcyB0aGUgYmFzZSBjbGFzcyBvZiB0b2tlbml6
 ZXIgcGx1Z2luLgpYK1lvdSBtdXN0IGRlZmluZSB0b2tlbml6ZSgpIGFuZCAkbGFuZ3VhZ2UKWCsK
 WCs9aGVhZDEgSU5URVJGQUNFClgrClgrICBzdWIgdG9rZW5pemUgewpYKyAgICBteSAkc2VsZiA9
 IHNoaWZ0OwpYKyAgICBteSAkdGV4dF9hcnJheV9yZWYgPSBzaGlmdDsKWCsKWCsgICAgLi4uLi4u
 ClgrIApYKyAgICByZXR1cm4gJHRva2VuaXplZF9hcnJheV9yZWY7ClgrICB9ClgrClgrPWN1dApY
 KwpYK3BhY2thZ2UgTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcjsKWCsKWCt1
 c2UgTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW47ClgrdXNlIE1haWw6OlNwYW1Bc3Nhc3Npbjo6
 TG9nZ2VyOwpYK3VzZSBzdHJpY3Q7ClgrdXNlIHdhcm5pbmdzOwpYK3VzZSBieXRlczsKWCsKWCt1
 c2UgdmFycyBxdyhASVNBKTsKWCtASVNBID0gcXcoTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW4p
 OwpYKwpYK3N1YiBuZXcgewpYKyAgbXkgJGNsYXNzID0gc2hpZnQ7ClgrICBteSAkbWFpbHNhb2Jq
 ZWN0ID0gc2hpZnQ7ClgrICBteSAkbGFuZ3VhZ2UgPSBzaGlmdDsKWCsKWCsgICMgc29tZSBib2ls
 ZXJwbGF0ZS4uLgpYKyAgJGNsYXNzID0gcmVmKCRjbGFzcykgfHwgJGNsYXNzOwpYKyAgbXkgJHNl
 bGYgPSAkY2xhc3MtPlNVUEVSOjpuZXcoJG1haWxzYW9iamVjdCk7ClgrICBibGVzcyAoJHNlbGYs
 ICRjbGFzcyk7ClgrClgrICBpZiAoJGxhbmd1YWdlKSB7ClgrICAgICRzZWxmLT57bWFpbn0tPntj
 b25mfS0+e3Rva2VuaXplcn0tPnskbGFuZ3VhZ2V9ID0gJHNlbGY7ClgrICB9ClgrICBlbHNlIHsK
 WCsgICAgZGJnKCJwbHVnaW46ICRzZWxmOiBcJGxhbmd1YWdlIGlzIG5vdCBkZWZpbmVkIik7Clgr
 ICB9ClgrClgrICByZXR1cm4gJHNlbGY7ClgrfQpYKwpYK3N1YiB0b2tlbml6ZSB7ClgrICBteSAo
 JHNlbGYsICRyZWYpID0gQF87ClgrClgrICByZXR1cm4gJHJlZjsKWCt9ClgrClgrMTsKWCsKWGRp
 ZmYgLXVOciBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vVXRpbC9DaGFyc2V0LnBtIGxpYi9NYWlsL1Nw
 YW1Bc3Nhc3Npbi9VdGlsL0NoYXJzZXQucG0KWC0tLSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vVXRp
 bC9DaGFyc2V0LnBtCTE5NzAtMDEtMDEgMDk6MDA6MDAuMDAwMDAwMDAwICswOTAwClgrKysgbGli
 L01haWwvU3BhbUFzc2Fzc2luL1V0aWwvQ2hhcnNldC5wbQkyMDExLTA3LTE0IDIyOjI5OjE5LjAw
 MDAwMDAwMCArMDkwMApYQEAgLTAsMCArMSw0NzEgQEAKWCsjIDxATElDRU5TRT4KWCsjIENvcHly
 aWdodCAyMDA2IEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uClgrIwpYKyMgTGljZW5zZWQgdW5k
 ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7ClgrIyB5
 b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
 Y2Vuc2UuClgrIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKWCsjClgr
 IyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wClgrIwpYKyMg
 VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
 LCBzb2Z0d2FyZQpYKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
 ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKWCsjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
 T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpYKyMgU2VlIHRoZSBM
 aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
 ZApYKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuClgrIyA8L0BMSUNFTlNFPgpYKwpY
 KwpYKz1oZWFkMSBOQU1FClgrClgrICBNYWlsOjpTcGFtQXNzYXNzaW46OlV0aWw6OkNoYXJzZXQu
 cG0gLSBVdGlsaXR5IGZvciBjaGFyc2V0IGFuZCBsYW5ndWFnZQpYKwpYKz1oZWFkMSBTWU5PUFNJ
 UwpYKwpYKyAgbXkgKCRkZWNvZGVkLCAkZGV0ZWN0ZWQpID0gTWFpbDo6U3BhbUFzc2Fzc2luOjpV
 dGlsOjpDaGFyc2V0Ojpub3JtYWxpemVfY2hhcnNldCgkc3RyLCAkY2hhcnNldCk7ClgrICBteSAk
 bGFuZ3VhZ2UgPSBNYWlsOjpTcGFtQXNzYXNzaW46OlV0aWw6OkNoYXJzZXQ6OmdldF9sYW5ndWFn
 ZSgkc3RyLCAkY2hhcnNldCk7ClgrClgrPWhlYWQxIERFU0NSSVBUSU9OClgrClgrVGhpcyBtb2R1
 bGUgaW1wbGVtZW50cyB1dGlsaXR5IG1ldGhvZHMgZm9yIGNoYXJzZXQgYW5kIGxhbmd1YWdlLgpY
 KwpYKz1jdXQKWCsKWCtwYWNrYWdlIE1haWw6OlNwYW1Bc3Nhc3Npbjo6VXRpbDo6Q2hhcnNldDsK
 WCsKWCt1c2Ugc3RyaWN0OwpYK3VzZSB3YXJuaW5nczsKWCt1c2UgRW5jb2RlOwpYK3VzZSBFbmNv
 ZGU6Okd1ZXNzOwpYK3VzZSBFbmNvZGU6OkFsaWFzOwpYKwpYK3VzZSB2YXJzIHF3ICgKWCsgIEBJ
 U0EgQEVYUE9SVApYKyk7ClgrClgrcmVxdWlyZSBFeHBvcnRlcjsKWCsKWCtASVNBID0gcXcoRXhw
 b3J0ZXIpOwpYK0BFWFBPUlQgPSBxdyhub3JtYWxpemVfY2hhcnNldCBnZXRfbGFuZ3VhZ2UpOwpY
 KwpYKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpYKwpYK3VzZSBjb25zdGFudCBIQVNfRU5DT0RFX0RFVEVD
 VCA9PiBldmFsIHsgcmVxdWlyZSBFbmNvZGU6OkRldGVjdDo6RGV0ZWN0b3I7IH07ClgrdXNlIGNv
 bnN0YW50IEhBU19FTkNPREVfSEFORVhUUkEgPT4gZXZhbCB7IHJlcXVpcmUgRW5jb2RlOjpIYW5F
 eHRyYTsgfTsKWCt1c2UgY29uc3RhbnQgSEFTX0VOQ09ERV9FVUNKUE1TID0+IGV2YWwgeyByZXF1
 aXJlIEVuY29kZTo6RVVDSlBNUzsgfTsKWCsKWCsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKWCsKWCtvdXIg
 JEtBTkFfSEFOX1JFID0gcXJ7ClgrICAjIEhpcmFnYW5hIGFuZCBLYXRha2FuYQpYKyAgICBceEUz
 W1x4ODEtXHg4M11bXHg4MC1ceEJGXQpYKyAgIyBIYW4KWCsgIHwgXHhFM1tceDkwLVx4QkZdW1x4
 ODAtXHhCRl0KWCsgIHwgW1x4RTQtXHhFOV1bXHg4MC1ceEJGXXsyfQpYKyAgfCBceEVGW1x4QTQt
 XHhBQl1bXHg4MC1ceEJGXQpYK314OwpYKwpYK291ciAlZW5jMmxhbmc7Clgrb3VyICVsYW5nMmVu
 YzsKWCtvdXIgJXNjcjJsYW5nOwpYK291ciAlY2prc2NyMmxhbmc7Clgrb3VyIEBzY3JvcmRlcjsK
 WCsKWCtCRUdJTiB7ClgrClgrICAjIFNlZSB0aGUgZm9sbG93aW5nIFVSTCBhYm91dCB0aGlzIG1h
 cDoKWCsgICMgICBodHRwOi8vY3p5Ym9ycmEuY29tL2NoYXJzZXRzL2lzbzg4NTkuaHRtbApYKyAg
 IyAgIGh0dHA6Ly9jenlib3JyYS5jb20vY2hhcnNldHMvY29kZXBhZ2VzLmh0bWwKWCsgICMgICBo
 dHRwOi8vY3p5Ym9ycmEuY29tL2NoYXJzZXRzL2N5cmlsbGljLmh0bWwKWCsgICMgICBodHRwOi8v
 ZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184ODU5ClgrICAjICAgaHR0cDovL3d3dy53My5vcmcv
 SW50ZXJuYXRpb25hbC9PLWNoYXJzZXQtbGFuZy5odG1sClgrICAlZW5jMmxhbmcgPSAoClgrICAg
 ICMgYnVpbnQtaW4gRW5jb2RpbmdzIGFuZCBFbmNvZGU6OkJ5dGUKWCsgICAgIyAgIE4uIEFtZXJp
 Y2EKWCsgICAgJ2FzY2lpJyAgICAgICAgID0+ICdlbicsClgrICAgICdjcDQzNycgICAgICAgICA9
 PiAnZW4nLApYKyAgICAnY3A4NjMnICAgICAgICAgPT4gJ3dldXJvcGUnLApYKwpYKyAgICAjICAg
 Vy4gRXVyb3BlIChMYXRpbjEsIExhdGluOSkKWCsgICAgIyAgICAgICBmciBlcyBjYSBldSBwdCBp
 dCBzcSBybSBubCBkZSBkYSBzdiBubyBmaSBmbyBpcyBnYSBnZCBlbiBhZgpYKyAgICAnaXNvLTg4
 NTktMScgICAgPT4gJ3dldXJvcGUnLApYKyAgICAnaXNvLTg4NTktMTUnICAgPT4gJ3dldXJvcGUn
 LApYKyAgICAnY3A4NTAnICAgICAgICAgPT4gJ3dldXJvcGUnLApYKyAgICAnY3A4NjAnICAgICAg
 ICAgPT4gJ3dldXJvcGUnLApYKyAgICAnY3AxMjUyJyAgICAgICAgPT4gJ3dldXJvcGUnLApYKyAg
 ICAnTWFjUm9tYW4nICAgICAgPT4gJ3dldXJvcGUnLApYKwpYKyAgICAjICAgQ250cmwuIEV1cm9w
 ZSAvIExhdGluMiAvIExhdGluMTAKWCsgICAgIyAgICAgICBociBjcyBodSBwbCBzciBzayBzbApY
 KyAgICAnaXNvLTg4NTktMicgICAgPT4gJ2NldXJvcGUnLApYKyAgICAnY3A4NTInICAgICAgICAg
 PT4gJ2NldXJvcGUnLApYKyAgICAnY3AxMjUwJyAgICAgICAgPT4gJ2NldXJvcGUnLApYKyAgICAn
 TWFjQ2VudHJhbEV1clJvbWFuJyA9PiAnY2V1cm9wZScsClgrICAgICdNYWNDcm9hdGlhbicgICA9
 PiAnY2V1cm9wZScsClgrICAgICdpc28tODg1OS0xNicgICA9PiAnY2V1cm9wZScsClgrICAgICdN
 YWNSb21hbmlhbicgICA9PiAnY2V1cm9wZScsClgrClgrICAgICMgICBMYXRpbjMgKEVzcGVyYW50
 bywgTWFsdGVzZSwgYW5kIFR1cmtpc2guIFR1cmtpc2ggaXMgbm93IG9uIDg4NTktOS4pClgrICAg
 ICMgICAgICAgZW8gbXQKWCsgICAgJ2lzby04ODU5LTMnICAgID0+ICdzZXVyb3BlJywKWCsKWCsg
 ICAgIyAgIEJhbHRpY3MgKExhdGluNCwgTGF0aW43KQpYKyAgICAjICAgICAgIGx2IGx0ClgrICAg
 ICdpc28tODg1OS00JyAgICA9PiAnbmV1cm9wZScsClgrICAgICdpc28tODg1OS0xMycgICA9PiAn
 YmFsdGljJywKWCsgICAgJ2NwMTI1NycgICAgICAgID0+ICdiYWx0aWMnLApYKwpYKyAgICAjICAg
 Tm9yZGljcyAoTGF0aW42KQpYKyAgICAjICAgICAgIGV0IGtsIGl1IHNlClgrICAgICdpc28tODg1
 OS0xMCcgICA9PiAnbm9yZGljJywKWCsKWCsgICAgIyAgIEN5cmlsbGljcwpYKyAgICAjICAgICAg
 IGJnIGJlIHVrIHNyIG1rIHJ1ClgrICAgICdpc28tODg1OS01JyAgICA9PiAncnUnLApYKyAgICAn
 Y3A4NTUnICAgICAgICAgPT4gJ3J1JywKWCsgICAgJ2NwMTI1MScgICAgICAgID0+ICdydScsClgr
 ICAgICdjcDg2NicgICAgICAgICA9PiAncnUnLApYKyAgICAnTWFjQ3lyaWxsaWMnICAgPT4gJ3J1
 JywKWCsgICAgJ2tvaTgtcicgICAgICAgID0+ICdydScsClgrICAgICdNYWNVa3JhaW5pYW4nICA9
 PiAndWsnLApYKyAgICAna29pOC11JyAgICAgICAgPT4gJ3VrJywKWCsKWCsgICAgIyAgIEFyYWJp
 YwpYKyAgICAnaXNvLTg4NTktNicgICAgPT4gJ2FyJywKWCsgICAgJ2NwODY0JyAgICAgICAgID0+
 ICdhcicsClgrICAgICdjcDEyNTYnICAgICAgICA9PiAnYXInLApYKyAgICAnTWFjQXJhYmljJyAg
 ICAgPT4gJ2FyJywKWCsgICAgJ2NwMTAwNicgICAgICAgID0+ICdmYScsClgrICAgICdNYWNGYXJz
 aScgICAgICA9PiAnZmEnLApYKwpYKyAgICAjICAgR3JlZWsKWCsgICAgJ2lzby04ODU5LTcnICAg
 ID0+ICdlbCcsClgrICAgICdjcDEyNTMnICAgICAgICA9PiAnZWwnLApYKyAgICAnTWFjR3JlZWsn
 ICAgICAgPT4gJ2VsJywKWCsKWCsgICAgIyAgIEhlYnJldwpYKyAgICAjICAgICAgIGhlIHlpClgr
 ICAgICdpc28tODg1OS04JyAgICA9PiAnaGUnLApYKyAgICAnY3A4NjInICAgICAgICAgPT4gJ2hl
 JywKWCsgICAgJ2NwMTI1NScgICAgICAgID0+ICdoZScsClgrICAgICdNYWNIZWJyZXcnICAgICA9
 PiAnaGUnLApYKwpYKyAgICAjICAgVHVya2lzaApYKyAgICAnaXNvLTg4NTktOScgICAgPT4gJ3Ry
 JywKWCsgICAgJ2NwODU3JyAgICAgICAgID0+ICd0cicsClgrICAgICdjcDEyNTQnICAgICAgICA9
 PiAndHInLApYKyAgICAnTWFjVHVya2lzaCcgICAgPT4gJ3RyJywKWCsKWCsgICAgIyAgIFRoYWkK
 WCsgICAgJ2lzby04ODU5LTExJyAgID0+ICd0aCcsClgrICAgICdjcDg3NCcgICAgICAgICA9PiAn
 dGgnLApYKwpYKyAgICAjICAgQ2VsdGljcyAoTGF0aW44KQpYKyAgICAjICAgICAgIGdkIGN5IGJy
 ClgrICAgICdpc28tODg1OS0xNCcgICA9PiAnY2VsdGljJywKWCsKWCsgICAgIyAgIFZpZXRuYW1l
 c2UKWCsgICAgJ3Zpc2NpaScgICAgICAgID0+ICd2aScsClgrICAgICdjcDEyNTgnICAgICAgICA9
 PiAndmknLApYKwpYKyAgICAjIEVuY29kZTo6Q04KWCsgICAgJ2V1Yy1jbicgICAgICAgID0+ICd6
 aCcsClgrICAgICdjcDkzNicgICAgICAgICA9PiAnemgnLApYKyAgICAnaHonICAgICAgICAgICAg
 PT4gJ3poJywKWCsKWCsgICAgIyBFbmNvZGU6OlRXClgrICAgICdiaWc1LWV0ZW4nICAgICA9PiAn
 emgnLApYKyAgICAnYmlnNS1oa3NjcycgICAgPT4gJ3poJywKWCsgICAgJ2NwOTUwJyAgICAgICAg
 ID0+ICd6aCcsClgrClgrICAgICMgRW5jb2RlOjpKUApYKyAgICAnZXVjLWpwJyAgICAgICAgPT4g
 J2phJywKWCsgICAgJ3NoaWZ0amlzJyAgICAgID0+ICdqYScsClgrICAgICc3Yml0LWppcycgICAg
 ICA9PiAnamEnLApYKyAgICAnaXNvLTIwMjItanAnICAgPT4gJ2phJywKWCsgICAgJ2lzby0yMDIy
 LWpwLTEnID0+ICdqYScsClgrICAgICdjcDkzMicgICAgICAgICA9PiAnamEnLApYKwpYKyAgICAj
 IEVuY29kZTo6S1IKWCsgICAgJ2V1Yy1rcicgICAgICAgID0+ICdrbycsClgrICAgICdjcDk0OScg
 ICAgICAgICA9PiAna28nLApYKyAgICAnam9oYWInICAgICAgICAgPT4gJ2tvJywKWCsgICAgJ2lz
 by0yMDIyLWtyJyAgID0+ICdrbycsClgrClgrICAgICMgRW5jb2RlOjpIYW5FeHRyYQpYKyAgICAn
 ZXVjLXR3JyAgICAgICAgPT4gJ3poJywKWCsgICAgJ2diMTgwMzAnICAgICAgID0+ICd6aCcsClgr
 ClgrICAgICMgRW5jb2RlOjpKSVMySwpYKyAgICAnZXVjLWppc3gwMjEzJyAgPT4gJ2phJywKWCsg
 ICAgJ3NoaWZ0amlzeDAxMjMnID0+ICdqYScsClgrICAgICdpc28tMjAyMi1qcC0zJyA9PiAnamEn
 LApYKwpYKyAgICAjIEVuY29kZTo6RVVDSlBNUwpYKyAgICAnZXVjSlAtbXMnICAgICAgPT4gJ2ph
 JywKWCsgICAgJ2NwNTE5MzInICAgICAgID0+ICdqYScsClgrICAgICdjcDUwMjIwJyAgICAgICA9
 PiAnamEnLApYKyAgICAnY3A1MDIyMScgICAgICAgPT4gJ2phJywKWCsKWCsgICk7ClgrClgrICAl
 bGFuZzJlbmMgPSAoClgrICAgICMgTGF0aW4xClgrICAgICdlbicgPT4gWydhc2NpaSddLApYKyAg
 ICAnd2V1cm9wZScgPT4gWydjcDEyNTInXSwKWCsKWCsgICAgIyBMYXRpbjIKWCsgICAgJ2NldXJv
 cGUnID0+IFsnY3AxMjUwJ10sClgrClgrICAgICMgTGF0aW4zClgrICAgICdzZXVyb3BlJyA9PiBb
 J2lzby04ODU5LTMnXSwKWCsKWCsgICAgIyBMYXRpbjQKWCsgICAgJ25ldXJvcGUnID0+IFsnaXNv
 LTg4NTktNCddLApYKwpYKyAgICAjIExhdGluNQpYKyAgICAndHInID0+IFsnY3AxMjU0J10sClgr
 ClgrICAgICMgTGF0aW42ClgrICAgICdub3JkaWMnID0+IFsnaXNvLTg4NTktMTAnXSwKWCsKWCsg
 ICAgIyBMYXRpbjcKWCsgICAgJ2JhbHRpYycgPT4gWydjcDEyNTcnXSwKWCsKWCsgICAgIyBMYXRp
 bjgKWCsgICAgJ2NlbHRpYycgPT4gWydpc28tODg1OS0xNCddLApYKwpYKyAgICAjIE5vbiBMYXRp
 bgpYKyAgICAncnUnID0+IFsna29pOC1yJywgJ2NwMTI1MSddLApYKyAgICAndWsnID0+IFsna29p
 OC11J10sClgrClgrICAgICdhcicgPT4gWydjcDEyNTYnXSwKWCsgICAgJ2VsJyA9PiBbJ2NwMTI1
 MyddLApYKyAgICAnaGUnID0+IFsnY3AxMjU1J10sClgrICAgICd0aCcgPT4gWydjcDg3NCddLApY
 KyAgICAndmknID0+IFsndmlzY2lpJywgJ2NwMTI1OCddLApYKyAgICAnemgnID0+IFsnZXVjLWNu
 JywgJ2NwOTUwJ10sClgrICAgICdqYScgPT4gWydldWMtanAnLCAnY3A5MzInXSwKWCsgICAgJ2tv
 JyA9PiBbJ2V1Yy1rcicsICdjcDk0OSddLApYKwpYKyAgKTsKWCsKWCsgICVzY3IybGFuZyA9ICgK
 WCsgICAgJ0luTGF0aW4xU3VwcGxlbWVudCcgPT4gWyd3ZXVyb3BlJ10sClgrICAgICdJbkxhdGlu
 RXh0ZW5kZWRBJyA9PiBbClgrICAgICAgJ2NldXJvcGUnLApYKyAgICAgICdzZXVyb3BlJywKWCsg
 ICAgICAndHInLApYKyAgICAgICd2aScKWCsgICAgXSwKWCsgICAgJ0luTGF0aW5FeHRlbmRlZEIn
 ID0+IFsKWCsgICAgICAnbm9yZGljJywKWCsgICAgICAnYmFsdGljJywKWCsgICAgICAnY2VsdGlj
 JwpYKyAgICBdLApYKyAgICAnVGhhaScgICA9PiBbJ3RoJ10sClgrICAgICdDeXJpbGxpYycgPT4g
 WydydScsICd1ayddLApYKyAgICAnQXJhYmljJyA9PiBbJ2FyJ10sClgrICAgICdHcmVlaycgID0+
 IFsnZWwnXSwKWCsgICAgJ0hlYnJldycgPT4gWydoZSddLApYKyAgKTsKWCsKWCsgICMgYmV0dGVy
 IGRldGVjdGlvbiBmb3IgQ0pLClgrICBAc2Nyb3JkZXIgPSAoJ0hpcmFnYW5hJywnS2F0YWthbmEn
 LCdIYW5ndWwnLCdIYW4nLGtleXMoJXNjcjJsYW5nKSk7ClgrICAlY2prc2NyMmxhbmcgPSAoClgr
 ICAgICdIaXJhZ2FuYScgPT4gWydqYSddLApYKyAgICAnS2F0YWthbmEnID0+IFsnamEnXSwKWCsg
 ICAgJ0hhbmd1bCcgPT4gWydrbyddLApYKyAgICAnSGFuJyAgICA9PiBbJ3poJywgJ2phJywgJ2tv
 J10sClgrICApOwpYKwpYKyAgdW5sZXNzIChIQVNfRU5DT0RFX0hBTkVYVFJBKSB7ClgrICAgIEVu
 Y29kZTo6QWxpYXM6OmRlZmluZV9hbGlhcyggcXIvXmdiMTgwMzAkL2kgPT4gJyAiZXVjLWNuIicg
 KTsKWCsgIH0KWCsgIEVuY29kZTo6QWxpYXM6OmRlZmluZV9hbGlhcyggcXIvXnVuaWNvZGUtMS0x
 LSguKykkL2kgPT4gJyAiJDEiJyApOwpYKyAgRW5jb2RlOjpBbGlhczo6ZGVmaW5lX2FsaWFzKCBx
 ci9eVElTLTYyMCQvaSA9PiAnICJpc28tODg1OS0xMSInICk7ClgrICBFbmNvZGU6OkFsaWFzOjpk
 ZWZpbmVfYWxpYXMoIHFyL154LW1hYy0oLispJC9pID0+ICcgIk1hYyQxIicgKTsKWCsgIEVuY29k
 ZTo6QWxpYXM6OmRlZmluZV9hbGlhcyggcXIvXlNoaWZ0X0pJUyQvaSA9PiAnICJjcDkzMiInICk7
 ClgrICBpZiAoSEFTX0VOQ09ERV9FVUNKUE1TKSB7ClgrICAgIEVuY29kZTo6QWxpYXM6OmRlZmlu
 ZV9hbGlhcyggcXIvXmlzby0yMDIyLWpwJC9pID0+ICcgImNwNTAyMjEiJyApOwpYKyAgfQpYK30K
 WCsKWCtzdWIgZ2V0X2xhbmd1YWdlIHsKWCsgIG15ICRzdHIgPSBzaGlmdDsgIyAkc3RyIG11c3Qg
 YmUgVVRGLTggZW5jb2RpbmcKWCsgIG15ICRjaGFyc2V0ID0gc2hpZnQ7ClgrClgrICByZXR1cm4g
 J2VuJyB1bmxlc3MgJGNoYXJzZXQ7ClgrICBpZiAoJGNoYXJzZXQgIX4gL151dGYvaSkgewpYKyAg
 ICByZXR1cm4gJGVuYzJsYW5neyRjaGFyc2V0fTsKWCsgIH0gZWxzaWYgKGRlZmluZWQoJHN0cikp
 IHsKWCsgICAgJHN0ciA9fiBzL1tceDAwLVx4N0ZdLy9nOyAjIHJlbW92ZSBBU0NJSSBjaGFyYWN0
 ZXJzClgrICAgIHJldHVybiAnZW4nIGlmICgkc3RyIGVxICcnKTsKWCsKWCsgICAgbXkgJWhhbmRs
 ZWQ7ClgrICAgICRzdHIgPSBFbmNvZGU6OmRlY29kZV91dGY4KCRzdHIpIHVubGVzcyAoRW5jb2Rl
 Ojppc191dGY4KCRzdHIpKTsKWCsgICAgZm9yZWFjaCBteSAkc2NyIChAc2Nyb3JkZXIpIHsKWCsg
 ICAgICBuZXh0IGlmICgkc3RyICF+IC9ccHskc2NyfS8pOwpYKyAgICAgIG15ICRzY3JsYW5ncyA9
 IGV4aXN0cygkY2prc2NyMmxhbmd7JHNjcn0pID8gJGNqa3NjcjJsYW5neyRzY3J9IDogJHNjcjJs
 YW5neyRzY3J9OwpYKyAgICAgIGZvcmVhY2ggbXkgJGxhbmcgKEAkc2NybGFuZ3MpIHsKWCsgICAg
 ICAgIG5leHQgaWYgKGV4aXN0cygkaGFuZGxlZHskbGFuZ30pKTsKWCsgICAgICAgIGZvcmVhY2gg
 bXkgJGVuYyAoQHskbGFuZzJlbmN7JGxhbmd9fSkgewpYKyAgICAgICAgICBteSAkc2NyYXRjaCA9
 ICRzdHI7ClgrICAgICAgICAgIEVuY29kZTo6ZW5jb2RlKCRlbmMsICRzY3JhdGNoLCBFbmNvZGU6
 OkZCX1FVSUVUKTsKWCsgICAgICAgICAgcmV0dXJuICRsYW5nIGlmICgkc2NyYXRjaCBlcSAnJyk7
 ClgrICAgICAgICB9ClgrICAgICAgICAkaGFuZGxlZHskbGFuZ30gPSAxOwpYKyAgICAgIH0KWCsg
 ICAgfQpYKyAgfSAKWCsgIHJldHVybiAnZW4nOwpYK30KWCsKWCsjIFRFU1QgMTogdHJ5IGNvbnZl
 cnNpb24gdG8gdXNlIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4gClgrIyBURVNUIDI6IHRyeSBjb252
 ZXJzaW9uIHRvIHVzZSBFbmNvZGU6OkRldGVjdC4KWCsjIFRFU1QgMzogdHJ5IGNvbnZlcnNpb24g
 dG8gdXNlIEVuY29kZTo6R3Vlc3MuClgrc3ViIG5vcm1hbGl6ZV9jaGFyc2V0IHsKWCsgIG15ICRz
 dHIgPSBzaGlmdDsKWCsgIG15ICRjaGFyc2V0ID0gc2hpZnQ7ClgrClgrICByZXR1cm4gd2FudGFy
 cmF5ID8gKCRzdHIsICdhc2NpaScpICA6ICRzdHIgdW5sZXNzICgkc3RyKTsKWCsKWCsgIG15ICRk
 ZWNvZGVkOwpYKyAgbXkgJGRldGVjdGVkOwpYKwpYKyAgaWYgKCRjaGFyc2V0KSB7ClgrICAgICgk
 ZGVjb2RlZCwgJGRldGVjdGVkKSA9IF9zcGVjaWZpZWRfZW5jb2RpbmcoJHN0ciwgJGNoYXJzZXQp
 OwpYKyAgfQpYKyAgdW5sZXNzICgkZGV0ZWN0ZWQpIHsKWCsgICAgKCRkZWNvZGVkLCAkZGV0ZWN0
 ZWQpID0gX2VuY29kZV9kZXRlY3QoJHN0cik7ClgrICB9ClgrICB1bmxlc3MgKCRkZXRlY3RlZCkg
 ewpYKyAgICAoJGRlY29kZWQsICRkZXRlY3RlZCkgPSBfZW5jb2RlX2d1ZXNzKCRzdHIpOwpYKyAg
 fQpYKyAgdW5sZXNzICgkZGV0ZWN0ZWQpIHsKWCsgICAgcmV0dXJuICgkc3RyLCB1bmRlZik7Clgr
 ICB9ClgrICAkZGVjb2RlZCA9fiBzL15ceHtmZWZmfS8vZzsKWCsgICRkZWNvZGVkID0gRW5jb2Rl
 OjplbmNvZGVfdXRmOCgkZGVjb2RlZCk7ClgrClgrICAjIHVuZm9sZCBoaXJhZ2FuYSwga2F0YWth
 bmEgYW5kIGhhbgpYKyAgaWYgKCRkZXRlY3RlZCA9fiAvXig/OlVURnxFVUN8QklHNXxHQnxTSElG
 VEpJU3xJU08tMjAyMnxDUDk2OSR8Q1A5MzIkfENQOTQ5fENQNTAyMjEkKS9pKSB7ClgrICAgICRk
 ZWNvZGVkID1+IHMvKCRLQU5BX0hBTl9SRSlcMDEyKCRLQU5BX0hBTl9SRSkvJDEkMi9vZzsKWCsg
 IH0KWCsgIHJldHVybiB3YW50YXJyYXkgPyAoJGRlY29kZWQsICRkZXRlY3RlZCkgOiAkZGVjb2Rl
 ZDsKWCt9ClgrClgrc3ViIF9zcGVjaWZpZWRfZW5jb2RpbmcgewpYKyAgbXkgJHN0ciA9IHNoaWZ0
 OwpYKyAgbXkgJGVuY29kaW5nID0gc2hpZnQ7ClgrClgrICBteSAkZGV0ZWN0ZWQ7ClgrICBteSAk
 ZGVjb2RlZDsKWCsKWCsgIHJldHVybiAodW5kZWYsIHVuZGVmKSB1bmxlc3MgKCRlbmNvZGluZyk7
 ClgrClgrICAjIG5vdGU6IElTTy0yMDIyLSogaXMgbm90IGRlaXN0aW5ndWlzaCBmcm9tIFVTLUFT
 Q0lJClgrICByZXR1cm4gKHVuZGVmLCB1bmRlZikgaWYgKCRzdHIgPX4gL1xlLyBhbmQgJGVuY29k
 aW5nICF+IC9eSVNPLTIwMjIvaSk7ClgrClgrICAjIFVURi0xNnwzMiBlbmNvZGluZyB3aXRob3V0
 IEJPTSBjYW5ub3QgYmUgdHJ1c3RlZC4KWCsgIHJldHVybiAodW5kZWYsIHVuZGVmKSBpZiAoJGVu
 Y29kaW5nID1+IC9eVVRGLTMyJC9pIGFuZCAkc3RyICF+IC9eKD86XHhGRlx4RkVceDAwXHgwMHxc
 eDAwXHgwMFx4RkVceEZGKS8pOwpYKyAgcmV0dXJuICh1bmRlZiwgdW5kZWYpIGlmICgkZW5jb2Rp
 bmcgPX4gL15VVEYtMTYkL2kgYW5kICRzdHIgIX4gL14oPzpceEZGXHhGRXxceEZFXHhGRikvKTsK
 WCsKWCsgICMkZW5jb2RpbmcgPSBfZ2V0X2FsaWFzKCRlbmNvZGluZyk7ClgrICBteSAkZW5jb2Rl
 ciA9IEVuY29kZTo6ZmluZF9lbmNvZGluZygkZW5jb2RpbmcpOwpYKyAgaWYgKHJlZigkZW5jb2Rl
 cikpIHsKWCsgICAgJGRlY29kZWQgPSAkZW5jb2Rlci0+ZGVjb2RlKCRzdHIsRW5jb2RlOjpGQl9R
 VUlFVCk7ClgrICAgICRkZXRlY3RlZCA9ICRlbmNvZGVyLT5uYW1lIGlmICgkc3RyIGVxICcnKTsK
 WCsgIH0KWCsgIHJldHVybiAoJGRlY29kZWQsICRkZXRlY3RlZCk7ClgrfQpYKwpYK3N1YiBfZW5j
 b2RlX2RldGVjdCB7ClgrICByZXR1cm4gdW5kZWYgdW5sZXNzIEhBU19FTkNPREVfREVURUNUOwpY
 KyAgbXkgJHN0ciA9IHNoaWZ0OwpYKwpYKyAgIyBVVEYtMTZ8MzIgZW5jb2Rpbmcgd2l0aG91dCBC
 T00gY2Fubm90IGJlIHRydXN0ZWQuClgrICByZXR1cm4gKHVuZGVmLCB1bmRlZikgaWYgKCRzdHIg
 PX4gL1x4MDBceDAwLyBhbmQgJHN0ciAhfiAvXig/Olx4RkZceEZFXHgwMFx4MDB8XHgwMFx4MDBc
 eEZFXHhGRikvKTsKWCsgIHJldHVybiAodW5kZWYsIHVuZGVmKSBpZiAoJHN0ciA9fiAvXHgwMC8g
 YW5kICRzdHIgIX4gL14oPzpceEZGXHhGRXxceEZFXHhGRikvKTsKWCsKWCsgIG15ICRkZWNvZGVk
 OwpYKyAgbXkgJGRldGVjdGVkID0gRW5jb2RlOjpEZXRlY3Q6OkRldGVjdG9yOjpkZXRlY3QoJHN0
 cik7ClgrICBpZiAoJGRldGVjdGVkKSB7ClgrICAgICRkZXRlY3RlZCA9IF9nZXRfYWxpYXMoJGRl
 dGVjdGVkKTsKWCsgICAgbXkgJGVuY29kZXIgPSBFbmNvZGU6OmZpbmRfZW5jb2RpbmcoJGRldGVj
 dGVkKTsKWCsgICAgaWYgKHJlZigkZW5jb2RlcikpIHsKWCsgICAgICAkZGVjb2RlZCA9ICRlbmNv
 ZGVyLT5kZWNvZGUoJHN0cik7ClgrICAgICAgJGRldGVjdGVkID0gJGRlY29kZWQgPyAkZW5jb2Rl
 ci0+bmFtZSA6IHVuZGVmOwpYKyAgICB9ClgrICAgIGVsc2UgewpYKyAgICAgICRkZXRlY3RlZCA9
 IHVuZGVmOwpYKyAgICB9ClgrICB9ClgrICByZXR1cm4gKCRkZWNvZGVkLCAkZGV0ZWN0ZWQpOwpY
 K30KWCsKWCtzdWIgX2VuY29kZV9ndWVzcyB7ClgrICBteSAkc3RyID0gc2hpZnQ7ClgrClgrICBt
 eSAkZGV0ZWN0ZWQ7ClgrICBteSAkZGVjb2RlZDsKWCsgIG15ICRlbmNvZGVyOwpYKwpYKyAgIyBT
 dGVwIDE6IEV4YW1pbmUgSVNPLTIwMjItKi4KWCsgIGlmICgkc3RyID1+IC9cZS8pIHsKWCsgICAg
 JEVuY29kZTo6R3Vlc3M6Ok5vVVRGQXV0b0d1ZXNzID0gMTsKWCsgICAgJGVuY29kZXIgPSBFbmNv
 ZGU6Okd1ZXNzOjpndWVzc19lbmNvZGluZygkc3RyLApYKyAgICAgICAgcXcvY3A1MDIyMSA3Yml0
 LWppcyBpc28tMjAyMi1rci8pOwpYKyAgICAkRW5jb2RlOjpHdWVzczo6Tm9VVEZBdXRvR3Vlc3Mg
 PSAwOwpYKyAgfQpYKwpYKyAgIyBTdGVwIDI6IEV4YW1pbmUgVVMtQVNDSUkvVVRGLSg4fDE2fDMy
 KQpYKyAgdW5sZXNzIChyZWYoJGVuY29kZXIpKSB7ClgrICAgICRFbmNvZGU6Okd1ZXNzOjpOb1VU
 RkF1dG9HdWVzcyA9IDA7ClgrICAgICRlbmNvZGVyID0gRW5jb2RlOjpHdWVzczo6Z3Vlc3NfZW5j
 b2RpbmcoJHN0cik7ClgrICB9ClgrClgrICAjIFN0ZXAgMzogRXhhbWluZSBvdGhlciBlbmNvZGlu
 Z3MKWCsgIHVubGVzcyAocmVmKCRlbmNvZGVyKSkgewpYKyAgICAkRW5jb2RlOjpHdWVzczo6Tm9V
 VEZBdXRvR3Vlc3MgPSAxOwpYKyAgICBldmFsIHsKWCsgICAgICBpZiAoJHN0ciA9fiAvW1x4ODAt
 XHhGRl17NH0vKSB7ClgrICAgICAgICAkZW5jb2RlciA9IEVuY29kZTo6R3Vlc3M6Omd1ZXNzX2Vu
 Y29kaW5nKCRzdHIsClgrICAgICAgICAgIHF3L2V1Yy1jbiBiaWc1LWV0ZW4gZXVjLWpwIGNwOTMy
 IGV1Yy1rciBjcDk0OS8pOwpYKyAgICAgIH0KWCsgICAgICBlbHNlIHsKWCsgICAgICAgICRlbmNv
 ZGVyID0gRW5jb2RlOjpHdWVzczo6Z3Vlc3NfZW5jb2RpbmcoJHN0ciwKWCsgICAgICAgICAgcXcv
 aXNvLTg4NTktMSBjcDEyNTIvKTsKWCsgICAgICB9ClgrICAgIH07ClgrICAgICRFbmNvZGU6Okd1
 ZXNzOjpOb1VURkF1dG9HdWVzcyA9IDA7ClgrICB9ClgrICBpZiAocmVmKCRlbmNvZGVyKSkgewpY
 KyAgICAkZGV0ZWN0ZWQgPSAkZW5jb2Rlci0+bmFtZTsKWCsgICAgaWYgKCRkZXRlY3RlZCkgewpY
 KyAgICAgICRkZWNvZGVkID0gJGVuY29kZXItPmRlY29kZSgkc3RyKTsKWCsgICAgfQpYKyAgfQpY
 KyAgcmV0dXJuICgkZGVjb2RlZCwgJGRldGVjdGVkKTsKWCt9ClgrClgrc3ViIF9nZXRfYWxpYXMg
 ewpYKyAgbXkgJGVuY29kaW5nID0gc2hpZnQ7ClgrClgrICB1bmxlc3MgKEhBU19FTkNPREVfSEFO
 RVhUUkEpIHsKWCsgICAgJGVuY29kaW5nID1+IHMvXmdiMTgwMzAkL2V1Yy1jbi9pOwpYKyAgfQpY
 KyAgJGVuY29kaW5nID1+IHMvXnVuaWNvZGUtMS0xLSguKykkLyQxL2k7ClgrICAkZW5jb2Rpbmcg
 PX4gcy9eVElTLTYyMCQvaXNvLTg4NTktMTEvaTsKWCsgICRlbmNvZGluZyA9fiBzL3gtbWFjLSgu
 KykkL01hYyQxL2k7ClgrICAkZW5jb2RpbmcgPX4gcy9eU2hpZnRfSklTJC9jcDkzMi9pOwpYKyAg
 aWYgKEhBU19FTkNPREVfRVVDSlBNUykgewpYKyAgICAkZW5jb2RpbmcgPX4gcy9eaXNvLTIwMjIt
 anAkL2NwNTAyMjEvaTsKWCsgICAgJGVuY29kaW5nID1+IHMvXmV1Yy1qcCQvY3A1MTkzMi9pOwpY
 KyAgfQpYKwpYKyAgcmV0dXJuICRlbmNvZGluZzsKWCt9ClgrClgrClgrMTsKWCsKYzVlYWU0NTdm
 NWJmYTY4MTU3NTZjMTFiOGZhODI3YWEKZWNobyB4IC0gcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmls
 ZXMvc3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGxpc3QKc2VkICdzL15YLy8nID5wNS1NYWlsLVNw
 YW1Bc3Nhc3Npbi9maWxlcy9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS5wbGlzdCA8PCAnYjMxMTg5
 MjVkMjJhNDI0MTA5MzIwNDA5OTY3NjQ5YjYnClglJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fz
 c2luL1BsdWdpbi9Ub2tlbml6ZXIvTWVDYWIucG0KWCUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNz
 YXNzaW4vUGx1Z2luL1Rva2VuaXplci9TaW1wbGVKQS5wbQpYQGRpcnJtICUlU0lURV9QRVJMJSUv
 TWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplcgpYJSVTSVRFX1BFUkwlJS9NYWlsL1Nw
 YW1Bc3Nhc3Npbi9QbHVnaW4vVG9rZW5pemVyLnBtClglJVNJVEVfUEVSTCUlL01haWwvU3BhbUFz
 c2Fzc2luL1V0aWwvQ2hhcnNldC5wbQpiMzExODkyNWQyMmE0MjQxMDkzMjA0MDk5Njc2NDliNgpl
 Y2hvIHggLSBwNS1NYWlsLVNwYW1Bc3Nhc3Npbi9NYWtlZmlsZQpzZWQgJ3MvXlgvLycgPnA1LU1h
 aWwtU3BhbUFzc2Fzc2luL01ha2VmaWxlIDw8ICcwMGE1NzllZmNmNjE4YjllYThlMzQ3ODViOWU1
 Nzc0MCcKWCMgTmV3IHBvcnRzIGNvbGxlY3Rpb24gbWFrZWZpbGUgZm9yOglqYS1wNS1NYWlsLVNw
 YW1Bc3Nhc3NpbgpYIyBEYXRlIGNyZWF0ZWQ6CQkJCUp1biAyNCAyMDA3ClgjIFdob206CQkJCQlU
 QU9LQSBGdW1peW9zaGkKWCMKWCMgJEZyZWVCU0Q6IHBvcnRzL2phcGFuZXNlL3A1LU1haWwtU3Bh
 bUFzc2Fzc2luL01ha2VmaWxlLHYgMS4yOCAyMDEyLzAxLzE1IDIxOjA0OjEwIGpnaCBFeHAgJApY
 IwpYClhQT1JUUkVWSVNJT049CTIKWENBVEVHT1JJRVM9CWphcGFuZXNlIG1haWwgcGVybDUKWFBL
 R05BTUVQUkVGSVg9CWphLXA1LQpYClhNQUlOVEFJTkVSPQltYXNha2lAY2x1Yi5reXV0ZWNoLmFj
 LmpwClhDT01NRU5UPQlTcGFtQXNzYXNzaW4gd2l0aCBwYWNoZXMgZm9yIGhhbmRsZSBtdWx0aWJ5
 dGUgY2hhcmFjdGVyClgKWExJQ0VOU0U9CUFMMgpYClhNQVNURVJESVI9CSR7LkNVUkRJUn0vLi4v
 Li4vbWFpbC9wNS1NYWlsLVNwYW1Bc3Nhc3NpbgpYClhSVU5fREVQRU5EUys9CWphLXA1LU1lQ2Fi
 Pj0wLjk4OiR7UE9SVFNESVJ9L2phcGFuZXNlL3A1LU1lQ2FiClgKWENPTkZMSUNUUz0JcDUtTWFp
 bC1TcGFtQXNzYXNzaW4tWzAtOV0qClgKWEVYVFJBX1BBVENIRVM9CSR7LkNVUkRJUn0vZmlsZXMv
 c3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGF0Y2gKWApYUEtHTUVTU0FHRT0JJHsuQ1VSRElSfS9w
 a2ctbWVzc2FnZQpYUExJU1Q9CSR7V1JLRElSfS9wa2ctcGxpc3QKWApYVE9LRU5JWkVSX1BSRT0J
 dG9rZW5pemVyLnByZQpYRE9DSkE9CSR7RVhUUkFfUEFUQ0hFUzpTLy5wYXRjaC8udHh0L30KWFBP
 UlRET0NTKz0JJHtET0NKQTpTLyR7LkNVUkRJUn1cL2ZpbGVzXC8vL30KWApYcHJlLWluc3RhbGw6
 ClgJQCR7Q0FUfSAke0VYVFJBX1BBVENIRVM6Uy8ucGF0Y2gvLnBsaXN0L30gPiAke1BMSVNUfQpY
 CUAke0NBVH0gJHtQS0dESVJ9L3BrZy1wbGlzdCA+PiAke1BMSVNUfQpYClhwb3N0LWluc3RhbGw6
 OgpYCUAke0NQfSAkey5DVVJESVJ9L2ZpbGVzLyR7VE9LRU5JWkVSX1BSRX0gJHtQUkVGSVh9L2V0
 Yy9tYWlsL3NwYW1hc3Nhc3Npbi8ke1RPS0VOSVpFUl9QUkV9LnNhbXBsZQpYCUBbIC1mICR7UFJF
 RklYfS9ldGMvbWFpbC9zcGFtYXNzYXNzaW4vJHtUT0tFTklaRVJfUFJFfSBdIHx8IFwKWAkJJHtD
 UH0gJHtQUkVGSVh9L2V0Yy9tYWlsL3NwYW1hc3Nhc3Npbi8ke1RPS0VOSVpFUl9QUkV9LnNhbXBs
 ZSBcClgJCQkke1BSRUZJWH0vZXRjL21haWwvc3BhbWFzc2Fzc2luLyR7VE9LRU5JWkVSX1BSRX0K
 WApYLmlmICFkZWZpbmVkKE5PUE9SVERPQ1MpClgJQCR7TUtESVJ9ICR7RE9DU0RJUn0KWAlAJHtJ
 TlNUQUxMX0RBVEF9ICR7RE9DSkF9ICR7RE9DU0RJUn0KWC5lbmRpZgpYClguaW5jbHVkZSAiJHtN
 QVNURVJESVJ9L01ha2VmaWxlIgowMGE1NzllZmNmNjE4YjllYThlMzQ3ODViOWU1Nzc0MApleGl0
 Cgo=
 --e89a8f83a6456add3b04bc435364--

From: Michael Scheidell <scheidell@FreeBSD.org>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: ports/165765: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
Date: Wed, 28 Mar 2012 16:58:46 -0400

 I give up.  this shar won't unpack.
 do it the hard way.
 do it the right way.
 do it the way the porters and maintainers manual says and don't take any 
 shortcuts.
 New ports use a shar (so we can see what it in it), old ports use a 
 patch ( diff -ruN), so we know exactly what is changed.
 the patch is uploaded as an attachment to GNATS so there is an audit 
 trail.  and we know exactly what to do.
 Actually, better than you giving us instructions on what to do, the 
 patch will have all the info in it we need. the patch will delete files 
 that are empty (-N).
 This way we dont need to guess.
 
 do this:
 make a copy of what you think you want in japanese/p5-Mail-SpamAssassin:
     run portlint -abt on it, fix the errors.  test it.  Test it in 
 redports. make sure it runs, and doesn't leave any files when its finished.
      then, when you are done,
      rsync -av p5-Mail-SpamAssassin/ /var/tmp/p5-Mail-SpamAssassin
      rm -rf p5-Mail-SpamAssassin/
 
 update your portstree. (including wipeing out p5-Mail-SpamAssassin,  (I 
 put the patch for :: into p5-Mail-SpamAssassin and committed it yesterday)
 
 diff -ruN japanese/p5-Mail-SpamAssassin/ /var/tmp/p5-Mail-SpamAssassin/ 
  > ja_sa.patch
 
 upload it to GNATS
 (elm -A ja_sa.patch -s "Re: ports/165765: [maintainer update] modern 
 revamping japanese/p5-Mail-SpamAssassin" bug-followup@FreeBSD.org  )
 
 or however you want to do it.. send an ATTACHMENT to 
 bug-followup@FreeBSD.org with the subject line of:
 
 Re: ports/165765: [maintainer update] modern revamping 
 japanese/p5-Mail-SpamAssassin
 
 
 
 
 
 -- 
 Michael Scheidell, CTO
  >*| * SECNAP Network Security Corporation
 d: +1.561.948.2259
 w: http://people.freebsd.org/~scheidell

From: Masaki TAGAWA <masaki@club.kyutech.ac.jp>
To: bug-followup@freebsd.org
Cc:  
Subject: Re: ports/165765: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
Date: Sat, 7 Apr 2012 00:19:46 +0900

 --f46d0447a0771b4baf04bd043124
 Content-Type: text/plain; charset=ISO-8859-1
 
 Pardon my ignorance, I created the file which was wrong and contained Japanese.
 I fixed it.
 
 -- 
 Masaki TAGAWA
 
 --f46d0447a0771b4baf04bd043124
 Content-Type: application/octet-stream; name="ja_sa.patch"
 Content-Disposition: attachment; filename="ja_sa.patch"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_h0pdq6m90
 
 ZGlmZiAtcnVOIGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL01ha2VmaWxlIC92YXIvdG1w
 L3A1LU1haWwtU3BhbUFzc2Fzc2luL01ha2VmaWxlCi0tLSBqYXBhbmVzZS9wNS1NYWlsLVNwYW1B
 c3Nhc3Npbi9NYWtlZmlsZQkyMDEyLTAzLTE0IDAxOjE1OjA4LjAwMDAwMDAwMCArMDkwMAorKysg
 L3Zhci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vTWFrZWZpbGUJMjAxMi0wNC0wNyAwMDowMzow
 MC41MTg5NzM5MjEgKzA5MDAKQEAgLTIsMzQyICsyLDM5IEBACiAjIERhdGUgY3JlYXRlZDoJCQkJ
 SnVuIDI0IDIwMDcKICMgV2hvbToJCQkJCVRBT0tBIEZ1bWl5b3NoaQogIwotIyAkRnJlZUJTRDog
 cG9ydHMvamFwYW5lc2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vTWFrZWZpbGUsdiAxLjMwIDIwMTIv
 MDMvMTMgMTY6MTU6MDggcGdvbGx1Y2NpIEV4cCAkCisjICRGcmVlQlNEOiBwb3J0cy9qYXBhbmVz
 ZS9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9NYWtlZmlsZSx2IDEuMzEgRXhwICQKICMKIAotUE9SVE5B
 TUU9CU1haWwtU3BhbUFzc2Fzc2luCi1QT1JUVkVSU0lPTj0JMy4zLjIKLVBPUlRSRVZJU0lPTj0J
 MQorUE9SVFJFVklTSU9OPQkyCiBDQVRFR09SSUVTPQlqYXBhbmVzZSBtYWlsIHBlcmw1Ci1NQVNU
 RVJfU0lURVM9CSR7TUFTVEVSX1NJVEVfQVBBQ0hFOlMvJC86YXBhY2hlL30gJHtNQVNURVJfU0lU
 RV9QRVJMX0NQQU46Uy8kLzpjcGFuL30gXAotCQkke1BBVENIX1NJVEVTfQotTUFTVEVSX1NJVEVf
 U1VCRElSPQlzcGFtYXNzYXNzaW4vc291cmNlLzphcGFjaGUgTWFpbC86Y3BhbgogUEtHTkFNRVBS
 RUZJWD0JamEtcDUtCi1ESVNURklMRVM9CSR7RElTVE5BTUV9JHtFWFRSQUNUX1NVRlh9OmFwYWNo
 ZSxjcGFuIFwKLQkJJHtUT0tFTklaRVJfUFJFfTpKQSAke0RPQ0pBfTpKQQotRElTVF9TVUJESVI9
 CWphLXNwYW1hc3Nhc3NpbgotRVhUUkFDVF9PTkxZPQkke0RJU1ROQU1FfSR7RVhUUkFDVF9TVUZY
 fQotCi1QQVRDSF9TSVRFUz0JaHR0cDovL3NwYW1hc3Nhc3Npbi5lbWFpbGxhYi5qcC9wdWIvamEt
 cGF0Y2gvc2Eke1BPUlRWRVJTSU9OOlJ9LzpKQQotUEFUQ0hGSUxFUz0Jc3BhbWFzc2Fzc2luLSR7
 UE9SVFZFUlNJT059LWphLSR7UEFUQ0hMRVZFTH0ucGF0Y2g6SkEKLVBBVENITEVWRUw9CTEKLVBB
 VENIX0RJU1RfU1RSSVA9CS1wMQogCiBNQUlOVEFJTkVSPQltYXNha2lAY2x1Yi5reXV0ZWNoLmFj
 LmpwCi1DT01NRU5UPQlTcGFtQXNzYXNzaW4gd2l0aCBKYXBhbmVzZSB0b2tlbml6ZXIKK0NPTU1F
 TlQ9CVNwYW1Bc3Nhc3NpbiB3aXRoIHBhY2hlcyBmb3IgaGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0
 ZXIKIAotUlVOX0RFUEVORFM9CXA1LU5ldEFkZHItSVA+PTQuMDAuNzoke1BPUlRTRElSfS9uZXQt
 bWdtdC9wNS1OZXRBZGRyLUlQIFwKLQkJcDUtTmV0LUROUz49MC42Mzoke1BPUlRTRElSfS9kbnMv
 cDUtTmV0LUROUyBcCi0JCXA1LUhUTUwtUGFyc2VyPj0zLjQ2OiR7UE9SVFNESVJ9L3d3dy9wNS1I
 VE1MLVBhcnNlciBcCi0JCXA1LWxpYnd3dz49MDoke1BPUlRTRElSfS93d3cvcDUtbGlid3d3IFwK
 LQkJcDUtRW5jb2RlLURldGVjdD49MDoke1BPUlRTRElSfS9jb252ZXJ0ZXJzL3A1LUVuY29kZS1E
 ZXRlY3QgXAotCQlwNS1NYWlsLVRvb2xzPj0wOiR7UE9SVFNESVJ9L21haWwvcDUtTWFpbC1Ub29s
 cyBcCi0JCWphLXA1LU1lQ2FiPj0wLjk4OiR7UE9SVFNESVJ9L2phcGFuZXNlL3A1LU1lQ2FiCi1C
 VUlMRF9ERVBFTkRTPQlwNS1OZXRBZGRyLUlQPj00LjAwLjc6JHtQT1JUU0RJUn0vbmV0LW1nbXQv
 cDUtTmV0QWRkci1JUCBcCi0JCXA1LU5ldC1ETlM+PTAuNjM6JHtQT1JUU0RJUn0vZG5zL3A1LU5l
 dC1ETlMgXAotCQlwNS1IVE1MLVBhcnNlcj49My40Njoke1BPUlRTRElSfS93d3cvcDUtSFRNTC1Q
 YXJzZXIgXAotCQlwNS1saWJ3d3c+PTA6JHtQT1JUU0RJUn0vd3d3L3A1LWxpYnd3dyBcCi0JCXA1
 LUVuY29kZS1EZXRlY3Q+PTA6JHtQT1JUU0RJUn0vY29udmVydGVycy9wNS1FbmNvZGUtRGV0ZWN0
 IFwKLQkJcDUtTWFpbC1Ub29scz49MDoke1BPUlRTRElSfS9tYWlsL3A1LU1haWwtVG9vbHMKK0xJ
 Q0VOU0U9CUFMMgorCitNQVNURVJESVI9CSR7LkNVUkRJUn0vLi4vLi4vbWFpbC9wNS1NYWlsLVNw
 YW1Bc3Nhc3NpbgorCitSVU5fREVQRU5EUys9CWphLXA1LU1lQ2FiPj0wLjk4OiR7UE9SVFNESVJ9
 L2phcGFuZXNlL3A1LU1lQ2FiCiAKIENPTkZMSUNUUz0JcDUtTWFpbC1TcGFtQXNzYXNzaW4tWzAt
 OV0qCiAKLVBFUkxfQ09ORklHVVJFPQl5ZXMKLVVTRV9QRVJMNV9SVU49CTUuOC44KwotVVNFX0xE
 Q09ORklHPQl5ZXMKLUNPTkZJR1VSRV9BUkdTPQlTWVNDT05GRElSPSIke1BSRUZJWH0vZXRjIiBc
 Ci0JICAgICAgIAlDT05UQUNUX0FERFJFU1M9IiR7Q09OVEFDVF9BRERSRVNTfSIgXAotCQlMT0NB
 TFNUQVRFRElSPSIvdmFyL2RiL3NwYW1hc3Nhc3NpbiIKLQotVVNFUlM9CQlzcGFtZAotR1JPVVBT
 PQkJc3BhbWQKLQotIyBZb3UgY2FuIG92ZXJyaWRlIGl0IGlmIHlvdSBsaWtlCi1DT05UQUNUX0FE
 RFJFU1M/PQlUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGF0IHN5c3RlbQotCi1PUFRJT05TPQlBU19S
 T09UICJSdW4gc3BhbWQgYXMgcm9vdCAocmVjb21tZW5kZWQpIiBvbiBcCi0JCVNQQU1DICJCdWls
 ZCBzcGFtZC9zcGFtYyAobm90IGZvciBhbWF2aXNkKSIgb24gXAotCQlTQUNPTVBJTEUgInNhLWNv
 bXBpbGUiIG9mZiBcCi0JCURLSU0gIkRLSU0vRG9tYWluS2V5cyBJZGVudGlmaWVkIE1haWwiIG9u
 IFwKLQkJU1NMICJCdWlsZCB3aXRoIFNTTCBzdXBwb3J0IGZvciBzcGFtZC9zcGFtYyIgb24gXAot
 CQlHTlVQRyAiSW5zdGFsbCBHbnVQRyAoZm9yIHNhLXVwZGF0ZSkiIG9uIFwKLQkJTVlTUUwgIkFk
 ZCBNeVNRTCBzdXBwb3J0IiBvZmYgXAotCQlQR1NRTCAiQWRkIFBvc3RyZVNRTCBzdXBwb3J0IiBv
 ZmYgXAotCQlSQVpPUiAiQWRkIFZpcHVsJ3MgUmF6b3Igc3VwcG9ydCIgb24gXAotCQlTUEZfUVVF
 UlkgIkFkZCBTUEYgcXVlcnkgc3VwcG9ydCIgb2ZmIFwKLQkJUkVMQVlfQ09VTlRSWSAiUmVsYXkg
 Y291bnRyeSBzdXBwb3J0IiBvZmYgXAotCQlEQ0MgIkFkZCBEQ0Mgc3VwcG9ydCAoc2VlIExJQ0VO
 U0UpIiBvZmYKLQotLmlmICFkZWZpbmVkKFdJVEhPVVRfU1NMKQotVVNFX09QRU5TU0w9CXllcwot
 LmVuZGlmCi0KLS5pbmNsdWRlIDxic2QucG9ydC5wcmUubWs+Ci0KLS5pZiAke1BFUkxfTEVWRUx9
 IDwgNTAwOTAzCi1SVU5fREVQRU5EUys9CXA1LUlPLUNvbXByZXNzPj0yLjAxNzoke1BPUlRTRElS
 fS9hcmNoaXZlcnMvcDUtSU8tQ29tcHJlc3MKLS5lbmRpZgotCi0uaWYgJHtQRVJMX0xFVkVMfSA8
 IDUwMTAwMAotUlVOX0RFUEVORFMrPQlwNS1BcmNoaXZlLVRhcj49MS4yMzoke1BPUlRTRElSfS9h
 cmNoaXZlcnMvcDUtQXJjaGl2ZS1UYXIgXAotCQlwNS1JTy1abGliPj0xLjA0OiR7UE9SVFNESVJ9
 L2FyY2hpdmVycy9wNS1JTy1abGliIFwKLQkJcDUtVGVzdC1IYXJuZXNzPj0zLjE2OiR7UE9SVFNE
 SVJ9L2RldmVsL3A1LVRlc3QtSGFybmVzcwotLmVuZGlmCi0KLS5pZiBkZWZpbmVkIChXSVRIX1NQ
 QU1DKQotQ09ORklHVVJFX0FSR1MrPQlCVUlMRF9TUEFNQz15ZXMKLS5lbHNlCi1DT05GSUdVUkVf
 QVJHUys9CUJVSUxEX1NQQU1DPW5vCi1XSVRIX0FTX1JPT1Q9Ci1XSVRIT1VUX1NTTD0xCi0uZW5k
 aWYKLQotLmlmIGRlZmluZWQoV0lUSF9TUEZfUVVFUlkpCi1SVU5fREVQRU5EUys9CSR7U0lURV9Q
 RVJMfS9NYWlsL1NQRi5wbToke1BPUlRTRElSfS9tYWlsL3A1LU1haWwtU1BGCi0uZW5kaWYKLS5p
 ZiAhZGVmaW5lZChXSVRIT1VUX0lQVjYpCi1SVU5fREVQRU5EUys9CSR7U0lURV9QRVJMfS9JTy9T
 b2NrZXQvSU5FVDYucG06JHtQT1JUU0RJUn0vbmV0L3A1LUlPLVNvY2tldC1JTkVUNgotLmVuZGlm
 Ci0KLS5pZiAhZGVmaW5lZChXSVRIT1VUX1NTTCkKLS5pbmNsdWRlICIke1BPUlRTRElSfS9Nay9i
 c2Qub3BlbnNzbC5tayIKLVJVTl9ERVBFTkRTKz0JJHtTSVRFX1BFUkx9L0lPL1NvY2tldC9TU0wu
 cG06JHtQT1JUU0RJUn0vc2VjdXJpdHkvcDUtSU8tU29ja2V0LVNTTAotQ0ZMQUdTKz0JLUkke09Q
 RU5TU0xJTkN9Ci1MREZMQUdTKz0JLUwke09QRU5TU0xMSUJ9Ci1DT05GSUdVUkVfQVJHUys9CUVO
 QUJMRV9TU0w9eWVzCi1QTElTVF9TVUIrPQlTU0w9IiIKLS5lbHNlCi1DT05GSUdVUkVfQVJHUys9
 CUVOQUJMRV9TU0w9bm8KLVBMSVNUX1NVQis9CVNTTD0iQGNvbW1lbnQgIgotLmVuZGlmCi0KLS5p
 ZiAhZGVmaW5lZChXSVRIT1VUX0dOVVBHKQotUlVOX0RFUEVORFMrPQlnbnVwZz49MS40Ljc6JHtQ
 T1JUU0RJUn0vc2VjdXJpdHkvZ251cGcKLS5lbmRpZgotCi0uaWYgZGVmaW5lZChXSVRIX01ZU1FM
 KQotUlVOX0RFUEVORFMrPQkke1NJVEVfUEVSTH0vJHtQRVJMX0FSQ0h9L0RCRC9teXNxbC5wbTok
 e1BPUlRTRElSfS9kYXRhYmFzZXMvcDUtREJELW15c3FsCi0uZW5kaWYKLQotLmlmIGRlZmluZWQo
 V0lUSF9QR1NRTCkKLVJVTl9ERVBFTkRTKz0JJHtTSVRFX1BFUkx9LyR7UEVSTF9BUkNIfS9EQkQv
 UGcucG06JHtQT1JUU0RJUn0vZGF0YWJhc2VzL3A1LURCRC1QZwotLmVuZGlmCi0KLS5pZiBkZWZp
 bmVkKFdJVEhfUkFaT1IpCi1SVU5fREVQRU5EUys9CXJhem9yLWFnZW50cz49Mi44NDoke1BPUlRT
 RElSfS9tYWlsL3Jhem9yLWFnZW50cwotLmVsc2UKLS5pZiAgICR7UEVSTF9MRVZFTH0gPCA1MDEw
 MDAKLS5pZiAhZGVmaW5lZChXSVRIX0RLSU0pCi1SVU5fREVQRU5EUys9CXA1LURpZ2VzdC1TSEEx
 Pj0yLjExOiR7UE9SVFNESVJ9L3NlY3VyaXR5L3A1LURpZ2VzdC1TSEExCi0uZW5kaWYKLS5lbmRp
 ZgotLmVuZGlmCi0KLS5pZiBkZWZpbmVkKFdJVEhfREtJTSkKLVJVTl9ERVBFTkRTKz0JJHtTSVRF
 X1BFUkx9L0lPL1NvY2tldC9TU0wucG06JHtQT1JUU0RJUn0vc2VjdXJpdHkvcDUtSU8tU29ja2V0
 LVNTTAotLiBpZiAke1BFUkxfTEVWRUx9IDwgNTAxMDAwCi1SVU5fREVQRU5EUys9CSR7U0lURV9Q
 RVJMfS8ke1BFUkxfQVJDSH0vRGlnZXN0L1NIQS5wbToke1BPUlRTRElSfS9zZWN1cml0eS9wNS1E
 aWdlc3QtU0hBCi0uIGVuZGlmCi1SVU5fREVQRU5EUys9CXA1LU1haWwtREtJTT49MC4zNzoke1BP
 UlRTRElSfS9tYWlsL3A1LU1haWwtREtJTQotUlVOX0RFUEVORFMrPQlwNS1DcnlwdC1PcGVuU1NM
 LVJTQT49MC4yNl8xOiR7UE9SVFNESVJ9L3NlY3VyaXR5L3A1LUNyeXB0LU9wZW5TU0wtUlNBCi0u
 ZW5kaWYKLQotLmlmIGRlZmluZWQoV0lUSF9TQUNPTVBJTEUpCi1SVU5fREVQRU5EUys9CXJlMmM+
 PS4xMi4wOiR7UE9SVFNESVJ9L2RldmVsL3JlMmMKLS5lbmRpZgotCi0uaWYgZGVmaW5lZChXSVRI
 X1JFTEFZX0NPVU5UUlkpCi1SVU5fREVQRU5EUys9CSR7U0lURV9QRVJMfS9JUC9Db3VudHJ5L0Zh
 c3QucG06JHtQT1JUU0RJUn0vbmV0L3A1LUlQLUNvdW50cnkKLS5lbmRpZgotCi0uaWYgZGVmaW5l
 ZChXSVRIX0RDQykKLVJVTl9ERVBFTkRTKz0JZGNjLWRjY2Q+PTEuMy4xMTE6JHtQT1JUU0RJUn0v
 bWFpbC9kY2MtZGNjZAotLmVuZGlmCi0KLU1BTjM9CQlNYWlsOjpTcGFtQXNzYXNzaW4uMyBcCi0J
 CU1haWw6OlNwYW1Bc3Nhc3Npbjo6QUlDYWNoZS4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpB
 cmNoaXZlSXRlcmF0b3IuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6QXN5bmNMb29wLjMgXAot
 CQlNYWlsOjpTcGFtQXNzYXNzaW46OkF1dG9XaGl0ZWxpc3QuMyBcCi0JCU1haWw6OlNwYW1Bc3Nh
 c3Npbjo6QmF5ZXMuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6QmF5ZXNTdG9yZS4zIFwKLQkJ
 TWFpbDo6U3BhbUFzc2Fzc2luOjpCYXllc1N0b3JlOjpCREIuMyBcCi0JCU1haWw6OlNwYW1Bc3Nh
 c3Npbjo6QmF5ZXNTdG9yZTo6TXlTUUwuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6QmF5ZXNT
 dG9yZTo6UGdTUUwuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6QmF5ZXNTdG9yZTo6U1FMLjMg
 XAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OkNsaWVudC4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2lu
 OjpDb25mLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OkNvbmY6OkxEQVAuMyBcCi0JCU1haWw6
 OlNwYW1Bc3Nhc3Npbjo6Q29uZjo6UGFyc2VyLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OkNv
 bmY6OlNRTC4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpEbnNSZXNvbHZlci4zIFwKLQkJTWFp
 bDo6U3BhbUFzc2Fzc2luOjpMb2dnZXIuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6TG9nZ2Vy
 OjpGaWxlLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OkxvZ2dlcjo6U3RkZXJyLjMgXAotCQlN
 YWlsOjpTcGFtQXNzYXNzaW46OkxvZ2dlcjo6U3lzbG9nLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNz
 aW46Ok1lc3NhZ2UuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6TWVzc2FnZTo6TWV0YWRhdGEu
 MyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6TWVzc2FnZTo6Tm9kZS4zIFwKLQkJTWFpbDo6U3Bh
 bUFzc2Fzc2luOjpQZXJNc2dMZWFybmVyLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBlck1z
 Z1N0YXR1cy4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQZXJzaXN0ZW50QWRkckxpc3QuMyBc
 Ci0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46
 OlBsdWdpbjo6QVNOLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6QVdMLjMgXAot
 CQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6QWNjZXNzREIuMyBcCi0JCU1haWw6OlNwYW1B
 c3Nhc3Npbjo6UGx1Z2luOjpBbnRpVmlydXMuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1
 Z2luOjpBdXRvTGVhcm5UaHJlc2hvbGQuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2lu
 OjpCYXllcy4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OkJvZHlSdWxlQmFzZUV4
 dHJhY3Rvci4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OkNoZWNrLjMgXAotCQlN
 YWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6RENDLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46
 OlBsdWdpbjo6REtJTS4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46Okhhc2hjYXNo
 LjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6TUlNRUhlYWRlci4zIFwKLQkJTWFp
 bDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46Ok9uZUxpbmVCb2R5UnVsZVR5cGUuMyBcCi0JCU1haWw6
 OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpQaGlzaFRhZy4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2lu
 OjpQbHVnaW46OlB5em9yLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6UmF6b3Iy
 LjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6UmVsYXlDb3VudHJ5LjMgXAotCQlN
 YWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6UmVwbGFjZVRhZ3MuMyBcCi0JCU1haWw6OlNwYW1B
 c3Nhc3Npbjo6UGx1Z2luOjpSZXVzZS4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46
 OlJ1bGUyWFNCb2R5LjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6U1BGLjMgXAot
 CQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6U2hvcnRjaXJjdWl0LjMgXAotCQlNYWlsOjpT
 cGFtQXNzYXNzaW46OlBsdWdpbjo6U3BhbUNvcC4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQ
 bHVnaW46OlRlc3QuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpUZXh0Q2F0LjMg
 XAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyLjMgXAotCQlNYWlsOjpT
 cGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyOjpNZUNhYi4zIFwKLQkJTWFpbDo6U3BhbUFz
 c2Fzc2luOjpQbHVnaW46OlRva2VuaXplcjo6U2ltcGxlSkEuMyBcCi0JCU1haWw6OlNwYW1Bc3Nh
 c3Npbjo6UGx1Z2luOjpVUklETlNCTC4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46
 OlVSSURldGFpbC4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlZCb3VuY2UuMyBc
 Ci0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpXaGl0ZUxpc3RTdWJqZWN0LjMgXAotCQlN
 YWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbkhhbmRsZXIuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Np
 bjo6U1FMQmFzZWRBZGRyTGlzdC4zIFwKLQkJTWFpbDo6U3BhbUFzc2Fzc2luOjpTdWJQcm9jQmFj
 a0NoYW5uZWwuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6VGltZW91dC4zIFwKLQkJTWFpbDo6
 U3BhbUFzc2Fzc2luOjpVdGlsLjMgXAotCQlNYWlsOjpTcGFtQXNzYXNzaW46OlV0aWw6OkNoYXJz
 ZXQuMyBcCi0JCU1haWw6OlNwYW1Bc3Nhc3Npbjo6VXRpbDo6RGVwZW5kZW5jeUluZm8uMyBcCi0J
 CU1haWw6OlNwYW1Bc3Nhc3Npbjo6VXRpbDo6UHJvZ3Jlc3MuMyBcCi0JCU1haWw6OlNwYW1Bc3Nh
 c3Npbjo6VXRpbDo6UmVnaXN0cmFyQm91bmRhcmllcy4zIFwKLQkJc3BhbWFzc2Fzc2luLXJ1bi4z
 Ci0KLU1BTjE9CQlzcGFtZC4xIHNwYW1hc3Nhc3Npbi4xIHNwYW1jLjEgc2EtbGVhcm4uMSBzYS11
 cGRhdGUuMSBcCi0JCXNwYW1hc3Nhc3Npbi1ydW4uMSBzYS1jb21waWxlLjEgc2EtYXdsLjEKLQot
 RE9DU0RJUj0JJHtQUkVGSVh9L3NoYXJlL2RvYy8ke1BLR05BTUVQUkVGSVh9JHtQT1JUTkFNRX0K
 LURBVEFESVI9CSR7UFJFRklYfS9zaGFyZS9zcGFtYXNzYXNzaW4KLURPQ1M9CQlDUkVESVRTIENo
 YW5nZXMgSU5TVEFMTCBMSUNFTlNFIE5PVElDRSBQQUNLQUdJTkcgUkVBRE1FIFRSQURFTUFSSyBV
 UEdSQURFIFVTQUdFIHByb2NtYWlscmMuZXhhbXBsZQotRE9DU1NRTD0JUkVBRE1FIFJFQURNRS5h
 d2wgUkVBRE1FLmJheWVzIGF3bF9teXNxbC5zcWwgYXdsX3BnLnNxbCBiYXllc19teXNxbC5zcWwg
 YmF5ZXNfcGcuc3FsIHVzZXJwcmVmX215c3FsLnNxbCB1c2VycHJlZl9wZy5zcWwKLURPQ1NMREFQ
 PQlSRUFETUUgUkVBRE1FLnRlc3Rpbmcgc2FfdGVzdC5sZGlmCi1QT1JURE9DUz0JJHtET0NTfSBz
 cWwgbGRhcCAke0RPQ0pBfQotRE9DSkE9CQkke1BBVENIRklMRVM6Uy8ucGF0Y2g6SkEvLnR4dC99
 Ci1UT0tFTklaRVJfUFJFPQl0b2tlbml6ZXIucHJlCitFWFRSQV9QQVRDSEVTPQkkey5DVVJESVJ9
 L2ZpbGVzL3NwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBhdGNoCiAKLVVTRV9SQ19TVUJSPQlzYS1z
 cGFtZC5zaAorUEtHTUVTU0FHRT0JJHsuQ1VSRElSfS9wa2ctbWVzc2FnZQorUExJU1Q9CSR7V1JL
 RElSfS9wa2ctcGxpc3QKIAotLmlmIGRlZmluZWQoV0lUSF9NWVNRTCkgfHwgZGVmaW5lZChXSVRI
 X1BHU1FMKQotU1VCX0xJU1QrPQlTUUxfRkxBRz0iLVEiCi0uZWxzZQotU1VCX0xJU1QrPQlTUUxf
 RkxBRz0iIgotLmVuZGlmCi0uaWYgIWRlZmluZWQoV0lUSF9BU19ST09UKQotU1VCX0xJU1QrPQlS
 VU5fQVNfVVNFUj0iLXUgJHtVU0VSU30gLUggL3Zhci9zcG9vbC9zcGFtZCIKLS5lbHNlCi1TVUJf
 TElTVCs9CVJVTl9BU19VU0VSPSIiCi0uZW5kaWYKLQotcG9zdC1wYXRjaDoKLQlAJHtGSU5EfSAk
 e1dSS1NSQ30gLW5hbWUgXCoub3JpZyAtZGVsZXRlCi0JQCR7UkVJTlBMQUNFX0NNRH0gLWUgJ3Mj
 Ql9DT05GRElSKS9sb2NhbC5jZiNCX0NPTkZESVIpL2xvY2FsLmNmLnNhbXBsZSNnJyBcCi0JCS1l
 ICdzI0JfQ09ORkRJUikvaW5pdC5wcmUjQl9DT05GRElSKS9pbml0LnByZS5zYW1wbGUjZycgXAot
 CQktZSAncyNCX0NPTkZESVIpL3YzMTAucHJlI0JfQ09ORkRJUikvdjMxMC5wcmUuc2FtcGxlI2cn
 IFwKLQkJLWUgJ3MjQl9DT05GRElSKS92MzEyLnByZSNCX0NPTkZESVIpL3YzMTIucHJlLnNhbXBs
 ZSNnJyBcCi0JCS1lICdzI0JfQ09ORkRJUikvdjMyMC5wcmUjQl9DT05GRElSKS92MzIwLnByZS5z
 YW1wbGUjZycgXAotCQktZSAncyNCX0NPTkZESVIpL3YzMzAucHJlI0JfQ09ORkRJUikvdjMzMC5w
 cmUuc2FtcGxlI2cnIFwKLQkJLWUgJ3MvcmVxdWlyZSBEQkkvMC8nIFwKLQkJJHtXUktTUkN9L01h
 a2VmaWxlLlBMCi0JQCR7UkVJTlBMQUNFX0NNRH0gLWUgJy9eQ0MgPS9kOyBcCi0JCXN8QFNTTENG
 TEFHU0B8JiAkJHtDRkxBR1N9fGcnICR7V1JLU1JDfS9zcGFtYy9NYWtlZmlsZS5pbgotCi0uaWYg
 ZGVmaW5lZChXSVRIX1JBWk9SKQotCSR7UkVJTlBMQUNFX0NNRH0gLWUgJy9SYXpvcjIvcy9eI2xv
 YWRwbHVnaW4vbG9hZHBsdWdpbi8nICR7V1JLU1JDfS9ydWxlcy92MzEyLnByZQotLmVuZGlmCi0u
 aWYgZGVmaW5lZChXSVRIX1JFTEFZX0NPVU5UUlkpCi0JJHtSRUlOUExBQ0VfQ01EfSAtZSAnL1Jl
 bGF5Q291bnRyeS9zL14jID9sb2FkcGx1Z2luL2xvYWRwbHVnaW4vJyAke1dSS1NSQ30vcnVsZXMv
 aW5pdC5wcmUKLS5lbmRpZgotLmlmICFkZWZpbmVkKFdJVEhfREtJTSkKLQkke1JFSU5QTEFDRV9D
 TUR9IC1lICcvREtJTS9zL15sb2FkcGx1Z2luLyNsb2FkcGx1Z2luLycgJHtXUktTUkN9L3J1bGVz
 L3YzMTIucHJlCi0uZW5kaWYKLS5pZiAhZGVmaW5lZChXSVRIX1NQRl9RVUVSWSkKLQkke1JFSU5Q
 TEFDRV9DTUR9IC1lICcvU1BGL3MvXmxvYWRwbHVnaW4vI2xvYWRwbHVnaW4vJyAke1dSS1NSQ30v
 cnVsZXMvaW5pdC5wcmUKLS5lbmRpZgotLmlmIGRlZmluZWQoV0lUSF9EQ0MpCi0JJHtSRUlOUExB
 Q0VfQ01EfSAtZSAnL0RDQy9zL14jbG9hZHBsdWdpbi9sb2FkcGx1Z2luLycgJHtXUktTUkN9L3J1
 bGVzL3YzMTAucHJlCi0uZW5kaWYKLS5pZiAhZGVmaW5lZChXSVRIX0FXTCkKLQkke1JFSU5QTEFD
 RV9DTUR9IC1lICcvQVdML3MvXmxvYWRwbHVnaW4vI2xvYWRwbHVnaW4vJyAke1dSS1NSQ30vcnVs
 ZXMvdjMxMC5wcmUKLS5lbmRpZgotLmlmIGRlZmluZWQoV0lUSF9TQUNPTVBJTEUpCi0JJHtSRUlO
 UExBQ0VfQ01EfSAtZSAnL1J1bGUyWFNCb2R5L3MvXiMgbG9hZHBsdWdpbi9sb2FkcGx1Z2luLycg
 JHtXUktTUkN9L3J1bGVzL3YzMjAucHJlCi0uZW5kaWYKK1RPS0VOSVpFUl9QUkU9CXRva2VuaXpl
 ci5wcmUKIAogcHJlLWluc3RhbGw6Ci0JQCR7TUtESVJ9ICAke0RBVEFESVJ9CisJQCR7Q0FUfSAk
 e0VYVFJBX1BBVENIRVM6Uy8ucGF0Y2gvLnBsaXN0L30gPiAke1BMSVNUfQorCUAke0NBVH0gJHtQ
 S0dESVJ9L3BrZy1wbGlzdCA+PiAke1BMSVNUfQogCi1wb3N0LWJ1aWxkOgotCUAoY2QgJHtCVUlM
 RF9XUktTUkN9OyAke1NFVEVOVn0gJHtNQUtFX0VOVn0gJHtNQUtFfSAke01BS0VfRkxBR1N9ICR7
 TUFLRUZJTEV9ICR7TUFLRV9BUkdTfSBzcGFtYy9saWJzcGFtYy5zbykKLS5pZiAhZGVmaW5lZChX
 SVRIT1VUX1NTTCkKLQlAKGNkICR7QlVJTERfV1JLU1JDfTsgJHtTRVRFTlZ9ICR7TUFLRV9FTlZ9
 ICR7TUFLRX0gJHtNQUtFX0ZMQUdTfSAke01BS0VGSUxFfSAke01BS0VfQVJHU30gc3BhbWMvbGli
 c3Nsc3BhbWMuc28pCi0uZW5kaWYKLQotcHJlLXN1LWluc3RhbGw6Ci0JQFVTRVI9JHtVU0VSU30g
 R1JPVVA9JHtHUk9VUFN9ICR7U0h9ICR7UEtHSU5TVEFMTH0gJHtQS0dOQU1FfSBQUkUtSU5TVEFM
 TAotCUAke0lOU1RBTExfUFJPR1JBTX0gJHtXUktTUkN9L3NwYW1jL2xpYnNwYW1jLnNvICR7UFJF
 RklYfS9saWIvbGlic3BhbWMuc28uMAotCUAke0xOfSAtc2YgbGlic3BhbWMuc28uMCAke1BSRUZJ
 WH0vbGliL2xpYnNwYW1jLnNvCi0uaWYgIWRlZmluZWQoV0lUSE9VVF9TU0wpCi0JQCR7SU5TVEFM
 TF9QUk9HUkFNfSAke1dSS1NSQ30vc3BhbWMvbGlic3Nsc3BhbWMuc28gJHtQUkVGSVh9L2xpYi9s
 aWJzc2xzcGFtYy5zby4wCi0JQCR7TE59IC1zZiBsaWJzc2xzcGFtYy5zby4wICR7UFJFRklYfS9s
 aWIvbGlic3Nsc3BhbWMuc28KLS5lbmRpZgotCUAke0lOU1RBTExfREFUQX0gJHtXUktTUkN9L3Nw
 YW1jL2xpYnNwYW1jLmggJHtQUkVGSVh9L2luY2x1ZGUKLQotcG9zdC1pbnN0YWxsOgotLmlmIGRl
 ZmluZWQgKFdJVEhfU1BBTUMpCi0JQCR7U1RSSVBfQ01EfSAke1BSRUZJWH0vYmluL3NwYW1jCi0u
 ZW5kaWYKLQlAWyAtZiAke1BSRUZJWH0vZXRjL21haWwvc3BhbWFzc2Fzc2luL2luaXQucHJlIF0g
 fHwgXAotCQkke0NQfSAke1BSRUZJWH0vZXRjL21haWwvc3BhbWFzc2Fzc2luL2luaXQucHJlLnNh
 bXBsZSBcCi0JCQkke1BSRUZJWH0vZXRjL21haWwvc3BhbWFzc2Fzc2luL2luaXQucHJlCi0JQFsg
 LWYgJHtQUkVGSVh9L2V0Yy9tYWlsL3NwYW1hc3Nhc3Npbi92MzEwLnByZSBdIHx8IFwKLQkJJHtD
 UH0gJHtQUkVGSVh9L2V0Yy9tYWlsL3NwYW1hc3Nhc3Npbi92MzEwLnByZS5zYW1wbGUgXAotCQkJ
 JHtQUkVGSVh9L2V0Yy9tYWlsL3NwYW1hc3Nhc3Npbi92MzEwLnByZQotCUBbIC1mICR7UFJFRklY
 fS9ldGMvbWFpbC9zcGFtYXNzYXNzaW4vdjMxMi5wcmUgXSB8fCBcCi0JCSR7Q1B9ICR7UFJFRklY
 fS9ldGMvbWFpbC9zcGFtYXNzYXNzaW4vdjMxMi5wcmUuc2FtcGxlIFwKLQkJCSR7UFJFRklYfS9l
 dGMvbWFpbC9zcGFtYXNzYXNzaW4vdjMxMi5wcmUKLQlAWyAtZiAke1BSRUZJWH0vZXRjL21haWwv
 c3BhbWFzc2Fzc2luL3YzMjAucHJlIF0gfHwgXAotCQkke0NQfSAke1BSRUZJWH0vZXRjL21haWwv
 c3BhbWFzc2Fzc2luL3YzMjAucHJlLnNhbXBsZSBcCi0JCQkke1BSRUZJWH0vZXRjL21haWwvc3Bh
 bWFzc2Fzc2luL3YzMjAucHJlCi0JQFBLR19QUkVGSVg9JHtQUkVGSVh9IEJBVENIPSR7QkFUQ0h9
 IFNVX0NNRD0iJHtTVV9DTUR9IiBVU0VSPSR7VVNFUlN9IEdST1VQPSR7R1JPVVBTfSAke1NIfSAk
 e1BLR0RJUn0vcGtnLWluc3RhbGwgJHtQS0dOQU1FfSBQT1NULUlOU1RBTEwKLQlAWyAtZiAke1BS
 RUZJWH0vZXRjL21haWwvc3BhbWFzc2Fzc2luL3YzMzAucHJlIF0gfHwgXAotCQkke0NQfSAke1BS
 RUZJWH0vZXRjL21haWwvc3BhbWFzc2Fzc2luL3YzMzAucHJlLnNhbXBsZSBcCi0JCQkke1BSRUZJ
 WH0vZXRjL21haWwvc3BhbWFzc2Fzc2luL3YzMzAucHJlCi0KLQlAJHtDUH0gJHtESVNURElSfS8k
 e0RJU1RfU1VCRElSfS8ke1RPS0VOSVpFUl9QUkV9ICR7UFJFRklYfS9ldGMvbWFpbC9zcGFtYXNz
 YXNzaW4vJHtUT0tFTklaRVJfUFJFfS5zYW1wbGUKK3Bvc3QtaW5zdGFsbDo6CisJQCR7Q1B9ICR7
 LkNVUkRJUn0vZmlsZXMvJHtUT0tFTklaRVJfUFJFfSAke1BSRUZJWH0vZXRjL21haWwvc3BhbWFz
 c2Fzc2luLyR7VE9LRU5JWkVSX1BSRX0uc2FtcGxlCiAJQFsgLWYgJHtQUkVGSVh9L2V0Yy9tYWls
 L3NwYW1hc3Nhc3Npbi8ke1RPS0VOSVpFUl9QUkV9IF0gfHwgXAogCQkke0NQfSAke1BSRUZJWH0v
 ZXRjL21haWwvc3BhbWFzc2Fzc2luLyR7VE9LRU5JWkVSX1BSRX0uc2FtcGxlIFwKIAkJCSR7UFJF
 RklYfS9ldGMvbWFpbC9zcGFtYXNzYXNzaW4vJHtUT0tFTklaRVJfUFJFfQogCi0uaWYgIWRlZmlu
 ZWQoTk9QT1JURE9DUykKLQlAJHtNS0RJUn0gJHtET0NTRElSfSAke0RPQ1NESVJ9L3NxbCAke0RP
 Q1NESVJ9L2xkYXAKLQlAJHtJTlNUQUxMX0RBVEF9ICR7RE9DUzpTfF58JHtXUktTUkN9L3x9ICR7
 RE9DU0RJUn0KLQlAJHtJTlNUQUxMX0RBVEF9ICR7RE9DU1NRTDpTfF58JHtXUktTUkN9L3NxbC98
 fSAke0RPQ1NESVJ9L3NxbAotCUAke0lOU1RBTExfREFUQX0gJHtET0NTTERBUDpTfF58JHtXUktT
 UkN9L2xkYXAvfH0gJHtET0NTRElSfS9sZGFwCi0JQCR7SU5TVEFMTF9EQVRBfSAke0RJU1RESVJ9
 LyR7RElTVF9TVUJESVJ9LyR7RE9DSkF9ICR7RE9DU0RJUn0KLQotLmVuZGlmCi0JQCR7U0VEfSAt
 ZSAncyNQUkVGSVgjJHtQUkVGSVh9IycgJHtQS0dNRVNTQUdFfQotCi0uaW5jbHVkZSA8YnNkLnBv
 cnQucG9zdC5taz4KKy5pbmNsdWRlICIke01BU1RFUkRJUn0vTWFrZWZpbGUiCmRpZmYgLXJ1TiBq
 YXBhbmVzZS9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9kaXN0aW5mbyAvdmFyL3RtcC9wNS1NYWlsLVNw
 YW1Bc3Nhc3Npbi9kaXN0aW5mbwotLS0gamFwYW5lc2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZGlz
 dGluZm8JMjAxMS0wOC0xMSAxODo1OTo1Mi4wMDAwMDAwMDAgKzA5MDAKKysrIC92YXIvdG1wL3A1
 LU1haWwtU3BhbUFzc2Fzc2luL2Rpc3RpbmZvCTE5NzAtMDEtMDEgMDk6MDA6MDAuMDAwMDAwMDAw
 ICswOTAwCkBAIC0xLDggKzAsMCBAQAotU0hBMjU2IChqYS1zcGFtYXNzYXNzaW4vTWFpbC1TcGFt
 QXNzYXNzaW4tMy4zLjIudGFyLmd6KSA9IDUzMjMwMzg5MzlhMGVmOWZjOTdkNTI2NGRlZmNlM2Fl
 MWQ5NWU5OGIzYTk0YzRjM2I1ODMzNDFjOTI3ZjMyZGYKLVNJWkUgKGphLXNwYW1hc3Nhc3Npbi9N
 YWlsLVNwYW1Bc3Nhc3Npbi0zLjMuMi50YXIuZ3opID0gMTIwODE4MgotU0hBMjU2IChqYS1zcGFt
 YXNzYXNzaW4vdG9rZW5pemVyLnByZSkgPSA5ZjhlMzBhODQ0OWZkMTNkNTcxNDI3ZWEzMGEyNTJi
 NGIyNzVmMTUzYmRlNTM0NWM1MDQyN2E3YWVlM2M5MGUwCi1TSVpFIChqYS1zcGFtYXNzYXNzaW4v
 dG9rZW5pemVyLnByZSkgPSAxNjMKLVNIQTI1NiAoamEtc3BhbWFzc2Fzc2luL3NwYW1hc3Nhc3Np
 bi0zLjMuMi1qYS0xLnR4dCkgPSA2ZDgxOGIyNDZkMjY1NWFiYjI2MGRlODNiNDczNWM0ZjQzMzgw
 OGRlN2MxOWM0ZjkwNTQ3NGM3OGMxY2NiZWJkCi1TSVpFIChqYS1zcGFtYXNzYXNzaW4vc3BhbWFz
 c2Fzc2luLTMuMy4yLWphLTEudHh0KSA9IDcyNDYKLVNIQTI1NiAoamEtc3BhbWFzc2Fzc2luL3Nw
 YW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBhdGNoKSA9IDA3M2U5ZWFlYmYwZGMyYmY5ZTkwZjg5NGMx
 NzFhNzY1NGRhZDg0NDRlZDI2OTUyODA0NWU1NDczMDJiNzEzNmEKLVNJWkUgKGphLXNwYW1hc3Nh
 c3Npbi9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS5wYXRjaCkgPSAzMzc0MApkaWZmIC1ydU4gamFw
 YW5lc2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvcGF0Y2gtcnVsZXMtbG9jYWwuY2YgL3Zh
 ci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvcGF0Y2gtcnVsZXMtbG9jYWwuY2YKLS0t
 IGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3BhdGNoLXJ1bGVzLWxvY2FsLmNm
 CTIwMDgtMDUtMzAgMjI6NDY6MzMuMDAwMDAwMDAwICswOTAwCisrKyAvdmFyL3RtcC9wNS1NYWls
 LVNwYW1Bc3Nhc3Npbi9maWxlcy9wYXRjaC1ydWxlcy1sb2NhbC5jZgkxOTcwLTAxLTAxIDA5OjAw
 OjAwLjAwMDAwMDAwMCArMDkwMApAQCAtMSwxNSArMCwwIEBACi0tLS0gcnVsZXMvbG9jYWwuY2Yu
 b3JpZwkyMDA4LTAxLTA2IDA2OjExOjM5LjAwMDAwMDAwMCArMDkwMAotKysrIHJ1bGVzL2xvY2Fs
 LmNmCTIwMDgtMDUtMjcgMjI6MDc6NTguMDAwMDAwMDAwICswOTAwCi1AQCAtNTEsMyArNTEsMTIg
 QEAKLSAjIGJheWVzX2lnbm9yZV9oZWFkZXIgWC1TcGFtLUZsYWcKLSAjIGJheWVzX2lnbm9yZV9o
 ZWFkZXIgWC1TcGFtLVN0YXR1cwotIAotKwotKyMgICBOb3JtYWxpemUgY2hhcnNldCB0byBVVEYt
 OCAoZGVmYXVsdDowKQotKyMKLSsjIG5vcm1hbGl6ZV9jaGFyc2V0IDEKLSsjCi0rIyBzY29yZSBG
 Uk9NX0VYQ0VTU19CQVNFNjQgMAotKyMgc2NvcmUgU1VCSl9JTExFR0FMX0NIQVJTIDAKLSsjIHNj
 b3JlIE1JTUVfQkFTRTY0X1RFWFQgMS4wCi0rIyBzY29yZSBUVkRfU1BBQ0VfUkFUSU8gMApkaWZm
 IC1ydU4gamFwYW5lc2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvcGF0Y2gtc2EtbGVhcm4u
 cmF3IC92YXIvdG1wL3A1LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3BhdGNoLXNhLWxlYXJuLnJh
 dwotLS0gamFwYW5lc2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvcGF0Y2gtc2EtbGVhcm4u
 cmF3CTIwMDgtMDEtMTQgMjE6Mzc6MTkuMDAwMDAwMDAwICswOTAwCisrKyAvdmFyL3RtcC9wNS1N
 YWlsLVNwYW1Bc3Nhc3Npbi9maWxlcy9wYXRjaC1zYS1sZWFybi5yYXcJMTk3MC0wMS0wMSAwOTow
 MDowMC4wMDAwMDAwMDAgKzA5MDAKQEAgLTEsMjcgKzAsMCBAQAotLS0tIHNhLWxlYXJuLnJhdy5v
 cmlnCVdlZCBBdWcgIDggMDY6MTk6NDcgMjAwNwotKysrIHNhLWxlYXJuLnJhdwlNb24gQXVnIDIw
 IDE5OjA1OjA2IDIwMDcKLUBAIC0xMDEsNiArMTAxLDcgQEAgR2V0T3B0aW9ucygKLSAgICdsb2Nh
 bHxMJyAgICAgICAgICAgICAgPT4gXCRvcHR7J2xvY2FsJ30sCi0gICAnbm8tc3luY3xub3N5bmMn
 ICAgICAgID0+IFwkb3B0eydub3N5bmMnfSwKLSAgICdzaG93ZG90cycgICAgICAgICAgICAgPT4g
 XCRvcHR7J3Nob3dkb3RzJ30sCi0rICAncXVpZXR8cScgICAgICAgICAgICAgID0+IFwkb3B0eydx
 dWlldCd9LAotICAgJ3Byb2dyZXNzJyAgICAgICAgICAgICA9PiBcJG9wdHsncHJvZ3Jlc3MnfSwK
 LSAgICd1c2UtaWdub3JlcycgICAgICAgICAgPT4gXCRvcHR7J3VzZS1pZ25vcmVzJ30sCi0gICAn
 bm8tcmVidWlsZHxub3JlYnVpbGQnID0+IHN1YiB7ICRvcHR7J25vc3luYyd9ID0gMTsgd2FybiAi
 VGhlIC0tbm8tcmVidWlsZCBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZC4gIFBsZWFzZSB1c2Ug
 LS1uby1zeW5jIGluc3RlYWQuXG4iIH0sCi1AQCAtNDMzLDcgKzQzNCw3IEBAIGV2YWwgewotICAg
 JHByb2dyZXNzLT5maW5hbCgpIGlmICgkb3B0e3Byb2dyZXNzfSAmJiAkcHJvZ3Jlc3MpOwotIAot
 ICAgbXkgJHBocmFzZSA9IGRlZmluZWQgJGZvcmdldCA/ICJGb3Jnb3QiIDogIkxlYXJuZWQiOwot
 LSAgcHJpbnQgIiRwaHJhc2UgdG9rZW5zIGZyb20gJGxlYXJuZWRjb3VudCBtZXNzYWdlKHMpICgk
 bWVzc2FnZWNvdW50IG1lc3NhZ2UocykgZXhhbWluZWQpXG4iOwotKyAgcHJpbnQgIiRwaHJhc2Ug
 dG9rZW5zIGZyb20gJGxlYXJuZWRjb3VudCBtZXNzYWdlKHMpICgkbWVzc2FnZWNvdW50IG1lc3Nh
 Z2UocykgZXhhbWluZWQpXG4iIGlmICghJG9wdHtxdWlldH0pOwotIAotICAgIyBJZiB3ZSBuZWVk
 ZWQgdG8gbWFrZSBhIHRlbXBmaWxlLCBnbyBkZWxldGUgaXQuCi0gICBpZiAoIGRlZmluZWQgJHRl
 bXBmaWxlICkgewotQEAgLTYwMSw2ICs2MDIsNyBAQCBPcHRpb25zOgotICAgICAgICAgICAgICAg
 ICAgICAgICAgKGRlZmF1bHQ6IC9ldGMvbWFpbC9zcGFtYXNzYXNzaW4pCi0gIC0tY2Y9J2NvbmZp
 ZyBsaW5lJyAgICBBZGRpdGlvbmFsIGxpbmUgb2YgY29uZmlndXJhdGlvbgotICAtRCwgLS1kZWJ1
 ZyBbYXJlYT1uLC4uLl0gIFByaW50IGRlYnVnZ2luZyBtZXNzYWdlcwotKyAtcSwgLS1xdWlldCAg
 ICAgICAgICAgUmVkdWNlIGFtb3VudCBvZiBpbmZvcm1hdGlvbiBwcmludGVkIG91dAotICAtViwg
 LS12ZXJzaW9uICAgICAgICAgUHJpbnQgdmVyc2lvbgotICAtaCwgLS1oZWxwICAgICAgICAgICAg
 UHJpbnQgdXNhZ2UgbWVzc2FnZQotIApkaWZmIC1ydU4gamFwYW5lc2UvcDUtTWFpbC1TcGFtQXNz
 YXNzaW4vZmlsZXMvc2Etc3BhbWQuc2guaW4gL3Zhci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4v
 ZmlsZXMvc2Etc3BhbWQuc2guaW4KLS0tIGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL2Zp
 bGVzL3NhLXNwYW1kLnNoLmluCTIwMTItMDEtMTQgMTc6NTU6NTAuMDAwMDAwMDAwICswOTAwCisr
 KyAvdmFyL3RtcC9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9maWxlcy9zYS1zcGFtZC5zaC5pbgkxOTcw
 LTAxLTAxIDA5OjAwOjAwLjAwMDAwMDAwMCArMDkwMApAQCAtMSw0MyArMCwwIEBACi0jIS9iaW4v
 c2gKLSMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL2Zp
 bGVzL3NhLXNwYW1kLnNoLmluLHYgMS40IDIwMTIvMDEvMTQgMDg6NTU6NTAgZG91Z2IgRXhwICQK
 LSMKLQotIyBQUk9WSURFOiBzcGFtZAotIyBSRVFVSVJFOiBMT0dJTgotIyBCRUZPUkU6IG1haWwK
 LSMgS0VZV09SRDogc2h1dGRvd24KLQotIwotIyBBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byAv
 ZXRjL3JjLmNvbmYgdG8gZW5hYmxlIHNwYW1kOgotIwotI3NwYW1kX2VuYWJsZT0iWUVTIgotIwot
 IyBTZWUgc3BhbWQoOCkgZm9yIGZsYWdzCi0jCi0KLS4gL2V0Yy9yYy5zdWJyCi0KLW5hbWU9c3Bh
 bWQKLXJjdmFyPXNwYW1kX2VuYWJsZQotCi1leHRyYV9jb21tYW5kcz0icmVsb2FkIgotbG9hZF9y
 Y19jb25maWcgJG5hbWUKLQotIyBTZXQgZGVmYXVsdHMKLTogJHtzcGFtZF9lbmFibGU6PSJOTyJ9
 Ci06ICR7c3BhbWRfZmxhZ3M9Ii1jICUlU1FMX0ZMQUclJSAlJVJVTl9BU19VU0VSJSUifQotCi1w
 aWRmaWxlPSR7c3BhbWRfcGlkZmlsZTotIi92YXIvcnVuL3NwYW1kL3NwYW1kLnBpZCJ9Ci1jb21t
 YW5kPSUlUFJFRklYJSUvYmluL3NwYW1kCi1jb21tYW5kX2FyZ3M9Ii1kIC1yICR7cGlkZmlsZX0i
 Ci1yZXF1aXJlZF9kaXJzPSUlUFJFRklYJSUvc2hhcmUvc3BhbWFzc2Fzc2luCi0KLXN0b3BfcG9z
 dGNtZD1zdG9wX3Bvc3RjbWQKLQotc3RvcF9wb3N0Y21kKCkKLXsKLSAgcm0gLWYgJHBpZGZpbGUK
 LX0KLQotcnVuX3JjX2NvbW1hbmQgIiQxIgpkaWZmIC1ydU4gamFwYW5lc2UvcDUtTWFpbC1TcGFt
 QXNzYXNzaW4vZmlsZXMvc3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGF0Y2ggL3Zhci90bXAvcDUt
 TWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvc3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGF0Y2gKLS0t
 IGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3NwYW1hc3Nhc3Npbi0zLjMuMi1q
 YS0xLnBhdGNoCTE5NzAtMDEtMDEgMDk6MDA6MDAuMDAwMDAwMDAwICswOTAwCisrKyAvdmFyL3Rt
 cC9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9maWxlcy9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS5wYXRj
 aAkyMDEyLTAzLTI0IDIyOjM3OjM0LjAwMDAwMDAwMCArMDkwMApAQCAtMCwwICsxLDExNDggQEAK
 K2RpZmYgLXVOciBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vSFRNTC5wbSBsaWIvTWFpbC9TcGFtQXNz
 YXNzaW4vSFRNTC5wbQorLS0tIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9IVE1MLnBtCTIwMTEtMDYt
 MDcgMDg6NTk6MTcuMDAwMDAwMDAwICswOTAwCisrKysgbGliL01haWwvU3BhbUFzc2Fzc2luL0hU
 TUwucG0JMjAxMS0wNy0xNCAyMjozNTo0Ni4wMDAwMDAwMDAgKzA5MDAKK0BAIC04NCw3ICs4NCw3
 IEBACisgJG9rX2F0dHJpYnV0ZXN7c3Bhbn17JF99ID0gMSBmb3IgcXcoIHN0eWxlICk7CisgCisg
 c3ViIG5ldyB7CistICBteSAoJGNsYXNzKSA9IEBfOworKyAgbXkgKCRjbGFzcywgJG9wdHMpID0g
 QF87CisgICBteSAkc2VsZiA9ICRjbGFzcy0+U1VQRVI6Om5ldygKKyAJCWFwaV92ZXJzaW9uID0+
 IDMsCisgCQloYW5kbGVycyA9PiBbCitAQCAtOTcsNiArOTcsNyBAQAorIAkJCWRlY2xhcmF0aW9u
 ID0+IFsiaHRtbF9kZWNsYXJhdGlvbiIsICJzZWxmLHRleHQiXSwKKyAJCV0sCisgCQltYXJrZWRf
 c2VjdGlvbnMgPT4gMSk7CisrICAkc2VsZi0+e25vcm1hbGl6ZX0gPSAkb3B0cy0+eydub3JtYWxp
 emUnfSB8fCAwOworIAorICAgJHNlbGY7CisgfQorQEAgLTY3Miw3ICs2NzMsMTQgQEAKKyAgICAg
 fQorICAgfQorICAgZWxzZSB7CistICAgICR0ZXh0ID1+IHMvWyBcdFxuXHJcZlx4MGJceGEwXSsv
 IC9nOworKyAgICBpZiAoJHNlbGYtPntub3JtYWxpemV9KSB7CisrICAgICAgJHRleHQgPX4gcy9c
 eGMyXHhhMC8gL2c7ICAgICAgICAgICAjIG5vLWJyZWFrIHNwYWNlCisrICAgICAgJHRleHQgPX4g
 cy9ceGUzXHg4MFx4ODAvIC9nOyAgICAgICAjIGlkZW9ncmFwaGljc3BhY2UKKysgICAgICAkdGV4
 dCA9fiBzL1sgXHRcblxyXGZceDBiXSsvIC9nOworKyAgICB9CisrICAgIGVsc2UgeworKyAgICAg
 ICR0ZXh0ID1+IHMvWyBcdFxuXHJcZlx4MGJceGEwXSsvIC9nOworKyAgICB9CisgICAgICMgdHJp
 bSBsZWFkaW5nIHdoaXRlc3BhY2UgaWYgcHJldmlvdXMgZWxlbWVudCB3YXMgd2hpdGVzcGFjZSAK
 KyAgICAgIyBhbmQgY3VycmVudCBlbGVtZW50IGlzIG5vdCBpbnZpc2libGUKKyAgICAgaWYgKEB7
 ICRzZWxmLT57dGV4dH0gfSAmJiAhJGRpc3BsYXl7aW52aXNpYmxlfSAmJgorZGlmZiAtdU5yIGxp
 Yi9NYWlsL1NwYW1Bc3Nhc3Npbi9NZXNzYWdlL05vZGUucG0gbGliL01haWwvU3BhbUFzc2Fzc2lu
 L01lc3NhZ2UvTm9kZS5wbQorLS0tIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9NZXNzYWdlL05vZGUu
 cG0JMjAxMS0wNi0wNyAwODo1OToxNy4wMDAwMDAwMDAgKzA5MDAKKysrKyBsaWIvTWFpbC9TcGFt
 QXNzYXNzaW4vTWVzc2FnZS9Ob2RlLnBtCTIwMTEtMDctMTQgMjI6MzU6NDYuMDAwMDAwMDAwICsw
 OTAwCitAQCAtNDIsNiArNDIsNyBAQAorIHVzZSBNYWlsOjpTcGFtQXNzYXNzaW46OkNvbnN0YW50
 cyBxdyg6c2EpOworIHVzZSBNYWlsOjpTcGFtQXNzYXNzaW46OkhUTUw7CisgdXNlIE1haWw6OlNw
 YW1Bc3Nhc3Npbjo6TG9nZ2VyOworK3VzZSBNYWlsOjpTcGFtQXNzYXNzaW46OlV0aWw6OkNoYXJz
 ZXQ7CisgCisgPWl0ZW0gbmV3KCkKKyAKK0BAIC0zODcsMjcgKzM4OCwxMCBAQAorIAorIHN1YiBf
 bm9ybWFsaXplIHsKKyAgIG15ICgkc2VsZiwgJGRhdGEsICRjaGFyc2V0KSA9IEBfOworLSAgcmV0
 dXJuICRkYXRhIHVubGVzcyAkc2VsZi0+e25vcm1hbGl6ZX07CisrICByZXR1cm4gd2FudGFycmF5
 ID8gKCRkYXRhLCAkY2hhcnNldCkgOiAkZGF0YSB1bmxlc3MgJHNlbGYtPntub3JtYWxpemV9Owor
 IAorLSAgbXkgJGRldGVjdGVkID0gRW5jb2RlOjpEZXRlY3Q6OkRldGVjdG9yOjpkZXRlY3QoJGRh
 dGEpOworLQorLSAgbXkgJGNvbnZlcnRlcjsKKy0KKy0gIGlmICgkY2hhcnNldCAmJiAkY2hhcnNl
 dCAhfiAvXnVzLWFzY2lpJC9pICYmCistICAgICAgKCRkZXRlY3RlZCB8fCAnbm9uZScpICF+IC9e
 KD86VVRGfEVVQ3xJU08tMjAyMnxTaGlmdF9KSVN8QmlnNXxHQikvaSkgeworLSAgICAgIGRiZygi
 bWVzc2FnZTogVXNpbmcgbGFiZWxlZCBjaGFyc2V0ICRjaGFyc2V0Iik7CistICAgICAgJGNvbnZl
 cnRlciA9IEVuY29kZTo6ZmluZF9lbmNvZGluZygkY2hhcnNldCk7CistICB9CistCistICAkY29u
 dmVydGVyID0gRW5jb2RlOjpmaW5kX2VuY29kaW5nKCRkZXRlY3RlZCkgdW5sZXNzICRjb252ZXJ0
 ZXIgfHwgIWRlZmluZWQoJGRldGVjdGVkKTsKKy0KKy0gIHJldHVybiAkZGF0YSB1bmxlc3MgJGNv
 bnZlcnRlcjsKKy0KKy0gIGRiZygibWVzc2FnZTogQ29udmVydGluZy4uLiIpOworLQorLSAgbXkg
 JHJ2ID0gJGNvbnZlcnRlci0+ZGVjb2RlKCRkYXRhLCAwKTsKKy0gIHV0Zjg6OmRvd25ncmFkZSgk
 cnYsIDEpOworLSAgcmV0dXJuICRydgorKyAgbXkgKCRkZWNvZGVkX2RhdGEsICRkZXRlY3RlZF9j
 aGFyc2V0KSA9IG5vcm1hbGl6ZV9jaGFyc2V0KCRkYXRhLCAkY2hhcnNldCk7CisrICByZXR1cm4g
 d2FudGFycmF5ID8gKCRkZWNvZGVkX2RhdGEsICRkZXRlY3RlZF9jaGFyc2V0KSA6ICRkZWNvZGVk
 X2RhdGE7CisgfQorIAorID1pdGVtIHJlbmRlcmVkKCkKK0BAIC00MzAsOCArNDE0LDEyIEBACisg
 ICAgICMgdGV4dC94LWFvbCBpcyBpZ25vcmVkIGhlcmUsIGJ1dCBsb29rcyBsaWtlIHRleHQvaHRt
 bCAuLi4KKyAgICAgcmV0dXJuKHVuZGVmLHVuZGVmKSB1bmxlc3MgKCAkc2VsZi0+eyd0eXBlJ30g
 PX4gL150ZXh0XC8oPzpwbGFpbnxodG1sKSQvaSApOworIAorLSAgICBteSAkdGV4dCA9ICRzZWxm
 LT5fbm9ybWFsaXplKCRzZWxmLT5kZWNvZGUoKSwgJHNlbGYtPntjaGFyc2V0fSk7CisrICAgIG15
 ICgkdGV4dCwgJGNoYXJzZXQpID0gJHNlbGYtPl9ub3JtYWxpemUoJHNlbGYtPmRlY29kZSgpLCAk
 c2VsZi0+e2NoYXJzZXR9KTsKKyAgICAgbXkgJHJhdyA9IGxlbmd0aCgkdGV4dCk7CisrICAgIGlm
 ICgkc2VsZi0+e25vcm1hbGl6ZX0pIHsKKysgICAgICAkc2VsZi0+e2NoYXJzZXR9ID0gJGNoYXJz
 ZXQ7CisrICAgICAgJHNlbGYtPntsYW5ndWFnZX0gPSBnZXRfbGFuZ3VhZ2UoJHRleHQsICRjaGFy
 c2V0KTsKKysgICAgfQorIAorICAgICAjIHJlbmRlciB0ZXh0L2h0bWwgYWx3YXlzLCBvciBhbnkg
 b3RoZXIgdGV4dHx0ZXh0L3BsYWluIHBhcnQgYXMgdGV4dC9odG1sCisgICAgICMgYmFzZWQgb24g
 YSBoZXVyaXN0aWMgd2hpY2ggc2ltdWxhdGVzIGEgY2VydGFpbiBjb21tb24gbWFpbCBjbGllbnQK
 K0BAIC00NDEsNyArNDI5LDcgQEAKKyAgICAgeworICAgICAgICRzZWxmLT57cmVuZGVyZWRfdHlw
 ZX0gPSAndGV4dC9odG1sJzsKKyAKKy0gICAgICBteSAkaHRtbCA9IE1haWw6OlNwYW1Bc3Nhc3Np
 bjo6SFRNTC0+bmV3KCk7CSMgb2JqZWN0CisrICAgICAgbXkgJGh0bWwgPSBNYWlsOjpTcGFtQXNz
 YXNzaW46OkhUTUwtPm5ldyh7bm9ybWFsaXplPT4kc2VsZi0+e25vcm1hbGl6ZX19KTsgICAgICAg
 IyBvYmplY3QKKyAgICAgICAkaHRtbC0+cGFyc2UoJHRleHQpOwkJCQkjIHBhcnNlK3JlbmRlciB0
 ZXh0CisgICAgICAgJHNlbGYtPntyZW5kZXJlZH0gPSAkaHRtbC0+Z2V0X3JlbmRlcmVkX3RleHQo
 KTsKKyAgICAgICAkc2VsZi0+e3Zpc2libGVfcmVuZGVyZWR9ID0gJGh0bWwtPmdldF9yZW5kZXJl
 ZF90ZXh0KGludmlzaWJsZSA9PiAwKTsKK2RpZmYgLXVOciBsaWIvTWFpbC9TcGFtQXNzYXNzaW4v
 TWVzc2FnZS5wbSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vTWVzc2FnZS5wbQorLS0tIGxpYi9NYWls
 L1NwYW1Bc3Nhc3Npbi9NZXNzYWdlLnBtCTIwMTEtMDYtMDcgMDg6NTk6MTcuMDAwMDAwMDAwICsw
 OTAwCisrKysgbGliL01haWwvU3BhbUFzc2Fzc2luL01lc3NhZ2UucG0JMjAxMS0wNy0xNCAyMjoz
 NTo0Ni4wMDAwMDAwMDAgKzA5MDAKK0BAIC01NTksNiArNTU5LDggQEAKKyAgIGRlbGV0ZSAkc2Vs
 Zi0+eydwcmlzdGluZV9oZWFkZXJzJ307CisgICBkZWxldGUgJHNlbGYtPnsnbGluZV9lbmRpbmcn
 fTsKKyAgIGRlbGV0ZSAkc2VsZi0+eydtaXNzaW5nX2hlYWRfYm9keV9zZXBhcmF0b3InfTsKKysg
 IGRlbGV0ZSAkc2VsZi0+eydjaGFyc2V0J307CisrICBkZWxldGUgJHNlbGYtPnsnbGFuZ3VhZ2Un
 fTsKKyAKKyAgIG15IEB0b2NsZWFuID0gKCAkc2VsZiApOworIAorQEAgLTU4NSw2ICs1ODcsOCBA
 QAorICAgICBkZWxldGUgJHBhcnQtPnsnaW52aXNpYmxlX3JlbmRlcmVkJ307CisgICAgIGRlbGV0
 ZSAkcGFydC0+eyd0eXBlJ307CisgICAgIGRlbGV0ZSAkcGFydC0+eydyZW5kZXJlZF90eXBlJ307
 CisrICAgIGRlbGV0ZSAkc2VsZi0+eydjaGFyc2V0J307CisrICAgIGRlbGV0ZSAkc2VsZi0+eyds
 YW5ndWFnZSd9OworIAorICAgICAjIGlmIHRoZXJlIGFyZSBjaGlsZHJlbiBub2RlcywgYWRkIHRo
 ZW0gdG8gdGhlIHF1ZXVlIG9mIG5vZGVzIHRvIGNsZWFuIHVwCisgICAgIGlmIChleGlzdHMgJHBh
 cnQtPnsnYm9keV9wYXJ0cyd9KSB7CitAQCAtMTAxNCw3ICsxMDE4LDE0IEBACisgCisgICAjIHdo
 aXRlc3BhY2UgaGFuZGxpbmcgKHdhcm5pbmc6IHNtYWxsIGNoYW5nZXMgaGF2ZSBsYXJnZSBlZmZl
 Y3RzISkKKyAgICR0ZXh0ID1+IHMvXG4rXHMqXG4rL1xmL2dzOwkJIyBkb3VibGUgbmV3bGluZXMg
 PT4gZm9ybSBmZWVkCistICAkdGV4dCA9fiB0ci8gXHRcblxyXHgwYlx4YTAvIC9zOwkjIHdoaXRl
 c3BhY2UgPT4gc3BhY2UKKysgIGlmICgkc2VsZi0+e25vcm1hbGl6ZX0pIHsKKysgICAgJHRleHQg
 PX4gcy9ceGMyXHhhMC8gL2c7CQkjIG5vLWJyZWFrIHNwYWNlID0+IHNwYWNlCisrICAgICR0ZXh0
 ID1+IHMvXHhlM1x4ODBceDgwLyAvZzsJIyBpZGVvZ3JhcGhpY3NwYWNlID0+IHNwYWNlCisrICAg
 ICR0ZXh0ID1+IHRyLyBcdFxuXHJceDBiLyAvczsJIyB3aGl0ZXNwYWNlID0+IHNwYWNlCisrICB9
 CisrICBlbHNlIHsKKysgICAgJHRleHQgPX4gdHIvIFx0XG5cclx4MGJceGEwLyAvczsJIyB3aGl0
 ZXNwYWNlID0+IHNwYWNlCisrICB9CisgICAkdGV4dCA9fiB0ci9cZi9cbi87CQkJIyBmb3JtIGZl
 ZWRzID0+IG5ld2xpbmUKKyAgIAorICAgIyB3YXJuICJtZXNzYWdlOiAkdGV4dCI7CitAQCAtMTA3
 MSw3ICsxMDgyLDE0IEBACisgCisgICAjIHdoaXRlc3BhY2UgaGFuZGxpbmcgKHdhcm5pbmc6IHNt
 YWxsIGNoYW5nZXMgaGF2ZSBsYXJnZSBlZmZlY3RzISkKKyAgICR0ZXh0ID1+IHMvXG4rXHMqXG4r
 L1xmL2dzOwkJIyBkb3VibGUgbmV3bGluZXMgPT4gZm9ybSBmZWVkCistICAkdGV4dCA9fiB0ci8g
 XHRcblxyXHgwYlx4YTAvIC9zOwkjIHdoaXRlc3BhY2UgPT4gc3BhY2UKKysgIGlmICgkc2VsZi0+
 e25vcm1hbGl6ZX0pIHsKKysgICAgJHRleHQgPX4gcy9ceGMyXHhhMC8gL2c7CQkjIG5vLWJyZWFr
 IHNwYWNlID0+IHNwYWNlCisrICAgICR0ZXh0ID1+IHMvXHhlM1x4ODBceDgwLyAvZzsJIyBpZGVv
 Z3JhcGhpY3NwYWNlID0+IHNwYWNlCisrICAgICR0ZXh0ID1+IHRyLyBcdFxuXHJceDBiLyAvczsJ
 IyB3aGl0ZXNwYWNlID0+IHNwYWNlCisrICB9CisrICBlbHNlIHsKKysgICAgJHRleHQgPX4gdHIv
 IFx0XG5cclx4MGJceGEwLyAvczsJIyB3aGl0ZXNwYWNlID0+IHNwYWNlCisrICB9CisgICAkdGV4
 dCA9fiB0ci9cZi9cbi87CQkJIyBmb3JtIGZlZWRzID0+IG5ld2xpbmUKKyAKKyAgIG15IEB0ZXh0
 YXJ5ID0gc3BsaXRfaW50b19hcnJheV9vZl9zaG9ydF9saW5lcyAoJHRleHQpOworQEAgLTExMjIs
 NyArMTE0MCwxNCBAQAorIAorICAgIyB3aGl0ZXNwYWNlIGhhbmRsaW5nICh3YXJuaW5nOiBzbWFs
 bCBjaGFuZ2VzIGhhdmUgbGFyZ2UgZWZmZWN0cyEpCisgICAkdGV4dCA9fiBzL1xuK1xzKlxuKy9c
 Zi9nczsJCSMgZG91YmxlIG5ld2xpbmVzID0+IGZvcm0gZmVlZAorLSAgJHRleHQgPX4gdHIvIFx0
 XG5cclx4MGJceGEwLyAvczsJIyB3aGl0ZXNwYWNlID0+IHNwYWNlCisrICBpZiAoJHNlbGYtPntu
 b3JtYWxpemV9KSB7CisrICAgICR0ZXh0ID1+IHMvXHhjMlx4YTAvIC9nOwkJIyBuby1icmVhayBz
 cGFjZSA9PiBzcGFjZQorKyAgICAkdGV4dCA9fiBzL1x4ZTNceDgwXHg4MC8gL2c7CSMgaWRlb2dy
 YXBoaWNzcGFjZSA9PiBzcGFjZQorKyAgICAkdGV4dCA9fiB0ci8gXHRcblxyXHgwYi8gL3M7CSMg
 d2hpdGVzcGFjZSA9PiBzcGFjZQorKyAgfQorKyAgZWxzZSB7CisrICAgICR0ZXh0ID1+IHRyLyBc
 dFxuXHJceDBiXHhhMC8gL3M7CSMgd2hpdGVzcGFjZSA9PiBzcGFjZQorKyAgfQorICAgJHRleHQg
 PX4gdHIvXGYvXG4vOwkJCSMgZm9ybSBmZWVkcyA9PiBuZXdsaW5lCisgCisgICBteSBAdGV4dGFy
 eSA9IHNwbGl0X2ludG9fYXJyYXlfb2Zfc2hvcnRfbGluZXMgKCR0ZXh0KTsKK0BAIC0xMTk4LDYg
 KzEyMjMsMjggQEAKKyAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorK3N1YiBnZXRfbGFuZ3Vh
 Z2UgeworKyAgbXkgKCRzZWxmKSA9IEBfOworKworKyAgaWYgKGRlZmluZWQgJHNlbGYtPntsYW5n
 dWFnZX0pIHsgcmV0dXJuICRzZWxmLT57bGFuZ3VhZ2V9OyB9CisrICBteSBAcGFydHMgPSAkc2Vs
 Zi0+ZmluZF9wYXJ0cyhxci9eKD86dGV4dHxtZXNzYWdlKVxiL2ksMSk7CisrICByZXR1cm4gJycg
 dW5sZXNzIEBwYXJ0czsKKysKKysgICMgR28gdGhyb3VnaCBlYWNoIHBhcnQKKysgIG15IEBsYW5n
 czsKKysgIGZvcihteSAkcHQgPSAwIDsgJHB0IDw9ICQjcGFydHMgOyAkcHQrKyApIHsKKysgICAg
 bXkgJHAgPSAkcGFydHNbJHB0XTsKKysgICAgbXkgJGxhbmcgPSAkcC0+e2xhbmd1YWdlfTsKKysg
 ICAgbmV4dCB1bmxlc3MgKCRsYW5nKTsKKysgICAgcHVzaChAbGFuZ3MsICRsYW5nKSB1bmxlc3Mg
 KGdyZXAoL14kbGFuZyQvLCBAbGFuZ3MpKQorKyAgfQorKyAgJHNlbGYtPntsYW5ndWFnZX0gPSBz
 Y2FsYXIoQGxhbmdzKSA/IGpvaW4oJyAnLCBAbGFuZ3MpIDogJyc7CisrICByZXR1cm4gJHNlbGYt
 PntsYW5ndWFnZX07CisrfQorKworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCisrCisgMTsKKyAK
 KyA9YmFjaworZGlmZiAtdU5yIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9QZXJNc2dTdGF0dXMucG0g
 bGliL01haWwvU3BhbUFzc2Fzc2luL1Blck1zZ1N0YXR1cy5wbQorLS0tIGxpYi9NYWlsL1NwYW1B
 c3Nhc3Npbi9QZXJNc2dTdGF0dXMucG0JMjAxMS0wNi0wNyAwODo1OToxNy4wMDAwMDAwMDAgKzA5
 MDAKKysrKyBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGVyTXNnU3RhdHVzLnBtCTIwMTEtMDctMTQg
 MjI6MzU6NDYuMDAwMDAwMDAwICswOTAwCitAQCAtNTMsNiArNTMsNyBAQAorIHVzZSB3YXJuaW5n
 czsKKyB1c2UgcmUgJ3RhaW50JzsKKyAKKyt1c2UgRW5jb2RlOworIHVzZSBUaW1lOjpIaVJlcyBx
 dyh0aW1lKTsKKyAKKyB1c2UgTWFpbDo6U3BhbUFzc2Fzc2luOjpDb25zdGFudHMgcXcoOnNhKTsK
 K0BAIC03MzMsMTkgKzczNCw0MSBAQAorIAorICAgIyB0aGUgcmVwb3J0IGNoYXJzZXQKKyAgIG15
 ICRyZXBvcnRfY2hhcnNldCA9ICI7IGNoYXJzZXQ9aXNvLTg4NTktMSI7CistICBpZiAoJHNlbGYt
 Pntjb25mfS0+e3JlcG9ydF9jaGFyc2V0fSkgeworLSAgICAkcmVwb3J0X2NoYXJzZXQgPSAiOyBj
 aGFyc2V0PSIgLiAkc2VsZi0+e2NvbmZ9LT57cmVwb3J0X2NoYXJzZXR9OworLSAgfQorIAorICAg
 IyB0aGUgU3BhbUFzc2Fzc2luIHJlcG9ydAorICAgbXkgJHJlcG9ydCA9ICRzZWxmLT5nZXRfcmVw
 b3J0KCk7CisrICBpZiAoJHNlbGYtPntjb25mfS0+e3JlcG9ydF9jaGFyc2V0fSkgeworKyAgICAk
 cmVwb3J0X2NoYXJzZXQgPSAiOyBjaGFyc2V0PSIgLiAkc2VsZi0+e2NvbmZ9LT57cmVwb3J0X2No
 YXJzZXR9OworKyAgfQorIAorICAgIyBJZiB0aGVyZSBhcmUgYW55IHdpZGUgY2hhcmFjdGVycywg
 bmVlZCB0byBNSU1FLWVuY29kZSBpbiBVVEYtOAorICAgIyBUT0RPOiBJZiAkcmVwb3J0X2NoYXJz
 ZXQgaXMgc29tZXRoaW5nIG90aGVyIHRoYW4gaXNvLTg4NTktMS91cy1hc2NpaSwgdGhlbgorICAg
 IyB3ZSBjb3VsZCB0cnkgY29udmVydGluZyB0byB0aGF0IGNoYXJzZXQgaWYgcG9zc2libGUKKy0g
 IHVubGVzcyAoJF0gPCA1LjAwOCB8fCB1dGY4Ojpkb3duZ3JhZGUoJHJlcG9ydCwgMSkpIHsKKysg
 IG15ICRpc191dGY4ID0gMDsKKysgIGlmICgkc2VsZi0+e2NvbmZ9LT57bm9ybWFsaXplX2NoYXJz
 ZXR9KSB7CisrICAgICRyZXBvcnQgPSBFbmNvZGU6OmRlY29kZV91dGY4KCRyZXBvcnQpOworKyAg
 ICAkaXNfdXRmOCA9IDE7CisrICB9CisrICBlbHNlIHsKKysgICAgaWYgKCRzZWxmLT57bXNnfS0+
 e2NoYXJzZXR9KSB7CisrICAgICAgZXZhbCB7CisrICAgICAgICBteSAkc2NyYXRjaCA9ICRyZXBv
 cnQ7CisrICAgICAgICAkcmVwb3J0ID0gRW5jb2RlOjpkZWNvZGUoJHNlbGYtPnttc2d9LT57Y2hh
 cnNldH0sJHNjcmF0Y2gsRW5jb2RlOjpGQl9DUk9BSyk7CisrICAgICAgICAkaXNfdXRmOCA9IDE7
 CisrICAgICAgfTsKKysgICAgfQorKyAgfQorKyAgaWYgKCRpc191dGY4KSB7CisrICAgICRpc191
 dGY4ID0gMTsKKysgICAgZXZhbCB7CisrICAgICAgbXkgJHNjcmF0Y2ggPSAkcmVwb3J0OworKyAg
 ICAgICRyZXBvcnQgPSBFbmNvZGU6OmVuY29kZSgkc2VsZi0+e2NvbmZ9LT57cmVwb3J0X2NoYXJz
 ZXR9LCRzY3JhdGNoLEVuY29kZTo6RkJfQ1JPQUspOworKyAgICAgICRpc191dGY4ID0gMDsKKysg
 ICAgfTsKKysgICAgaWYgKCRpc191dGY4KSB7CisrICAgICAgJHJlcG9ydCA9IEVuY29kZTo6ZW5j
 b2RlX3V0ZjgoJHJlcG9ydCk7CisgICAgICAgJHJlcG9ydF9jaGFyc2V0ID0gIjsgY2hhcnNldD11
 dGYtOCI7CistICAgICAgdXRmODo6ZW5jb2RlKCRyZXBvcnQpOworKyAgICB9CisgICB9CisgCisg
 ICAjIGdldCBvcmlnaW5hbCBoZWFkZXJzLCAicHJpc3RpbmUiIGlmIHdlIGNhbiBkbyBpdAorZGlm
 ZiAtdU5yIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vQmF5ZXMucG0gbGliL01haWwvU3Bh
 bUFzc2Fzc2luL1BsdWdpbi9CYXllcy5wbQorLS0tIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVn
 aW4vQmF5ZXMucG0JMjAxMS0wNi0wNyAwODo1OToxNy4wMDAwMDAwMDAgKzA5MDAKKysrKyBsaWIv
 TWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL0JheWVzLnBtCTIwMTEtMDctMTQgMjI6MzU6NDYuMDAw
 MDAwMDAwICswOTAwCitAQCAtMjIzLDYgKzIyMywxNSBAQAorICMgd2lsbCByZXF1aXJlIGEgbG9u
 Z2VyIHRva2VuIHRoYW4gRW5nbGlzaCBvbmVzLikKKyB1c2UgY29uc3RhbnQgTUFYX1RPS0VOX0xF
 TkdUSCA9PiAxNTsKKyAKKysjIFNraXAgaWYgYSB0b2tlbiBpcyB0b28gc2hvcnQuCisrb3VyICRT
 S0lQX1VURjhfU0hPUlRfVE9LRU5TX1JFID0gcXJ7KD86CisrICAgIFtceDAwLVx4N0ZdICAgICAg
 ICAgICAgICAgICMgMSBieXRlCisrICB8IFtceEMwLVx4REZdW1x4ODAtXHhCRl0gICAgICMgMiBi
 eXRlcworKyAgfCBbXHhFMC1ceEVGXVtceDgwLVx4QkZdezJ9ICAjIDMgYnl0ZXMKKysgIHwgW1x4
 RjAtXHhGN11bXHg4MC1ceEJGXXszfSAgIyA0IGJ5dGVzCisrICB8ICg/Olx4RTNbXHg4MS1ceDgz
 XVtceDgwLVx4QkZdKXsyfSAjIDIgY2hhcmFjdGVycyBvZiBIaXJhZ2FuYSBhbmQgS2F0YWthbmEK
 KyspfXg7CisrCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgc3ViIG5ldyB7CitAQCAtOTgzLDkg
 Kzk5MiwyOCBAQAorICAgJG1zZ2RhdGEtPntiYXllc190b2tlbl9ib2R5fSA9ICRtc2ctPnttc2d9
 LT5nZXRfdmlzaWJsZV9yZW5kZXJlZF9ib2R5X3RleHRfYXJyYXkoKTsKKyAgICRtc2dkYXRhLT57
 YmF5ZXNfdG9rZW5faW52aXp9ID0gJG1zZy0+e21zZ30tPmdldF9pbnZpc2libGVfcmVuZGVyZWRf
 Ym9keV90ZXh0X2FycmF5KCk7CisgICBAeyRtc2dkYXRhLT57YmF5ZXNfdG9rZW5fdXJpc319ID0g
 JG1zZy0+Z2V0X3VyaV9saXN0KCk7CisrICBpZiAoJHNlbGYtPntjb25mfS0+e25vcm1hbGl6ZV9j
 aGFyc2V0fSkgeworKyAgICBteSAkdG9rZW5pemVyID0gJHNlbGYtPmdldF90b2tlbml6ZXIoJG1z
 Zyk7CisrICAgIGlmIChyZWYoJHRva2VuaXplcikpIHsKKysgICAgICAkbXNnZGF0YS0+e2JheWVz
 X3Rva2VuX2JvZHl9ID0gJHRva2VuaXplci0+dG9rZW5pemUoJG1zZ2RhdGEtPntiYXllc190b2tl
 bl9ib2R5fSk7CisrICAgICAgJG1zZ2RhdGEtPntiYXllc190b2tlbl9pbnZpen0gPSAkdG9rZW5p
 emVyLT50b2tlbml6ZSgkbXNnZGF0YS0+e2JheWVzX3Rva2VuX2ludml6fSk7CisrICAgIH0KKysg
 IH0KKyAgIHJldHVybiAkbXNnZGF0YTsKKyB9CisgCisrc3ViIGdldF90b2tlbml6ZXIgeworKyAg
 bXkgKCRzZWxmLCAkbXNnKSA9IEBfOworKworKyAgbXkgJHRva2VuaXplcjsKKysgIG15IEBsYW5n
 dWFnZXMgPSBzcGxpdCgvXHMrLywgJG1zZy0+e21zZ30tPmdldF9sYW5ndWFnZSgpKTsKKysgIGZv
 cmVhY2ggbXkgJGxhbmcgKEBsYW5ndWFnZXMpIHsKKysgICAgJHRva2VuaXplciA9ICRzZWxmLT57
 J2NvbmYnfS0+eyd0b2tlbml6ZXInfS0+eyRsYW5nfTsKKysgICAgbGFzdCBpZiAocmVmKCR0b2tl
 bml6ZXIpKTsKKysgIH0KKysgIHJldHVybiAkdG9rZW5pemVyOworK30KKysKKyAjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMKKyAKKyAjIFRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBleHBlY3QgYSB1bmlxJ2VkIGFy
 cmF5IG9mIHRva2VucyAuLi4KK0BAIC0xMDM5LDcgKzEwNjcsNyBAQAorICAgIyBpbmNsdWRlIHF1
 b3RlcywgLidzIGFuZCAtJ3MgZm9yIFVSSXMsIGFuZCBbJCxdJ3MgZm9yIE5pZ2VyaWFuLXNjYW0g
 c3RyaW5ncywKKyAgICMgYW5kIElTTy04ODU5LTE1IGFscGhhcy4gIERvIG5vdCBzcGxpdCBvbiBA
 J3M7IGJldHRlciByZXN1bHRzIGtlZXBpbmcgaXQuCisgICAjIFNvbWUgdXNlZnVsIHRva2Vuczog
 IiQzMSwwMDAsMDAwIiAid3d3LmNsb2NrLXNwZWVkLm5ldCIgImYqY2siICJIaXRzISIKKy0gIHRy
 Ly1BLVphLXowLTksXEBcKlwhXyciXCQuXDI0MS1cMzc3IC8gL2NzOworKyAgdHIvLUEtWmEtejAt
 OSxcQFwqXCFfJyJcJC5cMjAwLVwzNzcgLyAvY3M7CisgCisgICAjIERPIHNwbGl0IG9uICIuLi4i
 IG9yICItLSIgb3IgIi0tLSI7IGNvbW1vbiBmb3JtYXR0aW5nIGVycm9yIHJlc3VsdGluZyBpbgor
 ICAgIyBoYXBheGVzLiAgS2VlcCB0aGUgc2VwYXJhdG9yIGl0c2VsZiBhcyBhIHRva2VuLCB0aG91
 Z2gsIGFzIGxvbmcgb25lcyBjYW4KK0BAIC0xMDY4LDYgKzEwOTYsMTEgQEAKKyAgICAgIworICAg
 ICBuZXh0IGlmICggZGVmaW5lZCAkbWFnaWNfcmUgJiYgJHRva2VuID1+IC8kbWFnaWNfcmUvICk7
 CisgCisrICAgICMgU2tpcCBzaG9ydCBVVEYtOCB0b2tlbnMuCisrICAgIGlmICgkc2VsZi0+e2Nv
 bmZ9LT57bm9ybWFsaXplX2NoYXJzZXR9KSB7CisrICAgICAgbmV4dCBpZiAoJHRva2VuID1+IC9e
 JFNLSVBfVVRGOF9TSE9SVF9UT0tFTlNfUkUkL28pOworKyAgICB9CisrCisgICAgICMgKmRvKiBr
 ZWVwIDMtYnl0ZSB0b2tlbnM7IHRoZXJlJ3Mgc29tZSBzb2xpZCBzaWducyBpbiB0aGVyZQorICAg
 ICBteSAkbGVuID0gbGVuZ3RoKCR0b2tlbik7CisgCitAQCAtMTA5NiwxNCArMTEyOSwxNiBAQAor
 ICAgICAjIHRoZSBkb21haW4gIi5uZXQiIGFwcGVhcmVkIGluIHRoZSBUbyBoZWFkZXIuCisgICAg
 ICMKKyAgICAgaWYgKCRsZW4gPiBNQVhfVE9LRU5fTEVOR1RIICYmICR0b2tlbiAhfiAvXCovKSB7
 CistICAgICAgaWYgKFRPS0VOSVpFX0xPTkdfOEJJVF9TRVFTX0FTX1RVUExFUyAmJiAkdG9rZW4g
 PX4gL1tceGEwLVx4ZmZdezJ9LykgeworLQkjIE1hdHQgc2V6OiAiQ291bGQgYmUgYXNpYW4/IEF1
 dHJpanVzIHN1Z2dlc3RlZCBkb2luZyBjaGFyYWN0ZXIgbmdyYW1zLAorLQkjIGJ1dCBJJ20gZG9p
 bmcgdHVwbGVzIHRvIGtlZXAgdGhlIGRicyBzbWFsbChlcikuIiAgU291bmRzIGxpa2UgYSBwbGFu
 CistCSMgdG8gbWUhIChqbSkKKy0Jd2hpbGUgKCR0b2tlbiA9fiBzL14oLi4/KS8vKSB7CistCSAg
 cHVzaCAoQHJldHRva2VucywgIjg6JDEiKTsKKy0JfQorLQluZXh0OworKyAgICAgIHVubGVzcyAo
 JHNlbGYtPntjb25mfS0+e25vcm1hbGl6ZV9jaGFyc2V0fSkgeworKyAgICAgICAgaWYgKFRPS0VO
 SVpFX0xPTkdfOEJJVF9TRVFTX0FTX1RVUExFUyAmJiAkdG9rZW4gPX4gL1tceGEwLVx4ZmZdezJ9
 LykgeworKwkgICMgTWF0dCBzZXo6ICJDb3VsZCBiZSBhc2lhbj8gQXV0cmlqdXMgc3VnZ2VzdGVk
 IGRvaW5nIGNoYXJhY3RlciBuZ3JhbXMsCisrCSAgIyBidXQgSSdtIGRvaW5nIHR1cGxlcyB0byBr
 ZWVwIHRoZSBkYnMgc21hbGwoZXIpLiIgIFNvdW5kcyBsaWtlIGEgcGxhbgorKwkgICMgdG8gbWUh
 IChqbSkKKysJICB3aGlsZSAoJHRva2VuID1+IHMvXiguLj8pLy8pIHsKKysJICAgIHB1c2ggKEBy
 ZXR0b2tlbnMsICI4OiQxIik7CisrCSAgfQorKwkgIG5leHQ7CisrICAgICAgICB9CisgICAgICAg
 fQorIAorICAgICAgIGlmICgoJHJlZ2lvbiA9PSAwICYmIEhEUlNfVE9LRU5JWkVfTE9OR19UT0tF
 TlNfQVNfU0tJUFMpCitkaWZmIC11TnIgbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tl
 bml6ZXIvTWVDYWIucG0gbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tlbml6ZXIvTWVD
 YWIucG0KKy0tLSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci9NZUNhYi5w
 bQkxOTcwLTAxLTAxIDA5OjAwOjAwLjAwMDAwMDAwMCArMDkwMAorKysrIGxpYi9NYWlsL1NwYW1B
 c3Nhc3Npbi9QbHVnaW4vVG9rZW5pemVyL01lQ2FiLnBtCTIwMTEtMDctMTQgMjI6Mjk6MTkuMDAw
 MDAwMDAwICswOTAwCitAQCAtMCwwICsxLDg0IEBACisrIyA8QExJQ0VOU0U+CisrIyBDb3B5cmln
 aHQgMjAwNCBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorKyMgCisrIyBMaWNlbnNlZCB1bmRl
 ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKysjIHlv
 dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
 ZW5zZS4KKysjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKyMgCisr
 IyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisrIyAKKysj
 IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
 Zywgc29mdHdhcmUKKysjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
 dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisrIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
 SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKysjIFNlZSB0aGUg
 TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
 bmQKKysjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKyMgPC9ATElDRU5TRT4KKysK
 Kys9aGVhZDEgTkFNRQorKworK1Rva2VuaXplcjo6TWVDYWIgLSBKYXBhbmVzZSB0b2tlbml6ZXIg
 d2l0aCBNZUNhYgorKworKz1oZWFkMSBTWU5PUFNJUworKworK2xvYWRwbHVnaW4gICAgIE1haWw6
 OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpUb2tlbml6ZXI6Ok1lQ2FiCisrCisrPWhlYWQxIERFU0NS
 SVBUSU9OCisrCisrVGhpcyBwbHVnaW4gdG9rZW5pemVzIGEgSmFwYW5lc2Ugc3RyaW5nIHdpdGgg
 TWVDYWIgdGhhdCBpcyAKKyt0aGUgbW9ycGhvbG9naWNhbCBhbmFseXNpcyBlbmdpbmUuIAorKwor
 K1RleHQ6Ok1lQ2FiIDAuMTIgb3Igb3ZlciBpcyByZXF1aXJlZC4KKysKKys9Y3V0CisrCisrcGFj
 a2FnZSBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyOjpNZUNhYjsKKysKKyt1
 c2Ugc3RyaWN0OworK3VzZSB3YXJuaW5nczsKKyt1c2UgTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVn
 aW46OlRva2VuaXplcjsKKysKKyt1c2UgdmFycyBxdyhASVNBKTsKKytASVNBID0gcXcoTWFpbDo6
 U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcik7CisrCisrIyBIYXZlIHRvIGRvIHRoaXMg
 c28gdGhhdCBSUE0gZG9lc24ndCBmaW5kIHRoZXNlIGFzIHJlcXVpcmVkIHBlcmwgbW9kdWxlcwor
 K0JFR0lOIHsgcmVxdWlyZSBNZUNhYjsgfQorK291ciAkbGFuZ3VhZ2UgPSAnamEnOworK291ciAk
 bWVjYWIgPSBuZXcgTWVDYWI6OlRhZ2dlcigtT2NoYXNlbik7CisrCisrc3ViIG5ldyB7CisrICBt
 eSAkY2xhc3MgPSBzaGlmdDsKKysgIG15ICRtYWlsc2FvYmplY3QgPSBzaGlmdDsKKysKKysgICRj
 bGFzcyA9IHJlZigkY2xhc3MpIHx8ICRjbGFzczsKKysgIG15ICRzZWxmID0gJGNsYXNzLT5TVVBF
 Ujo6bmV3KCRtYWlsc2FvYmplY3QsICRsYW5ndWFnZSk7CisrICBibGVzcyAoJHNlbGYsICRjbGFz
 cyk7CisrCisrICByZXR1cm4gJHNlbGY7CisrfQorKworK3N1YiB0b2tlbml6ZSB7CisrICBteSAk
 c2VsZiA9IHNoaWZ0OworKyAgbXkgJHRleHRfYXJyYXkgPSBzaGlmdDsKKysKKysgIG15IEB0b2tl
 bml6ZWRfYXJyYXk7CisrICBmb3JlYWNoIG15ICR0ZXh0IChAJHRleHRfYXJyYXkpIHsKKysgICAg
 bmV4dCB1bmxlc3MgKCR0ZXh0KTsKKysgICAgJHRleHQgPX4gcy8oW1x4ODAtXHhGRl17Myx9KS8m
 X3Rva2VuaXplKCQxKS9lZzsKKysgICAgcHVzaChAdG9rZW5pemVkX2FycmF5LCAkdGV4dCk7Cisr
 ICB9CisrICByZXR1cm4gXEB0b2tlbml6ZWRfYXJyYXk7CisrfQorKworK3N1YiBfdG9rZW5pemUg
 eworKyAgbXkgJHRleHQgPSBzaGlmdDsKKysKKysgIG15IEBidWY7CisrICBmb3IgKG15ICRub2Rl
 ID0gJG1lY2FiLT5wYXJzZVRvTm9kZSgkdGV4dCk7ICRub2RlLT57bmV4dH07ICRub2RlID0gJG5v
 ZGUtPntuZXh0fSkgeworKyAgICBwdXNoKEBidWYsICRub2RlLT57c3VyZmFjZX0pOworKyAgfQor
 KyAgbXkgJHRva2VuaXplZCA9IGpvaW4oJyAnLCBAYnVmKSAuICcgJzsKKysgIHJldHVybiAkdG9r
 ZW5pemVkOworK30KKysKKysxOworKworZGlmZiAtdU5yIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9Q
 bHVnaW4vVG9rZW5pemVyL1NpbXBsZUpBLnBtIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4v
 VG9rZW5pemVyL1NpbXBsZUpBLnBtCistLS0gbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9U
 b2tlbml6ZXIvU2ltcGxlSkEucG0JMTk3MC0wMS0wMSAwOTowMDowMC4wMDAwMDAwMDAgKzA5MDAK
 KysrKyBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci9TaW1wbGVKQS5wbQky
 MDExLTA3LTE0IDIyOjI5OjE5LjAwMDAwMDAwMCArMDkwMAorQEAgLTAsMCArMSwxMTEgQEAKKysj
 IDxATElDRU5TRT4KKysjIENvcHlyaWdodCAyMDA0IEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
 CisrIyAKKysjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
 KHRoZSAiTGljZW5zZSIpOworKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
 Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
 IHRoZSBMaWNlbnNlIGF0CisrIyAKKysjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
 ZXMvTElDRU5TRS0yLjAKKysjIAorKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
 IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKyMgZGlzdHJpYnV0ZWQgdW5kZXIg
 dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKysjIFdJVEhP
 VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
 ciBpbXBsaWVkLgorKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
 Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
 c2UuCisrIyA8L0BMSUNFTlNFPgorKworKz1oZWFkMSBOQU1FCisrCisrVG9rZW5pemVyOjpTaW1w
 bGVKQSAtIHNpbXBsZSBKYXBhbmVzZSB0b2tlbml6ZXIKKysKKys9aGVhZDEgU1lOT1BTSVMKKysK
 Kytsb2FkcGx1Z2luICAgICBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyOjpT
 aW1wbGVKQQorKworKz1oZWFkMSBERVNDUklQVElPTgorKworK1RoaXMgcGx1Z2luIHNpbXBseSB0
 b2tlbml6ZXMgYSBKYXBhbmVzZSBzdHJpbmcgYnkgY2hhcmFjdGVycyBvdGhlciB0aGFuIAorK3Ro
 ZSBhbHBoYWJldCwgdGhlIENoaW5lc2UgY2hhcmFjdGVyLCBhbmQgdGhlIGthdGFrYW5hLiAKKysK
 Kys9Y3V0CisrCisrcGFja2FnZSBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVy
 OjpTaW1wbGVKQTsKKysKKyt1c2Ugc3RyaWN0OworK3VzZSB3YXJuaW5nczsKKyt1c2UgTWFpbDo6
 U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcjsKKysKKyt1c2UgdmFycyBxdyhASVNBKTsK
 KytASVNBID0gcXcoTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcik7CisrCisr
 b3VyICRsYW5ndWFnZSA9ICdqYSc7CisrCisrb3VyICRSRSA9IHFyeygKKysgICMgSGlyYWdhbmEK
 KysgICAgKD86CisrICAgICAgICBceEUzXHg4MVtceDgwLVx4QkZdCisrICAgICAgfCBceEUzXHg4
 MltceDgwLVx4OUZdCisrICAgICkrCisrICAjIEthdGFrYW5hCisrICB8ICg/OgorKyAgICAgICAg
 XHhFM1x4ODJbXHhBMC1ceEJGXQorKyAgICAgIHwgXHhFM1x4ODNbXHg4MC1ceEJGXQorKyAgICAp
 KworKyAgIyBLYW5qaQorKyAgfCAoPzoKKysgICAgICAgIFx4RTNbXHg5MC1ceEJGXVtceDgwLVx4
 QkZdCisrICAgICAgfCBbXHhFNC1ceEU5XVtceDgwLVx4QkZdezJ9CisrICAgICAgfCBceEVGW1x4
 QTQtXHhBQl1bXHg4MC1ceEJGXQorKyAgICApKworKyAgIyBGdWxsd2lkdGgKKysgIHwgKD86Cisr
 ICAgICAgICBceEVGXHhCQ1tceDgwLVx4QkZdCisrICAgICAgfCBceEVGXHhCRFtceDgwLVx4OUZd
 CisrICAgICkrCisrICAjIE90aGVycworKyAgfCBbXHhDMC1ceERGXVtceDgwLVx4QkZdCisrICB8
 IFtceEUwLVx4RTJdW1x4ODAtXHhCRl17Mn0KKysgIHwgXHhFM1x4ODBbXHg4MC1ceEJGXQorKyAg
 fCBceEUzW1x4ODQtXHg4Rl1bXHg4MC1ceEJGXQorKyAgfCBbXHhFQS1ceEVFXVtceDgwLVx4QkZd
 ezJ9CisrICB8IFx4RUZbXHg4MC1ceEEzXVtceDgwLVx4QkZdCisrICB8IFx4RUZbXHhBQy1ceEJC
 XVtceDgwLVx4QkZdCisrICB8IFx4RUZceEJEW1x4QTAtXHhCRl0KKysgIHwgXHhFRltceEJFLVx4
 QkZdW1x4ODAtXHhCRl0KKysgIHwgW1x4RjAtXHhGN11bXHg4MC1ceEJGXXszfQorKyl9eDsKKysK
 KytzdWIgbmV3IHsKKysgIG15ICRjbGFzcyA9IHNoaWZ0OworKyAgbXkgJG1haWxzYW9iamVjdCA9
 IHNoaWZ0OworKworKyAgJGNsYXNzID0gcmVmKCRjbGFzcykgfHwgJGNsYXNzOworKyAgbXkgJHNl
 bGYgPSAkY2xhc3MtPlNVUEVSOjpuZXcoJG1haWxzYW9iamVjdCwgJGxhbmd1YWdlKTsKKysgIGJs
 ZXNzICgkc2VsZiwgJGNsYXNzKTsKKysKKysgIHJldHVybiAkc2VsZjsKKyt9CisrCisrc3ViIHRv
 a2VuaXplIHsKKysgIG15ICRzZWxmID0gc2hpZnQ7CisrICBteSAkdGV4dF9hcnJheSA9IHNoaWZ0
 OworKworKyAgbXkgQHRva2VuaXplZF9hcnJheTsKKysgIGZvcmVhY2ggbXkgJHRleHQgKEAkdGV4
 dF9hcnJheSkgeworKyAgICBuZXh0IHVubGVzcyAoJHRleHQpOworKyAgICAkdGV4dCA9fiBzLyhb
 XHg4MC1ceEZGXXszLH0pLyZfdG9rZW5pemUoJDEpL2VnOworKyAgICBwdXNoKEB0b2tlbml6ZWRf
 YXJyYXksICR0ZXh0KTsKKysgIH0KKysgIHJldHVybiBcQHRva2VuaXplZF9hcnJheTsKKyt9Cisr
 Cisrc3ViIF90b2tlbml6ZSB7CisrICBteSAkdGV4dCA9IHNoaWZ0OworKworKyAgJHRleHQgPX4g
 cy8kUkUvJDEgL29nOworKyAgJHRleHQgPSAnICcgLiAkdGV4dDsKKysgIHJldHVybiAkdGV4dDsK
 Kyt9CisrCisrMTsKKysKK2RpZmYgLXVOciBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rv
 a2VuaXplci5wbSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci5wbQorLS0t
 IGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vVG9rZW5pemVyLnBtCTE5NzAtMDEtMDEgMDk6
 MDA6MDAuMDAwMDAwMDAwICswOTAwCisrKysgbGliL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9U
 b2tlbml6ZXIucG0JMjAxMS0wNy0xNCAyMjozNTo0Ni4wMDAwMDAwMDAgKzA5MDAKK0BAIC0wLDAg
 KzEsMTE1IEBACisrIyA8QExJQ0VOU0U+CisrIyBDb3B5cmlnaHQgMjAwNCBBcGFjaGUgU29mdHdh
 cmUgRm91bmRhdGlvbgorKyMgCisrIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
 IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKysjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
 bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKysjIFlvdSBtYXkgb2J0
 YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKyMgCisrIyAgICAgaHR0cDovL3d3dy5hcGFj
 aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisrIyAKKysjIFVubGVzcyByZXF1aXJlZCBieSBh
 cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKysjIGRpc3Ry
 aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
 SVMsCisrIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
 aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKysjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
 ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKysjIGxpbWl0YXRpb25zIHVu
 ZGVyIHRoZSBMaWNlbnNlLgorKyMgPC9ATElDRU5TRT4KKysKKys9aGVhZDEgTkFNRQorKworK01h
 aWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpUb2tlbml6ZXIgLSBUb2tlbml6ZXIgcGx1Z2luIGJh
 c2UgY2xhc3MKKysKKys9aGVhZDEgU1lOT1BTSVMKKysKKys9aGVhZDIgU3BhbUFzc2Fzc2luIGNv
 bmZpZ3VyYXRpb246CisrCisrICBsb2FkcGx1Z2luIE15VG9rZW5pemVyUGx1Z2luIC9wYXRoL3Rv
 L015VG9rZW5pemVyUGx1Z2luLnBtCisrCisrPWhlYWQyIFBlcmwgY29kZToKKysKKysgIHVzZSBN
 YWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6VG9rZW5pemVyOworKyAgdXNlIHZhcnMgcXcoQElT
 QSk7CisrICBASVNBID0gcXcoTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcik7
 CisrICAjIGxhbmd1YWdlIHRvIHVzZSB0aGlzIHBsdWdpbgorKyAgb3VyICRsYW5ndWFnZSA9ICdq
 YSc7CisrCisrICAjIGNvbnN0cnVjdG9yOiByZWdpc3RlciBsYW5ndWFnZQorKyAgc3ViIG5ldyB7
 CisrICAgIG15ICRjbGFzcyA9IHNoaWZ0OworKyAgICBteSAkbWFpbHNhb2JqZWN0ID0gc2hpZnQ7
 CisrCisrICAgICMgc29tZSBib2lsZXJwbGF0ZS4uLgorKyAgICAkY2xhc3MgPSByZWYoJGNsYXNz
 KSB8fCAkY2xhc3M7CisrICAgIG15ICRzZWxmID0gJGNsYXNzLT5TVVBFUjo6bmV3KCRtYWlsc2Fv
 YmplY3QsICRsYW5ndWFnZSk7CisrICAgIGJsZXNzICgkc2VsZiwgJGNsYXNzKTsKKysKKysgICAg
 cmV0dXJuICRzZWxmOworKyAgfQorKworKyAgIyB0b2tlbml6ZSBmdW5jdGlvbgorKyAgc3ViIHRv
 a2VuaXplIHsKKysgICAgbXkgJHNlbGYgPSBzaGlmdDsKKysgICAgbXkgJHRleHRfYXJyYXlfcmVm
 ID0gc2hpZnQ7CisrCisrICAgIC4uLi4uLgorKworKyAgICByZXR1cm4gJHRva2VuaXplZF9hcnJh
 eV9yZWY7CisrICB9CisrCisrCisrPWhlYWQxIERFU0NSSVBUSU9OCisrCisrVGhpcyBwbHVnaW4g
 aXMgdGhlIGJhc2UgY2xhc3Mgb2YgdG9rZW5pemVyIHBsdWdpbi4KKytZb3UgbXVzdCBkZWZpbmUg
 dG9rZW5pemUoKSBhbmQgJGxhbmd1YWdlCisrCisrPWhlYWQxIElOVEVSRkFDRQorKworKyAgc3Vi
 IHRva2VuaXplIHsKKysgICAgbXkgJHNlbGYgPSBzaGlmdDsKKysgICAgbXkgJHRleHRfYXJyYXlf
 cmVmID0gc2hpZnQ7CisrCisrICAgIC4uLi4uLgorKyAKKysgICAgcmV0dXJuICR0b2tlbml6ZWRf
 YXJyYXlfcmVmOworKyAgfQorKworKz1jdXQKKysKKytwYWNrYWdlIE1haWw6OlNwYW1Bc3Nhc3Np
 bjo6UGx1Z2luOjpUb2tlbml6ZXI7CisrCisrdXNlIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2lu
 OworK3VzZSBNYWlsOjpTcGFtQXNzYXNzaW46OkxvZ2dlcjsKKyt1c2Ugc3RyaWN0OworK3VzZSB3
 YXJuaW5nczsKKyt1c2UgYnl0ZXM7CisrCisrdXNlIHZhcnMgcXcoQElTQSk7CisrQElTQSA9IHF3
 KE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luKTsKKysKKytzdWIgbmV3IHsKKysgIG15ICRjbGFz
 cyA9IHNoaWZ0OworKyAgbXkgJG1haWxzYW9iamVjdCA9IHNoaWZ0OworKyAgbXkgJGxhbmd1YWdl
 ID0gc2hpZnQ7CisrCisrICAjIHNvbWUgYm9pbGVycGxhdGUuLi4KKysgICRjbGFzcyA9IHJlZigk
 Y2xhc3MpIHx8ICRjbGFzczsKKysgIG15ICRzZWxmID0gJGNsYXNzLT5TVVBFUjo6bmV3KCRtYWls
 c2FvYmplY3QpOworKyAgYmxlc3MgKCRzZWxmLCAkY2xhc3MpOworKworKyAgaWYgKCRsYW5ndWFn
 ZSkgeworKyAgICAkc2VsZi0+e21haW59LT57Y29uZn0tPnt0b2tlbml6ZXJ9LT57JGxhbmd1YWdl
 fSA9ICRzZWxmOworKyAgfQorKyAgZWxzZSB7CisrICAgIGRiZygicGx1Z2luOiAkc2VsZjogXCRs
 YW5ndWFnZSBpcyBub3QgZGVmaW5lZCIpOworKyAgfQorKworKyAgcmV0dXJuICRzZWxmOworK30K
 KysKKytzdWIgdG9rZW5pemUgeworKyAgbXkgKCRzZWxmLCAkcmVmKSA9IEBfOworKworKyAgcmV0
 dXJuICRyZWY7CisrfQorKworKzE7CisrCitkaWZmIC11TnIgbGliL01haWwvU3BhbUFzc2Fzc2lu
 L1V0aWwvQ2hhcnNldC5wbSBsaWIvTWFpbC9TcGFtQXNzYXNzaW4vVXRpbC9DaGFyc2V0LnBtCist
 LS0gbGliL01haWwvU3BhbUFzc2Fzc2luL1V0aWwvQ2hhcnNldC5wbQkxOTcwLTAxLTAxIDA5OjAw
 OjAwLjAwMDAwMDAwMCArMDkwMAorKysrIGxpYi9NYWlsL1NwYW1Bc3Nhc3Npbi9VdGlsL0NoYXJz
 ZXQucG0JMjAxMS0wNy0xNCAyMjoyOToxOS4wMDAwMDAwMDAgKzA5MDAKK0BAIC0wLDAgKzEsNDcx
 IEBACisrIyA8QExJQ0VOU0U+CisrIyBDb3B5cmlnaHQgMjAwNiBBcGFjaGUgU29mdHdhcmUgRm91
 bmRhdGlvbgorKyMKKysjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
 biAyLjAgKHRoZSAiTGljZW5zZSIpOworKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
 cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKyMgWW91IG1heSBvYnRhaW4gYSBj
 b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisrIworKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
 aWNlbnNlcy9MSUNFTlNFLTIuMAorKyMKKysjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
 IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKysjIGRpc3RyaWJ1dGVkIHVu
 ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisrIyBX
 SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
 c3Mgb3IgaW1wbGllZC4KKysjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
 YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKysjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
 aWNlbnNlLgorKyMgPC9ATElDRU5TRT4KKysKKysKKys9aGVhZDEgTkFNRQorKworKyAgTWFpbDo6
 U3BhbUFzc2Fzc2luOjpVdGlsOjpDaGFyc2V0LnBtIC0gVXRpbGl0eSBmb3IgY2hhcnNldCBhbmQg
 bGFuZ3VhZ2UKKysKKys9aGVhZDEgU1lOT1BTSVMKKysKKysgIG15ICgkZGVjb2RlZCwgJGRldGVj
 dGVkKSA9IE1haWw6OlNwYW1Bc3Nhc3Npbjo6VXRpbDo6Q2hhcnNldDo6bm9ybWFsaXplX2NoYXJz
 ZXQoJHN0ciwgJGNoYXJzZXQpOworKyAgbXkgJGxhbmd1YWdlID0gTWFpbDo6U3BhbUFzc2Fzc2lu
 OjpVdGlsOjpDaGFyc2V0OjpnZXRfbGFuZ3VhZ2UoJHN0ciwgJGNoYXJzZXQpOworKworKz1oZWFk
 MSBERVNDUklQVElPTgorKworK1RoaXMgbW9kdWxlIGltcGxlbWVudHMgdXRpbGl0eSBtZXRob2Rz
 IGZvciBjaGFyc2V0IGFuZCBsYW5ndWFnZS4KKysKKys9Y3V0CisrCisrcGFja2FnZSBNYWlsOjpT
 cGFtQXNzYXNzaW46OlV0aWw6OkNoYXJzZXQ7CisrCisrdXNlIHN0cmljdDsKKyt1c2Ugd2Fybmlu
 Z3M7CisrdXNlIEVuY29kZTsKKyt1c2UgRW5jb2RlOjpHdWVzczsKKyt1c2UgRW5jb2RlOjpBbGlh
 czsKKysKKyt1c2UgdmFycyBxdyAoCisrICBASVNBIEBFWFBPUlQKKyspOworKworK3JlcXVpcmUg
 RXhwb3J0ZXI7CisrCisrQElTQSA9IHF3KEV4cG9ydGVyKTsKKytARVhQT1JUID0gcXcobm9ybWFs
 aXplX2NoYXJzZXQgZ2V0X2xhbmd1YWdlKTsKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysKKyt1
 c2UgY29uc3RhbnQgSEFTX0VOQ09ERV9ERVRFQ1QgPT4gZXZhbCB7IHJlcXVpcmUgRW5jb2RlOjpE
 ZXRlY3Q6OkRldGVjdG9yOyB9OworK3VzZSBjb25zdGFudCBIQVNfRU5DT0RFX0hBTkVYVFJBID0+
 IGV2YWwgeyByZXF1aXJlIEVuY29kZTo6SGFuRXh0cmE7IH07CisrdXNlIGNvbnN0YW50IEhBU19F
 TkNPREVfRVVDSlBNUyA9PiBldmFsIHsgcmVxdWlyZSBFbmNvZGU6OkVVQ0pQTVM7IH07CisrCisr
 IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
 IyMjIyMjIyMjIyMjIyMjIyMjCisrCisrb3VyICRLQU5BX0hBTl9SRSA9IHFyeworKyAgIyBIaXJh
 Z2FuYSBhbmQgS2F0YWthbmEKKysgICAgXHhFM1tceDgxLVx4ODNdW1x4ODAtXHhCRl0KKysgICMg
 SGFuCisrICB8IFx4RTNbXHg5MC1ceEJGXVtceDgwLVx4QkZdCisrICB8IFtceEU0LVx4RTldW1x4
 ODAtXHhCRl17Mn0KKysgIHwgXHhFRltceEE0LVx4QUJdW1x4ODAtXHhCRl0KKyt9eDsKKysKKytv
 dXIgJWVuYzJsYW5nOworK291ciAlbGFuZzJlbmM7Cisrb3VyICVzY3IybGFuZzsKKytvdXIgJWNq
 a3NjcjJsYW5nOworK291ciBAc2Nyb3JkZXI7CisrCisrQkVHSU4geworKworKyAgIyBTZWUgdGhl
 IGZvbGxvd2luZyBVUkwgYWJvdXQgdGhpcyBtYXA6CisrICAjICAgaHR0cDovL2N6eWJvcnJhLmNv
 bS9jaGFyc2V0cy9pc284ODU5Lmh0bWwKKysgICMgICBodHRwOi8vY3p5Ym9ycmEuY29tL2NoYXJz
 ZXRzL2NvZGVwYWdlcy5odG1sCisrICAjICAgaHR0cDovL2N6eWJvcnJhLmNvbS9jaGFyc2V0cy9j
 eXJpbGxpYy5odG1sCisrICAjICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODg1
 OQorKyAgIyAgIGh0dHA6Ly93d3cudzMub3JnL0ludGVybmF0aW9uYWwvTy1jaGFyc2V0LWxhbmcu
 aHRtbAorKyAgJWVuYzJsYW5nID0gKAorKyAgICAjIGJ1aW50LWluIEVuY29kaW5ncyBhbmQgRW5j
 b2RlOjpCeXRlCisrICAgICMgICBOLiBBbWVyaWNhCisrICAgICdhc2NpaScgICAgICAgICA9PiAn
 ZW4nLAorKyAgICAnY3A0MzcnICAgICAgICAgPT4gJ2VuJywKKysgICAgJ2NwODYzJyAgICAgICAg
 ID0+ICd3ZXVyb3BlJywKKysKKysgICAgIyAgIFcuIEV1cm9wZSAoTGF0aW4xLCBMYXRpbjkpCisr
 ICAgICMgICAgICAgZnIgZXMgY2EgZXUgcHQgaXQgc3Egcm0gbmwgZGUgZGEgc3Ygbm8gZmkgZm8g
 aXMgZ2EgZ2QgZW4gYWYKKysgICAgJ2lzby04ODU5LTEnICAgID0+ICd3ZXVyb3BlJywKKysgICAg
 J2lzby04ODU5LTE1JyAgID0+ICd3ZXVyb3BlJywKKysgICAgJ2NwODUwJyAgICAgICAgID0+ICd3
 ZXVyb3BlJywKKysgICAgJ2NwODYwJyAgICAgICAgID0+ICd3ZXVyb3BlJywKKysgICAgJ2NwMTI1
 MicgICAgICAgID0+ICd3ZXVyb3BlJywKKysgICAgJ01hY1JvbWFuJyAgICAgID0+ICd3ZXVyb3Bl
 JywKKysKKysgICAgIyAgIENudHJsLiBFdXJvcGUgLyBMYXRpbjIgLyBMYXRpbjEwCisrICAgICMg
 ICAgICAgaHIgY3MgaHUgcGwgc3Igc2sgc2wKKysgICAgJ2lzby04ODU5LTInICAgID0+ICdjZXVy
 b3BlJywKKysgICAgJ2NwODUyJyAgICAgICAgID0+ICdjZXVyb3BlJywKKysgICAgJ2NwMTI1MCcg
 ICAgICAgID0+ICdjZXVyb3BlJywKKysgICAgJ01hY0NlbnRyYWxFdXJSb21hbicgPT4gJ2NldXJv
 cGUnLAorKyAgICAnTWFjQ3JvYXRpYW4nICAgPT4gJ2NldXJvcGUnLAorKyAgICAnaXNvLTg4NTkt
 MTYnICAgPT4gJ2NldXJvcGUnLAorKyAgICAnTWFjUm9tYW5pYW4nICAgPT4gJ2NldXJvcGUnLAor
 KworKyAgICAjICAgTGF0aW4zIChFc3BlcmFudG8sIE1hbHRlc2UsIGFuZCBUdXJraXNoLiBUdXJr
 aXNoIGlzIG5vdyBvbiA4ODU5LTkuKQorKyAgICAjICAgICAgIGVvIG10CisrICAgICdpc28tODg1
 OS0zJyAgICA9PiAnc2V1cm9wZScsCisrCisrICAgICMgICBCYWx0aWNzIChMYXRpbjQsIExhdGlu
 NykKKysgICAgIyAgICAgICBsdiBsdAorKyAgICAnaXNvLTg4NTktNCcgICAgPT4gJ25ldXJvcGUn
 LAorKyAgICAnaXNvLTg4NTktMTMnICAgPT4gJ2JhbHRpYycsCisrICAgICdjcDEyNTcnICAgICAg
 ICA9PiAnYmFsdGljJywKKysKKysgICAgIyAgIE5vcmRpY3MgKExhdGluNikKKysgICAgIyAgICAg
 ICBldCBrbCBpdSBzZQorKyAgICAnaXNvLTg4NTktMTAnICAgPT4gJ25vcmRpYycsCisrCisrICAg
 ICMgICBDeXJpbGxpY3MKKysgICAgIyAgICAgICBiZyBiZSB1ayBzciBtayBydQorKyAgICAnaXNv
 LTg4NTktNScgICAgPT4gJ3J1JywKKysgICAgJ2NwODU1JyAgICAgICAgID0+ICdydScsCisrICAg
 ICdjcDEyNTEnICAgICAgICA9PiAncnUnLAorKyAgICAnY3A4NjYnICAgICAgICAgPT4gJ3J1JywK
 KysgICAgJ01hY0N5cmlsbGljJyAgID0+ICdydScsCisrICAgICdrb2k4LXInICAgICAgICA9PiAn
 cnUnLAorKyAgICAnTWFjVWtyYWluaWFuJyAgPT4gJ3VrJywKKysgICAgJ2tvaTgtdScgICAgICAg
 ID0+ICd1aycsCisrCisrICAgICMgICBBcmFiaWMKKysgICAgJ2lzby04ODU5LTYnICAgID0+ICdh
 cicsCisrICAgICdjcDg2NCcgICAgICAgICA9PiAnYXInLAorKyAgICAnY3AxMjU2JyAgICAgICAg
 PT4gJ2FyJywKKysgICAgJ01hY0FyYWJpYycgICAgID0+ICdhcicsCisrICAgICdjcDEwMDYnICAg
 ICAgICA9PiAnZmEnLAorKyAgICAnTWFjRmFyc2knICAgICAgPT4gJ2ZhJywKKysKKysgICAgIyAg
 IEdyZWVrCisrICAgICdpc28tODg1OS03JyAgICA9PiAnZWwnLAorKyAgICAnY3AxMjUzJyAgICAg
 ICAgPT4gJ2VsJywKKysgICAgJ01hY0dyZWVrJyAgICAgID0+ICdlbCcsCisrCisrICAgICMgICBI
 ZWJyZXcKKysgICAgIyAgICAgICBoZSB5aQorKyAgICAnaXNvLTg4NTktOCcgICAgPT4gJ2hlJywK
 KysgICAgJ2NwODYyJyAgICAgICAgID0+ICdoZScsCisrICAgICdjcDEyNTUnICAgICAgICA9PiAn
 aGUnLAorKyAgICAnTWFjSGVicmV3JyAgICAgPT4gJ2hlJywKKysKKysgICAgIyAgIFR1cmtpc2gK
 KysgICAgJ2lzby04ODU5LTknICAgID0+ICd0cicsCisrICAgICdjcDg1NycgICAgICAgICA9PiAn
 dHInLAorKyAgICAnY3AxMjU0JyAgICAgICAgPT4gJ3RyJywKKysgICAgJ01hY1R1cmtpc2gnICAg
 ID0+ICd0cicsCisrCisrICAgICMgICBUaGFpCisrICAgICdpc28tODg1OS0xMScgICA9PiAndGgn
 LAorKyAgICAnY3A4NzQnICAgICAgICAgPT4gJ3RoJywKKysKKysgICAgIyAgIENlbHRpY3MgKExh
 dGluOCkKKysgICAgIyAgICAgICBnZCBjeSBicgorKyAgICAnaXNvLTg4NTktMTQnICAgPT4gJ2Nl
 bHRpYycsCisrCisrICAgICMgICBWaWV0bmFtZXNlCisrICAgICd2aXNjaWknICAgICAgICA9PiAn
 dmknLAorKyAgICAnY3AxMjU4JyAgICAgICAgPT4gJ3ZpJywKKysKKysgICAgIyBFbmNvZGU6OkNO
 CisrICAgICdldWMtY24nICAgICAgICA9PiAnemgnLAorKyAgICAnY3A5MzYnICAgICAgICAgPT4g
 J3poJywKKysgICAgJ2h6JyAgICAgICAgICAgID0+ICd6aCcsCisrCisrICAgICMgRW5jb2RlOjpU
 VworKyAgICAnYmlnNS1ldGVuJyAgICAgPT4gJ3poJywKKysgICAgJ2JpZzUtaGtzY3MnICAgID0+
 ICd6aCcsCisrICAgICdjcDk1MCcgICAgICAgICA9PiAnemgnLAorKworKyAgICAjIEVuY29kZTo6
 SlAKKysgICAgJ2V1Yy1qcCcgICAgICAgID0+ICdqYScsCisrICAgICdzaGlmdGppcycgICAgICA9
 PiAnamEnLAorKyAgICAnN2JpdC1qaXMnICAgICAgPT4gJ2phJywKKysgICAgJ2lzby0yMDIyLWpw
 JyAgID0+ICdqYScsCisrICAgICdpc28tMjAyMi1qcC0xJyA9PiAnamEnLAorKyAgICAnY3A5MzIn
 ICAgICAgICAgPT4gJ2phJywKKysKKysgICAgIyBFbmNvZGU6OktSCisrICAgICdldWMta3InICAg
 ICAgICA9PiAna28nLAorKyAgICAnY3A5NDknICAgICAgICAgPT4gJ2tvJywKKysgICAgJ2pvaGFi
 JyAgICAgICAgID0+ICdrbycsCisrICAgICdpc28tMjAyMi1rcicgICA9PiAna28nLAorKworKyAg
 ICAjIEVuY29kZTo6SGFuRXh0cmEKKysgICAgJ2V1Yy10dycgICAgICAgID0+ICd6aCcsCisrICAg
 ICdnYjE4MDMwJyAgICAgICA9PiAnemgnLAorKworKyAgICAjIEVuY29kZTo6SklTMksKKysgICAg
 J2V1Yy1qaXN4MDIxMycgID0+ICdqYScsCisrICAgICdzaGlmdGppc3gwMTIzJyA9PiAnamEnLAor
 KyAgICAnaXNvLTIwMjItanAtMycgPT4gJ2phJywKKysKKysgICAgIyBFbmNvZGU6OkVVQ0pQTVMK
 KysgICAgJ2V1Y0pQLW1zJyAgICAgID0+ICdqYScsCisrICAgICdjcDUxOTMyJyAgICAgICA9PiAn
 amEnLAorKyAgICAnY3A1MDIyMCcgICAgICAgPT4gJ2phJywKKysgICAgJ2NwNTAyMjEnICAgICAg
 ID0+ICdqYScsCisrCisrICApOworKworKyAgJWxhbmcyZW5jID0gKAorKyAgICAjIExhdGluMQor
 KyAgICAnZW4nID0+IFsnYXNjaWknXSwKKysgICAgJ3dldXJvcGUnID0+IFsnY3AxMjUyJ10sCisr
 CisrICAgICMgTGF0aW4yCisrICAgICdjZXVyb3BlJyA9PiBbJ2NwMTI1MCddLAorKworKyAgICAj
 IExhdGluMworKyAgICAnc2V1cm9wZScgPT4gWydpc28tODg1OS0zJ10sCisrCisrICAgICMgTGF0
 aW40CisrICAgICduZXVyb3BlJyA9PiBbJ2lzby04ODU5LTQnXSwKKysKKysgICAgIyBMYXRpbjUK
 KysgICAgJ3RyJyA9PiBbJ2NwMTI1NCddLAorKworKyAgICAjIExhdGluNgorKyAgICAnbm9yZGlj
 JyA9PiBbJ2lzby04ODU5LTEwJ10sCisrCisrICAgICMgTGF0aW43CisrICAgICdiYWx0aWMnID0+
 IFsnY3AxMjU3J10sCisrCisrICAgICMgTGF0aW44CisrICAgICdjZWx0aWMnID0+IFsnaXNvLTg4
 NTktMTQnXSwKKysKKysgICAgIyBOb24gTGF0aW4KKysgICAgJ3J1JyA9PiBbJ2tvaTgtcicsICdj
 cDEyNTEnXSwKKysgICAgJ3VrJyA9PiBbJ2tvaTgtdSddLAorKworKyAgICAnYXInID0+IFsnY3Ax
 MjU2J10sCisrICAgICdlbCcgPT4gWydjcDEyNTMnXSwKKysgICAgJ2hlJyA9PiBbJ2NwMTI1NSdd
 LAorKyAgICAndGgnID0+IFsnY3A4NzQnXSwKKysgICAgJ3ZpJyA9PiBbJ3Zpc2NpaScsICdjcDEy
 NTgnXSwKKysgICAgJ3poJyA9PiBbJ2V1Yy1jbicsICdjcDk1MCddLAorKyAgICAnamEnID0+IFsn
 ZXVjLWpwJywgJ2NwOTMyJ10sCisrICAgICdrbycgPT4gWydldWMta3InLCAnY3A5NDknXSwKKysK
 KysgICk7CisrCisrICAlc2NyMmxhbmcgPSAoCisrICAgICdJbkxhdGluMVN1cHBsZW1lbnQnID0+
 IFsnd2V1cm9wZSddLAorKyAgICAnSW5MYXRpbkV4dGVuZGVkQScgPT4gWworKyAgICAgICdjZXVy
 b3BlJywKKysgICAgICAnc2V1cm9wZScsCisrICAgICAgJ3RyJywKKysgICAgICAndmknCisrICAg
 IF0sCisrICAgICdJbkxhdGluRXh0ZW5kZWRCJyA9PiBbCisrICAgICAgJ25vcmRpYycsCisrICAg
 ICAgJ2JhbHRpYycsCisrICAgICAgJ2NlbHRpYycKKysgICAgXSwKKysgICAgJ1RoYWknICAgPT4g
 Wyd0aCddLAorKyAgICAnQ3lyaWxsaWMnID0+IFsncnUnLCAndWsnXSwKKysgICAgJ0FyYWJpYycg
 PT4gWydhciddLAorKyAgICAnR3JlZWsnICA9PiBbJ2VsJ10sCisrICAgICdIZWJyZXcnID0+IFsn
 aGUnXSwKKysgICk7CisrCisrICAjIGJldHRlciBkZXRlY3Rpb24gZm9yIENKSworKyAgQHNjcm9y
 ZGVyID0gKCdIaXJhZ2FuYScsJ0thdGFrYW5hJywnSGFuZ3VsJywnSGFuJyxrZXlzKCVzY3IybGFu
 ZykpOworKyAgJWNqa3NjcjJsYW5nID0gKAorKyAgICAnSGlyYWdhbmEnID0+IFsnamEnXSwKKysg
 ICAgJ0thdGFrYW5hJyA9PiBbJ2phJ10sCisrICAgICdIYW5ndWwnID0+IFsna28nXSwKKysgICAg
 J0hhbicgICAgPT4gWyd6aCcsICdqYScsICdrbyddLAorKyAgKTsKKysKKysgIHVubGVzcyAoSEFT
 X0VOQ09ERV9IQU5FWFRSQSkgeworKyAgICBFbmNvZGU6OkFsaWFzOjpkZWZpbmVfYWxpYXMoIHFy
 L15nYjE4MDMwJC9pID0+ICcgImV1Yy1jbiInICk7CisrICB9CisrICBFbmNvZGU6OkFsaWFzOjpk
 ZWZpbmVfYWxpYXMoIHFyL151bmljb2RlLTEtMS0oLispJC9pID0+ICcgIiQxIicgKTsKKysgIEVu
 Y29kZTo6QWxpYXM6OmRlZmluZV9hbGlhcyggcXIvXlRJUy02MjAkL2kgPT4gJyAiaXNvLTg4NTkt
 MTEiJyApOworKyAgRW5jb2RlOjpBbGlhczo6ZGVmaW5lX2FsaWFzKCBxci9eeC1tYWMtKC4rKSQv
 aSA9PiAnICJNYWMkMSInICk7CisrICBFbmNvZGU6OkFsaWFzOjpkZWZpbmVfYWxpYXMoIHFyL15T
 aGlmdF9KSVMkL2kgPT4gJyAiY3A5MzIiJyApOworKyAgaWYgKEhBU19FTkNPREVfRVVDSlBNUykg
 eworKyAgICBFbmNvZGU6OkFsaWFzOjpkZWZpbmVfYWxpYXMoIHFyL15pc28tMjAyMi1qcCQvaSA9
 PiAnICJjcDUwMjIxIicgKTsKKysgIH0KKyt9CisrCisrc3ViIGdldF9sYW5ndWFnZSB7CisrICBt
 eSAkc3RyID0gc2hpZnQ7ICMgJHN0ciBtdXN0IGJlIFVURi04IGVuY29kaW5nCisrICBteSAkY2hh
 cnNldCA9IHNoaWZ0OworKworKyAgcmV0dXJuICdlbicgdW5sZXNzICRjaGFyc2V0OworKyAgaWYg
 KCRjaGFyc2V0ICF+IC9edXRmL2kpIHsKKysgICAgcmV0dXJuICRlbmMybGFuZ3skY2hhcnNldH07
 CisrICB9IGVsc2lmIChkZWZpbmVkKCRzdHIpKSB7CisrICAgICRzdHIgPX4gcy9bXHgwMC1ceDdG
 XS8vZzsgIyByZW1vdmUgQVNDSUkgY2hhcmFjdGVycworKyAgICByZXR1cm4gJ2VuJyBpZiAoJHN0
 ciBlcSAnJyk7CisrCisrICAgIG15ICVoYW5kbGVkOworKyAgICAkc3RyID0gRW5jb2RlOjpkZWNv
 ZGVfdXRmOCgkc3RyKSB1bmxlc3MgKEVuY29kZTo6aXNfdXRmOCgkc3RyKSk7CisrICAgIGZvcmVh
 Y2ggbXkgJHNjciAoQHNjcm9yZGVyKSB7CisrICAgICAgbmV4dCBpZiAoJHN0ciAhfiAvXHB7JHNj
 cn0vKTsKKysgICAgICBteSAkc2NybGFuZ3MgPSBleGlzdHMoJGNqa3NjcjJsYW5neyRzY3J9KSA/
 ICRjamtzY3IybGFuZ3skc2NyfSA6ICRzY3IybGFuZ3skc2NyfTsKKysgICAgICBmb3JlYWNoIG15
 ICRsYW5nIChAJHNjcmxhbmdzKSB7CisrICAgICAgICBuZXh0IGlmIChleGlzdHMoJGhhbmRsZWR7
 JGxhbmd9KSk7CisrICAgICAgICBmb3JlYWNoIG15ICRlbmMgKEB7JGxhbmcyZW5jeyRsYW5nfX0p
 IHsKKysgICAgICAgICAgbXkgJHNjcmF0Y2ggPSAkc3RyOworKyAgICAgICAgICBFbmNvZGU6OmVu
 Y29kZSgkZW5jLCAkc2NyYXRjaCwgRW5jb2RlOjpGQl9RVUlFVCk7CisrICAgICAgICAgIHJldHVy
 biAkbGFuZyBpZiAoJHNjcmF0Y2ggZXEgJycpOworKyAgICAgICAgfQorKyAgICAgICAgJGhhbmRs
 ZWR7JGxhbmd9ID0gMTsKKysgICAgICB9CisrICAgIH0KKysgIH0gCisrICByZXR1cm4gJ2VuJzsK
 Kyt9CisrCisrIyBURVNUIDE6IHRyeSBjb252ZXJzaW9uIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGNo
 YXJzZXQuIAorKyMgVEVTVCAyOiB0cnkgY29udmVyc2lvbiB0byB1c2UgRW5jb2RlOjpEZXRlY3Qu
 CisrIyBURVNUIDM6IHRyeSBjb252ZXJzaW9uIHRvIHVzZSBFbmNvZGU6Okd1ZXNzLgorK3N1YiBu
 b3JtYWxpemVfY2hhcnNldCB7CisrICBteSAkc3RyID0gc2hpZnQ7CisrICBteSAkY2hhcnNldCA9
 IHNoaWZ0OworKworKyAgcmV0dXJuIHdhbnRhcnJheSA/ICgkc3RyLCAnYXNjaWknKSAgOiAkc3Ry
 IHVubGVzcyAoJHN0cik7CisrCisrICBteSAkZGVjb2RlZDsKKysgIG15ICRkZXRlY3RlZDsKKysK
 KysgIGlmICgkY2hhcnNldCkgeworKyAgICAoJGRlY29kZWQsICRkZXRlY3RlZCkgPSBfc3BlY2lm
 aWVkX2VuY29kaW5nKCRzdHIsICRjaGFyc2V0KTsKKysgIH0KKysgIHVubGVzcyAoJGRldGVjdGVk
 KSB7CisrICAgICgkZGVjb2RlZCwgJGRldGVjdGVkKSA9IF9lbmNvZGVfZGV0ZWN0KCRzdHIpOwor
 KyAgfQorKyAgdW5sZXNzICgkZGV0ZWN0ZWQpIHsKKysgICAgKCRkZWNvZGVkLCAkZGV0ZWN0ZWQp
 ID0gX2VuY29kZV9ndWVzcygkc3RyKTsKKysgIH0KKysgIHVubGVzcyAoJGRldGVjdGVkKSB7Cisr
 ICAgIHJldHVybiAoJHN0ciwgdW5kZWYpOworKyAgfQorKyAgJGRlY29kZWQgPX4gcy9eXHh7ZmVm
 Zn0vL2c7CisrICAkZGVjb2RlZCA9IEVuY29kZTo6ZW5jb2RlX3V0ZjgoJGRlY29kZWQpOworKwor
 KyAgIyB1bmZvbGQgaGlyYWdhbmEsIGthdGFrYW5hIGFuZCBoYW4KKysgIGlmICgkZGV0ZWN0ZWQg
 PX4gL14oPzpVVEZ8RVVDfEJJRzV8R0J8U0hJRlRKSVN8SVNPLTIwMjJ8Q1A5NjkkfENQOTMyJHxD
 UDk0OXxDUDUwMjIxJCkvaSkgeworKyAgICAkZGVjb2RlZCA9fiBzLygkS0FOQV9IQU5fUkUpXDAx
 MigkS0FOQV9IQU5fUkUpLyQxJDIvb2c7CisrICB9CisrICByZXR1cm4gd2FudGFycmF5ID8gKCRk
 ZWNvZGVkLCAkZGV0ZWN0ZWQpIDogJGRlY29kZWQ7CisrfQorKworK3N1YiBfc3BlY2lmaWVkX2Vu
 Y29kaW5nIHsKKysgIG15ICRzdHIgPSBzaGlmdDsKKysgIG15ICRlbmNvZGluZyA9IHNoaWZ0Owor
 KworKyAgbXkgJGRldGVjdGVkOworKyAgbXkgJGRlY29kZWQ7CisrCisrICByZXR1cm4gKHVuZGVm
 LCB1bmRlZikgdW5sZXNzICgkZW5jb2RpbmcpOworKworKyAgIyBub3RlOiBJU08tMjAyMi0qIGlz
 IG5vdCBkZWlzdGluZ3Vpc2ggZnJvbSBVUy1BU0NJSQorKyAgcmV0dXJuICh1bmRlZiwgdW5kZWYp
 IGlmICgkc3RyID1+IC9cZS8gYW5kICRlbmNvZGluZyAhfiAvXklTTy0yMDIyL2kpOworKworKyAg
 IyBVVEYtMTZ8MzIgZW5jb2Rpbmcgd2l0aG91dCBCT00gY2Fubm90IGJlIHRydXN0ZWQuCisrICBy
 ZXR1cm4gKHVuZGVmLCB1bmRlZikgaWYgKCRlbmNvZGluZyA9fiAvXlVURi0zMiQvaSBhbmQgJHN0
 ciAhfiAvXig/Olx4RkZceEZFXHgwMFx4MDB8XHgwMFx4MDBceEZFXHhGRikvKTsKKysgIHJldHVy
 biAodW5kZWYsIHVuZGVmKSBpZiAoJGVuY29kaW5nID1+IC9eVVRGLTE2JC9pIGFuZCAkc3RyICF+
 IC9eKD86XHhGRlx4RkV8XHhGRVx4RkYpLyk7CisrCisrICAjJGVuY29kaW5nID0gX2dldF9hbGlh
 cygkZW5jb2RpbmcpOworKyAgbXkgJGVuY29kZXIgPSBFbmNvZGU6OmZpbmRfZW5jb2RpbmcoJGVu
 Y29kaW5nKTsKKysgIGlmIChyZWYoJGVuY29kZXIpKSB7CisrICAgICRkZWNvZGVkID0gJGVuY29k
 ZXItPmRlY29kZSgkc3RyLEVuY29kZTo6RkJfUVVJRVQpOworKyAgICAkZGV0ZWN0ZWQgPSAkZW5j
 b2Rlci0+bmFtZSBpZiAoJHN0ciBlcSAnJyk7CisrICB9CisrICByZXR1cm4gKCRkZWNvZGVkLCAk
 ZGV0ZWN0ZWQpOworK30KKysKKytzdWIgX2VuY29kZV9kZXRlY3QgeworKyAgcmV0dXJuIHVuZGVm
 IHVubGVzcyBIQVNfRU5DT0RFX0RFVEVDVDsKKysgIG15ICRzdHIgPSBzaGlmdDsKKysKKysgICMg
 VVRGLTE2fDMyIGVuY29kaW5nIHdpdGhvdXQgQk9NIGNhbm5vdCBiZSB0cnVzdGVkLgorKyAgcmV0
 dXJuICh1bmRlZiwgdW5kZWYpIGlmICgkc3RyID1+IC9ceDAwXHgwMC8gYW5kICRzdHIgIX4gL14o
 PzpceEZGXHhGRVx4MDBceDAwfFx4MDBceDAwXHhGRVx4RkYpLyk7CisrICByZXR1cm4gKHVuZGVm
 LCB1bmRlZikgaWYgKCRzdHIgPX4gL1x4MDAvIGFuZCAkc3RyICF+IC9eKD86XHhGRlx4RkV8XHhG
 RVx4RkYpLyk7CisrCisrICBteSAkZGVjb2RlZDsKKysgIG15ICRkZXRlY3RlZCA9IEVuY29kZTo6
 RGV0ZWN0OjpEZXRlY3Rvcjo6ZGV0ZWN0KCRzdHIpOworKyAgaWYgKCRkZXRlY3RlZCkgeworKyAg
 ICAkZGV0ZWN0ZWQgPSBfZ2V0X2FsaWFzKCRkZXRlY3RlZCk7CisrICAgIG15ICRlbmNvZGVyID0g
 RW5jb2RlOjpmaW5kX2VuY29kaW5nKCRkZXRlY3RlZCk7CisrICAgIGlmIChyZWYoJGVuY29kZXIp
 KSB7CisrICAgICAgJGRlY29kZWQgPSAkZW5jb2Rlci0+ZGVjb2RlKCRzdHIpOworKyAgICAgICRk
 ZXRlY3RlZCA9ICRkZWNvZGVkID8gJGVuY29kZXItPm5hbWUgOiB1bmRlZjsKKysgICAgfQorKyAg
 ICBlbHNlIHsKKysgICAgICAkZGV0ZWN0ZWQgPSB1bmRlZjsKKysgICAgfQorKyAgfQorKyAgcmV0
 dXJuICgkZGVjb2RlZCwgJGRldGVjdGVkKTsKKyt9CisrCisrc3ViIF9lbmNvZGVfZ3Vlc3Mgewor
 KyAgbXkgJHN0ciA9IHNoaWZ0OworKworKyAgbXkgJGRldGVjdGVkOworKyAgbXkgJGRlY29kZWQ7
 CisrICBteSAkZW5jb2RlcjsKKysKKysgICMgU3RlcCAxOiBFeGFtaW5lIElTTy0yMDIyLSouCisr
 ICBpZiAoJHN0ciA9fiAvXGUvKSB7CisrICAgICRFbmNvZGU6Okd1ZXNzOjpOb1VURkF1dG9HdWVz
 cyA9IDE7CisrICAgICRlbmNvZGVyID0gRW5jb2RlOjpHdWVzczo6Z3Vlc3NfZW5jb2RpbmcoJHN0
 ciwKKysgICAgICAgIHF3L2NwNTAyMjEgN2JpdC1qaXMgaXNvLTIwMjIta3IvKTsKKysgICAgJEVu
 Y29kZTo6R3Vlc3M6Ok5vVVRGQXV0b0d1ZXNzID0gMDsKKysgIH0KKysKKysgICMgU3RlcCAyOiBF
 eGFtaW5lIFVTLUFTQ0lJL1VURi0oOHwxNnwzMikKKysgIHVubGVzcyAocmVmKCRlbmNvZGVyKSkg
 eworKyAgICAkRW5jb2RlOjpHdWVzczo6Tm9VVEZBdXRvR3Vlc3MgPSAwOworKyAgICAkZW5jb2Rl
 ciA9IEVuY29kZTo6R3Vlc3M6Omd1ZXNzX2VuY29kaW5nKCRzdHIpOworKyAgfQorKworKyAgIyBT
 dGVwIDM6IEV4YW1pbmUgb3RoZXIgZW5jb2RpbmdzCisrICB1bmxlc3MgKHJlZigkZW5jb2Rlcikp
 IHsKKysgICAgJEVuY29kZTo6R3Vlc3M6Ok5vVVRGQXV0b0d1ZXNzID0gMTsKKysgICAgZXZhbCB7
 CisrICAgICAgaWYgKCRzdHIgPX4gL1tceDgwLVx4RkZdezR9LykgeworKyAgICAgICAgJGVuY29k
 ZXIgPSBFbmNvZGU6Okd1ZXNzOjpndWVzc19lbmNvZGluZygkc3RyLAorKyAgICAgICAgICBxdy9l
 dWMtY24gYmlnNS1ldGVuIGV1Yy1qcCBjcDkzMiBldWMta3IgY3A5NDkvKTsKKysgICAgICB9Cisr
 ICAgICAgZWxzZSB7CisrICAgICAgICAkZW5jb2RlciA9IEVuY29kZTo6R3Vlc3M6Omd1ZXNzX2Vu
 Y29kaW5nKCRzdHIsCisrICAgICAgICAgIHF3L2lzby04ODU5LTEgY3AxMjUyLyk7CisrICAgICAg
 fQorKyAgICB9OworKyAgICAkRW5jb2RlOjpHdWVzczo6Tm9VVEZBdXRvR3Vlc3MgPSAwOworKyAg
 fQorKyAgaWYgKHJlZigkZW5jb2RlcikpIHsKKysgICAgJGRldGVjdGVkID0gJGVuY29kZXItPm5h
 bWU7CisrICAgIGlmICgkZGV0ZWN0ZWQpIHsKKysgICAgICAkZGVjb2RlZCA9ICRlbmNvZGVyLT5k
 ZWNvZGUoJHN0cik7CisrICAgIH0KKysgIH0KKysgIHJldHVybiAoJGRlY29kZWQsICRkZXRlY3Rl
 ZCk7CisrfQorKworK3N1YiBfZ2V0X2FsaWFzIHsKKysgIG15ICRlbmNvZGluZyA9IHNoaWZ0Owor
 KworKyAgdW5sZXNzIChIQVNfRU5DT0RFX0hBTkVYVFJBKSB7CisrICAgICRlbmNvZGluZyA9fiBz
 L15nYjE4MDMwJC9ldWMtY24vaTsKKysgIH0KKysgICRlbmNvZGluZyA9fiBzL151bmljb2RlLTEt
 MS0oLispJC8kMS9pOworKyAgJGVuY29kaW5nID1+IHMvXlRJUy02MjAkL2lzby04ODU5LTExL2k7
 CisrICAkZW5jb2RpbmcgPX4gcy94LW1hYy0oLispJC9NYWMkMS9pOworKyAgJGVuY29kaW5nID1+
 IHMvXlNoaWZ0X0pJUyQvY3A5MzIvaTsKKysgIGlmIChIQVNfRU5DT0RFX0VVQ0pQTVMpIHsKKysg
 ICAgJGVuY29kaW5nID1+IHMvXmlzby0yMDIyLWpwJC9jcDUwMjIxL2k7CisrICAgICRlbmNvZGlu
 ZyA9fiBzL15ldWMtanAkL2NwNTE5MzIvaTsKKysgIH0KKysKKysgIHJldHVybiAkZW5jb2Rpbmc7
 CisrfQorKworKworKzE7CisrCmRpZmYgLXJ1TiBqYXBhbmVzZS9wNS1NYWlsLVNwYW1Bc3Nhc3Np
 bi9maWxlcy9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS5wbGlzdCAvdmFyL3RtcC9wNS1NYWlsLVNw
 YW1Bc3Nhc3Npbi9maWxlcy9zcGFtYXNzYXNzaW4tMy4zLjItamEtMS5wbGlzdAotLS0gamFwYW5l
 c2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvc3BhbWFzc2Fzc2luLTMuMy4yLWphLTEucGxp
 c3QJMTk3MC0wMS0wMSAwOTowMDowMC4wMDAwMDAwMDAgKzA5MDAKKysrIC92YXIvdG1wL3A1LU1h
 aWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3NwYW1hc3Nhc3Npbi0zLjMuMi1qYS0xLnBsaXN0CTIwMTIt
 MDMtMjUgMDA6MzI6NTIuMDAwMDAwMDAwICswOTAwCkBAIC0wLDAgKzEsNSBAQAorJSVTSVRFX1BF
 UkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vVG9rZW5pemVyL01lQ2FiLnBtCislJVNJVEVf
 UEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tlbml6ZXIvU2ltcGxlSkEucG0KK0Bk
 aXJybSAlJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9Ub2tlbml6ZXIKKyUl
 U0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplci5wbQorJSVTSVRF
 X1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9VdGlsL0NoYXJzZXQucG0KZGlmZiAtcnVOIGphcGFu
 ZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL2ZpbGVzL3Rva2VuaXplci5wcmUgL3Zhci90bXAvcDUt
 TWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvdG9rZW5pemVyLnByZQotLS0gamFwYW5lc2UvcDUtTWFp
 bC1TcGFtQXNzYXNzaW4vZmlsZXMvdG9rZW5pemVyLnByZQkxOTcwLTAxLTAxIDA5OjAwOjAwLjAw
 MDAwMDAwMCArMDkwMAorKysgL3Zhci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vZmlsZXMvdG9r
 ZW5pemVyLnByZQkyMDEwLTA4LTE4IDAwOjUwOjQ3LjAwMDAwMDAwMCArMDkwMApAQCAtMCwwICsx
 LDggQEAKKworIyBUb2tlbml6ZXI6OlNpbXBsZUpBCisjCitsb2FkcGx1Z2luIE1haWw6OlNwYW1B
 c3Nhc3Npbjo6UGx1Z2luOjpUb2tlbml6ZXI6OlNpbXBsZUpBCisKKyMgVG9rZW5pemVyOjpNZUNh
 YgorIworI2xvYWRwbHVnaW4gTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OlRva2VuaXplcjo6
 TWVDYWIKZGlmZiAtcnVOIGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL3BrZy1kZWluc3Rh
 bGwgL3Zhci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLWRlaW5zdGFsbAotLS0gamFwYW5l
 c2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLWRlaW5zdGFsbAkyMDA4LTAyLTA3IDEzOjQyOjQz
 LjAwMDAwMDAwMCArMDkwMAorKysgL3Zhci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLWRl
 aW5zdGFsbAkxOTcwLTAxLTAxIDA5OjAwOjAwLjAwMDAwMDAwMCArMDkwMApAQCAtMSwxNyArMCww
 IEBACi0jIS9iaW4vc2gKLQotaWYgWyAiJDIiICE9ICJQT1NULURFSU5TVEFMTCIgXTsgdGhlbgot
 ICAgIGV4aXQgMAotZmkKLQotaWYgWyAtZCAvdmFyL2RiL3NwYW1hc3Nhc3NpbiBdOyB0aGVuCi0g
 ICAgICAgIGVjaG8gIlRvIGRlbGV0ZSAvdmFyL2RiL3NwYW1hc3Nhc3NpbiwgdXNlICdybSAtcmYg
 L3Zhci9kYi9zcGFtYXNzYXNzaW4nIgotZmkKLQotVVNFUj1zcGFtZAotCi1pZiBwdyB1c2Vyc2hv
 dyAiJHtVU0VSfSIgMj4vZGV2L251bGwgMT4mMjsgdGhlbgotCWVjaG8gIlRvIGRlbGV0ZSAke1VT
 RVJ9IHVzZXIgcGVybWFuZW50bHksIHVzZSAncm11c2VyICR7VVNFUn0nIgotZmkKLQotZXhpdCAw
 CmRpZmYgLXJ1TiBqYXBhbmVzZS9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9wa2ctZGVzY3IgL3Zhci90
 bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLWRlc2NyCi0tLSBqYXBhbmVzZS9wNS1NYWlsLVNw
 YW1Bc3Nhc3Npbi9wa2ctZGVzY3IJMjAwNy0wOS0wNyAxMzoyNzoxMy4wMDAwMDAwMDAgKzA5MDAK
 KysrIC92YXIvdG1wL3A1LU1haWwtU3BhbUFzc2Fzc2luL3BrZy1kZXNjcgkxOTcwLTAxLTAxIDA5
 OjAwOjAwLjAwMDAwMDAwMCArMDkwMApAQCAtMSwxNCArMCwwIEBACi1TcGFtQXNzYXNzaW4gaXMg
 YSBtYWlsIGZpbHRlciB3aGljaCBhdHRlbXB0cyB0byBpZGVudGlmeSBzcGFtIHVzaW5nIHRleHQK
 LWFuYWx5c2lzIGFuZCBzZXZlcmFsIGludGVybmV0LWJhc2VkIHJlYWx0aW1lIGJsYWNrbGlzdHMu
 Ci0KLVVzaW5nIGl0cyBydWxlIGJhc2UsIGl0IHVzZXMgYSB3aWRlIHJhbmdlIG9mIGhldXJpc3Rp
 YyB0ZXN0cyBvbiBtYWlsCi1oZWFkZXJzIGFuZCBib2R5IHRleHQgdG8gaWRlbnRpZnkgInNwYW0i
 LCBhbHNvIGtub3duIGFzIHVuc29saWNpdGVkCi1jb21tZXJjaWFsIGVtYWlsLgotCi1PbmNlIGlk
 ZW50aWZpZWQsIHRoZSBtYWlsIGNhbiB0aGVuIGJlIG9wdGlvbmFsbHkgdGFnZ2VkIGFzIHNwYW0g
 Zm9yIGxhdGVyCi1maWx0ZXJpbmcgdXNpbmcgdGhlIHVzZXIncyBvd24gbWFpbCB1c2VyLWFnZW50
 IGFwcGxpY2F0aW9uLgotCi1BZGRpdGlvbmFsIGRyb3AtaW4gcnVsZSBzZXRzIGFyZSBhdmFpbGFi
 bGUgYXQKLWh0dHA6Ly93aWtpLmFwYWNoZS5vcmcvc3BhbWFzc2Fzc2luL0N1c3RvbVJ1bGVzZXRz
 Ci0KLVdXVzoJaHR0cDovL3NwYW1hc3Nhc3Npbi5hcGFjaGUub3JnLwpkaWZmIC1ydU4gamFwYW5l
 c2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLWluc3RhbGwgL3Zhci90bXAvcDUtTWFpbC1TcGFt
 QXNzYXNzaW4vcGtnLWluc3RhbGwKLS0tIGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL3Br
 Zy1pbnN0YWxsCTIwMTEtMDgtMTEgMTY6NTA6MzAuMDAwMDAwMDAwICswOTAwCisrKyAvdmFyL3Rt
 cC9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9wa2ctaW5zdGFsbAkxOTcwLTAxLTAxIDA5OjAwOjAwLjAw
 MDAwMDAwMCArMDkwMApAQCAtMSw2NiArMCwwIEBACi0jIS9iaW4vc2gKLVBLR19QUkVGSVg9JHtQ
 S0dfUFJFRklYOi0vdXNyL2xvY2FsfQotVVNFUj0ke1VTRVI6LXNwYW1kfQotR1JPVVA9JHtHUk9V
 UDotc3BhbWR9Ci1IT01FPS92YXIvc3Bvb2wvJHtVU0VSfQotCi1pZiBbICIkMiIgPSAiUE9TVC1J
 TlNUQUxMIiBdO3RoZW4KLWFzaygpIHsKLSAgICAgICAgbG9jYWwgcXVlc3Rpb24gZGVmYXVsdCBh
 bnN3ZXIKLQotICAgICAgICBxdWVzdGlvbj0kMQotICAgICAgICBkZWZhdWx0PSQyCi0gICAgICAg
 IGlmIFsgLXogIiR7UEFDS0FHRV9CVUlMRElOR30iIC1hIC16ICIke0JBVENIfSIgXTsgdGhlbgot
 ICAgICAgICAgICAgICAgIHJlYWQgLXQxMjAgLXAgIiR7cXVlc3Rpb259IFske2RlZmF1bHR9XT8g
 IiBhbnN3ZXIKLSAgICAgICAgZmkKLSAgICAgICAgZWNobyAke2Fuc3dlcjotJHtkZWZhdWx0fX0K
 LX0KLQoteWVzbm8oKSB7Ci0gICAgICAgIGxvY2FsIHF1ZXN0aW9uIGRlZmF1bHQgYW5zd2VyCi0K
 LSAgICAgICAgcXVlc3Rpb249JDEKLSAgICAgICAgZGVmYXVsdD0kMgotICAgICAgICB3aGlsZSA6
 OyBkbwotICAgICAgICAgICAgICAgIGFuc3dlcj0kKGFzayAiJHtxdWVzdGlvbn0iICIke2RlZmF1
 bHR9IikKLSAgICAgICAgICAgICAgICBjYXNlICIke2Fuc3dlcn0iIGluCi0gICAgICAgICAgICAg
 ICAgW1l5XSopICByZXR1cm4gMDs7Ci0gICAgICAgICAgICAgICAgW05uXSopICByZXR1cm4gMTs7
 Ci0gICAgICAgICAgICAgICAgZXNhYwotICAgICAgICAgICAgICAgIGVjaG8gIlBsZWFzZSBhbnN3
 ZXIgeWVzIG9yIG5vLiIKLSAgICAgICAgZG9uZQotfQotCi0gICAgIyBDcmVhdGUgcGlkIGRpcmVj
 dG9yeQotICAgIGluc3RhbGwgLWQgLW8gJHtVU0VSfSAtZyAke0dST1VQfSAvdmFyL3J1bi9zcGFt
 ZAotICAgIC91c3IvYmluL3N1IHJvb3QgLWMgIiR7UEtHX1BSRUZJWH0vYmluL3NwYW1hc3Nhc3Np
 biAteCAtTCAtLWxpbnQiCi0KLSAgICBpZiBbICR7P30gLWVxIDkgXTt0aGVuCi0gICAgICAgIGVj
 aG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgotICAg
 ICAgICBlY2hvICIqX18gICAgICAgIF9fXyAgICBfX19fICBfICAgXyBfX18gXyAgIF8gIF9fX18g
 KiIKLSAgICAgICAgZWNobyAiKlwgXCAgICAgIC8gLyBcICB8ICBfIFx8IFwgfCB8XyBffCBcIHwg
 fC8gX19ffCoiCi0gICAgICAgIGVjaG8gIiogXCBcIC9cIC8gLyBfIFwgfCB8XykgfCAgXHwgfHwg
 fHwgIFx8IHwgfCAgXyAqIgotICAgICAgICBlY2hvICIqICBcIFYgIFYgLyBfX18gXHwgIF8gPHwg
 fFwgIHx8IHx8IHxcICB8IHxffCB8KiIKLSAgICAgICAgZWNobyAiKiAgIFxfL1xfL18vICAgXF9c
 X3wgXF9cX3wgXF98X19ffF98IFxffFxfX19ffCoiCi0gICAgICAgIGVjaG8gIiogICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgotICAgICAgICBlY2hvICIqWW91
 IG11c3QgaW5zdGFsbCBydWxlcyBiZWZvcmUgc3RhcnRpbmcgc3BhbWQhKiIKLSAgICAgICAgZWNo
 byAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCi0gICAg
 ICAgIGlmIFsgLXogIiR7UEFDS0FHRV9CVUlMRElOR30iIC1hIC16ICIke0JBVENIfSIgXTsgdGhl
 bgotICAgICAgICAgICBpZiB5ZXNubyAiRG8geW91IHdpc2ggdG8gcnVuIHNhLXVwZGF0ZSB0byBm
 ZXRjaCBuZXcgcnVsZXMiICJOIjt0aGVuCi0gICAgICAgICAgICAgICR7UEtHX1BSRUZJWH0vYmlu
 L3NhLXVwZGF0ZSB8fCB0cnVlCi0JICAgZWxzZQotICAgICAgICAgICAgICBlY2hvICIiCi0gICAg
 ICAgICAgIGZpCi0gICAgICAgICAgIC91c3IvYmluL3N1IHJvb3QgLWMgICIke1BLR19QUkVGSVh9
 L2Jpbi9zcGFtYXNzYXNzaW4gLXggLUwgLS1saW50IgotICAgICAgICAgICBpZiBbICR7P30gLWVx
 IDAgXSAmJiBncmVwICdebG9hZC4qUnVsZTJYU0JvZHknICR7UEtHX1BSRUZJWH0vZXRjL21haWwv
 c3BhbWFzc2Fzc2luL3YzMjAucHJlID4gL2Rldi9udWxsIDt0aGVuCi0gICAgICAgICAgICAgIGlm
 IHllc25vICJEbyB5b3Ugd2lzaCB0byBjb21waWxlIHJ1bGVzIHdpdGggcmUyYyAod2lsbCB0YWtl
 IGEgbG9uZyB0aW1lKSIgIk4iO3RoZW4KLSAgICAgICAgICAgICAgICAke1BLR19QUkVGSVh9L2Jp
 bi9zYS1jb21waWxlIHx8IHRydWUKLSAgICAgICAgZmkKLSAgICBmaQotICAgICAgIGZpCi0gICAg
 ZmkKLQotICAgIGV4aXQgMAotZmkgICMgcG9zdC1pbnN0YWxsCi0KLWV4aXQgMApkaWZmIC1ydU4g
 amFwYW5lc2UvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLW1lc3NhZ2UgL3Zhci90bXAvcDUtTWFp
 bC1TcGFtQXNzYXNzaW4vcGtnLW1lc3NhZ2UKLS0tIGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fz
 c2luL3BrZy1tZXNzYWdlCTIwMTAtMDgtMjIgMTA6NDU6MjMuMDAwMDAwMDAwICswOTAwCisrKyAv
 dmFyL3RtcC9wNS1NYWlsLVNwYW1Bc3Nhc3Npbi9wa2ctbWVzc2FnZQkyMDEyLTA0LTA3IDAwOjAz
 OjE5LjIxNzU3MDM4MyArMDkwMApAQCAtMzksOCArMzksOCBAQAogc3BhbWRfZmxhZ3M9Ii11IHNw
 YW1kIC1IIC92YXIvc3Bvb2wvc3BhbWQiCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
 KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotRm9yIEphcGFuZXNl
 IHVzZXJzLCBzZWUgZG9jdW1lbnQgaW4KLVBSRUZJWC9zaGFyZS9kb2MvamEtcDUtTWFpbC1TcGFt
 QXNzYXNzaW4vCitGb3IgSmFwYW5lc2UgdXNlcnMsIHNlZSBkb2N1bWVudHMgaW4KK2h0dHA6Ly9l
 bWFpbGxhYi5qcC9zcGFtYXNzYXNzaW4vamEtcGF0Y2gvCiAKIFRva2VuaXplcjo6TWVDYWIgdXNl
 cyBVVEYtOCBlbmNvZGluZy4gIFlvdSBtYXkgaGF2ZSB0byBtYW51YWxseQogKHJlKWluc3RhbGwg
 dGhlIGZvbGxvd2luZyBwb3J0cyB3aXRoIHRoZSBidWlsZCBvcHRpb25zIGZvciBVVEYtODoKZGlm
 ZiAtcnVOIGphcGFuZXNlL3A1LU1haWwtU3BhbUFzc2Fzc2luL3BrZy1wbGlzdCAvdmFyL3RtcC9w
 NS1NYWlsLVNwYW1Bc3Nhc3Npbi9wa2ctcGxpc3QKLS0tIGphcGFuZXNlL3A1LU1haWwtU3BhbUFz
 c2Fzc2luL3BrZy1wbGlzdAkyMDExLTA4LTExIDE4OjU5OjUyLjAwMDAwMDAwMCArMDkwMAorKysg
 L3Zhci90bXAvcDUtTWFpbC1TcGFtQXNzYXNzaW4vcGtnLXBsaXN0CTE5NzAtMDEtMDEgMDk6MDA6
 MDAuMDAwMDAwMDAwICswOTAwCkBAIC0xLDE2MSArMCwwIEBACi1Ac3RvcGRhZW1vbiBzYS1zcGFt
 ZAotYmluL3NhLWF3bAotYmluL3NhLWNoZWNrX3NwYW1kCi1iaW4vc2EtY29tcGlsZQotYmluL3Nh
 LWxlYXJuCi1iaW4vc2EtdXBkYXRlCi1iaW4vc3BhbWFzc2Fzc2luCi1iaW4vc3BhbWMKLWJpbi9z
 cGFtZAotQHVuZXhlYyBybSAtcmYgJUQvZXRjL21haWwvc3BhbWFzc2Fzc2luL3NhLXVwZGF0ZS1r
 ZXlzIHx8IHRydWUKLWV0Yy9tYWlsL3NwYW1hc3Nhc3Npbi9sb2NhbC5jZi5zYW1wbGUKLUB1bmV4
 ZWMgaWYgY21wIC1zICVCL2luaXQucHJlLnNhbXBsZSAlQi9pbml0LnByZTsgdGhlbiBybSAtZiAl
 Qi9pbml0LnByZTsgZmkKLWV0Yy9tYWlsL3NwYW1hc3Nhc3Npbi9pbml0LnByZS5zYW1wbGUKLUBl
 eGVjIFsgLWYgJUIvaW5pdC5wcmUgXSB8fCBjcCAlQi8lZiAlQi9pbml0LnByZQotQHVuZXhlYyBp
 ZiBjbXAgLXMgJUIvdG9rZW5pemVyLnByZS5zYW1wbGUgJUIvdG9rZW5pemVyLnByZTsgdGhlbiBy
 bSAtZiAlQi90b2tlbml6ZXIucHJlOyBmaQotZXRjL21haWwvc3BhbWFzc2Fzc2luL3Rva2VuaXpl
 ci5wcmUuc2FtcGxlCi1AZXhlYyBbIC1mICVCL3Rva2VuaXplci5wcmUgXSB8fCBjcCAlQi8lZiAl
 Qi90b2tlbml6ZXIucHJlCi1AdW5leGVjIGlmIGNtcCAtcyAlQi92MzEwLnByZS5zYW1wbGUgJUIv
 djMxMC5wcmU7IHRoZW4gcm0gLWYgJUIvdjMxMC5wcmU7IGZpCi1ldGMvbWFpbC9zcGFtYXNzYXNz
 aW4vdjMxMC5wcmUuc2FtcGxlCi1AZXhlYyBbIC1mICVCL3YzMTAucHJlIF0gfHwgY3AgJUIvJWYg
 JUIvdjMxMC5wcmUKLUB1bmV4ZWMgaWYgY21wIC1zICVCL3YzMTIucHJlLnNhbXBsZSAlQi92MzEy
 LnByZTsgdGhlbiBybSAtZiAlQi92MzEyLnByZTsgZmkKLWV0Yy9tYWlsL3NwYW1hc3Nhc3Npbi92
 MzEyLnByZS5zYW1wbGUKLUBleGVjIFsgLWYgJUIvdjMxMi5wcmUgXSB8fCBjcCAlQi8lZiAlQi92
 MzEyLnByZQotQHVuZXhlYyBpZiBjbXAgLXMgJUIvdjMyMC5wcmUuc2FtcGxlICVCL3YzMjAucHJl
 OyB0aGVuIHJtIC1mICVCL3YzMjAucHJlOyBmaQotZXRjL21haWwvc3BhbWFzc2Fzc2luL3YzMjAu
 cHJlLnNhbXBsZQotQGV4ZWMgWyAtZiAlQi92MzIwLnByZSBdIHx8IGNwICVCLyVmICVCL3YzMjAu
 cHJlCi1AdW5leGVjIGlmIGNtcCAtcyAlQi92MzMwLnByZS5zYW1wbGUgJUIvdjMzMC5wcmU7IHRo
 ZW4gcm0gLWYgJUIvdjMzMC5wcmU7ZmkKLWV0Yy9tYWlsL3NwYW1hc3Nhc3Npbi92MzMwLnByZS5z
 YW1wbGUKLUBleGVjIFsgLWYgJUIvdjMzMC5wcmUgXSB8fCBjcCAlQi8lZiAlQi92MzMwLnByZQot
 aW5jbHVkZS9saWJzcGFtYy5oCi1saWIvbGlic3BhbWMuc28KLWxpYi9saWJzcGFtYy5zby4wCi0l
 JVNTTCUlbGliL2xpYnNzbHNwYW1jLnNvCi0lJVNTTCUlbGliL2xpYnNzbHNwYW1jLnNvLjAKLSUl
 U0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4ucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFt
 QXNzYXNzaW4vQUlDYWNoZS5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9BcmNo
 aXZlSXRlcmF0b3IucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vQXN5bmNMb29w
 LnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0F1dG9XaGl0ZWxpc3QucG0KLSUl
 U0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vQmF5ZXMucG0KLSUlU0lURV9QRVJMJSUvTWFp
 bC9TcGFtQXNzYXNzaW4vQmF5ZXMvQ29tYmluZUNoaS5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1Nw
 YW1Bc3Nhc3Npbi9CYXllcy9Db21iaW5lTmFpdmVCYXllcy5wbQotJSVTSVRFX1BFUkwlJS9NYWls
 L1NwYW1Bc3Nhc3Npbi9CYXllc1N0b3JlLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fz
 c2luL0JheWVzU3RvcmUvQkRCLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0Jh
 eWVzU3RvcmUvREJNLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0JheWVzU3Rv
 cmUvTXlTUUwucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vQmF5ZXNTdG9yZS9Q
 Z1NRTC5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9CYXllc1N0b3JlL1NEQk0u
 cG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vQmF5ZXNTdG9yZS9TUUwucG0KLSUl
 U0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vQ2xpZW50LnBtCi0lJVNJVEVfUEVSTCUlL01h
 aWwvU3BhbUFzc2Fzc2luL0NvbmYucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4v
 Q29uZi9MREFQLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0NvbmYvUGFyc2Vy
 LnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0NvbmYvU1FMLnBtCi0lJVNJVEVf
 UEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0NvbnN0YW50cy5wbQotJSVTSVRFX1BFUkwlJS9NYWls
 L1NwYW1Bc3Nhc3Npbi9EQkJhc2VkQWRkckxpc3QucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFt
 QXNzYXNzaW4vRG5zLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0Ruc1Jlc29s
 dmVyLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0hUTUwucG0KLSUlU0lURV9Q
 RVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vTG9jYWxlcy5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1Nw
 YW1Bc3Nhc3Npbi9Mb2NrZXIucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vTG9j
 a2VyL0Zsb2NrLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0xvY2tlci9Vbml4
 TkZTU2FmZS5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9Mb2NrZXIvV2luMzIu
 cG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vTG9nZ2VyLnBtCi0lJVNJVEVfUEVS
 TCUlL01haWwvU3BhbUFzc2Fzc2luL0xvZ2dlci9GaWxlLnBtCi0lJVNJVEVfUEVSTCUlL01haWwv
 U3BhbUFzc2Fzc2luL0xvZ2dlci9TdGRlcnIucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNz
 YXNzaW4vTG9nZ2VyL1N5c2xvZy5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9N
 YWlsaW5nTGlzdC5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9NZXNzYWdlLnBt
 Ci0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL01lc3NhZ2UvTWV0YWRhdGEucG0KLSUl
 U0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vTWVzc2FnZS9NZXRhZGF0YS9SZWNlaXZlZC5w
 bQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9NZXNzYWdlL05vZGUucG0KLSUlU0lU
 RV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vTmV0U2V0LnBtCi0lJVNJVEVfUEVSTCUlL01haWwv
 U3BhbUFzc2Fzc2luL1Blck1zZ0xlYXJuZXIucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNz
 YXNzaW4vUGVyTXNnU3RhdHVzLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1Bl
 cnNpc3RlbnRBZGRyTGlzdC5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVn
 aW4ucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL0FTTi5wbQotJSVT
 SVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vQVdMLnBtCi0lJVNJVEVfUEVSTCUl
 L01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9BY2Nlc3NEQi5wbQotJSVTSVRFX1BFUkwlJS9NYWls
 L1NwYW1Bc3Nhc3Npbi9QbHVnaW4vQW50aVZpcnVzLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3Bh
 bUFzc2Fzc2luL1BsdWdpbi9BdXRvTGVhcm5UaHJlc2hvbGQucG0KLSUlU0lURV9QRVJMJSUvTWFp
 bC9TcGFtQXNzYXNzaW4vUGx1Z2luL0JheWVzLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFz
 c2Fzc2luL1BsdWdpbi9Cb2R5RXZhbC5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Np
 bi9QbHVnaW4vQm9keVJ1bGVCYXNlRXh0cmFjdG9yLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3Bh
 bUFzc2Fzc2luL1BsdWdpbi9DaGVjay5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Np
 bi9QbHVnaW4vRENDLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9E
 S0lNLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9ETlNFdmFsLnBt
 Ci0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9GcmVlTWFpbC5wbQotJSVT
 SVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vSFRNTEV2YWwucG0KLSUlU0lURV9Q
 RVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL0hUVFBTTWlzbWF0Y2gucG0KLSUlU0lURV9Q
 RVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL0hhc2hjYXNoLnBtCi0lJVNJVEVfUEVSTCUl
 L01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9IZWFkZXJFdmFsLnBtCi0lJVNJVEVfUEVSTCUlL01h
 aWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9JbWFnZUluZm8ucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9T
 cGFtQXNzYXNzaW4vUGx1Z2luL01JTUVFdmFsLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFz
 c2Fzc2luL1BsdWdpbi9NSU1FSGVhZGVyLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fz
 c2luL1BsdWdpbi9PbmVMaW5lQm9keVJ1bGVUeXBlLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3Bh
 bUFzc2Fzc2luL1BsdWdpbi9QaGlzaFRhZy5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nh
 c3Npbi9QbHVnaW4vUHl6b3IucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1
 Z2luL1Jhem9yMi5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vUmVs
 YXlDb3VudHJ5LnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9SZWxh
 eUV2YWwucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1JlcGxhY2VU
 YWdzLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9SZXVzZS5wbQot
 JSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vUnVsZTJYU0JvZHkucG0KLSUl
 U0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2luL1NQRi5wbQotJSVTSVRFX1BFUkwl
 JS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vU2hvcnRjaXJjdWl0LnBtCi0lJVNJVEVfUEVSTCUl
 L01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9TcGFtQ29wLnBtCi0lJVNJVEVfUEVSTCUlL01haWwv
 U3BhbUFzc2Fzc2luL1BsdWdpbi9UZXN0LnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fz
 c2luL1BsdWdpbi9UZXh0Q2F0LnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1Bs
 dWdpbi9Ub2tlbml6ZXIucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vUGx1Z2lu
 L1Rva2VuaXplci9NZUNhYi5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVn
 aW4vVG9rZW5pemVyL1NpbXBsZUpBLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2lu
 L1BsdWdpbi9VUklETlNCTC5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVn
 aW4vVVJJRGV0YWlsLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9V
 UklFdmFsLnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9WQm91bmNl
 LnBtCi0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1BsdWdpbi9XTEJMRXZhbC5wbQot
 JSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW4vV2hpdGVMaXN0U3ViamVjdC5w
 bQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9QbHVnaW5IYW5kbGVyLnBtCi0lJVNJ
 VEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1JlcG9ydGVyLnBtCi0lJVNJVEVfUEVSTCUlL01h
 aWwvU3BhbUFzc2Fzc2luL1NRTEJhc2VkQWRkckxpc3QucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9T
 cGFtQXNzYXNzaW4vU3BhbWRGb3JrU2NhbGluZy5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1B
 c3Nhc3Npbi9TdWJQcm9jQmFja0NoYW5uZWwucG0KLSUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNz
 YXNzaW4vVGltZW91dC5wbQotJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9VdGlsLnBt
 Ci0lJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1V0aWwvQ2hhcnNldC5wbQotJSVTSVRF
 X1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9VdGlsL0RlcGVuZGVuY3lJbmZvLnBtCi0lJVNJVEVf
 UEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL1V0aWwvUHJvZ3Jlc3MucG0KLSUlU0lURV9QRVJMJSUv
 TWFpbC9TcGFtQXNzYXNzaW4vVXRpbC9SZWdpc3RyYXJCb3VuZGFyaWVzLnBtCi0lJVNJVEVfUEVS
 TCUlL01haWwvU3BhbUFzc2Fzc2luL1V0aWwvU2NvcGVkVGltZXIucG0KLSUlU0lURV9QRVJMJSUv
 TWFpbC9TcGFtQXNzYXNzaW4vVXRpbC9UaWVPbmVTdHJpbmdIYXNoLnBtCi0lJVNJVEVfUEVSTCUl
 LyUlUEVSTF9BUkNIJSUvYXV0by9NYWlsL1NwYW1Bc3Nhc3Npbi8ucGFja2xpc3QKLSUlU0lURV9Q
 RVJMJSUvc3BhbWFzc2Fzc2luLXJ1bi5wb2QKLSUlREFUQURJUiUlL2xhbmd1YWdlcwotJSVEQVRB
 RElSJSUvc2EtdXBkYXRlLXB1YmtleS50eHQKLSUlREFUQURJUiUlL3VzZXJfcHJlZnMudGVtcGxh
 dGUKLUB1bmV4ZWMgcm0gLXJmIC92YXIvbGliL3NwYW1hc3Nhc3Npbi8yKiB8fCB0cnVlCi1AdW5l
 eGVjIHJtZGlyIC92YXIvbGliL3NwYW1hc3Nhc3NpbiAyPi9kZXYvbnVsbCAgfHwgdHJ1ZQotQHVu
 ZXhlYyBybWRpciAvdmFyL2xpYiAyPi9kZXYvbnVsbCB8fCB0cnVlCi1AdW5leGVjIHJtZGlyIC92
 YXIvZGIvc3BhbWFzc2Fzc2luIHx8IHRydWUKLUBkaXJybSAlJURBVEFESVIlJQotQGRpcnJtICUl
 U0lURV9QRVJMJSUvJSVQRVJMX0FSQ0glJS9hdXRvL01haWwvU3BhbUFzc2Fzc2luCi1AZGlycm10
 cnkgJSVTSVRFX1BFUkwlJS8lJVBFUkxfQVJDSCUlL2F1dG8vTWFpbAotQGRpcnJtICUlU0lURV9Q
 RVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vVXRpbAotQGRpcnJtICUlU0lURV9QRVJMJSUvTWFpbC9T
 cGFtQXNzYXNzaW4vUGx1Z2luL1Rva2VuaXplcgotQGRpcnJtdHJ5ICUlU0lURV9QRVJMJSUvTWFp
 bC9TcGFtQXNzYXNzaW4vUGx1Z2luCi1AZGlycm0gJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nh
 c3Npbi9NZXNzYWdlL01ldGFkYXRhCi1AZGlycm0gJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nh
 c3Npbi9NZXNzYWdlCi1AZGlycm0gJSVTSVRFX1BFUkwlJS9NYWlsL1NwYW1Bc3Nhc3Npbi9Mb2dn
 ZXIKLUBkaXJybSAlJVNJVEVfUEVSTCUlL01haWwvU3BhbUFzc2Fzc2luL0xvY2tlcgotQGRpcnJt
 ICUlU0lURV9QRVJMJSUvTWFpbC9TcGFtQXNzYXNzaW4vQ29uZgotQGRpcnJtICUlU0lURV9QRVJM
 JSUvTWFpbC9TcGFtQXNzYXNzaW4vQmF5ZXNTdG9yZQotQGRpcnJtICUlU0lURV9QRVJMJSUvTWFp
 bC9TcGFtQXNzYXNzaW4vQmF5ZXMKLUBkaXJybXRyeSAlJVNJVEVfUEVSTCUlL01haWwvU3BhbUFz
 c2Fzc2luCi1AZGlycm10cnkgJSVTSVRFX1BFUkwlJS9NYWlsCi1AZGlycm10cnkgZXRjL21haWwv
 c3BhbWFzc2Fzc2luCi1AZGlycm10cnkgZXRjL21haWwKLUB1bmV4ZWMgcm0gLXJmIC92YXIvcnVu
 L3NwYW1kIHx8IHRydWUK
 --f46d0447a0771b4baf04bd043124--
State-Changed-From-To: feedback->open 
State-Changed-By: scheidell 
State-Changed-When: Sat Apr 7 12:19:20 UTC 2012 
State-Changed-Why:  
Maintainer has fixed. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=165765 

From: Michael Scheidell <scheidell@FreeBSD.org>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: ports/165765: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
Date: Sat, 7 Apr 2012 08:59:17 -0400

 > Pardon my ignorance, I created the file which was wrong and contained 
 > Japanese.
 > I fixed it.
 
 I would not call it ignorance, just something you never did.  This is 
 actually a brilliant piece of work, something I thought of doing, but 
 dreaded it.
 
 Getting a MASTER/SLAVE port to work, especially something this complex 
 took a lot of work.
 
 I am running this in a tinderbox now, to see what happens.
 
 ps, one minor thing:
 
 # $FreeBSD: ports/japanese/p5-Mail-SpamAssassin/Makefile,v 1.30 2012/03/13 16:15:08 pgollucci Exp $
 +# $FreeBSD: ports/japanese/p5-Mail-SpamAssassin/Makefile,v 1.31 Exp $
 
 Never mess with these.  they need to stay the way they are so that the CVS system can find the old files.
 Once I commit the files to ports tree, CVS will make the substitutions all by itself.
 
 
 
 
 -- 
 Michael Scheidell, CTO
  >*| * SECNAP Network Security Corporation
 d: +1.561.948.2259
 w: http://people.freebsd.org/~scheidell

From: Michael Scheidell <scheidell@FreeBSD.org>
To: <bug-followup@FreeBSD.org>
Cc:  
Subject: Re: ports/165765: [maintainer update] modern revamping japanese/p5-Mail-SpamAssassin
Date: Sat, 7 Apr 2012 09:17:34 -0400

 minor issue with plist.  you really should check to make sure that all 
 files are removed from filesystem when there is a pkg_delete/make uninstall.
 Having an account on a tinderbox, like redports will help.
 
 for the man pages, I will do some += magic in your Makefile
 and, for the tokenizer* files, I will do some @exec/@unexec magic in 
 your *.plist file.
 
 Goal I think is that if tokenizer.pre == tokenizer.pre.sample, we delete 
 it.  if it was changed, we don't delete it.
 on exec, we don't write tokenizer.pre if it exists.  this will preserve 
 any changes OP makes.
 
 I will work on this below for you.
 
 === Checking filesystem state after all packages deleted
 1072     ================================================================
 1073     list of extra files and directories in / (not present on clean 
 system but present after everything was deinstalled)
 1074     212111 8 drwxr-xr-x 3 root wheel 512 Apr 7 13:05 usr/local/etc/mail
 1075     212112 8 drwxr-xr-x 2 root wheel 512 Apr 7 13:05 
 usr/local/etc/mail/spamassassin
 1076     212126 8 -rw-r--r-- 1 root wheel 163 Apr 7 13:05 
 usr/local/etc/mail/spamassassin/tokenizer.pre.sample
 1077     212127 8 -rw-r--r-- 1 root wheel 163 Apr 7 13:05 
 usr/local/etc/mail/spamassassin/tokenizer.pre
 1078     6442823 8 drwxr-xr-x 3 root wheel 512 Apr 7 13:06 
 usr/local/lib/perl5
 1079     6442840 8 drwxr-xr-x 3 root wheel 3072 Apr 7 13:06 
 usr/local/lib/perl5/5.12.4
 1080     202946 8 drwxr-xr-x 3 root wheel 512 Apr 7 13:04 
 usr/local/lib/perl5/5.12.4/man
 1081     202947 24 drwxr-xr-x 2 root wheel 9216 Apr 7 13:06 
 usr/local/lib/perl5/5.12.4/man/man3
 1082     212056 16 -r--r--r-- 1 root wheel 4282 Apr 7 13:05 
 usr/local/lib/perl5/5.12.4/man/man3/Mail::SpamAssassin::Util::Charset.3
 1083     212089 16 -r--r--r-- 1 root wheel 4204 Apr 7 13:05 
 usr/local/lib/perl5/5.12.4/man/man3/Mail::SpamAssassin::Plugin::Tokenizer::MeCab.3
 1084     212098 16 -r--r--r-- 1 root wheel 5170 Apr 7 13:05 
 usr/local/lib/perl5/5.12.4/man/man3/Mail::SpamAssassin::Plugin::Tokenizer.3
 1085     212102 16 -r--r--r-- 1 root wheel 4203 Apr 7 13:05 
 usr/local/lib/perl5/5.12.4/man/man3/Mail::SpamAssassin::Plugin::Tokenizer::SimpleJA.3
 -- 
 Michael Scheidell, CTO
  >*| * SECNAP Network Security Corporation
 d: +1.561.948.2259
 w: http://people.freebsd.org/~scheidell

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/165765: commit references a PR
Date: Sat,  7 Apr 2012 13:43:37 +0000 (UTC)

 scheidell    2012-04-07 13:43:28 UTC
 
   FreeBSD ports repository
 
   Modified files:
     mail/p5-Mail-SpamAssassin/files manpages 
   Log:
   - Update to support additional manpages in slave ports
   
   PR:             ports/165765
   Submitted by:   scheidell (me)
   Feature safe:   yes
   
   Revision  Changes    Path
   1.2       +3 -3      ports/mail/p5-Mail-SpamAssassin/files/manpages
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: scheidell 
State-Changed-When: Sat Apr 7 16:36:59 UTC 2012 
State-Changed-Why:  
Committed. Several changes. please review. Please check make 
install/deinstall/make package/pkg_delete. Edit tokenizer.pre, make sure 
it is still there after pkg_delete and make reinstall(pkg_delete + 
pkg_add). Open a new pr if you need to tweak.  Note2: you MUST update 
your ports tree.  As noted, a couple of changes were made to master 
port. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=165765 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/165765: commit references a PR
Date: Sat,  7 Apr 2012 16:34:43 +0000 (UTC)

 scheidell    2012-04-07 16:34:29 UTC
 
   FreeBSD ports repository
 
   Modified files:
     mail/p5-Mail-SpamAssassin Makefile 
   Log:
   - More updates to support slave. Define ETCDIR
   - Best practices, change ${CP} to ${INSTALL_DATA}
   
   PR:             ports/165765
   Submitted by:   scheidell (me)
   Feature safe:   yes
   
   Revision  Changes    Path
   1.155     +18 -17    ports/mail/p5-Mail-SpamAssassin/Makefile
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/165765: commit references a PR
Date: Sat,  7 Apr 2012 16:34:53 +0000 (UTC)

 scheidell    2012-04-07 16:34:45 UTC
 
   FreeBSD ports repository
 
   Modified files:
     japanese/p5-Mail-SpamAssassin Makefile pkg-message 
   Added files:
     japanese/p5-Mail-SpamAssassin/files 
                                         spamassassin-3.3.2-ja-1.patch 
                                         spamassassin-3.3.2-ja-1.plist 
                                         tokenizer.pre 
   Removed files:
     japanese/p5-Mail-SpamAssassin distinfo pkg-deinstall pkg-descr 
                                   pkg-install pkg-plist 
     japanese/p5-Mail-SpamAssassin/files patch-rules-local.cf 
                                         patch-sa-learn.raw 
                                         sa-spamd.sh.in 
   Log:
   - Modern revamping japanese/p5-Mail-SpamAssassin to work as a slave port [1]
   - Bump PORTREVISION to follow mail/p5-Mail-SpamAssassin [1]
   - tweak files/*.plist to check for and optionally save tokenizer.pre [2]
   
   PR:             ports/165765 [1]
   Submitted by:   Masaki TAGAWA <masaki@club.kyutech.ac.jp> (maintainer)
   Reviewed by:    scheidell (me) [2]
   Feature safe:   yes
   
   Revision  Changes    Path
   1.31      +25 -321   ports/japanese/p5-Mail-SpamAssassin/Makefile
   1.9       +0 -8      ports/japanese/p5-Mail-SpamAssassin/distinfo (dead)
   1.3       +0 -15     ports/japanese/p5-Mail-SpamAssassin/files/patch-rules-local.cf (dead)
   1.2       +0 -27     ports/japanese/p5-Mail-SpamAssassin/files/patch-sa-learn.raw (dead)
   1.5       +0 -43     ports/japanese/p5-Mail-SpamAssassin/files/sa-spamd.sh.in (dead)
   1.1       +1148 -0   ports/japanese/p5-Mail-SpamAssassin/files/spamassassin-3.3.2-ja-1.patch (new)
   1.1       +7 -0      ports/japanese/p5-Mail-SpamAssassin/files/spamassassin-3.3.2-ja-1.plist (new)
   1.1       +8 -0      ports/japanese/p5-Mail-SpamAssassin/files/tokenizer.pre (new)
   1.4       +0 -17     ports/japanese/p5-Mail-SpamAssassin/pkg-deinstall (dead)
   1.2       +0 -14     ports/japanese/p5-Mail-SpamAssassin/pkg-descr (dead)
   1.7       +0 -66     ports/japanese/p5-Mail-SpamAssassin/pkg-install (dead)
   1.5       +2 -2      ports/japanese/p5-Mail-SpamAssassin/pkg-message
   1.10      +0 -161    ports/japanese/p5-Mail-SpamAssassin/pkg-plist (dead)
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
>Unformatted:
