<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>55279</bug_id>
          
          <creation_ts>2004-06-26 15:03 0000</creation_ts>
          <short_desc>sys-auth/pam_skey-1.1.4 (new ebuild)</short_desc>
          <delta_ts>2008-01-16 07:26:35 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Ebuilds</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          <bug_file_loc>http://freshmeat.net/projects/pam_skey/</bug_file_loc>
          
          <keywords>EBUILD, InCVS</keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>ulm@gentoo.org</reporter>
          <assigned_to>maintainer-wanted@gentoo.org</assigned_to>
          <cc>dani.church@gmail.com</cc>
    
    <cc>distler@kph.uni-mainz.de</cc>
    
    <cc>jakub@gentoo.org</cc>
    
    <cc>jason@grani.ru</cc>
    
    <cc>pam-bugs@gentoo.org</cc>
    
    <cc>sharpshopter@gmail.com</cc>
    
    <cc>taviso@gentoo.org</cc>
    
    <cc>wschlich@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2004-06-26 15:03:32 0000</bug_when>
            <thetext>Hello,

this is pam_skey-1.1.3.ebuild, providing a PAM module for interfacing the S/Key library.

I suggest sys-libs/pam_skey where the main PAM libraries are located, too.

Uli

Reproducible: Always
Steps to Reproduce:</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2004-06-26 15:05:59 0000</bug_when>
            <thetext>Created an attachment (id=34238)
pam_skey-1.1.3.ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2004-06-28 00:26:32 0000</bug_when>
            <thetext>Created an attachment (id=34321)
pam_skey-1.1.3.ebuild

Added &quot;dodoc README INSTALL&quot; to src_install().
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2004-09-25 13:11:05 0000</bug_when>
            <thetext>When bug 65343 is fixed, this will no longer be needed (at least for sshd).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dani.church@gmail.com</who>
            <bug_when>2005-02-24 22:19:37 0000</bug_when>
            <thetext>Created an attachment (id=52094)
pam_skey-1.1.3-r1.ebuild

Updated SRC_URI to a live copy of the source.  Added my own gentoo-r1 patch
(URL is live).	Add src_unpack, updated src_compile (--libdir should have been
specified, not --exec_prefix) and src_install to fit with the new patch.

My gentoo-r1 patch is a major rewrite of the pam_skey authentication code; it
makes the module more compliant with PAM standards.  See the README and INSTALL
files included with the patch.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dani.church@gmail.com</who>
            <bug_when>2005-02-24 22:21:01 0000</bug_when>
            <thetext>Created an attachment (id=52095)
files/pam_skey-system-auth.pam.d

This is the replacement pam.d/system-auth config file that pam_skey-1.1.3-r1
uses.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2005-02-24 23:10:29 0000</bug_when>
            <thetext>I just want to note that bug 36499 and this one concern the same thing,
so one of them should be resolved as a duplicate.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dani.church@gmail.com</who>
            <bug_when>2005-02-24 23:15:09 0000</bug_when>
            <thetext>I noticed that as well; I added the update to this one because (a) this bug is more recent, so hopefully it has more active people watching it, and (b) the ebuild file with this bug was cleaner.

In any case, the important part of my update isn&apos;t the ebuild at all, but the patch that it refers to.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2005-08-26 08:24:56 0000</bug_when>
            <thetext>*** Bug 36499 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2005-08-26 08:33:47 0000</bug_when>
            <thetext>HOMEPAGE is no longer valid and should be changed to
http://freshmeat.net/projects/pam_skey/

Version 1.1.4 is out since some time (only minuscule changes, though).
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-03-05 06:03:23 0000</bug_when>
            <thetext>Created an attachment (id=81391)
pam_skey-1.1.3-r1.ebuild

slightly modified ebuild (homepage, inherit pam eclass, deps)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-03-05 06:04:38 0000</bug_when>
            <thetext>Created an attachment (id=81392)
files/pam_skey-system-auth.pam.d

files/pam_skey-system-auth.pam.d - slightly modified to match current pam version</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-03-05 06:06:44 0000</bug_when>
            <thetext>Tested this w/ openssh-4.2_p1-r1, works nicely. I also tried to redo the patches for 1.1.4 but the two big ones are too much work, don&apos;t have time for that. :/</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dani.church@gmail.com</who>
            <bug_when>2006-03-05 07:38:01 0000</bug_when>
            <thetext>I&apos;ve looked through the changes from pam_skey-1.1.3 to pam_skey-1.1.4, and the only code changes are bugfixes to bugs that don&apos;t exist in my code.  Since my patch involved a rewrite of the entirety of pam_skey.c (and removing pam_skey_access.c) the codebase is completely different.  My recommendation is to keep pam_skey-1.1.3-r1 as the current version of the ebuild, as making a 1.1.4-r1 patch and ebuild would provide no further benefits.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2006-03-06 01:27:35 0000</bug_when>
            <thetext>Apart from changes related to the new autoconf version, the differences between 1.1.3 and 1.1.4 are small. So it really is not a big issue to base the patch on 1.1.4. See attachment.

Dany, did you consider sending your patch to Upstream? Or is it too Gentoo specific?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2006-03-06 01:33:10 0000</bug_when>
            <thetext>Created an attachment (id=81492)
pam_skey-1.1.4-gentoo.patch

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-03-06 03:02:31 0000</bug_when>
            <thetext>(In reply to comment #14)
&gt; Dany, did you consider sending your patch to Upstream? Or is it too Gentoo
&gt; specific?

Indeed, good idea... 

(In reply to comment #15)
&gt; Created an attachment (id=81492) [edit]
&gt; pam_skey-1.1.4-gentoo.patch

I&apos;ll give a try as soon as I have time, thanks. 
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2006-03-06 03:13:44 0000</bug_when>
            <thetext>Created an attachment (id=81505)
pam_skey-1.1.4-gentoo.patch (take 2)

Took out unnecessary hunk for REALEASENOTES.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-03-06 03:28:44 0000</bug_when>
            <thetext>(In reply to comment #17)

Works fine w/ openssh and sudo.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dani.church@gmail.com</who>
            <bug_when>2006-03-06 10:20:16 0000</bug_when>
            <thetext>I considered sending in the patch; the only reason I didn&apos;t was because I made a number of assumptions while writing my code; I don&apos;t know how portable it would be to other systems (Linux using a different skey library, *BSD).  That&apos;s why I took out many of the configure defines.

So, yes, the new code is in general suitable for any PAM system; however, it might need work to make it portable.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-06-08 02:38:00 0000</bug_when>
            <thetext>This is now in our Project Sunrise overlay:

svn co http://overlays.gentoo.org/svn/proj/sunrise

Enjoy!
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-06-25 05:34:12 0000</bug_when>
            <thetext>Created an attachment (id=90101)
pam_skey-1.1.4 ebuild

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>flameeyes@gentoo.org</who>
            <bug_when>2007-07-07 20:57:41 0000</bug_when>
            <thetext>*Pretty please* remove this from sunrise, installing a new system-auth file is a no-go situation, and will most likely create _more_ problems for the PAM team (that is: me alone).
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-07-07 21:10:48 0000</bug_when>
            <thetext>(In reply to comment #22)

Done.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2007-07-07 21:42:22 0000</bug_when>
            <thetext>Actually, it isn&apos;t removed but fixed.
&lt;http://overlays.gentoo.org/proj/sunrise/changeset/4196&gt;
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ulm@gentoo.org</who>
            <bug_when>2008-01-16 07:20:49 0000</bug_when>
            <thetext>Committed to Portage tree, thanks everybody.

*pam_skey-1.1.4 (16 Jan 2008)

  16 Jan 2008; Ulrich Mueller &lt;ulm@gentoo.org&gt; +metadata.xml,
  +pam_skey-1.1.4.ebuild:
  Import from Sunrise overlay. Original ebuild and patch contributed by
  Dani Church &lt;dani.church@gmail.com&gt;, Jakub Moc &lt;jakub@gentoo.org&gt; and me,
  bug 55279.
</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34238</attachid>
            <date>2004-06-26 15:05 0000</date>
            <desc>pam_skey-1.1.3.ebuild</desc>
            <filename>pam_skey-1.1.3.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKREVTQ1JJUFRJT049IlBBTSBtb2R1bGUgZm9yIHRoZSBTL0tleSBhdXRo
ZW50aWNhdGlvbiBzeXN0ZW0iCkhPTUVQQUdFPSJodHRwOi8vZnJlc2htZWF0Lm5ldC9wcm9qZWN0
cy9wYW1fc2tleS8iClNSQ19VUkk9Imh0dHA6Ly93d3cuc3JjZS5oci8lN0VrcmVhdG9yL3NvdXJj
ZXMvcHJvamVjdHMvdGFyYmFsbHMvJHtQfS50YXIuZ3oiCkxJQ0VOU0U9IkdQTC0yIgpTTE9UPSIw
IgpLRVlXT1JEUz0ifng4NiIKSVVTRT0iIgpERVBFTkQ9InN5cy1saWJzL3BhbSBhcHAtYWRtaW4v
c2tleSIKUz0ke1dPUktESVJ9LyR7UE59CgpzcmNfY29tcGlsZSgpIHsKCWVjb25mIC0tZXhlY19w
cmVmaXg9IiIgfHwgZGllICJlY29uZiBmYWlsZWQiCgllbWFrZSB8fCBkaWUgImVtYWtlIGZhaWxl
ZCIKfQoKc3JjX2luc3RhbGwoKSB7Cglkb2RpciAvbGliL3NlY3VyaXR5CgltYWtlIERFU1RESVI9
JHtEfSBpbnN0YWxsIHx8IGRpZQp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34321</attachid>
            <date>2004-06-28 00:26 0000</date>
            <desc>pam_skey-1.1.3.ebuild</desc>
            <filename>pam_skey-1.1.3.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKREVTQ1JJUFRJT049IlBBTSBtb2R1bGUgZm9yIHRoZSBTL0tleSBhdXRo
ZW50aWNhdGlvbiBzeXN0ZW0iCkhPTUVQQUdFPSJodHRwOi8vZnJlc2htZWF0Lm5ldC9wcm9qZWN0
cy9wYW1fc2tleS8iClNSQ19VUkk9Imh0dHA6Ly93d3cuc3JjZS5oci8lN0VrcmVhdG9yL3NvdXJj
ZXMvcHJvamVjdHMvdGFyYmFsbHMvJHtQfS50YXIuZ3oiCkxJQ0VOU0U9IkdQTC0yIgpTTE9UPSIw
IgpLRVlXT1JEUz0ifng4NiIKSVVTRT0iIgpERVBFTkQ9InN5cy1saWJzL3BhbSBhcHAtYWRtaW4v
c2tleSIKUz0ke1dPUktESVJ9LyR7UE59CgpzcmNfY29tcGlsZSgpIHsKCWVjb25mIC0tZXhlY19w
cmVmaXg9IiIgfHwgZGllICJlY29uZiBmYWlsZWQiCgllbWFrZSB8fCBkaWUgImVtYWtlIGZhaWxl
ZCIKfQoKc3JjX2luc3RhbGwoKSB7Cglkb2RpciAvbGliL3NlY3VyaXR5CgltYWtlIERFU1RESVI9
JHtEfSBpbnN0YWxsIHx8IGRpZQoJZG9kb2MgUkVBRE1FIElOU1RBTEwKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>52094</attachid>
            <date>2005-02-24 22:19 0000</date>
            <desc>pam_skey-1.1.3-r1.ebuild</desc>
            <filename>pam_skey-1.1.3-r1.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKREVTQ1JJUFRJT049InBhbSBpbnRlcmZhY2UgdG8gZXhpc3RpbmcgUy9L
ZXkgbGlicmFyeS9pbnRlcmZhY2UiCkhPTUVQQUdFPSJodHRwOi8vd3d3LnNyY2UuaHIvfmtyZWF0
b3IvcHJvamVjdHMvcGFtX3NrZXkvIgpTUkNfVVJJPSJodHRwOi8va3JlYXRvci5lc2EuZmVyLmhy
L3Byb2plY3RzL3RhcmJhbGxzLyR7UH0udGFyLmd6CglodHRwOi8vZGNodXJjaC5hdGguY3gvJHtQ
fS1nZW50b28tJHtQUn0ucGF0Y2guYnoyIgpMSUNFTlNFPSJHUEwtMiIKU0xPVD0iMCIKS0VZV09S
RFM9In54ODYiCklVU0U9IiIKREVQRU5EPSI+PXN5cy1saWJzL3BhbS0wLjc3LXI4ID49YXBwLWFk
bWluL3NrZXktMS4xLjUtcjQiClM9JHtXT1JLRElSfS8ke1BOfQoKaW5oZXJpdCBldXRpbHMKCnNy
Y191bnBhY2soKSB7Cgl1bnBhY2sgJHtBfQoJY2QgJHtTfQoJZXBhdGNoICR7V09SS0RJUn0vJHtQ
fS1nZW50b28tJHtQUn0ucGF0Y2gKfQoJCnNyY19jb21waWxlKCkgewoJZWNvbmYgLS1saWJkaXI9
Ii9saWIiIHx8IGRpZSAiZWNvbmYgZmFpbGVkIgoJZW1ha2UgfHwgZGllICJlbWFrZSBmYWlsZWQi
Cn0KCnNyY19pbnN0YWxsKCkgewoJbWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCB8fCBkaWUKCWRv
ZG9jIFJFQURNRSBJTlNUQUxMCgluZXdwYW1kICR7RklMRVNESVJ9L3BhbV9za2V5LXN5c3RlbS1h
dXRoLnBhbS5kIHN5c3RlbS1hdXRoCn0K
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>52095</attachid>
            <date>2005-02-24 22:21 0000</date>
            <desc>files/pam_skey-system-auth.pam.d</desc>
            <filename>pam_skey-system-auth.pam.d</filename>
            <type>text/plain</type>
            <data encoding="base64">IyVQQU0tMS4wCgphdXRoICAgICAgIHJlcXVpcmVkCS9saWIvc2VjdXJpdHkvcGFtX2Vudi5zbwph
dXRoICAgICAgIFtzdWNjZXNzPWRvbmUgaWdub3JlPWlnbm9yZSBhdXRoX2Vycj1kaWUgZGVmYXVs
dD1iYWRdIC9saWIvc2VjdXJpdHkvcGFtX3NrZXkuc28KYXV0aCAgICAgICBzdWZmaWNpZW50CS9s
aWIvc2VjdXJpdHkvcGFtX3VuaXguc28gbGlrZWF1dGggbnVsbG9rIHRyeV9maXJzdF9wYXNzCmF1
dGggICAgICAgcmVxdWlyZWQJL2xpYi9zZWN1cml0eS9wYW1fZGVueS5zbwoKYWNjb3VudCAgICBy
ZXF1aXJlZAkvbGliL3NlY3VyaXR5L3BhbV91bml4LnNvCgpwYXNzd29yZCAgIHJlcXVpcmVkCS9s
aWIvc2VjdXJpdHkvcGFtX2NyYWNrbGliLnNvIHJldHJ5PTMKcGFzc3dvcmQgICBzdWZmaWNpZW50
CS9saWIvc2VjdXJpdHkvcGFtX3VuaXguc28gbnVsbG9rIG1kNSBzaGFkb3cgdXNlX2F1dGh0b2sK
cGFzc3dvcmQgICByZXF1aXJlZAkvbGliL3NlY3VyaXR5L3BhbV9kZW55LnNvCgpzZXNzaW9uICAg
IHJlcXVpcmVkCS9saWIvc2VjdXJpdHkvcGFtX2xpbWl0cy5zbwpzZXNzaW9uICAgIHJlcXVpcmVk
CS9saWIvc2VjdXJpdHkvcGFtX3VuaXguc28KCiMgSWYgeW91IHdhbnQgdG8gZW5hYmxlIHBhbV9j
b25zb2xlLCB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lCiMgYW5kIHJlYWQgY2FyZWZ1bGx5
IFJFQURNRS5wYW1fY29uc29sZSBpbiAvdXNyL3NoYXJlL2RvYy9wYW0qCiNzZXNzaW9uICAgIG9w
dGlvbmFsCS9saWIvc2VjdXJpdHkvcGFtX2NvbnNvbGUuc28K
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>81391</attachid>
            <date>2006-03-05 06:03 0000</date>
            <desc>pam_skey-1.1.3-r1.ebuild</desc>
            <filename>pam_skey-1.1.3-r1.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogJAoKaW5oZXJpdCBldXRpbHMgcGFtCgpERVNDUklQVElPTj0icGFtIGludGVy
ZmFjZSB0byBleGlzdGluZyBTL0tleSBsaWJyYXJ5L2ludGVyZmFjZSIKSE9NRVBBR0U9Imh0dHA6
Ly9mcmVzaG1lYXQubmV0L3Byb2plY3RzL3BhbV9za2V5LyIKU1JDX1VSST0iaHR0cDovL2tyZWF0
b3IuZXNhLmZlci5oci9wcm9qZWN0cy90YXJiYWxscy8ke1B9LnRhci5negoJaHR0cDovL2RjaHVy
Y2guYXRoLmN4LyR7UH0tZ2VudG9vLSR7UFJ9LnBhdGNoLmJ6MiIKTElDRU5TRT0iR1BMLTIiClNM
T1Q9IjAiCktFWVdPUkRTPSJ+eDg2IgpJVVNFPSIiCkRFUEVORD0iPj1zeXMtbGlicy9wYW0tMC43
OC1yMwoJPj1hcHAtYWRtaW4vc2tleS0xLjEuNS1yNCIKUz0ke1dPUktESVJ9LyR7UE59CgpzcmNf
dW5wYWNrKCkgewoJdW5wYWNrICR7QX0KCWNkICR7U30KCWVwYXRjaCAke1dPUktESVJ9LyR7UH0t
Z2VudG9vLSR7UFJ9LnBhdGNoCn0KCQpzcmNfY29tcGlsZSgpIHsKCWVjb25mIC0tbGliZGlyPSIv
bGliIiB8fCBkaWUgImVjb25mIGZhaWxlZCIKCWVtYWtlIHx8IGRpZSAiZW1ha2UgZmFpbGVkIgp9
CgpzcmNfaW5zdGFsbCgpIHsKCW1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgfHwgZGllCglkb2Rv
YyBSRUFETUUgSU5TVEFMTAoJbmV3cGFtZCAke0ZJTEVTRElSfS9wYW1fc2tleS1zeXN0ZW0tYXV0
aC5wYW0uZCBzeXN0ZW0tYXV0aAp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>81392</attachid>
            <date>2006-03-05 06:04 0000</date>
            <desc>files/pam_skey-system-auth.pam.d</desc>
            <filename>pam_skey-system-auth.pam.d</filename>
            <type>text/plain</type>
            <data encoding="base64">IyVQQU0tMS4wCgphdXRoICAgICAgIHJlcXVpcmVkCXBhbV9lbnYuc28KYXV0aCAgICAgICBbc3Vj
Y2Vzcz1kb25lIGlnbm9yZT1pZ25vcmUgYXV0aF9lcnI9ZGllIGRlZmF1bHQ9YmFkXSBwYW1fc2tl
eS5zbwphdXRoICAgICAgIHN1ZmZpY2llbnQJcGFtX3VuaXguc28gbGlrZWF1dGggbnVsbG9rIHRy
eV9maXJzdF9wYXNzCmF1dGggICAgICAgcmVxdWlyZWQJcGFtX2Rlbnkuc28KCmFjY291bnQgICAg
cmVxdWlyZWQJcGFtX3VuaXguc28KCnBhc3N3b3JkICAgcmVxdWlyZWQJcGFtX2NyYWNrbGliLnNv
IGRpZm9rPTIgbWlubGVuPTggZGNyZWRpdD0yIG9jcmVkaXQ9MiByZXRyeT0zCnBhc3N3b3JkICAg
c3VmZmljaWVudAlwYW1fdW5peC5zbyBudWxsb2sgbWQ1IHNoYWRvdyB1c2VfYXV0aHRvawpwYXNz
d29yZCAgIHJlcXVpcmVkCXBhbV9kZW55LnNvCgpzZXNzaW9uICAgIHJlcXVpcmVkCXBhbV9saW1p
dHMuc28Kc2Vzc2lvbiAgICByZXF1aXJlZAlwYW1fdW5peC5zbwo=
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81492</attachid>
            <date>2006-03-06 01:33 0000</date>
            <desc>pam_skey-1.1.4-gentoo.patch</desc>
            <filename>pam_skey-1.1.4-gentoo.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTnVyIHBhbV9za2V5LTEuMS40L0lOU1RBTEwgcGFtX3NrZXkvSU5TVEFMTAotLS0gcGFt
X3NrZXktMS4xLjQvSU5TVEFMTAkyMDA1LTA2LTE4IDE0OjExOjI0LjAwMDAwMDAwMCArMDIwMAor
KysgcGFtX3NrZXkvSU5TVEFMTAkyMDA2LTAzLTA2IDA5OjI2OjU1LjAwMDAwMDAwMCArMDEwMApA
QCAtMSw1ICsxLDM5IEBACiAkSWQ6IElOU1RBTEwsdiAxLjEuMS4xIDIwMDUvMDYvMTggMTI6MTE6
MjQga3JlYXRvciBFeHAgJAogCitHZW50b28gcGF0Y2gKKy0tLS0tLS0tLS0tLQorTW9zdCBldmVy
eXRoaW5nIGJlbG93IHN0aWxsIGhvbGRzLCB0aG91Z2ggdGhlIGxpYnJhcmllcyByZXF1aXJlZCBh
cmUgbm93Cit0aG9zZSB1c2VkIGJ5IEdlbnRvby4gIE90aGVyIFMvS2V5IGxpYnJhcmllcyBtYXkg
d29yayB3aXRoIGEgYml0IG9mCit0d2Vha2luZy4KKworVGhlIG9wdGlvbnMgbGlzdGVkIGZvciB0
aGUgbW9kdWxlIGJlbG93IGFyZSBubyBsb25nZXIgdmFsaWQuICBTZWUgdGhlCitHZW50b28gcGF0
Y2ggc2VjdGlvbiBpbiBSRUFETUUgZm9yIGRldGFpbHMuCisKK1RoZSBpbnRlbmRlZCBtZXRob2Qg
Zm9yIGNvbmZpZ3VyaW5nIFBBTSBpcyBieSB1c2luZyB0aGUgbmV3ZXIgbW9kdWxlCitzcGVjaWZp
Y2F0aW9uLCB3aXRoIGEgbGluZSBsaWtlOgorCithdXRoCVtzdWNjZXNzPWRvbmUgaWdub3JlPWln
bm9yZSBhdXRoX2Vycj1kaWUgZGVmYXVsdD1iYWRdIC9saWIvc2VjdXJpdHkvcGFtX3NrZXkuc28K
KworVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdGFuZGFyZCAic3VmZmljaWVudCIgYW5k
ICJyZXF1aXNpdGUiCitzcGVjaWZpY2F0aW9uczoKKworLSBJZiB0aGUgbW9kdWxlIHJldHVybnMg
UEFNX1NVQ0NFU1MsIHdlIGFyZSBhdXRoZW50aWNhdGVkIGFuZCBubyBvdGhlcgorICBtb2R1bGVz
IHNob3VsZCBiZSB0ZXN0ZWQuCistIElmIHRoZSBtb2R1bGUgcmV0dXJucyBQQU1fSUdOT1JFLCB0
aGVuIHRoZSBtb2R1bGUgZGlkbid0IGFjY2VwdCBpdHMKKyAgaW5wdXQgYXMgYW4gUy9LZXkgcmVz
cG9uc2UsIGFuZCB0aGUgbmV4dCBtb2R1bGUgc2hvdWxkIHRyeSB1c2luZworICB0aGUgaW5wdXQg
KHVzaW5nIHRoZSB0cnlfZmlyc3RfcGFzcyBvcHRpb24pLgorLSBJZiB0aGUgbW9kdWxlIHJldHVy
bnMgUEFNX0FVVEhfRVJSLCB0aGVuIHRoZSBtb2R1bGUgYWNjZXB0ZWQgYW4KKyAgUy9LZXkgaW5w
dXQgYnV0IGl0IHdhcyBpbnZhbGlkLiAgRG8gbm90IHRyeSBhbnkgbW9yZSBtb2R1bGVzIGluIHRo
ZQorICBzdGFjazsgdGhlIHVzZXIgYWxyZWFkeSBjaG9zZSBTL0tleSBhdXRoZW50aWNhdGlvbi4K
Ky0gSWYgdGhlIG1vZHVsZSByZXR1cm5zIGFueSBvdGhlciBjb2RlLCBpdCBpcyBhIHNpbXBsZSBl
cnJvciBpbiBwcm9jZXNzaW5nLgorICBTZXQgdGhlIGVycm9yIGZsYWcgYnV0IHRyeSBvdGhlciBt
b2R1bGVzLCBqdXN0IGluIGNhc2UuCisKK1RoZSBtb2R1bGUgaXMgaW50ZW5kZWQgdG8gYmUgcGxh
Y2VkIGJlZm9yZSBhbm90aGVyIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSwKK2xpa2UgcGFtX3VuaXgu
c287IGlmIG5vdCwgaXQgc2hvdWxkIGJlIHBsYWNlZCBiZWZvcmUgcGFtX2Rlbnkuc28uCisKK0lm
IHRoZSBuZXdlciBtb2R1bGUgc3BlY2lmaWNhdGlvbiBpcyB1bmF2YWlsYWJsZSBpbiB5b3VyIHZl
cnNpb24gb2YgUEFNLAordGhlICJzdWZmaWNpZW50IiBzcGVjaWZpY2F0aW9uIHdpbGwgd29yay4K
KwogUmVxdWlyZWQKIC0tLS0tLS0tCiBGb3IgYnVpbGRpbmcgdGhpcyBwYWNrYWdlIHlvdSB3aWxs
IHByb2JhYmx5IG5lZWQgb3JpZ2luYWwgV2lldHNlIFZlbmVtYSdzCmRpZmYgLU51ciBwYW1fc2tl
eS0xLjEuNC9NYWtlZmlsZS5pbiBwYW1fc2tleS9NYWtlZmlsZS5pbgotLS0gcGFtX3NrZXktMS4x
LjQvTWFrZWZpbGUuaW4JMjAwNS0wNi0xOCAxNDoxMToyNC4wMDAwMDAwMDAgKzAyMDAKKysrIHBh
bV9za2V5L01ha2VmaWxlLmluCTIwMDYtMDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAwCkBA
IC0xMiw0MiArMTIsMjYgQEAKIExJQlM9QExJQlNAIEBTS0VZTElCQCBAUEFNTElCQAogTERGTEFH
Uz1ATERGTEFHU0AKIAotSU5TVEFMTD1ASU5TVEFMTEAgLW0gNjQ0CitJTlNUQUxMPUBJTlNUQUxM
QAorSU5TVEFMTF9MSUI9JHtJTlNUQUxMfSAtbSA3NTUKIFJNPUBSTUAgLWYKIENQPUBDUEAgLWYK
IExOPUBMTkAgLXMKIEFXSz1AQVdLQAogCi1QQU1fRklMRVM9cGFtX3NrZXkuc28uMSBwYW1fc2tl
eV9hY2Nlc3Muc28uMQorUEFNX0ZJTEVTPXBhbV9za2V5LnNvCiAKIGFsbDogJChQQU1fRklMRVMp
CiAKLXBhbV9za2V5LnNvLjE6IHBhbV9za2V5Lm8KLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJDwg
JChMSUJTKSAkKExERkxBR1MpCi0KLXBhbV9za2V5X2FjY2Vzcy5zby4xOiBwYW1fc2tleV9hY2Nl
c3MubworcGFtX3NrZXkuc286IHBhbV9za2V5Lm8KIAkkKENDKSAkKENGTEFHUykgLW8gJEAgJDwg
JChMSUJTKSAkKExERkxBR1MpCiAKIGxpbnQtcGFtX3NrZXk6CiAJbGNsaW50ICQoQ0ZMQUdTKSBw
YW1fc2tleS5jCiAKLWxpbnQtcGFtX3NrZXlfYWNjZXNzOgotCWxjbGludCAkKENGTEFHUykgcGFt
X3NrZXlfYWNjZXNzLmMKLQotaW5zdGFsbDoKLQlAaWYgdGVzdCAhIC1kICQoSU5TVEFMTERJUik7
IHRoZW4gXAotCQllY2hvICJNaXNzaW5nICQoSU5TVEFMTERJUikuIFByb2JsZW0gd2l0aCBQQU0g
aW5zdGFsbGF0aW9uPyI7IFwKLQllbHNlIFwKLQkJZm9yIGZpbGUgaW4gJChQQU1fRklMRVMpOyBk
byBcCi0JCQlpZiB0ZXN0ICEgLWYgIiQoSU5TVEFMTERJUikvJCRmaWxlIjsgdGhlbiBcCi0JCQkJ
ZWNobyAiSW5zdGFsbGluZyAkJGZpbGUgaW4gJChJTlNUQUxMRElSKSI7IFwKLQkJCQkkKElOU1RB
TEwpICIkJGZpbGUiICIkKElOU1RBTExESVIpLyQkZmlsZSI7IFwKLQkJCQkoY2QgJChJTlNUQUxM
RElSKSAmJiAkKExOKSAiJCRmaWxlIiBgZWNobyAkJGZpbGUgfCBjdXQgLWQuIC1mMSwyYCk7IFwK
LQkJCWVsc2UgXAotCQkJCWVjaG8gIiQkZmlsZSBleGlzdHMgLSB3aWxsIG5vdCBvdmVyd3JpdGUg
aXQiOyBcCi0JCQlmaSBcCi0JCWRvbmUgXAotCWZpCitpbnN0YWxsOiBhbGwKKwkkKElOU1RBTEwp
IC1kICQoSU5TVEFMTERJUikKKwkkKElOU1RBTExfTElCKSAkKFBBTV9GSUxFUykgJChJTlNUQUxM
RElSKQogCiBjbGVhbjoKIAkkKFJNKSBhLm91dCBjb3JlICouc28uMSAqLm8gKi5iYWsKZGlmZiAt
TnVyIHBhbV9za2V5LTEuMS40L1JFQURNRSBwYW1fc2tleS9SRUFETUUKLS0tIHBhbV9za2V5LTEu
MS40L1JFQURNRQkyMDA1LTA2LTE4IDE0OjM2OjE4LjAwMDAwMDAwMCArMDIwMAorKysgcGFtX3Nr
ZXkvUkVBRE1FCTIwMDYtMDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAwCkBAIC0xLDUgKzEs
NzcgQEAKICRJZDogUkVBRE1FLHYgMS4yIDIwMDUvMDYvMTggMTI6MzY6MTgga3JlYXRvciBFeHAg
JAogCitHZW50b28gcGF0Y2gKKy0tLS0tLS0tLS0tLQorCitUaGUgR2VudG9vIHBhbV9za2V5IHBh
dGNoIGNoYW5nZXMgdGhlIG9yaWdpbmFsIG1vZHVsZSBpbiBhIG51bWJlciBvZiB3YXlzLgorVGhl
IGJlaGF2aW9yIG9mIHRoZSBtb2R1bGUgaXMgY2hhbmdlZCB0byBtYWtlIGl0IG1vcmUgY29uc2lz
dGVudCB3aXRoIHRoZQorUEFNIGRlc2lnbiwgYW5kIHNldmVyYWwgY2hhbmdlcyB3ZXJlIG1hZGUg
dGhyb3VnaG91dCB0aGUgY29kZSB0byBtYWtlIHRoZQorbW9kdWxlIGludGVyYWN0IGJldHRlciB3
aXRoIHRoZSBza2V5IGxpYnJhcnkgdXNlZCBieSBHZW50b28uICBNYW55IG9mCit0aGVzZSBjaGFu
Z2VzIHdpbGwgYnJlYWsgcGFtX3NrZXkncyBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgc3lzdGVt
cyBhbmQKK2xpYnJhcmllcywgYnV0IHRoaXMgaXMsIGFmdGVyIGFsbCwgdGhlIEdlbnRvbyBwYXRj
aC4KKworQSAobm90IG5lY2Vzc2FyaWx5KSBleGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGNoYW5nZXMg
aXMgYXMgZm9sbG93czoKKy0gcGFtX3NrZXlfYWNjZXNzLnNvIGlzIGNvbXBsZXRlbHkgcmVtb3Zl
ZCwgc2luY2UgdGhlIEdlbnRvbyBza2V5IGxpYnJhcnkKKyAgZG9lcyBub3Qgc3VwcG9ydCB0aGUg
c2tleV9hY2Nlc3MoKSBjYWxsLgorLSBUaGUgcGFtX3NrZXkuc28gYXV0aGVudGljYXRpb24gY29k
ZSBpcyBjb21wbGV0ZWx5IHJld3JpdHRlbi4gIFRoZQorICBvcmlnaW5hbCBjb2RlIGNvbnRhaW5l
ZCBtYW55IHJlZmVyZW5jZXMgdG8gdGhlIHN0YW5kYXJkIEkvTyBsaWJyYXJ5CisgICh3cml0aW5n
IHRvIHN0ZGVyciwgZXRjLiksIGFzIHdlbGwgYXMgaW5jb25zaXN0ZW50IGNvbW11bmljYXRpb24g
d2l0aAorICB0aGUgUEFNIGxpYnJhcmllcy4gIEFsc28sIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9j
ZXNzIGlzIGRpZmZlcmVudCwgYXMKKyAgZGVzY3JpYmVkIGJlbG93LgorLSBUaGUgb3B0aW9ucyBh
Y2NlcHRlZCBieSB0aGUgcGFtX3NrZXkuc28gbW9kdWxlIGFyZSBkaWZmZXJlbnQsIGFzCisgIGRl
c2NyaWJlZCBiZWxvdy4KKworRm91ciBvcHRpb25zIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFtX3Nr
ZXkuc28gbW9kdWxlOgorICBkZWJ1ZyAgICAgICAgICAgICAgICAgIC0gVGhpcyBvcHRpb24gdHVy
bnMgb24gZGVidWcgbG9nZ2luZy4KKyAgdHJ5X2ZpcnN0X3Bhc3MgICAgICAgICAtIFRoaXMgb3B0
aW9uIHRlbGxzIHRoZSBtb2R1bGUgdG8gZmlyc3QgdHJ5IHVzaW5nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4gcGFzc2VkIGZyb20gdGhlCisJCQkg
ICBwcmV2aW91cyBtb2R1bGUgYXMgYW4gUy9LZXkgcmVzcG9uc2UsIGJlZm9yZQorCQkJICAgaW5m
b3JtaW5nIHRoZSB1c2VyIG9mIHRoZSBjaGFsbGVuZ2UuICBJZiB0aGUKKwkJCSAgIHRva2VuIGlz
IG5vdCB2YWxpZCwgdGhlIG1vZHVsZSB3aWxsIHByb2NlZWQgd2l0aAorCQkJICAgdGhlIHN0YW5k
YXJkIHByb2Nlc3Mgb2YgY2hhbGxlbmdpbmcgdGhlIHVzZXIKKwkJCSAgIGFuZCByZXF1ZXN0aW5n
IGEgcmVzcG9uc2UsIHN1YmplY3QgdG8gdGhlCisJCQkgICBub19kZWZhdWx0X3NrZXkgb3B0aW9u
IGJlbG93LgorICB1c2VfZmlyc3RfcGFzcyAgICAgICAgIC0gVGhpcyBvcHRpb24gaXMgaWRlbnRp
Y2FsIHRvIHRoZSB0cnlfZmlyc3RfcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uLCBleGNlcHQgdGhhdCBpZiB0aGUgdG9rZW4gaXMgbm90IHZhbGlkLAorCQkJICAgaXQgd2ls
bCByZXR1cm4gc2lsZW50bHkgd2l0aG91dCBjaGFsbGVuZ2luZyB0aGUKKwkJCSAgIHVzZXIuCisg
IG5vX2RlZmF1bHRfc2tleSAgICAgICAgLSBUaGlzIGZsYWcgY2hhbmdlcyB0aGUgYmVoYXZpb3Ig
b2YgcGFtX3NrZXkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIGltbWVk
aWF0ZWx5IGNoYWxsZW5naW5nIHRoZSB1c2VyIHdpdGgKKwkJCSAgIGFuIFMvS2V5IGNoYWxsZW5n
ZSwgaXQgd2lsbCBwcmVzZW50IHRoZSB1c2VyIHdpdGgKKwkJCSAgIGEgc3RhbmRhcmQgIlBhc3N3
b3JkOiAiIHByb21wdC4gIElmIHRoZSB1c2VyIGVudGVycworCQkJICAgdGhlIHBhc3N3b3JkICJz
L2tleSIgKGNhc2UgaW5zZW5zaXRpdmUpLCBpdCB3aWxsCisJCQkgICB0aGVuIGNoYWxsZW5nZSB0
aGUgdXNlci4gIEFueSBvdGhlciBpbnB1dCB3aWxsCisJCQkgICBjYXVzZSB0aGUgbW9kdWxlIHRv
IHBhc3MgdGhlIGdpdmVuIHBhc3N3b3JkIHRvIHRoZQorCQkJICAgbmV4dCBtb2R1bGUgaW4gdGhl
IGF1dGhlbnRpY2F0aW9uIHN0YWNrICh1c3VhbGx5CisJCQkgICBwYW1fdW5peC5zbyB3aXRoIHRo
ZSB0cnlfZmlyc3RfcGFzcyBvcHRpb24pLgorCitUaGUgZXhhY3QgYmVoYXZpb3Igb2YgcGFtX3Nr
ZXkuc28gaXMgZGV0YWlsZWQgYmVsb3c6CisKKzEuIFJldHJpZXZlIHVzZXJuYW1lIGZyb20gUEFN
LCBwb3NzaWJseSBxdWVyeWluZyB0aGUgdXNlciBmb3IgaXQuCisyLiBJZiB0aGUgdXNlciBkb2Vz
IG5vdCBoYXZlIGFueSBTL0tleSBpbmZvcm1hdGlvbiwgcmV0dXJuIFBBTV9JR05PUkUgdG8KKyAg
IHByb2NlZWQgdG8gdGhlIG5leHQgbW9kdWxlIGluIHRoZSBzdGFjay4KKzMuIElmICpfZmlyc3Rf
cGFzcyBpcyBlbmFibGVkLCBjaGVjayB0aGUgZ2l2ZW4gYXV0aGVudGljYXRpb24gdG9rZW4gdG8g
c2VlCisgICBpZiBpdCBpcyBhIHZhbGlkIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50IFMvS2V5IGNo
YWxsZW5nZS4gIElmIHNvLAorICAgcmV0dXJuIFBBTV9TVUNDRVNTLgorIDNhLiBJZiB0aGUgdG9r
ZW4gaXMgaW52YWxpZCBhbmQgdXNlX2ZpcnN0X3Bhc3MgaXMgZW5hYmxlZCwgcmV0dXJuCisgICAg
IFBBTV9JR05PUkUuCis0LiBJZiBub19kZWZhdWx0X3NrZXkgaXMgZW5hYmxlZCwgaXNzdWUgYSAi
UGFzc3dvcmQ6ICIgcHJvbXB0LgorIDRhLiBJZiB0aGUgcmVzcG9uc2UgaXMgYW55dGhpbmcgYmVz
aWRlcyAicy9rZXkiIChjYXNlIGluc2Vuc2l0aXZlKSwKKyAgICAgc3RvcmUgaXQgYXMgdGhlIGF1
dGhlbnRpY2F0aW9uIHRva2VuIGFuZCByZXR1cm4gUEFNX0lHTk9SRS4KKzUuIERpc3BsYXkgdGhl
IGN1cnJlbnQgUy9LZXkgY2hhbGxlbmdlIGFuZCByZXF1ZXN0IGEgcmVzcG9uc2UsIHdpdGgKKyAg
IGlucHV0IG5vdCBlY2hvZWQuICBJZiBub19kZWZhdWx0X3NrZXkgaXMgZW5hYmxlZCwgdGhpcyB3
aWxsIG9ubHkgYmUKKyAgIGFuIFMvS2V5IHJlc3BvbnNlIHJlcXVlc3Q7IG90aGVyd2lzZSwgaXQg
d2lsbCByZXF1ZXN0IGVpdGhlciBhbgorICAgUy9LZXkgcmVzcG9uc2Ugb3IgYSBzeXN0ZW0gcGFz
c3N3b3JkLgorIDVhLiBJZiBhbiBlbXB0eSByZXNwb25zZSBpcyBnaXZlbiwgcmVxdWVzdCB0aGUg
Uy9LZXkgcmVzcG9uc2UgYWdhaW4sCisgICAgIHRoaXMgdGltZSB3aXRoIGlucHV0IGVjaG9lZC4K
KyA1Yi4gSWYgdGhlIHJlc3BvbnNlIGlzIGEgdmFsaWQgUy9LZXkgcmVzcG9uc2UsIHJldHVybiBQ
QU1fU1VDQ0VTUy4KKyAgICAgT3RoZXJ3aXNlLCByZXR1cm4gUEFNX0FVVEhFUlIuCis2LiBJZiB0
aGUgcmVzcG9uc2UgaXMgYSB2YWxpZCBTL0tleSByZXNwb25zZSwgcmV0dXJuIFBBTV9TVUNDRVNT
LgorNy4gT3RoZXJ3aXNlLCBpZiBub19kZWZhdWx0X3NrZXkgaXMgZW5hYmxlZCAodGhlIHVzZXIg
c3BlY2lmaWNhbGx5CisgICByZXF1ZXN0ZWQgInMva2V5IiBhdXRoZW50aWNhdGlvbiksIHJldHVy
biBQQU1fQVVUSEVSUi4KKzguIE90aGVyd2lzZSwgc3RvcmUgdGhlIHJlc3BvbnNlIGFzIHRoZSBh
dXRoZW50aWNhdGlvbiB0b2tlbiBhbmQKKyAgIHJldHVybiBQQU1fSUdOT1JFLgorCiBBYm91dAog
LS0tLS0KIFRoaXMgaXMgY29tcGxldGUgcGFtX3NrZXkgbW9kdWwgYXMgaW50ZXJmYWNlIHRvIGV4
aXN0aW5nIFMvS2V5CmRpZmYgLU51ciBwYW1fc2tleS0xLjEuNC9SRUxFQVNFTk9URVMgcGFtX3Nr
ZXkvUkVMRUFTRU5PVEVTCi0tLSBwYW1fc2tleS0xLjEuNC9SRUxFQVNFTk9URVMJMjAwNS0wNi0x
OCAxNDozNjoxOC4wMDAwMDAwMDAgKzAyMDAKKysrIHBhbV9za2V5L1JFTEVBU0VOT1RFUwkyMDA2
LTAzLTA2IDA5OjI2OjU1LjAwMDAwMDAwMCArMDEwMApAQCAtMSw1ICsxLDggQEAKIFJFTEVBU0Ug
MS4xLjQgLSBTYXQgSnVuIDE4IDE0OjI4OjMxIENFU1QgMjAwNQogCi0qIGZpeCBmb3IgX3BhbV9k
ZWxldGUoKSBpZiB3ZSBnb3QgQVVUSFRPSworKiBtaXNjIGNoYW5nZXMgaW4gc291cmNlCisqIEZy
ZWVCU0QgdGVzdGluZworKiBhZGQgc3VwcG9ydCBmb3IgWXVyaSBZdWRpbidzIFMvS2V5IGxpYnJh
cnkgKHBvcnQgZnJvbSBPcGVuQlNEKQorKiBmaXhlZCBkbG9wZW4oKSBpc3N1ZSBmb3IgU29sYXJp
cyAoYXBwZWFyaW5nIGluIHByb2Z0cGQgc3VpdGUpCiAKIC0gRGlua28gS29ydW5pYyA8a3JlYXRv
ckBzcmNlLmhyPgpkaWZmIC1OdXIgcGFtX3NrZXktMS4xLjQvYXV0b2NvbmYvYWNjb25maWcuaCBw
YW1fc2tleS9hdXRvY29uZi9hY2NvbmZpZy5oCi0tLSBwYW1fc2tleS0xLjEuNC9hdXRvY29uZi9h
Y2NvbmZpZy5oCTIwMDUtMDYtMTggMTQ6MTE6MjQuMDAwMDAwMDAwICswMjAwCisrKyBwYW1fc2tl
eS9hdXRvY29uZi9hY2NvbmZpZy5oCTIwMDYtMDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAw
CkBAIC0xLDE3ICsxLDIgQEAKIC8qIERlZmluZSBpZiB3ZSBjYW4gaW5jbHVkZSBib3RoIHN0cmlu
Zy5oIGFuZCBzdHJpbmdzLmggKi8KICN1bmRlZiBTVFJJTkdfV0lUSF9TVFJJTkdTCi0KLS8qIERl
ZmluZSBpZiB5b3UgaGF2ZSBMaW51eCAqLwotI3VuZGVmIExJTlVYCi0KLS8qIERlZmluZSBpZiB5
b3UgaGF2ZSAqQlNEICovCi0jdW5kZWYgQlNECi0KLS8qIERlZmluZSBpZiBub3QgbWlzc2luZyBz
a2V5YWNjZXNzKCkgKi8KLSN1bmRlZiBIQVZFX1NLRVlBQ0NFU1MKLQotLyogRGVmaW5lIGlmIG5v
dCBtaXNzaW5nIHNrZXlpbmZvKCkgKi8KLSN1bmRlZiBIQVZFX1NLRVlJTkZPCi0KLS8qIERlZmlu
ZSBpZiB5b3UgaGF2ZSBza2V5bG9va3VwKCkgaW5zdGVhZCBvZiBza2V5aW5mbygpICovCi0jdW5k
ZWYgSEFWRV9TS0VZTE9PS1VQCmRpZmYgLU51ciBwYW1fc2tleS0xLjEuNC9hdXRvY29uZi9jb25m
aWd1cmUuaW4gcGFtX3NrZXkvYXV0b2NvbmYvY29uZmlndXJlLmluCi0tLSBwYW1fc2tleS0xLjEu
NC9hdXRvY29uZi9jb25maWd1cmUuaW4JMjAwNS0wNi0xOCAxNDoxMToyNC4wMDAwMDAwMDAgKzAy
MDAKKysrIHBhbV9za2V5L2F1dG9jb25mL2NvbmZpZ3VyZS5pbgkyMDA2LTAzLTA2IDA5OjI2OjU1
LjAwMDAwMDAwMCArMDEwMApAQCAtMTAsMjEgKzEwLDkgQEAKIEFDX0xBTkdfQwogQUNfTEFOR19T
QVZFCiAKLWRubCBHZXQgc3lzdGVtIHR5cGUKLUFDX0NBTk9OSUNBTF9IT1NUCi1NWUhPU1Q9JGhv
c3Rfb3MKLWNhc2UgIiRob3N0X29zIiBpbgotKmxpbnV4KikKLSAgQUNfREVGSU5FKExJTlVYKQot
ICA7OwotKmJzZCopCi0gIEFDX0RFRklORShCU0QpCi0gIDs7Ci1lc2FjCi0KIGRubCBQYWNrYWdl
IGluZm9ybWF0aW9uCiBQQUNLQUdFPXBhbV9za2V5Ci1WRVJTSU9OPTEuMQorVkVSU0lPTj0xLjRy
MQogCiBkbmwgU3RhbmRhcmQgaW5zdGFsbGF0aW9uIHBhdGgKIEFDX1BSRUZJWF9ERUZBVUxUKC91
c3IpCkBAIC02NSwxMyArNTMsOSBAQAogQUNfQVJHX1dJVEgoc2tleS1pbmMsIFsgIC0td2l0aC1z
a2V5LWluYz1ESVIgICAgIERpcmVjdG9yeSBjb250YWluaW5nIHNrZXkgaW5jbHVkZSBmaWxlc10s
IENGTEFHUz0iJHtDRkxBR1N9IC1JJHt3aXRodmFsfSIpCiAKIGRubCBDaGVjayBmb3Igc2tleSBs
aWJyYXJ5Ci1BQ19DSEVDS19MSUIoc29ja2V0LCBzb2NrZXQpCi1BQ19DSEVDS19MSUIobnNsLCBn
ZXRob3N0YnluYW1lKQorQUNfQ0hFQ0tfTElCKHNvY2tldCwgc29ja2V0LCBMSUJTPSIke0xJQlN9
IC1sc29ja2V0IikKK0FDX0NIRUNLX0xJQihuc2wsIGdldGhvc3RieW5hbWUsIExJQlM9IiR7TElC
U30gLWxuc2wiKQogQUNfQ0hFQ0tfTElCKHNrZXksIHNrZXl2ZXJpZnksIFNLRVlMSUI9Ii1sc2tl
eSIsIEFDX01TR19FUlJPUihza2V5IGxpYnJhcnkgbm90IGZvdW5kIG9yIHVua25vd24gaW50ZXJm
YWNlKSkKLUFDX0NIRUNLX0xJQihza2V5LCBza2V5YWNjZXNzLCBBQ19ERUZJTkUoSEFWRV9TS0VZ
QUNDRVNTKSkKLUFDX0NIRUNLX0xJQihza2V5LCBza2V5aW5mbywgQUNfREVGSU5FKEhBVkVfU0tF
WUlORk8pLAotICBBQ19DSEVDS19MSUIoc2tleSwgc2tleWxvb2t1cCwgQUNfREVGSU5FKEhBVkVf
U0tFWUxPT0tVUCkpCi0pCiAKIGRubCBDaGVjayBhZ2FpbnN0IC1HIGxpbmtlciBmbGFnCiBob2xk
X2xkZmxhZ3M9JExERkxBR1MKZGlmZiAtTnVyIHBhbV9za2V5LTEuMS40L2NvbmZpZ3VyZSBwYW1f
c2tleS9jb25maWd1cmUKLS0tIHBhbV9za2V5LTEuMS40L2NvbmZpZ3VyZQkyMDA1LTA2LTE4IDE0
OjM2OjE4LjAwMDAwMDAwMCArMDIwMAorKysgcGFtX3NrZXkvY29uZmlndXJlCTIwMDYtMDMtMDYg
MDk6Mjc6NDEuMDAwMDAwMDAwICswMTAwCkBAIC0zMTAsNyArMzEwLDcgQEAKICMgaW5jbHVkZSA8
dW5pc3RkLmg+CiAjZW5kaWYiCiAKLWFjX3N1YnN0X3ZhcnM9J1NIRUxMIFBBVEhfU0VQQVJBVE9S
IFBBQ0tBR0VfTkFNRSBQQUNLQUdFX1RBUk5BTUUgUEFDS0FHRV9WRVJTSU9OIFBBQ0tBR0VfU1RS
SU5HIFBBQ0tBR0VfQlVHUkVQT1JUIGV4ZWNfcHJlZml4IHByZWZpeCBwcm9ncmFtX3RyYW5zZm9y
bV9uYW1lIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJl
ZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgbGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBp
bmZvZGlyIG1hbmRpciBidWlsZF9hbGlhcyBob3N0X2FsaWFzIHRhcmdldF9hbGlhcyBERUZTIEVD
SE9fQyBFQ0hPX04gRUNIT19UIExJQlMgYnVpbGQgYnVpbGRfY3B1IGJ1aWxkX3ZlbmRvciBidWls
ZF9vcyBob3N0IGhvc3RfY3B1IGhvc3RfdmVuZG9yIGhvc3Rfb3MgQ0MgQ0ZMQUdTIExERkxBR1Mg
Q1BQRkxBR1MgYWNfY3RfQ0MgRVhFRVhUIE9CSkVYVCBTRVRfTUFLRSBSTSBMTiBDUCBBV0sgSU5T
VEFMTF9QUk9HUkFNIElOU1RBTExfU0NSSVBUIElOU1RBTExfREFUQSBDUFAgRUdSRVAgU0tFWUxJ
QiBQQU1MSUIgTVlIT1NUIFBBQ0tBR0UgVkVSU0lPTiBMSUJPQkpTIExUTElCT0JKUycKK2FjX3N1
YnN0X3ZhcnM9J1NIRUxMIFBBVEhfU0VQQVJBVE9SIFBBQ0tBR0VfTkFNRSBQQUNLQUdFX1RBUk5B
TUUgUEFDS0FHRV9WRVJTSU9OIFBBQ0tBR0VfU1RSSU5HIFBBQ0tBR0VfQlVHUkVQT1JUIGV4ZWNf
cHJlZml4IHByZWZpeCBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIGJpbmRpciBzYmluZGlyIGxpYmV4
ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgbGli
ZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBpbmZvZGlyIG1hbmRpciBidWlsZF9hbGlhcyBo
b3N0X2FsaWFzIHRhcmdldF9hbGlhcyBERUZTIEVDSE9fQyBFQ0hPX04gRUNIT19UIExJQlMgQ0Mg
Q0ZMQUdTIExERkxBR1MgQ1BQRkxBR1MgYWNfY3RfQ0MgRVhFRVhUIE9CSkVYVCBTRVRfTUFLRSBS
TSBMTiBDUCBBV0sgSU5TVEFMTF9QUk9HUkFNIElOU1RBTExfU0NSSVBUIElOU1RBTExfREFUQSBD
UFAgRUdSRVAgU0tFWUxJQiBQQU1MSUIgTVlIT1NUIFBBQ0tBR0UgVkVSU0lPTiBMSUJPQkpTIExU
TElCT0JKUycKIGFjX3N1YnN0X2ZpbGVzPScnCiAKICMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxl
cyBzZXQgYnkgb3B0aW9ucy4KQEAgLTcyMCwxMyArNzIwLDEzIEBACiAgIAkgIC9eWFwoXC9cKS4q
L3sgcy8vXDEvOyBxOyB9CiAgIAkgIHMvLiovLi87IHEnYAogICBzcmNkaXI9JGFjX2NvbmZkaXIK
LSAgaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlOyB0aGVuCisgIGlmIHRlc3Qg
ISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCiAgICAgc3JjZGlyPS4uCiAgIGZp
CiBlbHNlCiAgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8KIGZpCi1pZiB0ZXN0ICEgLXIgJHNyY2Rp
ci8kYWNfdW5pcXVlX2ZpbGU7IHRoZW4KK2lmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVl
X2ZpbGUiOyB0aGVuCiAgIGlmIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHllczsgdGhl
bgogICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3Vu
aXF1ZV9maWxlKSBpbiAkYWNfY29uZmRpciBvciAuLiIgPiYyCiAgICB7IChleGl0IDEpOyBleGl0
IDE7IH07IH0KQEAgLTczNSw3ICs3MzUsNyBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9
CiAgIGZpCiBmaQotKGNkICRzcmNkaXIgJiYgdGVzdCAtciAuLyRhY191bmlxdWVfZmlsZSkgMj4v
ZGV2L251bGwgfHwKKyhjZCAkc3JjZGlyICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIikg
Mj4vZGV2L251bGwgfHwKICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBzb3VyY2VzIGFyZSBpbiAk
c3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIiA+JjIKICAgIHsgKGV4aXQg
MSk7IGV4aXQgMTsgfTsgfQogc3JjZGlyPWBlY2hvICIkc3JjZGlyIiB8IHNlZCAncyVcKFteXFwv
XVwpW1xcL10qJCVcMSUnYApAQCAtODMxLDEwICs4MzEsNiBAQAogX0FDRU9GCiAKICAgY2F0IDw8
XF9BQ0VPRgotCi1TeXN0ZW0gdHlwZXM6Ci0gIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBm
b3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCi0gIC0taG9zdD1IT1NUICAgICAgIGNyb3Nz
LWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQogX0FDRU9G
CiBmaQogCkBAIC05NDgsNyArOTQ0LDcgQEAKICAgICBlbHNlCiAgICAgICBlY2hvICIkYXNfbWU6
IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYy
CiAgICAgZmkKLSAgICBjZCAiJGFjX3BvcGRpciIKKyAgICBjZCAkYWNfcG9wZGlyCiAgIGRvbmUK
IGZpCiAKQEAgLTEzMzMsNzggKzEzMjksOCBAQAogCiAKIAotIyBNYWtlIHN1cmUgd2UgY2FuIHJ1
biBjb25maWcuc3ViLgotJGFjX2NvbmZpZ19zdWIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKLSAg
eyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1
YiIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdfc3ViIiA+
JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0KLWVjaG8gIiRhc19tZTokTElORU5P
OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5n
IGJ1aWxkIHN5c3RlbSB0eXBlLi4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9idWls
ZCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4m
NgotZWxzZQotICBhY19jdl9idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKLXRlc3QgLXogIiRhY19j
dl9idWlsZF9hbGlhcyIgJiYKLSAgYWNfY3ZfYnVpbGRfYWxpYXM9YCRhY19jb25maWdfZ3Vlc3Ng
Ci10ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCi0gIHsgeyBlY2hvICIkYXNfbWU6JExJ
TkVOTzogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9u
ZSIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91
IG11c3Qgc3BlY2lmeSBvbmUiID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLWFj
X2N2X2J1aWxkPWAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfYnVpbGRfYWxpYXNgIHx8Ci0gIHsgeyBl
Y2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9h
bGlhcyBmYWlsZWQiID4mNQotZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFj
X2N2X2J1aWxkX2FsaWFzIGZhaWxlZCIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsg
fQotCi1maQotZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUK
LWVjaG8gIiR7RUNIT19UfSRhY19jdl9idWlsZCIgPiY2Ci1idWlsZD0kYWNfY3ZfYnVpbGQKLWJ1
aWxkX2NwdT1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCkt
XCguKlwpJC9cMS8nYAotYnVpbGRfdmVuZG9yPWBlY2hvICRhY19jdl9idWlsZCB8IHNlZCAncy9e
XChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi1idWlsZF9vcz1gZWNobyAkYWNfY3Zf
YnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotCi0KLWVj
aG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKLWVjaG8g
JEVDSE9fTiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAkRUNIT19DIiA+JjYKLWlmIHRl
c3QgIiR7YWNfY3ZfaG9zdCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNo
ZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBhY19jdl9ob3N0X2FsaWFzPSRob3N0X2FsaWFzCi10
ZXN0IC16ICIkYWNfY3ZfaG9zdF9hbGlhcyIgJiYKLSAgYWNfY3ZfaG9zdF9hbGlhcz0kYWNfY3Zf
YnVpbGRfYWxpYXMKLWFjX2N2X2hvc3Q9YCRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFz
YCB8fAotICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAkYWNfY29uZmlnX3N1YiAk
YWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mNQotZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2Nv
bmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXMgZmFpbGVkIiA+JjI7fQotICAgeyAoZXhpdCAxKTsg
ZXhpdCAxOyB9OyB9Ci0KLWZpCi1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3Zf
aG9zdCIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaG9zdCIgPiY2Ci1ob3N0PSRhY19jdl9o
b3N0Ci1ob3N0X2NwdT1gZWNobyAkYWNfY3ZfaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14t
XSpcKS1cKC4qXCkkL1wxLydgCi1ob3N0X3ZlbmRvcj1gZWNobyAkYWNfY3ZfaG9zdCB8IHNlZCAn
cy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi1ob3N0X29zPWBlY2hvICRhY19j
dl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLQotCi1N
WUhPU1Q9JGhvc3Rfb3MKLWNhc2UgIiRob3N0X29zIiBpbgotKmxpbnV4KikKLSAgY2F0ID4+Y29u
ZmRlZnMuaCA8PFxfQUNFT0YKLSNkZWZpbmUgTElOVVggMQotX0FDRU9GCi0KLSAgOzsKLSpic2Qq
KQotICBjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotI2RlZmluZSBCU0QgMQotX0FDRU9GCi0K
LSAgOzsKLWVzYWMKLQogUEFDS0FHRT1wYW1fc2tleQotVkVSU0lPTj0xLjEKK1ZFUlNJT049MS40
cjEKIAogCiAKQEAgLTE5NzYsNyArMTkwMiw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAg
IGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFj
X3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJ
CSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nf
d2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBl
Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkg
Mj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTIwMzQsNyArMTk2MSw4IEBACiAgIGNhdCBjb25mdGVz
dC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK
ICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dl
cnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVz
dCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicK
ICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2
YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTIxNTAsNyArMjA3OCw4IEBACiAg
IGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf
c3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3Qg
LXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7
IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNv
bmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIi
KSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTIyMDQsNyAr
MjEzMyw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5P
OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBh
Y190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRl
c3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwg
dGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog
XCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8K
QEAgLTIyNDksNyArMjE3OSw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRh
c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7
IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0
ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2Zs
YWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNf
bWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBh
Y19zdGF0dXM9JD8KQEAgLTIyOTMsNyArMjIyNCw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1
CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQg
JGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFn
IgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFj
X2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZh
bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3Ry
eSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTI4ODEsNyArMjgxMyw4IEBACiAgIGNhdCBjb25m
dGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19j
X3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0n
dGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVy
cicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAg
KGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTMwNTEsNyArMjk4NCw4IEBA
CiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk
YWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rl
c3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwor
CSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1z
IGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5
XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTMxMjQs
NyArMzA1OCw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElO
RU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkg
eyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29u
ZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkg
fHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVO
TzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9
JD8KQEAgLTMyNzgsNyArMzIxMyw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8g
IiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1
cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0
ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9y
X2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIk
YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQog
ICBhY19zdGF0dXM9JD8KQEAgLTM0MzEsNyArMzM2Nyw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIg
PiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4
aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9m
bGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAi
JGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAo
ZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFj
X3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTM1MzMsNyArMzQ3MCw4IEBACiAgIGNhdCBj
b25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz
IiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRh
Y19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3Ry
eT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0
LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUK
ICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTM1ODMsNyArMzUyMSw2
IEBACiAgIENGTEFHUz0iJHtDRkxBR1N9IC1JJHt3aXRodmFsfSIKIGZpOwogCi0KIGVjaG8gIiRh
c19tZTokTElORU5POiBjaGVja2luZyBmb3Igc29ja2V0IGluIC1sc29ja2V0IiA+JjUKIGVjaG8g
JEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNvY2tldCBpbiAtbHNvY2tldC4uLiAkRUNIT19DIiA+JjYK
IGlmIHRlc3QgIiR7YWNfY3ZfbGliX3NvY2tldF9zb2NrZXQrc2V0fSIgPSBzZXQ7IHRoZW4KQEAg
LTM2MjIsNyArMzU1OSw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19t
ZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0g
JiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEg
LXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWci
CisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6
JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19z
dGF0dXM9JD8KQEAgLTM2NDgsMTUgKzM1ODYsOSBAQAogZWNobyAiJGFzX21lOiRMSU5FTk86IHJl
c3VsdDogJGFjX2N2X2xpYl9zb2NrZXRfc29ja2V0IiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19j
dl9saWJfc29ja2V0X3NvY2tldCIgPiY2CiBpZiB0ZXN0ICRhY19jdl9saWJfc29ja2V0X3NvY2tl
dCA9IHllczsgdGhlbgotICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhBVkVf
TElCU09DS0VUIDEKLV9BQ0VPRgotCi0gIExJQlM9Ii1sc29ja2V0ICRMSUJTIgotCisgIExJQlM9
IiR7TElCU30gLWxzb2NrZXQiCiBmaQogCi0KIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2lu
ZyBmb3IgZ2V0aG9zdGJ5bmFtZSBpbiAtbG5zbCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5n
IGZvciBnZXRob3N0YnluYW1lIGluIC1sbnNsLi4uICRFQ0hPX0MiID4mNgogaWYgdGVzdCAiJHth
Y19jdl9saWJfbnNsX2dldGhvc3RieW5hbWUrc2V0fSIgPSBzZXQ7IHRoZW4KQEAgLTM2OTUsNyAr
MzYyNyw4IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5P
OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBh
Y190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRl
c3QuZXJyJworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwg
dGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog
XCIkYWNfdHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8K
QEAgLTM3MjEsMTIgKzM2NTQsNyBAQAogZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFj
X2N2X2xpYl9uc2xfZ2V0aG9zdGJ5bmFtZSIgPiY1CiBlY2hvICIke0VDSE9fVH0kYWNfY3ZfbGli
X25zbF9nZXRob3N0YnluYW1lIiA+JjYKIGlmIHRlc3QgJGFjX2N2X2xpYl9uc2xfZ2V0aG9zdGJ5
bmFtZSA9IHllczsgdGhlbgotICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhB
VkVfTElCTlNMIDEKLV9BQ0VPRgotCi0gIExJQlM9Ii1sbnNsICRMSUJTIgotCisgIExJQlM9IiR7
TElCU30gLWxuc2wiCiBmaQogCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHNr
ZXl2ZXJpZnkgaW4gLWxza2V5IiA+JjUKQEAgLTM3NjcsNyArMzY5NSw4IEBACiAgIGNhdCBjb25m
dGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19j
X3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3RyeT0n
dGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVy
cicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKICAg
KGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTM4MDAsMjE4ICszNzI5LDYg
QEAKICAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQogZmkKIAotZWNobyAiJGFzX21lOiRMSU5F
Tk86IGNoZWNraW5nIGZvciBza2V5YWNjZXNzIGluIC1sc2tleSIgPiY1Ci1lY2hvICRFQ0hPX04g
ImNoZWNraW5nIGZvciBza2V5YWNjZXNzIGluIC1sc2tleS4uLiAkRUNIT19DIiA+JjYKLWlmIHRl
c3QgIiR7YWNfY3ZfbGliX3NrZXlfc2tleWFjY2VzcytzZXR9IiA9IHNldDsgdGhlbgotICBlY2hv
ICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2
ZV9MSUJTPSRMSUJTCi1MSUJTPSItbHNrZXkgICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0
IDw8X0FDRU9GCi0vKiBjb25mZGVmcy5oLiAgKi8KLV9BQ0VPRgotY2F0IGNvbmZkZWZzLmggPj5j
b25mdGVzdC4kYWNfZXh0Ci1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0vKiBlbmQg
Y29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlw
ZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIK
LSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVy
biB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90
eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIgc2tleWFjY2VzcyAoKTsKLWludAotbWFp
biAoKQotewotc2tleWFjY2VzcyAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0g
LWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNo
byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykg
Mj5jb25mdGVzdC5lcjEKLSAgYWNfc3RhdHVzPSQ/Ci0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0
LmVyMSA+Y29uZnRlc3QuZXJyCi0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotICBjYXQgY29uZnRlc3Qu
ZXJyID4mNQotICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0g
IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJy
b3JfZmxhZyIJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKLSAgeyAoZXZhbCBlY2hvICIk
YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQot
ICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi
ID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAtcyBj
b25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFj
X3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVj
aG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0
YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfbGliX3NrZXlfc2tleWFjY2Vzcz15ZXMKLWVsc2UK
LSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLXNlZCAncy9eL3wgLycg
Y29uZnRlc3QuJGFjX2V4dCA+JjUKLQotYWNfY3ZfbGliX3NrZXlfc2tleWFjY2Vzcz1ubwotZmkK
LXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgIGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJT
Ci1maQotZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2xpYl9za2V5X3NrZXlh
Y2Nlc3MiID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9za2V5X3NrZXlhY2Nlc3MiID4m
NgotaWYgdGVzdCAkYWNfY3ZfbGliX3NrZXlfc2tleWFjY2VzcyA9IHllczsgdGhlbgotICBjYXQg
Pj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotI2RlZmluZSBIQVZFX1NLRVlBQ0NFU1MgMQotX0FDRU9G
Ci0KLWZpCi0KLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc2tleWluZm8gaW4g
LWxza2V5IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNrZXlpbmZvIGluIC1sc2tl
eS4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfbGliX3NrZXlfc2tleWluZm8rc2V0
fSIgPSBzZXQ7IHRoZW4KLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLWVs
c2UKLSAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwotTElCUz0iLWxza2V5ICAkTElCUyIK
LWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLyogY29uZmRlZnMuaC4gICovCi1fQUNF
T0YKLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotY2F0ID4+Y29uZnRlc3QuJGFj
X2V4dCA8PF9BQ0VPRgotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0vKiBPdmVycmlkZSBhbnkg
Z2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotI2lmZGVmIF9f
Y3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLS8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50
IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLSAgIGJ1aWx0aW4gYW5kIHRo
ZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi1jaGFyIHNr
ZXlpbmZvICgpOwotaW50Ci1tYWluICgpCi17Ci1za2V5aW5mbyAoKTsKLSAgOwotICByZXR1cm4g
MDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVl
eHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQot
ICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKLSAgYWNfc3RhdHVzPSQ/Ci0gIGdyZXAg
LXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0gIHJtIC1mIGNvbmZ0ZXN0LmVy
MQotICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0g
JGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0JIHsgYWNfdHJ5PSd0
ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicK
LSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2
YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOiRMSU5FTk86
IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgotCSB7
IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0gIHsgKGV2YWwgZWNobyAiJGFz
X21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFsICRhY190cnkpIDI+JjUKLSAg
YWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAgYWNfY3ZfbGliX3NrZXlfc2tl
eWluZm89eWVzCi1lbHNlCi0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1
Ci1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLWFjX2N2X2xpYl9za2V5X3Nr
ZXlpbmZvPW5vCi1maQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAot
ICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNr
X2xpYl9zYXZlX0xJQlMKLWZpCi1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3Zf
bGliX3NrZXlfc2tleWluZm8iID4mNQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2xpYl9za2V5X3Nr
ZXlpbmZvIiA+JjYKLWlmIHRlc3QgJGFjX2N2X2xpYl9za2V5X3NrZXlpbmZvID0geWVzOyB0aGVu
Ci0gIGNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCi0jZGVmaW5lIEhBVkVfU0tFWUlORk8gMQot
X0FDRU9GCi0KLWVsc2UKLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBza2V5
bG9va3VwIGluIC1sc2tleSIgPiY1Ci1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBza2V5bG9v
a3VwIGluIC1sc2tleS4uLiAkRUNIT19DIiA+JjYKLWlmIHRlc3QgIiR7YWNfY3ZfbGliX3NrZXlf
c2tleWxvb2t1cCtzZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRF
Q0hPX0MiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSIt
bHNrZXkgICRMSUJTIgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0vKiBjb25mZGVm
cy5oLiAgKi8KLV9BQ0VPRgotY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci1jYXQg
Pj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8q
IE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4g
ICovCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNo
YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAg
YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5
LiAgKi8KLWNoYXIgc2tleWxvb2t1cCAoKTsKLWludAotbWFpbiAoKQotewotc2tleWxvb2t1cCAo
KTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotcm0gLWYgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdCRhY19leGVleHQKLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwi
JGFjX2xpbmtcIiIpID4mNQotICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKLSAgYWNf
c3RhdHVzPSQ/Ci0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0g
IHJtIC1mIGNvbmZ0ZXN0LmVyMQotICBjYXQgY29uZnRlc3QuZXJyID4mNQotICBlY2hvICIkYXNf
bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9
ICYmCi0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIJCQkgfHwgdGVzdCAh
IC1zIGNvbmZ0ZXN0LmVycicKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNf
dHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNo
byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3Rh
dHVzKTsgfTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQnCi0g
IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0gIChldmFs
ICRhY190cnkpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gIGVjaG8gIiRhc19tZTokTElORU5POiBc
JD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSAg
YWNfY3ZfbGliX3NrZXlfc2tleWxvb2t1cD15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK
LQotYWNfY3ZfbGliX3NrZXlfc2tleWxvb2t1cD1ubwotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBj
b25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k
YWNfZXh0Ci1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCi1maQotZWNobyAiJGFzX21lOiRM
SU5FTk86IHJlc3VsdDogJGFjX2N2X2xpYl9za2V5X3NrZXlsb29rdXAiID4mNQotZWNobyAiJHtF
Q0hPX1R9JGFjX2N2X2xpYl9za2V5X3NrZXlsb29rdXAiID4mNgotaWYgdGVzdCAkYWNfY3ZfbGli
X3NrZXlfc2tleWxvb2t1cCA9IHllczsgdGhlbgotICBjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VP
RgotI2RlZmluZSBIQVZFX1NLRVlMT09LVVAgMQotX0FDRU9GCi0KLWZpCi0KLQotZmkKLQogCiBo
b2xkX2xkZmxhZ3M9JExERkxBR1MKIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Ig
dGhlIGxkIC1zaGFyZWQgZmxhZyIgPiY1CkBAIC00MDQxLDcgKzM3NTgsOCBAQAogICBjYXQgY29u
ZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIg
PiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNf
Y193ZXJyb3JfZmxhZyIJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKwkgeyBhY190cnk9
J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5l
cnInCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CiAg
IChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC00MDk5LDcgKzM4MTcsOCBA
QAogICBjYXQgY29uZnRlc3QuZXJyID4mNQogICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0g
JGFjX3N0YXR1cyIgPiY1CiAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0JIHsgYWNfdHJ5PSd0
ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicK
KwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgorCQkJIHx8IHRlc3QgISAt
cyBjb25mdGVzdC5lcnInCiAgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3Ry
eVwiIikgPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CkBAIC00NzQ3
LDE0ICs0NDY2LDYgQEAKIHMsQEVDSE9fTkAsJEVDSE9fTiw7dCB0CiBzLEBFQ0hPX1RALCRFQ0hP
X1QsO3QgdAogcyxATElCU0AsJExJQlMsO3QgdAotcyxAYnVpbGRALCRidWlsZCw7dCB0Ci1zLEBi
dWlsZF9jcHVALCRidWlsZF9jcHUsO3QgdAotcyxAYnVpbGRfdmVuZG9yQCwkYnVpbGRfdmVuZG9y
LDt0IHQKLXMsQGJ1aWxkX29zQCwkYnVpbGRfb3MsO3QgdAotcyxAaG9zdEAsJGhvc3QsO3QgdAot
cyxAaG9zdF9jcHVALCRob3N0X2NwdSw7dCB0Ci1zLEBob3N0X3ZlbmRvckAsJGhvc3RfdmVuZG9y
LDt0IHQKLXMsQGhvc3Rfb3NALCRob3N0X29zLDt0IHQKIHMsQENDQCwkQ0MsO3QgdAogcyxAQ0ZM
QUdTQCwkQ0ZMQUdTLDt0IHQKIHMsQExERkxBR1NALCRMREZMQUdTLDt0IHQKQEAgLTQ5NDUsNiAr
NDY1NiwxMSBAQAogICAqKSBhY19JTlNUQUxMPSRhY190b3BfYnVpbGRkaXIkSU5TVEFMTCA7Owog
ICBlc2FjCiAKKyAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgIHsgZWNobyAi
JGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRhY19maWxlIiA+JjUKK2VjaG8gIiRhc19tZTogY3Jl
YXRpbmcgJGFjX2ZpbGUiID4mNjt9CisgICAgcm0gLWYgIiRhY19maWxlIgorICBmaQogICAjIExl
dCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChp
LmUuLCBkb24ndAogICAjIHVzZSAkYXNfbWUpLCBwZW9wbGUgd291bGQgYmUgc3VycHJpc2VkIHRv
IHJlYWQ6CiAgICMgICAgLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmlnLnN0YXR1cy4g
ICovCkBAIC00OTgzLDEyICs0Njk5LDYgQEAKIAkgZmk7OwogICAgICAgZXNhYwogICAgIGRvbmVg
IHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQotCi0gIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07
IHRoZW4KLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1
Ci1lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQotICAgIHJtIC1mICIkYWNf
ZmlsZSIKLSAgZmkKIF9BQ0VPRgogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKICAgc2Vk
ICIkYWNfdnBzdWIKZGlmZiAtTnVyIHBhbV9za2V5LTEuMS40L2RlZnMuaC5pbiBwYW1fc2tleS9k
ZWZzLmguaW4KLS0tIHBhbV9za2V5LTEuMS40L2RlZnMuaC5pbgkyMDA1LTA2LTE4IDE0OjM2OjE4
LjAwMDAwMDAwMCArMDIwMAorKysgcGFtX3NrZXkvZGVmcy5oLmluCTIwMDYtMDMtMDYgMDk6MjY6
NTUuMDAwMDAwMDAwICswMTAwCkBAIC0xLDk2ICsxLDQ5IEBACi0vKiBkZWZzLmguaW4uICBHZW5l
cmF0ZWQgZnJvbSBjb25maWd1cmUuaW4gYnkgYXV0b2hlYWRlci4gICovCi0vKiBEZWZpbmUgaWYg
d2UgY2FuIGluY2x1ZGUgYm90aCBzdHJpbmcuaCBhbmQgc3RyaW5ncy5oICovCi0jdW5kZWYgU1RS
SU5HX1dJVEhfU1RSSU5HUwotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgTGludXggKi8KLSN1bmRl
ZiBMSU5VWAotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgKkJTRCAqLwotI3VuZGVmIEJTRAorLyog
ZGVmcy5oLmluLiAgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBjb25maWd1cmUuaW4gYnkg
YXV0b2hlYWRlci4gICovCiAKLS8qIERlZmluZSBpZiBub3QgbWlzc2luZyBza2V5YWNjZXNzKCkg
Ki8KLSN1bmRlZiBIQVZFX1NLRVlBQ0NFU1MKLQotLyogRGVmaW5lIGlmIG5vdCBtaXNzaW5nIHNr
ZXlpbmZvKCkgKi8KLSN1bmRlZiBIQVZFX1NLRVlJTkZPCisvKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICAqLworI3VuZGVmIFNURENfSEVBREVSUwogCi0vKiBE
ZWZpbmUgaWYgeW91IGhhdmUgc2tleWxvb2t1cCgpIGluc3RlYWQgb2Ygc2tleWluZm8oKSAqLwot
I3VuZGVmIEhBVkVfU0tFWUxPT0tVUAorLyogRGVmaW5lIGlmIHdlIGNhbiBpbmNsdWRlIGJvdGgg
c3RyaW5nLmggYW5kIHN0cmluZ3MuaCAqLworI3VuZGVmIFNUUklOR19XSVRIX1NUUklOR1MKIAot
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmcHJpbnRmJyBmdW5jdGlvbi4gKi8KKy8q
IERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZnByaW50ZiBmdW5jdGlvbi4gICovCiAjdW5kZWYgSEFW
RV9GUFJJTlRGCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4g
aGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9JTlRUWVBFU19ICisvKiBEZWZpbmUgaWYgeW91
IGhhdmUgdGhlIGdldGhvc3RieW5hbWUgZnVuY3Rpb24uICAqLworI3VuZGVmIEhBVkVfR0VUSE9T
VEJZTkFNRQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5zbCcgbGlicmFyeSAo
LWxuc2wpLiAqLwotI3VuZGVmIEhBVkVfTElCTlNMCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl
IHNucHJpbnRmIGZ1bmN0aW9uLiAgKi8KKyN1bmRlZiBIQVZFX1NOUFJJTlRGCiAKLS8qIERlZmlu
ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc29ja2V0JyBsaWJyYXJ5ICgtbHNvY2tldCkuICovCi0j
dW5kZWYgSEFWRV9MSUJTT0NLRVQKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RybmNtcCBm
dW5jdGlvbi4gICovCisjdW5kZWYgSEFWRV9TVFJOQ01QCiAKLS8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfTUVNT1JZ
X0gKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3lzbG9nIGZ1bmN0aW9uLiAgKi8KKyN1bmRl
ZiBIQVZFX1NZU0xPRwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHB3ZC5oPiBo
ZWFkZXIgZmlsZS4gKi8KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHB3ZC5oPiBoZWFkZXIg
ZmlsZS4gICovCiAjdW5kZWYgSEFWRV9QV0RfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPHNlY3VyaXR5L3BhbV9hcHBsLmg+IGhlYWRlciBmaWxlLiAqLworLyogRGVmaW5lIGlm
IHlvdSBoYXZlIHRoZSA8c2VjdXJpdHkvcGFtX2FwcGwuaD4gaGVhZGVyIGZpbGUuICAqLwogI3Vu
ZGVmIEhBVkVfU0VDVVJJVFlfUEFNX0FQUExfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2
ZSB0aGUgPHNlY3VyaXR5L3BhbV9tb2R1bGVzLmg+IGhlYWRlciBmaWxlLiAqLworLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSA8c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4gaGVhZGVyIGZpbGUuICAq
LwogI3VuZGVmIEhBVkVfU0VDVVJJVFlfUEFNX01PRFVMRVNfSAogCi0vKiBEZWZpbmUgdG8gMSBp
ZiB5b3UgaGF2ZSB0aGUgYHNucHJpbnRmJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX1NOUFJJ
TlRGCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBm
aWxlLiAqLwotI3VuZGVmIEhBVkVfU1RESU5UX0gKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh
dmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCisvKiBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1RETElCX0gKIAot
LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAq
LwotI3VuZGVmIEhBVkVfU1RSSU5HU19ICi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAqLworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8
c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1NUUklOR19ICiAKLS8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RybmNtcCcgZnVuY3Rpb24uICovCi0jdW5kZWYg
SEFWRV9TVFJOQ01QCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3lzbG9nJyBm
dW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX1NZU0xPRwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5c2xvZy5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX1NZU0xPR19I
Ci0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZp
bGUuICovCi0jdW5kZWYgSEFWRV9TWVNfU1RBVF9ICisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl
IDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAgKi8KKyN1bmRlZiBIQVZFX1NUUklOR1NfSAogCi0v
KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNsb2cuaD4gaGVhZGVyIGZpbGUu
ICovCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3lzbG9nLmg+IGhlYWRlciBmaWxl
LiAgKi8KICN1bmRlZiBIQVZFX1NZU19TWVNMT0dfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCiAjdW5kZWYgSEFWRV9TWVNf
VFlQRVNfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFk
ZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX1VOSVNURF9ICi0KLS8qIERlZmluZSB0byB0aGUgYWRk
cmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAq
LwotI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1l
IG9mIHRoaXMgcGFja2FnZS4gKi8KLSN1bmRlZiBQQUNLQUdFX05BTUUKLQotLyogRGVmaW5lIHRv
IHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI3VuZGVmIFBB
Q0tBR0VfU1RSSU5HCi0KLS8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9m
IHRoaXMgcGFja2FnZS4gKi8KLSN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKLQotLyogRGVmaW5lIHRv
IHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSN1bmRlZiBQQUNLQUdFX1ZFUlNJT04K
LQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICov
Ci0jdW5kZWYgU1REQ19IRUFERVJTCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXNsb2cu
aD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1lTTE9HX0gKZGlmZiAtTnVyIHBhbV9z
a2V5LTEuMS40L3BhbV9za2V5LmMgcGFtX3NrZXkvcGFtX3NrZXkuYwotLS0gcGFtX3NrZXktMS4x
LjQvcGFtX3NrZXkuYwkyMDA1LTA2LTE4IDE0OjM2OjE4LjAwMDAwMDAwMCArMDIwMAorKysgcGFt
X3NrZXkvcGFtX3NrZXkuYwkyMDA2LTAzLTA2IDA5OjI2OjU1LjAwMDAwMDAwMCArMDEwMApAQCAt
MSw1ICsxLDYgQEAKIC8qIAotICogKGMpIDIwMDEgRGlua28gS29ydW5pYywga3JlYXRvckBzcmNl
LmhyCisgKiBSZXdyaXRlIChjKSAyMDA1IERhbmkgQ2h1cmNoLCBkYW5pLmNodXJjaEBnbWFpbC5j
b20KKyAqIE9yaWdpbmFsIChjKSAyMDAxIERpbmtvIEtvcnVuaWMsIGtyZWF0b3JAc3JjZS5ocgog
ICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVECiAgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgpAQCAtMzMsMjcyICszNCwxNDYgQEAKICNpbmNs
dWRlIDxwd2QuaD4gCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzbG9nLmg+
CisjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2RlZmluZSBQQU1fRVhURVJOIGV4dGVybgogI3VuZGVm
IFBBTV9TVEFUSUMKIAogI2luY2x1ZGUgPHNlY3VyaXR5L3BhbV9hcHBsLmg+CiAjaW5jbHVkZSA8
c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4KKyNpbmNsdWRlIDxzZWN1cml0eS9fcGFtX21hY3Jvcy5o
PgogCiAjaW5jbHVkZSAic2tleS5oIgogI2luY2x1ZGUgInBhbV9za2V5LmgiCiAjaW5jbHVkZSAi
bWlzYy5oIgogCisjZGVmaW5lIExPR0RFQlVHKHgpIGlmIChtb2Rfb3B0ICYgX01PRF9ERUJVRykg
eyBzeXNsb2cgeCA7fQorI2RlZmluZSBRVUVSWV9VU0VSTkFNRSBOVUxMIC8qIFVzZSBkZWZhdWx0
IHVzZXJuYW1lIHByb21wdCAqLworI2RlZmluZSBRVUVSWV9QQVNTV09SRCAiUGFzc3dvcmQ6ICIK
KyNkZWZpbmUgUVVFUllfUkVTUE9OU0VfT1JfUEFTU1dPUkQgIlMvS2V5IHJlc3BvbnNlIG9yIHN5
c3RlbSBwYXNzd29yZDogIgorI2RlZmluZSBRVUVSWV9SRVNQT05TRSAiUy9LZXkgcmVzcG9uc2U6
ICIKKwogUEFNX0VYVEVSTiBpbnQgcGFtX3NtX3NldGNyZWQgKHBhbV9oYW5kbGVfdCAqcGFtaCwg
aW50IGZsYWdzLAogICBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiB7CiAgIHJldHVybiBQ
QU1fU1VDQ0VTUzsKIH0KIAorLyoKKyAqIFRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUgd2lsbCBy
ZXR1cm4gdGhlIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6CisgKiBQQU1fU1VDQ0VTUzogU3VjY2Vz
c2Z1bCBhdXRoZW50aWNhdGlvbiB2aWEgUy9LZXkuCisgKiBQQU1fSUdOT1JFOiBUaGUgdXNlciBk
b2Vzbid0IGhhdmUgUy9LZXkgb3IgZG9lc24ndCB3YW50IHRvIHVzZSBpdC4KKyAqICAgICAgICAg
ICAgIENvbnRpbnVlIHdpdGggdGhlIG5leHQgbW9kdWxlLCB1c2luZyB0cnlfZmlyc3RfcGFzcy4K
KyAqIFBBTV9BVVRIX0VSUjogVGhlIHVzZXIgYXNrZWQgdG8gdXNlIFMvS2V5LCBidXQgZmFpbGVk
IHRoZSBhdXRoZW50aWNhdGlvbi4KKyAqICAgICAgICAgICAgICAgRG9uJ3QgdHJ5IGFueSBtb3Jl
IFBBTSBtb2R1bGVzLgorICogb3RoZXJzOiByYW5kb20gZXJyb3JzLCB0cnkgbmV4dCBhdXRoZW50
aWNhdGlvbiBtZXRob2QKKyAqLworCiBQQU1fRVhURVJOIGludCBwYW1fc21fYXV0aGVudGljYXRl
KHBhbV9oYW5kbGVfdCAqcGFtaCwgaW50IGZsYWdzLAogICBpbnQgYXJnYywgY29uc3QgY2hhciAq
KmFyZ3YpCiB7Ci0gIGNoYXIgY2hhbGxlbmdlW0NIQUxMRU5HRV9NQVhTSVpFXTsgLyogY2hhbGxl
bmdlIHRvIHByaW50IGluIGNvbnYgKi8KLSAgY2hhciBtc2dfdGV4dFtQQU1fTUFYX01TR19TSVpF
XTsgLyogdGV4dCBmb3IgcGFtIGNvbnYgKi8KLSAgY2hhciAqdXNlcm5hbWUgPSBOVUxMOyAvKiB1
c2VybmFtZSBzcGFjZXIgKi8KKyAgY29uc3QgY2hhciAqY2hhbGxlbmdlOyAvKiBjaGFsbGVuZ2Ug
dG8gcHJpbnQgaW4gY29udiAqLworICBjb25zdCBjaGFyICp1c2VybmFtZSA9IE5VTEw7IC8qIHVz
ZXJuYW1lIHNwYWNlciAqLwogICBjaGFyICpyZXNwb25zZSA9IE5VTEw7IC8qIHJlc3BvbnNlIHNw
YWNlciAqLwotICBzdHJ1Y3Qgc2tleSBza2V5OyAvKiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBz
a2V5IGluZm9ybWF0aW9uICovCiAgIGludCBzdGF0dXM7IC8qIHJldHVybiBzdGF0dXMgc3BhY2Vy
ICovCi0gIHVuc2lnbmVkIG1vZF9vcHQgPSBfTU9EX05PTkVfT047IC8qIG1vZHVsZSBvcHRpb25z
ICovCisgIHVuc2lnbmVkIG1vZF9vcHQ9X01PRF9OT05FX09OOyAvKiBtb2R1bGUgb3B0aW9ucyAq
LwogCiAgIC8qIEdldCBtb2R1bGUgb3B0aW9ucyAqLwogICBtb2RfZ2V0b3B0KCZtb2Rfb3B0LCBh
cmdjLCBhcmd2KTsKIAotICAvKiBHZXQgdXNlcm5hbWUgKi8KLSNpZiBkZWZpbmVkIExJTlVYIHx8
IGRlZmluZWQgQlNECi0gIGlmIChwYW1fZ2V0X3VzZXIocGFtaCwgKGNvbnN0IGNoYXIgKiopJnVz
ZXJuYW1lLCAibG9naW46IikKLSNlbHNlCi0gIGlmIChwYW1fZ2V0X3VzZXIocGFtaCwgKGNoYXIg
KiopJnVzZXJuYW1lLCAibG9naW46IikKLSNlbmRpZgotICAgICAgIT0gUEFNX1NVQ0NFU1MpCi0g
IHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBkZXRlcm1pbmUgdXNlcm5hbWVcbiIpOwot
ICAgIGlmIChtb2Rfb3B0ICYgX01PRF9ERUJVRykKLSAgICAgIHN5c2xvZyhMT0dfREVCVUcsICJj
YW5ub3QgZGV0ZXJtaW5lIHVzZXJuYW1lIik7Ci0gICAgcmV0dXJuIFBBTV9VU0VSX1VOS05PV047
Ci0gIH0KLQotICBpZiAobW9kX29wdCAmIF9NT0RfREVCVUcpCi0gICAgc3lzbG9nKExPR19ERUJV
RywgImdvdCB1c2VybmFtZSAlcyIsIHVzZXJuYW1lKTsKLQotI2lmZGVmIEhBVkVfU0tFWUFDQ0VT
UwotICAvKiBDaGVjayBTL0tleSBhY2Nlc3MgcGVybWlzc2lvbnMgLSB1c2VyLCBob3N0IGFuZCBw
b3J0LiBBbHNvIGluY2x1ZGUKLSAgICogc2FuaXR5IGNoZWNrcyAqLwotICBpZiAobW9kX29wdCAm
IF9NT0RfQUNDRVNTX0NIRUNLKQotICB7Ci0gICAgY2hhciAqaG9zdDsgLyogcG9pbnRzIHRvIGhv
c3QgKi8KLSAgICBjaGFyICpwb3J0OyAvKiBwb2ludHMgdG8gcG9ydCAqLwotICAgIHN0cnVjdCBw
YXNzd2QgKnB3dXNlcjsgLyogc3RydWN0dXJlIGZvciBnZXRwdygpICovCi0KLSAgICAvKiBHZXQg
aG9zdC4uICovCi0jaWYgZGVmaW5lZCBMSU5VWCB8fCBkZWZpbmVkIEJTRAotICAgIGlmIChwYW1f
Z2V0X2l0ZW0ocGFtaCwgUEFNX1JIT1NULCAoY29uc3Qgdm9pZCAqKikmaG9zdCkKLSNlbHNlCi0g
ICAgaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fUkhPU1QsICh2b2lkICoqKSZob3N0KQotI2Vu
ZGlmCi0gICAgICAgICE9IFBBTV9TVUNDRVNTKQotICAgICAgaG9zdCA9IE5VTEw7IC8qIGNvdWxk
bid0IGdldCBob3N0ICovCi0gICAgLyogLi5hbmQgcG9ydCAqLwotI2lmIGRlZmluZWQgTElOVVgg
fHwgZGVmaW5lZCBCU0QKLSAgICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9UVFksIChjb25z
dCB2b2lkICoqKSZwb3J0KQotI2Vsc2UKLSAgICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9U
VFksICh2b2lkICoqKSZwb3J0KQotI2VuZGlmCi0gICAgICAgICE9IFBBTV9TVUNDRVNTKQotICAg
ICAgcG9ydCA9IE5VTEw7IC8qIGNvdWxkbid0IGdldCBwb3J0ICovCi0KLSAgICBpZiAobW9kX29w
dCAmIF9NT0RfREVCVUcpCi0gICAgICBzeXNsb2coTE9HX0RFQlVHLCAiY2hlY2tpbmcgcy9rZXkg
YWNjZXNzIGZvciB1c2VyICVzLCIKLSAgICAgICAgIiBob3N0ICVzLCBwb3J0ICVzIiwgdXNlcm5h
bWUsCi0gICAgICAgIChob3N0ICE9IE5VTEwpID8gaG9zdCA6ICIqdW5rbm93bioiLAotICAgICAg
ICAocG9ydCAhPSBOVUxMKSA/IHBvcnQgOiAiKnVua25vd24qIik7Ci0KLSAgICAvKiBHZXQgaW5m
b3JtYXRpb24gZnJvbSBwYXNzd2QgZmlsZSAqLwotICAgIGlmICgocHd1c2VyID0gZ2V0cHduYW0o
dXNlcm5hbWUpKSA9PSBOVUxMKQotICAgIHsKLSAgICAgIGZwcmludGYoc3RkZXJyLCAibm8gc3Vj
aCB1c2VyXG4iKTsKLSAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCAiY2Fubm90IGZpbmQgdXNlciAl
cyIsIHVzZXJuYW1lKTsKLSAgICAgIHJldHVybiBQQU1fVVNFUl9VTktOT1dOOyAvKiBwZXJoYXBz
IGV2ZW4gcmV0dXJuIFBBTV9BQk9SVCBoZXJlPyAqLworICAvKiBHZXQgdXNlcm5hbWUgKHRha2Vu
IG1haW5seSBmcm9tIHBhbV91bml4KSAqLworICBzdGF0dXMgPSBwYW1fZ2V0X3VzZXIocGFtaCwg
JnVzZXJuYW1lLCBRVUVSWV9VU0VSTkFNRSk7CisgIGlmIChzdGF0dXMgPT0gUEFNX1NVQ0NFU1Mp
IHsKKyAgICBpZiAodXNlcm5hbWUgPT0gTlVMTCB8fCAhaXNhbG51bSgqdXNlcm5hbWUpKSB7Cisg
ICAgICBzeXNsb2coTE9HX0VSUiwgImJhZCB1c2VybmFtZSBbJXNdIiwgdXNlcm5hbWUpOworICAg
ICAgcmV0dXJuIFBBTV9VU0VSX1VOS05PV047CiAgICAgfQorICAgIExPR0RFQlVHKChMT0dfREVC
VUcsICJ1c2VybmFtZSBbJXNdIG9idGFpbmVkIiwgdXNlcm5hbWUpKTsKKyAgfSBlbHNlIHsKKyAg
ICBMT0dERUJVRygoTE9HX0RFQlVHLCAidHJvdWJsZSByZWFkaW5nIHVzZXJuYW1lIikpOworICAg
IGlmIChzdGF0dXMgPT0gUEFNX0NPTlZfQUdBSU4pCisgICAgICByZXR1cm4gUEFNX0lOQ09NUExF
VEU7CisgICAgcmV0dXJuIHN0YXR1czsKKyAgfQogCi0gICAgLyogRG8gYWN0dWFsIGNoZWNraW5n
IC0gd2UgYXNzdW1lIHNrZXlhY2Nlc3MoKSByZXR1cm5zIFBFUk1JVCB3aGljaCBpcwotICAgICAq
IGJ5IGRlZmF1bHQgMS4gTm90aWNlIDR0aCBhcmd1bWVudCBpcyBOVUxMIC0gd2Ugd2lsbCBub3Qg
cGVyZm9ybQotICAgICAqIGFkZHJlc3MgY2hlY2tzIG9uIGhvc3QgaXRzZWxmICovCi0gICAgaWYg
KHNrZXlhY2Nlc3MocHd1c2VyLCBwb3J0LCBob3N0LCBOVUxMKSAhPSAxKQotICAgIHsKLSAgICAg
IGZwcmludGYoc3RkZXJyLCAibm8gcy9rZXkgYWNjZXNzIHBlcm1pc3Npb25zXG4iKTsKLSAgICAg
IHN5c2xvZyhMT0dfTk9USUNFLCAibm8gcy9rZXkgYWNjZXNzIHBlcm1pc3Npb25zIGZvciAlcyIs
Ci0gICAgICAgICAgdXNlcm5hbWUpOwotICAgICAgcmV0dXJuIFBBTV9BVVRIX0VSUjsKLSAgICB9
CisgIC8qIENoZWNrIHdoZXRoZXIgb3Igbm90IHRoaXMgdXNlciBoYXMgYW4gUy9LZXkgKi8KKyAg
aWYgKHNrZXlfaGFza2V5KHVzZXJuYW1lKSAhPSAwKSB7CisgICAgTE9HREVCVUcoKExPR19ERUJV
RywgInVzZXIgWyVzXSBoYXMgbm8gUy9LZXkgZW50cnkiLCB1c2VybmFtZSkpOworICAgIHJldHVy
biBQQU1fSUdOT1JFOwogICB9Ci0gIGVsc2UKIAotI2VuZGlmIC8qIEhBVkVfU0tFWUFDQ0VTUyAq
LwotICAgIAotICAvKiBPbmx5IGRvIGNoZWNrIHdoZXRoZXIgdXNlciBoYXMgcGFzc3dkIGVudHJ5
ICovCi0gICAgaWYgKGdldHB3bmFtKHVzZXJuYW1lKSA9PSBOVUxMKQotICAgIHsKLSAgICAgIGZw
cmludGYoc3RkZXJyLCAibm8gc3VjaCB1c2VyXG4iKTsKLSAgICAgIGlmIChtb2Rfb3B0ICYgX01P
RF9ERUJVRykKLSAgICAgICAgc3lzbG9nKExPR19ERUJVRywgImNhbm5vdCBmaW5kIHVzZXIgJXMi
LAotICAgICAgICAgICAgdXNlcm5hbWUpOwotICAgICAgcmV0dXJuIFBBTV9VU0VSX1VOS05PV047
CisgIGlmICgobW9kX29wdCAmIF9NT0RfVFJZX0ZJUlNUX1BBU1MpIHx8IChtb2Rfb3B0ICYgX01P
RF9VU0VfRklSU1RfUEFTUykpIHsKKyAgICBzdGF0dXMgPSBwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFN
X0FVVEhUT0ssIChjb25zdCB2b2lkICoqKSAmcmVzcG9uc2UpOworICAgIGlmIChzdGF0dXMgIT0g
UEFNX1NVQ0NFU1MpIHsKKyAgICAgIHN5c2xvZyhMT0dfQUxFUlQsICJwYW1fZ2V0X2l0ZW0gcmV0
dXJuZWQgZXJyb3IgdG8gcGFtX3NrZXkiKTsKKyAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfSBl
bHNlIGlmIChyZXNwb25zZSAhPSBOVUxMKSB7CisgICAgICBpZiAoc2tleV9wYXNzY2hlY2sodXNl
cm5hbWUsIHJlc3BvbnNlKSAhPSAtMSkgeworCXJldHVybiBQQU1fU1VDQ0VTUzsKKyAgICAgIH0g
ZWxzZSBpZiAobW9kX29wdCAmIF9NT0RfVVNFX0ZJUlNUX1BBU1MpIHsKKwlyZXR1cm4gUEFNX0lH
Tk9SRTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1vZF9vcHQgJiBfTU9EX1VTRV9GSVJTVF9Q
QVNTKSB7CisgICAgICByZXR1cm4gUEFNX0FVVEhUT0tfUkVDT1ZFUl9FUlI7CiAgICAgfQotCi0g
IC8qIEdldCBTL0tleSBpbmZvcm1hdGlvbiBvbiB1c2VyIHdpdGggc2tleWluZm8oKSAqLwotI2lm
ZGVmIEhBVkVfU0tFWUlORk8KLSAgc3dpdGNoIChza2V5aW5mbygmc2tleSwgdXNlcm5hbWUsIE5V
TEwpKQotI2Vsc2UKLSNpZmRlZiBIQVZFX1NLRVlMT09LVVAKLSAgc3dpdGNoIChza2V5bG9va3Vw
KCZza2V5LCB1c2VybmFtZSkpCi0jZW5kaWYgLyogSEFWRV9TS0VZTE9PS1VQICovCi0jZW5kaWYg
LyogSEFWRV9TS0VZSU5GTyAqLwotICB7Ci0gIC8qIDA6IE9LICovCi0gIGNhc2UgMDoKLSAgICBi
cmVhazsKLSAgLyogLTE6IEZpbGUgZXJyb3IgKi8KLSAgY2FzZSAtMToKLSNpZiAwCi0gIC8qIFhY
WC0gVGhpcyBzZWVtcyBicm9rZW4gaW4gKGF0IGxlYXN0KSBsb2dkYWVtb24tNS44LiBJdCByZXR1
cm5zIC0xCi0gICAqIHdoZW4gdXNlciBub3QgZm91bmQgaW4ga2V5ZmlsZS4gLWtyZSAqLwotICAg
IGZwcmludGYoc3RkZXJyLCAicy9rZXkgZGF0YWJhc2UgZXJyb3JcbiIpOwotICAgIHN5c2xvZyhM
T0dfTk9USUNFLCAicy9rZXkgZGF0YWJhc2UgZXJyb3IiKTsKLSAgICByZXR1cm4gUEFNX0FVVEhf
RVJSOwotI2VuZGlmCi0gIC8qIDE6IE5vIHN1Y2ggdXNlciBpbiBkYXRhYmFzZSAqLwotICBjYXNl
IDE6Ci0gICAgLyogV2Ugd29uJ3QgY29uZnVzZSB0aGUgb3JkaW5hcnkgdXNlciB0ZWxsaW5nIGhp
bSBhYm91dCBtaXNzaW5nIHNrZXlzCi0gICAgICogLWtyZSAqLwotI2lmIDAKLSAgICBmcHJpbnRm
KHN0ZGVyciwgIm5vIHMva2V5IGZvciAlc1xuIiwgdXNlcm5hbWUpOwotI2VuZGlmCi0gICAgaWYg
KG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgICAgc3lzbG9nKExPR19ERUJVRywgIm5vIHMva2V5
IGZvciAlc1xuIiwgdXNlcm5hbWUpOwotICAgIHJldHVybiBQQU1fQVVUSF9FUlI7CiAgIH0KLQot
ICAvKiBNYWtlIGNoYWxsZW5nZSBzdHJpbmcgKi8KLSNpZiBkZWZpbmVkKFNLRVlfTUFYX0hBU0hO
QU1FX0xFTikgJiYgZGVmaW5lZChTS0VZX01BWF9TRUVEX0xFTikKLSAgc25wcmludGYoY2hhbGxl
bmdlLCBDSEFMTEVOR0VfTUFYU0laRSwgIm90cC0lLipzICVkICUuKnMiLAotICAgICAgU0tFWV9N
QVhfSEFTSE5BTUVfTEVOLCBza2V5X2dldF9hbGdvcml0aG0oKSwgc2tleS5uIC0gMSwgU0tFWV9N
QVhfU0VFRF9MRU4sIHNrZXkuc2VlZCk7Ci0jZWxzZQotICBzbnByaW50ZihjaGFsbGVuZ2UsIENI
QUxMRU5HRV9NQVhTSVpFLCAicy9rZXkgJWQgJXMiLAotICAgICAgc2tleS5uIC0gMSwgc2tleS5z
ZWVkKTsKLSNlbmRpZgotCi0gIGlmIChtb2Rfb3B0ICYgX01PRF9ERUJVRykKLSAgICBzeXNsb2co
TE9HX0RFQlVHLCAiZ290IGNoYWxsZW5nZSAlcyBmb3IgJXMiLCBjaGFsbGVuZ2UsCi0gICAgICAg
IHVzZXJuYW1lKTsKLQotICAvKiBSZWFkIHJlc3BvbnNlIGZyb20gbGFzdCBtb2R1bGUncyBQQU1f
QVVUSFRPSyAqLwotICBpZiAobW9kX29wdCAmIF9NT0RfVVNFX0ZJUlNUX1BBU1MpCi0gIHsKLSAg
ICAvKiBUcnkgdG8gZXh0cmFjdCBhdXRodG9rZW4gKi8KLSNpZiBkZWZpbmVkIExJTlVYIHx8IGRl
ZmluZWQgQlNECi0gICAgaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fQVVUSFRPSywgKGNvbnN0
IHZvaWQgKiopJnJlc3BvbnNlKQotI2Vsc2UKLSAgICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBB
TV9BVVRIVE9LLCAodm9pZCAqKikmcmVzcG9uc2UpCi0jZW5kaWYKLSAgICAgICAgIT0gUEFNX1NV
Q0NFU1MpCi0gICAgewotICAgICAgaWYgKG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgICAgICBz
eXNsb2coTE9HX0RFQlVHLCAiY291bGQgbm90IGdldCBQQU1fQVVUSFRPSyIpOwotICAgICAgbW9k
X29wdCAmPSB+X01PRF9VU0VfRklSU1RfUEFTUzsKKyAgCisgIGlmIChtb2Rfb3B0ICYgX01PRF9O
T19ERUZBVUxUX1NLRVkpIHsKKyAgICBzdGF0dXMgPSBtb2RfdGFsa190b3VzZXIocGFtaCwgbW9k
X29wdCwgTlVMTCwgUVVFUllfUEFTU1dPUkQsIDAsICZyZXNwb25zZSk7CisgICAgaWYgKHN0YXR1
cyAhPSBQQU1fU1VDQ0VTUykgeworICAgICAgX3BhbV9kZWxldGUocmVzcG9uc2UpCisgICAgICBy
ZXR1cm4gc3RhdHVzOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgLyogR290IEFVVEhU
T0ssIGJ1dCBpdCB3YXMgZW1wdHkgKi8KLSAgICAgIGlmIChlbXB0eV9hdXRodG9rKHJlc3BvbnNl
KSkKLSAgICAgIHsKLSAgICAgICAgaWYgKG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgICAgICAg
IHN5c2xvZyhMT0dfREVCVUcsICJlbXB0eSBQQU1fQVVUSFRPSyIpOwotICAgICAgICBtb2Rfb3B0
ICY9IH5fTU9EX1VTRV9GSVJTVF9QQVNTOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAv
KiBBbGwgT0ssIHByaW50IGNoYWxsZW5nZSBpbmZvcm1hdGlvbiAqLwotICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgImNoYWxsZW5nZSAlc1xuIiwgY2hhbGxlbmdlKTsKKyAgICBpZiAoc3RyY2FzZWNt
cChyZXNwb25zZSwicy9rZXkiKSE9MCkgeworICAgICAgc3RhdHVzID0gcGFtX3NldF9pdGVtKHBh
bWgsIFBBTV9BVVRIVE9LLCByZXNwb25zZSk7CisgICAgICBpZiAoc3RhdHVzICE9IFBBTV9TVUND
RVNTKQorCXJldHVybiBzdGF0dXM7CisgICAgICByZXR1cm4gUEFNX0lHTk9SRTsKICAgICB9Cisg
ICAgX3BhbV9kZWxldGUocmVzcG9uc2UpOwogICB9CiAKLSAgLyogVGhlcmUgd2FzIG5vIFBBTV9B
VVRIVE9LLCBvciB0aGVyZSB3YXMgbm8gc3VjaCBvcHRpb24gaW4gcGFtLWNvbmYKLSAgICogZmls
ZSAqLwotICBpZiAoIShtb2Rfb3B0ICYgX01PRF9VU0VfRklSU1RfUEFTUykpCi0gIHsKLSAgICAv
KiBQcmVwYXJlIGEgY29tcGxldGUgbWVzc2FnZSBmb3IgY29udmVyc2F0aW9uICovCi0gICAgc25w
cmludGYobXNnX3RleHQsIFBBTV9NQVhfTVNHX1NJWkUsCi0gICAgICAgICJjaGFsbGVuZ2UgJXNc
bnBhc3N3b3JkOiAiLCBjaGFsbGVuZ2UpOwotCi0gICAgLyogVGFsayB3aXRoIHVzZXIgKi8KLSAg
ICBpZiAobW9kX3RhbGtfdG91c2VyKHBhbWgsICZtb2Rfb3B0LCBtc2dfdGV4dCwgJnJlc3BvbnNl
KQotICAgICAgICAhPSBQQU1fU1VDQ0VTUykKLSAgICAgIHJldHVybiBQQU1fU0VSVklDRV9FUlI7
Ci0KLSAgICAvKiBTaW11bGF0ZSBzdGFuZGFyZCBTL0tleSBsb2dpbiBwcm9jZWR1cmUgLSBpZiBl
bXB0eSB0b2tlbiwgdHVybiBvbgotICAgICAqIEVDSE8gYW5kIHByb21wdCBhZ2FpbiAqLwotICAg
IGlmIChlbXB0eV9hdXRodG9rKHJlc3BvbnNlKSAmJiAhKG1vZF9vcHQgJiBfTU9EX09OTFlfT05F
X1RSWSkpCi0gICAgewotICAgICAgLyogV2FzIHRoZXJlIGVjaG8gb2ZmPyAqLwotICAgICAgaWYg
KG1vZF9vcHQgJiBfTU9EX0VDSE9fT0ZGKQotICAgICAgewotICAgICAgICBfcGFtX2RlbGV0ZShy
ZXNwb25zZSk7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiKHR1cm5pbmcgZWNobyBvbilcbiIp
OwotICAgICAgICBtb2Rfb3B0ICY9IH5fTU9EX0VDSE9fT0ZGOwotCi0gICAgICAgIC8qIFByZXBh
cmUgYSBjb21wbGV0ZSBtZXNzYWdlIGZvciBjb252ZXJzYXRpb24gKi8KLSAgICAgICAgc25wcmlu
dGYobXNnX3RleHQsIFBBTV9NQVhfTVNHX1NJWkUsICJwYXNzd29yZDogIik7Ci0KLSAgICAgICAg
LyogVGFsayB3aXRoIHVzZXIgKi8KLSAgICAgICAgaWYgKG1vZF90YWxrX3RvdXNlcihwYW1oLCAm
bW9kX29wdCwgbXNnX3RleHQsICZyZXNwb25zZSkKLSAgICAgICAgICAhPSBQQU1fU1VDQ0VTUykK
LSAgICAgICAgICByZXR1cm4gUEFNX1NFUlZJQ0VfRVJSOwotCi0gICAgICAgIC8qIEdvdCBhZ2Fp
biBlbXB0eSByZXNwb25zZS4gQmFpbG91dCBhbmQgZG9uJ3Qgc2F2ZSBhdXRoIHRva2VuICovCi0g
ICAgICAgIGlmIChlbXB0eV9hdXRodG9rKHJlc3BvbnNlKSkKLSAgICAgICAgICByZXR1cm4gUEFN
X0FVVEhfRVJSOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgLyogVGhlcmUgd2FzIGVjaG8g
b24gYWxyZWFkeSAtIGp1c3QgZ2V0IG91dCBhbmQgZG9uJ3Qgc2F2ZSBhdXRoIHRva2VuCi0gICAg
ICAgKiBmb3Igb3RoZXIgbW9kdWxlcyAqLwotICAgICAgICByZXR1cm4gUEFNX0FVVEhfRVJSOwot
ICAgIH0KKyAgY2hhbGxlbmdlID0gc2tleV9rZXlpbmZvKHVzZXJuYW1lKTsKKyAgaWYgKGNoYWxs
ZW5nZSA9PSBOVUxMKSB7CisgICAgc3lzbG9nKExPR19BTEVSVCwgIkNvdWxkIG5vdCByZXRyaWV2
ZSBTL0tleSBjaGFsbGVuZ2UgZm9yIFslc10iLCB1c2VybmFtZSk7CisgICAgcmV0dXJuIFBBTV9B
VVRISU5GT19VTkFWQUlMOworICB9CiAKLSAgICAvKiBYWFggLSBFQ0hPIE9OIHB1dHMgJ1xuJyBh
dCB0aGUgZW5kIGluIFNvbGFyaXMgMi43ISBUaGlzIGlzCi0gICAgICogY2x1ZGdlIHRvIGdldCBy
aWQgb2YgdGhpcyBuYXN0eSBgZmVhdHVyZScgLWtyZSAqLwotICAgIF9wYW1fZGVnYXJiYWdlKHJl
c3BvbnNlKTsKLSAgCi0gICAgLyogU3RvcmUgYXV0aCB0b2tlbiAtIHRoYXQgbmV4dCBtb2R1bGUg
Y2FuIHVzZSB3aXRoIGB1c2VfZmlyc3RfcGFzcycgKi8KLSAgICBpZiAocGFtX3NldF9pdGVtKHBh
bWgsIFBBTV9BVVRIVE9LLCByZXNwb25zZSkgIT0gUEFNX1NVQ0NFU1MpCi0gICAgewotICAgICAg
c3lzbG9nKExPR19OT1RJQ0UsICJ1bmFibGUgdG8gc2F2ZSBhdXRoIHRva2VuIik7Ci0gICAgICBy
ZXR1cm4gUEFNX1NFUlZJQ0VfRVJSOwotICAgIH0KKyAgaWYgKG1vZF9vcHQgJiBfTU9EX05PX0RF
RkFVTFRfU0tFWSkgCisgICAgc3RhdHVzID0gbW9kX3RhbGtfdG91c2VyKHBhbWgsIG1vZF9vcHQs
IGNoYWxsZW5nZSwgUVVFUllfUkVTUE9OU0UsIDAsICZyZXNwb25zZSk7CisgIGVsc2UKKyAgICBz
dGF0dXMgPSBtb2RfdGFsa190b3VzZXIocGFtaCwgbW9kX29wdCwgY2hhbGxlbmdlLCBRVUVSWV9S
RVNQT05TRV9PUl9QQVNTV09SRCwgMCwgJnJlc3BvbnNlKTsKIAotICAgIC8qIGNsZWFudXAgY29u
dmVyc2F0aW9uICovCisgIGlmIChzdGF0dXMgIT0gUEFNX1NVQ0NFU1MpCisgICAgcmV0dXJuIHN0
YXR1czsKKyAgCisgIGlmICgqcmVzcG9uc2UgPT0gJ1wwJykgewogICAgIF9wYW1fZGVsZXRlKHJl
c3BvbnNlKTsKLSAgfSAKLQotICAvKiBWZXJpZnkgUy9LZXkgKi8KLSAgc3RhdHVzID0gc2tleXZl
cmlmeSgmc2tleSwgcmVzcG9uc2UpOworICAgIHN0YXR1cyA9IG1vZF90YWxrX3RvdXNlcihwYW1o
LCBtb2Rfb3B0LCBOVUxMLCBRVUVSWV9SRVNQT05TRSwgMSwgJnJlc3BvbnNlKTsKKyAgICBpZiAo
c3RhdHVzICE9IFBBTV9TVUNDRVNTKQorICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICBzdGF0dXMg
PSBwYW1fc2V0X2l0ZW0ocGFtaCwgUEFNX0FVVEhUT0ssIHJlc3BvbnNlKTsKKyAgICBzdGF0dXMg
PSBza2V5X3Bhc3NjaGVjayh1c2VybmFtZSwgcmVzcG9uc2UpOworICAgIF9wYW1fZGVsZXRlKHJl
c3BvbnNlKTsKKyAgICBpZiAoc3RhdHVzICE9IC0xKQorICAgICAgcmV0dXJuIFBBTV9TVUNDRVNT
OworICAgIHJldHVybiBQQU1fQVVUSF9FUlI7CisgIH0KIAotICBzd2l0Y2ggKHN0YXR1cykKLSAg
ewotICAgIC8qIDA6IFZlcmlmeSBzdWNjZXNzZnVsLCBkYXRhYmFzZSB1cGRhdGVkICovCi0gICAg
Y2FzZSAwOgotICAgICAgYnJlYWs7Ci0gICAgLyogLTE6IEVycm9yIG9mIHNvbWUgc29ydDsgZGF0
YWJhc2UgdW5jaGFuZ2VkICovCi0gICAgLyogIDE6IFZlcmlmeSBmYWlsZWQsIGRhdGFiYXNlIHVu
Y2hhbmdlZCAqLwotICAgIGNhc2UgLTE6Ci0gICAgY2FzZSAxOgotICAgICAgaWYgKG1vZF9vcHQg
JiBfTU9EX0RFQlVHKQotICAgICAgICBzeXNsb2coTE9HX0RFQlVHLCAidmVyaWZ5IGZvciAlcyBm
YWlsZWQsIGRhdGFiYXNlIgotICAgICAgICAgICAgIiB1bmNoYW5nZWQiLCB1c2VybmFtZSk7Ci0g
ICAgICByZXR1cm4gUEFNX0FVVEhfRVJSOworICBzdGF0dXMgPSBwYW1fc2V0X2l0ZW0ocGFtaCwg
UEFNX0FVVEhUT0ssIHJlc3BvbnNlKTsKKyAgc3RhdHVzID0gc2tleV9wYXNzY2hlY2sodXNlcm5h
bWUsIHJlc3BvbnNlKTsKKyAgaWYgKHN0YXR1cyAhPSAtMSkgeworICAgIF9wYW1fZGVsZXRlKHJl
c3BvbnNlKTsKKyAgICByZXR1cm4gUEFNX1NVQ0NFU1M7CisgIH0KKyAgCisgIGlmIChtb2Rfb3B0
ICYgX01PRF9OT19ERUZBVUxUX1NLRVkpIHsKKyAgICBfcGFtX2RlbGV0ZShyZXNwb25zZSk7Cisg
ICAgcmV0dXJuIFBBTV9BVVRIX0VSUjsKICAgfQogCi0gIC8qIFN1Y2Nlc3MgYnkgZGVmYXVsdCAq
LwotICByZXR1cm4gUEFNX1NVQ0NFU1M7CisgIHN0YXR1cyA9IHBhbV9zZXRfaXRlbShwYW1oLCBQ
QU1fQVVUSFRPSywgcmVzcG9uc2UpOworICByZXR1cm4gUEFNX0lHTk9SRTsKIH0KIAogLyogR2V0
IG1vZHVsZSBvcHRpb25hbCBwYXJhbWV0ZXJzICovCkBAIC0zMzIsNTAgKzIwNyw0MyBAQAogfQog
CiAvKiBUaGlzIHdpbGwgdGFsayB0byB1c2VyIHRocm91Z2ggUEFNX0NPTlYgKi8KLXN0YXRpYyBp
bnQgbW9kX3RhbGtfdG91c2VyKHBhbV9oYW5kbGVfdCAqcGFtaCwgdW5zaWduZWQgKm1vZF9vcHQs
Ci0gICAgY2hhciAqbXNnX3RleHQsIGNoYXIgKipyZXNwb25zZSkKK3N0YXRpYyBpbnQgbW9kX3Rh
bGtfdG91c2VyKHBhbV9oYW5kbGVfdCAqcGFtaCwgdW5zaWduZWQgbW9kX29wdCwKKyAgICBjb25z
dCBjaGFyICppbmZvX3RleHQsIGNvbnN0IGNoYXIgKnByb21wdF90ZXh0LCBpbnQgZWNob19vbiwg
Y2hhciAqKnJlc3BvbnNlKQogewotICBzdHJ1Y3QgcGFtX21lc3NhZ2UgbWVzc2FnZTsKLSAgY29u
c3Qgc3RydWN0IHBhbV9tZXNzYWdlICpwbWVzc2FnZSA9ICZtZXNzYWdlOworICBzdHJ1Y3QgcGFt
X21lc3NhZ2UgbWVzc2FnZVsyXSwgKnBtZXNzYWdlWzJdOwogICBzdHJ1Y3QgcGFtX2NvbnYgKmNv
bnYgPSBOVUxMOwogICBzdHJ1Y3QgcGFtX3Jlc3BvbnNlICpwcmVzcG9uc2UgPSBOVUxMOwotCisg
IGludCBpPTA7CisgIAogICAvKiBCZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5ICovCiAgICpyZXNwb25z
ZSA9IE5VTEw7CiAKICAgLyogQmUgcGFyYW5vaWQgKi8KICAgbWVtc2V0KCZtZXNzYWdlLCAwLCBz
aXplb2YobWVzc2FnZSkpOwogCi0gIC8qIFR1cm4gb24vb2ZmIFBBTSBlY2hvICovCi0gIGlmICgq
bW9kX29wdCAmIF9NT0RfRUNIT19PRkYpCi0gICAgbWVzc2FnZS5tc2dfc3R5bGUgPSBQQU1fUFJP
TVBUX0VDSE9fT0ZGOwotICBlbHNlCi0gICAgbWVzc2FnZS5tc2dfc3R5bGUgPSBQQU1fUFJPTVBU
X0VDSE9fT047CisgIHBtZXNzYWdlWzBdID0gJm1lc3NhZ2VbMF07CisgIHBtZXNzYWdlWzFdID0g
Jm1lc3NhZ2VbMV07CisgIAorICAvKiBTZXQgaW5mbyB0ZXh0LCBpZiBhbnkgKi8KKyAgaWYgKGlu
Zm9fdGV4dCkgeworICAgIG1lc3NhZ2VbaV0ubXNnID0gaW5mb190ZXh0OworICAgIG1lc3NhZ2Vb
aV0ubXNnX3N0eWxlID0gUEFNX1RFWFRfSU5GTzsKKyAgICBpKys7CisgIH0KICAgCi0gIC8qIFBv
aW50IHRvIGNvbnZlcnNhdGlvbiB0ZXh0ICovCi0gIG1lc3NhZ2UubXNnID0gbXNnX3RleHQ7Cisg
IC8qIFNldCBwcm9tcHQgdGV4dCAqLworICBtZXNzYWdlW2ldLm1zZyA9IHByb21wdF90ZXh0Owor
ICBtZXNzYWdlW2ldLm1zZ19zdHlsZSA9IGVjaG9fb24gPyBQQU1fUFJPTVBUX0VDSE9fT04gOiBQ
QU1fUFJPTVBUX0VDSE9fT0ZGOworICBpKys7CiAKICAgLyogRG8gY29udmVyc2F0aW9uIGFuZCBz
ZWUgaWYgYWxsIGlzIE9LICovCi0jaWYgZGVmaW5lZCBMSU5VWCB8fCBkZWZpbmVkIEJTRAotICBp
ZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9DT05WLCAoY29uc3Qgdm9pZCAqKikmY29udikKLSNl
bHNlCi0gIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX0NPTlYsICh2b2lkICoqKSZjb252KQot
I2VuZGlmCi0gICAgICAhPSBQQU1fU1VDQ0VTUykKLSAgewotICAgIGlmICgqbW9kX29wdCAmIF9N
T0RfREVCVUcpCi0gICAgICBzeXNsb2coTE9HX0RFQlVHLCAiZXJyb3IgaW4gY29udmVyc2F0aW9u
Iik7CisgIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX0NPTlYsIChjb25zdCB2b2lkICoqKSZj
b252KSAhPSBQQU1fU1VDQ0VTUykgeworICAgIExPR0RFQlVHKChMT0dfREVCVUcsICJlcnJvciBp
biBjb252ZXJzYXRpb24iKSk7CiAgICAgcmV0dXJuIFBBTV9TRVJWSUNFX0VSUjsKICAgfQotCi0g
IC8qIENvbnZlcnQgaW50byBwYW1fcmVzcG9uc2UgLSBvbmx5IDEgcmVwbHkgZXhwZWN0ZWQgKi8K
LSNpZiBkZWZpbmVkIExJTlVYIHx8IGRlZmluZWQgQlNECi0gIGlmIChjb252LT5jb252KDEsICZw
bWVzc2FnZSwgJnByZXNwb25zZSwKKyAgLyogQ29udmVydCBpbnRvIHBhbV9yZXNwb25zZSAqLwor
ICBpZiAoY29udi0+Y29udihpLCAoY29uc3Qgc3RydWN0IHBhbV9tZXNzYWdlICoqKXBtZXNzYWdl
LCAmcHJlc3BvbnNlLAogICAgICAgICBjb252LT5hcHBkYXRhX3B0cikKLSNlbHNlCi0gIGlmIChj
b252LT5jb252KDEsIChzdHJ1Y3QgcGFtX21lc3NhZ2UgKiopJnBtZXNzYWdlLCAmcHJlc3BvbnNl
LAotICAgICAgICBjb252LT5hcHBkYXRhX3B0cikKLSNlbmRpZgogICAgICE9IFBBTV9TVUNDRVNT
KQogICB7CiAgICAgX3BhbV9kZWxldGUocHJlc3BvbnNlLT5yZXNwKTsKQEAgLTM4NSwxMCArMjUz
LDEwIEBACiAgIGlmIChwcmVzcG9uc2UgIT0gTlVMTCkKICAgewogICAgIC8qIFNhdmUgYWRkcmVz
cyAqLwotICAgICpyZXNwb25zZSA9IHByZXNwb25zZS0+cmVzcDsKKyAgICAqcmVzcG9uc2UgPSBw
cmVzcG9uc2VbaS0xXS5yZXNwOwogICAgIC8qIFRvIGVuc3VyZSB0aGF0IHJlc3BvbnNlIGFkZHJl
c3Mgd2lsbCBub3QgYmUgZXJhc2VkICovCi0gICAgcHJlc3BvbnNlLT5yZXNwID0gTlVMTDsKLSAg
ICBfcGFtX2Ryb3AocHJlc3BvbnNlKTsKKyAgICBwcmVzcG9uc2VbaS0xXS5yZXNwID0gTlVMTDsK
KyAgICBfcGFtX2Ryb3BfcmVwbHkocHJlc3BvbnNlLGkpOwogICB9CiAgIGVsc2UKICAgICByZXR1
cm4gUEFNX1NFUlZJQ0VfRVJSOwpkaWZmIC1OdXIgcGFtX3NrZXktMS4xLjQvcGFtX3NrZXkuaCBw
YW1fc2tleS9wYW1fc2tleS5oCi0tLSBwYW1fc2tleS0xLjEuNC9wYW1fc2tleS5oCTIwMDUtMDYt
MTggMTQ6MzY6MTguMDAwMDAwMDAwICswMjAwCisrKyBwYW1fc2tleS9wYW1fc2tleS5oCTIwMDYt
MDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAwCkBAIC0yMiwyOSArMjIsMjUgQEAKICAqLwog
CiAvKiBQcm90b3R5cGVzICovCi0jaWZuZGVmIEJTRAotZXh0ZXJuIGludCBza2V5aW5mbyhzdHJ1
Y3Qgc2tleSAqLCBjaGFyICosIGNoYXIgKik7IC8qIE9SR0ghIE5vdCBpbiBza2V5LmggKi8KLSNl
bmRpZgotCiBzdGF0aWMgdm9pZCBtb2RfZ2V0b3B0KHVuc2lnbmVkICosIGludCwgY29uc3QgY2hh
ciAqKik7Ci1zdGF0aWMgaW50IG1vZF90YWxrX3RvdXNlcihwYW1faGFuZGxlX3QgKiwgdW5zaWdu
ZWQgKiwgY2hhciAqLCBjaGFyICoqKTsKK3N0YXRpYyBpbnQgbW9kX3RhbGtfdG91c2VyKHBhbV9o
YW5kbGVfdCAqLCB1bnNpZ25lZCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY2hh
ciAqKik7CiAKIC8qIGZyZWUoKSBtYWNybyAqLwotI2RlZmluZSBfcGFtX2Ryb3AoWCkgIFwKKy8q
I2RlZmluZSBfcGFtX2Ryb3AoWCkgIFwKIGlmIChYICE9IE5VTEwpICAgICAgICBcCiB7ICAgICAg
ICAgICAgICAgICAgICAgXAogICBmcmVlKFgpOyAgICAgICAgICAgIFwKICAgWCA9IE5VTEw7ICAg
ICAgICAgICBcCi19Cit9Ki8KIAogLyogU2VjdXJlIG92ZXJ3cml0ZSAqLwotI2RlZmluZSBfcGFt
X292ZXJ3cml0ZSh4KSAgIFwKKy8qI2RlZmluZSBfcGFtX292ZXJ3cml0ZSh4KSAgIFwKIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgIHJlZ2lzdGVyIGNoYXIgKl9feHhfXzsgICAgXAog
ICBpZiAoKF9feHhfXyA9ICh4KSkpICAgICAgIFwKICAgICB3aGlsZSAoKl9feHhfXykgICAgICAg
ICBcCiAgICAgKl9feHhfXysrID0gJ1wwJzsgICAgICAgXAotfQorfSovCiAKIC8qIERyb3AtaW4g
c2VjdXJlIHJlcGxhY2VtZW50IC0gd2UgZG8gbm90IHdhbnQgY2xlYXJ0ZXh0IHBhc3N3b3JkcyBs
eWluZwogICogc2NhdHRlcmVkIGFyb3VuZCAqLwpAQCAtNTYsNyArNTIsNyBAQAogCiAvKiBUaGlz
IHdpbGwgZ2V0IHVzIHJpZCBvZiBmaXJzdCAnXG4nIGluIHJlc3BvbnNlIHN0cmluZyBhbmQgY3V0
LW9mZiB0aGUKICAqIHJlc3Qgb2YgdGhlIHN0cmluZy4gSXQgc2hvdWxkIGJlIEFTQ0lJWiwgb2Yg
Y291cnNlICovCi0jZGVmaW5lIF9wYW1fZGVnYXJiYWdlKHgpICAgICAgXAorLyojZGVmaW5lIF9w
YW1fZGVnYXJiYWdlKHgpICAgICAgXAogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgcmVnaXN0ZXIgY2hhciAqX194eF9fOyAgICAgICBcCiAgICAgaWYgKChfX3h4X18gPSAoeCkp
KSAgICAgICAgXApAQCAtNzAsMzAgKzY2LDI1IEBACiAgICAgICAgIGVsc2UgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAgIF9feHhfXysrOyAgICAgICAgICAgIFwKICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICBcCi19Cit9Ki8KIAogLyogSGFuZHkgZW1wdHkgQVVUSFRPSyBtYWNy
byAqLwogI2RlZmluZSBlbXB0eV9hdXRodG9rKGEpIChhID09IE5VTEwgfHwgISphIHx8ICphID09
ICdcbicpCiAKLS8qIE1heGltdW0gY2hhbGxlbmdlIHNpemUuIEl0IHNob3VsZCBiZSA2NCwgYnV0
IGJlIHN1cmUgKi8KLSNkZWZpbmUgQ0hBTExFTkdFX01BWFNJWkUgMTI4Ci0KIC8qIERlZmluZSBt
b2R1bGUgZmxhZ3MgKi8KLSNkZWZpbmUgX01PRF9OT05FX09OICAgICAgICAweDAwMDAgICAgICAv
KiBHZW5lcmljIGZsYWcgKi8KLSNkZWZpbmUgX01PRF9BTExfT04gICAgKH5fTU9EX05PTkVfT04p
ICAvKiBHZW5lcmljIG1hc2sgKi8KLSNkZWZpbmUgX01PRF9ERUJVRyAgICAgICAgICAweDAwMDEg
ICAgICAvKiBEZWJ1Z2dpbmcgb3B0aW9ucyBvbiAqLwotI2RlZmluZSBfTU9EX0VDSE9fT0ZGICAg
ICAgIDB4MDAwMiAgICAgIC8qIFBBTV9FQ0hPX09GRiAqLwotI2RlZmluZSBfTU9EX0FDQ0VTU19D
SEVDSyAgIDB4MDAwNCAgICAgIC8qIENoZWNrIFMvS2V5IGFjY2VzcyBwZXJtaXNzaW9ucyAqLwot
I2RlZmluZSBfTU9EX1VTRV9GSVJTVF9QQVNTIDB4MDAwOCAgICAgIC8qIFVzZSBQQU1fQVVUSFRP
SyAqLwotI2RlZmluZSBfTU9EX09OTFlfT05FX1RSWSAgIDB4MDAxMCAgICAgIC8qIE9ubHkgb25l
IHRyeSwgbm8gbWF0dGVyIG9mIGVjaG8gKi8KLSNkZWZpbmUgX01PRF9TUEFDRVIgICAgICAgICAw
eDAwMjAgICAgICAvKiBDdXJyZW50bHkgdW51c2VkICovCisjZGVmaW5lIF9NT0RfTk9ORV9PTiAg
ICAgICAgIDB4MDAwMAkvKiBHZW5lcmljIGZsYWcgKi8KKyNkZWZpbmUgX01PRF9BTExfT04gICAg
KH5fTU9EX05PTkVfT04pCS8qIEdlbmVyaWMgbWFzayAqLworI2RlZmluZSBfTU9EX0RFQlVHICAg
ICAgICAgICAweDAwMDEJLyogRGVidWdnaW5nIG9wdGlvbnMgb24gKi8KKyNkZWZpbmUgX01PRF9U
UllfRklSU1RfUEFTUyAgMHgwMDAyCS8qIEF0dGVtcHQgdXNpbmcgUEFNX0FVVEhUT0sgKi8KKyNk
ZWZpbmUgX01PRF9VU0VfRklSU1RfUEFTUyAgMHgwMDA0CS8qIE9ubHkgdXNlIFBBTV9BVVRIVE9L
ICovCisjZGVmaW5lIF9NT0RfTk9fREVGQVVMVF9TS0VZIDB4MDAwOAkvKiBEb24ndCB1c2UgUy9L
ZXkgYnkgZGVmYXVsdCAqLwogCiAvKiBTZXR1cCBkZWZhdWx0cyAtIHVzZSBlY2hvIG9mZiBvbmx5
ICovCi0jZGVmaW5lIF9NT0RfREVGQVVMVF9GTEFHICAgX01PRF9FQ0hPX09GRgorI2RlZmluZSBf
TU9EX0RFRkFVTFRfRkxBRyAgIF9NT0RfTk9ORV9PTgogI2RlZmluZSBfTU9EX0RFRkFVTFRfTUFT
SyAgIF9NT0RfQUxMX09OCiAKIC8qIE51bWJlciBvZiBwYXJhbWV0ZXJzIGN1cnJlbnRseSBrbm93
biAqLwotI2RlZmluZSBfTU9EX0FSR1MgICAgICAgICAgIDgKKyNkZWZpbmUgX01PRF9BUkdTICAg
ICAgICAgICA0CiAKIC8qIFN0cnVjdHVyZSBmb3IgZmxleGlibGUgYXJndW1lbnQgcGFyc2luZyAq
LwogdHlwZWRlZiBzdHJ1Y3QKQEAgLTEwOCwxMSArOTksNyBAQAogewogICAvKiBTdHJpbmcgICAg
ICAgICAgICBNYXNrICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZyAqLwogICB7ImRlYnVn
IiwgICAgICAgICAgICBfTU9EX0FMTF9PTiwgICAgICAgICAgICAgICAgICAgX01PRF9ERUJVR30s
Ci0gIHsiZWNobz1vZmYiLCAgICAgICAgIF9NT0RfQUxMX09OLCAgICAgICAgICAgICAgICAgICBf
TU9EX0VDSE9fT0ZGfSwKLSAgeyJlY2hvPW9uIiwgICAgICAgICAgX01PRF9BTExfT05eX01PRF9F
Q0hPX09GRiwgICAgIF9NT0RfTk9ORV9PTn0sCi0gIHsiYWNjZXNzX2NoZWNrPW9uIiwgIF9NT0Rf
QUxMX09OLCAgICAgICAgICAgICAgICAgICBfTU9EX0FDQ0VTU19DSEVDS30sCi0gIHsiYWNjZXNz
X2NoZWNrPW9mZiIsIF9NT0RfQUxMX09OXl9NT0RfQUNDRVNTX0NIRUNLLCBfTU9EX05PTkVfT059
LAorICB7InRyeV9maXJzdF9wYXNzIiwgICBfTU9EX0FMTF9PTiwgICAgICAgICAgICAgICAgICAg
X01PRF9UUllfRklSU1RfUEFTU30sCiAgIHsidXNlX2ZpcnN0X3Bhc3MiLCAgIF9NT0RfQUxMX09O
LCAgICAgICAgICAgICAgICAgICBfTU9EX1VTRV9GSVJTVF9QQVNTfSwKLSAgeyJ0cnlfZmlyc3Rf
cGFzcyIsICAgX01PRF9BTExfT04sICAgICAgICAgICAgICAgICAgIF9NT0RfVVNFX0ZJUlNUX1BB
U1N9LAotICB7Im9ubHlfb25lX3RyeSIsICAgICBfTU9EX0FMTF9PTiwgICAgICAgICAgICAgICAg
ICAgX01PRF9PTkxZX09ORV9UUll9CisgIHsibm9fZGVmYXVsdF9za2V5IiwgIF9NT0RfQUxMX09O
LCAgICAgICAgICAgICAgICAgICBfTU9EX05PX0RFRkFVTFRfU0tFWX0KIH07CmRpZmYgLU51ciBw
YW1fc2tleS0xLjEuNC9wYW1fc2tleV9hY2Nlc3MuYyBwYW1fc2tleS9wYW1fc2tleV9hY2Nlc3Mu
YwotLS0gcGFtX3NrZXktMS4xLjQvcGFtX3NrZXlfYWNjZXNzLmMJMjAwNS0wNi0xOCAxNDozNjox
OC4wMDAwMDAwMDAgKzAyMDAKKysrIHBhbV9za2V5L3BhbV9za2V5X2FjY2Vzcy5jCTE5NzAtMDEt
MDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCkBAIC0xLDE2MSArMCwwIEBACi0vKiAKLSAqIChj
KSAyMDAxIERpbmtvIEtvcnVuaWMsIGtyZWF0b3JAc3JjZS5ocgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECi0gKiBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRgotICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KLSAqCi0gKiBTL0tFWSBpcyBhIHRyYWRlbWFyayBv
ZiBCZWxsY29yZS4KLSAqIE1pbmsgaXMgdGhlIGZvcm1lciBuYW1lIG9mIHRoZSBTL0tFWSBhdXRo
ZW50aWNhdGlvbiBzeXN0ZW0uCi0gKgotICogUHJvZ3JhbXMgdGhhdCBoYWQgc29tZSBpbmZsdWVu
Y2UgaW4gZGV2ZWxvcG1lbnQgb2YgdGhpcyBzb3VyY2U6Ci0gKiAgV2lldHNlIFZlbmVtYSdzIGxv
Z2RhZW1vbiBwYWNrYWdlCi0gKiAgT2xhZiBLaXJjaCdzIExpbnV4IFMvS2V5IHBhY2thZ2UKLSAq
ICBMaW51eC1QQU0gbW9kdWxlcyBhbmQgdGVtcGxhdGVzCi0gKiAgV3ltYW4gTWlsZXMnIHBhbV9z
ZWN1cmlkIG1vZHVsZQotICoKLSAqIFNob3VsZCB5b3UgY2hvb3NlIHRvIHVzZSBhbmQvb3IgbW9k
aWZ5IHRoaXMgc291cmNlIGNvZGUsIHBsZWFzZSBkbyBzbwotICogdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB1bmRlciB3aGljaCB0aGlzCi0gKiBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkLgotICovCi0KLXN0YXRpYyBjaGFyIHJjc2lkW10gPSAiJElkOiBw
YW1fc2tleV9hY2Nlc3MuYyx2IDEuMiAyMDA1LzA2LzE4IDEyOjM2OjE4IGtyZWF0b3IgRXhwICQi
OwotCi0jaW5jbHVkZSAiZGVmcy5oIgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxz
dGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpZmRlZiBTVFJJTkdfV0lUSF9TVFJJTkdT
Ci0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lu
Y2x1ZGUgPHB3ZC5oPiAKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXNsb2cu
aD4KLQotI2RlZmluZSBQQU1fRVhURVJOIGV4dGVybgotI3VuZGVmIFBBTV9TVEFUSUMKLQotI2lu
Y2x1ZGUgPHNlY3VyaXR5L3BhbV9hcHBsLmg+Ci0jaW5jbHVkZSA8c2VjdXJpdHkvcGFtX21vZHVs
ZXMuaD4KLQotI2luY2x1ZGUgInNrZXkuaCIKLSNpbmNsdWRlICJwYW1fc2tleS5oIgotI2luY2x1
ZGUgIm1pc2MuaCIKLQotUEFNX0VYVEVSTiBpbnQgcGFtX3NtX3NldGNyZWQgKHBhbV9oYW5kbGVf
dCAqcGFtaCwgaW50IGZsYWdzLAotICBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCi17Ci0g
IHJldHVybiBQQU1fU1VDQ0VTUzsKLX0KLQotUEFNX0VYVEVSTiBpbnQgcGFtX3NtX2F1dGhlbnRp
Y2F0ZShwYW1faGFuZGxlX3QgKnBhbWgsIGludCBmbGFncywKLSAgaW50IGFyZ2MsIGNvbnN0IGNo
YXIgKiphcmd2KQotewotICBjaGFyICp1c2VybmFtZSA9IE5VTEw7IC8qIHdpbGwgcG9pbnQgdG8g
dXNlcm5hbWUgKi8KLSAgdW5zaWduZWQgbW9kX29wdCA9IF9NT0RfTk9ORV9PTjsgLyogbW9kdWxl
IG9wdGlvbnMgKi8KLSAgY2hhciAqaG9zdDsgLyogd2lsbCBwb2ludCB0byBob3N0ICovCi0gIGNo
YXIgKnBvcnQ7IC8qIHdpbGwgcG9pbnQgdG8gcG9ydCAqLwotICBzdHJ1Y3QgcGFzc3dkICpwd3Vz
ZXI7Ci0KLSAgLyogR2V0IG1vZHVsZSBvcHRpb25zICovCi0gIG1vZF9nZXRvcHQoJm1vZF9vcHQs
IGFyZ2MsIGFyZ3YpOwotCi0gIC8qIEdldCB1c2VybmFtZSAqLwotI2lmIGRlZmluZWQgTElOVVgg
fHwgZGVmaW5lZCBCU0QKLSAgaWYgKHBhbV9nZXRfdXNlcihwYW1oLCAoY29uc3QgY2hhciAqKikm
dXNlcm5hbWUsICJsb2dpbjoiKSE9UEFNX1NVQ0NFU1MpCi0jZWxzZQotICBpZiAocGFtX2dldF91
c2VyKHBhbWgsIChjaGFyICoqKSZ1c2VybmFtZSwgImxvZ2luOiIpIT1QQU1fU1VDQ0VTUykKLSNl
bmRpZgotICB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZGV0ZXJtaW5lIHVzZXJuYW1l
XG4iKTsKLSAgICBpZiAobW9kX29wdCAmIF9NT0RfREVCVUcpCi0gICAgICBzeXNsb2coTE9HX0RF
QlVHLCAiY2Fubm90IGRldGVybWluZSB1c2VybmFtZSIpOwotICAgIHJldHVybiBQQU1fQVVUSElO
Rk9fVU5BVkFJTDsKLSAgfQotCi0gIGlmIChtb2Rfb3B0ICYgX01PRF9ERUJVRykKLSAgICBzeXNs
b2coTE9HX0RFQlVHLCAiZ290IHVzZXJuYW1lICVzIiwgdXNlcm5hbWUpOwotCi0gIC8qIENoZWNr
IFMvS2V5IGFjY2VzcyBwZXJtaXNzaW9ucyAtIHVzZXIsIGhvc3QgYW5kIHBvcnQuIEFsc28gaW5j
bHVkZQotICAgKiBzYW5pdHkgY2hlY2tzICovCi0gIC8qIEdldCBob3N0Li4gKi8KLSNpZiBkZWZp
bmVkIExJTlVYIHx8IGRlZmluZWQgQlNECi0gIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX1JI
T1NULCAoY29uc3Qgdm9pZCAqKikmaG9zdCkKLSNlbHNlCi0gIGlmIChwYW1fZ2V0X2l0ZW0ocGFt
aCwgUEFNX1JIT1NULCAodm9pZCAqKikmaG9zdCkKLSNlbmRpZgotICAgICE9IFBBTV9TVUNDRVNT
KQotICAgICAgaG9zdCA9IE5VTEw7Ci0gIC8qIC4uYW5kIHBvcnQgKi8KLSNpZmRlZiBMSU5VWAot
ICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9UVFksIChjb25zdCB2b2lkICoqKSZwb3J0KQot
I2Vsc2UKLSAgaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fVFRZLCAodm9pZCAqKikmcG9ydCkK
LSNlbmRpZgotICAgICE9IFBBTV9TVUNDRVNTKQotICAgICAgcG9ydCA9IE5VTEw7Ci0KLSAgaWYg
KG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgIHN5c2xvZyhMT0dfREVCVUcsICJjaGVja2luZyBz
L2tleSBhY2Nlc3MgZm9yIHVzZXIgJXMsIgotICAgICAgIiBob3N0ICVzLCBwb3J0ICVzIiwgdXNl
cm5hbWUsCi0gICAgICAoaG9zdCAhPSBOVUxMKSA/IGhvc3QgOiAiKnVua25vd24qIiwKLSAgICAg
IChwb3J0ICE9IE5VTEwpID8gcG9ydCA6ICIqdW5rbm93bioiKTsKLQotICAvKiBHZXQgaW5mb3Jt
YXRpb24gZnJvbSBwYXNzd2QgZmlsZSAqLwotICBpZiAoKHB3dXNlciA9IGdldHB3bmFtKHVzZXJu
YW1lKSkgPT0gTlVMTCkKLSAgewotICAgIGZwcmludGYoc3RkZXJyLCAibm8gc3VjaCB1c2VyXG4i
KTsKLSAgICBzeXNsb2coTE9HX05PVElDRSwgImNhbm5vdCBmaW5kIHVzZXIgJXMiLAotICAgICAg
dXNlcm5hbWUpOwotICAgIHJldHVybiBQQU1fQVVUSElORk9fVU5BVkFJTDsKLSAgfQotCi0jaWZk
ZWYgSEFWRV9TS0VZQUNDRVNTCi0KLSAgLyogRG8gYWN0dWFsIGNoZWNraW5nIC0gd2UgYXNzdW1l
IHNrZXlhY2Nlc3MoKSByZXR1cm5zIFBFUk1JVCB3aGljaCBpcwotICAgKiBieSBkZWZhdWx0IDEu
IE5vdGljZSA0dGggYXJndW1lbnQgaXMgTlVMTCAtIHdlIHdpbGwgbm90IHBlcmZvcm0KLSAgICog
YWRkcmVzcyBjaGVja3Mgb24gaG9zdCBpdHNlbGYgKi8KLSAgaWYgKHNrZXlhY2Nlc3MocHd1c2Vy
LCBwb3J0LCBob3N0LCBOVUxMKSAhPSAxKQotICB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJubyBz
L2tleSBhY2Nlc3MgcGVybWlzc2lvbnNcbiIpOwotICAgIHN5c2xvZyhMT0dfTk9USUNFLCAibm8g
cy9rZXkgYWNjZXNzIHBlcm1pc3Npb25zIGZvciAlcyIsCi0gICAgICAgIHVzZXJuYW1lKTsKLSAg
ICByZXR1cm4gUEFNX0FVVEhfRVJSOwotICB9Ci0KLSNlbmRpZiAvKiBIQVZFX1NLRVlBQ0NFU1Mg
Ki8KLQotICByZXR1cm4gUEFNX1NVQ0NFU1M7Ci19Ci0KLS8qIEdldCBtb2R1bGUgb3B0aW9uYWwg
cGFyYW1ldGVycyAqLwotc3RhdGljIHZvaWQgbW9kX2dldG9wdCh1bnNpZ25lZCAqbW9kX29wdCwg
aW50IG1vZF9hcmdjLCBjb25zdCBjaGFyICoqbW9kX2FyZ3YpCi17Ci0gIGludCBpOwotCi0gIC8q
IFNldHVwIHJ1bnRpbWUgZGVmYXVsdHMgKi8KLSAgKm1vZF9vcHQgfD0gX01PRF9ERUZBVUxUX0ZM
QUc7Ci0gICptb2Rfb3B0ICY9IF9NT0RfREVGQVVMVF9NQVNLOwotCi0gIC8qIFNldHVwIHJ1bnRp
bWUgb3B0aW9ucyAqLwotICB3aGlsZSAobW9kX2FyZ2MtLSkKLSAgewotICAgIGZvciAoaSA9IDA7
IGkgPCBfTU9EX0FSR1M7ICsraSkKLSAgICB7Ci0gICAgICBpZiAobW9kX2FyZ3NbaV0udG9rZW4g
IT0gTlVMTCAmJgotICAgICAgICAgICFzdHJuY21wKCptb2RfYXJndiwgbW9kX2FyZ3NbaV0udG9r
ZW4sCi0gICAgICAgICAgICBzdHJsZW4obW9kX2FyZ3NbaV0udG9rZW4pKSkKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGlmIChpID49IF9NT0RfQVJHUykKLSAgICAgIHN5c2xvZyhMT0dfRVJS
LCAidW5rbm93biBvcHRpb24gJXMiLCAqbW9kX2FyZ3YpOwotICAgIGVsc2UKLSAgICB7Ci0gICAg
ICAqbW9kX29wdCAmPSBtb2RfYXJnc1tpXS5tYXNrOyAvKiBUdXJuIG9mZiAqLwotICAgICAgKm1v
ZF9vcHQgfD0gbW9kX2FyZ3NbaV0uZmxhZzsgLyogVHVybiBvbiAqLwotICAgIH0KLSAgICArK21v
ZF9hcmd2OwotICB9Ci19Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81505</attachid>
            <date>2006-03-06 03:13 0000</date>
            <desc>pam_skey-1.1.4-gentoo.patch (take 2)</desc>
            <filename>pam_skey-1.1.4-gentoo.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTnVyIHBhbV9za2V5LTEuMS40L0lOU1RBTEwgcGFtX3NrZXkvSU5TVEFMTAotLS0gcGFt
X3NrZXktMS4xLjQvSU5TVEFMTAkyMDA1LTA2LTE4IDE0OjExOjI0LjAwMDAwMDAwMCArMDIwMAor
KysgcGFtX3NrZXkvSU5TVEFMTAkyMDA2LTAzLTA2IDA5OjI2OjU1LjAwMDAwMDAwMCArMDEwMApA
QCAtMSw1ICsxLDM5IEBACiAkSWQ6IElOU1RBTEwsdiAxLjEuMS4xIDIwMDUvMDYvMTggMTI6MTE6
MjQga3JlYXRvciBFeHAgJAogCitHZW50b28gcGF0Y2gKKy0tLS0tLS0tLS0tLQorTW9zdCBldmVy
eXRoaW5nIGJlbG93IHN0aWxsIGhvbGRzLCB0aG91Z2ggdGhlIGxpYnJhcmllcyByZXF1aXJlZCBh
cmUgbm93Cit0aG9zZSB1c2VkIGJ5IEdlbnRvby4gIE90aGVyIFMvS2V5IGxpYnJhcmllcyBtYXkg
d29yayB3aXRoIGEgYml0IG9mCit0d2Vha2luZy4KKworVGhlIG9wdGlvbnMgbGlzdGVkIGZvciB0
aGUgbW9kdWxlIGJlbG93IGFyZSBubyBsb25nZXIgdmFsaWQuICBTZWUgdGhlCitHZW50b28gcGF0
Y2ggc2VjdGlvbiBpbiBSRUFETUUgZm9yIGRldGFpbHMuCisKK1RoZSBpbnRlbmRlZCBtZXRob2Qg
Zm9yIGNvbmZpZ3VyaW5nIFBBTSBpcyBieSB1c2luZyB0aGUgbmV3ZXIgbW9kdWxlCitzcGVjaWZp
Y2F0aW9uLCB3aXRoIGEgbGluZSBsaWtlOgorCithdXRoCVtzdWNjZXNzPWRvbmUgaWdub3JlPWln
bm9yZSBhdXRoX2Vycj1kaWUgZGVmYXVsdD1iYWRdIC9saWIvc2VjdXJpdHkvcGFtX3NrZXkuc28K
KworVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdGFuZGFyZCAic3VmZmljaWVudCIgYW5k
ICJyZXF1aXNpdGUiCitzcGVjaWZpY2F0aW9uczoKKworLSBJZiB0aGUgbW9kdWxlIHJldHVybnMg
UEFNX1NVQ0NFU1MsIHdlIGFyZSBhdXRoZW50aWNhdGVkIGFuZCBubyBvdGhlcgorICBtb2R1bGVz
IHNob3VsZCBiZSB0ZXN0ZWQuCistIElmIHRoZSBtb2R1bGUgcmV0dXJucyBQQU1fSUdOT1JFLCB0
aGVuIHRoZSBtb2R1bGUgZGlkbid0IGFjY2VwdCBpdHMKKyAgaW5wdXQgYXMgYW4gUy9LZXkgcmVz
cG9uc2UsIGFuZCB0aGUgbmV4dCBtb2R1bGUgc2hvdWxkIHRyeSB1c2luZworICB0aGUgaW5wdXQg
KHVzaW5nIHRoZSB0cnlfZmlyc3RfcGFzcyBvcHRpb24pLgorLSBJZiB0aGUgbW9kdWxlIHJldHVy
bnMgUEFNX0FVVEhfRVJSLCB0aGVuIHRoZSBtb2R1bGUgYWNjZXB0ZWQgYW4KKyAgUy9LZXkgaW5w
dXQgYnV0IGl0IHdhcyBpbnZhbGlkLiAgRG8gbm90IHRyeSBhbnkgbW9yZSBtb2R1bGVzIGluIHRo
ZQorICBzdGFjazsgdGhlIHVzZXIgYWxyZWFkeSBjaG9zZSBTL0tleSBhdXRoZW50aWNhdGlvbi4K
Ky0gSWYgdGhlIG1vZHVsZSByZXR1cm5zIGFueSBvdGhlciBjb2RlLCBpdCBpcyBhIHNpbXBsZSBl
cnJvciBpbiBwcm9jZXNzaW5nLgorICBTZXQgdGhlIGVycm9yIGZsYWcgYnV0IHRyeSBvdGhlciBt
b2R1bGVzLCBqdXN0IGluIGNhc2UuCisKK1RoZSBtb2R1bGUgaXMgaW50ZW5kZWQgdG8gYmUgcGxh
Y2VkIGJlZm9yZSBhbm90aGVyIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSwKK2xpa2UgcGFtX3VuaXgu
c287IGlmIG5vdCwgaXQgc2hvdWxkIGJlIHBsYWNlZCBiZWZvcmUgcGFtX2Rlbnkuc28uCisKK0lm
IHRoZSBuZXdlciBtb2R1bGUgc3BlY2lmaWNhdGlvbiBpcyB1bmF2YWlsYWJsZSBpbiB5b3VyIHZl
cnNpb24gb2YgUEFNLAordGhlICJzdWZmaWNpZW50IiBzcGVjaWZpY2F0aW9uIHdpbGwgd29yay4K
KwogUmVxdWlyZWQKIC0tLS0tLS0tCiBGb3IgYnVpbGRpbmcgdGhpcyBwYWNrYWdlIHlvdSB3aWxs
IHByb2JhYmx5IG5lZWQgb3JpZ2luYWwgV2lldHNlIFZlbmVtYSdzCmRpZmYgLU51ciBwYW1fc2tl
eS0xLjEuNC9NYWtlZmlsZS5pbiBwYW1fc2tleS9NYWtlZmlsZS5pbgotLS0gcGFtX3NrZXktMS4x
LjQvTWFrZWZpbGUuaW4JMjAwNS0wNi0xOCAxNDoxMToyNC4wMDAwMDAwMDAgKzAyMDAKKysrIHBh
bV9za2V5L01ha2VmaWxlLmluCTIwMDYtMDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAwCkBA
IC0xMiw0MiArMTIsMjYgQEAKIExJQlM9QExJQlNAIEBTS0VZTElCQCBAUEFNTElCQAogTERGTEFH
Uz1ATERGTEFHU0AKIAotSU5TVEFMTD1ASU5TVEFMTEAgLW0gNjQ0CitJTlNUQUxMPUBJTlNUQUxM
QAorSU5TVEFMTF9MSUI9JHtJTlNUQUxMfSAtbSA3NTUKIFJNPUBSTUAgLWYKIENQPUBDUEAgLWYK
IExOPUBMTkAgLXMKIEFXSz1AQVdLQAogCi1QQU1fRklMRVM9cGFtX3NrZXkuc28uMSBwYW1fc2tl
eV9hY2Nlc3Muc28uMQorUEFNX0ZJTEVTPXBhbV9za2V5LnNvCiAKIGFsbDogJChQQU1fRklMRVMp
CiAKLXBhbV9za2V5LnNvLjE6IHBhbV9za2V5Lm8KLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJDwg
JChMSUJTKSAkKExERkxBR1MpCi0KLXBhbV9za2V5X2FjY2Vzcy5zby4xOiBwYW1fc2tleV9hY2Nl
c3MubworcGFtX3NrZXkuc286IHBhbV9za2V5Lm8KIAkkKENDKSAkKENGTEFHUykgLW8gJEAgJDwg
JChMSUJTKSAkKExERkxBR1MpCiAKIGxpbnQtcGFtX3NrZXk6CiAJbGNsaW50ICQoQ0ZMQUdTKSBw
YW1fc2tleS5jCiAKLWxpbnQtcGFtX3NrZXlfYWNjZXNzOgotCWxjbGludCAkKENGTEFHUykgcGFt
X3NrZXlfYWNjZXNzLmMKLQotaW5zdGFsbDoKLQlAaWYgdGVzdCAhIC1kICQoSU5TVEFMTERJUik7
IHRoZW4gXAotCQllY2hvICJNaXNzaW5nICQoSU5TVEFMTERJUikuIFByb2JsZW0gd2l0aCBQQU0g
aW5zdGFsbGF0aW9uPyI7IFwKLQllbHNlIFwKLQkJZm9yIGZpbGUgaW4gJChQQU1fRklMRVMpOyBk
byBcCi0JCQlpZiB0ZXN0ICEgLWYgIiQoSU5TVEFMTERJUikvJCRmaWxlIjsgdGhlbiBcCi0JCQkJ
ZWNobyAiSW5zdGFsbGluZyAkJGZpbGUgaW4gJChJTlNUQUxMRElSKSI7IFwKLQkJCQkkKElOU1RB
TEwpICIkJGZpbGUiICIkKElOU1RBTExESVIpLyQkZmlsZSI7IFwKLQkJCQkoY2QgJChJTlNUQUxM
RElSKSAmJiAkKExOKSAiJCRmaWxlIiBgZWNobyAkJGZpbGUgfCBjdXQgLWQuIC1mMSwyYCk7IFwK
LQkJCWVsc2UgXAotCQkJCWVjaG8gIiQkZmlsZSBleGlzdHMgLSB3aWxsIG5vdCBvdmVyd3JpdGUg
aXQiOyBcCi0JCQlmaSBcCi0JCWRvbmUgXAotCWZpCitpbnN0YWxsOiBhbGwKKwkkKElOU1RBTEwp
IC1kICQoSU5TVEFMTERJUikKKwkkKElOU1RBTExfTElCKSAkKFBBTV9GSUxFUykgJChJTlNUQUxM
RElSKQogCiBjbGVhbjoKIAkkKFJNKSBhLm91dCBjb3JlICouc28uMSAqLm8gKi5iYWsKZGlmZiAt
TnVyIHBhbV9za2V5LTEuMS40L1JFQURNRSBwYW1fc2tleS9SRUFETUUKLS0tIHBhbV9za2V5LTEu
MS40L1JFQURNRQkyMDA1LTA2LTE4IDE0OjM2OjE4LjAwMDAwMDAwMCArMDIwMAorKysgcGFtX3Nr
ZXkvUkVBRE1FCTIwMDYtMDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAwCkBAIC0xLDUgKzEs
NzcgQEAKICRJZDogUkVBRE1FLHYgMS4yIDIwMDUvMDYvMTggMTI6MzY6MTgga3JlYXRvciBFeHAg
JAogCitHZW50b28gcGF0Y2gKKy0tLS0tLS0tLS0tLQorCitUaGUgR2VudG9vIHBhbV9za2V5IHBh
dGNoIGNoYW5nZXMgdGhlIG9yaWdpbmFsIG1vZHVsZSBpbiBhIG51bWJlciBvZiB3YXlzLgorVGhl
IGJlaGF2aW9yIG9mIHRoZSBtb2R1bGUgaXMgY2hhbmdlZCB0byBtYWtlIGl0IG1vcmUgY29uc2lz
dGVudCB3aXRoIHRoZQorUEFNIGRlc2lnbiwgYW5kIHNldmVyYWwgY2hhbmdlcyB3ZXJlIG1hZGUg
dGhyb3VnaG91dCB0aGUgY29kZSB0byBtYWtlIHRoZQorbW9kdWxlIGludGVyYWN0IGJldHRlciB3
aXRoIHRoZSBza2V5IGxpYnJhcnkgdXNlZCBieSBHZW50b28uICBNYW55IG9mCit0aGVzZSBjaGFu
Z2VzIHdpbGwgYnJlYWsgcGFtX3NrZXkncyBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgc3lzdGVt
cyBhbmQKK2xpYnJhcmllcywgYnV0IHRoaXMgaXMsIGFmdGVyIGFsbCwgdGhlIEdlbnRvbyBwYXRj
aC4KKworQSAobm90IG5lY2Vzc2FyaWx5KSBleGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGNoYW5nZXMg
aXMgYXMgZm9sbG93czoKKy0gcGFtX3NrZXlfYWNjZXNzLnNvIGlzIGNvbXBsZXRlbHkgcmVtb3Zl
ZCwgc2luY2UgdGhlIEdlbnRvbyBza2V5IGxpYnJhcnkKKyAgZG9lcyBub3Qgc3VwcG9ydCB0aGUg
c2tleV9hY2Nlc3MoKSBjYWxsLgorLSBUaGUgcGFtX3NrZXkuc28gYXV0aGVudGljYXRpb24gY29k
ZSBpcyBjb21wbGV0ZWx5IHJld3JpdHRlbi4gIFRoZQorICBvcmlnaW5hbCBjb2RlIGNvbnRhaW5l
ZCBtYW55IHJlZmVyZW5jZXMgdG8gdGhlIHN0YW5kYXJkIEkvTyBsaWJyYXJ5CisgICh3cml0aW5n
IHRvIHN0ZGVyciwgZXRjLiksIGFzIHdlbGwgYXMgaW5jb25zaXN0ZW50IGNvbW11bmljYXRpb24g
d2l0aAorICB0aGUgUEFNIGxpYnJhcmllcy4gIEFsc28sIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9j
ZXNzIGlzIGRpZmZlcmVudCwgYXMKKyAgZGVzY3JpYmVkIGJlbG93LgorLSBUaGUgb3B0aW9ucyBh
Y2NlcHRlZCBieSB0aGUgcGFtX3NrZXkuc28gbW9kdWxlIGFyZSBkaWZmZXJlbnQsIGFzCisgIGRl
c2NyaWJlZCBiZWxvdy4KKworRm91ciBvcHRpb25zIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFtX3Nr
ZXkuc28gbW9kdWxlOgorICBkZWJ1ZyAgICAgICAgICAgICAgICAgIC0gVGhpcyBvcHRpb24gdHVy
bnMgb24gZGVidWcgbG9nZ2luZy4KKyAgdHJ5X2ZpcnN0X3Bhc3MgICAgICAgICAtIFRoaXMgb3B0
aW9uIHRlbGxzIHRoZSBtb2R1bGUgdG8gZmlyc3QgdHJ5IHVzaW5nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGUgYXV0aGVudGljYXRpb24gdG9rZW4gcGFzc2VkIGZyb20gdGhlCisJCQkg
ICBwcmV2aW91cyBtb2R1bGUgYXMgYW4gUy9LZXkgcmVzcG9uc2UsIGJlZm9yZQorCQkJICAgaW5m
b3JtaW5nIHRoZSB1c2VyIG9mIHRoZSBjaGFsbGVuZ2UuICBJZiB0aGUKKwkJCSAgIHRva2VuIGlz
IG5vdCB2YWxpZCwgdGhlIG1vZHVsZSB3aWxsIHByb2NlZWQgd2l0aAorCQkJICAgdGhlIHN0YW5k
YXJkIHByb2Nlc3Mgb2YgY2hhbGxlbmdpbmcgdGhlIHVzZXIKKwkJCSAgIGFuZCByZXF1ZXN0aW5n
IGEgcmVzcG9uc2UsIHN1YmplY3QgdG8gdGhlCisJCQkgICBub19kZWZhdWx0X3NrZXkgb3B0aW9u
IGJlbG93LgorICB1c2VfZmlyc3RfcGFzcyAgICAgICAgIC0gVGhpcyBvcHRpb24gaXMgaWRlbnRp
Y2FsIHRvIHRoZSB0cnlfZmlyc3RfcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uLCBleGNlcHQgdGhhdCBpZiB0aGUgdG9rZW4gaXMgbm90IHZhbGlkLAorCQkJICAgaXQgd2ls
bCByZXR1cm4gc2lsZW50bHkgd2l0aG91dCBjaGFsbGVuZ2luZyB0aGUKKwkJCSAgIHVzZXIuCisg
IG5vX2RlZmF1bHRfc2tleSAgICAgICAgLSBUaGlzIGZsYWcgY2hhbmdlcyB0aGUgYmVoYXZpb3Ig
b2YgcGFtX3NrZXkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0ZWFkIG9mIGltbWVk
aWF0ZWx5IGNoYWxsZW5naW5nIHRoZSB1c2VyIHdpdGgKKwkJCSAgIGFuIFMvS2V5IGNoYWxsZW5n
ZSwgaXQgd2lsbCBwcmVzZW50IHRoZSB1c2VyIHdpdGgKKwkJCSAgIGEgc3RhbmRhcmQgIlBhc3N3
b3JkOiAiIHByb21wdC4gIElmIHRoZSB1c2VyIGVudGVycworCQkJICAgdGhlIHBhc3N3b3JkICJz
L2tleSIgKGNhc2UgaW5zZW5zaXRpdmUpLCBpdCB3aWxsCisJCQkgICB0aGVuIGNoYWxsZW5nZSB0
aGUgdXNlci4gIEFueSBvdGhlciBpbnB1dCB3aWxsCisJCQkgICBjYXVzZSB0aGUgbW9kdWxlIHRv
IHBhc3MgdGhlIGdpdmVuIHBhc3N3b3JkIHRvIHRoZQorCQkJICAgbmV4dCBtb2R1bGUgaW4gdGhl
IGF1dGhlbnRpY2F0aW9uIHN0YWNrICh1c3VhbGx5CisJCQkgICBwYW1fdW5peC5zbyB3aXRoIHRo
ZSB0cnlfZmlyc3RfcGFzcyBvcHRpb24pLgorCitUaGUgZXhhY3QgYmVoYXZpb3Igb2YgcGFtX3Nr
ZXkuc28gaXMgZGV0YWlsZWQgYmVsb3c6CisKKzEuIFJldHJpZXZlIHVzZXJuYW1lIGZyb20gUEFN
LCBwb3NzaWJseSBxdWVyeWluZyB0aGUgdXNlciBmb3IgaXQuCisyLiBJZiB0aGUgdXNlciBkb2Vz
IG5vdCBoYXZlIGFueSBTL0tleSBpbmZvcm1hdGlvbiwgcmV0dXJuIFBBTV9JR05PUkUgdG8KKyAg
IHByb2NlZWQgdG8gdGhlIG5leHQgbW9kdWxlIGluIHRoZSBzdGFjay4KKzMuIElmICpfZmlyc3Rf
cGFzcyBpcyBlbmFibGVkLCBjaGVjayB0aGUgZ2l2ZW4gYXV0aGVudGljYXRpb24gdG9rZW4gdG8g
c2VlCisgICBpZiBpdCBpcyBhIHZhbGlkIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50IFMvS2V5IGNo
YWxsZW5nZS4gIElmIHNvLAorICAgcmV0dXJuIFBBTV9TVUNDRVNTLgorIDNhLiBJZiB0aGUgdG9r
ZW4gaXMgaW52YWxpZCBhbmQgdXNlX2ZpcnN0X3Bhc3MgaXMgZW5hYmxlZCwgcmV0dXJuCisgICAg
IFBBTV9JR05PUkUuCis0LiBJZiBub19kZWZhdWx0X3NrZXkgaXMgZW5hYmxlZCwgaXNzdWUgYSAi
UGFzc3dvcmQ6ICIgcHJvbXB0LgorIDRhLiBJZiB0aGUgcmVzcG9uc2UgaXMgYW55dGhpbmcgYmVz
aWRlcyAicy9rZXkiIChjYXNlIGluc2Vuc2l0aXZlKSwKKyAgICAgc3RvcmUgaXQgYXMgdGhlIGF1
dGhlbnRpY2F0aW9uIHRva2VuIGFuZCByZXR1cm4gUEFNX0lHTk9SRS4KKzUuIERpc3BsYXkgdGhl
IGN1cnJlbnQgUy9LZXkgY2hhbGxlbmdlIGFuZCByZXF1ZXN0IGEgcmVzcG9uc2UsIHdpdGgKKyAg
IGlucHV0IG5vdCBlY2hvZWQuICBJZiBub19kZWZhdWx0X3NrZXkgaXMgZW5hYmxlZCwgdGhpcyB3
aWxsIG9ubHkgYmUKKyAgIGFuIFMvS2V5IHJlc3BvbnNlIHJlcXVlc3Q7IG90aGVyd2lzZSwgaXQg
d2lsbCByZXF1ZXN0IGVpdGhlciBhbgorICAgUy9LZXkgcmVzcG9uc2Ugb3IgYSBzeXN0ZW0gcGFz
c3N3b3JkLgorIDVhLiBJZiBhbiBlbXB0eSByZXNwb25zZSBpcyBnaXZlbiwgcmVxdWVzdCB0aGUg
Uy9LZXkgcmVzcG9uc2UgYWdhaW4sCisgICAgIHRoaXMgdGltZSB3aXRoIGlucHV0IGVjaG9lZC4K
KyA1Yi4gSWYgdGhlIHJlc3BvbnNlIGlzIGEgdmFsaWQgUy9LZXkgcmVzcG9uc2UsIHJldHVybiBQ
QU1fU1VDQ0VTUy4KKyAgICAgT3RoZXJ3aXNlLCByZXR1cm4gUEFNX0FVVEhFUlIuCis2LiBJZiB0
aGUgcmVzcG9uc2UgaXMgYSB2YWxpZCBTL0tleSByZXNwb25zZSwgcmV0dXJuIFBBTV9TVUNDRVNT
LgorNy4gT3RoZXJ3aXNlLCBpZiBub19kZWZhdWx0X3NrZXkgaXMgZW5hYmxlZCAodGhlIHVzZXIg
c3BlY2lmaWNhbGx5CisgICByZXF1ZXN0ZWQgInMva2V5IiBhdXRoZW50aWNhdGlvbiksIHJldHVy
biBQQU1fQVVUSEVSUi4KKzguIE90aGVyd2lzZSwgc3RvcmUgdGhlIHJlc3BvbnNlIGFzIHRoZSBh
dXRoZW50aWNhdGlvbiB0b2tlbiBhbmQKKyAgIHJldHVybiBQQU1fSUdOT1JFLgorCiBBYm91dAog
LS0tLS0KIFRoaXMgaXMgY29tcGxldGUgcGFtX3NrZXkgbW9kdWwgYXMgaW50ZXJmYWNlIHRvIGV4
aXN0aW5nIFMvS2V5CmRpZmYgLU51ciBwYW1fc2tleS0xLjEuNC9hdXRvY29uZi9hY2NvbmZpZy5o
IHBhbV9za2V5L2F1dG9jb25mL2FjY29uZmlnLmgKLS0tIHBhbV9za2V5LTEuMS40L2F1dG9jb25m
L2FjY29uZmlnLmgJMjAwNS0wNi0xOCAxNDoxMToyNC4wMDAwMDAwMDAgKzAyMDAKKysrIHBhbV9z
a2V5L2F1dG9jb25mL2FjY29uZmlnLmgJMjAwNi0wMy0wNiAwOToyNjo1NS4wMDAwMDAwMDAgKzAx
MDAKQEAgLTEsMTcgKzEsMiBAQAogLyogRGVmaW5lIGlmIHdlIGNhbiBpbmNsdWRlIGJvdGggc3Ry
aW5nLmggYW5kIHN0cmluZ3MuaCAqLwogI3VuZGVmIFNUUklOR19XSVRIX1NUUklOR1MKLQotLyog
RGVmaW5lIGlmIHlvdSBoYXZlIExpbnV4ICovCi0jdW5kZWYgTElOVVgKLQotLyogRGVmaW5lIGlm
IHlvdSBoYXZlICpCU0QgKi8KLSN1bmRlZiBCU0QKLQotLyogRGVmaW5lIGlmIG5vdCBtaXNzaW5n
IHNrZXlhY2Nlc3MoKSAqLwotI3VuZGVmIEhBVkVfU0tFWUFDQ0VTUwotCi0vKiBEZWZpbmUgaWYg
bm90IG1pc3Npbmcgc2tleWluZm8oKSAqLwotI3VuZGVmIEhBVkVfU0tFWUlORk8KLQotLyogRGVm
aW5lIGlmIHlvdSBoYXZlIHNrZXlsb29rdXAoKSBpbnN0ZWFkIG9mIHNrZXlpbmZvKCkgKi8KLSN1
bmRlZiBIQVZFX1NLRVlMT09LVVAKZGlmZiAtTnVyIHBhbV9za2V5LTEuMS40L2F1dG9jb25mL2Nv
bmZpZ3VyZS5pbiBwYW1fc2tleS9hdXRvY29uZi9jb25maWd1cmUuaW4KLS0tIHBhbV9za2V5LTEu
MS40L2F1dG9jb25mL2NvbmZpZ3VyZS5pbgkyMDA1LTA2LTE4IDE0OjExOjI0LjAwMDAwMDAwMCAr
MDIwMAorKysgcGFtX3NrZXkvYXV0b2NvbmYvY29uZmlndXJlLmluCTIwMDYtMDMtMDYgMDk6MjY6
NTUuMDAwMDAwMDAwICswMTAwCkBAIC0xMCwyMSArMTAsOSBAQAogQUNfTEFOR19DCiBBQ19MQU5H
X1NBVkUKIAotZG5sIEdldCBzeXN0ZW0gdHlwZQotQUNfQ0FOT05JQ0FMX0hPU1QKLU1ZSE9TVD0k
aG9zdF9vcwotY2FzZSAiJGhvc3Rfb3MiIGluCi0qbGludXgqKQotICBBQ19ERUZJTkUoTElOVVgp
Ci0gIDs7Ci0qYnNkKikKLSAgQUNfREVGSU5FKEJTRCkKLSAgOzsKLWVzYWMKLQogZG5sIFBhY2th
Z2UgaW5mb3JtYXRpb24KIFBBQ0tBR0U9cGFtX3NrZXkKLVZFUlNJT049MS4xCitWRVJTSU9OPTEu
NHIxCiAKIGRubCBTdGFuZGFyZCBpbnN0YWxsYXRpb24gcGF0aAogQUNfUFJFRklYX0RFRkFVTFQo
L3VzcikKQEAgLTY1LDEzICs1Myw5IEBACiBBQ19BUkdfV0lUSChza2V5LWluYywgWyAgLS13aXRo
LXNrZXktaW5jPURJUiAgICAgRGlyZWN0b3J5IGNvbnRhaW5pbmcgc2tleSBpbmNsdWRlIGZpbGVz
XSwgQ0ZMQUdTPSIke0NGTEFHU30gLUkke3dpdGh2YWx9IikKIAogZG5sIENoZWNrIGZvciBza2V5
IGxpYnJhcnkKLUFDX0NIRUNLX0xJQihzb2NrZXQsIHNvY2tldCkKLUFDX0NIRUNLX0xJQihuc2ws
IGdldGhvc3RieW5hbWUpCitBQ19DSEVDS19MSUIoc29ja2V0LCBzb2NrZXQsIExJQlM9IiR7TElC
U30gLWxzb2NrZXQiKQorQUNfQ0hFQ0tfTElCKG5zbCwgZ2V0aG9zdGJ5bmFtZSwgTElCUz0iJHtM
SUJTfSAtbG5zbCIpCiBBQ19DSEVDS19MSUIoc2tleSwgc2tleXZlcmlmeSwgU0tFWUxJQj0iLWxz
a2V5IiwgQUNfTVNHX0VSUk9SKHNrZXkgbGlicmFyeSBub3QgZm91bmQgb3IgdW5rbm93biBpbnRl
cmZhY2UpKQotQUNfQ0hFQ0tfTElCKHNrZXksIHNrZXlhY2Nlc3MsIEFDX0RFRklORShIQVZFX1NL
RVlBQ0NFU1MpKQotQUNfQ0hFQ0tfTElCKHNrZXksIHNrZXlpbmZvLCBBQ19ERUZJTkUoSEFWRV9T
S0VZSU5GTyksCi0gIEFDX0NIRUNLX0xJQihza2V5LCBza2V5bG9va3VwLCBBQ19ERUZJTkUoSEFW
RV9TS0VZTE9PS1VQKSkKLSkKIAogZG5sIENoZWNrIGFnYWluc3QgLUcgbGlua2VyIGZsYWcKIGhv
bGRfbGRmbGFncz0kTERGTEFHUwpkaWZmIC1OdXIgcGFtX3NrZXktMS4xLjQvY29uZmlndXJlIHBh
bV9za2V5L2NvbmZpZ3VyZQotLS0gcGFtX3NrZXktMS4xLjQvY29uZmlndXJlCTIwMDUtMDYtMTgg
MTQ6MzY6MTguMDAwMDAwMDAwICswMjAwCisrKyBwYW1fc2tleS9jb25maWd1cmUJMjAwNi0wMy0w
NiAwOToyNzo0MS4wMDAwMDAwMDAgKzAxMDAKQEAgLTMxMCw3ICszMTAsNyBAQAogIyBpbmNsdWRl
IDx1bmlzdGQuaD4KICNlbmRpZiIKIAotYWNfc3Vic3RfdmFycz0nU0hFTEwgUEFUSF9TRVBBUkFU
T1IgUEFDS0FHRV9OQU1FIFBBQ0tBR0VfVEFSTkFNRSBQQUNLQUdFX1ZFUlNJT04gUEFDS0FHRV9T
VFJJTkcgUEFDS0FHRV9CVUdSRVBPUlQgZXhlY19wcmVmaXggcHJlZml4IHByb2dyYW1fdHJhbnNm
b3JtX25hbWUgYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhZGlyIHN5c2NvbmZkaXIgc2hh
cmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGly
IGluZm9kaXIgbWFuZGlyIGJ1aWxkX2FsaWFzIGhvc3RfYWxpYXMgdGFyZ2V0X2FsaWFzIERFRlMg
RUNIT19DIEVDSE9fTiBFQ0hPX1QgTElCUyBidWlsZCBidWlsZF9jcHUgYnVpbGRfdmVuZG9yIGJ1
aWxkX29zIGhvc3QgaG9zdF9jcHUgaG9zdF92ZW5kb3IgaG9zdF9vcyBDQyBDRkxBR1MgTERGTEFH
UyBDUFBGTEFHUyBhY19jdF9DQyBFWEVFWFQgT0JKRVhUIFNFVF9NQUtFIFJNIExOIENQIEFXSyBJ
TlNUQUxMX1BST0dSQU0gSU5TVEFMTF9TQ1JJUFQgSU5TVEFMTF9EQVRBIENQUCBFR1JFUCBTS0VZ
TElCIFBBTUxJQiBNWUhPU1QgUEFDS0FHRSBWRVJTSU9OIExJQk9CSlMgTFRMSUJPQkpTJworYWNf
c3Vic3RfdmFycz0nU0hFTEwgUEFUSF9TRVBBUkFUT1IgUEFDS0FHRV9OQU1FIFBBQ0tBR0VfVEFS
TkFNRSBQQUNLQUdFX1ZFUlNJT04gUEFDS0FHRV9TVFJJTkcgUEFDS0FHRV9CVUdSRVBPUlQgZXhl
Y19wcmVmaXggcHJlZml4IHByb2dyYW1fdHJhbnNmb3JtX25hbWUgYmluZGlyIHNiaW5kaXIgbGli
ZXhlY2RpciBkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBs
aWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIgbWFuZGlyIGJ1aWxkX2FsaWFz
IGhvc3RfYWxpYXMgdGFyZ2V0X2FsaWFzIERFRlMgRUNIT19DIEVDSE9fTiBFQ0hPX1QgTElCUyBD
QyBDRkxBR1MgTERGTEFHUyBDUFBGTEFHUyBhY19jdF9DQyBFWEVFWFQgT0JKRVhUIFNFVF9NQUtF
IFJNIExOIENQIEFXSyBJTlNUQUxMX1BST0dSQU0gSU5TVEFMTF9TQ1JJUFQgSU5TVEFMTF9EQVRB
IENQUCBFR1JFUCBTS0VZTElCIFBBTUxJQiBNWUhPU1QgUEFDS0FHRSBWRVJTSU9OIExJQk9CSlMg
TFRMSUJPQkpTJwogYWNfc3Vic3RfZmlsZXM9JycKIAogIyBJbml0aWFsaXplIHNvbWUgdmFyaWFi
bGVzIHNldCBieSBvcHRpb25zLgpAQCAtNzIwLDEzICs3MjAsMTMgQEAKICAgCSAgL15YXChcL1wp
LioveyBzLy9cMS87IHE7IH0KICAgCSAgcy8uKi8uLzsgcSdgCiAgIHNyY2Rpcj0kYWNfY29uZmRp
cgotICBpZiB0ZXN0ICEgLXIgJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGU7IHRoZW4KKyAgaWYgdGVz
dCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KICAgICBzcmNkaXI9Li4KICAg
ZmkKIGVsc2UKICAgYWNfc3JjZGlyX2RlZmF1bHRlZD1ubwogZmkKLWlmIHRlc3QgISAtciAkc3Jj
ZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgoraWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlx
dWVfZmlsZSI7IHRoZW4KICAgaWYgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzOyB0
aGVuCiAgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNf
dW5pcXVlX2ZpbGUpIGluICRhY19jb25mZGlyIG9yIC4uIiA+JjIKICAgIHsgKGV4aXQgMSk7IGV4
aXQgMTsgfTsgfQpAQCAtNzM1LDcgKzczNSw3IEBACiAgICB7IChleGl0IDEpOyBleGl0IDE7IH07
IH0KICAgZmkKIGZpCi0oY2QgJHNyY2RpciAmJiB0ZXN0IC1yIC4vJGFjX3VuaXF1ZV9maWxlKSAy
Pi9kZXYvbnVsbCB8fAorKGNkICRzcmNkaXIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUi
KSAyPi9kZXYvbnVsbCB8fAogICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IHNvdXJjZXMgYXJlIGlu
ICRzcmNkaXIsIGJ1dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsiID4mMgogICAgeyAoZXhp
dCAxKTsgZXhpdCAxOyB9OyB9CiBzcmNkaXI9YGVjaG8gIiRzcmNkaXIiIHwgc2VkICdzJVwoW15c
XC9dXClbXFwvXSokJVwxJSdgCkBAIC04MzEsMTAgKzgzMSw2IEBACiBfQUNFT0YKIAogICBjYXQg
PDxcX0FDRU9GCi0KLVN5c3RlbSB0eXBlczoKLSAgLS1idWlsZD1CVUlMRCAgICAgY29uZmlndXJl
IGZvciBidWlsZGluZyBvbiBCVUlMRCBbZ3Vlc3NlZF0KLSAgLS1ob3N0PUhPU1QgICAgICAgY3Jv
c3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCiBfQUNF
T0YKIGZpCiAKQEAgLTk0OCw3ICs5NDQsNyBAQAogICAgIGVsc2UKICAgICAgIGVjaG8gIiRhc19t
ZTogV0FSTklORzogbm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBpbiAkYWNfZGlyIiA+
JjIKICAgICBmaQotICAgIGNkICIkYWNfcG9wZGlyIgorICAgIGNkICRhY19wb3BkaXIKICAgZG9u
ZQogZmkKIApAQCAtMTMzMyw3OCArMTMyOSw4IEBACiAKIAogCi0jIE1ha2Ugc3VyZSB3ZSBjYW4g
cnVuIGNvbmZpZy5zdWIuCi0kYWNfY29uZmlnX3N1YiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAot
ICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdf
c3ViIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBydW4gJGFjX2NvbmZpZ19zdWIi
ID4mMjt9Ci0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLQotZWNobyAiJGFzX21lOiRMSU5F
Tk86IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tp
bmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci1pZiB0ZXN0ICIke2FjX2N2X2J1
aWxkK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIg
PiY2Ci1lbHNlCi0gIGFjX2N2X2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwotdGVzdCAteiAiJGFj
X2N2X2J1aWxkX2FsaWFzIiAmJgotICBhY19jdl9idWlsZF9hbGlhcz1gJGFjX2NvbmZpZ19ndWVz
c2AKLXRlc3QgLXogIiRhY19jdl9idWlsZF9hbGlhcyIgJiYKLSAgeyB7IGVjaG8gIiRhc19tZTok
TElORU5POiBlcnJvcjogY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkg
b25lIiA+JjUKLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5
b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiYyO30KLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQot
YWNfY3ZfYnVpbGQ9YCRhY19jb25maWdfc3ViICRhY19jdl9idWlsZF9hbGlhc2AgfHwKLSAgeyB7
IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxk
X2FsaWFzIGZhaWxlZCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAk
YWNfY3ZfYnVpbGRfYWxpYXMgZmFpbGVkIiA+JjI7fQotICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9
OyB9Ci0KLWZpCi1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4m
NQotZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2J1aWxkIiA+JjYKLWJ1aWxkPSRhY19jdl9idWlsZAot
YnVpbGRfY3B1PWBlY2hvICRhY19jdl9idWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpc
KS1cKC4qXCkkL1wxLydgCi1idWlsZF92ZW5kb3I9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdz
L15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLWJ1aWxkX29zPWBlY2hvICRhY19j
dl9idWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0KLQot
ZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQotZWNo
byAkRUNIT19OICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICRFQ0hPX0MiID4mNgotaWYg
dGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNh
Y2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGFjX2N2X2hvc3RfYWxpYXM9JGhvc3RfYWxpYXMK
LXRlc3QgLXogIiRhY19jdl9ob3N0X2FsaWFzIiAmJgotICBhY19jdl9ob3N0X2FsaWFzPSRhY19j
dl9idWlsZF9hbGlhcwotYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxp
YXNgIHx8Ci0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6ICRhY19jb25maWdfc3Vi
ICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiY1Ci1lY2hvICIkYXNfbWU6IGVycm9yOiAkYWNf
Y29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mMjt9Ci0gICB7IChleGl0IDEp
OyBleGl0IDE7IH07IH0KLQotZmkKLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19j
dl9ob3N0IiA+JjUKLWVjaG8gIiR7RUNIT19UfSRhY19jdl9ob3N0IiA+JjYKLWhvc3Q9JGFjX2N2
X2hvc3QKLWhvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChb
Xi1dKlwpLVwoLipcKSQvXDEvJ2AKLWhvc3RfdmVuZG9yPWBlY2hvICRhY19jdl9ob3N0IHwgc2Vk
ICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLWhvc3Rfb3M9YGVjaG8gJGFj
X2N2X2hvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotCi0K
LU1ZSE9TVD0kaG9zdF9vcwotY2FzZSAiJGhvc3Rfb3MiIGluCi0qbGludXgqKQotICBjYXQgPj5j
b25mZGVmcy5oIDw8XF9BQ0VPRgotI2RlZmluZSBMSU5VWCAxCi1fQUNFT0YKLQotICA7OwotKmJz
ZCopCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCi0jZGVmaW5lIEJTRCAxCi1fQUNFT0YK
LQotICA7OwotZXNhYwotCiBQQUNLQUdFPXBhbV9za2V5Ci1WRVJTSU9OPTEuMQorVkVSU0lPTj0x
LjRyMQogCiAKIApAQCAtMTk3Niw3ICsxOTAyLDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUK
ICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAk
YWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWci
CQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNf
Y193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFs
IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5
KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMjAzNCw3ICsxOTYxLDggQEAKICAgY2F0IGNvbmZ0
ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4m
NQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nf
d2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0
ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJy
JwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAo
ZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMjE1MCw3ICsyMDc4LDggQEAK
ICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRh
Y19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVz
dCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJ
IHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMg
Y29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlc
IiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMjIwNCw3
ICsyMTMzLDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5F
Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7
IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25m
dGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8
fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P
OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0k
PwpAQCAtMjI0OSw3ICsyMTc5LDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAi
JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVz
KTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRl
c3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3Jf
ZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRh
c19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAg
IGFjX3N0YXR1cz0kPwpAQCAtMjI5Myw3ICsyMjI0LDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+
JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhp
dCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2Zs
YWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIk
YWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChl
dmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNf
dHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMjg4MSw3ICsyODEzLDggQEAKICAgY2F0IGNv
bmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi
ID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFj
X2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5
PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3Qu
ZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQog
ICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzA1MSw3ICsyOTg0LDgg
QEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9
ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0n
dGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnIn
CisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEg
LXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190
cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzEy
NCw3ICszMDU4LDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRM
SU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgot
CSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBj
b25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJ
CSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElO
RU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1
cz0kPwpAQCAtMzI3OCw3ICszMjEzLDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNo
byAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3Rh
dHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8
IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJy
b3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8g
IiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1
CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzQzMSw3ICszMzY3LDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVy
ciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAo
ZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9y
X2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16
ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7
IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAk
YWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzUzMyw3ICszNDcwLDggQEAKICAgY2F0
IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0
dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAi
JGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNf
dHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRl
c3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4m
NQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzU4Myw3ICszNTIx
LDYgQEAKICAgQ0ZMQUdTPSIke0NGTEFHU30gLUkke3dpdGh2YWx9IgogZmk7CiAKLQogZWNobyAi
JGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzb2NrZXQgaW4gLWxzb2NrZXQiID4mNQogZWNo
byAkRUNIT19OICJjaGVja2luZyBmb3Igc29ja2V0IGluIC1sc29ja2V0Li4uICRFQ0hPX0MiID4m
NgogaWYgdGVzdCAiJHthY19jdl9saWJfc29ja2V0X3NvY2tldCtzZXR9IiA9IHNldDsgdGhlbgpA
QCAtMzYyMiw3ICszNTU5LDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFz
X21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsg
fSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3Qg
ISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxh
ZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19t
ZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFj
X3N0YXR1cz0kPwpAQCAtMzY0OCwxNSArMzU4Niw5IEBACiBlY2hvICIkYXNfbWU6JExJTkVOTzog
cmVzdWx0OiAkYWNfY3ZfbGliX3NvY2tldF9zb2NrZXQiID4mNQogZWNobyAiJHtFQ0hPX1R9JGFj
X2N2X2xpYl9zb2NrZXRfc29ja2V0IiA+JjYKIGlmIHRlc3QgJGFjX2N2X2xpYl9zb2NrZXRfc29j
a2V0ID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgSEFW
RV9MSUJTT0NLRVQgMQotX0FDRU9GCi0KLSAgTElCUz0iLWxzb2NrZXQgJExJQlMiCi0KKyAgTElC
Uz0iJHtMSUJTfSAtbHNvY2tldCIKIGZpCiAKLQogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNr
aW5nIGZvciBnZXRob3N0YnluYW1lIGluIC1sbnNsIiA+JjUKIGVjaG8gJEVDSE9fTiAiY2hlY2tp
bmcgZm9yIGdldGhvc3RieW5hbWUgaW4gLWxuc2wuLi4gJEVDSE9fQyIgPiY2CiBpZiB0ZXN0ICIk
e2FjX2N2X2xpYl9uc2xfZ2V0aG9zdGJ5bmFtZStzZXR9IiA9IHNldDsgdGhlbgpAQCAtMzY5NSw3
ICszNjI3LDggQEAKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5F
Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7
IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25m
dGVzdC5lcnInCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8
fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P
OiBcIiRhY190cnlcIiIpID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0k
PwpAQCAtMzcyMSwxMiArMzY1NCw3IEBACiBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAk
YWNfY3ZfbGliX25zbF9nZXRob3N0YnluYW1lIiA+JjUKIGVjaG8gIiR7RUNIT19UfSRhY19jdl9s
aWJfbnNsX2dldGhvc3RieW5hbWUiID4mNgogaWYgdGVzdCAkYWNfY3ZfbGliX25zbF9nZXRob3N0
YnluYW1lID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUg
SEFWRV9MSUJOU0wgMQotX0FDRU9GCi0KLSAgTElCUz0iLWxuc2wgJExJQlMiCi0KKyAgTElCUz0i
JHtMSUJTfSAtbG5zbCIKIGZpCiAKIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Ig
c2tleXZlcmlmeSBpbiAtbHNrZXkiID4mNQpAQCAtMzc2Nyw3ICszNjk1LDggQEAKICAgY2F0IGNv
bmZ0ZXN0LmVyciA+JjUKICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi
ID4mNQogICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFj
X2Nfd2Vycm9yX2ZsYWciCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisJIHsgYWNfdHJ5
PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3Qu
ZXJyJwogICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQog
ICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtMzgwMCwyMTggKzM3Mjks
NiBAQAogICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9CiBmaQogCi1lY2hvICIkYXNfbWU6JExJ
TkVOTzogY2hlY2tpbmcgZm9yIHNrZXlhY2Nlc3MgaW4gLWxza2V5IiA+JjUKLWVjaG8gJEVDSE9f
TiAiY2hlY2tpbmcgZm9yIHNrZXlhY2Nlc3MgaW4gLWxza2V5Li4uICRFQ0hPX0MiID4mNgotaWYg
dGVzdCAiJHthY19jdl9saWJfc2tleV9za2V5YWNjZXNzK3NldH0iID0gc2V0OyB0aGVuCi0gIGVj
aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGFjX2NoZWNrX2xpYl9z
YXZlX0xJQlM9JExJQlMKLUxJQlM9Ii1sc2tleSAgJExJQlMiCi1jYXQgPmNvbmZ0ZXN0LiRhY19l
eHQgPDxfQUNFT0YKLS8qIGNvbmZkZWZzLmguICAqLwotX0FDRU9GCi1jYXQgY29uZmRlZnMuaCA+
PmNvbmZ0ZXN0LiRhY19leHQKLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KLQotLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90
eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IgotI2VuZGlmCi0vKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0
dXJuIHR5cGUgb2YgYSBnY2MyCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90
b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotY2hhciBza2V5YWNjZXNzICgpOwotaW50Ci1t
YWluICgpCi17Ci1za2V5YWNjZXNzICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1y
bSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBl
Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5r
KSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRl
c3QuZXIxID5jb25mdGVzdC5lcnIKLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0gIGNhdCBjb25mdGVz
dC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK
LSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dl
cnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwotICB7IChldmFsIGVjaG8g
IiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1
Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1
cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCi0JIHsgYWNfdHJ5PSd0ZXN0IC1z
IGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIk
YWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAg
ZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNf
c3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfc2tleV9za2V5YWNjZXNzPXllcwotZWxz
ZQotICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotc2VkICdzL14vfCAv
JyBjb25mdGVzdC4kYWNfZXh0ID4mNQotCi1hY19jdl9saWJfc2tleV9za2V5YWNjZXNzPW5vCi1m
aQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgY29uZnRl
c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJ
QlMKLWZpCi1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbGliX3NrZXlfc2tl
eWFjY2VzcyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX3NrZXlfc2tleWFjY2VzcyIg
PiY2Ci1pZiB0ZXN0ICRhY19jdl9saWJfc2tleV9za2V5YWNjZXNzID0geWVzOyB0aGVuCi0gIGNh
dCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCi0jZGVmaW5lIEhBVkVfU0tFWUFDQ0VTUyAxCi1fQUNF
T0YKLQotZmkKLQotZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBza2V5aW5mbyBp
biAtbHNrZXkiID4mNQotZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc2tleWluZm8gaW4gLWxz
a2V5Li4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfc2tleV9za2V5aW5mbytz
ZXR9IiA9IHNldDsgdGhlbgotICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgot
ZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbHNrZXkgICRMSUJT
IgotY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0vKiBjb25mZGVmcy5oLiAgKi8KLV9B
Q0VPRgotY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci1jYXQgPj5jb25mdGVzdC4k
YWNfZXh0IDw8X0FDRU9GCi0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFu
eSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0jaWZkZWYg
X19jcGx1c3BsdXMKLWV4dGVybiAiQyIKLSNlbmRpZgotLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBp
bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotICAgYnVpbHRpbiBhbmQg
dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLWNoYXIg
c2tleWluZm8gKCk7Ci1pbnQKLW1haW4gKCkKLXsKLXNrZXlpbmZvICgpOwotICA7Ci0gIHJldHVy
biAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4
ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1
Ci0gIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVyMQotICBhY19zdGF0dXM9JD8KLSAgZ3Jl
cCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSAgcm0gLWYgY29uZnRlc3Qu
ZXIxCi0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g
PSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9
J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJy
JwotICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotICAo
ZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBlY2hvICIkYXNfbWU6JExJTkVO
TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCi0J
IHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLSAgeyAoZXZhbCBlY2hvICIk
YXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQot
ICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi
ID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotICBhY19jdl9saWJfc2tleV9z
a2V5aW5mbz15ZXMKLWVsc2UKLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+
JjUKLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLQotYWNfY3ZfbGliX3NrZXlf
c2tleWluZm89bm8KLWZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBc
Ci0gICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hl
Y2tfbGliX3NhdmVfTElCUwotZmkKLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19j
dl9saWJfc2tleV9za2V5aW5mbyIgPiY1Ci1lY2hvICIke0VDSE9fVH0kYWNfY3ZfbGliX3NrZXlf
c2tleWluZm8iID4mNgotaWYgdGVzdCAkYWNfY3ZfbGliX3NrZXlfc2tleWluZm8gPSB5ZXM7IHRo
ZW4KLSAgY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSNkZWZpbmUgSEFWRV9TS0VZSU5GTyAx
Ci1fQUNFT0YKLQotZWxzZQotICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHNr
ZXlsb29rdXAgaW4gLWxza2V5IiA+JjUKLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHNrZXls
b29rdXAgaW4gLWxza2V5Li4uICRFQ0hPX0MiID4mNgotaWYgdGVzdCAiJHthY19jdl9saWJfc2tl
eV9za2V5bG9va3VwK3NldH0iID0gc2V0OyB0aGVuCi0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkg
JEVDSE9fQyIgPiY2Ci1lbHNlCi0gIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLUxJQlM9
Ii1sc2tleSAgJExJQlMiCi1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS8qIGNvbmZk
ZWZzLmguICAqLwotX0FDRU9GCi1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLWNh
dCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQot
LyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y
LiAgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIgotI2VuZGlmCi0vKiBXZSB1c2Ug
Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi0g
ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw
bHkuICAqLwotY2hhciBza2V5bG9va3VwICgpOwotaW50Ci1tYWluICgpCi17Ci1za2V5bG9va3Vw
ICgpOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1ybSAtZiBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAotaWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog
XCIkYWNfbGlua1wiIikgPiY1Ci0gIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVyMQotICBh
Y19zdGF0dXM9JD8KLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIK
LSAgcm0gLWYgY29uZnRlc3QuZXIxCi0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIGVjaG8gIiRh
c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgKGV4aXQgJGFjX3N0YXR1cyk7
IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0
ICEgLXMgY29uZnRlc3QuZXJyJwotICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh
Y190cnlcIiIpID4mNQotICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICBl
Y2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIChleGl0ICRhY19z
dGF0dXMpOyB9OyB9ICYmCi0JIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcK
LSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSAgKGV2
YWwgJGFjX3RyeSkgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgZWNobyAiJGFzX21lOiRMSU5FTk86
IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgot
ICBhY19jdl9saWJfc2tleV9za2V5bG9va3VwPXllcwotZWxzZQotICBlY2hvICIkYXNfbWU6IGZh
aWxlZCBwcm9ncmFtIHdhczoiID4mNQotc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4m
NQotCi1hY19jdl9saWJfc2tleV9za2V5bG9va3VwPW5vCi1maQotcm0gLWYgY29uZnRlc3QuZXJy
IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0
LiRhY19leHQKLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLWZpCi1lY2hvICIkYXNfbWU6
JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbGliX3NrZXlfc2tleWxvb2t1cCIgPiY1Ci1lY2hvICIk
e0VDSE9fVH0kYWNfY3ZfbGliX3NrZXlfc2tleWxvb2t1cCIgPiY2Ci1pZiB0ZXN0ICRhY19jdl9s
aWJfc2tleV9za2V5bG9va3VwID0geWVzOyB0aGVuCi0gIGNhdCA+PmNvbmZkZWZzLmggPDxcX0FD
RU9GCi0jZGVmaW5lIEhBVkVfU0tFWUxPT0tVUCAxCi1fQUNFT0YKLQotZmkKLQotCi1maQotCiAK
IGhvbGRfbGRmbGFncz0kTERGTEFHUwogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZv
ciB0aGUgbGQgLXNoYXJlZCBmbGFnIiA+JjUKQEAgLTQwNDEsNyArMzc1OCw4IEBACiAgIGNhdCBj
b25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz
IiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9J3Rlc3QgLXogIiRh
Y19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworCSB7IGFjX3Ry
eT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0
LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUK
ICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTQwOTksNyArMzgxNyw4
IEBACiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1CiAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g
PSAkYWNfc3RhdHVzIiA+JjUKICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLQkgeyBhY190cnk9
J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJy
JworCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAh
IC1zIGNvbmZ0ZXN0LmVycicKICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNf
dHJ5XCIiKSA+JjUKICAgKGV2YWwgJGFjX3RyeSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTQ3
NDcsMTQgKzQ0NjYsNiBAQAogcyxARUNIT19OQCwkRUNIT19OLDt0IHQKIHMsQEVDSE9fVEAsJEVD
SE9fVCw7dCB0CiBzLEBMSUJTQCwkTElCUyw7dCB0Ci1zLEBidWlsZEAsJGJ1aWxkLDt0IHQKLXMs
QGJ1aWxkX2NwdUAsJGJ1aWxkX2NwdSw7dCB0Ci1zLEBidWlsZF92ZW5kb3JALCRidWlsZF92ZW5k
b3IsO3QgdAotcyxAYnVpbGRfb3NALCRidWlsZF9vcyw7dCB0Ci1zLEBob3N0QCwkaG9zdCw7dCB0
Ci1zLEBob3N0X2NwdUAsJGhvc3RfY3B1LDt0IHQKLXMsQGhvc3RfdmVuZG9yQCwkaG9zdF92ZW5k
b3IsO3QgdAotcyxAaG9zdF9vc0AsJGhvc3Rfb3MsO3QgdAogcyxAQ0NALCRDQyw7dCB0CiBzLEBD
RkxBR1NALCRDRkxBR1MsO3QgdAogcyxATERGTEFHU0AsJExERkxBR1MsO3QgdApAQCAtNDk0NSw2
ICs0NjU2LDExIEBACiAgICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWlsZGRpciRJTlNUQUxMIDs7
CiAgIGVzYWMKIAorICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCisgICAgeyBlY2hv
ICIkYXNfbWU6JExJTkVOTzogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorZWNobyAiJGFzX21lOiBj
cmVhdGluZyAkYWNfZmlsZSIgPiY2O30KKyAgICBybSAtZiAiJGFjX2ZpbGUiCisgIGZpCiAgICMg
TGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMg
KGkuZS4sIGRvbid0CiAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQg
dG8gcmVhZDoKICAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVz
LiAgKi8KQEAgLTQ5ODMsMTIgKzQ2OTksNiBAQAogCSBmaTs7CiAgICAgICBlc2FjCiAgICAgZG9u
ZWAgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9Ci0KLSAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4
LTsgdGhlbgotICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRhY19maWxlIiA+
JjUKLWVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9Ci0gICAgcm0gLWYgIiRh
Y19maWxlIgotICBmaQogX0FDRU9GCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgogICBz
ZWQgIiRhY192cHN1YgpkaWZmIC1OdXIgcGFtX3NrZXktMS4xLjQvZGVmcy5oLmluIHBhbV9za2V5
L2RlZnMuaC5pbgotLS0gcGFtX3NrZXktMS4xLjQvZGVmcy5oLmluCTIwMDUtMDYtMTggMTQ6MzY6
MTguMDAwMDAwMDAwICswMjAwCisrKyBwYW1fc2tleS9kZWZzLmguaW4JMjAwNi0wMy0wNiAwOToy
Njo1NS4wMDAwMDAwMDAgKzAxMDAKQEAgLTEsOTYgKzEsNDkgQEAKLS8qIGRlZnMuaC5pbi4gIEdl
bmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5pbiBieSBhdXRvaGVhZGVyLiAgKi8KLS8qIERlZmluZSBp
ZiB3ZSBjYW4gaW5jbHVkZSBib3RoIHN0cmluZy5oIGFuZCBzdHJpbmdzLmggKi8KLSN1bmRlZiBT
VFJJTkdfV0lUSF9TVFJJTkdTCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSBMaW51eCAqLwotI3Vu
ZGVmIExJTlVYCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSAqQlNEICovCi0jdW5kZWYgQlNECisv
KiBkZWZzLmguaW4uICBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIGNvbmZpZ3VyZS5pbiBi
eSBhdXRvaGVhZGVyLiAgKi8KIAotLyogRGVmaW5lIGlmIG5vdCBtaXNzaW5nIHNrZXlhY2Nlc3Mo
KSAqLwotI3VuZGVmIEhBVkVfU0tFWUFDQ0VTUwotCi0vKiBEZWZpbmUgaWYgbm90IG1pc3Npbmcg
c2tleWluZm8oKSAqLwotI3VuZGVmIEhBVkVfU0tFWUlORk8KKy8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gICovCisjdW5kZWYgU1REQ19IRUFERVJTCiAKLS8q
IERlZmluZSBpZiB5b3UgaGF2ZSBza2V5bG9va3VwKCkgaW5zdGVhZCBvZiBza2V5aW5mbygpICov
Ci0jdW5kZWYgSEFWRV9TS0VZTE9PS1VQCisvKiBEZWZpbmUgaWYgd2UgY2FuIGluY2x1ZGUgYm90
aCBzdHJpbmcuaCBhbmQgc3RyaW5ncy5oICovCisjdW5kZWYgU1RSSU5HX1dJVEhfU1RSSU5HUwog
Ci0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZwcmludGYnIGZ1bmN0aW9uLiAqLwor
LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmcHJpbnRmIGZ1bmN0aW9uLiAgKi8KICN1bmRlZiBI
QVZFX0ZQUklOVEYKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5o
PiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKKy8qIERlZmluZSBpZiB5
b3UgaGF2ZSB0aGUgZ2V0aG9zdGJ5bmFtZSBmdW5jdGlvbi4gICovCisjdW5kZWYgSEFWRV9HRVRI
T1NUQllOQU1FCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbnNsJyBsaWJyYXJ5
ICgtbG5zbCkuICovCi0jdW5kZWYgSEFWRV9MSUJOU0wKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgc25wcmludGYgZnVuY3Rpb24uICAqLworI3VuZGVmIEhBVkVfU05QUklOVEYKIAotLyogRGVm
aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzb2NrZXQnIGxpYnJhcnkgKC1sc29ja2V0KS4gKi8K
LSN1bmRlZiBIQVZFX0xJQlNPQ0tFVAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJuY21w
IGZ1bmN0aW9uLiAgKi8KKyN1bmRlZiBIQVZFX1NUUk5DTVAKIAotLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9NRU1P
UllfSAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzeXNsb2cgZnVuY3Rpb24uICAqLworI3Vu
ZGVmIEhBVkVfU1lTTE9HCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cHdkLmg+
IGhlYWRlciBmaWxlLiAqLworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8cHdkLmg+IGhlYWRl
ciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1BXRF9ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8c2VjdXJpdHkvcGFtX2FwcGwuaD4gaGVhZGVyIGZpbGUuICovCisvKiBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIDxzZWN1cml0eS9wYW1fYXBwbC5oPiBoZWFkZXIgZmlsZS4gICovCiAj
dW5kZWYgSEFWRV9TRUNVUklUWV9QQU1fQVBQTF9ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBo
YXZlIHRoZSA8c2VjdXJpdHkvcGFtX21vZHVsZXMuaD4gaGVhZGVyIGZpbGUuICovCisvKiBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIDxzZWN1cml0eS9wYW1fbW9kdWxlcy5oPiBoZWFkZXIgZmlsZS4g
ICovCiAjdW5kZWYgSEFWRV9TRUNVUklUWV9QQU1fTU9EVUxFU19ICiAKLS8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgc25wcmludGYnIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfU05Q
UklOVEYKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVy
IGZpbGUuICovCi0jdW5kZWYgSEFWRV9TVERJTlRfSAotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3Ug
aGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gICovCiAjdW5kZWYgSEFWRV9TVERMSUJfSAog
Ci0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUu
ICovCi0jdW5kZWYgSEFWRV9TVFJJTkdTX0gKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg
dGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhl
IDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICAqLwogI3VuZGVmIEhBVkVfU1RSSU5HX0gKIAotLyog
RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJuY21wJyBmdW5jdGlvbi4gKi8KLSN1bmRl
ZiBIQVZFX1NUUk5DTVAKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeXNsb2cn
IGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfU1lTTE9HCi0KLS8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3lzbG9nLmg+IGhlYWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfU1lTTE9H
X0gKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIg
ZmlsZS4gKi8KLSN1bmRlZiBIQVZFX1NZU19TVEFUX0gKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICAqLworI3VuZGVmIEhBVkVfU1RSSU5HU19ICiAK
LS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2xvZy5oPiBoZWFkZXIgZmls
ZS4gKi8KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNsb2cuaD4gaGVhZGVyIGZp
bGUuICAqLwogI3VuZGVmIEhBVkVfU1lTX1NZU0xPR19ICiAKLS8qIERlZmluZSB0byAxIGlmIHlv
dSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLworLyogRGVmaW5lIGlmIHlv
dSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAgKi8KICN1bmRlZiBIQVZFX1NZ
U19UWVBFU19ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhl
YWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfVU5JU1REX0gKLQotLyogRGVmaW5lIHRvIHRoZSBh
ZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQu
ICovCi0jdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5h
bWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotI3VuZGVmIFBBQ0tBR0VfTkFNRQotCi0vKiBEZWZpbmUg
dG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0jdW5kZWYg
UEFDS0FHRV9TVFJJTkcKLQotLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUg
b2YgdGhpcyBwYWNrYWdlLiAqLwotI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQotCi0vKiBEZWZpbmUg
dG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI3VuZGVmIFBBQ0tBR0VfVkVSU0lP
TgotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4g
Ki8KLSN1bmRlZiBTVERDX0hFQURFUlMKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5c2xv
Zy5oPiBoZWFkZXIgZmlsZS4gICovCisjdW5kZWYgSEFWRV9TWVNMT0dfSApkaWZmIC1OdXIgcGFt
X3NrZXktMS4xLjQvcGFtX3NrZXkuYyBwYW1fc2tleS9wYW1fc2tleS5jCi0tLSBwYW1fc2tleS0x
LjEuNC9wYW1fc2tleS5jCTIwMDUtMDYtMTggMTQ6MzY6MTguMDAwMDAwMDAwICswMjAwCisrKyBw
YW1fc2tleS9wYW1fc2tleS5jCTIwMDYtMDMtMDYgMDk6MjY6NTUuMDAwMDAwMDAwICswMTAwCkBA
IC0xLDUgKzEsNiBAQAogLyogCi0gKiAoYykgMjAwMSBEaW5rbyBLb3J1bmljLCBrcmVhdG9yQHNy
Y2UuaHIKKyAqIFJld3JpdGUgKGMpIDIwMDUgRGFuaSBDaHVyY2gsIGRhbmkuY2h1cmNoQGdtYWls
LmNvbQorICogT3JpZ2luYWwgKGMpIDIwMDEgRGlua28gS29ydW5pYywga3JlYXRvckBzcmNlLmhy
CiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQKICAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCkBAIC0zMywyNzIgKzM0LDE0NiBAQAogI2lu
Y2x1ZGUgPHB3ZC5oPiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXNsb2cu
aD4KKyNpbmNsdWRlIDxjdHlwZS5oPgogCiAjZGVmaW5lIFBBTV9FWFRFUk4gZXh0ZXJuCiAjdW5k
ZWYgUEFNX1NUQVRJQwogCiAjaW5jbHVkZSA8c2VjdXJpdHkvcGFtX2FwcGwuaD4KICNpbmNsdWRl
IDxzZWN1cml0eS9wYW1fbW9kdWxlcy5oPgorI2luY2x1ZGUgPHNlY3VyaXR5L19wYW1fbWFjcm9z
Lmg+CiAKICNpbmNsdWRlICJza2V5LmgiCiAjaW5jbHVkZSAicGFtX3NrZXkuaCIKICNpbmNsdWRl
ICJtaXNjLmgiCiAKKyNkZWZpbmUgTE9HREVCVUcoeCkgaWYgKG1vZF9vcHQgJiBfTU9EX0RFQlVH
KSB7IHN5c2xvZyB4IDt9CisjZGVmaW5lIFFVRVJZX1VTRVJOQU1FIE5VTEwgLyogVXNlIGRlZmF1
bHQgdXNlcm5hbWUgcHJvbXB0ICovCisjZGVmaW5lIFFVRVJZX1BBU1NXT1JEICJQYXNzd29yZDog
IgorI2RlZmluZSBRVUVSWV9SRVNQT05TRV9PUl9QQVNTV09SRCAiUy9LZXkgcmVzcG9uc2Ugb3Ig
c3lzdGVtIHBhc3N3b3JkOiAiCisjZGVmaW5lIFFVRVJZX1JFU1BPTlNFICJTL0tleSByZXNwb25z
ZTogIgorCiBQQU1fRVhURVJOIGludCBwYW1fc21fc2V0Y3JlZCAocGFtX2hhbmRsZV90ICpwYW1o
LCBpbnQgZmxhZ3MsCiAgIGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIHsKICAgcmV0dXJu
IFBBTV9TVUNDRVNTOwogfQogCisvKgorICogVGhlIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSB3aWxs
IHJldHVybiB0aGUgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoKKyAqIFBBTV9TVUNDRVNTOiBTdWNj
ZXNzZnVsIGF1dGhlbnRpY2F0aW9uIHZpYSBTL0tleS4KKyAqIFBBTV9JR05PUkU6IFRoZSB1c2Vy
IGRvZXNuJ3QgaGF2ZSBTL0tleSBvciBkb2Vzbid0IHdhbnQgdG8gdXNlIGl0LgorICogICAgICAg
ICAgICAgQ29udGludWUgd2l0aCB0aGUgbmV4dCBtb2R1bGUsIHVzaW5nIHRyeV9maXJzdF9wYXNz
LgorICogUEFNX0FVVEhfRVJSOiBUaGUgdXNlciBhc2tlZCB0byB1c2UgUy9LZXksIGJ1dCBmYWls
ZWQgdGhlIGF1dGhlbnRpY2F0aW9uLgorICogICAgICAgICAgICAgICBEb24ndCB0cnkgYW55IG1v
cmUgUEFNIG1vZHVsZXMuCisgKiBvdGhlcnM6IHJhbmRvbSBlcnJvcnMsIHRyeSBuZXh0IGF1dGhl
bnRpY2F0aW9uIG1ldGhvZAorICovCisKIFBBTV9FWFRFUk4gaW50IHBhbV9zbV9hdXRoZW50aWNh
dGUocGFtX2hhbmRsZV90ICpwYW1oLCBpbnQgZmxhZ3MsCiAgIGludCBhcmdjLCBjb25zdCBjaGFy
ICoqYXJndikKIHsKLSAgY2hhciBjaGFsbGVuZ2VbQ0hBTExFTkdFX01BWFNJWkVdOyAvKiBjaGFs
bGVuZ2UgdG8gcHJpbnQgaW4gY29udiAqLwotICBjaGFyIG1zZ190ZXh0W1BBTV9NQVhfTVNHX1NJ
WkVdOyAvKiB0ZXh0IGZvciBwYW0gY29udiAqLwotICBjaGFyICp1c2VybmFtZSA9IE5VTEw7IC8q
IHVzZXJuYW1lIHNwYWNlciAqLworICBjb25zdCBjaGFyICpjaGFsbGVuZ2U7IC8qIGNoYWxsZW5n
ZSB0byBwcmludCBpbiBjb252ICovCisgIGNvbnN0IGNoYXIgKnVzZXJuYW1lID0gTlVMTDsgLyog
dXNlcm5hbWUgc3BhY2VyICovCiAgIGNoYXIgKnJlc3BvbnNlID0gTlVMTDsgLyogcmVzcG9uc2Ug
c3BhY2VyICovCi0gIHN0cnVjdCBza2V5IHNrZXk7IC8qIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5z
IHNrZXkgaW5mb3JtYXRpb24gKi8KICAgaW50IHN0YXR1czsgLyogcmV0dXJuIHN0YXR1cyBzcGFj
ZXIgKi8KLSAgdW5zaWduZWQgbW9kX29wdCA9IF9NT0RfTk9ORV9PTjsgLyogbW9kdWxlIG9wdGlv
bnMgKi8KKyAgdW5zaWduZWQgbW9kX29wdD1fTU9EX05PTkVfT047IC8qIG1vZHVsZSBvcHRpb25z
ICovCiAKICAgLyogR2V0IG1vZHVsZSBvcHRpb25zICovCiAgIG1vZF9nZXRvcHQoJm1vZF9vcHQs
IGFyZ2MsIGFyZ3YpOwogCi0gIC8qIEdldCB1c2VybmFtZSAqLwotI2lmIGRlZmluZWQgTElOVVgg
fHwgZGVmaW5lZCBCU0QKLSAgaWYgKHBhbV9nZXRfdXNlcihwYW1oLCAoY29uc3QgY2hhciAqKikm
dXNlcm5hbWUsICJsb2dpbjoiKQotI2Vsc2UKLSAgaWYgKHBhbV9nZXRfdXNlcihwYW1oLCAoY2hh
ciAqKikmdXNlcm5hbWUsICJsb2dpbjoiKQotI2VuZGlmCi0gICAgICAhPSBQQU1fU1VDQ0VTUykK
LSAgewotICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGRldGVybWluZSB1c2VybmFtZVxuIik7
Ci0gICAgaWYgKG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgICAgc3lzbG9nKExPR19ERUJVRywg
ImNhbm5vdCBkZXRlcm1pbmUgdXNlcm5hbWUiKTsKLSAgICByZXR1cm4gUEFNX1VTRVJfVU5LTk9X
TjsKLSAgfQotCi0gIGlmIChtb2Rfb3B0ICYgX01PRF9ERUJVRykKLSAgICBzeXNsb2coTE9HX0RF
QlVHLCAiZ290IHVzZXJuYW1lICVzIiwgdXNlcm5hbWUpOwotCi0jaWZkZWYgSEFWRV9TS0VZQUND
RVNTCi0gIC8qIENoZWNrIFMvS2V5IGFjY2VzcyBwZXJtaXNzaW9ucyAtIHVzZXIsIGhvc3QgYW5k
IHBvcnQuIEFsc28gaW5jbHVkZQotICAgKiBzYW5pdHkgY2hlY2tzICovCi0gIGlmIChtb2Rfb3B0
ICYgX01PRF9BQ0NFU1NfQ0hFQ0spCi0gIHsKLSAgICBjaGFyICpob3N0OyAvKiBwb2ludHMgdG8g
aG9zdCAqLwotICAgIGNoYXIgKnBvcnQ7IC8qIHBvaW50cyB0byBwb3J0ICovCi0gICAgc3RydWN0
IHBhc3N3ZCAqcHd1c2VyOyAvKiBzdHJ1Y3R1cmUgZm9yIGdldHB3KCkgKi8KLQotICAgIC8qIEdl
dCBob3N0Li4gKi8KLSNpZiBkZWZpbmVkIExJTlVYIHx8IGRlZmluZWQgQlNECi0gICAgaWYgKHBh
bV9nZXRfaXRlbShwYW1oLCBQQU1fUkhPU1QsIChjb25zdCB2b2lkICoqKSZob3N0KQotI2Vsc2UK
LSAgICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9SSE9TVCwgKHZvaWQgKiopJmhvc3QpCi0j
ZW5kaWYKLSAgICAgICAgIT0gUEFNX1NVQ0NFU1MpCi0gICAgICBob3N0ID0gTlVMTDsgLyogY291
bGRuJ3QgZ2V0IGhvc3QgKi8KLSAgICAvKiAuLmFuZCBwb3J0ICovCi0jaWYgZGVmaW5lZCBMSU5V
WCB8fCBkZWZpbmVkIEJTRAotICAgIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX1RUWSwgKGNv
bnN0IHZvaWQgKiopJnBvcnQpCi0jZWxzZQotICAgIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFN
X1RUWSwgKHZvaWQgKiopJnBvcnQpCi0jZW5kaWYKLSAgICAgICAgIT0gUEFNX1NVQ0NFU1MpCi0g
ICAgICBwb3J0ID0gTlVMTDsgLyogY291bGRuJ3QgZ2V0IHBvcnQgKi8KLQotICAgIGlmIChtb2Rf
b3B0ICYgX01PRF9ERUJVRykKLSAgICAgIHN5c2xvZyhMT0dfREVCVUcsICJjaGVja2luZyBzL2tl
eSBhY2Nlc3MgZm9yIHVzZXIgJXMsIgotICAgICAgICAiIGhvc3QgJXMsIHBvcnQgJXMiLCB1c2Vy
bmFtZSwKLSAgICAgICAgKGhvc3QgIT0gTlVMTCkgPyBob3N0IDogIip1bmtub3duKiIsCi0gICAg
ICAgIChwb3J0ICE9IE5VTEwpID8gcG9ydCA6ICIqdW5rbm93bioiKTsKLQotICAgIC8qIEdldCBp
bmZvcm1hdGlvbiBmcm9tIHBhc3N3ZCBmaWxlICovCi0gICAgaWYgKChwd3VzZXIgPSBnZXRwd25h
bSh1c2VybmFtZSkpID09IE5VTEwpCi0gICAgewotICAgICAgZnByaW50ZihzdGRlcnIsICJubyBz
dWNoIHVzZXJcbiIpOwotICAgICAgc3lzbG9nKExPR19OT1RJQ0UsICJjYW5ub3QgZmluZCB1c2Vy
ICVzIiwgdXNlcm5hbWUpOwotICAgICAgcmV0dXJuIFBBTV9VU0VSX1VOS05PV047IC8qIHBlcmhh
cHMgZXZlbiByZXR1cm4gUEFNX0FCT1JUIGhlcmU/ICovCisgIC8qIEdldCB1c2VybmFtZSAodGFr
ZW4gbWFpbmx5IGZyb20gcGFtX3VuaXgpICovCisgIHN0YXR1cyA9IHBhbV9nZXRfdXNlcihwYW1o
LCAmdXNlcm5hbWUsIFFVRVJZX1VTRVJOQU1FKTsKKyAgaWYgKHN0YXR1cyA9PSBQQU1fU1VDQ0VT
UykgeworICAgIGlmICh1c2VybmFtZSA9PSBOVUxMIHx8ICFpc2FsbnVtKCp1c2VybmFtZSkpIHsK
KyAgICAgIHN5c2xvZyhMT0dfRVJSLCAiYmFkIHVzZXJuYW1lIFslc10iLCB1c2VybmFtZSk7Cisg
ICAgICByZXR1cm4gUEFNX1VTRVJfVU5LTk9XTjsKICAgICB9CisgICAgTE9HREVCVUcoKExPR19E
RUJVRywgInVzZXJuYW1lIFslc10gb2J0YWluZWQiLCB1c2VybmFtZSkpOworICB9IGVsc2Ugewor
ICAgIExPR0RFQlVHKChMT0dfREVCVUcsICJ0cm91YmxlIHJlYWRpbmcgdXNlcm5hbWUiKSk7Cisg
ICAgaWYgKHN0YXR1cyA9PSBQQU1fQ09OVl9BR0FJTikKKyAgICAgIHJldHVybiBQQU1fSU5DT01Q
TEVURTsKKyAgICByZXR1cm4gc3RhdHVzOworICB9CiAKLSAgICAvKiBEbyBhY3R1YWwgY2hlY2tp
bmcgLSB3ZSBhc3N1bWUgc2tleWFjY2VzcygpIHJldHVybnMgUEVSTUlUIHdoaWNoIGlzCi0gICAg
ICogYnkgZGVmYXVsdCAxLiBOb3RpY2UgNHRoIGFyZ3VtZW50IGlzIE5VTEwgLSB3ZSB3aWxsIG5v
dCBwZXJmb3JtCi0gICAgICogYWRkcmVzcyBjaGVja3Mgb24gaG9zdCBpdHNlbGYgKi8KLSAgICBp
ZiAoc2tleWFjY2Vzcyhwd3VzZXIsIHBvcnQsIGhvc3QsIE5VTEwpICE9IDEpCi0gICAgewotICAg
ICAgZnByaW50ZihzdGRlcnIsICJubyBzL2tleSBhY2Nlc3MgcGVybWlzc2lvbnNcbiIpOwotICAg
ICAgc3lzbG9nKExPR19OT1RJQ0UsICJubyBzL2tleSBhY2Nlc3MgcGVybWlzc2lvbnMgZm9yICVz
IiwKLSAgICAgICAgICB1c2VybmFtZSk7Ci0gICAgICByZXR1cm4gUEFNX0FVVEhfRVJSOwotICAg
IH0KKyAgLyogQ2hlY2sgd2hldGhlciBvciBub3QgdGhpcyB1c2VyIGhhcyBhbiBTL0tleSAqLwor
ICBpZiAoc2tleV9oYXNrZXkodXNlcm5hbWUpICE9IDApIHsKKyAgICBMT0dERUJVRygoTE9HX0RF
QlVHLCAidXNlciBbJXNdIGhhcyBubyBTL0tleSBlbnRyeSIsIHVzZXJuYW1lKSk7CisgICAgcmV0
dXJuIFBBTV9JR05PUkU7CiAgIH0KLSAgZWxzZQogCi0jZW5kaWYgLyogSEFWRV9TS0VZQUNDRVNT
ICovCi0gICAgCi0gIC8qIE9ubHkgZG8gY2hlY2sgd2hldGhlciB1c2VyIGhhcyBwYXNzd2QgZW50
cnkgKi8KLSAgICBpZiAoZ2V0cHduYW0odXNlcm5hbWUpID09IE5VTEwpCi0gICAgewotICAgICAg
ZnByaW50ZihzdGRlcnIsICJubyBzdWNoIHVzZXJcbiIpOwotICAgICAgaWYgKG1vZF9vcHQgJiBf
TU9EX0RFQlVHKQotICAgICAgICBzeXNsb2coTE9HX0RFQlVHLCAiY2Fubm90IGZpbmQgdXNlciAl
cyIsCi0gICAgICAgICAgICB1c2VybmFtZSk7Ci0gICAgICByZXR1cm4gUEFNX1VTRVJfVU5LTk9X
TjsKKyAgaWYgKChtb2Rfb3B0ICYgX01PRF9UUllfRklSU1RfUEFTUykgfHwgKG1vZF9vcHQgJiBf
TU9EX1VTRV9GSVJTVF9QQVNTKSkgeworICAgIHN0YXR1cyA9IHBhbV9nZXRfaXRlbShwYW1oLCBQ
QU1fQVVUSFRPSywgKGNvbnN0IHZvaWQgKiopICZyZXNwb25zZSk7CisgICAgaWYgKHN0YXR1cyAh
PSBQQU1fU1VDQ0VTUykgeworICAgICAgc3lzbG9nKExPR19BTEVSVCwgInBhbV9nZXRfaXRlbSBy
ZXR1cm5lZCBlcnJvciB0byBwYW1fc2tleSIpOworICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9
IGVsc2UgaWYgKHJlc3BvbnNlICE9IE5VTEwpIHsKKyAgICAgIGlmIChza2V5X3Bhc3NjaGVjayh1
c2VybmFtZSwgcmVzcG9uc2UpICE9IC0xKSB7CisJcmV0dXJuIFBBTV9TVUNDRVNTOworICAgICAg
fSBlbHNlIGlmIChtb2Rfb3B0ICYgX01PRF9VU0VfRklSU1RfUEFTUykgeworCXJldHVybiBQQU1f
SUdOT1JFOworICAgICAgfQorICAgIH0gZWxzZSBpZiAobW9kX29wdCAmIF9NT0RfVVNFX0ZJUlNU
X1BBU1MpIHsKKyAgICAgIHJldHVybiBQQU1fQVVUSFRPS19SRUNPVkVSX0VSUjsKICAgICB9Ci0K
LSAgLyogR2V0IFMvS2V5IGluZm9ybWF0aW9uIG9uIHVzZXIgd2l0aCBza2V5aW5mbygpICovCi0j
aWZkZWYgSEFWRV9TS0VZSU5GTwotICBzd2l0Y2ggKHNrZXlpbmZvKCZza2V5LCB1c2VybmFtZSwg
TlVMTCkpCi0jZWxzZQotI2lmZGVmIEhBVkVfU0tFWUxPT0tVUAotICBzd2l0Y2ggKHNrZXlsb29r
dXAoJnNrZXksIHVzZXJuYW1lKSkKLSNlbmRpZiAvKiBIQVZFX1NLRVlMT09LVVAgKi8KLSNlbmRp
ZiAvKiBIQVZFX1NLRVlJTkZPICovCi0gIHsKLSAgLyogMDogT0sgKi8KLSAgY2FzZSAwOgotICAg
IGJyZWFrOwotICAvKiAtMTogRmlsZSBlcnJvciAqLwotICBjYXNlIC0xOgotI2lmIDAKLSAgLyog
WFhYLSBUaGlzIHNlZW1zIGJyb2tlbiBpbiAoYXQgbGVhc3QpIGxvZ2RhZW1vbi01LjguIEl0IHJl
dHVybnMgLTEKLSAgICogd2hlbiB1c2VyIG5vdCBmb3VuZCBpbiBrZXlmaWxlLiAta3JlICovCi0g
ICAgZnByaW50ZihzdGRlcnIsICJzL2tleSBkYXRhYmFzZSBlcnJvclxuIik7Ci0gICAgc3lzbG9n
KExPR19OT1RJQ0UsICJzL2tleSBkYXRhYmFzZSBlcnJvciIpOwotICAgIHJldHVybiBQQU1fQVVU
SF9FUlI7Ci0jZW5kaWYKLSAgLyogMTogTm8gc3VjaCB1c2VyIGluIGRhdGFiYXNlICovCi0gIGNh
c2UgMToKLSAgICAvKiBXZSB3b24ndCBjb25mdXNlIHRoZSBvcmRpbmFyeSB1c2VyIHRlbGxpbmcg
aGltIGFib3V0IG1pc3Npbmcgc2tleXMKLSAgICAgKiAta3JlICovCi0jaWYgMAotICAgIGZwcmlu
dGYoc3RkZXJyLCAibm8gcy9rZXkgZm9yICVzXG4iLCB1c2VybmFtZSk7Ci0jZW5kaWYKLSAgICBp
ZiAobW9kX29wdCAmIF9NT0RfREVCVUcpCi0gICAgICBzeXNsb2coTE9HX0RFQlVHLCAibm8gcy9r
ZXkgZm9yICVzXG4iLCB1c2VybmFtZSk7Ci0gICAgcmV0dXJuIFBBTV9BVVRIX0VSUjsKICAgfQot
Ci0gIC8qIE1ha2UgY2hhbGxlbmdlIHN0cmluZyAqLwotI2lmIGRlZmluZWQoU0tFWV9NQVhfSEFT
SE5BTUVfTEVOKSAmJiBkZWZpbmVkKFNLRVlfTUFYX1NFRURfTEVOKQotICBzbnByaW50ZihjaGFs
bGVuZ2UsIENIQUxMRU5HRV9NQVhTSVpFLCAib3RwLSUuKnMgJWQgJS4qcyIsCi0gICAgICBTS0VZ
X01BWF9IQVNITkFNRV9MRU4sIHNrZXlfZ2V0X2FsZ29yaXRobSgpLCBza2V5Lm4gLSAxLCBTS0VZ
X01BWF9TRUVEX0xFTiwgc2tleS5zZWVkKTsKLSNlbHNlCi0gIHNucHJpbnRmKGNoYWxsZW5nZSwg
Q0hBTExFTkdFX01BWFNJWkUsICJzL2tleSAlZCAlcyIsCi0gICAgICBza2V5Lm4gLSAxLCBza2V5
LnNlZWQpOwotI2VuZGlmCi0KLSAgaWYgKG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgIHN5c2xv
ZyhMT0dfREVCVUcsICJnb3QgY2hhbGxlbmdlICVzIGZvciAlcyIsIGNoYWxsZW5nZSwKLSAgICAg
ICAgdXNlcm5hbWUpOwotCi0gIC8qIFJlYWQgcmVzcG9uc2UgZnJvbSBsYXN0IG1vZHVsZSdzIFBB
TV9BVVRIVE9LICovCi0gIGlmIChtb2Rfb3B0ICYgX01PRF9VU0VfRklSU1RfUEFTUykKLSAgewot
ICAgIC8qIFRyeSB0byBleHRyYWN0IGF1dGh0b2tlbiAqLwotI2lmIGRlZmluZWQgTElOVVggfHwg
ZGVmaW5lZCBCU0QKLSAgICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9BVVRIVE9LLCAoY29u
c3Qgdm9pZCAqKikmcmVzcG9uc2UpCi0jZWxzZQotICAgIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwg
UEFNX0FVVEhUT0ssICh2b2lkICoqKSZyZXNwb25zZSkKLSNlbmRpZgotICAgICAgICAhPSBQQU1f
U1VDQ0VTUykKLSAgICB7Ci0gICAgICBpZiAobW9kX29wdCAmIF9NT0RfREVCVUcpCi0gICAgICAg
IHN5c2xvZyhMT0dfREVCVUcsICJjb3VsZCBub3QgZ2V0IFBBTV9BVVRIVE9LIik7Ci0gICAgICBt
b2Rfb3B0ICY9IH5fTU9EX1VTRV9GSVJTVF9QQVNTOworICAKKyAgaWYgKG1vZF9vcHQgJiBfTU9E
X05PX0RFRkFVTFRfU0tFWSkgeworICAgIHN0YXR1cyA9IG1vZF90YWxrX3RvdXNlcihwYW1oLCBt
b2Rfb3B0LCBOVUxMLCBRVUVSWV9QQVNTV09SRCwgMCwgJnJlc3BvbnNlKTsKKyAgICBpZiAoc3Rh
dHVzICE9IFBBTV9TVUNDRVNTKSB7CisgICAgICBfcGFtX2RlbGV0ZShyZXNwb25zZSkKKyAgICAg
IHJldHVybiBzdGF0dXM7CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvKiBHb3QgQVVU
SFRPSywgYnV0IGl0IHdhcyBlbXB0eSAqLwotICAgICAgaWYgKGVtcHR5X2F1dGh0b2socmVzcG9u
c2UpKQotICAgICAgewotICAgICAgICBpZiAobW9kX29wdCAmIF9NT0RfREVCVUcpCi0gICAgICAg
ICAgc3lzbG9nKExPR19ERUJVRywgImVtcHR5IFBBTV9BVVRIVE9LIik7Ci0gICAgICAgIG1vZF9v
cHQgJj0gfl9NT0RfVVNFX0ZJUlNUX1BBU1M7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAg
IC8qIEFsbCBPSywgcHJpbnQgY2hhbGxlbmdlIGluZm9ybWF0aW9uICovCi0gICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiY2hhbGxlbmdlICVzXG4iLCBjaGFsbGVuZ2UpOworICAgIGlmIChzdHJjYXNl
Y21wKHJlc3BvbnNlLCJzL2tleSIpIT0wKSB7CisgICAgICBzdGF0dXMgPSBwYW1fc2V0X2l0ZW0o
cGFtaCwgUEFNX0FVVEhUT0ssIHJlc3BvbnNlKTsKKyAgICAgIGlmIChzdGF0dXMgIT0gUEFNX1NV
Q0NFU1MpCisJcmV0dXJuIHN0YXR1czsKKyAgICAgIHJldHVybiBQQU1fSUdOT1JFOwogICAgIH0K
KyAgICBfcGFtX2RlbGV0ZShyZXNwb25zZSk7CiAgIH0KIAotICAvKiBUaGVyZSB3YXMgbm8gUEFN
X0FVVEhUT0ssIG9yIHRoZXJlIHdhcyBubyBzdWNoIG9wdGlvbiBpbiBwYW0tY29uZgotICAgKiBm
aWxlICovCi0gIGlmICghKG1vZF9vcHQgJiBfTU9EX1VTRV9GSVJTVF9QQVNTKSkKLSAgewotICAg
IC8qIFByZXBhcmUgYSBjb21wbGV0ZSBtZXNzYWdlIGZvciBjb252ZXJzYXRpb24gKi8KLSAgICBz
bnByaW50Zihtc2dfdGV4dCwgUEFNX01BWF9NU0dfU0laRSwKLSAgICAgICAgImNoYWxsZW5nZSAl
c1xucGFzc3dvcmQ6ICIsIGNoYWxsZW5nZSk7Ci0KLSAgICAvKiBUYWxrIHdpdGggdXNlciAqLwot
ICAgIGlmIChtb2RfdGFsa190b3VzZXIocGFtaCwgJm1vZF9vcHQsIG1zZ190ZXh0LCAmcmVzcG9u
c2UpCi0gICAgICAgICE9IFBBTV9TVUNDRVNTKQotICAgICAgcmV0dXJuIFBBTV9TRVJWSUNFX0VS
UjsKLQotICAgIC8qIFNpbXVsYXRlIHN0YW5kYXJkIFMvS2V5IGxvZ2luIHByb2NlZHVyZSAtIGlm
IGVtcHR5IHRva2VuLCB0dXJuIG9uCi0gICAgICogRUNITyBhbmQgcHJvbXB0IGFnYWluICovCi0g
ICAgaWYgKGVtcHR5X2F1dGh0b2socmVzcG9uc2UpICYmICEobW9kX29wdCAmIF9NT0RfT05MWV9P
TkVfVFJZKSkKLSAgICB7Ci0gICAgICAvKiBXYXMgdGhlcmUgZWNobyBvZmY/ICovCi0gICAgICBp
ZiAobW9kX29wdCAmIF9NT0RfRUNIT19PRkYpCi0gICAgICB7Ci0gICAgICAgIF9wYW1fZGVsZXRl
KHJlc3BvbnNlKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIodHVybmluZyBlY2hvIG9uKVxu
Iik7Ci0gICAgICAgIG1vZF9vcHQgJj0gfl9NT0RfRUNIT19PRkY7Ci0KLSAgICAgICAgLyogUHJl
cGFyZSBhIGNvbXBsZXRlIG1lc3NhZ2UgZm9yIGNvbnZlcnNhdGlvbiAqLwotICAgICAgICBzbnBy
aW50Zihtc2dfdGV4dCwgUEFNX01BWF9NU0dfU0laRSwgInBhc3N3b3JkOiAiKTsKLQotICAgICAg
ICAvKiBUYWxrIHdpdGggdXNlciAqLwotICAgICAgICBpZiAobW9kX3RhbGtfdG91c2VyKHBhbWgs
ICZtb2Rfb3B0LCBtc2dfdGV4dCwgJnJlc3BvbnNlKQotICAgICAgICAgICE9IFBBTV9TVUNDRVNT
KQotICAgICAgICAgIHJldHVybiBQQU1fU0VSVklDRV9FUlI7Ci0KLSAgICAgICAgLyogR290IGFn
YWluIGVtcHR5IHJlc3BvbnNlLiBCYWlsb3V0IGFuZCBkb24ndCBzYXZlIGF1dGggdG9rZW4gKi8K
LSAgICAgICAgaWYgKGVtcHR5X2F1dGh0b2socmVzcG9uc2UpKQotICAgICAgICAgIHJldHVybiBQ
QU1fQVVUSF9FUlI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAvKiBUaGVyZSB3YXMgZWNo
byBvbiBhbHJlYWR5IC0ganVzdCBnZXQgb3V0IGFuZCBkb24ndCBzYXZlIGF1dGggdG9rZW4KLSAg
ICAgICAqIGZvciBvdGhlciBtb2R1bGVzICovCi0gICAgICAgIHJldHVybiBQQU1fQVVUSF9FUlI7
Ci0gICAgfQorICBjaGFsbGVuZ2UgPSBza2V5X2tleWluZm8odXNlcm5hbWUpOworICBpZiAoY2hh
bGxlbmdlID09IE5VTEwpIHsKKyAgICBzeXNsb2coTE9HX0FMRVJULCAiQ291bGQgbm90IHJldHJp
ZXZlIFMvS2V5IGNoYWxsZW5nZSBmb3IgWyVzXSIsIHVzZXJuYW1lKTsKKyAgICByZXR1cm4gUEFN
X0FVVEhJTkZPX1VOQVZBSUw7CisgIH0KIAotICAgIC8qIFhYWCAtIEVDSE8gT04gcHV0cyAnXG4n
IGF0IHRoZSBlbmQgaW4gU29sYXJpcyAyLjchIFRoaXMgaXMKLSAgICAgKiBjbHVkZ2UgdG8gZ2V0
IHJpZCBvZiB0aGlzIG5hc3R5IGBmZWF0dXJlJyAta3JlICovCi0gICAgX3BhbV9kZWdhcmJhZ2Uo
cmVzcG9uc2UpOwotICAKLSAgICAvKiBTdG9yZSBhdXRoIHRva2VuIC0gdGhhdCBuZXh0IG1vZHVs
ZSBjYW4gdXNlIHdpdGggYHVzZV9maXJzdF9wYXNzJyAqLwotICAgIGlmIChwYW1fc2V0X2l0ZW0o
cGFtaCwgUEFNX0FVVEhUT0ssIHJlc3BvbnNlKSAhPSBQQU1fU1VDQ0VTUykKLSAgICB7Ci0gICAg
ICBzeXNsb2coTE9HX05PVElDRSwgInVuYWJsZSB0byBzYXZlIGF1dGggdG9rZW4iKTsKLSAgICAg
IHJldHVybiBQQU1fU0VSVklDRV9FUlI7Ci0gICAgfQorICBpZiAobW9kX29wdCAmIF9NT0RfTk9f
REVGQVVMVF9TS0VZKSAKKyAgICBzdGF0dXMgPSBtb2RfdGFsa190b3VzZXIocGFtaCwgbW9kX29w
dCwgY2hhbGxlbmdlLCBRVUVSWV9SRVNQT05TRSwgMCwgJnJlc3BvbnNlKTsKKyAgZWxzZQorICAg
IHN0YXR1cyA9IG1vZF90YWxrX3RvdXNlcihwYW1oLCBtb2Rfb3B0LCBjaGFsbGVuZ2UsIFFVRVJZ
X1JFU1BPTlNFX09SX1BBU1NXT1JELCAwLCAmcmVzcG9uc2UpOwogCi0gICAgLyogY2xlYW51cCBj
b252ZXJzYXRpb24gKi8KKyAgaWYgKHN0YXR1cyAhPSBQQU1fU1VDQ0VTUykKKyAgICByZXR1cm4g
c3RhdHVzOworICAKKyAgaWYgKCpyZXNwb25zZSA9PSAnXDAnKSB7CiAgICAgX3BhbV9kZWxldGUo
cmVzcG9uc2UpOwotICB9IAotCi0gIC8qIFZlcmlmeSBTL0tleSAqLwotICBzdGF0dXMgPSBza2V5
dmVyaWZ5KCZza2V5LCByZXNwb25zZSk7CisgICAgc3RhdHVzID0gbW9kX3RhbGtfdG91c2VyKHBh
bWgsIG1vZF9vcHQsIE5VTEwsIFFVRVJZX1JFU1BPTlNFLCAxLCAmcmVzcG9uc2UpOworICAgIGlm
IChzdGF0dXMgIT0gUEFNX1NVQ0NFU1MpCisgICAgICByZXR1cm4gc3RhdHVzOworICAgIHN0YXR1
cyA9IHBhbV9zZXRfaXRlbShwYW1oLCBQQU1fQVVUSFRPSywgcmVzcG9uc2UpOworICAgIHN0YXR1
cyA9IHNrZXlfcGFzc2NoZWNrKHVzZXJuYW1lLCByZXNwb25zZSk7CisgICAgX3BhbV9kZWxldGUo
cmVzcG9uc2UpOworICAgIGlmIChzdGF0dXMgIT0gLTEpCisgICAgICByZXR1cm4gUEFNX1NVQ0NF
U1M7CisgICAgcmV0dXJuIFBBTV9BVVRIX0VSUjsKKyAgfQogCi0gIHN3aXRjaCAoc3RhdHVzKQot
ICB7Ci0gICAgLyogMDogVmVyaWZ5IHN1Y2Nlc3NmdWwsIGRhdGFiYXNlIHVwZGF0ZWQgKi8KLSAg
ICBjYXNlIDA6Ci0gICAgICBicmVhazsKLSAgICAvKiAtMTogRXJyb3Igb2Ygc29tZSBzb3J0OyBk
YXRhYmFzZSB1bmNoYW5nZWQgKi8KLSAgICAvKiAgMTogVmVyaWZ5IGZhaWxlZCwgZGF0YWJhc2Ug
dW5jaGFuZ2VkICovCi0gICAgY2FzZSAtMToKLSAgICBjYXNlIDE6Ci0gICAgICBpZiAobW9kX29w
dCAmIF9NT0RfREVCVUcpCi0gICAgICAgIHN5c2xvZyhMT0dfREVCVUcsICJ2ZXJpZnkgZm9yICVz
IGZhaWxlZCwgZGF0YWJhc2UiCi0gICAgICAgICAgICAiIHVuY2hhbmdlZCIsIHVzZXJuYW1lKTsK
LSAgICAgIHJldHVybiBQQU1fQVVUSF9FUlI7CisgIHN0YXR1cyA9IHBhbV9zZXRfaXRlbShwYW1o
LCBQQU1fQVVUSFRPSywgcmVzcG9uc2UpOworICBzdGF0dXMgPSBza2V5X3Bhc3NjaGVjayh1c2Vy
bmFtZSwgcmVzcG9uc2UpOworICBpZiAoc3RhdHVzICE9IC0xKSB7CisgICAgX3BhbV9kZWxldGUo
cmVzcG9uc2UpOworICAgIHJldHVybiBQQU1fU1VDQ0VTUzsKKyAgfQorICAKKyAgaWYgKG1vZF9v
cHQgJiBfTU9EX05PX0RFRkFVTFRfU0tFWSkgeworICAgIF9wYW1fZGVsZXRlKHJlc3BvbnNlKTsK
KyAgICByZXR1cm4gUEFNX0FVVEhfRVJSOwogICB9CiAKLSAgLyogU3VjY2VzcyBieSBkZWZhdWx0
ICovCi0gIHJldHVybiBQQU1fU1VDQ0VTUzsKKyAgc3RhdHVzID0gcGFtX3NldF9pdGVtKHBhbWgs
IFBBTV9BVVRIVE9LLCByZXNwb25zZSk7CisgIHJldHVybiBQQU1fSUdOT1JFOwogfQogCiAvKiBH
ZXQgbW9kdWxlIG9wdGlvbmFsIHBhcmFtZXRlcnMgKi8KQEAgLTMzMiw1MCArMjA3LDQzIEBACiB9
CiAKIC8qIFRoaXMgd2lsbCB0YWxrIHRvIHVzZXIgdGhyb3VnaCBQQU1fQ09OViAqLwotc3RhdGlj
IGludCBtb2RfdGFsa190b3VzZXIocGFtX2hhbmRsZV90ICpwYW1oLCB1bnNpZ25lZCAqbW9kX29w
dCwKLSAgICBjaGFyICptc2dfdGV4dCwgY2hhciAqKnJlc3BvbnNlKQorc3RhdGljIGludCBtb2Rf
dGFsa190b3VzZXIocGFtX2hhbmRsZV90ICpwYW1oLCB1bnNpZ25lZCBtb2Rfb3B0LAorICAgIGNv
bnN0IGNoYXIgKmluZm9fdGV4dCwgY29uc3QgY2hhciAqcHJvbXB0X3RleHQsIGludCBlY2hvX29u
LCBjaGFyICoqcmVzcG9uc2UpCiB7Ci0gIHN0cnVjdCBwYW1fbWVzc2FnZSBtZXNzYWdlOwotICBj
b25zdCBzdHJ1Y3QgcGFtX21lc3NhZ2UgKnBtZXNzYWdlID0gJm1lc3NhZ2U7CisgIHN0cnVjdCBw
YW1fbWVzc2FnZSBtZXNzYWdlWzJdLCAqcG1lc3NhZ2VbMl07CiAgIHN0cnVjdCBwYW1fY29udiAq
Y29udiA9IE5VTEw7CiAgIHN0cnVjdCBwYW1fcmVzcG9uc2UgKnByZXNwb25zZSA9IE5VTEw7Ci0K
KyAgaW50IGk9MDsKKyAgCiAgIC8qIEJldHRlciBzYWZlIHRoYW4gc29ycnkgKi8KICAgKnJlc3Bv
bnNlID0gTlVMTDsKIAogICAvKiBCZSBwYXJhbm9pZCAqLwogICBtZW1zZXQoJm1lc3NhZ2UsIDAs
IHNpemVvZihtZXNzYWdlKSk7CiAKLSAgLyogVHVybiBvbi9vZmYgUEFNIGVjaG8gKi8KLSAgaWYg
KCptb2Rfb3B0ICYgX01PRF9FQ0hPX09GRikKLSAgICBtZXNzYWdlLm1zZ19zdHlsZSA9IFBBTV9Q
Uk9NUFRfRUNIT19PRkY7Ci0gIGVsc2UKLSAgICBtZXNzYWdlLm1zZ19zdHlsZSA9IFBBTV9QUk9N
UFRfRUNIT19PTjsKKyAgcG1lc3NhZ2VbMF0gPSAmbWVzc2FnZVswXTsKKyAgcG1lc3NhZ2VbMV0g
PSAmbWVzc2FnZVsxXTsKKyAgCisgIC8qIFNldCBpbmZvIHRleHQsIGlmIGFueSAqLworICBpZiAo
aW5mb190ZXh0KSB7CisgICAgbWVzc2FnZVtpXS5tc2cgPSBpbmZvX3RleHQ7CisgICAgbWVzc2Fn
ZVtpXS5tc2dfc3R5bGUgPSBQQU1fVEVYVF9JTkZPOworICAgIGkrKzsKKyAgfQogICAKLSAgLyog
UG9pbnQgdG8gY29udmVyc2F0aW9uIHRleHQgKi8KLSAgbWVzc2FnZS5tc2cgPSBtc2dfdGV4dDsK
KyAgLyogU2V0IHByb21wdCB0ZXh0ICovCisgIG1lc3NhZ2VbaV0ubXNnID0gcHJvbXB0X3RleHQ7
CisgIG1lc3NhZ2VbaV0ubXNnX3N0eWxlID0gZWNob19vbiA/IFBBTV9QUk9NUFRfRUNIT19PTiA6
IFBBTV9QUk9NUFRfRUNIT19PRkY7CisgIGkrKzsKIAogICAvKiBEbyBjb252ZXJzYXRpb24gYW5k
IHNlZSBpZiBhbGwgaXMgT0sgKi8KLSNpZiBkZWZpbmVkIExJTlVYIHx8IGRlZmluZWQgQlNECi0g
IGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX0NPTlYsIChjb25zdCB2b2lkICoqKSZjb252KQot
I2Vsc2UKLSAgaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fQ09OViwgKHZvaWQgKiopJmNvbnYp
Ci0jZW5kaWYKLSAgICAgICE9IFBBTV9TVUNDRVNTKQotICB7Ci0gICAgaWYgKCptb2Rfb3B0ICYg
X01PRF9ERUJVRykKLSAgICAgIHN5c2xvZyhMT0dfREVCVUcsICJlcnJvciBpbiBjb252ZXJzYXRp
b24iKTsKKyAgaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1fQ09OViwgKGNvbnN0IHZvaWQgKiop
JmNvbnYpICE9IFBBTV9TVUNDRVNTKSB7CisgICAgTE9HREVCVUcoKExPR19ERUJVRywgImVycm9y
IGluIGNvbnZlcnNhdGlvbiIpKTsKICAgICByZXR1cm4gUEFNX1NFUlZJQ0VfRVJSOwogICB9Ci0K
LSAgLyogQ29udmVydCBpbnRvIHBhbV9yZXNwb25zZSAtIG9ubHkgMSByZXBseSBleHBlY3RlZCAq
LwotI2lmIGRlZmluZWQgTElOVVggfHwgZGVmaW5lZCBCU0QKLSAgaWYgKGNvbnYtPmNvbnYoMSwg
JnBtZXNzYWdlLCAmcHJlc3BvbnNlLAorICAvKiBDb252ZXJ0IGludG8gcGFtX3Jlc3BvbnNlICov
CisgIGlmIChjb252LT5jb252KGksIChjb25zdCBzdHJ1Y3QgcGFtX21lc3NhZ2UgKiopcG1lc3Nh
Z2UsICZwcmVzcG9uc2UsCiAgICAgICAgIGNvbnYtPmFwcGRhdGFfcHRyKQotI2Vsc2UKLSAgaWYg
KGNvbnYtPmNvbnYoMSwgKHN0cnVjdCBwYW1fbWVzc2FnZSAqKikmcG1lc3NhZ2UsICZwcmVzcG9u
c2UsCi0gICAgICAgIGNvbnYtPmFwcGRhdGFfcHRyKQotI2VuZGlmCiAgICAgIT0gUEFNX1NVQ0NF
U1MpCiAgIHsKICAgICBfcGFtX2RlbGV0ZShwcmVzcG9uc2UtPnJlc3ApOwpAQCAtMzg1LDEwICsy
NTMsMTAgQEAKICAgaWYgKHByZXNwb25zZSAhPSBOVUxMKQogICB7CiAgICAgLyogU2F2ZSBhZGRy
ZXNzICovCi0gICAgKnJlc3BvbnNlID0gcHJlc3BvbnNlLT5yZXNwOworICAgICpyZXNwb25zZSA9
IHByZXNwb25zZVtpLTFdLnJlc3A7CiAgICAgLyogVG8gZW5zdXJlIHRoYXQgcmVzcG9uc2UgYWRk
cmVzcyB3aWxsIG5vdCBiZSBlcmFzZWQgKi8KLSAgICBwcmVzcG9uc2UtPnJlc3AgPSBOVUxMOwot
ICAgIF9wYW1fZHJvcChwcmVzcG9uc2UpOworICAgIHByZXNwb25zZVtpLTFdLnJlc3AgPSBOVUxM
OworICAgIF9wYW1fZHJvcF9yZXBseShwcmVzcG9uc2UsaSk7CiAgIH0KICAgZWxzZQogICAgIHJl
dHVybiBQQU1fU0VSVklDRV9FUlI7CmRpZmYgLU51ciBwYW1fc2tleS0xLjEuNC9wYW1fc2tleS5o
IHBhbV9za2V5L3BhbV9za2V5LmgKLS0tIHBhbV9za2V5LTEuMS40L3BhbV9za2V5LmgJMjAwNS0w
Ni0xOCAxNDozNjoxOC4wMDAwMDAwMDAgKzAyMDAKKysrIHBhbV9za2V5L3BhbV9za2V5LmgJMjAw
Ni0wMy0wNiAwOToyNjo1NS4wMDAwMDAwMDAgKzAxMDAKQEAgLTIyLDI5ICsyMiwyNSBAQAogICov
CiAKIC8qIFByb3RvdHlwZXMgKi8KLSNpZm5kZWYgQlNECi1leHRlcm4gaW50IHNrZXlpbmZvKHN0
cnVjdCBza2V5ICosIGNoYXIgKiwgY2hhciAqKTsgLyogT1JHSCEgTm90IGluIHNrZXkuaCAqLwot
I2VuZGlmCi0KIHN0YXRpYyB2b2lkIG1vZF9nZXRvcHQodW5zaWduZWQgKiwgaW50LCBjb25zdCBj
aGFyICoqKTsKLXN0YXRpYyBpbnQgbW9kX3RhbGtfdG91c2VyKHBhbV9oYW5kbGVfdCAqLCB1bnNp
Z25lZCAqLCBjaGFyICosIGNoYXIgKiopOworc3RhdGljIGludCBtb2RfdGFsa190b3VzZXIocGFt
X2hhbmRsZV90ICosIHVuc2lnbmVkLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50LCBj
aGFyICoqKTsKIAogLyogZnJlZSgpIG1hY3JvICovCi0jZGVmaW5lIF9wYW1fZHJvcChYKSAgXAor
LyojZGVmaW5lIF9wYW1fZHJvcChYKSAgXAogaWYgKFggIT0gTlVMTCkgICAgICAgIFwKIHsgICAg
ICAgICAgICAgICAgICAgICBcCiAgIGZyZWUoWCk7ICAgICAgICAgICAgXAogICBYID0gTlVMTDsg
ICAgICAgICAgIFwKLX0KK30qLwogCiAvKiBTZWN1cmUgb3ZlcndyaXRlICovCi0jZGVmaW5lIF9w
YW1fb3ZlcndyaXRlKHgpICAgXAorLyojZGVmaW5lIF9wYW1fb3ZlcndyaXRlKHgpICAgXAogeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgcmVnaXN0ZXIgY2hhciAqX194eF9fOyAgICBc
CiAgIGlmICgoX194eF9fID0gKHgpKSkgICAgICAgXAogICAgIHdoaWxlICgqX194eF9fKSAgICAg
ICAgIFwKICAgICAqX194eF9fKysgPSAnXDAnOyAgICAgICBcCi19Cit9Ki8KIAogLyogRHJvcC1p
biBzZWN1cmUgcmVwbGFjZW1lbnQgLSB3ZSBkbyBub3Qgd2FudCBjbGVhcnRleHQgcGFzc3dvcmRz
IGx5aW5nCiAgKiBzY2F0dGVyZWQgYXJvdW5kICovCkBAIC01Niw3ICs1Miw3IEBACiAKIC8qIFRo
aXMgd2lsbCBnZXQgdXMgcmlkIG9mIGZpcnN0ICdcbicgaW4gcmVzcG9uc2Ugc3RyaW5nIGFuZCBj
dXQtb2ZmIHRoZQogICogcmVzdCBvZiB0aGUgc3RyaW5nLiBJdCBzaG91bGQgYmUgQVNDSUlaLCBv
ZiBjb3Vyc2UgKi8KLSNkZWZpbmUgX3BhbV9kZWdhcmJhZ2UoeCkgICAgICBcCisvKiNkZWZpbmUg
X3BhbV9kZWdhcmJhZ2UoeCkgICAgICBcCiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICByZWdpc3RlciBjaGFyICpfX3h4X187ICAgICAgIFwKICAgICBpZiAoKF9feHhfXyA9ICh4
KSkpICAgICAgICBcCkBAIC03MCwzMCArNjYsMjUgQEAKICAgICAgICAgZWxzZSAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgX194eF9fKys7ICAgICAgICAgICAgXAogICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLX0KK30qLwogCiAvKiBIYW5keSBlbXB0eSBBVVRIVE9LIG1h
Y3JvICovCiAjZGVmaW5lIGVtcHR5X2F1dGh0b2soYSkgKGEgPT0gTlVMTCB8fCAhKmEgfHwgKmEg
PT0gJ1xuJykKIAotLyogTWF4aW11bSBjaGFsbGVuZ2Ugc2l6ZS4gSXQgc2hvdWxkIGJlIDY0LCBi
dXQgYmUgc3VyZSAqLwotI2RlZmluZSBDSEFMTEVOR0VfTUFYU0laRSAxMjgKLQogLyogRGVmaW5l
IG1vZHVsZSBmbGFncyAqLwotI2RlZmluZSBfTU9EX05PTkVfT04gICAgICAgIDB4MDAwMCAgICAg
IC8qIEdlbmVyaWMgZmxhZyAqLwotI2RlZmluZSBfTU9EX0FMTF9PTiAgICAofl9NT0RfTk9ORV9P
TikgIC8qIEdlbmVyaWMgbWFzayAqLwotI2RlZmluZSBfTU9EX0RFQlVHICAgICAgICAgIDB4MDAw
MSAgICAgIC8qIERlYnVnZ2luZyBvcHRpb25zIG9uICovCi0jZGVmaW5lIF9NT0RfRUNIT19PRkYg
ICAgICAgMHgwMDAyICAgICAgLyogUEFNX0VDSE9fT0ZGICovCi0jZGVmaW5lIF9NT0RfQUNDRVNT
X0NIRUNLICAgMHgwMDA0ICAgICAgLyogQ2hlY2sgUy9LZXkgYWNjZXNzIHBlcm1pc3Npb25zICov
Ci0jZGVmaW5lIF9NT0RfVVNFX0ZJUlNUX1BBU1MgMHgwMDA4ICAgICAgLyogVXNlIFBBTV9BVVRI
VE9LICovCi0jZGVmaW5lIF9NT0RfT05MWV9PTkVfVFJZICAgMHgwMDEwICAgICAgLyogT25seSBv
bmUgdHJ5LCBubyBtYXR0ZXIgb2YgZWNobyAqLwotI2RlZmluZSBfTU9EX1NQQUNFUiAgICAgICAg
IDB4MDAyMCAgICAgIC8qIEN1cnJlbnRseSB1bnVzZWQgKi8KKyNkZWZpbmUgX01PRF9OT05FX09O
ICAgICAgICAgMHgwMDAwCS8qIEdlbmVyaWMgZmxhZyAqLworI2RlZmluZSBfTU9EX0FMTF9PTiAg
ICAofl9NT0RfTk9ORV9PTikJLyogR2VuZXJpYyBtYXNrICovCisjZGVmaW5lIF9NT0RfREVCVUcg
ICAgICAgICAgIDB4MDAwMQkvKiBEZWJ1Z2dpbmcgb3B0aW9ucyBvbiAqLworI2RlZmluZSBfTU9E
X1RSWV9GSVJTVF9QQVNTICAweDAwMDIJLyogQXR0ZW1wdCB1c2luZyBQQU1fQVVUSFRPSyAqLwor
I2RlZmluZSBfTU9EX1VTRV9GSVJTVF9QQVNTICAweDAwMDQJLyogT25seSB1c2UgUEFNX0FVVEhU
T0sgKi8KKyNkZWZpbmUgX01PRF9OT19ERUZBVUxUX1NLRVkgMHgwMDA4CS8qIERvbid0IHVzZSBT
L0tleSBieSBkZWZhdWx0ICovCiAKIC8qIFNldHVwIGRlZmF1bHRzIC0gdXNlIGVjaG8gb2ZmIG9u
bHkgKi8KLSNkZWZpbmUgX01PRF9ERUZBVUxUX0ZMQUcgICBfTU9EX0VDSE9fT0ZGCisjZGVmaW5l
IF9NT0RfREVGQVVMVF9GTEFHICAgX01PRF9OT05FX09OCiAjZGVmaW5lIF9NT0RfREVGQVVMVF9N
QVNLICAgX01PRF9BTExfT04KIAogLyogTnVtYmVyIG9mIHBhcmFtZXRlcnMgY3VycmVudGx5IGtu
b3duICovCi0jZGVmaW5lIF9NT0RfQVJHUyAgICAgICAgICAgOAorI2RlZmluZSBfTU9EX0FSR1Mg
ICAgICAgICAgIDQKIAogLyogU3RydWN0dXJlIGZvciBmbGV4aWJsZSBhcmd1bWVudCBwYXJzaW5n
ICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMTA4LDExICs5OSw3IEBACiB7CiAgIC8qIFN0cmluZyAg
ICAgICAgICAgIE1hc2sgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnICovCiAgIHsiZGVi
dWciLCAgICAgICAgICAgIF9NT0RfQUxMX09OLCAgICAgICAgICAgICAgICAgICBfTU9EX0RFQlVH
fSwKLSAgeyJlY2hvPW9mZiIsICAgICAgICAgX01PRF9BTExfT04sICAgICAgICAgICAgICAgICAg
IF9NT0RfRUNIT19PRkZ9LAotICB7ImVjaG89b24iLCAgICAgICAgICBfTU9EX0FMTF9PTl5fTU9E
X0VDSE9fT0ZGLCAgICAgX01PRF9OT05FX09OfSwKLSAgeyJhY2Nlc3NfY2hlY2s9b24iLCAgX01P
RF9BTExfT04sICAgICAgICAgICAgICAgICAgIF9NT0RfQUNDRVNTX0NIRUNLfSwKLSAgeyJhY2Nl
c3NfY2hlY2s9b2ZmIiwgX01PRF9BTExfT05eX01PRF9BQ0NFU1NfQ0hFQ0ssIF9NT0RfTk9ORV9P
Tn0sCisgIHsidHJ5X2ZpcnN0X3Bhc3MiLCAgIF9NT0RfQUxMX09OLCAgICAgICAgICAgICAgICAg
ICBfTU9EX1RSWV9GSVJTVF9QQVNTfSwKICAgeyJ1c2VfZmlyc3RfcGFzcyIsICAgX01PRF9BTExf
T04sICAgICAgICAgICAgICAgICAgIF9NT0RfVVNFX0ZJUlNUX1BBU1N9LAotICB7InRyeV9maXJz
dF9wYXNzIiwgICBfTU9EX0FMTF9PTiwgICAgICAgICAgICAgICAgICAgX01PRF9VU0VfRklSU1Rf
UEFTU30sCi0gIHsib25seV9vbmVfdHJ5IiwgICAgIF9NT0RfQUxMX09OLCAgICAgICAgICAgICAg
ICAgICBfTU9EX09OTFlfT05FX1RSWX0KKyAgeyJub19kZWZhdWx0X3NrZXkiLCAgX01PRF9BTExf
T04sICAgICAgICAgICAgICAgICAgIF9NT0RfTk9fREVGQVVMVF9TS0VZfQogfTsKZGlmZiAtTnVy
IHBhbV9za2V5LTEuMS40L3BhbV9za2V5X2FjY2Vzcy5jIHBhbV9za2V5L3BhbV9za2V5X2FjY2Vz
cy5jCi0tLSBwYW1fc2tleS0xLjEuNC9wYW1fc2tleV9hY2Nlc3MuYwkyMDA1LTA2LTE4IDE0OjM2
OjE4LjAwMDAwMDAwMCArMDIwMAorKysgcGFtX3NrZXkvcGFtX3NrZXlfYWNjZXNzLmMJMTk3MC0w
MS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKQEAgLTEsMTYxICswLDAgQEAKLS8qIAotICog
KGMpIDIwMDEgRGlua28gS29ydW5pYywga3JlYXRvckBzcmNlLmhyCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GCi0gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgotICoKLSAqIFMvS0VZIGlzIGEgdHJhZGVtYXJr
IG9mIEJlbGxjb3JlLgotICogTWluayBpcyB0aGUgZm9ybWVyIG5hbWUgb2YgdGhlIFMvS0VZIGF1
dGhlbnRpY2F0aW9uIHN5c3RlbS4KLSAqCi0gKiBQcm9ncmFtcyB0aGF0IGhhZCBzb21lIGluZmx1
ZW5jZSBpbiBkZXZlbG9wbWVudCBvZiB0aGlzIHNvdXJjZToKLSAqICBXaWV0c2UgVmVuZW1hJ3Mg
bG9nZGFlbW9uIHBhY2thZ2UKLSAqICBPbGFmIEtpcmNoJ3MgTGludXggUy9LZXkgcGFja2FnZQot
ICogIExpbnV4LVBBTSBtb2R1bGVzIGFuZCB0ZW1wbGF0ZXMKLSAqICBXeW1hbiBNaWxlcycgcGFt
X3NlY3VyaWQgbW9kdWxlCi0gKgotICogU2hvdWxkIHlvdSBjaG9vc2UgdG8gdXNlIGFuZC9vciBt
b2RpZnkgdGhpcyBzb3VyY2UgY29kZSwgcGxlYXNlIGRvIHNvCi0gKiB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHVuZGVyIHdoaWNoIHRoaXMKLSAqIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQuCi0gKi8KLQotc3RhdGljIGNoYXIgcmNzaWRbXSA9ICIkSWQ6
IHBhbV9za2V5X2FjY2Vzcy5jLHYgMS4yIDIwMDUvMDYvMTggMTI6MzY6MTgga3JlYXRvciBFeHAg
JCI7Ci0KLSNpbmNsdWRlICJkZWZzLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUg
PHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2lmZGVmIFNUUklOR19XSVRIX1NUUklO
R1MKLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0j
aW5jbHVkZSA8cHdkLmg+IAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5c2xv
Zy5oPgotCi0jZGVmaW5lIFBBTV9FWFRFUk4gZXh0ZXJuCi0jdW5kZWYgUEFNX1NUQVRJQwotCi0j
aW5jbHVkZSA8c2VjdXJpdHkvcGFtX2FwcGwuaD4KLSNpbmNsdWRlIDxzZWN1cml0eS9wYW1fbW9k
dWxlcy5oPgotCi0jaW5jbHVkZSAic2tleS5oIgotI2luY2x1ZGUgInBhbV9za2V5LmgiCi0jaW5j
bHVkZSAibWlzYy5oIgotCi1QQU1fRVhURVJOIGludCBwYW1fc21fc2V0Y3JlZCAocGFtX2hhbmRs
ZV90ICpwYW1oLCBpbnQgZmxhZ3MsCi0gIGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKLXsK
LSAgcmV0dXJuIFBBTV9TVUNDRVNTOwotfQotCi1QQU1fRVhURVJOIGludCBwYW1fc21fYXV0aGVu
dGljYXRlKHBhbV9oYW5kbGVfdCAqcGFtaCwgaW50IGZsYWdzLAotICBpbnQgYXJnYywgY29uc3Qg
Y2hhciAqKmFyZ3YpCi17Ci0gIGNoYXIgKnVzZXJuYW1lID0gTlVMTDsgLyogd2lsbCBwb2ludCB0
byB1c2VybmFtZSAqLwotICB1bnNpZ25lZCBtb2Rfb3B0ID0gX01PRF9OT05FX09OOyAvKiBtb2R1
bGUgb3B0aW9ucyAqLwotICBjaGFyICpob3N0OyAvKiB3aWxsIHBvaW50IHRvIGhvc3QgKi8KLSAg
Y2hhciAqcG9ydDsgLyogd2lsbCBwb2ludCB0byBwb3J0ICovCi0gIHN0cnVjdCBwYXNzd2QgKnB3
dXNlcjsKLQotICAvKiBHZXQgbW9kdWxlIG9wdGlvbnMgKi8KLSAgbW9kX2dldG9wdCgmbW9kX29w
dCwgYXJnYywgYXJndik7Ci0KLSAgLyogR2V0IHVzZXJuYW1lICovCi0jaWYgZGVmaW5lZCBMSU5V
WCB8fCBkZWZpbmVkIEJTRAotICBpZiAocGFtX2dldF91c2VyKHBhbWgsIChjb25zdCBjaGFyICoq
KSZ1c2VybmFtZSwgImxvZ2luOiIpIT1QQU1fU1VDQ0VTUykKLSNlbHNlCi0gIGlmIChwYW1fZ2V0
X3VzZXIocGFtaCwgKGNoYXIgKiopJnVzZXJuYW1lLCAibG9naW46IikhPVBBTV9TVUNDRVNTKQot
I2VuZGlmCi0gIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBkZXRlcm1pbmUgdXNlcm5h
bWVcbiIpOwotICAgIGlmIChtb2Rfb3B0ICYgX01PRF9ERUJVRykKLSAgICAgIHN5c2xvZyhMT0df
REVCVUcsICJjYW5ub3QgZGV0ZXJtaW5lIHVzZXJuYW1lIik7Ci0gICAgcmV0dXJuIFBBTV9BVVRI
SU5GT19VTkFWQUlMOwotICB9Ci0KLSAgaWYgKG1vZF9vcHQgJiBfTU9EX0RFQlVHKQotICAgIHN5
c2xvZyhMT0dfREVCVUcsICJnb3QgdXNlcm5hbWUgJXMiLCB1c2VybmFtZSk7Ci0KLSAgLyogQ2hl
Y2sgUy9LZXkgYWNjZXNzIHBlcm1pc3Npb25zIC0gdXNlciwgaG9zdCBhbmQgcG9ydC4gQWxzbyBp
bmNsdWRlCi0gICAqIHNhbml0eSBjaGVja3MgKi8KLSAgLyogR2V0IGhvc3QuLiAqLwotI2lmIGRl
ZmluZWQgTElOVVggfHwgZGVmaW5lZCBCU0QKLSAgaWYgKHBhbV9nZXRfaXRlbShwYW1oLCBQQU1f
UkhPU1QsIChjb25zdCB2b2lkICoqKSZob3N0KQotI2Vsc2UKLSAgaWYgKHBhbV9nZXRfaXRlbShw
YW1oLCBQQU1fUkhPU1QsICh2b2lkICoqKSZob3N0KQotI2VuZGlmCi0gICAgIT0gUEFNX1NVQ0NF
U1MpCi0gICAgICBob3N0ID0gTlVMTDsKLSAgLyogLi5hbmQgcG9ydCAqLwotI2lmZGVmIExJTlVY
Ci0gIGlmIChwYW1fZ2V0X2l0ZW0ocGFtaCwgUEFNX1RUWSwgKGNvbnN0IHZvaWQgKiopJnBvcnQp
Ci0jZWxzZQotICBpZiAocGFtX2dldF9pdGVtKHBhbWgsIFBBTV9UVFksICh2b2lkICoqKSZwb3J0
KQotI2VuZGlmCi0gICAgIT0gUEFNX1NVQ0NFU1MpCi0gICAgICBwb3J0ID0gTlVMTDsKLQotICBp
ZiAobW9kX29wdCAmIF9NT0RfREVCVUcpCi0gICAgc3lzbG9nKExPR19ERUJVRywgImNoZWNraW5n
IHMva2V5IGFjY2VzcyBmb3IgdXNlciAlcywiCi0gICAgICAiIGhvc3QgJXMsIHBvcnQgJXMiLCB1
c2VybmFtZSwKLSAgICAgIChob3N0ICE9IE5VTEwpID8gaG9zdCA6ICIqdW5rbm93bioiLAotICAg
ICAgKHBvcnQgIT0gTlVMTCkgPyBwb3J0IDogIip1bmtub3duKiIpOwotCi0gIC8qIEdldCBpbmZv
cm1hdGlvbiBmcm9tIHBhc3N3ZCBmaWxlICovCi0gIGlmICgocHd1c2VyID0gZ2V0cHduYW0odXNl
cm5hbWUpKSA9PSBOVUxMKQotICB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJubyBzdWNoIHVzZXJc
biIpOwotICAgIHN5c2xvZyhMT0dfTk9USUNFLCAiY2Fubm90IGZpbmQgdXNlciAlcyIsCi0gICAg
ICB1c2VybmFtZSk7Ci0gICAgcmV0dXJuIFBBTV9BVVRISU5GT19VTkFWQUlMOwotICB9Ci0KLSNp
ZmRlZiBIQVZFX1NLRVlBQ0NFU1MKLQotICAvKiBEbyBhY3R1YWwgY2hlY2tpbmcgLSB3ZSBhc3N1
bWUgc2tleWFjY2VzcygpIHJldHVybnMgUEVSTUlUIHdoaWNoIGlzCi0gICAqIGJ5IGRlZmF1bHQg
MS4gTm90aWNlIDR0aCBhcmd1bWVudCBpcyBOVUxMIC0gd2Ugd2lsbCBub3QgcGVyZm9ybQotICAg
KiBhZGRyZXNzIGNoZWNrcyBvbiBob3N0IGl0c2VsZiAqLwotICBpZiAoc2tleWFjY2Vzcyhwd3Vz
ZXIsIHBvcnQsIGhvc3QsIE5VTEwpICE9IDEpCi0gIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIm5v
IHMva2V5IGFjY2VzcyBwZXJtaXNzaW9uc1xuIik7Ci0gICAgc3lzbG9nKExPR19OT1RJQ0UsICJu
byBzL2tleSBhY2Nlc3MgcGVybWlzc2lvbnMgZm9yICVzIiwKLSAgICAgICAgdXNlcm5hbWUpOwot
ICAgIHJldHVybiBQQU1fQVVUSF9FUlI7Ci0gIH0KLQotI2VuZGlmIC8qIEhBVkVfU0tFWUFDQ0VT
UyAqLwotCi0gIHJldHVybiBQQU1fU1VDQ0VTUzsKLX0KLQotLyogR2V0IG1vZHVsZSBvcHRpb25h
bCBwYXJhbWV0ZXJzICovCi1zdGF0aWMgdm9pZCBtb2RfZ2V0b3B0KHVuc2lnbmVkICptb2Rfb3B0
LCBpbnQgbW9kX2FyZ2MsIGNvbnN0IGNoYXIgKiptb2RfYXJndikKLXsKLSAgaW50IGk7Ci0KLSAg
LyogU2V0dXAgcnVudGltZSBkZWZhdWx0cyAqLwotICAqbW9kX29wdCB8PSBfTU9EX0RFRkFVTFRf
RkxBRzsKLSAgKm1vZF9vcHQgJj0gX01PRF9ERUZBVUxUX01BU0s7Ci0KLSAgLyogU2V0dXAgcnVu
dGltZSBvcHRpb25zICovCi0gIHdoaWxlIChtb2RfYXJnYy0tKQotICB7Ci0gICAgZm9yIChpID0g
MDsgaSA8IF9NT0RfQVJHUzsgKytpKQotICAgIHsKLSAgICAgIGlmIChtb2RfYXJnc1tpXS50b2tl
biAhPSBOVUxMICYmCi0gICAgICAgICAgIXN0cm5jbXAoKm1vZF9hcmd2LCBtb2RfYXJnc1tpXS50
b2tlbiwKLSAgICAgICAgICAgIHN0cmxlbihtb2RfYXJnc1tpXS50b2tlbikpKQotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgaWYgKGkgPj0gX01PRF9BUkdTKQotICAgICAgc3lzbG9nKExPR19F
UlIsICJ1bmtub3duIG9wdGlvbiAlcyIsICptb2RfYXJndik7Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICptb2Rfb3B0ICY9IG1vZF9hcmdzW2ldLm1hc2s7IC8qIFR1cm4gb2ZmICovCi0gICAgICAq
bW9kX29wdCB8PSBtb2RfYXJnc1tpXS5mbGFnOyAvKiBUdXJuIG9uICovCi0gICAgfQotICAgICsr
bW9kX2FyZ3Y7Ci0gIH0KLX0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>90101</attachid>
            <date>2006-06-25 05:34 0000</date>
            <desc>pam_skey-1.1.4 ebuild</desc>
            <filename>pam_skey-1.1.4.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA2IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6ICQKCmluaGVyaXQgZXV0aWxzIHBhbQoKREVTQ1JJUFRJT049InBhbSBpbnRlcmZhY2UgdG8g
ZXhpc3RpbmcgUy9LZXkgbGlicmFyeS9pbnRlcmZhY2UiCkhPTUVQQUdFPSJodHRwOi8vZnJlc2ht
ZWF0Lm5ldC9wcm9qZWN0cy9wYW1fc2tleS8iClNSQ19VUkk9Imh0dHA6Ly9rcmVhdG9yLmVzYS5m
ZXIuaHIvcHJvamVjdHMvdGFyYmFsbHMvJHtQfS50YXIuZ3oiCgpMSUNFTlNFPSJHUEwtMiIKU0xP
VD0iMCIKS0VZV09SRFM9In54ODYiCklVU0U9IiIKCkRFUEVORD0iPj1zeXMtbGlicy9wYW0tMC43
OC1yMwoJPj1hcHAtYWRtaW4vc2tleS0xLjEuNS1yNCIKUkRFUEVORD0iJHtERVBFTkR9IgoKUz0i
JHtXT1JLRElSfS8ke1BOfSIKCnNyY191bnBhY2soKSB7Cgl1bnBhY2sgJHtBfQoJY2QgIiR7U30i
CgllcGF0Y2ggIiR7RklMRVNESVJ9LyR7UH0tZ2VudG9vLnBhdGNoIiB8fCBkaWUgInBhdGNoIGZh
aWxlZCIKfQoKc3JjX2NvbXBpbGUoKSB7CgllY29uZiAtLWxpYmRpcj0iLyQoZ2V0X2xpYmRpciki
IHx8IGRpZSAiZWNvbmYgZmFpbGVkIgoJZW1ha2UgfHwgZGllICJlbWFrZSBmYWlsZWQiCn0KCnNy
Y19pbnN0YWxsKCkgewoJZW1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbCB8fCBkaWUgImluc3Rh
bGwgZmFpbGVkIgoJZG9kb2MgUkVBRE1FIElOU1RBTEwKCW5ld3BhbWQgIiR7RklMRVNESVJ9L3Bh
bV9za2V5LXN5c3RlbS1hdXRoLnBhbS5kIiBzeXN0ZW0tYXV0aAp9Cg==
</data>        

          </attachment>
    </bug>

</bugzilla>