<?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>183457</bug_id>
          
          <creation_ts>2007-06-27 20:29 0000</creation_ts>
          <short_desc>net-misc/openvpn UDPv6 patch</short_desc>
          <delta_ts>2008-08-02 21:39:21 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>LATER</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>gentoo@pennewiss.de</reporter>
          <assigned_to>uberlord@gentoo.org</assigned_to>
          <cc>alonbl@gentoo.org</cc>
    
    <cc>beber@meleeweb.net</cc>
    
    <cc>gentoo@pennewiss.de</cc>

      

      
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 20:29:24 0000</bug_when>
            <thetext>Hi,

i fixed the UDPv6-Patch from JuanJo Ciarlante (like described in
http://openvpn.net/archive/openvpn-devel/2004-09/msg00038.html) for
gentoo-openvpn-source an added it to ebuild. if use-flag &quot;ipv6&quot; is active
UDPv6-Support will be patched. Works fine for me.

mape2k</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 20:31:02 0000</bug_when>
            <thetext>Created an attachment (id=123241)
openvpn-2.0.7-r2.ebuild

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 20:31:33 0000</bug_when>
            <thetext>Created an attachment (id=123242)
openvpn-2.0-udp6.patch

The patch will be used if use-flag &quot;ipv6&quot; is active.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-06-27 20:40:53 0000</bug_when>
            <thetext>*** Bug 183455 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-06-27 20:41:36 0000</bug_when>
            <thetext>*** Bug 183459 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 20:56:53 0000</bug_when>
            <thetext>Created an attachment (id=123247)
openvpn-2.0.6.ebuild

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 20:57:13 0000</bug_when>
            <thetext>Created an attachment (id=123248)
openvpn-2.1_rc4.ebuild

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 20:57:38 0000</bug_when>
            <thetext>Created an attachment (id=123249)
openvpn-2.1-udp6.patch

patch for openvpn-2.1-ebuilds</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>uberlord@gentoo.org</who>
            <bug_when>2007-06-27 21:15:11 0000</bug_when>
            <thetext>Good work - I did look at this patch myself many months ago, but I haven&apos;t had the time to work on OpenVPN stuff lately.

Have you submitted this upstream?
How can I test it works? Assume I have a fully functioning IPv6 network.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2007-06-27 23:40:09 0000</bug_when>
            <thetext>(In reply to comment #8)
&gt; Have you submitted this upstream?

What do you mean?

&gt; How can I test it works? Assume I have a fully functioning IPv6 network.

you have a working openvpn-setup via IPv4? Only change &quot;proto&quot; settings to udp6 (for udp-connections) or tcp6-server/tcp6-client (for tcp-connections). Also the remote-adress should be a aaaa-record or an ipv6-adress.

mape2k</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>uberlord@gentoo.org</who>
            <bug_when>2007-06-28 13:30:32 0000</bug_when>
            <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Have you submitted this upstream?
&gt; 
&gt; What do you mean?

Submit the corrected patches to the openvpn development mailing lists for inclusion.
http://sourceforge.net/mail/?group_id=48978

&gt; &gt; How can I test it works? Assume I have a fully functioning IPv6 network.
&gt; 
&gt; you have a working openvpn-setup via IPv4? Only change &quot;proto&quot; settings to udp6
&gt; (for udp-connections) or tcp6-server/tcp6-client (for tcp-connections). Also
&gt; the remote-adress should be a aaaa-record or an ipv6-adress.

OK thanks. I&apos;ll test the patches and if they work I&apos;ll update the ebuilds.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>uberlord@gentoo.org</who>
            <bug_when>2007-06-29 09:18:03 0000</bug_when>
            <thetext>I&apos;ve tested this and it works fine :) As such I&apos;ve updated the 2.1 ebuild and sent it upstream for you.

Thanks.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-02-07 22:14:52 0000</bug_when>
            <thetext>Why is this patch removed in openvpn-2.1_rc6-r1?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-02-07 22:16:16 0000</bug_when>
            <thetext>Created an attachment (id=142939)
openvpn-2.1_rc6-r1.ebuild

ebuild using patch</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-02-07 22:16:42 0000</bug_when>
            <thetext>Created an attachment (id=142940)
openvpn-2.1_rc6-udp6.patch

patch for openvpn-2.1_rc6-r1</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-02-12 12:07:53 0000</bug_when>
            <thetext>patch &quot;openvpn-2.1_rc6-udp6.patch&quot; also runs with openvpn-2.1_rc7</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>alonbl@gentoo.org</who>
            <bug_when>2008-02-12 13:20:22 0000</bug_when>
            <thetext>Please send to upstream.
If upstream accept this, it means that it is OK and supported, and all users will enjoy it.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-02-13 14:35:41 0000</bug_when>
            <thetext>(In reply to comment #16)
&gt; Please send to upstream.

Roy did this some time ago. unfortunatly there was no response from the openvpn project.
 
&gt; If upstream accept this, it means that it is OK and supported, and all users
&gt; will enjoy it.

i will send it to upstream again and i hope the request would be answered this time.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>alonbl@gentoo.org</who>
            <bug_when>2008-02-13 20:11:27 0000</bug_when>
            <thetext>CC: James Yonan &lt;jim@yonan.net&gt;

After it will be added to upstream, I will be happy to add this.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-04-16 22:45:19 0000</bug_when>
            <thetext>Created an attachment (id=149997)
openvpn-2.1_rc7-r1.ebuild

2.1_rc7-r1 also works with rc6-udp6-patch</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-08-02 21:37:41 0000</bug_when>
            <thetext>Created an attachment (id=162041)
openvpn-2.1_rc9.ebuild

ipv6 useflag and patch included</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>gentoo@pennewiss.de</who>
            <bug_when>2008-08-02 21:39:21 0000</bug_when>
            <thetext>Created an attachment (id=162043)
openvpn-2.1_rc9-udp6.patch

udp6-patch adapted for 2.1_rc9</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>123241</attachid>
            <date>2007-06-27 20:31 0000</date>
            <desc>openvpn-2.0.7-r2.ebuild</desc>
            <filename>openvpn-2.0.7-r2.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L25ldC1taXNjL29wZW52cG4vb3BlbnZwbi0yLjAu
Ny1yMi5lYnVpbGQsdiAxLjMgMjAwNy8wNi8wOCAwNjoyMzozOCBrdW1iYSBFeHAgJAoKaW5oZXJp
dCBldXRpbHMgbXVsdGlsaWIKCkRFU0NSSVBUSU9OPSJPcGVuVlBOIGlzIGEgcm9idXN0IGFuZCBo
aWdobHkgZmxleGlibGUgdHVubmVsaW5nIGFwcGxpY2F0aW9uIGNvbXBhdGlibGUgd2l0aCBtYW55
IE9TZXMuIgpTUkNfVVJJPSJodHRwOi8vb3BlbnZwbi5uZXQvcmVsZWFzZS9vcGVudnBuLSR7UFZ9
LnRhci5neiIKSE9NRVBBR0U9Imh0dHA6Ly9vcGVudnBuLm5ldC8iCgpMSUNFTlNFPSJHUEwtMiIK
U0xPVD0iMCIKS0VZV09SRFM9In5hbHBoYSB+YW1kNjQgfmhwcGEgfm1pcHMgfnBwYyB+cHBjLW1h
Y29zIH5wcGM2NCB+c2ggfnNwYXJjIH5zcGFyYy1mYnNkIH54ODYgfng4Ni1mYnNkIgpJVVNFPSJl
eGFtcGxlcyBpcHJvdXRlMiBtaW5pbWFsIHBhbSBwYXNzd29yZHNhdmUgc2VsaW51eCBzc2wgc3Rh
dGljIHRocmVhZHMgaXB2NiIKClJERVBFTkQ9Ij49ZGV2LWxpYnMvbHpvLTEuMDcKCWtlcm5lbF9s
aW51eD8gKAoJCWlwcm91dGUyPyAoIHN5cy1hcHBzL2lwcm91dGUyICkgIWlwcm91dGUyPyAoIHN5
cy1hcHBzL25ldC10b29scyApCgkpCgkhbWluaW1hbD8gKCBwYW0/ICggdmlydHVhbC9wYW0gKSAp
CglzZWxpbnV4PyAoIHNlYy1wb2xpY3kvc2VsaW51eC1vcGVudnBuICkKCXNzbD8gKCA+PWRldi1s
aWJzL29wZW5zc2wtMC45LjYgKSIKREVQRU5EPSIke1JERVBFTkR9Cgl2aXJ0dWFsL29zLWhlYWRl
cnMiCgpwa2dfc2V0dXAoKSB7CglpZiB1c2UgaXByb3V0ZTIgOyB0aGVuCgkJaWYgYnVpbHRfd2l0
aF91c2Ugc3lzLWFwcHMvaXByb3V0ZTIgbWluaW1hbCA7IHRoZW4KCQkJZWVycm9yICJpcHJvdXRl
MiBzdXBwb3J0IHJlcXVpcmVzIHRoYXQgc3lzLWFwcHMvaXByb3V0ZTIgd2FzIG5vdCIKCQkJZWVy
cm9yICJidWlsdCB3aXRoIHRoZSBtaW5pbWFsIFVTRSBmbGFnIgoJCQlkaWUgImlwcm91dGUyIHN1
cHBvcnQgbm90IGF2YWlsYWJsZSIKCQlmaQoJZmkKfQoKc3JjX3VucGFjaygpIHsKCXVucGFjayAi
JHtBfSIKCWNkICIke1N9IgoKCWVwYXRjaCAiJHtGSUxFU0RJUn0vJHtQTn0iLTIuMC40LWRhcndp
bi5wYXRjaAoJZXBhdGNoICIke0ZJTEVTRElSfS8ke1B9LXBhbS5wYXRjaCIKCWVwYXRjaCAiJHtG
SUxFU0RJUn0vJHtQfS1wZXJzaXN0ZW50LnBhdGNoIgoJdXNlIGlwdjYgJiYgZXBhdGNoICIke0ZJ
TEVTRElSfS8ke1BOfSItMi4wLXVkcDYucGF0Y2gKfQoKc3JjX2NvbXBpbGUoKSB7Cglsb2NhbCBt
eWNvbmY9IiIKCSMgV2UgY2Fubm90IHVzZSB1c2VfZW5hYmxlIHdpdGggaXByb3V0ZTIgYXMgdGhl
IE1ha2VmaWxlIHN0dXBpZGx5CgkjIGVuYWJsZXMgaXQgd2l0aCAtLWRpc2FibGUtaXByb3V0ZTIK
CXVzZSBpcHJvdXRlMiAmJiBteWNvbmY9IiR7bXljb25mfSAtLWVuYWJsZS1pcHJvdXRlMiIKCXVz
ZSBtaW5pbWFsICYmIG15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wbHVnaW5zIgoKCWVjb25m
ICR7bXljb25mfSBcCgkJJCh1c2VfZW5hYmxlIHBhc3N3b3Jkc2F2ZSBwYXNzd29yZC1zYXZlKSBc
CgkJJCh1c2VfZW5hYmxlIHNzbCkgXAoJCSQodXNlX2VuYWJsZSBzc2wgY3J5cHRvKSBcCgkJJCh1
c2VfZW5hYmxlIHRocmVhZHMgcHRocmVhZCkgXAoJCXx8IGRpZSAiY29uZmlndXJlIGZhaWxlZCIK
Cgl1c2Ugc3RhdGljICYmIHNlZCAtaSAtZSAnL15MSUJTL3MvTElCUyA9IC9MSUJTID0gLXN0YXRp
YyAvJyBNYWtlZmlsZQoKCWVtYWtlIHx8IGRpZSAibWFrZSBmYWlsZWQiCgoJaWYgISB1c2UgbWlu
aW1hbCA7IHRoZW4KCQljZCBwbHVnaW4KCQlmb3IgaSBpbiAkKCBscyAyPi9kZXYvbnVsbCApOyBk
bwoJCQlbWyAke2l9ID09ICJSRUFETUUiIHx8ICR7aX0gPT0gImV4YW1wbGVzIiBdXSAmJiBjb250
aW51ZQoJCQlbWyAke2l9ID09ICJhdXRoLXBhbSIgXV0gJiYgISB1c2UgcGFtICYmIGNvbnRpbnVl
CgkJCWVpbmZvICJCdWlsZGluZyAke2l9IHBsdWdpbiIKCQkJY2QgIiR7aX0iCgkJCWVtYWtlIHx8
IGRpZSAibWFrZSBmYWlsZWQiCgkJCWNkIC4uCgkJZG9uZQoJCWNkIC4uCglmaQp9CgpzcmNfaW5z
dGFsbCgpIHsKCW1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbCB8fCBkaWUgIm1ha2UgaW5zdGFs
bCBmYWlsZWQiCgoJIyBpbnN0YWxsIGRvY3VtZW50YXRpb24KCWRvZG9jIEFVVEhPUlMgQ2hhbmdl
TG9nIFBPUlRTIFJFQURNRQoKCSMgRW1wdHkgZGlyCglkb2RpciAvZXRjL29wZW52cG4KCWtlZXBk
aXIgL2V0Yy9vcGVudnBuCgoJIyBJbnN0YWxsIHRoZSBpbml0IHNjcmlwdAoJbmV3aW5pdGQgIiR7
RklMRVNESVJ9L29wZW52cG4uaW5pdCIgb3BlbnZwbgoKCSMgaW5zdGFsbCBleGFtcGxlcywgY29u
dHJvbGxlZCBieSB0aGUgcmVzcGVjdGl2ZSB1c2VmbGFnCglpZiB1c2UgZXhhbXBsZXMgOyB0aGVu
CgkJIyBkb2RvYyBkb2VzIG5vdCBzdXBwb3J0bHkgc3VwcG9ydCBkaXJlY3RvcnkgdHJhdmVyc2Fs
LCAjMTUxOTMKCQlpbnNpbnRvIC91c3Ivc2hhcmUvZG9jLyR7UEZ9L2V4YW1wbGVzCgkJZG9pbnMg
LXIgc2FtcGxlLXtjb25maWctZmlsZXMsa2V5cyxzY3JpcHRzfSBjb250cmliCgkJcHJlcGFsbGRv
Y3MKCWZpCgoJIyBJbnN0YWxsIHBsdWdpbnMgYW5kIGVhc3ktcnNhCglpZiAhIHVzZSBtaW5pbWFs
IDsgdGhlbgoJCWNkIGVhc3ktcnNhLzIuMAoJCWV4ZWludG8gIi91c3Ivc2hhcmUvJHtQTn0vZWFz
eS1yc2EiCgkJZG9leGUgKi0qIHBraXRvb2wKCQlpbnNpbnRvICIvdXNyL3NoYXJlLyR7UE59L2Vh
c3ktcnNhIgoJCWRvaW5zIFJFQURNRSBvcGVuc3NsLmNuZiB2YXJzCgkJY2QgLi4vLi4KCgkJZXhl
aW50byAiL3Vzci8kKGdldF9saWJkaXIpLyR7UE59IgoJCWRvZXhlIHBsdWdpbi8qLyouc28KCWZp
Cn0KCnBrZ19wb3N0aW5zdCgpIHsKCWV3YXJuICJXQVJOSU5HOiBUaGUgb3BlbnZwbiBpbml0IHNj
cmlwdCBoYXMgY2hhbmdlZCIKCWV3YXJuICIiCgllaW5mbyAiVGhlIG9wZW52cG4gaW5pdCBzY3Jp
cHQgZXhwZWN0cyB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIGZpbGUiCgllaW5mbyAib3BlbnZw
bi5jb25mIGluIC9ldGMvb3BlbnZwbiBhbG9uZyB3aXRoIGFueSBleHRyYSBmaWxlcyBpdCBtYXkg
bmVlZC4iCgllaW5mbyAiIgoJZWluZm8gIlRvIGNyZWF0ZSBtb3JlIFZQTnMsIHNpbXBseSBjcmVh
dGUgYSBuZXcgLmNvbmYgZmlsZSBmb3IgaXQgYW5kIgoJZWluZm8gInRoZW4gY3JlYXRlIGEgc3lt
bGluayB0byB0aGUgb3BlbnZwbiBpbml0IHNjcmlwdCBmcm9tIGEgbGluayBjYWxsZWQiCgllaW5m
byAib3BlbnZwbi5uZXdjb25mbmFtZSAtIGxpa2Ugc28iCgllaW5mbyAiICAgY2QgL2V0Yy9vcGVu
dnBuIgoJZWluZm8gIiAgICR7RURJVE9SIyMqL30gZm9vLmNvbmYiCgllaW5mbyAiICAgY2QgL2V0
Yy9pbml0LmQiCgllaW5mbyAiICAgbG4gLXMgb3BlbnZwbiBvcGVudnBuLmZvbyIKCWVpbmZvICIi
CgllaW5mbyAiWW91IGNhbiB0aGVuIHRyZWF0IG9wZW52cG4uZm9vIGFzIGFueSBvdGhlciBzZXJ2
aWNlLCBzbyB5b3UgY2FuIgoJZWluZm8gInN0b3Agb25lIHZwbiBhbmQgc3RhcnQgYW5vdGhlciBp
ZiB5b3UgbmVlZCB0by4iCglpZiAhIHVzZSBtaW5pbWFsIDsgdGhlbgoJCWVpbmZvICIiCgkJZWlu
Zm8gInBsdWdpbnMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbnRvIC91c3IvJChnZXRfbGliZGlyKS8k
e1BOfSIKCWZpCgllaW5mbyAiIgoJZWluZm8gIkl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGNy
ZWF0ZSB5b3VyIHR1bi90YXAgaW50ZXJmYWNlcyB1c2luZyIKCWVpbmZvICJ0aGUgbmV0LnR1bjAv
bmV0LnRhcDAgc2NyaXB0cyBwcm92aWRlZCBieSBiYXNlbGF5b3V0IGluc3RlYWQgb2YiCgllaW5m
byAidXNpbmcgdGhlICdzZXJ2ZXInIGRpcmVjdGl2ZSBpbiBvcGVudnBuIGNvbmZpZ3VyYXRpb24g
ZmlsZXMuIgoJZWluZm8gIlRoaXMgd2lsbCBpbnN1cmUgdGhhdCB0aGUgaW50ZXJmYWNlIHJlYWxs
eSBpcyB1cCBhZnRlciBvcGVudnBuIgoJZWluZm8gInN0YXJ0cy4iCgllaW5mbyAiTm90ZSB0aGF0
IHlvdSBjYW5ub3QgdXNlIG5ldC50dW4wL25ldC50YXAwIGFuZCB0aGUgc2VydmVyIG9wdGlvbiwi
CgllaW5mbyAib3RoZXJ3aXNlIG9wZW52cG4gd2lsbCBub3Qgc3RhcnQuIgoJZWJlZXAKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123242</attachid>
            <date>2007-06-27 20:31 0000</date>
            <desc>openvpn-2.0-udp6.patch</desc>
            <filename>openvpn-2.0-udp6.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdSAvZGV2L251bGwgb3BlbnZwbi0yL0NIQU5HRVMuSVB2NjoxLjEuMTAuMTQKLS0tIC9k
ZXYvbnVsbAlXZWQgSnVuIDIyIDEzOjAxOjI0IDIwMDUKKysrIENIQU5HRVMuSVB2NglXZWQgSnVu
IDIyIDEzOjAxOjEwIDIwMDUKQEAgLTAsMCArMSw3MSBAQAorIyAkSWQ6IENIQU5HRVMuSVB2Nix2
IDEuMS4xMC4xNCAyMDA1LzA2LzIyIDE2OjAxOjEwIGpqbyBFeHAgJCAjCisqIHYwLjMuMTIKKyAg
LiBtZXJnZWQgcGF5bG9hZCBjb25udHJhY2sgZml4ZXMgKEVYUEVSSU1FTlRBTCBjb2RlLCBkaXNh
YmxlZCBieSBkZWZhdWx0KSwKKyAgICBhbG1vc3Qgbm8gaXB2NiByZWxhdGVkIGNvZGUgY2hhbmdl
cy4KKworKiB2MC4zLjExCisgIC4gd29hb29IT086IGZpeGVkIHVkcDYgTVVMVEkgKFRMUyBzZXJ2
ZXIpICEKKworKiB2MC4zLjEwCisgIC4gc3R1cGlkIHR5cG8gLi4uLiBHUlIKKworKiB2MC4zLjkK
KyAgLiBzb21lIE1IIGNvZGUgcmVvcmcuLCBhbGxvdyBjb21waWxhdGlvbiB3aXRoIC4vY29uZmln
dXJlIC0tZGlzYWJsZS1tdWx0aWhvbWUKKworKiB2MC4zLjgKKyAgLiB1ZHA2IC0tbXVsdGlob21l
IChNSCkgc3VwcG9ydCBmaXhlZCwgdGVzdGVkIE9LISBvbiBHTlUvTGludXgKKyAKKyogdjAuMy43
CisgIC4gdWRwNiBNSCBzdXBwb3J0OiBjb21waWxlcywgbm90IHRlc3RlZC4KKworKiB2MC4zLjYK
KyAgLiB0ZXN0ZWQgVURQdjQgTUggb24gR05VL0xpbnV4OiB3b3JrcyBvaworICAuIGZpeCBpbmNv
cnJlY3QgYWRkciBwcmludGluZyBpbiBwcmludF9saW5rX3NvY2thZGRyKCkgCisKKyogdjAuMy41
CisgIC4gaW50ZXJuYWxzOiBraWxsIHByaW50X2xpbmtfc29ja2FkZHJfZXgoKSwganVzdCB1c2Ug
cHJpbnRfcHJvcGlhdGUgZmxhZ3MKKyAgIChqdXN0IH4xMGxpbmVzIGNoYW5nZSBhdCBhbGwgISkK
KworKiB2MC4zLjQKKyAgLiBtYWtlIHRjcDQtY2xpZW50IHdvcmsgYWdhaW5zdCB0Y3A2LXNlcnZl
cgorCisqIHYwLjMuMworICAuIGZyZWVic2Q6IGNvbXB1dGUgdHJ1ZSBhZGRybGVuIGZvciBzZW5k
dG8oKSB3aXRoIGFmX2FkZHJfc2l6ZSgpCisKKyogdjAuMy4yCisgIC4gbWlub3IgY2hhbmdlcyB0
byBzb2NrZXQuW2NoXSAoTUggbWVyZ2UpCisKKyogdjAuMy4xCisgIC4gc3lzaGVhZC5oIE1IIGNo
YW5nZXMgd2VyZSBtaXNzaW5nIDsgbm93IGl0IGFjdHVhbGx5IGNvbXBpbGVzIE1IIHN1cHBvcnQK
KworKiB2MC4zLjAKKyAgLSB0Y3A2LWNsaWVudCwgdGNwNi1zZXJ2ZXIKKyAgLSBNSCBwYXRjaCBp
bmNsdWRlZCBieSBkZWZhdWx0IGZyb20gbm93IG9uCisKKyogdjAuMi40LU1ILTAuMC42CisgIC0g
YWNjb3VudCBmb3IgIUFGX0lORVQgaW4gYWRkcl9ob3N0KCkgCisgIC0gcmVtb3ZlZCBTX0lOLCBT
X0lONiBhbmQgU19VTiBjYXN0czsgbWlncmF0ZSBsYXN0IGZ1bmN0aW9ucyB0byBvcGVudnBuX3Nv
Y2thZGRyOiBwcmludCpzb2NrYWRkcioKKyAgLSBtb3JlIG9wZW52cG5fc29ja2FkZHIgbWlncmF0
aW9uIChwb2xpc2hpbmcpLCBhbG1vc3QgcmVhZHkKKyAgLSAzcmQgTUggaW50ZWdyYXRpb24gcm91
bmQKKworKiB2MC4yLjQKKyAgLSBmaXggLS1yb3V0ZSB1c2FnZSBmb3IgdWRwNiAocmVkaXJlY3Qt
ZGVmYXVsdC1nYXRld2F5IHNlbWFudGljcykKKworKiB2MC4yLjMKKyAgLSB1ZHA2ICJjb3JyZWN0
IiBzdXBwb3J0IGZvciBmcmVlYnNkIGFuZCBvcGVuYnNkCisgICAgY2MgYW5kIHRlc3RlZCBPSzog
ZnJlZWJzZC01LjMsb3BlbmJzZC0zLjYgYWdhaW5zdCBHTlUvTGludXgKKworKiB2MC4yLjIKKyAg
LSBJUHY2ICgtLXByb3RvIHVkcDYpLCB1bml4LXNvY2tldCBzdXBwb3J0IHNlbGVjdGFibGUgYXQg
Y29uZmlndXJlLXRpbWUgCisgICAgKGFsbCA0IGNvbWJpbmF0aW9ucyB0ZXN0ZWQpCisgICAgLi9j
b25maWd1cmUgLS1kaXNhYmxlLWlwdjYgICAgICAgIChlbmFibGVkIGJ5IGRlZmF1bHQpCisgICAg
Li9jb25maWd1cmUgLS1lbmFibGUtdW5peC1zb2NrZXRzIChkaXNhYmxlZCBieSBkZWZhdWx0KQor
ICAgIChpbnRlcm5hbCkgVVNFX1BGX0lORVQ2LCBVU0VfUEZfVU5JWCBmcm9tIGF1dG9jb25mCisg
IC0gQ2hhbmdlIFBST1RPX3ggZnJvbSAjZGVmaW5lIHRvIGVudW0sIHRvIGFsbG93IGVhc2llci9j
bGVhbmVyIHN1cHBvcnQgZm9yCisgICAgb3B0aW9uYWwgcHJvdG9jb2xzCisgIC0gQWRkZWQgSVBW
Nl94eHh4X0hFQURFUl9TSVpFCisgIAorKiB2MC4yLjEKKyAgRmlyc3QgcHVibGljIHJlbGVhc2Us
IHNlZSBSRUFETUUuSVB2NgorCisjIHZpbTogc3c9MiAKZGlmZiAtdSBvcGVudnBuLTIvQ2hhbmdl
TG9nOjEuNCBvcGVudnBuLTIvQ2hhbmdlTG9nOjEuNC40LjEKLS0tIENoYW5nZUxvZzoxLjQJVHVl
IEFwciAxOSAxNToxNjo1MCAyMDA1CisrKyBDaGFuZ2VMb2cJTW9uIE1heSAgMiAxMDozMzo0OCAy
MDA1CkBAIC0zMTIsNiArMzEyLDkgQEAKICogb3BlbnZwbi5zcGVjIHdvcmthcm91bmQgZm9yIFN1
U0UgY29uZnVzaW9uIHJlZ2FyZGluZwogICAvZXRjL2luaXQuZCB2cy4gL2V0Yy9yYy5kL2luaXQu
ZCAoU3RlZmFuIEVuZ2VsKS4KIAorKiBBZGRlZCBJUHY2IHN1cHBvcnQgKC0tdWRwNikgYW5kIFBG
X1VOSVggKC0tdW5peC1kZ3JhbSkKKyAgU2VlIFJFQURNRS5JUHY2IGFuZCBDSEFOR0VTLklQdjYg
Zm9yIGRldGFpbHMgKEp1YW5qbyBDaWFybGFudGUpCisKIDIwMDQuMTIuMDUgLS0gVmVyc2lvbiAy
LjAtYmV0YTIwCiAKICogVGhlIGFiaWxpdHkgdG8gcmVhZCAtLWFza3Bhc3MgYW5kIC0tYXV0aC11
c2VyLXBhc3MKLS0tIE1ha2VmaWxlLmFtOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUwIDIwMDUKKysr
IE1ha2VmaWxlLmFtCU1vbiBNYXkgIDIgMTA6MzM6NDggMjAwNQpAQCAtODYsNyArODYsOSBAQAog
CXN0YXR1cy5jIHN0YXR1cy5oIFwKIAlzeXNoZWFkLmggXAogCXRocmVhZC5jIHRocmVhZC5oIFwK
LQl0dW4uYyB0dW4uaAorCXR1bi5jIHR1bi5oIFwKKwlwYXlsb2FkLmMgcGF5bG9hZC5oCisJCiAK
IExEQUREID0gQExJQk9CSlNACiAKLS0tIE1ha2VmaWxlLmluOjEuMglUdWUgQXByIDE5IDE1OjE2
OjUwIDIwMDUKKysrIE1ha2VmaWxlLmluCVdlZCBNYXkgMTEgMTU6MTc6NTAgMjAwNQpAQCAtMSw0
ICsxLDQgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuOC4zIGZyb20g
TWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjkuMiBm
cm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykg
MTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKQEAg
LTc5LDcgKzc5LDcgQEAKIAkkKEFDTE9DQUxfTTQpCiBhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxF
UyA9IGNvbmZpZy5zdGF0dXMgY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgXAogIGNvbmZpZ3VyZS5s
aW5lbm8gY29uZmlndXJlLnN0YXR1cy5saW5lbm8KLW1raW5zdGFsbGRpcnMgPSAkKG1rZGlyX3Ap
Citta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9IGNvbmZp
Zy5oCiBDT05GSUdfQ0xFQU5fRklMRVMgPSBvcGVudnBuLnNwZWMgY29uZmlnLXdpbjMyLmggXAog
CWluc3RhbGwtd2luMzIvb3BlbnZwbi5uc2kKQEAgLTEwMSw3ICsxMDEsNyBAQAogCXJvdXRlLiQo
T0JKRVhUKSBzY2hlZHVsZS4kKE9CSkVYVCkgc2Vzc2lvbl9pZC4kKE9CSkVYVCkgXAogCXNoYXBl
ci4kKE9CSkVYVCkgc2lnLiQoT0JKRVhUKSBzb2NrZXQuJChPQkpFWFQpIFwKIAlzb2Nrcy4kKE9C
SkVYVCkgc3NsLiQoT0JKRVhUKSBzdGF0dXMuJChPQkpFWFQpIFwKLQl0aHJlYWQuJChPQkpFWFQp
IHR1bi4kKE9CSkVYVCkKKwl0aHJlYWQuJChPQkpFWFQpIHR1bi4kKE9CSkVYVCkgcGF5bG9hZC4k
KE9CSkVYVCkKIG5vZGlzdF9vcGVudnBuX09CSkVDVFMgPQogb3BlbnZwbl9PQkpFQ1RTID0gJChh
bV9vcGVudnBuX09CSkVDVFMpICQobm9kaXN0X29wZW52cG5fT0JKRUNUUykKIG9wZW52cG5fTERB
REQgPSAkKExEQUREKQpAQCAtMTA5LDMxICsxMDksNiBAQAogREVGQVVMVF9JTkNMVURFUyA9IC1J
LiAtSSQoc3JjZGlyKSAtSS4KIGRlcGNvbXAgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL2RlcGNv
bXAKIGFtX19kZXBmaWxlc19tYXliZSA9IGRlcGZpbGVzCi1AQU1ERVBfVFJVRUBERVBfRklMRVMg
PSAkKERFUERJUikvbWVtY21wLlBvIC4vJChERVBESVIpL2Jhc2U2NC5QbyBcCi1AQU1ERVBfVFJV
RUAJLi8kKERFUERJUikvYnVmZmVyLlBvIC4vJChERVBESVIpL2NyeXB0by5QbyBcCi1AQU1ERVBf
VFJVRUAJLi8kKERFUERJUikvZXJyb3IuUG8gLi8kKERFUERJUikvZXZlbnQuUG8gXAotQEFNREVQ
X1RSVUVACS4vJChERVBESVIpL2ZkbWlzYy5QbyAuLyQoREVQRElSKS9mb3J3YXJkLlBvIFwKLUBB
TURFUF9UUlVFQAkuLyQoREVQRElSKS9mcmFnbWVudC5QbyAuLyQoREVQRElSKS9ncmVtbGluLlBv
IFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9oZWxwZXIuUG8gLi8kKERFUERJUikvaW5pdC5Q
byBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvaW50ZXJ2YWwuUG8gLi8kKERFUERJUikvbGlz
dC5QbyBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvbHpvLlBvIC4vJChERVBESVIpL21hbmFn
ZS5QbyBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvbWJ1Zi5QbyAuLyQoREVQRElSKS9taXNj
LlBvIFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9tcm91dGUuUG8gLi8kKERFUERJUikvbXNz
LlBvIFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9tdGNwLlBvIC4vJChERVBESVIpL210dS5Q
byBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvbXVkcC5QbyAuLyQoREVQRElSKS9tdWx0aS5Q
byBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvbnRsbS5QbyAuLyQoREVQRElSKS9vY2MuUG8g
XAotQEFNREVQX1RSVUVACS4vJChERVBESVIpL29wZW52cG4uUG8gLi8kKERFUERJUikvb3B0aW9u
cy5QbyBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvb3RpbWUuUG8gLi8kKERFUERJUikvcGFj
a2V0X2lkLlBvIFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9wZXJmLlBvIC4vJChERVBESVIp
L3BpbmcuUG8gXAotQEFNREVQX1RSVUVACS4vJChERVBESVIpL3BsdWdpbi5QbyAuLyQoREVQRElS
KS9wb29sLlBvIFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9wcm90by5QbyAuLyQoREVQRElS
KS9wcm94eS5QbyBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvcHVzaC5QbyAuLyQoREVQRElS
KS9yZWxpYWJsZS5QbyBcCi1AQU1ERVBfVFJVRUAJLi8kKERFUERJUikvcm91dGUuUG8gLi8kKERF
UERJUikvc2NoZWR1bGUuUG8gXAotQEFNREVQX1RSVUVACS4vJChERVBESVIpL3Nlc3Npb25faWQu
UG8gLi8kKERFUERJUikvc2hhcGVyLlBvIFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9zaWcu
UG8gLi8kKERFUERJUikvc29ja2V0LlBvIFwKLUBBTURFUF9UUlVFQAkuLyQoREVQRElSKS9zb2Nr
cy5QbyAuLyQoREVQRElSKS9zc2wuUG8gXAotQEFNREVQX1RSVUVACS4vJChERVBESVIpL3N0YXR1
cy5QbyAuLyQoREVQRElSKS90aHJlYWQuUG8gXAotQEFNREVQX1RSVUVACS4vJChERVBESVIpL3R1
bi5QbwogQ09NUElMRSA9ICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xV
REVTKSAkKEFNX0NQUEZMQUdTKSBcCiAJJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdT
KQogQ0NMRCA9ICQoQ0MpCkBAIC0yMTEsNiArMTg2LDggQEAKIGFtX19pbmNsdWRlID0gQGFtX19p
bmNsdWRlQAogYW1fX2xlYWRpbmdfZG90ID0gQGFtX19sZWFkaW5nX2RvdEAKIGFtX19xdW90ZSA9
IEBhbV9fcXVvdGVACithbV9fdGFyID0gQGFtX190YXJACithbV9fdW50YXIgPSBAYW1fX3VudGFy
QAogYmluZGlyID0gQGJpbmRpckAKIGJ1aWxkID0gQGJ1aWxkQAogYnVpbGRfYWxpYXMgPSBAYnVp
bGRfYWxpYXNACkBAIC0zMDQsNyArMjgxLDggQEAKIAlzdGF0dXMuYyBzdGF0dXMuaCBcCiAJc3lz
aGVhZC5oIFwKIAl0aHJlYWQuYyB0aHJlYWQuaCBcCi0JdHVuLmMgdHVuLmgKKwl0dW4uYyB0dW4u
aCBcCisJcGF5bG9hZC5jIHBheWxvYWQuaAogCiBMREFERCA9IEBMSUJPQkpTQAogbWFuX01BTlMg
PSBvcGVudnBuLjgKQEAgLTQ2MSw2ICs0MzksNyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRl
QCBAYW1fX3F1b3RlQC4vJChERVBESVIpL29wdGlvbnMuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RS
VUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL290aW1lLlBvQGFtX19xdW90
ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9wYWNr
ZXRfaWQuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3Rl
QC4vJChERVBESVIpL3BheWxvYWQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNs
dWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3BlcmYuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RS
VUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3BpbmcuUG9AYW1fX3F1b3Rl
QAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL3BsdWdp
bi5Qb0BhbV9fcXVvdGVACkBAIC00ODUsMTYgKzQ2NCwxNCBAQAogQGFtX19mYXN0ZGVwQ0NfVFJV
RUAJaWYgJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgIiQoREVQRElSKS8kKi5UcG8iIC1j
IC1vICRAICQ8OyBcCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAl0aGVuIG12IC1mICIkKERFUERJUikv
JCouVHBvIiAiJChERVBESVIpLyQqLlBvIjsgZWxzZSBybSAtZiAiJChERVBESVIpLyQqLlRwbyI7
IGV4aXQgMTsgZmkKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9JyQ8
JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBh
bV9fZmFzdGRlcENDX0ZBTFNFQAlkZXBmaWxlPSckKERFUERJUikvJCouUG8nIHRtcGRlcGZpbGU9
JyQoREVQRElSKS8kKi5UUG8nIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFz
dGRlcENDX0ZBTFNFQAkkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitA
QU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQ
TU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJ
JChDT01QSUxFKSAtYyAkPAogCiAuYy5vYmo6CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAlpZiAkKENP
TVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAiJChERVBESVIpLyQqLlRwbyIgLWMgLW8gJEAgYCQo
Q1lHUEFUSF9XKSAnJDwnYDsgXAogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJdGhlbiBtdiAtZiAiJChE
RVBESVIpLyQqLlRwbyIgIiQoREVQRElSKS8kKi5QbyI7IGVsc2Ugcm0gLWYgIiQoREVQRElSKS8k
Ki5UcG8iOyBleGl0IDE7IGZpCiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291
cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBf
VFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJZGVwZmlsZT0nJChERVBESVIpLyQqLlBvJyB0bXBk
ZXBmaWxlPSckKERFUERJUikvJCouVFBvJyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBA
YW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NM
QVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikg
JChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0Nf
RkFMU0VACSQoQ09NUElMRSkgLWMgYCQoQ1lHUEFUSF9XKSAnJDwnYAogdW5pbnN0YWxsLWluZm8t
YW06CiBpbnN0YWxsLW1hbjg6ICQobWFuOF9NQU5TKSAkKG1hbl9NQU5TKQpAQCAtNTYzLDkgKzU0
MCwxMSBAQAogCSAgZG9uZSB8IFwKIAkgICQoQVdLKSAnICAgIHsgZmlsZXNbJCQwXSA9IDE7IH0g
XAogCSAgICAgICBFTkQgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH0nYDsgXAotCXRlc3Qg
LXogIiQoRVRBR1NfQVJHUykkJHRhZ3MkJHVuaXF1ZSIgXAotCSAgfHwgJChFVEFHUykgJChFVEFH
U0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgJCR0YWdzICQk
dW5pcXVlCisJaWYgdGVzdCAteiAiJChFVEFHU19BUkdTKSQkdGFncyQkdW5pcXVlIjsgdGhlbiA6
OyBlbHNlIFwKKwkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwK
KwkgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1Mp
IFwKKwkgICAgJCR0YWdzICQkdW5pcXVlOyBcCisJZmkKIGN0YWdzOiBDVEFHUwogQ1RBR1M6ICAk
KEhFQURFUlMpICQoU09VUkNFUykgY29uZmlnLmguaW4gJChUQUdTX0RFUEVOREVOQ0lFUykgXAog
CQkkKFRBR1NfRklMRVMpICQoTElTUCkKQEAgLTYyOCwxNSArNjA3LDE1IEBACiAJICAhIC10eXBl
IGQgISAtcGVybSAtNDQ0IC1leGVjICQoU0hFTEwpICQoaW5zdGFsbF9zaCkgLWMgLW0gYStyIHt9
IHt9IFw7IFwKIAl8fCBjaG1vZCAtUiBhK3IgJChkaXN0ZGlyKQogZGlzdC1nemlwOiBkaXN0ZGly
Ci0JJChBTVRBUikgY2hvZiAtICQoZGlzdGRpcikgfCBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWMg
PiQoZGlzdGRpcikudGFyLmd6CisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IEda
SVA9JChHWklQX0VOVikgZ3ppcCAtYyA+JChkaXN0ZGlyKS50YXIuZ3oKIAkkKGFtX19yZW1vdmVf
ZGlzdGRpcikKIAogZGlzdC1iemlwMjogZGlzdGRpcgotCSQoQU1UQVIpIGNob2YgLSAkKGRpc3Rk
aXIpIHwgYnppcDIgLTkgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCXRhcmRpcj0kKGRpc3RkaXIp
ICYmICQoYW1fX3RhcikgfCBiemlwMiAtOSAtYyA+JChkaXN0ZGlyKS50YXIuYnoyCiAJJChhbV9f
cmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtdGFyWjogZGlzdGRpcgotCSQoQU1UQVIpIGNob2YgLSAk
KGRpc3RkaXIpIHwgY29tcHJlc3MgLWMgPiQoZGlzdGRpcikudGFyLloKKwl0YXJkaXI9JChkaXN0
ZGlyKSAmJiAkKGFtX190YXIpIHwgY29tcHJlc3MgLWMgPiQoZGlzdGRpcikudGFyLloKIAkkKGFt
X19yZW1vdmVfZGlzdGRpcikKIAogZGlzdC1zaGFyOiBkaXN0ZGlyCkBAIC02NDksNyArNjI4LDcg
QEAKIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKIAogZGlzdCBkaXN0LWFsbDogZGlzdGRpcgotCSQo
QU1UQVIpIGNob2YgLSAkKGRpc3RkaXIpIHwgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1jID4kKGRp
c3RkaXIpLnRhci5negorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBHWklQPSQo
R1pJUF9FTlYpIGd6aXAgLWMgPiQoZGlzdGRpcikudGFyLmd6CiAJJChhbV9fcmVtb3ZlX2Rpc3Rk
aXIpCiAKICMgVGhpcyB0YXJnZXQgdW50YXJzIHRoZSBkaXN0IGZpbGUgYW5kIHRyaWVzIGEgVlBB
VEggY29uZmlndXJhdGlvbi4gIFRoZW4KQEAgLTY1OCwxMyArNjM3LDEzIEBACiBkaXN0Y2hlY2s6
IGRpc3QKIAljYXNlICckKERJU1RfQVJDSElWRVMpJyBpbiBcCiAJKi50YXIuZ3oqKSBcCi0JICBH
WklQPSQoR1pJUF9FTlYpIGd1bnppcCAtYyAkKGRpc3RkaXIpLnRhci5neiB8ICQoQU1UQVIpIHhm
IC0gOztcCisJICBHWklQPSQoR1pJUF9FTlYpIGd1bnppcCAtYyAkKGRpc3RkaXIpLnRhci5neiB8
ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5iejIqKSBcCi0JICBidW56aXAyIC1jICQoZGlzdGRp
cikudGFyLmJ6MiB8ICQoQU1UQVIpIHhmIC0gOztcCisJICBidW56aXAyIC1jICQoZGlzdGRpciku
dGFyLmJ6MiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5aKikgXAotCSAgdW5jb21wcmVzcyAt
YyAkKGRpc3RkaXIpLnRhci5aIHwgJChBTVRBUikgeGYgLSA7O1wKKwkgIHVuY29tcHJlc3MgLWMg
JChkaXN0ZGlyKS50YXIuWiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnNoYXIuZ3oqKSBcCi0JICBH
WklQPSQoR1pJUF9FTlYpIGd1bnppcCAtYyAkKGRpc3RkaXIpLnRhci5neiB8IHVuc2hhciA7O1wK
KwkgIEdaSVA9JChHWklQX0VOVikgZ3VuemlwIC1jICQoZGlzdGRpcikuc2hhci5neiB8IHVuc2hh
ciA7O1wKIAkqLnppcCopIFwKIAkgIHVuemlwICQoZGlzdGRpcikuemlwIDs7XAogCWVzYWMKQEAg
LTc0NSw3ICs3MjQsNyBAQAogY2xlYW4tZ2VuZXJpYzoKIAogZGlzdGNsZWFuLWdlbmVyaWM6Ci0J
LXJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQorCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9G
SUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQogCiBtYWludGFpbmVyLWNsZWFu
LWdlbmVyaWM6CiAJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5l
cnMgdG8gdXNlIgpAQCAtODA2LDEzICs3ODUsMTMgQEAKIAogLlBIT05ZOiBDVEFHUyBHVEFHUyBh
bGwgYWxsLWFtIGFtLS1yZWZyZXNoIGNoZWNrIGNoZWNrLVRFU1RTIGNoZWNrLWFtIFwKIAljbGVh
biBjbGVhbi1nZW5lcmljIGNsZWFuLXNiaW5QUk9HUkFNUyBjdGFncyBkaXN0IGRpc3QtYWxsIFwK
LQlkaXN0LWJ6aXAyIGRpc3QtZ3ppcCBkaXN0LXNoYXIgZGlzdC10YXJaIGRpc3QtemlwIGRpc3Rj
aGVjayBcCi0JZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIGRp
c3RjbGVhbi1oZHIgXAotCWRpc3RjbGVhbi10YWdzIGRpc3RjbGVhbmNoZWNrIGRpc3RkaXIgZGlz
dHVuaW5zdGFsbGNoZWNrIGR2aSBcCi0JZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0g
aW5zdGFsbCBpbnN0YWxsLWFtIFwKLQlpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3Rh
bGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gXAotCWluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0g
aW5zdGFsbC1tYW4gaW5zdGFsbC1tYW44IFwKLQlpbnN0YWxsLXNiaW5QUk9HUkFNUyBpbnN0YWxs
LXN0cmlwIGluc3RhbGxjaGVjayBcCisJZGlzdC1iemlwMiBkaXN0LWd6aXAgZGlzdC1ob29rIGRp
c3Qtc2hhciBkaXN0LXRhclogZGlzdC16aXAgXAorCWRpc3RjaGVjayBkaXN0Y2xlYW4gZGlzdGNs
ZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAorCWRpc3RjbGVhbi1oZHIgZGlzdGNsZWFu
LXRhZ3MgZGlzdGNsZWFuY2hlY2sgZGlzdGRpciBcCisJZGlzdHVuaW5zdGFsbGNoZWNrIGR2aSBk
dmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBcCisJaW5zdGFsbCBpbnN0YWxsLWFtIGlu
c3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1leGVjIFwKKwlpbnN0YWxsLWV4ZWMt
YW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBcCisJaW5zdGFsbC1t
YW44IGluc3RhbGwtc2JpblBST0dSQU1TIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwKIAlp
bnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgbWFpbnRhaW5lci1jbGVhbiBcCiAJbWFpbnRhaW5l
ci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgXAogCW1vc3Rs
eWNsZWFuLWdlbmVyaWMgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHVuaW5zdGFsbCBcCkluZGV4
OiBvcGVudnBuLTIvUkVBRE1FLklQdjYKZGlmZiAtdSAvZGV2L251bGwgb3BlbnZwbi0yL1JFQURN
RS5JUHY2OjEuMS4xMC41Ci0tLSAvZGV2L251bGwJV2VkIEp1biAyMiAxMzowMToyNCAyMDA1Cisr
KyBSRUFETUUuSVB2NglXZWQgSnVuIDIyIDEyOjU3OjUxIDIwMDUKQEAgLTAsMCArMSwxNTcgQEAK
KyMgJElkOiBSRUFETUUuSVB2Nix2IDEuMS4xMC41IDIwMDUvMDYvMjIgMTU6NTc6NTEgampvIEV4
cCAkICMKKworVGhpcyBSRUFETUUgY292ZXJzIFVEUC9JUHY2IHYwLjMueCAoIC0tdWRwNiBhbmQg
LS10Y3A2LXh4eHh4eCAgKSBzdXBwb3J0IGZvciBvcGVudnBuLTIuMC4KKworQWxzbywgd2l0aCBh
ZGRyZXNzIGZhbWlseSAiZ2VuZXJhbGl6YXRpb24iIGNoYW5nZXMgY2FtZSBsb2NhbCBBRl9VTklY
IHNvY2tldAorc3VwcG9ydC4KKworQXZhaWxhYmxlIHVuZGVyIEdQTHYyIGZyb20gCisgIGh0dHA6
Ly93d3cuaXJyaWdhY2lvbi5nb3YuYXIvanVhbmpvL29wZW52cG4vCisKK1NlZSAiRXhhbXBsZXMi
IHNlY3Rpb24gYmVsb3cgZm9yIHVzYWdlLgorCisqIFdvcmtpbmc6CisgIC0gdGNwNi0+dGNwNjsg
dGVzdGVkIG9uIEdOVS9MaW51eAorICAtIHVwZDYtPnVwZDY7IHRlc3RlZCBvbiBHTlUvTGludXgs
IEZyZWVCU0QtNS4zIGFuZCBPcGVuQlNELTMuNi4KKyAgLSB1cGQ0LT51cGQ2IChpcHY2IGJvdW5k
KTsgc2hvd3MgY29ycmVjdGx5IG1hcHBlZCBhZGRyZXNzIChyZXF1aXJlcyAtLWZsb2F0IGZvciBu
b3cpCisgIC0gdW5peC1kZ3JhbS0+dW5peC1kZ3JhbSBbQUZfVU5JWF0KKyAgICB1c2VmdWwgZm9y
IGltcGxlbWVudGluZyBsb2NhbCBwcm94aWVzIHRoYXQgY2FuIHRha2UgZnVsbCBhZHZhbnRhZ2UK
KyAgICBvZiBQT1NJWCBmaWxlc3lzdGVtIHBlcm1pc3Npb25zICggbW9yZSBwb3dlcmZ1bGwgYWNj
ZXNzIG1lY2hhbmlzbXMKKyAgICB0aGFuIGluZXQsIGV2ZW4gZm9yIGxvY2FsaG9zdCkKKyAgLSBt
dWx0aWhvbWUgW01IXSBmb3IgSVB2NCBhbmQgSVB2NjsgY29tcGlsZXMgYW5kIHdvcmtzIE9LIEdO
VS9MaW51eAorICAgIGlwdjQgTUggc3VwcG9ydCB0YWtlbiBhbmQgYWRhcHRlZCBmcm9tIEphbWVz
JyBvcmlnaW5hbCBNSCBwYXRjaCAKKworKiBFeHBlcmltZW50YWwgY29kZSAoY29ycmVjdGx5ICNp
ZmRlZidkIG91dCk6CisgIC0gcGF5bG9hZCBjb25udHJhY2s6IGludGVuZGVkIGZvciBmaWx0ZXJp
bmcgVENQIHJldHJhbnNtaXNzaW9ucyBvdmVyIHJlbGlhYmxlIGxpbmtzCisgICAgMXN0IHRlc3Rz
IGluZGljYXRlIGFwcm94IH4yMCUgc3BlZWR1cHMgKHZlcnkgY29hcnNseSB0ZXN0ZWQpCisKKyog
U2V0dXA6CisgIC4vY29uZmlndXJlIC0tZGlzYWJsZS1pcHY2ICAgICAgICAoZW5hYmxlZCBieSBk
ZWZhdWx0KQorICAuL2NvbmZpZ3VyZSAtLWVuYWJsZS11bml4LXNvY2tldHMgKGRpc2FibGVkIGJ5
IGRlZmF1bHQpCisgIC4vY29uZmlndXJlIC0tZW5hYmxlLXBheWxvYWQtY29ubnRyYWNrIChleHBl
cmltZW50YWwgY29kZSwgbm90IGZvciBwcm9kdWN0aW9uIHVzYWdlKQorICA6CisKKyogVXNhZ2U6
CisgIEZvciBJUHY2IGp1c3Qgc3BlY2lmeSAiLXAgdXBkNiIgYW4gcHJvcGVyIElQdjYgaG9zdG5h
bWVzLCBhZGFwdGluZyB0aGUgZXhhbXBsZQorICBmcm9tIG1hbiBwYWdlIC4uLgorCisgIE9uIG1h
eToKKyAgICBvcGVudnBuIC0tcHJvdG8gdWRwNiAtLXJlbW90ZSA8anVuZV9JUHY2X2FkZHI+IC0t
ZGV2IHR1bjEgLS1pZmNvbmZpZyAxMC40LjAuMSAxMC40LjAuMgorICAgIC0tdmVyYiA1IC0tc2Vj
cmV0IGtleQorCisgIE9uIGp1bmU6CisgICAgb3BlbnZwbiAtLXByb3RvIHVkcDYgLS1yZW1vdGUg
PG1heV9JUHY2X2FkZHI+ICAtLWRldiB0dW4xIC0taWZjb25maWcgMTAuNC4wLjIgMTAuNC4wLjEK
KyAgICAtLXZlcmIgNSAtLXNlY3JldCBrZXkKKyAgCisgIFNhbWUgZm9yIC0tcHJvdG8gdGNwNi1j
bGllbnQsIHRjcDYtc2VydmVyLgorCisqIEV4YW1wbGVzOiBzb21lIHN1Y2Nlc2Z1bGx5IHRlc3Rl
ZCBjb21tYW5kIGxpbmVzIAorICBCVFcgZGlkIHlvdSBrbm93IHRoYXQgb3BlbnZwbiBjYW4gc3Vj
Y2VzZnVsbHkgbmVnb3RpYXRlIHRvIHNlbGYKKyAgd2l0aCAtLXJlbW90ZSBsb2NhbGhvc3QgPyBW
RVJZIHVzZWZ1bCBmb3IgZmFzdCB0ZXN0aW5nLgorICAKKyAgLSBJUHY2ICJub3JtYWwiIHVzYWdl
ICgrc3VjY2VzZnVsbHkgdGVzdGVkIHR1bm5lbCB0cmFmZmljKSAKKyAgICBzZXJ2ZXIjIG9wZW52
cG4gLS1wcm90byB1ZHA2IC4uLgorICAgICAgOgorICAgICAgVGh1IFNlcCAyMyAyMjoxNTo0OCAy
MDA0IFBlZXIgQ29ubmVjdGlvbiBJbml0aWF0ZWQgd2l0aCBbQUZfSU5FVDZdZmU4MDo6MjA1OjVk
ZmY6ZmVmMToxY2ViJXdsYW4wd2RzMTo1MDAwCisgICAgICA6CisgICAgY2xpZW50IyBvcGVudnBu
IC0tcHJvdG8gdWRwNiAtLXJlbW90ZSBmZTgwOjoyNDA6NWZmOmZlYWU6Yzg1MSAuLi4KKyAgICAg
IDoKKyAgICAgIFRodSBTZXAgMjMgMjI6MTM6MTkgMjAwNCBQZWVyIENvbm5lY3Rpb24gSW5pdGlh
dGVkIHdpdGggW0FGX0lORVQ2XWZlODA6OjI0MDo1ZmY6ZmVhZTpjODUxJXdsYW4wd2RzMDo1MDAw
CisgICAgICA6CisKKyAgLSBJUHY2IHNlcnZlciwgSVB2NCBjbGllbnQgKG1vcmUgZGV0YWlsZWQp
CisgICAgc2VydmVyIyBvcGVudnBuIC0tcHJvdG8gdWRwNiAuLi4KKyAgICAgIDoKKyAgICAgIFRo
dSBTZXAgMjMgMjI6Mjg6MzYgMjAwNCBVRFB2NiBsaW5rIGxvY2FsIChib3VuZCk6IFtBRl9JTkVU
Nl1bdW5kZWZdOjUwMDAKKyAgICAgIFRodSBTZXAgMjMgMjI6Mjg6MzYgMjAwNCBVRFB2NiBsaW5r
IHJlbW90ZTogW0FGX0lORVQ2XVt1bmRlZl0KKyAgICAgIFRodSBTZXAgMjMgMjI6Mjg6NTAgMjAw
NCBQZWVyIENvbm5lY3Rpb24gSW5pdGlhdGVkIHdpdGggW0FGX0lORVQ2XTo6ZmZmZjoxMC41NS4x
NC4yNTM6NTAwMAorICAgICAgVGh1IFNlcCAyMyAyMjoyODo1MSAyMDA0IEluaXRpYWxpemF0aW9u
IFNlcXVlbmNlIENvbXBsZXRlZAorICAgICAgVGh1IFNlcCAyMyAyMjoyODo1NiAyMDA0IFdBUk5J
Tkc6IEFjdHVhbCBSZW1vdGUgT3B0aW9ucyAoJy4uLiBwcm90byBVRFB2NCAuLi4gJykgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBpbmNvbnNpc3RlbnQgd2l0aCBFeHBlY3Rl
ZCBSZW1vdGUgT3B0aW9ucyAoJy4uLiBwcm90byBVRFB2NiAuLi4nKQorCisgICAgY2xpZW50IyBv
cGVudnBuICAtLXJlbW90ZSAxMC41NS4xNC4yNTQgLi4uICAjIyMgc2FtZSBkZWZhdWx0IGFzIG5v
dzogLS11ZHAKKyAgICAgIDoKKyAgICAgIFRodSBTZXAgMjMgMjI6MjY6MTEgMjAwNCBVRFB2NCBs
aW5rIGxvY2FsIChib3VuZCk6IFtBRl9JTkVUXVt1bmRlZl06NTAwMAorICAgICAgVGh1IFNlcCAy
MyAyMjoyNjoxMSAyMDA0IFVEUHY0IGxpbmsgcmVtb3RlOiBbQUZfSU5FVF0xMC41NS4xNC4yNTQ6
NTAwMAorICAgICAgVGh1IFNlcCAyMyAyMjoyNjoyMSAyMDA0IFBlZXIgQ29ubmVjdGlvbiBJbml0
aWF0ZWQgd2l0aCBbQUZfSU5FVF0xMC41NS4xNC4yNTQ6NTAwMAorICAgICAgVGh1IFNlcCAyMyAy
MjoyNjoyMSAyMDA0IFdBUk5JTkc6IEFjdHVhbCBSZW1vdGUgT3B0aW9ucyAoJy4uLiBwcm90byBV
RFB2NiAuLi4nKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGluY29uc2lz
dGVudCB3aXRoIEV4cGVjdGVkIFJlbW90ZSBPcHRpb25zICgnLi4uIHByb3RvIFVEUHY0IC4uLicp
CisgICAgICBUaHUgU2VwIDIzIDIyOjI2OjIyIDIwMDQgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2Ug
Q29tcGxldGVkCisKKyAgLSBJUHY2IGxvb3BiYWNrCisgICAgYWxvbmUjIG9wZW52cG4gLS1wcm90
byB1ZHA2IC0tcmVtb3RlIDo6MSAuLi4KKyAgICAgIDoKKyAgICAgIFdlZCBTZXAgMjIgMTM6MDM6
MDcgMjAwNCBQZWVyIENvbm5lY3Rpb24gSW5pdGlhdGVkIHdpdGggW0FGX0lORVQ2XTo6MTo1MDAw
CisgICAgICA6CisKKyAgLSBBRl9VTklYIHRvc2VsZgorICAgIGFsb25lIyBvcGVudnBuIC0tcHJv
dG8gdW5peC1kZ3JhbSAtLWxvY2FsIC90bXAvby5zIC0tcmVtb3RlIC90bXAvby5zIC0tZGV2IHR1
biAgLi4uCisgICAgICA6CisgICAgICBUaHUgU2VwIDIzIDE2OjM3OjI3IDIwMDQgUGVlciBDb25u
ZWN0aW9uIEluaXRpYXRlZCB3aXRoIFtBRl9VTklYXS90bXAvby5zCisgICAgICA6CisgIAorICAt
IEFGX1VOSVggYmV0d2VlbiB0byBkaWZmIGluc3RhbmNlcworICAgIHBlZXIxIyBvcGVudnBuIC0t
cHJvdG8gdW5peC1kZ3JhbSAtLWxvY2FsIC90bXAvbzEucyAtLXJlbW90ZSAvdG1wL28yLnMKKyAg
ICBwZWVyMiMgb3BlbnZwbiAtLXByb3RvIHVuaXgtZGdyYW0gLS1sb2NhbCAvdG1wL28yLnMgLS1y
ZW1vdGUgL3RtcC9vMS5zCisgICAgICA6CisgICAgICBXZWQgU2VwIDIyIDEyOjQ5OjAzIDIwMDQg
UGVlciBDb25uZWN0aW9uIEluaXRpYXRlZCB3aXRoIFtBRl9VTklYXS90bXAvbzEucworICAgICAg
OgorICAKKworKiBNYWluIGNvZGUgY2hhbmdlcyBzdW1tYXJ5OgorICAtIHNvY2tldC5oOiBOZXcg
c3RydWN0IG9wZW52cG5fc29ja2FkZHIgdHlwZSB0aGF0IGhvbGRzIHNvY2thZGRycyBhbmQgcGt0
aW5mbywgCisgICAgKGhlcmUgSSBvbWl0dGVkICNpZmRlZiBVU0VfUEZfeHh4eCwgc2VlIHNvY2tl
dC5oICkKKworICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyIHsKKyAgICAJdW5pb24geworICAg
IAkJc3RydWN0IHNvY2thZGRyIHNhOworICAgIAkJc3RydWN0IHNvY2thZGRyX2luIGluOworICAg
IAkJc3RydWN0IHNvY2thZGRyX2luNiBpbjY7CisgICAgCQlzdHJ1Y3Qgc29ja2FkZHJfdW4gdW47
CisgICAgCX0gYWRkcjsKKyAgICAJdW5pb24geworICAgIAkJc3RydWN0IGluX3BrdGluZm8gaW47
CisgICAgCQlzdHJ1Y3QgaW42X3BrdGluZm8gaW42OworICAgIAl9IHBpOwkvKiBNdWx0aWhvbWUg
c3VwcG9ydCBmb3IgVURQICovCisgICAgfTsKKyAgICAKKyAgICBzdHJ1Y3QgbGlua19zb2NrZXRf
YWRkcgorICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyIGxvY2FsOwor
ICAgICAgICAgICAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgcmVtb3RlOworICAgICAgICAgICAg
c3RydWN0IG9wZW52cG5fc29ja2FkZHIgYWN0dWFsOworICAgIH07CisgICAgCisgICAgUFJPOiBh
bGxvd3Mgc2ltcGxlIHR5cGUgb3ZlcmxvYWRpbmc6IGxvY2FsLmFkZHIuc2EsIGxvY2FsLmFkZHIu
aW4sIGxvY2FsLmFkZHIuaW42IC4uLiBldGMKKyAgICAoYWxzbyBsb2NhbC5waS5pbiBhbmQgbG9j
YWwucGkuaW42KQorCisgIC0gc2V2ZXJhbCBmdW5jdGlvbiBwcm90b3R5cGVzIG1vdmVkIGZyb20g
c29ja2FkZHJfaW4gdG8gb3BlbnZwbl9zb2NrYWRkciAKKyAgLSBzZXZlcmFsIG5ldyBzb2NrYWRk
ciBmdW5jdGlvbnMgbmVlZGVkIHRvICJnZW5lcmFsaXplIiBBRl94eHh4IG9wZXJhdGlvbnM6Cisg
ICAgYWRkcl9jb3B5KCksIGFkZHJfemVybygpLCAuLi5ldGMKKyAgICBwcm90b19pc191ZHAoKSwg
cHJvdG9faXNfZGdyYW0oKSwgcHJvdG9faXNfbmV0KCkKKworKiBUT0RPOiAoITogZnVuZGFtZW50
YWwsIHc6IHdhbnRlZCwgbjogbmFoIC4uLiBub3QgY3JpdGljYWwsID86IG5lZWQgbW9yZSB0aG91
Z2h0KQorICBbIV0tICBJbXBsZW1lbnQgY29tcGFyaXNvbiBmb3IgbWFwcGVkIGFkZGVzc2VzOiBz
ZXJ2ZXIgaW4gZHVhbCBzdGFjayBsaXN0ZW5pbmcKKyAgICAgICAgSVB2NiBtdXN0IHBlcm1pdCBp
bmNvbWluZyBzdHJlYW1zIGZyb20gYWxsb3dlZCBJUHY0IHBlZXIgKGllIHdpdGhvdXQgLS1mbG9h
dCkuCisgIFshXS0gIElQdjYgd2l0aCBhY3R1YWwgaG9zdCByZXNvbHV0aW9uLCBjdXJyZW50bHkg
b25seSBudW1lcmljYWwgKEFJX05VTUVSSUNIT1NUKQorICBbbl0tICBjYWxsIHNvY2tldCgpIGxh
dGVseSwgYWZ0ZXIgZ2V0YWRkcmluZm8oKSB0byBkZWNpZGUgSVB2NCBvciBJUHY2IGhvc3QgCisg
ICAgICAgIChoZW5jZSBzb2NrZXQoKSkgaW5zdGVhZCBvZiBuZWVkaW5nIC1wIHt1ZHB8dWRwNn0K
KyAgICAgICAgTk9UIEFDVFVBTExZIGEgYmlnIHRyb3VibGUsIGdpdmVuIHRoYXQgeW91IF9kb18g
c2V0dXAgYm90aCBzaWRlcworICAgICAgICAoa2V5cywgY2VydHMsIGV0YyksIHVzaW5nIHVkcCBv
ciB1ZHA2IGlzIGFjdHVhbGx5IF9hbm90aGVyXyBzZXR1cCBiaXQuCisgIFs/XS0gIGludGVncmF0
ZSBib3RoIElQdjQgYW5kIElQdjYgYWRkciByZXNvbHV0aW9uIHdpdGggZ2V0YWRkcmluZm8gaW5z
dGVhZCBvZgorICAgICAgICB2ZW5lcmFibGUgZ2V0aG9zdGJ5bmFtZSZmcmllbmRzLCBwcm9ibGVt
OiBob3Jpem9udGFsIHBvcnRhYmlsaXR5IChhY3Jvc3MKKyAgICAgICAgcGxhdGZvcm1zKSBhbmQg
dmVydGljYWwgcG9ydGFiLiAoYWNyb3NzIHZlcnNpb25zKQorCisgIERPTkU6CisgICAgIC0gIC4v
Y29uZmlndXJlIFsgLS1kaXNhYmxlLWlwdjYgXSBbIC0tZW5hYmxlLXVuaXgtc29ja2V0cyBdIAor
ICAgICAgICBtYXAgdG8gVVNFX1BGX0lORVQ2IGFuZCBVU0VfUEZfVU5JWAorICAgICAtICBtZXJn
ZSBNSCBwYXRjaAorICAgICAtICAtcCB0Y3A2LWNsaWVudCwgLXAgdGNwNi1zZXJ2ZXIKKyAgICAg
LSAgTUggSVB2NiBzdXBwb3J0IAorIAorLS0KK0p1YW5KbyBDaWFybGFudGUgICBqam98YXR8bWVu
ZG96YS5nb3YuYXIKKzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6CisuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMaW51eCBJUCBBbGlhc2luZyBhdXRob3IgLgorLiAgIE1vZHVsYXIgYWxnbyAo
QUVTIGV0IGFsbCkgc3VwcG9ydCBmb3IgRnJlZVNXQU4vT3BlblNXQU4gYXV0aG9yIC4KKzouLi4g
ICAgICAgcGx1cyAgb3RoZXIgc2NhdHRlcmVkIGZyZWUgc29mdHdhcmUgYml0cyBpbiB0aGUgd2ls
ZCAuLi46CmRpZmYgLXUgb3BlbnZwbi0yL2FjbG9jYWwubTQ6MS4xIG9wZW52cG4tMi9hY2xvY2Fs
Lm00OjEuMS44LjIKLS0tIGFjbG9jYWwubTQ6MS4xCUZyaSBNYXIgIDQgMTY6MDU6NTcgMjAwNQor
KysgYWNsb2NhbC5tNAlXZWQgTWF5IDExIDE1OjE3OjUxIDIwMDUKQEAgLTEsNCArMSw0IEBACi0j
IGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS44LjMgLSotIEF1dG9jb25mIC0q
LQorIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuOS4yIC0qLSBBdXRvY29u
ZiAtKi0KIAogIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIw
MDEsIDIwMDIsIDIwMDMsIDIwMDQKICMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBA
IC0zMywxNCArMzMsMTQgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBBdXRv
bWFrZSBYLlkgdHJhY2VzIHRoaXMgbWFjcm8gdG8gZW5zdXJlIGFjbG9jYWwubTQgaGFzIGJlZW4K
ICMgZ2VuZXJhdGVkIGZyb20gdGhlIG00IGZpbGVzIGFjY29tcGFueWluZyBBdXRvbWFrZSBYLlku
Ci1BQ19ERUZVTihbQU1fQVVUT01BS0VfVkVSU0lPTl0sIFthbV9fYXBpX3ZlcnNpb249IjEuOCJd
KQorQUNfREVGVU4oW0FNX0FVVE9NQUtFX1ZFUlNJT05dLCBbYW1fX2FwaV92ZXJzaW9uPSIxLjki
XSkKIAogIyBBTV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9OCiAjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJTSU9OIHNvIGl0IGNhbiBi
ZSB0cmFjZWQuCiAjIFRoaXMgZnVuY3Rpb24gaXMgQUNfUkVRVUlSRWQgYnkgQUNfSU5JVF9BVVRP
TUFLRS4KIEFDX0RFRlVOKFtBTV9TRVRfQ1VSUkVOVF9BVVRPTUFLRV9WRVJTSU9OXSwKLQkgW0FN
X0FVVE9NQUtFX1ZFUlNJT04oWzEuOC4zXSldKQorCSBbQU1fQVVUT01BS0VfVkVSU0lPTihbMS45
LjJdKV0pCiAKICMgQU1fQVVYX0RJUl9FWFBBTkQKIApAQCAtMTA4LDcgKzEwOCw3IEBACiAKICMg
QU1fQ09ORElUSU9OQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAoQykgMTk5NywgMjAwMCwgMjAwMSwg
MjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk3
LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog
CiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNDUsOCArMTQ1LDggQEAKIGZpCiBB
Q19DT05GSUdfQ09NTUFORFNfUFJFKAogW2lmIHRlc3QgLXogIiR7JDFfVFJVRX0iICYmIHRlc3Qg
LXogIiR7JDFfRkFMU0V9IjsgdGhlbgotICBBQ19NU0dfRVJST1IoW2NvbmRpdGlvbmFsICIkMSIg
d2FzIG5ldmVyIGRlZmluZWQuCi1Vc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5
IGludm9rZWQgY29uZGl0aW9uYWxseS5dKQorICBBQ19NU0dfRVJST1IoW1tjb25kaXRpb25hbCAi
JDEiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMg
b25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuXV0pCiBmaV0pXSkKIAogIyBzZXJpYWwgNwkJCQkJ
CS0qLSBBdXRvY29uZiAtKi0KQEAgLTI2Niw5ICsyNjYsMTQgQEAKICAgICAgICBncmVwIHN1Yi9j
b25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgog
ICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbgog
ICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVz
dCBpc3N1ZSB3YXJuaW5ncwotICAgICAgIyAoZXZlbiB3aXRoIC1XZXJyb3IpLiAgU28gd2UgZ3Jl
cCBzdGRlcnIgZm9yIGFueSBtZXNzYWdlCi0gICAgICAjIHRoYXQgc2F5cyBhbiBvcHRpb24gd2Fz
IGlnbm9yZWQuCi0gICAgICBpZiBncmVwICdpZ25vcmluZyBvcHRpb24nIGNvbmZ0ZXN0LmVyciA+
L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgIyBvciByZW1hcmtzIChldmVuIHdp
dGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKyAgICAgICMg
dGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLgorICAgICAg
IyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToKKyAgICAg
ICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8g
YXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4
LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90
IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJy
IHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9u
dWxsIDI+JjE7IHRoZW4gOjsgZWxzZQogICAgICAgICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29t
cGlsZXJfdHlwZT0kZGVwbW9kZQogICAgICAgICBicmVhawogICAgICAgZmkKQEAgLTMxNCw3ICsz
MTksOCBAQAogCiAjIEdlbmVyYXRlIGNvZGUgdG8gc2V0IHVwIGRlcGVuZGVuY3kgdHJhY2tpbmcu
ICAgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwg
MjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJp
Z2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0CisjICAgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAg
LTM1MCwyNyArMzU2LDIxIEBACiAgIGVsc2UKICAgICBjb250aW51ZQogICBmaQotICBncmVwICde
REVQX0ZJTEVTICo9ICpbW14gQCU6QF1dJyA8ICIkbWYiID4gL2Rldi9udWxsIHx8IGNvbnRpbnVl
Ci0gICMgRXh0cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBfRklMRVMgZnJvbSB0aGUgTWFrZWZp
bGUgd2l0aG91dAotICAjIHJ1bm5pbmcgYG1ha2UnLgorICAjIEV4dHJhY3QgdGhlIGRlZmluaXRp
b24gb2YgREVQRElSLCBhbV9faW5jbHVkZSwgYW5kIGFtX19xdW90ZQorICAjIGZyb20gdGhlIE1h
a2VmaWxlIHdpdGhvdXQgcnVubmluZyBgbWFrZScuCiAgIERFUERJUj1gc2VkIC1uICdzL15ERVBE
SVIgPSAvL3AnIDwgIiRtZiJgCiAgIHRlc3QgLXogIiRERVBESVIiICYmIGNvbnRpbnVlCisgIGFt
X19pbmNsdWRlPWBzZWQgLW4gJ3MvXmFtX19pbmNsdWRlID0gLy9wJyA8ICIkbWYiYAorICB0ZXN0
IC16ICJhbV9faW5jbHVkZSIgJiYgY29udGludWUKKyAgYW1fX3F1b3RlPWBzZWQgLW4gJ3MvXmFt
X19xdW90ZSA9IC8vcCcgPCAiJG1mImAKICAgIyBXaGVuIHVzaW5nIGFuc2kya25yLCBVIG1heSBi
ZSBlbXB0eSBvciBhbiB1bmRlcnNjb3JlOyBleHBhbmQgaXQKICAgVT1gc2VkIC1uICdzL15VID0g
Ly9wJyA8ICIkbWYiYAotICB0ZXN0IC1kICIkZGlycGFydC8kREVQRElSIiB8fCBta2RpciAiJGRp
cnBhcnQvJERFUERJUiIKLSAgIyBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2UgaXQgaXMgdGhl
IHNpbXBsZXN0IGFwcHJvYWNoIHRvCi0gICMgY2hhbmdpbmcgJChERVBESVIpIHRvIGl0cyBhY3R1
YWwgdmFsdWUgaW4gdGhlIGV4cGFuc2lvbi4KLSAgZm9yIGZpbGUgaW4gYHNlZCAtbiAnCi0gICAg
L15ERVBfRklMRVMgPSAuKlxcXFwkLyB7Ci0gICAgICBzL15ERVBfRklMRVMgPSAvLwotICAgICAg
Omxvb3AKLQlzL1xcXFwkLy8KLQlwCi0JbgotCS9cXFxcJC8gYiBsb29wCi0gICAgICBwCi0gICAg
fQotICAgIC9eREVQX0ZJTEVTID0gLyBzL15ERVBfRklMRVMgPSAvL3AnIDwgIiRtZiIgfCBcCisg
ICMgRmluZCBhbGwgZGVwZW5kZW5jeSBvdXRwdXQgZmlsZXMsIHRoZXkgYXJlIGluY2x1ZGVkIGZp
bGVzIHdpdGgKKyAgIyAkKERFUERJUikgaW4gdGhlaXIgbmFtZXMuICBXZSBpbnZva2Ugc2VkIHR3
aWNlIGJlY2F1c2UgaXQgaXMgdGhlCisgICMgc2ltcGxlc3QgYXBwcm9hY2ggdG8gY2hhbmdpbmcg
JChERVBESVIpIHRvIGl0cyBhY3R1YWwgdmFsdWUgaW4gdGhlCisgICMgZXhwYW5zaW9uLgorICBm
b3IgZmlsZSBpbiBgc2VkIC1uICIKKyAgICBzL14kYW1fX2luY2x1ZGUgJGFtX19xdW90ZVwoLioo
REVQRElSKS4qXCkkYW1fX3F1b3RlIickL1wxL3AnIDwiJG1mIiB8IFwKICAgICAgICBzZWQgLWUg
J3MvXCQoREVQRElSKS8nIiRERVBESVIiJy9nJyAtZSAncy9cJFUvJyIkVSInL2cnYDsgZG8KICAg
ICAjIE1ha2Ugc3VyZSB0aGUgZGlyZWN0b3J5IGV4aXN0cy4KICAgICB0ZXN0IC1mICIkZGlycGFy
dC8kZmlsZSIgJiYgY29udGludWUKQEAgLTQyNSw3ICs0MjUsNyBAQAogIyBUaGlzIG1hY3JvIGFj
dHVhbGx5IGRvZXMgdG9vIG11Y2ggc29tZSBjaGVja3MgYXJlIG9ubHkgbmVlZGVkIGlmCiAjIHlv
dXIgcGFja2FnZSBkb2VzIGNlcnRhaW4gdGhpbmdzLiAgQnV0IHRoaXMgaXNuJ3QgcmVhbGx5IGEg
YmlnIGRlYWwuCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAw
LCAyMDAxLCAyMDAyLCAyMDAzCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5
OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNAogIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtNTAxLDcgKzUwMSw2IEBACiBBTV9NSVNTSU5H
X1BST0coQVVUT01BS0UsIGF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSkKIEFNX01JU1NJTkdf
UFJPRyhBVVRPSEVBREVSLCBhdXRvaGVhZGVyKQogQU1fTUlTU0lOR19QUk9HKE1BS0VJTkZPLCBt
YWtlaW5mbykKLUFNX01JU1NJTkdfUFJPRyhBTVRBUiwgdGFyKQogQU1fUFJPR19JTlNUQUxMX1NI
CiBBTV9QUk9HX0lOU1RBTExfU1RSSVAKIEFDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5s
CkBAIC01MTAsNyArNTA5LDkgQEAKIEFDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKIEFDX1JF
UVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAogQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdf
RE9UXSlkbmwKLQorX0FNX0lGX09QVElPTihbdGFyLXVzdGFyXSwgW19BTV9QUk9HX1RBUihbdXN0
YXJdKV0sCisgICAgICAgICAgICAgIFtfQU1fSUZfT1BUSU9OKFt0YXItcGF4XSwgW19BTV9QUk9H
X1RBUihbcGF4XSldLAorCSAgICAgIAkJICAgICBbX0FNX1BST0dfVEFSKFt2N10pXSldKQogX0FN
X0lGX09QVElPTihbbm8tZGVwZW5kZW5jaWVzXSwsCiBbQUNfUFJPVklERV9JRkVMU0UoW0FDX1BS
T0dfQ0NdLAogICAgICAgICAgICAgICAgICAgW19BTV9ERVBFTkRFTkNJRVMoQ0MpXSwKQEAgLTc1
MywxMyArNzU0LDIxIEBACiAjIHRoaXMuKQogQUNfREVGVU4oW0FNX1BST0dfTUtESVJfUF0sCiBb
aWYgbWtkaXIgLXAgLS12ZXJzaW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgISAtZCAuLy0t
dmVyc2lvbjsgdGhlbgotICAjIEtlZXBpbmcgdGhlIGAuJyBhcmd1bWVudCBhbGxvd3MgJChta2Rp
cl9wKSB0byBiZSB1c2VkIHdpdGhvdXQKLSAgIyBhcmd1bWVudC4gIEluZGVlZCwgd2Ugc29tZXRp
bWVzIG91dHB1dCBydWxlcyBsaWtlCisgICMgV2UgdXNlZCB0byBrZWVwaW5nIHRoZSBgLicgYXMg
Zmlyc3QgYXJndW1lbnQsIGluIG9yZGVyIHRvCisgICMgYWxsb3cgJChta2Rpcl9wKSB0byBiZSB1
c2VkIHdpdGhvdXQgYXJndW1lbnQuICBBcyBpbgogICAjICAgJChta2Rpcl9wKSAkKHNvbWVkaXIp
Ci0gICMgd2hlcmUgJChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5IGRlZmluZWQuCi0gICMgKGB0
ZXN0IC1uICckKHNvbWVkaXIpJyAmJiAkKG1rZGlyX3ApICQoc29tZWRpciknIGlzIGEgbW9yZQot
ICAjIGV4cGVuc2l2ZSBzb2x1dGlvbiwgYXMgaXQgZm9yY2VzIE1ha2UgdG8gc3RhcnQgYSBzdWIt
c2hlbGwuKQotICBta2Rpcl9wPSdta2RpciAtcCAtLSAuJworICAjIHdoZXJlICQoc29tZWRpcikg
aXMgY29uZGl0aW9uYWxseSBkZWZpbmVkLiAgSG93ZXZlciB0aGlzIGlzIHdyb25nCisgICMgZm9y
IHR3byByZWFzb25zOgorICAjICAxLiBpZiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgYnkgYSB1
c2VyIHdobyBjYW5ub3Qgd3JpdGUgYC4nCisgICMgICAgIG1ha2UgaW5zdGFsbCB3aWxsIGZhaWws
CisgICMgIDIuIHRoZSBhYm92ZSBjb21tZW50IHNob3VsZCBtb3N0IGNlcnRhaW5seSByZWFkCisg
ICMgICAgICQobWtkaXJfcCkgJChERVNURElSKSQoc29tZWRpcikKKyAgIyAgICAgc28gaXQgZG9l
cyBub3Qgd29yayB3aGVuICQoc29tZWRpcikgaXMgdW5kZWZpbmVkIGFuZAorICAjICAgICAkKERF
U1RESVIpIGlzIG5vdC4KKyAgIyAgVG8gc3VwcG9ydCB0aGUgbGF0dGVyIGNhc2UsIHdlIGhhdmUg
dG8gd3JpdGUKKyAgIyAgICAgdGVzdCAteiAiJChzb21lZGlyKSIgfHwgJChta2Rpcl9wKSAkKERF
U1RESVIpJChzb21lZGlyKSwKKyAgIyAgc28gdGhlIGAuJyB0cmljayBpcyBwb2ludGxlc3MuCisg
IG1rZGlyX3A9J21rZGlyIC1wIC0tJwogZWxzZQogICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3Rl
cCwgdGhlIGBta2RpcicgY29tbWFuZCBkb2VzIG5vdAogICAjIHJlY29nbml6ZSBhbnkgb3B0aW9u
LiAgSXQgd2lsbCBpbnRlcnByZXQgYWxsIG9wdGlvbnMgYXMKQEAgLTkyNSw0ICs5MzQsMTEyIEBA
CiBJTlNUQUxMX1NUUklQX1BST0dSQU09Ilwke1NIRUxMfSBcJChpbnN0YWxsX3NoKSAtYyAtcyIK
IEFDX1NVQlNUKFtJTlNUQUxMX1NUUklQX1BST0dSQU1dKV0pCiAKKyMgQ2hlY2sgaG93IHRvIGNy
ZWF0ZSBhIHRhcmJhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAt
Ki0KKworIyBDb3B5cmlnaHQgKEMpIDIwMDQgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxh
dGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEK
KyMgMDIxMTEtMTMwNywgVVNBLgorCisjIHNlcmlhbCAxCisKKworIyBfQU1fUFJPR19UQVIoRk9S
TUFUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBob3cgdG8gY3JlYXRlIGEgdGFy
YmFsbCBpbiBmb3JtYXQgRk9STUFULgorIyBGT1JNQVQgc2hvdWxkIGJlIG9uZSBvZiBgdjcnLCBg
dXN0YXInLCBvciBgcGF4Jy4KKyMKKyMgU3Vic3RpdHV0ZSBhIHZhcmlhYmxlICQoYW1fX3Rhcikg
dGhhdCBpcyBhIGNvbW1hbmQKKyMgd3JpdGluZyB0byBzdGRvdXQgYSBGT1JNQVQtdGFyYmFsbCBj
b250YWluaW5nIHRoZSBkaXJlY3RvcnkKKyMgJHRhcmRpci4KKyMgICAgIHRhcmRpcj1kaXJlY3Rv
cnkgJiYgJChhbV9fdGFyKSA+IHJlc3VsdC50YXIKKyMKKyMgU3Vic3RpdHV0ZSBhIHZhcmlhYmxl
ICQoYW1fX3VudGFyKSB0aGF0IGV4dHJhY3Qgc3VjaAorIyBhIHRhcmJhbGwgcmVhZCBmcm9tIHN0
ZGluLgorIyAgICAgJChhbV9fdW50YXIpIDwgcmVzdWx0LnRhcgorQUNfREVGVU4oW19BTV9QUk9H
X1RBUl0sCitbIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
LgorQU1fTUlTU0lOR19QUk9HKFtBTVRBUl0sIFt0YXJdKQorbTRfaWYoWyQxXSwgW3Y3XSwKKyAg
ICAgW2FtX190YXI9JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FN
VEFSfSB4ZiAtJ10sCisgICAgIFttNF9jYXNlKFskMV0sIFt1c3Rhcl0sLCBbcGF4XSwsCisgICAg
ICAgICAgICAgIFttNF9mYXRhbChbVW5rbm93biB0YXIgZm9ybWF0XSldKQorQUNfTVNHX0NIRUNL
SU5HKFtob3cgdG8gY3JlYXRlIGEgJDEgdGFyIGFyY2hpdmVdKQorIyBMb29wIG92ZXIgYWxsIGtu
b3duIG1ldGhvZHMgdG8gY3JlYXRlIGEgdGFyIGFyY2hpdmUgdW50aWwgb25lIHdvcmtzLgorX2Ft
X3Rvb2xzPSdnbnV0YXIgbTRfaWYoWyQxXSwgW3VzdGFyXSwgW3BsYWludGFyXSkgcGF4IGNwaW8g
bm9uZScKK19hbV90b29scz0ke2FtX2N2X3Byb2dfdGFyXyQxLSRfYW1fdG9vbHN9CisjIERvIG5v
dCBmb2xkIHRoZSBhYm92ZSB0d28gbGluZSBpbnRvIG9uZSwgYmVjYXVzZSBUcnU2NCBzaCBhbmQK
KyMgU29sYXJpcyBzaCB3aWxsIG5vdCBncm9rIHNwYWNlcyBpbiB0aGUgcmhzIG9mIGAtJy4KK2Zv
ciBfYW1fdG9vbCBpbiAkX2FtX3Rvb2xzCitkbworICBjYXNlICRfYW1fdG9vbCBpbgorICBnbnV0
YXIpCisgICAgZm9yIF9hbV90YXIgaW4gdGFyIGdudXRhciBndGFyOworICAgIGRvCisgICAgICBB
TV9SVU5fTE9HKFskX2FtX3RhciAtLXZlcnNpb25dKSAmJiBicmVhaworICAgIGRvbmUKKyAgICBh
bV9fdGFyPSIkX2FtX3RhciAtLWZvcm1hdD1tNF9pZihbJDFdLCBbcGF4XSwgW3Bvc2l4XSwgWyQx
XSkgLWNoZiAtICInIiQkdGFyZGlyIicKKyAgICBhbV9fdGFyXz0iJF9hbV90YXIgLS1mb3JtYXQ9
bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkdGFyZGlyIicKKyAg
ICBhbV9fdW50YXI9IiRfYW1fdGFyIC14ZiAtIgorICAgIDs7CisgIHBsYWludGFyKQorICAgICMg
TXVzdCBza2lwIEdOVSB0YXI6IGlmIGl0IGRvZXMgbm90IHN1cHBvcnQgLS1mb3JtYXQ9IGl0IGRv
ZXNuJ3QgY3JlYXRlCisgICAgIyB1c3RhciB0YXJiYWxsIGVpdGhlci4KKyAgICAodGFyIC0tdmVy
c2lvbikgPi9kZXYvbnVsbCAyPiYxICYmIGNvbnRpbnVlCisgICAgYW1fX3Rhcj0ndGFyIGNoZiAt
ICIkJHRhcmRpciInCisgICAgYW1fX3Rhcl89J3RhciBjaGYgLSAiJHRhcmRpciInCisgICAgYW1f
X3VudGFyPSd0YXIgeGYgLScKKyAgICA7OworICBwYXgpCisgICAgYW1fX3Rhcj0ncGF4IC1MIC14
ICQxIC13ICIkJHRhcmRpciInCisgICAgYW1fX3Rhcl89J3BheCAtTCAteCAkMSAtdyAiJHRhcmRp
ciInCisgICAgYW1fX3VudGFyPSdwYXggLXInCisgICAgOzsKKyAgY3BpbykKKyAgICBhbV9fdGFy
PSdmaW5kICIkJHRhcmRpciIgLXByaW50IHwgY3BpbyAtbyAtSCAkMSAtTCcKKyAgICBhbV9fdGFy
Xz0nZmluZCAiJHRhcmRpciIgLXByaW50IHwgY3BpbyAtbyAtSCAkMSAtTCcKKyAgICBhbV9fdW50
YXI9J2NwaW8gLWkgLUggJDEgLWQnCisgICAgOzsKKyAgbm9uZSkKKyAgICBhbV9fdGFyPWZhbHNl
CisgICAgYW1fX3Rhcl89ZmFsc2UKKyAgICBhbV9fdW50YXI9ZmFsc2UKKyAgICA7OworICBlc2Fj
CisKKyAgIyBJZiB0aGUgdmFsdWUgd2FzIGNhY2hlZCwgc3RvcCBub3cuICBXZSBqdXN0IHdhbnRl
ZCB0byBoYXZlIGFtX190YXIKKyAgIyBhbmQgYW1fX3VudGFyIHNldC4KKyAgdGVzdCAtbiAiJHth
bV9jdl9wcm9nX3Rhcl8kMX0iICYmIGJyZWFrCisKKyAgIyB0YXIvdW50YXIgYSBkdW1teSBkaXJl
Y3RvcnksIGFuZCBzdG9wIGlmIHRoZSBjb21tYW5kIHdvcmtzCisgIHJtIC1yZiBjb25mdGVzdC5k
aXIKKyAgbWtkaXIgY29uZnRlc3QuZGlyCisgIGVjaG8gR3JlcE1lID4gY29uZnRlc3QuZGlyL2Zp
bGUKKyAgQU1fUlVOX0xPRyhbdGFyZGlyPWNvbmZ0ZXN0LmRpciAmJiBldmFsICRhbV9fdGFyXyA+
Y29uZnRlc3QudGFyXSkKKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorICBpZiB0ZXN0IC1zIGNvbmZ0
ZXN0LnRhcjsgdGhlbgorICAgIEFNX1JVTl9MT0coWyRhbV9fdW50YXIgPGNvbmZ0ZXN0LnRhcl0p
CisgICAgZ3JlcCBHcmVwTWUgY29uZnRlc3QuZGlyL2ZpbGUgPi9kZXYvbnVsbCAyPiYxICYmIGJy
ZWFrCisgIGZpCitkb25lCitybSAtcmYgY29uZnRlc3QuZGlyCisKK0FDX0NBQ0hFX1ZBTChbYW1f
Y3ZfcHJvZ190YXJfJDFdLCBbYW1fY3ZfcHJvZ190YXJfJDE9JF9hbV90b29sXSkKK0FDX01TR19S
RVNVTFQoWyRhbV9jdl9wcm9nX3Rhcl8kMV0pXSkKK0FDX1NVQlNUKFthbV9fdGFyXSkKK0FDX1NV
QlNUKFthbV9fdW50YXJdKQorXSkgIyBfQU1fUFJPR19UQVIKKwogbTRfaW5jbHVkZShbYWNpbmNs
dWRlLm00XSkKZGlmZiAtdSBvcGVudnBuLTIvYnVmZmVyLmM6MS40IG9wZW52cG4tMi9idWZmZXIu
YzoxLjQuNC4xCi0tLSBidWZmZXIuYzoxLjQJVHVlIEFwciAxOSAxNToxNjo1MCAyMDA1CisrKyBi
dWZmZXIuYwlNb24gTWF5ICAyIDEwOjMzOjQ4IDIwMDUKQEAgLTE5Nyw2ICsxOTcsMTcgQEAKIAl9
CiAgICAgfQogfQordm9pZCBidWZfcHV0cyhzdHJ1Y3QgYnVmZmVyICpidWYsIGNvbnN0IGNoYXIg
KnN0cikKK3sKKyAgdWludDhfdCAqcHRyID0gQkVORCAoYnVmKTsKKyAgaW50IGNhcCA9IGJ1Zl9m
b3J3YXJkX2NhcGFjaXR5IChidWYpOworICBpZiAoY2FwID4gMCkKKyAgICB7CisgICAgICBzdHJu
Y3B5bnQgKChjaGFyICopcHRyLHN0ciwgY2FwKTsKKyAgICAgICooYnVmLT5kYXRhICsgYnVmLT5j
YXBhY2l0eSAtIDEpID0gMDsgLyogd2luZG93cyB2c25wcmludGYgbmVlZHMgdGhpcyAqLworICAg
ICAgYnVmLT5sZW4gKz0gKGludCkgc3RybGVuICgoY2hhciAqKXB0cik7CisgICAgfQorfQogCiAv
KgogICogVGhpcyBpcyBuZWNlc3NhcnkgZHVlIHRvIGNlcnRhaW4gYnVnZ3kgaW1wbGVtZW50YXRp
b25zIG9mIHNucHJpbnRmLApkaWZmIC11IG9wZW52cG4tMi9idWZmZXIuaDoxLjQgb3BlbnZwbi0y
L2J1ZmZlci5oOjEuNC40LjEKLS0tIGJ1ZmZlci5oOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUwIDIw
MDUKKysrIGJ1ZmZlci5oCU1vbiBNYXkgIDIgMTA6MzM6NDkgMjAwNQpAQCAtMjAwLDYgKzIwMCwx
MSBAQAogICAgIDsKIAogLyoKKyAqIGFwcGVuZCBzdHIgdG8gYSBidWZmZXIgd2l0aCBvdmVyZmxv
dyBjaGVjaworICovCit2b2lkIGJ1Zl9wdXRzKHN0cnVjdCBidWZmZXIgKmJ1ZiwgY29uc3QgY2hh
ciAqc3RyKTsKKworLyoKICAqIExpa2Ugc25wcmludGYgYnV0IGd1YXJhbnRlZXMgbnVsbCB0ZXJt
aW5hdGlvbiBmb3Igc2l6ZSA+IDAKICAqLwogaW50IG9wZW52cG5fc25wcmludGYoY2hhciAqc3Ry
LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCmRpZmYgLXUgb3BlbnZwbi0y
L2NvbmZpZy5oLmluOjEuMSBvcGVudnBuLTIvY29uZmlnLmguaW46MS4xLjguMQotLS0gY29uZmln
LmguaW46MS4xCUZyaSBNYXIgIDQgMTY6MDU6NTcgMjAwNQorKysgY29uZmlnLmguaW4JTW9uIE1h
eSAgMiAxMDozMzo0OSAyMDA1CkBAIC0zMCw2ICszMCw5IEBACiAvKiBFbmFibGUgbWFuYWdlbWVu
dCBzZXJ2ZXIgY2FwYWJpbGl0eSAqLwogI3VuZGVmIEVOQUJMRV9NQU5BR0VNRU5UCiAKKy8qIEVu
YWJsZSBtdWx0aS1ob21lZCBVRFAgc2VydmVyIGNhcGFiaWxpdHkgKi8KKyN1bmRlZiBFTkFCTEVf
TVVMVElIT01FCisKIC8qIEFsbG93IC0tYXNrcGFzcyBhbmQgLS1hdXRoLXVzZXItcGFzcyBwYXNz
d29yZHMgdG8gYmUgcmVhZCBmcm9tIGEgZmlsZSAqLwogI3VuZGVmIEVOQUJMRV9QQVNTV09SRF9T
QVZFCiAKQEAgLTE0Nyw2ICsxNTAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhl
IDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKIAor
Lyogc3RydWN0IGluX3BrdGluZm8gbmVlZGVkIGZvciBJUF9QS1RJTkZPIHN1cHBvcnQgKi8KKyN1
bmRlZiBIQVZFX0lOX1BLVElORk8KKwogLyogc3RydWN0IGlvdmVjIG5lZWRlZCBmb3IgSVB2NiBz
dXBwb3J0ICovCiAjdW5kZWYgSEFWRV9JT1ZFQwogCkBAIC0yMzQsNiArMjQwLDkgQEAKIC8qIERl
ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVjdmZyb20nIGZ1bmN0aW9uLiAqLwogI3VuZGVm
IEhBVkVfUkVDVkZST00KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWN2bXNn
JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFQ1ZNU0cKKwogLyogRGVmaW5lIHRvIDEgaWYg
eW91IGhhdmUgdGhlIDxyZXNvbHYuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9SRVNP
TFZfSAogCkBAIC0yNDMsNiArMjUyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo
ZSBgc2VuZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRU5ECiAKKy8qIERlZmluZSB0byAx
IGlmIHlvdSBoYXZlIHRoZSBgc2VuZG1zZycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRU5E
TVNHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZHRvJyBmdW5jdGlvbi4g
Ki8KICN1bmRlZiBIQVZFX1NFTkRUTwogCkBAIC00NTEsNiArNDYzLDE1IEBACiAvKiBVc2UgTFpP
IGNvbXByZXNzaW9uIGxpYnJhcnkgKi8KICN1bmRlZiBVU0VfTFpPCiAKKy8qIEVuYWJsZSBwYXls
b2FkIGNvbm50cmFjayAqLworI3VuZGVmIFVTRV9QQVlMT0FEX0NPTk5UUkFDSworCisvKiBzdHJ1
Y3Qgc29ja2FkZHJfaW42IGlzIG5lZWRlZCBmb3IgSVB2NiBwZWVyIHN1cHBvcnQgKi8KKyN1bmRl
ZiBVU0VfUEZfSU5FVDYKKworLyogQ29tcGlsZSBzdXBwb3J0IGZvciBQRl9VTklYIHNvY2tldHMg
Ki8KKyN1bmRlZiBVU0VfUEZfVU5JWAorCiAvKiBVc2UgcHRocmVhZC1iYXNlZCBtdWx0aXRocmVh
ZGluZyAqLwogI3VuZGVmIFVTRV9QVEhSRUFECiAKZGlmZiAtdSBvcGVudnBuLTIvY29uZmlndXJl
OjEuMiBvcGVudnBuLTIvY29uZmlndXJlOjEuMi40LjIKLS0tIGNvbmZpZ3VyZToxLjIJVHVlIEFw
ciAxOSAxNToxNjo1MCAyMDA1CisrKyBjb25maWd1cmUJV2VkIE1heSAxMSAxNToxNzo1MSAyMDA1
CkBAIC0zMTEsNyArMzExLDcgQEAKICMgaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYiCiAKLWFj
X3N1YnN0X3ZhcnM9J1NIRUxMIFBBVEhfU0VQQVJBVE9SIFBBQ0tBR0VfTkFNRSBQQUNLQUdFX1RB
Uk5BTUUgUEFDS0FHRV9WRVJTSU9OIFBBQ0tBR0VfU1RSSU5HIFBBQ0tBR0VfQlVHUkVQT1JUIGV4
ZWNfcHJlZml4IHByZWZpeCBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIGJpbmRpciBzYmluZGlyIGxp
YmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIg
bGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBpbmZvZGlyIG1hbmRpciBidWlsZF9hbGlh
cyBob3N0X2FsaWFzIHRhcmdldF9hbGlhcyBERUZTIEVDSE9fQyBFQ0hPX04gRUNIT19UIExJQlMg
SUZDT05GSUcgSVBST1VURSBST1VURSBidWlsZCBidWlsZF9jcHUgYnVpbGRfdmVuZG9yIGJ1aWxk
X29zIGhvc3QgaG9zdF9jcHUgaG9zdF92ZW5kb3IgaG9zdF9vcyB0YXJnZXQgdGFyZ2V0X2NwdSB0
YXJnZXRfdmVuZG9yIHRhcmdldF9vcyBJTlNUQUxMX1BST0dSQU0gSU5TVEFMTF9TQ1JJUFQgSU5T
VEFMTF9EQVRBIENZR1BBVEhfVyBQQUNLQUdFIFZFUlNJT04gQUNMT0NBTCBBVVRPQ09ORiBBVVRP
TUFLRSBBVVRPSEVBREVSIE1BS0VJTkZPIEFNVEFSIGluc3RhbGxfc2ggU1RSSVAgYWNfY3RfU1RS
SVAgSU5TVEFMTF9TVFJJUF9QUk9HUkFNIG1rZGlyX3AgQVdLIFNFVF9NQUtFIGFtX19sZWFkaW5n
X2RvdCBDQyBDRkxBR1MgTERGTEFHUyBDUFBGTEFHUyBhY19jdF9DQyBFWEVFWFQgT0JKRVhUIERF
UERJUiBhbV9faW5jbHVkZSBhbV9fcXVvdGUgQU1ERVBfVFJVRSBBTURFUF9GQUxTRSBBTURFUEJB
Q0tTTEFTSCBDQ0RFUE1PREUgYW1fX2Zhc3RkZXBDQ19UUlVFIGFtX19mYXN0ZGVwQ0NfRkFMU0Ug
Q1BQIEVHUkVQIExJQk9CSlMgUFRIUkVBRF9DQyBQVEhSRUFEX0xJQlMgUFRIUkVBRF9DRkxBR1Mg
TFRMSUJPQkpTJworYWNfc3Vic3RfdmFycz0nU0hFTEwgUEFUSF9TRVBBUkFUT1IgUEFDS0FHRV9O
QU1FIFBBQ0tBR0VfVEFSTkFNRSBQQUNLQUdFX1ZFUlNJT04gUEFDS0FHRV9TVFJJTkcgUEFDS0FH
RV9CVUdSRVBPUlQgZXhlY19wcmVmaXggcHJlZml4IHByb2dyYW1fdHJhbnNmb3JtX25hbWUgYmlu
ZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIg
bG9jYWxzdGF0ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIgbWFu
ZGlyIGJ1aWxkX2FsaWFzIGhvc3RfYWxpYXMgdGFyZ2V0X2FsaWFzIERFRlMgRUNIT19DIEVDSE9f
TiBFQ0hPX1QgTElCUyBJRkNPTkZJRyBJUFJPVVRFIFJPVVRFIGJ1aWxkIGJ1aWxkX2NwdSBidWls
ZF92ZW5kb3IgYnVpbGRfb3MgaG9zdCBob3N0X2NwdSBob3N0X3ZlbmRvciBob3N0X29zIHRhcmdl
dCB0YXJnZXRfY3B1IHRhcmdldF92ZW5kb3IgdGFyZ2V0X29zIElOU1RBTExfUFJPR1JBTSBJTlNU
QUxMX1NDUklQVCBJTlNUQUxMX0RBVEEgQ1lHUEFUSF9XIFBBQ0tBR0UgVkVSU0lPTiBBQ0xPQ0FM
IEFVVE9DT05GIEFVVE9NQUtFIEFVVE9IRUFERVIgTUFLRUlORk8gaW5zdGFsbF9zaCBTVFJJUCBh
Y19jdF9TVFJJUCBJTlNUQUxMX1NUUklQX1BST0dSQU0gbWtkaXJfcCBBV0sgU0VUX01BS0UgYW1f
X2xlYWRpbmdfZG90IEFNVEFSIGFtX190YXIgYW1fX3VudGFyIENDIENGTEFHUyBMREZMQUdTIENQ
UEZMQUdTIGFjX2N0X0NDIEVYRUVYVCBPQkpFWFQgREVQRElSIGFtX19pbmNsdWRlIGFtX19xdW90
ZSBBTURFUF9UUlVFIEFNREVQX0ZBTFNFIEFNREVQQkFDS1NMQVNIIENDREVQTU9ERSBhbV9fZmFz
dGRlcENDX1RSVUUgYW1fX2Zhc3RkZXBDQ19GQUxTRSBDUFAgRUdSRVAgTElCT0JKUyBQVEhSRUFE
X0NDIFBUSFJFQURfTElCUyBQVEhSRUFEX0NGTEFHUyBMVExJQk9CSlMnCiBhY19zdWJzdF9maWxl
cz0nJwogCiAjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuCkBAIC04
NjQsNiArODY0LDcgQEAKICAgLS1kaXNhYmxlLXNvY2tzICAgICAgICAgRGlzYWJsZSBTb2NrcyBz
dXBwb3J0CiAgIC0tZGlzYWJsZS1odHRwICAgICAgICAgIERpc2FibGUgSFRUUCBwcm94eSBzdXBw
b3J0CiAgIC0tZGlzYWJsZS1mcmFnbWVudCAgICAgIERpc2FibGUgaW50ZXJuYWwgZnJhZ21lbnRh
dGlvbiBzdXBwb3J0ICgtLWZyYWdtZW50KQorICAtLWRpc2FibGUtbXVsdGlob21lICAgICBEaXNh
YmxlIG11bHRpLWhvbWVkIFVEUCBzZXJ2ZXIgc3VwcG9ydCAoLS1tdWx0aWhvbWUpCiAgIC0tZGlz
YWJsZS1kZWJ1ZyAgICAgICAgIERpc2FibGUgZGVidWdnaW5nIHN1cHBvcnQgKGRpc2FibGUgZ3Jl
bWxpbiBhbmQgdmVyYiA3KyBtZXNzYWdlcykKICAgLS1lbmFibGUtc21hbGwgICAgICAgICAgRW5h
YmxlIHNtYWxsZXIgZXhlY3V0YWJsZSBzaXplIChkaXNhYmxlIE9DQywgdXNhZ2UgbWVzc2FnZSwg
YW5kIHZlcmIgNCBwYXJtIGxpc3QpCiAgIC0tZW5hYmxlLXB0aHJlYWQgICAgICAgIEVuYWJsZSBw
dGhyZWFkIHN1cHBvcnQgKEV4cGVyaW1lbnRhbCBmb3IgT3BlblZQTiAyLjApCkBAIC04NzIsNiAr
ODczLDkgQEAKICAgLS1lbmFibGUtc3RyaWN0ICAgICAgICAgRW5hYmxlIHN0cmljdCBjb21waWxl
ciB3YXJuaW5ncyAoZGVidWdnaW5nIG9wdGlvbikKICAgLS1lbmFibGUtcHJvZmlsaW5nICAgICAg
RW5hYmxlIHByb2ZpbGluZyAoZGVidWdnaW5nIG9wdGlvbikKICAgLS1lbmFibGUtc3RyaWN0LW9w
dGlvbnMgRW5hYmxlIHN0cmljdCBvcHRpb25zIGNoZWNrIGJldHdlZW4gcGVlcnMgKGRlYnVnZ2lu
ZyBvcHRpb24pCisgIC0tZGlzYWJsZS1pcHY2ICAgICAgICAgIERpc2FibGUgVURQL0lQdjYgc3Vw
cG9ydAorICAtLWVuYWJsZS11bml4LXNvY2tldHMgICBFbmFibGUgUEZfVU5JWCBzb2NrZXRzIGxp
bmtzCisgIC0tZW5hYmxlLXBheWxvYWQtY29ubnRyYWNrICAgRW5hYmxlIHBheWxvYWQgY29ubnRy
YWNrIGZvciBlZy4gVENQIHJldHJhbnMuIGRkIGZvciByZWxpYWJsZSBsaW5rcwogICAtLWRpc2Fi
bGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxkCiAgIC0tZW5h
YmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5kZW5jeSBl
eHRyYWN0b3JzCiAKQEAgLTE0MzksNiArMTQ0MywxNSBAQAogCiBmaTsKIAorIyBDaGVjayB3aGV0
aGVyIC0tZW5hYmxlLW11bHRpaG9tZSBvciAtLWRpc2FibGUtbXVsdGlob21lIHdhcyBnaXZlbi4K
K2lmIHRlc3QgIiR7ZW5hYmxlX211bHRpaG9tZStzZXR9IiA9IHNldDsgdGhlbgorICBlbmFibGV2
YWw9IiRlbmFibGVfbXVsdGlob21lIgorICBNVUxUSUhPTUU9IiRlbmFibGV2YWwiCitlbHNlCisg
IE1VTFRJSE9NRT0ieWVzIgorCitmaTsKKwogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlYnVn
IG9yIC0tZGlzYWJsZS1kZWJ1ZyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9kZWJ1Zytz
ZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfZGVidWciCkBAIC0xNTEzLDYg
KzE1MjYsMzMgQEAKIAogZmk7CiAKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1pcHY2IG9yIC0t
ZGlzYWJsZS1pcHY2IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2lwdjYrc2V0fSIgPSBz
ZXQ7IHRoZW4KKyAgZW5hYmxldmFsPSIkZW5hYmxlX2lwdjYiCisgIFBGX0lORVQ2PSIkZW5hYmxl
dmFsIgorZWxzZQorICBQRl9JTkVUNj0ieWVzIgorCitmaTsKKworIyBDaGVjayB3aGV0aGVyIC0t
ZW5hYmxlLXVuaXgtc29ja2V0cyBvciAtLWRpc2FibGUtdW5peC1zb2NrZXRzIHdhcyBnaXZlbi4K
K2lmIHRlc3QgIiR7ZW5hYmxlX3VuaXhfc29ja2V0cytzZXR9IiA9IHNldDsgdGhlbgorICBlbmFi
bGV2YWw9IiRlbmFibGVfdW5peF9zb2NrZXRzIgorICBQRl9VTklYPSIkZW5hYmxldmFsIgorZWxz
ZQorICBQRl9VTklYPSJubyIKKworZmk7CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wYXls
b2FkLWNvbm50cmFjayBvciAtLWRpc2FibGUtcGF5bG9hZC1jb25udHJhY2sgd2FzIGdpdmVuLgor
aWYgdGVzdCAiJHtlbmFibGVfcGF5bG9hZF9jb25udHJhY2src2V0fSIgPSBzZXQ7IHRoZW4KKyAg
ZW5hYmxldmFsPSIkZW5hYmxlX3BheWxvYWRfY29ubnRyYWNrIgorICBQQVlMT0FEX0NPTk5UUkFD
Sz0iJGVuYWJsZXZhbCIKK2Vsc2UKKyAgUEFZTE9BRF9DT05OVFJBQ0s9Im5vIgorCitmaTsKKwog
CiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXNzbC1oZWFkZXJzIG9yIC0td2l0aG91dC1zc2wtaGVh
ZGVycyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfc3NsX2hlYWRlcnMrc2V0fSIgPSBzZXQ7
IHRoZW4KQEAgLTE4MjgsNyArMTg2OCw3IEBACiAgIHRlc3QgIiRwcm9ncmFtX3ByZWZpeCRwcm9n
cmFtX3N1ZmZpeCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9IFwKICAgICBOT05FTk9ORXMseCx4
LCAmJgogICBwcm9ncmFtX3ByZWZpeD0ke3RhcmdldF9hbGlhc30tCi1hbV9fYXBpX3ZlcnNpb249
IjEuOCIKK2FtX19hcGlfdmVyc2lvbj0iMS45IgogIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dy
YW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCiAjIHNvIG9uZSBzY3JpcHQgaXMg
YXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3IKICMgaW5jb21wYXRp
YmxlIHZlcnNpb25zOgpAQCAtMTk4MCwxMyArMjAyMCwyMSBAQAogZmkKIAogaWYgbWtkaXIgLXAg
LS12ZXJzaW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhl
bgotICAjIEtlZXBpbmcgdGhlIGAuJyBhcmd1bWVudCBhbGxvd3MgJChta2Rpcl9wKSB0byBiZSB1
c2VkIHdpdGhvdXQKLSAgIyBhcmd1bWVudC4gIEluZGVlZCwgd2Ugc29tZXRpbWVzIG91dHB1dCBy
dWxlcyBsaWtlCisgICMgV2UgdXNlZCB0byBrZWVwaW5nIHRoZSBgLicgYXMgZmlyc3QgYXJndW1l
bnQsIGluIG9yZGVyIHRvCisgICMgYWxsb3cgJChta2Rpcl9wKSB0byBiZSB1c2VkIHdpdGhvdXQg
YXJndW1lbnQuICBBcyBpbgogICAjICAgJChta2Rpcl9wKSAkKHNvbWVkaXIpCi0gICMgd2hlcmUg
JChzb21lZGlyKSBpcyBjb25kaXRpb25hbGx5IGRlZmluZWQuCi0gICMgKGB0ZXN0IC1uICckKHNv
bWVkaXIpJyAmJiAkKG1rZGlyX3ApICQoc29tZWRpciknIGlzIGEgbW9yZQotICAjIGV4cGVuc2l2
ZSBzb2x1dGlvbiwgYXMgaXQgZm9yY2VzIE1ha2UgdG8gc3RhcnQgYSBzdWItc2hlbGwuKQotICBt
a2Rpcl9wPSdta2RpciAtcCAtLSAuJworICAjIHdoZXJlICQoc29tZWRpcikgaXMgY29uZGl0aW9u
YWxseSBkZWZpbmVkLiAgSG93ZXZlciB0aGlzIGlzIHdyb25nCisgICMgZm9yIHR3byByZWFzb25z
OgorICAjICAxLiBpZiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQgYnkgYSB1c2VyIHdobyBjYW5u
b3Qgd3JpdGUgYC4nCisgICMgICAgIG1ha2UgaW5zdGFsbCB3aWxsIGZhaWwsCisgICMgIDIuIHRo
ZSBhYm92ZSBjb21tZW50IHNob3VsZCBtb3N0IGNlcnRhaW5seSByZWFkCisgICMgICAgICQobWtk
aXJfcCkgJChERVNURElSKSQoc29tZWRpcikKKyAgIyAgICAgc28gaXQgZG9lcyBub3Qgd29yayB3
aGVuICQoc29tZWRpcikgaXMgdW5kZWZpbmVkIGFuZAorICAjICAgICAkKERFU1RESVIpIGlzIG5v
dC4KKyAgIyAgVG8gc3VwcG9ydCB0aGUgbGF0dGVyIGNhc2UsIHdlIGhhdmUgdG8gd3JpdGUKKyAg
IyAgICAgdGVzdCAteiAiJChzb21lZGlyKSIgfHwgJChta2Rpcl9wKSAkKERFU1RESVIpJChzb21l
ZGlyKSwKKyAgIyAgc28gdGhlIGAuJyB0cmljayBpcyBwb2ludGxlc3MuCisgIG1rZGlyX3A9J21r
ZGlyIC1wIC0tJwogZWxzZQogICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwgdGhlIGBta2Rp
cicgY29tbWFuZCBkb2VzIG5vdAogICAjIHJlY29nbml6ZSBhbnkgb3B0aW9uLiAgSXQgd2lsbCBp
bnRlcnByZXQgYWxsIG9wdGlvbnMgYXMKQEAgLTIxMzAsOSArMjE3OCw2IEBACiAKIE1BS0VJTkZP
PSR7TUFLRUlORk8tIiR7YW1fbWlzc2luZ19ydW59bWFrZWluZm8ifQogCi0KLUFNVEFSPSR7QU1U
QVItIiR7YW1fbWlzc2luZ19ydW59dGFyIn0KLQogaW5zdGFsbF9zaD0ke2luc3RhbGxfc2gtIiRh
bV9hdXhfZGlyL2luc3RhbGwtc2gifQogCiAjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxs
eSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXIKQEAgLTIyMjUsNiArMjI3MCwx
MyBAQAogCiAjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVt
ICJhd2siIGlzIGJhZCBvbgogIyBzb21lIHBsYXRmb3Jtcy4KKyMgQWx3YXlzIGRlZmluZSBBTVRB
UiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworQU1UQVI9JHtBTVRBUi0iJHthbV9taXNz
aW5nX3J1bn10YXIifQorCithbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFt
X191bnRhcj0nJHtBTVRBUn0geGYgLScKKworCiAKIAogCkBAIC0zMzY4LDkgKzM0MjAsMTQgQEAK
ICAgICAgICBncmVwIHN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfSBzdWIvY29uZnRlc3QuUG8gPiAv
ZGV2L251bGwgMj4mMSAmJgogICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2
L251bGwgMj4mMTsgdGhlbgogICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9w
dGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZSB3YXJuaW5ncwotICAgICAgIyAoZXZlbiB3aXRoIC1X
ZXJyb3IpLiAgU28gd2UgZ3JlcCBzdGRlcnIgZm9yIGFueSBtZXNzYWdlCi0gICAgICAjIHRoYXQg
c2F5cyBhbiBvcHRpb24gd2FzIGlnbm9yZWQuCi0gICAgICBpZiBncmVwICdpZ25vcmluZyBvcHRp
b24nIGNvbmZ0ZXN0LmVyciA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgIyBv
ciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55
IG1lc3NhZ2UKKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qg
c3VwcG9ydGVkLgorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBs
YWluIHRodXNseToKKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmlu
ZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3Np
cyBjaGFuZ2VkIGluIGljYyA4LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJr
OiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9w
dGlvbicgY29uZnRlc3QuZXJyIHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29u
ZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQogICAgICAgICBhbV9jdl9D
Q19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQogICAgICAgICBicmVhawogICAg
ICAgZmkKQEAgLTQ5ODAsNiArNTAzNywyNiBAQAogICAgIGFjX2hlYWRlcl9wcmVwcm9jPXllcwog
ICAgIDs7CiAgIG5vOnllczoqICkKKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H
OiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQorZWNobyAi
JGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGls
ZWQiID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRl
cjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CitlY2hv
ICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVy
ZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FS
TklORzogJGFjX2hlYWRlcjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUKK2Vj
aG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVu
dGF0aW9uIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19o
ZWFkZXI6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4m
NQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiAgICAgc2VjdGlvbiBcIlByZXNl
bnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRM
SU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vz
c29yJ3MgcmVzdWx0IiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJv
Y2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CisgICAgeyBlY2hv
ICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogaW4gdGhlIGZ1dHVyZSwgdGhl
IGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVjZWRlbmNlIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklO
RzogJGFjX2hlYWRlcjogaW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVj
ZWRlbmNlIiA+JjI7fQorICAgICgKKyAgICAgIGNhdCA8PFxfQVNCT1gKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBSZXBvcnQgdGhp
cyB0byBvcGVudnBuLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAjIworIyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKK19BU0JPWAorICAg
ICkgfAorICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAgICAgOzsK
IGVzYWMKIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1
CkBAIC01NzE4LDYgKzU3OTUsNzEgQEAKIAogZmkKIAorZWNobyAiJGFzX21lOiRMSU5FTk86IGNo
ZWNraW5nIGZvciBzdHJ1Y3QgaW5fcGt0aW5mbyIgPiY1CitlY2hvICRFQ0hPX04gImNoZWNraW5n
IGZvciBzdHJ1Y3QgaW5fcGt0aW5mby4uLiAkRUNIT19DIiA+JjYKK2lmIHRlc3QgIiR7YWNfY3Zf
dHlwZV9zdHJ1Y3RfaW5fcGt0aW5mbytzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04g
IihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxf
QUNFT0YKKy8qIGNvbmZkZWZzLmguICAqLworX0FDRU9GCitjYXQgY29uZmRlZnMuaCA+PmNvbmZ0
ZXN0LiRhY19leHQKK2NhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKy8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KKyNpbmNsdWRlICJzeXNoZWFkLmgiCisKK2ludAorbWFpbiAoKQoreworaWYg
KChzdHJ1Y3QgaW5fcGt0aW5mbyAqKSAwKQorICByZXR1cm4gMDsKK2lmIChzaXplb2YgKHN0cnVj
dCBpbl9wa3RpbmZvKSkKKyAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YK
K3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5F
Tk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVz
dC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29u
ZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3QuZXJyID4mNQor
ICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0ICRh
Y19zdGF0dXMpOyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIK
KwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8gIiRhc19tZTok
TElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0
YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Cisg
IChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0
LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwi
IikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgIGVjaG8gIiRh
c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFjX3N0YXR1cyk7
IH07IH07IHRoZW4KKyAgYWNfY3ZfdHlwZV9zdHJ1Y3RfaW5fcGt0aW5mbz15ZXMKK2Vsc2UKKyAg
ZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29u
ZnRlc3QuJGFjX2V4dCA+JjUKKworYWNfY3ZfdHlwZV9zdHJ1Y3RfaW5fcGt0aW5mbz1ubworZmkK
K3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK
K2ZpCitlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfdHlwZV9zdHJ1Y3RfaW5f
cGt0aW5mbyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfdHlwZV9zdHJ1Y3RfaW5fcGt0aW5m
byIgPiY2CitpZiB0ZXN0ICRhY19jdl90eXBlX3N0cnVjdF9pbl9wa3RpbmZvID0geWVzOyB0aGVu
CisKK2NhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCisjZGVmaW5lIEhBVkVfSU5fUEtUSU5GTyAx
CitfQUNFT0YKKworZmkKKwogCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHVu
c2lnbmVkIGludCIgPiY1CiBlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciB1bnNpZ25lZCBpbnQu
Li4gJEVDSE9fQyIgPiY2CkBAIC03MzEzLDYgKzc0NTUsMjYgQEAKICAgICBhY19oZWFkZXJfcHJl
cHJvYz15ZXMKICAgICA7OwogICBubzp5ZXM6KiApCisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVO
TzogV0FSTklORzogJGFjX2hlYWRlcjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+
JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJlc2VudCBidXQgY2Fubm90
IGJlIGNvbXBpbGVkIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6
ICRhY19oZWFkZXI6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8i
ID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiAgICAgY2hlY2sgZm9yIG1p
c3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRM
SU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlv
biIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHNlZSB0aGUgQXV0b2Nv
bmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJO
SU5HOiAkYWNfaGVhZGVyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21w
aWxlZFwiIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogICAgIHNlY3Rp
b24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiYyO30KKyAgICB7IGVjaG8g
IiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhl
IHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19o
ZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQor
ICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IGluIHRoZSBm
dXR1cmUsIHRoZSBjb21waWxlciB3aWxsIHRha2UgcHJlY2VkZW5jZSIgPiY1CitlY2hvICIkYXNf
bWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21waWxlciB3aWxs
IHRha2UgcHJlY2VkZW5jZSIgPiYyO30KKyAgICAoCisgICAgICBjYXQgPDxcX0FTQk9YCisjIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
UmVwb3J0IHRoaXMgdG8gb3BlbnZwbi11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgIyMKKyMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCitf
QVNCT1gKKyAgICApIHwKKyAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4m
MgogICAgIDs7CiBlc2FjCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19o
ZWFkZXIiID4mNQpAQCAtNzcwMSw3ICs3ODYzLDkgQEAKIAogCiAKLWZvciBhY19mdW5jIGluIGRh
ZW1vbiBjaHJvb3QgZ2V0cHduYW0gc2V0dWlkIG5pY2Ugc3lzdGVtIGdldHBpZCBkdXAgZHVwMiAJ
ICAgICAgIGdldHBhc3Mgc3RyZXJyb3Igc3lzbG9nIG9wZW5sb2cgbWxvY2thbGwgZ2V0Z3JuYW0g
c2V0Z2lkIAkgICAgICAgc2V0Z3JvdXBzIHN0YXQgZmxvY2sgcmVhZHYgd3JpdGV2IHNldHNvY2tv
cHQgZ2V0c29ja29wdCAJICAgICAgIHNldHNpZCBjaGRpciBnZXR0aW1lb2ZkYXkgcHV0ZW52IGdl
dHBlZXJuYW1lIHVubGluayAgICAgICAgICAgICAgICBwb2xsIGNoc2l6ZSBmdHJ1bmNhdGUKKwor
Citmb3IgYWNfZnVuYyBpbiBkYWVtb24gY2hyb290IGdldHB3bmFtIHNldHVpZCBuaWNlIHN5c3Rl
bSBnZXRwaWQgZHVwIGR1cDIgCSAgICAgICBnZXRwYXNzIHN0cmVycm9yIHN5c2xvZyBvcGVubG9n
IG1sb2NrYWxsIGdldGdybmFtIHNldGdpZCAJICAgICAgIHNldGdyb3VwcyBzdGF0IGZsb2NrIHJl
YWR2IHdyaXRldiBzZXRzb2Nrb3B0IGdldHNvY2tvcHQgCSAgICAgICBzZXRzaWQgY2hkaXIgZ2V0
dGltZW9mZGF5IHB1dGVudiBnZXRwZWVybmFtZSB1bmxpbmsgICAgICAgICAgICAgICAgcG9sbCBj
aHNpemUgZnRydW5jYXRlIHNlbmRtc2cgcmVjdm1zZwogZG8KIGFzX2FjX3Zhcj1gZWNobyAiYWNf
Y3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hl
Y2tpbmcgZm9yICRhY19mdW5jIiA+JjUKQEAgLTgyODEsNiArODQ0NSwyNiBAQAogICAgIGFjX2hl
YWRlcl9wcmVwcm9jPXllcwogICAgIDs7CiAgIG5vOnllczoqICkKKyAgICB7IGVjaG8gIiRhc19t
ZTokTElORU5POiBXQVJOSU5HOiB2YWxncmluZC9tZW1jaGVjay5oOiBwcmVzZW50IGJ1dCBjYW5u
b3QgYmUgY29tcGlsZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB2YWxncmluZC9tZW1j
aGVjay5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9CisgICAgeyBlY2hv
ICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogdmFsZ3JpbmQvbWVtY2hlY2suaDogICAgIGNoZWNr
IGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CitlY2hvICIkYXNfbWU6IFdB
Uk5JTkc6IHZhbGdyaW5kL21lbWNoZWNrLmg6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1
aXNpdGUgaGVhZGVycz8iID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklO
RzogdmFsZ3JpbmQvbWVtY2hlY2suaDogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+
JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogdmFsZ3JpbmQvbWVtY2hlY2suaDogc2VlIHRoZSBB
dXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86
IFdBUk5JTkc6IHZhbGdyaW5kL21lbWNoZWNrLmg6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQg
Q2Fubm90IEJlIENvbXBpbGVkXCIiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiB2YWxncmlu
ZC9tZW1jaGVjay5oOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxl
ZFwiIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHZhbGdyaW5k
L21lbWNoZWNrLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+
JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogdmFsZ3JpbmQvbWVtY2hlY2suaDogcHJvY2VlZGlu
ZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CisgICAgeyBlY2hvICIkYXNf
bWU6JExJTkVOTzogV0FSTklORzogdmFsZ3JpbmQvbWVtY2hlY2suaDogaW4gdGhlIGZ1dHVyZSwg
dGhlIGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVjZWRlbmNlIiA+JjUKK2VjaG8gIiRhc19tZTogV0FS
TklORzogdmFsZ3JpbmQvbWVtY2hlY2suaDogaW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdp
bGwgdGFrZSBwcmVjZWRlbmNlIiA+JjI7fQorICAgICgKKyAgICAgIGNhdCA8PFxfQVNCT1gKKyMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisj
IyBSZXBvcnQgdGhpcyB0byBvcGVudnBuLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAjIwor
IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK
K19BU0JPWAorICAgICkgfAorICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIg
PiYyCiAgICAgOzsKIGVzYWMKIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgdmFs
Z3JpbmQvbWVtY2hlY2suaCIgPiY1CkBAIC04ODYzLDYgKzkwNDcsMjYgQEAKICAgICBhY19oZWFk
ZXJfcHJlcHJvYz15ZXMKICAgICA7OwogICBubzp5ZXM6KiApCisgICAgeyBlY2hvICIkYXNfbWU6
JExJTkVOTzogV0FSTklORzogZG1hbGxvYy5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGls
ZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkbWFsbG9jLmg6IHByZXNlbnQgYnV0IGNh
bm5vdCBiZSBjb21waWxlZCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJO
SU5HOiBkbWFsbG9jLmg6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVy
cz8iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkbWFsbG9jLmg6ICAgICBjaGVjayBmb3Ig
bWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6
JExJTkVOTzogV0FSTklORzogZG1hbGxvYy5oOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRp
b24iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkbWFsbG9jLmg6IHNlZSB0aGUgQXV0b2Nv
bmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJO
SU5HOiBkbWFsbG9jLmg6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBp
bGVkXCIiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBkbWFsbG9jLmg6ICAgICBzZWN0aW9u
IFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9CisgICAgeyBlY2hvICIk
YXNfbWU6JExJTkVOTzogV0FSTklORzogZG1hbGxvYy5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHBy
ZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IGRtYWxsb2Mu
aDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CisgICAg
eyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogZG1hbGxvYy5oOiBpbiB0aGUgZnV0dXJl
LCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mNQorZWNobyAiJGFzX21lOiBX
QVJOSU5HOiBkbWFsbG9jLmg6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21waWxlciB3aWxsIHRha2Ug
cHJlY2VkZW5jZSIgPiYyO30KKyAgICAoCisgICAgICBjYXQgPDxcX0FTQk9YCisjIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgUmVwb3J0
IHRoaXMgdG8gb3BlbnZwbi11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgIyMKKyMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCitfQVNCT1gK
KyAgICApIHwKKyAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAg
IDs7CiBlc2FjCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGRtYWxsb2MuaCIg
PiY1CkBAIC05MDgyLDYgKzkyODYsMjYgQEAKICAgICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKICAg
ICA7OwogICBubzp5ZXM6KiApCisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzog
ZGxmY24uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKK2VjaG8gIiRhc19t
ZTogV0FSTklORzogZGxmY24uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7
fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IGRsZmNuLmg6ICAgICBjaGVj
ayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQorZWNobyAiJGFzX21lOiBX
QVJOSU5HOiBkbGZjbi5oOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRl
cnM/IiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IGRsZmNuLmg6
IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5J
Tkc6IGRsZmNuLmg6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7
IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBkbGZjbi5oOiAgICAgc2VjdGlvbiBcIlBy
ZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklO
RzogZGxmY24uaDogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRc
IiIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBkbGZjbi5oOiBw
cm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1CitlY2hvICIkYXNf
bWU6IFdBUk5JTkc6IGRsZmNuLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3Mg
cmVzdWx0IiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IGRsZmNu
Lmg6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21waWxlciB3aWxsIHRha2UgcHJlY2VkZW5jZSIgPiY1
CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IGRsZmNuLmg6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21w
aWxlciB3aWxsIHRha2UgcHJlY2VkZW5jZSIgPiYyO30KKyAgICAoCisgICAgICBjYXQgPDxcX0FT
Qk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAjIworIyMgUmVwb3J0IHRoaXMgdG8gb3BlbnZwbi11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5u
ZXQgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICMjCitfQVNCT1gKKyAgICApIHwKKyAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzog
ICAgIC8iID4mMgogICAgIDs7CiBlc2FjCiBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcg
Zm9yIGRsZmNuLmgiID4mNQpAQCAtOTM5Myw2ICs5NjE3LDI2IEBACiAgICAgYWNfaGVhZGVyX3By
ZXByb2M9eWVzCiAgICAgOzsKICAgbm86eWVzOiogKQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5F
Tk86IFdBUk5JTkc6IGx6bzF4Lmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1
CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IGx6bzF4Lmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBj
b21waWxlZCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBsem8x
eC5oOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKK2Vj
aG8gIiRhc19tZTogV0FSTklORzogbHpvMXguaDogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJl
cXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJO
SU5HOiBsem8xeC5oOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mNQorZWNobyAi
JGFzX21lOiBXQVJOSU5HOiBsem8xeC5oOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24i
ID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbHpvMXguaDogICAg
IHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiY1CitlY2hvICIk
YXNfbWU6IFdBUk5JTkc6IGx6bzF4Lmg6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90
IEJlIENvbXBpbGVkXCIiID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklO
RzogbHpvMXguaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4m
NQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBsem8xeC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHBy
ZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBX
QVJOSU5HOiBsem8xeC5oOiBpbiB0aGUgZnV0dXJlLCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHBy
ZWNlZGVuY2UiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBsem8xeC5oOiBpbiB0aGUgZnV0
dXJlLCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mMjt9CisgICAgKAorICAg
ICAgY2F0IDw8XF9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJlcG9ydCB0aGlzIHRvIG9wZW52cG4tdXNlcnNAbGlzdHMu
c291cmNlZm9yZ2UubmV0ICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAjIworX0FTQk9YCisgICAgKSB8CisgICAgICBzZWQgInMvXi8kYXNf
bWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKICAgICA7OwogZXNhYwogZWNobyAiJGFzX21lOiRMSU5F
Tk86IGNoZWNraW5nIGZvciBsem8xeC5oIiA+JjUKQEAgLTk2MTMsNiArOTg1NywyNiBAQAogICAg
IGFjX2hlYWRlcl9wcmVwcm9jPXllcwogICAgIDs7CiAgIG5vOnllczoqICkKKyAgICB7IGVjaG8g
IiRhc19tZTokTElORU5POiBXQVJOSU5HOiBvcGVuc3NsL2V2cC5oOiBwcmVzZW50IGJ1dCBjYW5u
b3QgYmUgY29tcGlsZWQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBvcGVuc3NsL2V2cC5o
OiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9CisgICAgeyBlY2hvICIkYXNf
bWU6JExJTkVOTzogV0FSTklORzogb3BlbnNzbC9ldnAuaDogICAgIGNoZWNrIGZvciBtaXNzaW5n
IHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG9wZW5z
c2wvZXZwLmg6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4m
Mjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogb3BlbnNzbC9ldnAuaDog
c2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklO
Rzogb3BlbnNzbC9ldnAuaDogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7fQor
ICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG9wZW5zc2wvZXZwLmg6ICAgICBz
ZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mNQorZWNobyAiJGFz
X21lOiBXQVJOSU5HOiBvcGVuc3NsL2V2cC5oOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENh
bm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdB
Uk5JTkc6IG9wZW5zc2wvZXZwLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3Mg
cmVzdWx0IiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogb3BlbnNzbC9ldnAuaDogcHJvY2Vl
ZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9CisgICAgeyBlY2hvICIk
YXNfbWU6JExJTkVOTzogV0FSTklORzogb3BlbnNzbC9ldnAuaDogaW4gdGhlIGZ1dHVyZSwgdGhl
IGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVjZWRlbmNlIiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklO
Rzogb3BlbnNzbC9ldnAuaDogaW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdpbGwgdGFrZSBw
cmVjZWRlbmNlIiA+JjI7fQorICAgICgKKyAgICAgIGNhdCA8PFxfQVNCT1gKKyMjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBSZXBvcnQg
dGhpcyB0byBvcGVudnBuLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAjIworIyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKK19BU0JPWAor
ICAgICkgfAorICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAgICAg
OzsKIGVzYWMKIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igb3BlbnNzbC9ldnAu
aCIgPiY1CkBAIC05OTMwLDYgKzEwMTk0LDI2IEBACiAgICAgYWNfaGVhZGVyX3ByZXByb2M9eWVz
CiAgICAgOzsKICAgbm86eWVzOiogKQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5J
Tkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1CitlY2hv
ICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21w
aWxlZCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVh
ZGVyOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKK2Vj
aG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHBy
ZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBX
QVJOSU5HOiAkYWNfaGVhZGVyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mNQor
ZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3Vt
ZW50YXRpb24iID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFj
X2hlYWRlcjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIg
PiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6ICAgICBzZWN0aW9uIFwiUHJl
c2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6
JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9j
ZXNzb3IncyByZXN1bHQiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBw
cm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KKyAgICB7IGVj
aG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBpbiB0aGUgZnV0dXJlLCB0
aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mNQorZWNobyAiJGFzX21lOiBXQVJO
SU5HOiAkYWNfaGVhZGVyOiBpbiB0aGUgZnV0dXJlLCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHBy
ZWNlZGVuY2UiID4mMjt9CisgICAgKAorICAgICAgY2F0IDw8XF9BU0JPWAorIyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJlcG9ydCB0
aGlzIHRvIG9wZW52cG4tdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0ICMjCisjIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworX0FTQk9YCisg
ICAgKSB8CisgICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKICAgICA7
OwogZXNhYwogZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+
JjUKQEAgLTEwMzkyLDYgKzEwNjc2LDI2IEBACiAgICAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCiAg
ICAgOzsKICAgbm86eWVzOiogKQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6
IG9wZW5zc2wvc3NsLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1CitlY2hv
ICIkYXNfbWU6IFdBUk5JTkc6IG9wZW5zc2wvc3NsLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBj
b21waWxlZCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBvcGVu
c3NsL3NzbC5oOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+
JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogb3BlbnNzbC9zc2wuaDogICAgIGNoZWNrIGZvciBt
aXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTok
TElORU5POiBXQVJOSU5HOiBvcGVuc3NsL3NzbC5oOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50
YXRpb24iID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBvcGVuc3NsL3NzbC5oOiBzZWUgdGhl
IEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVO
TzogV0FSTklORzogb3BlbnNzbC9zc2wuaDogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5u
b3QgQmUgQ29tcGlsZWRcIiIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG9wZW5zc2wvc3Ns
Lmg6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9
CisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogb3BlbnNzbC9zc2wuaDogcHJv
Y2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQorZWNobyAiJGFzX21l
OiBXQVJOSU5HOiBvcGVuc3NsL3NzbC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3Nv
cidzIHJlc3VsdCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBv
cGVuc3NsL3NzbC5oOiBpbiB0aGUgZnV0dXJlLCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNl
ZGVuY2UiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBvcGVuc3NsL3NzbC5oOiBpbiB0aGUg
ZnV0dXJlLCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mMjt9CisgICAgKAor
ICAgICAgY2F0IDw8XF9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJlcG9ydCB0aGlzIHRvIG9wZW52cG4tdXNlcnNAbGlz
dHMuc291cmNlZm9yZ2UubmV0ICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAjIworX0FTQk9YCisgICAgKSB8CisgICAgICBzZWQgInMvXi8k
YXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKICAgICA7OwogZXNhYwogZWNobyAiJGFzX21lOiRM
SU5FTk86IGNoZWNraW5nIGZvciBvcGVuc3NsL3NzbC5oIiA+JjUKQEAgLTEwNTg0LDYgKzEwODg4
LDI0MCBAQAogICAgZmkKIGZpCiAKK2lmIHRlc3QgIiRQRl9VTklYIiA9ICJ5ZXMiOyB0aGVuCisg
ICB7IGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3lzL3VuLmggaGVhZGVyIGZp
bGUgZm9yIFBGX1VOSVguLi4iID4mNQorZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3Igc3lzL3Vu
LmggaGVhZGVyIGZpbGUgZm9yIFBGX1VOSVguLi4iID4mNjt9CisgICBpZiB0ZXN0ICIke2FjX2N2
X2hlYWRlcl9zeXNfdW5faCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICIkYXNfbWU6JExJTkVO
TzogY2hlY2tpbmcgZm9yIHN5cy91bi5oIiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9y
IHN5cy91bi5oLi4uICRFQ0hPX0MiID4mNgoraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX3Vu
X2grc2V0fSIgPSBzZXQ7IHRoZW4KKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+
JjYKK2ZpCitlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N5c191
bl9oIiA+JjUKK2VjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3lzX3VuX2giID4mNgorZWxz
ZQorICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KK2VjaG8gIiRhc19tZTokTElORU5POiBj
aGVja2luZyBzeXMvdW4uaCB1c2FiaWxpdHkiID4mNQorZWNobyAkRUNIT19OICJjaGVja2luZyBz
eXMvdW4uaCB1c2FiaWxpdHkuLi4gJEVDSE9fQyIgPiY2CitjYXQgPmNvbmZ0ZXN0LiRhY19leHQg
PDxfQUNFT0YKKy8qIGNvbmZkZWZzLmguICAqLworX0FDRU9GCitjYXQgY29uZmRlZnMuaCA+PmNv
bmZ0ZXN0LiRhY19leHQKK2NhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKy8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisjaW5jbHVkZSA8c3lzL3VuLmg+
CitfQUNFT0YKK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKK2lmIHsgKGV2YWwgZWNobyAiJGFz
X21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQorICAoZXZhbCAkYWNfY29tcGlsZSkg
Mj5jb25mdGVzdC5lcjEKKyAgYWNfc3RhdHVzPSQ/CisgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0
LmVyMSA+Y29uZnRlc3QuZXJyCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICBjYXQgY29uZnRlc3Qu
ZXJyID4mNQorICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Cisg
IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJy
b3JfZmxhZyIKKwkJCSB8fCB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyJworICB7IChldmFsIGVjaG8g
IiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1
CisgIGFjX3N0YXR1cz0kPworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1
cyIgPiY1CisgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCisJIHsgYWNfdHJ5PSd0ZXN0IC1z
IGNvbmZ0ZXN0LiRhY19vYmpleHQnCisgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwi
JGFjX3RyeVwiIikgPiY1CisgIChldmFsICRhY190cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/Cisg
IGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgKGV4aXQgJGFj
X3N0YXR1cyk7IH07IH07IHRoZW4KKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcworZWxzZQorICBl
Y2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25m
dGVzdC4kYWNfZXh0ID4mNQorCithY19oZWFkZXJfY29tcGlsZXI9bm8KK2ZpCitybSAtZiBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitlY2hvICIkYXNf
bWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKK2VjaG8gIiR7RUNI
T19UfSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgorCisjIElzIHRoZSBoZWFkZXIgcHJlc2VudD8K
K2VjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBzeXMvdW4uaCBwcmVzZW5jZSIgPiY1Citl
Y2hvICRFQ0hPX04gImNoZWNraW5nIHN5cy91bi5oIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgor
Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCisvKiBjb25mZGVmcy5oLiAgKi8KK19BQ0VP
RgorY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CitjYXQgPj5jb25mdGVzdC4kYWNf
ZXh0IDw8X0FDRU9GCisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3VuLmg+
CitfQUNFT0YKK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25m
dGVzdC4kYWNfZXh0XCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAy
PmNvbmZ0ZXN0LmVyMQorICBhY19zdGF0dXM9JD8KKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qu
ZXIxID5jb25mdGVzdC5lcnIKKyAgcm0gLWYgY29uZnRlc3QuZXIxCisgIGNhdCBjb25mdGVzdC5l
cnIgPiY1CisgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAg
KGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICBpZiB0ZXN0IC1zIGNvbmZ0
ZXN0LmVycjsgdGhlbgorICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKKyAg
ICBhY19jcHBfZXJyPSRhY19jcHBfZXJyJGFjX2Nfd2Vycm9yX2ZsYWcKKyAgZWxzZQorICAgIGFj
X2NwcF9lcnI9CisgIGZpCitlbHNlCisgIGFjX2NwcF9lcnI9eWVzCitmaQoraWYgdGVzdCAteiAi
JGFjX2NwcF9lcnIiOyB0aGVuCisgIGFjX2hlYWRlcl9wcmVwcm9jPXllcworZWxzZQorICBlY2hv
ICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVz
dC4kYWNfZXh0ID4mNQorCisgIGFjX2hlYWRlcl9wcmVwcm9jPW5vCitmaQorcm0gLWYgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2VjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRh
Y19oZWFkZXJfcHJlcHJvYyIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX3ByZXByb2Mi
ID4mNgorCisjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9j
b21waWxlcjokYWNfaGVhZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4KKyAg
eWVzOm5vOiApCisgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3VuLmg6
IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEi
ID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvdW4uaDogYWNjZXB0ZWQgYnkgdGhlIGNv
bXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KKyAgICB7IGVjaG8g
IiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvdW4uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBj
b21waWxlcidzIHJlc3VsdCIgPiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy91bi5oOiBw
cm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjI7fQorICAgIGFjX2hlYWRl
cl9wcmVwcm9jPXllcworICAgIDs7CisgIG5vOnllczoqICkKKyAgICB7IGVjaG8gIiRhc19tZTok
TElORU5POiBXQVJOSU5HOiBzeXMvdW4uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVk
IiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogc3lzL3VuLmg6IHByZXNlbnQgYnV0IGNhbm5v
dCBiZSBjb21waWxlZCIgPiYyO30KKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H
OiBzeXMvdW4uaDogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIg
PiY1CitlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy91bi5oOiAgICAgY2hlY2sgZm9yIG1pc3Np
bmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5F
Tk86IFdBUk5JTkc6IHN5cy91bi5oOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4m
NQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvdW4uaDogc2VlIHRoZSBBdXRvY29uZiBkb2N1
bWVudGF0aW9uIiA+JjI7fQorICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHN5
cy91bi5oOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+
JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogc3lzL3VuLmg6ICAgICBzZWN0aW9uIFwiUHJlc2Vu
dCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9CisgICAgeyBlY2hvICIkYXNfbWU6JExJ
TkVOTzogV0FSTklORzogc3lzL3VuLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29y
J3MgcmVzdWx0IiA+JjUKK2VjaG8gIiRhc19tZTogV0FSTklORzogc3lzL3VuLmg6IHByb2NlZWRp
bmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQorICAgIHsgZWNobyAiJGFz
X21lOiRMSU5FTk86IFdBUk5JTkc6IHN5cy91bi5oOiBpbiB0aGUgZnV0dXJlLCB0aGUgY29tcGls
ZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mNQorZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMv
dW4uaDogaW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVjZWRlbmNlIiA+
JjI7fQorICAgICgKKyAgICAgIGNhdCA8PFxfQVNCT1gKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBSZXBvcnQgdGhpcyB0byBvcGVu
dnBuLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKK19BU0JPWAorICAgICkgfAorICAg
ICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCisgICAgOzsKK2VzYWMKK2Vj
aG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3lzL3VuLmgiID4mNQorZWNobyAkRUNI
T19OICJjaGVja2luZyBmb3Igc3lzL3VuLmguLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIke2Fj
X2N2X2hlYWRlcl9zeXNfdW5faCtzZXR9IiA9IHNldDsgdGhlbgorICBlY2hvICRFQ0hPX04gIihj
YWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBhY19jdl9oZWFkZXJfc3lzX3VuX2g9JGFjX2hl
YWRlcl9wcmVwcm9jCitmaQorZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hl
YWRlcl9zeXNfdW5faCIgPiY1CitlY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c191bl9o
IiA+JjYKKworZmkKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfdW5faCA9IHllczsgdGhlbgor
CitjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgorI2RlZmluZSBVU0VfUEZfVU5JWCAxCitfQUNF
T0YKKworZWxzZQorICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBzeXMvdW4uaCBo
ZWFkZXIgbm90IGZvdW5kLiIgPiY1CitlY2hvICIkYXNfbWU6IGVycm9yOiBzeXMvdW4uaCBoZWFk
ZXIgbm90IGZvdW5kLiIgPiYyO30KKyAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQorCitmaQor
CisKK2ZpCisKK2lmIHRlc3QgIiRQRl9JTkVUNiIgPSAieWVzIjsgdGhlbgorICB7IGVjaG8gIiRh
c19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3RydWN0IHNvY2thZGRyX2luNiBmb3IgSVB2NiBz
dXBwb3J0Li4uIiA+JjUKK2VjaG8gIiRhc19tZTogY2hlY2tpbmcgZm9yIHN0cnVjdCBzb2NrYWRk
cl9pbjYgZm9yIElQdjYgc3VwcG9ydC4uLiIgPiY2O30KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86
IGNoZWNraW5nIGZvciBzdHJ1Y3Qgc29ja2FkZHJfaW42IiA+JjUKK2VjaG8gJEVDSE9fTiAiY2hl
Y2tpbmcgZm9yIHN0cnVjdCBzb2NrYWRkcl9pbjYuLi4gJEVDSE9fQyIgPiY2CitpZiB0ZXN0ICIk
e2FjX2N2X3R5cGVfc3RydWN0X3NvY2thZGRyX2luNitzZXR9IiA9IHNldDsgdGhlbgorICBlY2hv
ICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0LiRh
Y19leHQgPDxfQUNFT0YKKy8qIGNvbmZkZWZzLmguICAqLworX0FDRU9GCitjYXQgY29uZmRlZnMu
aCA+PmNvbmZ0ZXN0LiRhY19leHQKK2NhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKy8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlICJzeXNoZWFkLmgiCisKK2ludAorbWFpbiAo
KQoreworaWYgKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopIDApCisgIHJldHVybiAwOworaWYgKHNp
emVvZiAoc3RydWN0IHNvY2thZGRyX2luNikpCisgIHJldHVybiAwOworICA7CisgIHJldHVybiAw
OworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0CitpZiB7IChldmFsIGVjaG8g
IiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBp
bGUpIDI+Y29uZnRlc3QuZXIxCisgIGFjX3N0YXR1cz0kPworICBncmVwIC12ICdeICorJyBjb25m
dGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICBybSAtZiBjb25mdGVzdC5lcjEKKyAgY2F0IGNvbmZ0
ZXN0LmVyciA+JjUKKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4m
NQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgorCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nf
d2Vycm9yX2ZsYWciCisJCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgeyAoZXZhbCBl
Y2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgKGV2YWwgJGFjX3RyeSkg
Mj4mNQorICBhY19zdGF0dXM9JD8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z
dGF0dXMiID4mNQorICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgorCSB7IGFjX3RyeT0ndGVz
dCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JworICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5P
OiBcIiRhY190cnlcIiIpID4mNQorICAoZXZhbCAkYWNfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0k
PworICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIChleGl0
ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCisgIGFjX2N2X3R5cGVfc3RydWN0X3NvY2thZGRyX2lu
Nj15ZXMKK2Vsc2UKKyAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3Nl
ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworYWNfY3ZfdHlwZV9zdHJ1Y3Rfc29j
a2FkZHJfaW42PW5vCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg
Y29uZnRlc3QuJGFjX2V4dAorZmkKK2VjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19j
dl90eXBlX3N0cnVjdF9zb2NrYWRkcl9pbjYiID4mNQorZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3R5
cGVfc3RydWN0X3NvY2thZGRyX2luNiIgPiY2CitpZiB0ZXN0ICRhY19jdl90eXBlX3N0cnVjdF9z
b2NrYWRkcl9pbjYgPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKKyNk
ZWZpbmUgVVNFX1BGX0lORVQ2IDEKK19BQ0VPRgorCitmaQorCitmaQorCitpZiB0ZXN0ICIkUEFZ
TE9BRF9DT05OVFJBQ0siID0gInllcyI7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNF
T0YKKyNkZWZpbmUgVVNFX1BBWUxPQURfQ09OTlRSQUNLIDEKK19BQ0VPRgorCitmaQorCiBpZiB0
ZXN0ICIkTVVMVEkiID0gInllcyI7IHRoZW4KIAogY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YK
QEAgLTEwNjI0LDYgKzExMTYyLDE0IEBACiAKIGZpCiAKK2lmIHRlc3QgIiRNVUxUSUhPTUUiID0g
InllcyI7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKKyNkZWZpbmUgRU5BQkxF
X01VTFRJSE9NRSAxCitfQUNFT0YKKworZmkKKwogaWYgdGVzdCAiJERFQlVHIiA9ICJ5ZXMiOyB0
aGVuCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCkBAIC0xMTMzOSw3ICsxMTg4NSw2IEBA
CiBzLEBBVVRPTUFLRUAsJEFVVE9NQUtFLDt0IHQKIHMsQEFVVE9IRUFERVJALCRBVVRPSEVBREVS
LDt0IHQKIHMsQE1BS0VJTkZPQCwkTUFLRUlORk8sO3QgdAotcyxAQU1UQVJALCRBTVRBUiw7dCB0
CiBzLEBpbnN0YWxsX3NoQCwkaW5zdGFsbF9zaCw7dCB0CiBzLEBTVFJJUEAsJFNUUklQLDt0IHQK
IHMsQGFjX2N0X1NUUklQQCwkYWNfY3RfU1RSSVAsO3QgdApAQCAtMTEzNDgsNiArMTE4OTMsOSBA
QAogcyxAQVdLQCwkQVdLLDt0IHQKIHMsQFNFVF9NQUtFQCwkU0VUX01BS0UsO3QgdAogcyxAYW1f
X2xlYWRpbmdfZG90QCwkYW1fX2xlYWRpbmdfZG90LDt0IHQKK3MsQEFNVEFSQCwkQU1UQVIsO3Qg
dAorcyxAYW1fX3RhckAsJGFtX190YXIsO3QgdAorcyxAYW1fX3VudGFyQCwkYW1fX3VudGFyLDt0
IHQKIHMsQENDQCwkQ0MsO3QgdAogcyxAQ0ZMQUdTQCwkQ0ZMQUdTLDt0IHQKIHMsQExERkxBR1NA
LCRMREZMQUdTLDt0IHQKQEAgLTExOTkzLDI3ICsxMjU0MSwyMSBAQAogICBlbHNlCiAgICAgY29u
dGludWUKICAgZmkKLSAgZ3JlcCAnXkRFUF9GSUxFUyAqPSAqW14gI10nIDwgIiRtZiIgPiAvZGV2
L251bGwgfHwgY29udGludWUKLSAgIyBFeHRyYWN0IHRoZSBkZWZpbml0aW9uIG9mIERFUF9GSUxF
UyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0Ci0gICMgcnVubmluZyBgbWFrZScuCisgICMgRXh0
cmFjdCB0aGUgZGVmaW5pdGlvbiBvZiBERVBESVIsIGFtX19pbmNsdWRlLCBhbmQgYW1fX3F1b3Rl
CisgICMgZnJvbSB0aGUgTWFrZWZpbGUgd2l0aG91dCBydW5uaW5nIGBtYWtlJy4KICAgREVQRElS
PWBzZWQgLW4gJ3MvXkRFUERJUiA9IC8vcCcgPCAiJG1mImAKICAgdGVzdCAteiAiJERFUERJUiIg
JiYgY29udGludWUKKyAgYW1fX2luY2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUgPSAvL3An
IDwgIiRtZiJgCisgIHRlc3QgLXogImFtX19pbmNsdWRlIiAmJiBjb250aW51ZQorICBhbV9fcXVv
dGU9YHNlZCAtbiAncy9eYW1fX3F1b3RlID0gLy9wJyA8ICIkbWYiYAogICAjIFdoZW4gdXNpbmcg
YW5zaTJrbnIsIFUgbWF5IGJlIGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4cGFuZCBpdAogICBV
PWBzZWQgLW4gJ3MvXlUgPSAvL3AnIDwgIiRtZiJgCi0gIHRlc3QgLWQgIiRkaXJwYXJ0LyRERVBE
SVIiIHx8IG1rZGlyICIkZGlycGFydC8kREVQRElSIgotICAjIFdlIGludm9rZSBzZWQgdHdpY2Ug
YmVjYXVzZSBpdCBpcyB0aGUgc2ltcGxlc3QgYXBwcm9hY2ggdG8KLSAgIyBjaGFuZ2luZyAkKERF
UERJUikgdG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUgZXhwYW5zaW9uLgotICBmb3IgZmlsZSBp
biBgc2VkIC1uICcKLSAgICAvXkRFUF9GSUxFUyA9IC4qXFxcXCQvIHsKLSAgICAgIHMvXkRFUF9G
SUxFUyA9IC8vCi0gICAgICA6bG9vcAotCXMvXFxcXCQvLwotCXAKLQluCi0JL1xcXFwkLyBiIGxv
b3AKLSAgICAgIHAKLSAgICB9Ci0gICAgL15ERVBfRklMRVMgPSAvIHMvXkRFUF9GSUxFUyA9IC8v
cCcgPCAiJG1mIiB8IFwKKyAgIyBGaW5kIGFsbCBkZXBlbmRlbmN5IG91dHB1dCBmaWxlcywgdGhl
eSBhcmUgaW5jbHVkZWQgZmlsZXMgd2l0aAorICAjICQoREVQRElSKSBpbiB0aGVpciBuYW1lcy4g
IFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBpcyB0aGUKKyAgIyBzaW1wbGVzdCBhcHBy
b2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikgdG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUKKyAg
IyBleHBhbnNpb24uCisgIGZvciBmaWxlIGluIGBzZWQgLW4gIgorICAgIHMvXiRhbV9faW5jbHVk
ZSAkYW1fX3F1b3RlXCguKihERVBESVIpLipcKSRhbV9fcXVvdGUiJyQvXDEvcCcgPCIkbWYiIHwg
XAogICAgICAgIHNlZCAtZSAncy9cJChERVBESVIpLyciJERFUERJUiInL2cnIC1lICdzL1wkVS8n
IiRVIicvZydgOyBkbwogICAgICMgTWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLgogICAg
IHRlc3QgLWYgIiRkaXJwYXJ0LyRmaWxlIiAmJiBjb250aW51ZQpkaWZmIC11IG9wZW52cG4tMi9j
b25maWd1cmUuYWM6MS40IG9wZW52cG4tMi9jb25maWd1cmUuYWM6MS40LjQuMQotLS0gY29uZmln
dXJlLmFjOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUwIDIwMDUKKysrIGNvbmZpZ3VyZS5hYwlNb24g
TWF5ICAyIDEwOjMzOjQ5IDIwMDUKQEAgLTg5LDYgKzg5LDEyIEBACiAgICBbRlJBR01FTlQ9Inll
cyJdCiApCiAKK0FDX0FSR19FTkFCTEUobXVsdGlob21lLAorICAgWyAgLS1kaXNhYmxlLW11bHRp
aG9tZSAgICAgRGlzYWJsZSBtdWx0aS1ob21lZCBVRFAgc2VydmVyIHN1cHBvcnQgKC0tbXVsdGlo
b21lKV0sCisgICBbTVVMVElIT01FPSIkZW5hYmxldmFsIl0sCisgICBbTVVMVElIT01FPSJ5ZXMi
XQorKQorCiBBQ19BUkdfRU5BQkxFKGRlYnVnLAogICAgWyAgLS1kaXNhYmxlLWRlYnVnICAgICAg
ICAgRGlzYWJsZSBkZWJ1Z2dpbmcgc3VwcG9ydCAoZGlzYWJsZSBncmVtbGluIGFuZCB2ZXJiIDcr
IG1lc3NhZ2VzKV0sCiAgICBbREVCVUc9IiRlbmFibGV2YWwiXSwKQEAgLTEzNiw2ICsxNDIsMjQg
QEAKICAgIFtTVFJJQ1RfT1BUSU9OUz0ibm8iXQogKQogCitBQ19BUkdfRU5BQkxFKGlwdjYsCisg
ICBbICAtLWRpc2FibGUtaXB2NiAgICAgICAgICBEaXNhYmxlIFVEUC9JUHY2IHN1cHBvcnRdLAor
ICAgW1BGX0lORVQ2PSIkZW5hYmxldmFsIl0sCisgICBbUEZfSU5FVDY9InllcyJdCispCisKK0FD
X0FSR19FTkFCTEUodW5peC1zb2NrZXRzLAorICAgWyAgLS1lbmFibGUtdW5peC1zb2NrZXRzICAg
RW5hYmxlIFBGX1VOSVggc29ja2V0cyBsaW5rc10sCisgICBbUEZfVU5JWD0iJGVuYWJsZXZhbCJd
LAorICAgW1BGX1VOSVg9Im5vIl0KKykKKworQUNfQVJHX0VOQUJMRShwYXlsb2FkLWNvbm50cmFj
aywKKyAgIFsgIC0tZW5hYmxlLXBheWxvYWQtY29ubnRyYWNrICAgRW5hYmxlIHBheWxvYWQgY29u
bnRyYWNrIGZvciBlZy4gVENQIHJldHJhbnMuIGRkIGZvciByZWxpYWJsZSBsaW5rc10sCisgICBb
UEFZTE9BRF9DT05OVFJBQ0s9IiRlbmFibGV2YWwiXSwKKyAgIFtQQVlMT0FEX0NPTk5UUkFDSz0i
bm8iXQorKQorCiBBQ19BUkdfV0lUSChzc2wtaGVhZGVycywKICAgIFsgIC0td2l0aC1zc2wtaGVh
ZGVycz1ESVIgIENyeXB0by9TU0wgSW5jbHVkZSBmaWxlcyBsb2NhdGlvbl0sCiAgICBbQ1NfSERS
X0RJUj0iJHdpdGh2YWwiXQpAQCAtMzI2LDYgKzM1MCwxMSBAQAogCVtBQ19ERUZJTkUoSEFWRV9D
TVNHSERSLCAxLCBbc3RydWN0IGNtc2doZHIgbmVlZGVkIGZvciBleHRlbmRlZCBzb2NrZXQgZXJy
b3Igc3VwcG9ydF0pXSwKIAlbXSwKIAlbI2luY2x1ZGUgInN5c2hlYWQuaCJdKQorQUNfQ0hFQ0tf
VFlQRSgKKwlbc3RydWN0IGluX3BrdGluZm9dLAorCVtBQ19ERUZJTkUoSEFWRV9JTl9QS1RJTkZP
LCAxLCBbc3RydWN0IGluX3BrdGluZm8gbmVlZGVkIGZvciBJUF9QS1RJTkZPIHN1cHBvcnRdKV0s
CisJW10sCisJWyNpbmNsdWRlICJzeXNoZWFkLmgiXSkKIAogQUNfQ0hFQ0tfU0laRU9GKHVuc2ln
bmVkIGludCkKIEFDX0NIRUNLX1NJWkVPRih1bnNpZ25lZCBsb25nKQpAQCAtMzUxLDcgKzM4MCw3
IEBACiAJICAgICAgIGdldHBhc3Mgc3RyZXJyb3Igc3lzbG9nIG9wZW5sb2cgbWxvY2thbGwgZ2V0
Z3JuYW0gc2V0Z2lkIGRubAogCSAgICAgICBzZXRncm91cHMgc3RhdCBmbG9jayByZWFkdiB3cml0
ZXYgc2V0c29ja29wdCBnZXRzb2Nrb3B0IGRubAogCSAgICAgICBzZXRzaWQgY2hkaXIgZ2V0dGlt
ZW9mZGF5IHB1dGVudiBnZXRwZWVybmFtZSB1bmxpbmsgZG5sCi0gICAgICAgICAgICAgICBwb2xs
IGNoc2l6ZSBmdHJ1bmNhdGUpCisgICAgICAgICAgICAgICBwb2xsIGNoc2l6ZSBmdHJ1bmNhdGUg
c2VuZG1zZyByZWN2bXNnKQogQUNfQ0FDSEVfU0FWRQogCiBkbmwgUmVxdWlyZWQgbGlicmFyeSBm
dW5jdGlvbnMKQEAgLTU0Myw2ICs1NzIsMjggQEAKICAgIGZpCiBmaQogCitpZiB0ZXN0ICIkUEZf
VU5JWCIgPSAieWVzIjsgdGhlbgorICAgQUNfQ0hFQ0tJTkcoW2ZvciBzeXMvdW4uaCBoZWFkZXIg
ZmlsZSBmb3IgUEZfVU5JWF0pCisgICBBQ19DSEVDS19IRUFERVIoc3lzL3VuLmgsIAorCVtBQ19E
RUZJTkUoVVNFX1BGX1VOSVgsIDEsIFtDb21waWxlIHN1cHBvcnQgZm9yIFBGX1VOSVggc29ja2V0
c10pXSwKKyAgICAgICAgW0FDX01TR19FUlJPUihbc3lzL3VuLmggaGVhZGVyIG5vdCBmb3VuZC5d
KV0KKyAgICkKK2ZpCisKK2lmIHRlc3QgIiRQRl9JTkVUNiIgPSAieWVzIjsgdGhlbgorICBBQ19D
SEVDS0lORyhbZm9yIHN0cnVjdCBzb2NrYWRkcl9pbjYgZm9yIElQdjYgc3VwcG9ydF0pCisgIEFD
X0NIRUNLX1RZUEUoCisgICAgICBbc3RydWN0IHNvY2thZGRyX2luNl0sCisgICAgICBbQUNfREVG
SU5FKFVTRV9QRl9JTkVUNiwgMSwgW3N0cnVjdCBzb2NrYWRkcl9pbjYgaXMgbmVlZGVkIGZvciBJ
UHY2IHBlZXIgc3VwcG9ydF0pXSwKKyAgICAgIFtdLAorICAgICAgWyNpbmNsdWRlICJzeXNoZWFk
LmgiXSkKK2ZpCisKK2RubCBlbmFibGUgcGF5bG9hZC1jb25udHJhY2sgb3B0aW1pemF0aW9ucwor
aWYgdGVzdCAiJFBBWUxPQURfQ09OTlRSQUNLIiA9ICJ5ZXMiOyB0aGVuCisgICBBQ19ERUZJTkUo
VVNFX1BBWUxPQURfQ09OTlRSQUNLLCAxLCBbRW5hYmxlIHBheWxvYWQgY29ubnRyYWNrXSkKK2Zp
CisKIGRubCBlbmFibGUgbXVsdGktY2xpZW50IG1vZGUKIGlmIHRlc3QgIiRNVUxUSSIgPSAieWVz
IjsgdGhlbgogICAgQUNfREVGSU5FKEVOQUJMRV9DTElFTlRfU0VSVkVSLCAxLCBbRW5hYmxlIGNs
aWVudC9zZXJ2ZXIgY2FwYWJpbGl0eV0pCkBAIC01NjgsNiArNjE5LDExIEBACiAgICBBQ19ERUZJ
TkUoRU5BQkxFX0hUVFBfUFJPWFksIDEsIFtFbmFibGUgSFRUUCBwcm94eSBzdXBwb3J0XSkKIGZp
CiAKK2RubCBjb21waWxlIC0tbXVsdGlob21lIG9wdGlvbgoraWYgdGVzdCAiJE1VTFRJSE9NRSIg
PSAieWVzIjsgdGhlbgorICAgQUNfREVGSU5FKEVOQUJMRV9NVUxUSUhPTUUsIDEsIFtFbmFibGUg
bXVsdGktaG9tZWQgVURQIHNlcnZlciBjYXBhYmlsaXR5XSkKK2ZpCisKIGRubCBlbmFibGUgZGVi
dWdnaW5nCiBpZiB0ZXN0ICIkREVCVUciID0gInllcyI7IHRoZW4KICAgIEFDX0RFRklORShFTkFC
TEVfREVCVUcsIDEsIFtFbmFibGUgZGVidWdnaW5nIHN1cHBvcnRdKQpkaWZmIC11IG9wZW52cG4t
Mi9lcnJsZXZlbC5oOjEuNCBvcGVudnBuLTIvZXJybGV2ZWwuaDoxLjQuNi4yCi0tLSBlcnJsZXZl
bC5oOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUwIDIwMDUKKysrIGVycmxldmVsLmgJV2VkIEp1biAg
MSAwOTo1OToxMyAyMDA1CkBAIC0xNDksNiArMTQ5LDEwIEBACiAjZGVmaW5lIERfU1RSRUFNX0RF
QlVHICAgICAgIExPR0xFVig5LCA3MCwgTV9ERUJVRykgIC8qIHNob3cgVENQIHN0cmVhbSBkZWJ1
ZyBpbmZvICovCiAjZGVmaW5lIERfV0lOMzJfSU8gICAgICAgICAgIExPR0xFVig5LCA3MCwgTV9E
RUJVRykgIC8qIHdpbjMyIEkvTyBkZWJ1Z2dpbmcgaW5mbyAqLwogCisjaWZkZWYgVVNFX1BBWUxP
QURfQ09OTlRSQUNLCisjZGVmaW5lIERfUEFZTE9BRF9DT05OVFJBQ0sgIExPR0xFVig5LCA3MCwg
TV9ERUJVRykgIC8qIHNob3cgcGF5bG9hZCBjb25udHJhY2sgZGVidWcgaW5mbyAqLworI2VuZGlm
CisKICNkZWZpbmUgRF9TSEFQRVJfREVCVUcgICAgICAgTE9HTEVWKDEwLCA3MCwgTV9ERUJVRykg
Lyogc2hvdyB0cmFmZmljIHNoYXBlciBpbmZvICovCiAKICNkZWZpbmUgRF9SRUdJU1RSWSAgICAg
ICAgICAgTE9HTEVWKDExLCA3MCwgTV9ERUJVRykgLyogd2luMzIgcmVnaXN0cnkgZGVidWdnaW5n
IGluZm8gKi8KZGlmZiAtdSBvcGVudnBuLTIvZm9yd2FyZC5jOjEuNCBvcGVudnBuLTIvZm9yd2Fy
ZC5jOjEuNC40LjQKLS0tIGZvcndhcmQuYzoxLjQJVHVlIEFwciAxOSAxNToxNjo1MCAyMDA1Cisr
KyBmb3J3YXJkLmMJTW9uIE1heSAzMCAxMzoyMToyMiAyMDA1CkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiZm9yd2FyZC1pbmxpbmUuaCIKICNpbmNsdWRlICJvY2MtaW5saW5lLmgiCiAjaW5j
bHVkZSAicGluZy1pbmxpbmUuaCIKKyNpbmNsdWRlICJwYXlsb2FkLWlubGluZS5oIgogCiAvKiBz
aG93IGV2ZW50IHdhaXQgZGVidWdnaW5nIGluZm8gKi8KIApAQCAtNDk4LDYgKzQ5OSwxMCBAQAog
CiAgIC8qIFNob3VsZCB3ZSBwaW5nIHRoZSByZW1vdGU/ICovCiAgIGNoZWNrX3Bpbmdfc2VuZCAo
Yyk7CisKKyNpZiBVU0VfUEFZTE9BRF9DT05OVFJBQ0sKKyAgY2hlY2tfcGF5bG9hZF9nYyhjKTsK
KyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZApAQCAtNTU3LDE3ICs1NjIsMTcgQEAKIHNvY2tzX3Bv
c3Rwcm9jZXNzX2luY29taW5nX2xpbmsgKHN0cnVjdCBjb250ZXh0ICpjKQogewogICBpZiAoYy0+
YzIubGlua19zb2NrZXQtPnNvY2tzX3Byb3h5ICYmIGMtPmMyLmxpbmtfc29ja2V0LT5pbmZvLnBy
b3RvID09IFBST1RPX1VEUHY0KQotICAgIHNvY2tzX3Byb2Nlc3NfaW5jb21pbmdfdWRwICgmYy0+
YzIuYnVmLCAmYy0+YzIuZnJvbSk7CisgICAgc29ja3NfcHJvY2Vzc19pbmNvbWluZ191ZHAgKCZj
LT5jMi5idWYsICZjLT5jMi5mcm9tLmFkZHIuaW4pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQK
IHNvY2tzX3ByZXByb2Nlc3Nfb3V0Z29pbmdfbGluayAoc3RydWN0IGNvbnRleHQgKmMsCi0JCQkJ
c3RydWN0IHNvY2thZGRyX2luICoqdG9fYWRkciwKKwkJCQlzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRk
ciAqKnRvX2FkZHIsCiAJCQkJaW50ICpzaXplX2RlbHRhKQogewogICBpZiAoYy0+YzIubGlua19z
b2NrZXQtPnNvY2tzX3Byb3h5ICYmIGMtPmMyLmxpbmtfc29ja2V0LT5pbmZvLnByb3RvID09IFBS
T1RPX1VEUHY0KQogICAgIHsKLSAgICAgICpzaXplX2RlbHRhICs9IHNvY2tzX3Byb2Nlc3Nfb3V0
Z29pbmdfdWRwICgmYy0+YzIudG9fbGluaywgJmMtPmMyLnRvX2xpbmtfYWRkcik7CisgICAgICAq
c2l6ZV9kZWx0YSArPSBzb2Nrc19wcm9jZXNzX291dGdvaW5nX3VkcCAoJmMtPmMyLnRvX2xpbmss
IGMtPmMyLnRvX2xpbmtfYWRkcik7CiAgICAgICAqdG9fYWRkciA9ICZjLT5jMi5saW5rX3NvY2tl
dC0+c29ja3NfcmVsYXk7CiAgICAgfQogfQpAQCAtODc5LDEyICs4ODQsMjMgQEAKICAgICAgICAq
IHVzIHRvIGV4YW1pbmUgdGhlIElQdjQgaGVhZGVyLgogICAgICAgICovCiAgICAgICBwcm9jZXNz
X2lwdjRfaGVhZGVyIChjLCBQSVBWNF9QQVNTVE9TfFBJUFY0X01TU0ZJWCwgJmMtPmMyLmJ1Zik7
CisjaWYgVVNFX1BBWUxPQURfQ09OTlRSQUNLCisgICAgICBpZiAoYy0+YzIucGF5bG9hZF9jb250
ZXh0KQorICAgICAgeworCSAgICAgIGlmIChwYXlsb2FkX3RjcF9yZXRyYW5zX2Ryb3AoYywgJmMt
PmMyLmJ1ZikpCisJICAgICAgeworCQkgICAgICBidWZfcmVzZXQgKCZjLT5jMi50b19saW5rKTsK
KwkJICAgICAgZ290byBvdXQ7CisJICAgICAgfQorICAgICAgfQorI2VuZGlmCiAgICAgICBlbmNy
eXB0X3NpZ24gKGMsIHRydWUpOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGJ1Zl9yZXNl
dCAoJmMtPmMyLnRvX2xpbmspOwogICAgIH0KK291dDoKICAgcGVyZl9wb3AgKCk7CiAgIGdjX2Zy
ZWUgKCZnYyk7CiB9CkBAIC05NDYsNyArOTYyLDcgQEAKICAgICAgICAqIHBhY2tldCB0byByZW1v
dGUgb3ZlciB0aGUgVENQL1VEUCBwb3J0LgogICAgICAgICovCiAgICAgICBpbnQgc2l6ZSA9IDA7
Ci0gICAgICBBU1NFUlQgKGFkZHJfZGVmaW5lZCAoJmMtPmMyLnRvX2xpbmtfYWRkcikpOworICAg
ICAgQVNTRVJUIChsaW5rX2FkZHJfZGVmaW5lZCAoYy0+YzIudG9fbGlua19hZGRyKSk7CiAKICNp
ZmRlZiBFTkFCTEVfREVCVUcKICAgICAgIC8qIEluIGdyZW1saW4tdGVzdCBtb2RlLCB3ZSBtYXkg
Y2hvb3NlIHRvIGRyb3AgdGhpcyBwYWNrZXQgKi8KQEAgLTk4MSwxMiArOTk3LDEyIEBACiAJICBt
c2cgKERfTElOS19SVywgIiVzIFdSSVRFIFslZF0gdG8gJXM6ICVzIiwKIAkgICAgICAgcHJvdG8y
YXNjaWkgKGMtPmMyLmxpbmtfc29ja2V0LT5pbmZvLnByb3RvLCB0cnVlKSwKIAkgICAgICAgQkxF
TiAoJmMtPmMyLnRvX2xpbmspLAotCSAgICAgICBwcmludF9zb2NrYWRkciAoJmMtPmMyLnRvX2xp
bmtfYWRkciwgJmdjKSwKKwkgICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoYy0+YzIudG9fbGlu
a19hZGRyLCAmZ2MpLAogCSAgICAgICBQUk9UT19EVU1QICgmYy0+YzIudG9fbGluaywgJmdjKSk7
CiAKIAkgIC8qIFBhY2tldCBzZW5kIGNvbXBsZXhpZmllZCBieSBwb3NzaWJsZSBTb2NrczUgdXNh
Z2UgKi8KIAkgIHsKLQkgICAgc3RydWN0IHNvY2thZGRyX2luICp0b19hZGRyID0gJmMtPmMyLnRv
X2xpbmtfYWRkcjsKKwkgICAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKnRvX2FkZHIgPSBjLT5j
Mi50b19saW5rX2FkZHI7CiAjaWZkZWYgRU5BQkxFX1NPQ0tTCiAJICAgIGludCBzaXplX2RlbHRh
ID0gMDsKICNlbmRpZgpAQCAtMTAyMCw3ICsxMDM2LDcgQEAKIAkgIGlmIChzaXplICE9IEJMRU4g
KCZjLT5jMi50b19saW5rKSkKIAkgICAgbXNnIChEX0xJTktfRVJST1JTLAogCQkgIlRDUC9VRFAg
cGFja2V0IHdhcyB0cnVuY2F0ZWQvZXhwYW5kZWQgb24gd3JpdGUgdG8gJXMgKHRyaWVkPSVkLGFj
dHVhbD0lZCkiLAotCQkgcHJpbnRfc29ja2FkZHIgKCZjLT5jMi50b19saW5rX2FkZHIsICZnYyks
CisJCSBwcmludF9saW5rX3NvY2thZGRyIChjLT5jMi50b19saW5rX2FkZHIsICZnYyksCiAJCSBC
TEVOICgmYy0+YzIudG9fbGluayksCiAJCSBzaXplKTsKIAl9CkBAIC0xMDI5LDcgKzEwNDUsNyBA
QAogICAgIHsKICAgICAgIGlmIChjLT5jMi50b19saW5rLmxlbiA+IDApCiAJbXNnIChEX0xJTktf
RVJST1JTLCAiVENQL1VEUCBwYWNrZXQgdG9vIGxhcmdlIG9uIHdyaXRlIHRvICVzICh0cmllZD0l
ZCxtYXg9JWQpIiwKLQkgICAgIHByaW50X3NvY2thZGRyICgmYy0+YzIudG9fbGlua19hZGRyLCAm
Z2MpLAorCSAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoYy0+YzIudG9fbGlua19hZGRyLCAmZ2Mp
LAogCSAgICAgYy0+YzIudG9fbGluay5sZW4sCiAJICAgICBFWFBBTkRFRF9TSVpFICgmYy0+YzIu
ZnJhbWUpKTsKICAgICB9CmRpZmYgLXUgb3BlbnZwbi0yL2luaXQuYzoxLjQgb3BlbnZwbi0yL2lu
aXQuYzoxLjQuNC41Ci0tLSBpbml0LmM6MS40CVR1ZSBBcHIgMTkgMTU6MTY6NTAgMjAwNQorKysg
aW5pdC5jCUZyaSBNYXkgMjcgMTU6NDE6MTEgMjAwNQpAQCAtNjc0LDcgKzY3NCw2IEBACiAJCQkg
ICBhZGRyX2hvc3QgKCZjLT5jMS5saW5rX3NvY2tldF9hZGRyLnJlbW90ZSksCiAJCQkgICAhYy0+
b3B0aW9ucy5pZmNvbmZpZ19ub3dhcm4sCiAJCQkgICBjLT5jMi5lcyk7Ci0KICAgaW5pdF90dW5f
cG9zdCAoYy0+YzEudHVudGFwLAogCQkgJmMtPmMyLmZyYW1lLAogCQkgJmMtPm9wdGlvbnMudHVu
dGFwX29wdGlvbnMpOwpAQCAtMTAyNiwxNSArMTAyNSwyOSBAQAogICBzd2l0Y2ggKGMtPm9wdGlv
bnMucHJvdG8pCiAgICAgewogICAgIGNhc2UgUFJPVE9fVURQdjQ6CisjaWZkZWYgVVNFX1BGX0lO
RVQ2CisgICAgY2FzZSBQUk9UT19VRFB2NjoKKyNlbmRpZgogICAgICAgaWYgKHByb3h5KQogCXNl
YyA9IGMtPm9wdGlvbnMuY29ubmVjdF9yZXRyeV9zZWNvbmRzOwogICAgICAgYnJlYWs7CisjaWZk
ZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBQUk9UT19UQ1B2Nl9TRVJWRVI6CisjZW5kaWYKICAg
ICBjYXNlIFBST1RPX1RDUHY0X1NFUlZFUjoKICAgICAgIHNlYyA9IDE7CiAgICAgICBicmVhazsK
KyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIFBST1RPX1RDUHY2X0NMSUVOVDoKKyNlbmRp
ZgogICAgIGNhc2UgUFJPVE9fVENQdjRfQ0xJRU5UOgogICAgICAgc2VjID0gYy0+b3B0aW9ucy5j
b25uZWN0X3JldHJ5X3NlY29uZHM7CiAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfVU5JWAor
ICAgIGNhc2UgUFJPVE9fVU5JWF9ER1JBTToKKyAgICAgIHNlYyA9IDI7CisgICAgICBicmVhazsK
KyNlbmRpZgogICAgIH0KIAogI2lmZGVmIEVOQUJMRV9ERUJVRwpAQCAtMTYzMyw2ICsxNjQ2LDE3
IEBACiAgICAgfQogfQogCisjaWZkZWYgVVNFX1BBWUxPQURfQ09OTlRSQUNLCitzdGF0aWMgdm9p
ZAorZG9faW5pdF9wYXlsb2FkKHN0cnVjdCBjb250ZXh0ICpjKQoreworICBpZiAoYy0+b3B0aW9u
cy50Y3BfcmV0cmFucykKKyAgICB7CisgICAgICBjLT5jMi5wYXlsb2FkX2NvbnRleHQgPSBwYXls
b2FkX25ldyhjLT5vcHRpb25zLnRjcF9yZXRyYW5zKTsKKyAgICB9Cit9CisKKyNlbmRpZgogLyoK
ICAqIEFsbG9jYXRlIG91ciBzb2NrZXQgb2JqZWN0LgogICovCkBAIC0xNjUwLDYgKzE2NzQsMTMg
QEAKIHN0YXRpYyB2b2lkCiBkb19pbml0X3NvY2tldF8xIChzdHJ1Y3QgY29udGV4dCAqYywgaW50
IG1vZGUpCiB7CisgIHVuc2lnbmVkIGludCBmbGFncyA9IDA7CisKKyNpZiBFTkFCTEVfSVBfUEtU
SU5GTworICBpZiAoYy0+b3B0aW9ucy5tdWx0aWhvbWUpCisgICAgZmxhZ3MgfD0gU0ZfVVNFX0lQ
X1BLVElORk87CisjZW5kaWYKKyAgCiAgIGxpbmtfc29ja2V0X2luaXRfcGhhc2UxIChjLT5jMi5s
aW5rX3NvY2tldCwKIAkJCSAgIGMtPm9wdGlvbnMubG9jYWwsCiAJCQkgICBjLT5jMS5yZW1vdGVf
bGlzdCwKQEAgLTE2NzYsNyArMTcwNyw4IEBACiAJCQkgICBjLT5vcHRpb25zLmNvbm5lY3RfcmV0
cnlfc2Vjb25kcywKIAkJCSAgIGMtPm9wdGlvbnMubXR1X2Rpc2NvdmVyX3R5cGUsCiAJCQkgICBj
LT5vcHRpb25zLnJjdmJ1ZiwKLQkJCSAgIGMtPm9wdGlvbnMuc25kYnVmKTsKKwkJCSAgIGMtPm9w
dGlvbnMuc25kYnVmLAorCQkJICAgZmxhZ3MpOwogfQogCiAvKgpAQCAtMTg5Miw2ICsxOTI0LDIx
IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIFVTRV9QQVlMT0FEX0NPTk5UUkFDSworLyoKKyAqIENs
b3NlIHBheWxvYWQgY29ubiB0cmFja2VyCisgKi8KK3N0YXRpYyB2b2lkCitkb19jbG9zZV9wYXls
b2FkIChzdHJ1Y3QgY29udGV4dCAqYykKK3sKKyAgaWYgKGMtPmMyLnBheWxvYWRfY29udGV4dCkK
KyAgeworICAgIHBheWxvYWRfZnJlZSAoYy0+YzIucGF5bG9hZF9jb250ZXh0KTsKKyAgICBjLT5j
Mi5wYXlsb2FkX2NvbnRleHQgPSBOVUxMOworICB9Cit9CisjZW5kaWYKKwogLyoKICAqIE9wZW4g
YW5kIGNsb3NlIG91ciBldmVudCBvYmplY3RzLgogICovCkBAIC0yMDE1LDcgKzIwNjIsNyBAQAog
I2lmZGVmIFdJTjMyCiAgICAgICBtc2cgKE1fSU5GTywgIk5PVEU6IC0tZmFzdC1pbyBpcyBkaXNh
YmxlZCBzaW5jZSB3ZSBhcmUgcnVubmluZyBvbiBXaW5kb3dzIik7CiAjZWxzZQotICAgICAgaWYg
KGMtPm9wdGlvbnMucHJvdG8gIT0gUFJPVE9fVURQdjQpCisgICAgICBpZiAoIXByb3RvX2lzX3Vk
cChjLT5vcHRpb25zLnByb3RvKSkKIAltc2cgKE1fSU5GTywgIk5PVEU6IC0tZmFzdC1pbyBpcyBk
aXNhYmxlZCBzaW5jZSB3ZSBhcmUgbm90IHVzaW5nIFVEUCIpOwogICAgICAgZWxzZQogCXsKQEAg
LTIyMTEsNyArMjI1OCw3IEBACiAgIC8qIGxpbmtfc29ja2V0X21vZGUgYWxsb3dzIENNX0NISUxE
X1RDUAogICAgICBpbnN0YW5jZXMgdG8gaW5oZXJpdCBhY2NlcHRhYmxlIGZkcwogICAgICBmcm9t
IGEgdG9wLWxldmVsIHBhcmVudCAqLwotICBpZiAoYy0+b3B0aW9ucy5wcm90byA9PSBQUk9UT19U
Q1B2NF9TRVJWRVIpCisgIGlmIChjLT5vcHRpb25zLnByb3RvID09IFBST1RPX1RDUHY0X1NFUlZF
UiB8fCBjLT5vcHRpb25zLnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUikKICAgICB7CiAgICAg
ICBpZiAoYy0+bW9kZSA9PSBDTV9UT1ApCiAJbGlua19zb2NrZXRfbW9kZSA9IExTX01PREVfVENQ
X0xJU1RFTjsKQEAgLTIzMjQsNiArMjM3MSw5IEBACiAgIC8qIGluaXRpYWxpemUgZHluYW1pYyBN
VFUgdmFyaWFibGUgKi8KICAgZG9faW5pdF9tc3NmaXggKGMpOwogCisjaWZkZWYgVVNFX1BBWUxP
QURfQ09OTlRSQUNLCisgIGRvX2luaXRfcGF5bG9hZChjKTsKKyNlbmRpZgogICAvKiBiaW5kIHRo
ZSBUQ1AvVURQIHNvY2tldCAqLwogICBpZiAoYy0+bW9kZSA9PSBDTV9QMlAgfHwgYy0+bW9kZSA9
PSBDTV9UT1AgfHwgYy0+bW9kZSA9PSBDTV9DSElMRF9UQ1ApCiAgICAgZG9faW5pdF9zb2NrZXRf
MSAoYywgbGlua19zb2NrZXRfbW9kZSk7CkBAIC0yNDEyLDYgKzI0NjIsOSBAQAogCS8qIGNsb3Nl
IFRVTi9UQVAgZGV2aWNlICovCiAJZG9fY2xvc2VfdHVuIChjLCBmYWxzZSk7CiAKKyNpZmRlZiBV
U0VfUEFZTE9BRF9DT05OVFJBQ0sKKwlkb19jbG9zZV9wYXlsb2FkKGMpOworI2VuZGlmCiAJLyog
Y2FsbCBwbHVnaW4gY2xvc2UgZnVuY3Rpb25zIGFuZCB1bmxvYWQgKi8KIAlkb19jbG9zZV9wbHVn
aW5zIChjKTsKIApAQCAtMjQ0MCwxNyArMjQ5Myw3IEBACiB7CiAgIENMRUFSICgqZGVzdCk7CiAK
LSAgc3dpdGNoIChzcmMtPm9wdGlvbnMucHJvdG8pCi0gICAgewotICAgIGNhc2UgUFJPVE9fVURQ
djQ6Ci0gICAgICBkZXN0LT5tb2RlID0gQ01fQ0hJTERfVURQOwotICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQUk9UT19UQ1B2NF9TRVJWRVI6Ci0gICAgICBkZXN0LT5tb2RlID0gQ01fQ0hJTERfVENQ
OwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEFTU0VSVCAoMCk7Ci0gICAgfQor
ICBkZXN0LT5tb2RlID0gcHJvdG9faXNfZGdyYW0oc3JjLT5vcHRpb25zLnByb3RvKT8gQ01fQ0hJ
TERfVURQIDogQ01fQ0hJTERfVENQOwogCiAgIGRlc3QtPmZpcnN0X3RpbWUgPSBmYWxzZTsKIApA
QCAtMjU0OCw3ICsyNTkxLDcgQEAKICAgZGVzdC0+YzIuYnVmZmVyc19vd25lZCA9IGZhbHNlOwog
CiAgIGRlc3QtPmMyLmV2ZW50X3NldCA9IE5VTEw7Ci0gIGlmIChzcmMtPm9wdGlvbnMucHJvdG8g
PT0gUFJPVE9fVURQdjQpCisgIGlmIChwcm90b19pc19kZ3JhbShzcmMtPm9wdGlvbnMucHJvdG8p
KQogICAgIGRvX2V2ZW50X3NldF9pbml0IChkZXN0LCBmYWxzZSk7CiB9CiAKZGlmZiAtdSBvcGVu
dnBuLTIvbWFuYWdlLmM6MS4yIG9wZW52cG4tMi9tYW5hZ2UuYzoxLjIuNC4xCi0tLSBtYW5hZ2Uu
YzoxLjIJVHVlIEFwciAxOSAxNToxNjo1MCAyMDA1CisrKyBtYW5hZ2UuYwlNb24gTWF5ICAyIDEw
OjMzOjQ5IDIwMDUKQEAgLTc0NiwxMiArNzQ2LDE1IEBACiB7CiAgIHN0cnVjdCBnY19hcmVuYSBn
YyA9IGdjX25ldyAoKTsKIAorICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciBhY3Q7CiAgIC8qCiAg
ICAqIEFjY2VwdCB0aGUgVENQIGNsaWVudC4KICAgICovCi0gIG1hbi0+Y29ubmVjdGlvbi5zZF9j
bGkgPSBzb2NrZXRfZG9fYWNjZXB0IChtYW4tPmNvbm5lY3Rpb24uc2RfdG9wLCAmbWFuLT5jb25u
ZWN0aW9uLnJlbW90ZSwgZmFsc2UpOworICBtYW4tPmNvbm5lY3Rpb24uc2RfY2xpID0gc29ja2V0
X2RvX2FjY2VwdCAobWFuLT5jb25uZWN0aW9uLnNkX3RvcCwgJmFjdCwgZmFsc2UpOwogICBpZiAo
c29ja2V0X2RlZmluZWQgKG1hbi0+Y29ubmVjdGlvbi5zZF9jbGkpKQogICAgIHsKKyAgICAgIG1h
bi0+Y29ubmVjdGlvbi5yZW1vdGUgPSBhY3Q7CisKICAgICAgIGlmIChzb2NrZXRfZGVmaW5lZCAo
bWFuLT5jb25uZWN0aW9uLnNkX3RvcCkpCiAJewogI2lmZGVmIFdJTjMyCkBAIC0xMTIwLDkgKzEx
MjMsOSBAQAogICAgICAgLyoKICAgICAgICAqIEluaXRpYWxpemUgc29ja2V0IGFkZHJlc3MKICAg
ICAgICAqLwotICAgICAgbXMtPmxvY2FsLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgbXMt
PmxvY2FsLnNpbl9hZGRyLnNfYWRkciA9IDA7Ci0gICAgICBtcy0+bG9jYWwuc2luX3BvcnQgPSBo
dG9ucyAocG9ydCk7CisgICAgICBtcy0+bG9jYWwuYWRkci5pbi5zaW5fZmFtaWx5ID0gQUZfSU5F
VDsKKyAgICAgIG1zLT5sb2NhbC5hZGRyLmluLnNpbl9hZGRyLnNfYWRkciA9IDA7CisgICAgICBt
cy0+bG9jYWwuYWRkci5pbi5zaW5fcG9ydCA9IGh0b25zIChwb3J0KTsKIAogICAgICAgLyoKICAg
ICAgICAqIFJ1biBtYW5hZ2VtZW50IG92ZXIgdHVubmVsLCBvcgpAQCAtMTEzNCw3ICsxMTM3LDcg
QEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgbXMtPmxvY2FsLnNpbl9hZGRyLnNfYWRkciA9IGdl
dGFkZHIKKwkgIG1zLT5sb2NhbC5hZGRyLmluLnNpbl9hZGRyLnNfYWRkciA9IGdldGFkZHIKIAkg
ICAgKEdFVEFERFJfUkVTT0xWRXxHRVRBRERSX1dBUk5fT05fU0lHTkFMfEdFVEFERFJfRkFUQUws
IGFkZHIsIDAsIE5VTEwsIE5VTEwpOwogCX0KICAgICAgIApAQCAtMTM4MSw3ICsxMzg0LDcgQEAK
ICAgICAgICYmIG1hbi0+Y29ubmVjdGlvbi5zdGF0ZSA9PSBNU19JTklUSUFMKQogICAgIHsKICAg
ICAgIC8qIGxpc3RlbiBvbiBvdXIgbG9jYWwgVFVOL1RBUCBJUCBhZGRyZXNzICovCi0gICAgICBt
YW4tPnNldHRpbmdzLmxvY2FsLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sICh0dW5fbG9jYWxfaXAp
OworICAgICAgbWFuLT5zZXR0aW5ncy5sb2NhbC5hZGRyLmluLnNpbl9hZGRyLnNfYWRkciA9IGh0
b25sICh0dW5fbG9jYWxfaXApOwogICAgICAgbWFuX2Nvbm5lY3Rpb25faW5pdCAobWFuKTsKICAg
ICB9CiAKZGlmZiAtdSBvcGVudnBuLTIvbWFuYWdlLmg6MS4yIG9wZW52cG4tMi9tYW5hZ2UuaDox
LjIuNi4xCi0tLSBtYW5hZ2UuaDoxLjIJVHVlIEFwciAxOSAxNToxNjo1MCAyMDA1CisrKyBtYW5h
Z2UuaAlNb24gTWF5ICAyIDEwOjMzOjQ5IDIwMDUKQEAgLTE4NSw3ICsxODUsNyBAQAogCiBzdHJ1
Y3QgbWFuX3NldHRpbmdzIHsKICAgYm9vbCBkZWZpbmVkOwotICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
bG9jYWw7CisgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyIGxvY2FsOwogICBib29sIHVwX3F1ZXJ5
X3Bhc3N3b3JkczsKICAgYm9vbCBtYW5hZ2VtZW50X292ZXJfdHVubmVsOwogICBzdHJ1Y3QgdXNl
cl9wYXNzIHVwOwpAQCAtMjEyLDcgKzIxMiw3IEBACiAKICAgc29ja2V0X2Rlc2NyaXB0b3JfdCBz
ZF90b3A7CiAgIHNvY2tldF9kZXNjcmlwdG9yX3Qgc2RfY2xpOwotICBzdHJ1Y3Qgc29ja2FkZHJf
aW4gcmVtb3RlOworICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciByZW1vdGU7CiAKICNpZmRlZiBX
SU4zMgogICBzdHJ1Y3QgbmV0X2V2ZW50X3dpbjMyIG5lMzI7CmRpZmYgLXUgb3BlbnZwbi0yL21y
b3V0ZS5jOjEuNCBvcGVudnBuLTIvbXJvdXRlLmM6MS40LjQuNQotLS0gbXJvdXRlLmM6MS40CVR1
ZSBBcHIgMTkgMTU6MTY6NTAgMjAwNQorKysgbXJvdXRlLmMJU2F0IE1heSAyMSAyMTowNjozOSAy
MDA1CkBAIC0xNzIsMjcgKzE3Miw2OSBAQAogICogdG8gYSBzdHJ1Y3QgbXJvdXRlX2FkZHIgKGFk
ZHIpLgogICovCiBib29sCi1tcm91dGVfZXh0cmFjdF9zb2NrYWRkcl9pbiAoc3RydWN0IG1yb3V0
ZV9hZGRyICphZGRyLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNhZGRyLCBib29sIHVzZV9w
b3J0KQorbXJvdXRlX2V4dHJhY3Rfb3BlbnZwbl9zb2NrYWRkciAoc3RydWN0IG1yb3V0ZV9hZGRy
ICphZGRyLCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqb3NhZGRyLCBib29sIHVzZV9w
b3J0KQogewotICBpZiAoc2FkZHItPnNpbl9mYW1pbHkgPT0gQUZfSU5FVCkKLSAgICB7CisgIHN3
aXRjaCAob3NhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgCisgIHsKKyAgICBjYXNlIEFGX0lORVQ6
CiAgICAgICBpZiAodXNlX3BvcnQpCiAJewogCSAgYWRkci0+dHlwZSA9IE1SX0FERFJfSVBWNCB8
IE1SX1dJVEhfUE9SVDsKIAkgIGFkZHItPm5ldGJpdHMgPSAwOwogCSAgYWRkci0+bGVuID0gNjsK
LQkgIG1lbWNweSAoYWRkci0+YWRkciwgJnNhZGRyLT5zaW5fYWRkci5zX2FkZHIsIDQpOwotCSAg
bWVtY3B5IChhZGRyLT5hZGRyICsgNCwgJnNhZGRyLT5zaW5fcG9ydCwgMik7CisJICBtZW1jcHkg
KGFkZHItPmFkZHIsICZvc2FkZHItPmFkZHIuaW4uc2luX2FkZHIuc19hZGRyLCA0KTsKKwkgIG1l
bWNweSAoYWRkci0+YWRkciArIDQsICZvc2FkZHItPmFkZHIuaW4uc2luX3BvcnQsIDIpOwogCX0K
ICAgICAgIGVsc2UKIAl7CiAJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY0OwogCSAgYWRkci0+
bmV0Yml0cyA9IDA7CiAJICBhZGRyLT5sZW4gPSA0OwotCSAgbWVtY3B5IChhZGRyLT5hZGRyLCAm
c2FkZHItPnNpbl9hZGRyLnNfYWRkciwgNCk7CisJICBtZW1jcHkgKGFkZHItPmFkZHIsICZvc2Fk
ZHItPmFkZHIuaW4uc2luX2FkZHIuc19hZGRyLCA0KTsKIAl9CiAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgCisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjoKKyAg
ICAgIGlmICh1c2VfcG9ydCkKKwl7CisJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY2IHwgTVJf
V0lUSF9QT1JUOworCSAgYWRkci0+bmV0Yml0cyA9IDA7CisJICBhZGRyLT5sZW4gPSAxODsKKwkg
IG1lbWNweSAoYWRkci0+YWRkciwgJm9zYWRkci0+YWRkci5pbjYuc2luNl9hZGRyLCAxNik7CisJ
ICBtZW1jcHkgKGFkZHItPmFkZHIgKyAxNiwgJm9zYWRkci0+YWRkci5pbjYuc2luNl9wb3J0LCAy
KTsKKwl9CisgICAgICBlbHNlCisJeworCSAgYWRkci0+dHlwZSA9IE1SX0FERFJfSVBWNjsKKwkg
IGFkZHItPm5ldGJpdHMgPSAwOworCSAgYWRkci0+bGVuID0gMTY7CisJICBtZW1jcHkgKGFkZHIt
PmFkZHIsICZvc2FkZHItPmFkZHIuaW42LnNpbjZfYWRkciwgMTYpOworCX0KKyAgICAgIHJldHVy
biB0cnVlOworI2VuZGlmCisjaWZkZWYgVVNFX1BGX1VOSVgKKyAgICBjYXNlIEFGX1VOSVg6Cisg
ICAgICB7CisJc3RydWN0IHN0YXQgc3RfYnVmOworCWFkZHItPnR5cGUgPSBNUl9BRERSX1VOSVg7
CisJYWRkci0+bmV0Yml0cyA9IDA7CisJYWRkci0+bGVuID0gMCA7CisJbWVtc2V0KGFkZHItPmFk
ZHIsIDAsIHNpemVvZiAoYWRkci0+YWRkcikpOworCWlmIChzdGF0KG9zYWRkci0+YWRkci51bi5z
dW5fcGF0aCwgJnN0X2J1Zik8MCkKKwl7CisJICBtc2coTV9XQVJOLCAiQ291bGQgbm90IHN0YXQo
JXMpIiwgb3NhZGRyLT5hZGRyLnVuLnN1bl9wYXRoKTsKKwkgIHJldHVybiBmYWxzZTsKKwl9CisJ
bXNnKE1fSU5GTywgIk1SX0FERFJfVU5JWCBzdGF0KFwiJXNcIik6ICgweCUwOGx4LCAlbHUpIiwg
b3NhZGRyLT5hZGRyLnVuLnN1bl9wYXRoLCAodW5zaWduZWQgbG9uZylzdF9idWYuc3RfZGV2LCAo
dW5zaWduZWQgbG9uZylzdF9idWYuc3RfaW5vKTsKKwkvKiBQdXQgdW5peCBzb2NrZXQgcGF0aCB7
ZGV2aWNlLGlub2RlfSBudW1iZXJzIGludG8gYWRkciAodW5pcSBhbmQgc2hvcnRlciB0aGF0IHBh
dGhuYW1lICovCisJbWVtY3B5KGFkZHItPmFkZHIsICZzdF9idWYuc3RfZGV2LCBzaXplb2Yoc3Rf
YnVmLnN0X2RldikpOworCW1lbWNweShhZGRyLT5hZGRyK3NpemVvZihzdF9idWYuc3RfZGV2KSwg
JnN0X2J1Zi5zdF9pbm8sIHNpemVvZihzdF9idWYuc3RfaW5vKSk7CisJYWRkci0+bGVuID0gc2l6
ZW9mKHN0X2J1Zi5zdF9kZXYpICsgc2l6ZW9mIChzdF9idWYuc3RfaW5vKSA7CisJcmV0dXJuIHRy
dWU7CisgICAgICB9CisjZW5kaWYKKyAgfQogICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTI2Nyw4
ICszMDksNTkgQEAKIAkgIH0KIAkgIGJyZWFrOwogCWNhc2UgTVJfQUREUl9JUFY2OgorI2lmZGVm
IFVTRV9QRl9JTkVUNgorICAgICAgICAgIHsKKwkgICAgc3RydWN0IGJ1ZmZlciBidWY7CisJICAg
IHN0cnVjdCBzb2NrYWRkcl9pbjYgc2luNjsKKwkgICAgaW50IHBvcnQ7CisJICAgIGNoYXIgYnVm
NltJTkVUNl9BRERSU1RSTEVOXSA9ICIiOworCSAgICBtZW1zZXQoJnNpbjYsIDAsIHNpemVvZiBz
aW42KTsKKwkgICAgc2luNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworCSAgICBidWZfc2V0X3Jl
YWQgKCZidWYsIG1hZGRyLmFkZHIsIG1hZGRyLmxlbik7CisgICAgICAgICAgICBpZiAoYnVmX3Jl
YWQoJmJ1ZiwgJnNpbjYuc2luNl9hZGRyLCBzaXplb2YgKHNpbjYuc2luNl9hZGRyKSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRy
ICopJnNpbjYsIHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luNiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZjYsIHNpemVvZiAoYnVmNiksIE5VTEwsIDAsIE5JX05V
TUVSSUNIT1NUKSAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGJ1
Zl9wcmludGYgKCZvdXQsICJNUl9BRERSX0lQVjYgZ2V0bmFtZWluZm8oKSBlcnIiKTsKKyAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCQl9CisgICAgICAgICAgICAgIGJ1Zl9wdXRzICgmb3V0LCBi
dWY2KTsKKwkgICAgICBpZiAobWFkZHIudHlwZSAmIE1SX1dJVEhfTkVUQklUUykKKwkgICAgICAg
IGJ1Zl9wcmludGYgKCZvdXQsICIvJWQiLCBtYWRkci5uZXRiaXRzKTsKKyAgICAgICAgICAgICAg
aWYgKG1hZGRyLnR5cGUgJiBNUl9XSVRIX1BPUlQpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgcG9ydCA9IGJ1Zl9yZWFkX3UxNiAoJmJ1Zik7CisgICAgICAgICAgICAgICAg
ICBpZiAocG9ydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBidWZfcHJpbnRmICgmb3V0LCAi
OiVkIiwgcG9ydCk7CisgICAgICAgICAgICAgICAgfQorCSAgICB9CisgICAgICAgICAgfQorI2Vs
c2UgLyogb2xkIHByZSBJUFY2IDEtbGluZSBjb2RlOiAqLwogCSAgYnVmX3ByaW50ZiAoJm91dCwg
IklQVjYiKTsgCisjZW5kaWYKIAkgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9VTklYCisJY2FzZSBN
Ul9BRERSX1VOSVg6CisgICAgICAgICAgeworCSAgICBzdHJ1Y3QgYnVmZmVyIGJ1ZjsKKwkgICAg
ZGV2X3QgcGF0aF9kZXY7CisJICAgIGlub190IHBhdGhfaW5vOworCSAgICBidWZfc2V0X3JlYWQg
KCZidWYsIG1hZGRyLmFkZHIsIG1hZGRyLmxlbik7CisgICAgICAgICAgICBpZiAoIWJ1Zl9yZWFk
KCZidWYsICZwYXRoX2Rldiwgc2l6ZW9mIHBhdGhfZGV2KSkKKwkgICAgICB7CisJCW1zZyhNX1dB
Uk4sICJFcnJvciByZWFkaW5nIHBhdGhfZGV2IGZyb20gTVJfQUREUl9VTklYIGFkZHIiKTsKKwkJ
YnJlYWs7CisJICAgICAgfQorICAgICAgICAgICAgaWYgKCFidWZfcmVhZCgmYnVmLCAmcGF0aF9p
bm8sIHNpemVvZiBwYXRoX2lubykpCisJICAgICAgeworCQltc2coTV9XQVJOLCAiRXJyb3IgcmVh
ZGluZyBwYXRoX2lubyBmcm9tIE1SX0FERFJfVU5JWCBhZGRyIik7CisJCWJyZWFrOworCSAgICAg
IH0KKwkgICAgYnVmX3ByaW50ZiAoJm91dCwgIlVOSVg6ICgweCUwOGx4LCAlbHUpIiwgKHVuc2ln
bmVkIGxvbmcpcGF0aF9kZXYsICh1bnNpZ25lZCBsb25nKXBhdGhfaW5vKTsKKyAgICAgICAgICB9
CisJICBicmVhazsKKyNlbmRpZgogCWRlZmF1bHQ6CiAJICBidWZfcHJpbnRmICgmb3V0LCAiVU5L
Tk9XTiIpOyAKIAkgIGJyZWFrOwpkaWZmIC11IG9wZW52cG4tMi9tcm91dGUuaDoxLjQgb3BlbnZw
bi0yL21yb3V0ZS5oOjEuNC42LjIKLS0tIG1yb3V0ZS5oOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUw
IDIwMDUKKysrIG1yb3V0ZS5oCU1vbiBNYXkgMzAgMTU6MDg6MzQgMjAwNQpAQCAtNTQsMTMgKzU0
LDE0IEBACiAjZGVmaW5lIE1SX0FERFJfRVRIRVIgICAgICAgICAgICAxCiAjZGVmaW5lIE1SX0FE
RFJfSVBWNCAgICAgICAgICAgICAyCiAjZGVmaW5lIE1SX0FERFJfSVBWNiAgICAgICAgICAgICAz
Ci0jZGVmaW5lIE1SX0FERFJfTUFTSyAgICAgICAgICAgICAzCisjZGVmaW5lIE1SX0FERFJfVU5J
WCAgICAgICAgICAgICA0CisjZGVmaW5lIE1SX0FERFJfTUFTSyAgICAgICAgICAgICA3CiAKIC8q
IEFkZHJlc3MgdHlwZSBtYXNrIGluZGljYXRpbmcgdGhhdCBwb3J0ICMgaXMgcGFydCBvZiBhZGRy
ZXNzICovCi0jZGVmaW5lIE1SX1dJVEhfUE9SVCAgICAgICAgICAgICA0CisjZGVmaW5lIE1SX1dJ
VEhfUE9SVCAgICAgICAgICAgICA4CiAKIC8qIEFkZHJlc3MgdHlwZSBtYXNrIGluZGljYXRpbmcg
dGhhdCBuZXRiaXRzIGlzIHBhcnQgb2YgYWRkcmVzcyAqLwotI2RlZmluZSBNUl9XSVRIX05FVEJJ
VFMgICAgICAgICAgOAorI2RlZmluZSBNUl9XSVRIX05FVEJJVFMgICAgICAgICAgMTYKIAogc3Ry
dWN0IG1yb3V0ZV9hZGRyIHsKICAgdWludDhfdCBsZW47ICAgICAgLyogbGVuZ3RoIG9mIGFkZHJl
c3MgKi8KQEAgLTk4LDYgKzk5LDExIEBACiAJCQkJIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAq
c2FkZHIsCiAJCQkJIGJvb2wgdXNlX3BvcnQpOwogCitzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkcjsK
K2ludCBtcm91dGVfZXh0cmFjdF9vcGVudnBuX3NvY2thZGRyKHN0cnVjdCBtcm91dGVfYWRkciAq
YWRkciwgCisJCQkJIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICpvc2FkZHIsCisJCQkJ
IGludCB1c2VfcG9ydCk7CisKIGJvb2wgbXJvdXRlX2xlYXJuYWJsZV9hZGRyZXNzIChjb25zdCBz
dHJ1Y3QgbXJvdXRlX2FkZHIgKmFkZHIpOwogCiB1aW50MzJfdCBtcm91dGVfYWRkcl9oYXNoX2Z1
bmN0aW9uIChjb25zdCB2b2lkICprZXksIHVpbnQzMl90IGl2KTsKZGlmZiAtdSBvcGVudnBuLTIv
bXRjcC5jOjEuNCBvcGVudnBuLTIvbXRjcC5jOjEuNC40LjEKLS0tIG10Y3AuYzoxLjQJVHVlIEFw
ciAxOSAxNToxNjo1MCAyMDA1CisrKyBtdGNwLmMJTW9uIE1heSAgMiAxMDozMzo0OSAyMDA1CkBA
IC0xNTksNyArMTU5LDggQEAKICAgQVNTRVJUIChtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldCk7
CiAgIEFTU0VSVCAobWktPmNvbnRleHQuYzIubGlua19zb2NrZXQtPmluZm8ubHNhKTsKICAgQVNT
RVJUIChtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldC0+bW9kZSA9PSBMU19NT0RFX1RDUF9BQ0NF
UFRfRlJPTSk7Ci0gIGlmICghbXJvdXRlX2V4dHJhY3Rfc29ja2FkZHJfaW4gKCZtaS0+cmVhbCwg
Jm1pLT5jb250ZXh0LmMyLmxpbmtfc29ja2V0LT5pbmZvLmxzYS0+YWN0dWFsLCB0cnVlKSkKKyAg
QVNTRVJUIChtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldC0+aW5mby5sc2EtPmFjdHVhbC5hZGRy
LnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKTsKKyAgaWYgKCFtcm91dGVfZXh0cmFjdF9vcGVudnBu
X3NvY2thZGRyICgmbWktPnJlYWwsICZtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldC0+aW5mby5s
c2EtPmFjdHVhbCwgdHJ1ZSkpCiAgICAgewogICAgICAgbXNnIChEX01VTFRJX0VSUk9SUywgIk1V
TFRJIFRDUDogVENQIGNsaWVudCBhZGRyZXNzIGlzIHVuZGVmaW5lZCIpOwogICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC11IG9wZW52cG4tMi9tdWRwLmM6MS40IG9wZW52cG4tMi9tdWRwLmM6MS40
LjQuMgotLS0gbXVkcC5jOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUwIDIwMDUKKysrIG11ZHAuYwlN
b24gTWF5IDMwIDE1OjA5OjAwIDIwMDUKQEAgLTUxLDcgKzUxLDcgQEAKICAgc3RydWN0IG11bHRp
X2luc3RhbmNlICptaSA9IE5VTEw7CiAgIHN0cnVjdCBoYXNoICpoYXNoID0gbS0+aGFzaDsKIAot
ICBpZiAobXJvdXRlX2V4dHJhY3Rfc29ja2FkZHJfaW4gKCZyZWFsLCAmbS0+dG9wLmMyLmZyb20s
IHRydWUpKQorICBpZiAobXJvdXRlX2V4dHJhY3Rfb3BlbnZwbl9zb2NrYWRkciAoJnJlYWwsICZt
LT50b3AuYzIuZnJvbSwgdHJ1ZSkpCiAgICAgewogICAgICAgc3RydWN0IGhhc2hfZWxlbWVudCAq
aGU7CiAgICAgICBjb25zdCB1aW50MzJfdCBodiA9IGhhc2hfdmFsdWUgKGhhc2gsICZyZWFsKTsK
ZGlmZiAtdSBvcGVudnBuLTIvbXVsdGkuYzoxLjQgb3BlbnZwbi0yL211bHRpLmM6MS40LjQuMQot
LS0gbXVsdGkuYzoxLjQJVHVlIEFwciAxOSAxNToxNjo1MCAyMDA1CisrKyBtdWx0aS5jCU1vbiBN
YXkgIDIgMTA6MzM6NDkgMjAwNQpAQCAtOTM4LDEzICs5MzgsMTMgQEAKIAkJICAgICAgIGluX2Fk
ZHJfdCBhLAogCQkgICAgICAgaW50IG5ldGJpdHMpIC8qIC0xIGlmIGhvc3Qgcm91dGUsIG90aGVy
d2lzZSAjIG9mIG5ldHdvcmsgYml0cyBpbiBhZGRyZXNzICovCiB7Ci0gIHN0cnVjdCBzb2NrYWRk
cl9pbiByZW1vdGVfc2k7CisgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyIHJlbW90ZV9zaTsKICAg
c3RydWN0IG1yb3V0ZV9hZGRyIGFkZHI7CiAKICAgQ0xFQVIgKHJlbW90ZV9zaSk7Ci0gIHJlbW90
ZV9zaS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgcmVtb3RlX3NpLnNpbl9hZGRyLnNfYWRkciA9
IGh0b25sIChhKTsKLSAgQVNTRVJUIChtcm91dGVfZXh0cmFjdF9zb2NrYWRkcl9pbiAoJmFkZHIs
ICZyZW1vdGVfc2ksIGZhbHNlKSk7CisgIHJlbW90ZV9zaS5hZGRyLmluLnNpbl9mYW1pbHkgPSBB
Rl9JTkVUOworICByZW1vdGVfc2kuYWRkci5pbi5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAoYSk7
CisgIEFTU0VSVCAobXJvdXRlX2V4dHJhY3Rfb3BlbnZwbl9zb2NrYWRkciAoJmFkZHIsICZyZW1v
dGVfc2ksIGZhbHNlKSk7CiAKICAgaWYgKG5ldGJpdHMgPj0gMCkKICAgICB7CkBAIC0yMDA4LDE1
ICsyMDA4LDE1IEBACiAgIHN0cnVjdCBtdWx0aV9jb250ZXh0ICptID0gKHN0cnVjdCBtdWx0aV9j
b250ZXh0ICopIGFyZzsKICAgc3RydWN0IGhhc2hfaXRlcmF0b3IgaGk7CiAgIHN0cnVjdCBoYXNo
X2VsZW1lbnQgKmhlOwotICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2FkZHI7CisgIHN0cnVjdCBvcGVu
dnBuX3NvY2thZGRyIHNhZGRyOwogICBzdHJ1Y3QgbXJvdXRlX2FkZHIgbWFkZHI7CiAgIGludCBj
b3VudCA9IDA7CiAKICAgQ0xFQVIgKHNhZGRyKTsKLSAgc2FkZHIuc2luX2ZhbWlseSA9IEFGX0lO
RVQ7Ci0gIHNhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRyKTsKLSAgc2FkZHIuc2lu
X3BvcnQgPSBodG9ucyAocG9ydCk7Ci0gIGlmIChtcm91dGVfZXh0cmFjdF9zb2NrYWRkcl9pbiAo
Jm1hZGRyLCAmc2FkZHIsIHRydWUpKQorICBzYWRkci5hZGRyLmluLnNpbl9mYW1pbHkgPSBBRl9J
TkVUOworICBzYWRkci5hZGRyLmluLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRyKTsKKyAg
c2FkZHIuYWRkci5pbi5zaW5fcG9ydCA9IGh0b25zIChwb3J0KTsKKyAgaWYgKG1yb3V0ZV9leHRy
YWN0X29wZW52cG5fc29ja2FkZHIgKCZtYWRkciwgJnNhZGRyLCB0cnVlKSkKICAgICB7CiAgICAg
ICBoYXNoX2l0ZXJhdG9yX2luaXQgKG0tPml0ZXIsICZoaSwgdHJ1ZSk7CiAgICAgICB3aGlsZSAo
KGhlID0gaGFzaF9pdGVyYXRvcl9uZXh0ICgmaGkpKSkKQEAgLTIwNzYsMTYgKzIwNzYsMTAgQEAK
IHsKICAgQVNTRVJUICh0b3AtPm9wdGlvbnMubW9kZSA9PSBNT0RFX1NFUlZFUik7CiAKLSAgc3dp
dGNoICh0b3AtPm9wdGlvbnMucHJvdG8pIHsKLSAgY2FzZSBQUk9UT19VRFB2NDoKLSAgICB0dW5u
ZWxfc2VydmVyX3VkcCAodG9wKTsKLSAgICBicmVhazsKLSAgY2FzZSBQUk9UT19UQ1B2NF9TRVJW
RVI6Ci0gICAgdHVubmVsX3NlcnZlcl90Y3AgKHRvcCk7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQ6
Ci0gICAgQVNTRVJUICgwKTsKLSAgfQorICBpZiAocHJvdG9faXNfZGdyYW0odG9wLT5vcHRpb25z
LnByb3RvKSkKKyAgICB0dW5uZWxfc2VydmVyX3VkcCh0b3ApOworICBlbHNlCisgICAgdHVubmVs
X3NlcnZlcl90Y3AodG9wKTsKIH0KIAogI2Vsc2UKZGlmZiAtdSBvcGVudnBuLTIvb2NjLmM6MS40
IG9wZW52cG4tMi9vY2MuYzoxLjQuNC4xCi0tLSBvY2MuYzoxLjQJVHVlIEFwciAxOSAxNToxNjo1
MCAyMDA1CisrKyBvY2MuYwlNb24gTWF5ICAyIDEwOjMzOjQ5IDIwMDUKQEAgLTM3Miw3ICszNzIs
NyBAQAogCSAgICAgICBjLT5jMi5tYXhfc2VuZF9zaXplX3JlbW90ZSwKIAkgICAgICAgYy0+YzIu
bWF4X3JlY3Zfc2l6ZV9sb2NhbCk7CiAJICBpZiAoIWMtPm9wdGlvbnMuZnJhZ21lbnQKLQkgICAg
ICAmJiBjLT5vcHRpb25zLnByb3RvID09IFBST1RPX1VEUHY0CisJICAgICAgJiYgKHByb3RvX2lz
X2RncmFtKGMtPm9wdGlvbnMucHJvdG8pKQogCSAgICAgICYmIGMtPmMyLm1heF9zZW5kX3NpemVf
bG9jYWwgPiBUVU5fTVRVX01JTgogCSAgICAgICYmIChjLT5jMi5tYXhfcmVjdl9zaXplX3JlbW90
ZSA8IGMtPmMyLm1heF9zZW5kX3NpemVfbG9jYWwKIAkJICB8fCBjLT5jMi5tYXhfcmVjdl9zaXpl
X2xvY2FsIDwgYy0+YzIubWF4X3NlbmRfc2l6ZV9yZW1vdGUpKQpkaWZmIC11IG9wZW52cG4tMi9v
cGVudnBuLmg6MS40IG9wZW52cG4tMi9vcGVudnBuLmg6MS40LjQuMgotLS0gb3BlbnZwbi5oOjEu
NAlUdWUgQXByIDE5IDE1OjE2OjUwIDIwMDUKKysrIG9wZW52cG4uaAlGcmkgTWF5IDI3IDE1OjIx
OjA4IDIwMDUKQEAgLTQ2LDYgKzQ2LDkgQEAKICNpbmNsdWRlICJwb29sLmgiCiAjaW5jbHVkZSAi
cGx1Z2luLmgiCiAjaW5jbHVkZSAibWFuYWdlLmgiCisjaWZkZWYgVVNFX1BBWUxPQURfQ09OTlRS
QUNLCisjaW5jbHVkZSAicGF5bG9hZC5oIgorI2VuZGlmCiAKIC8qCiAgKiBPdXIgZ2xvYmFsIGtl
eSBzY2hlZHVsZXMsIHBhY2thZ2VkIHRodXNseQpAQCAtMjA5LDggKzIxMiw4IEBACiAgIHN0cnVj
dCBsaW5rX3NvY2tldF9pbmZvICpsaW5rX3NvY2tldF9pbmZvOwogICBjb25zdCBzdHJ1Y3QgbGlu
a19zb2NrZXQgKmFjY2VwdF9mcm9tOyAvKiBwb3NzaWJseSBkbyBhY2NlcHQoKSBvbiBhIHBhcmVu
dCBsaW5rX3NvY2tldCAqLwogCi0gIHN0cnVjdCBzb2NrYWRkcl9pbiB0b19saW5rX2FkZHI7CSAv
KiBJUCBhZGRyZXNzIG9mIHJlbW90ZSAqLwotICBzdHJ1Y3Qgc29ja2FkZHJfaW4gZnJvbTsgICAg
ICAgICAgICAgICAvKiBhZGRyZXNzIG9mIGluY29taW5nIGRhdGFncmFtICovCisgIHN0cnVjdCBv
cGVudnBuX3NvY2thZGRyICp0b19saW5rX2FkZHI7CSAvKiBJUCBhZGRyZXNzIG9mIHJlbW90ZSAq
LworICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciBmcm9tOyAgICAgICAgICAgICAgIC8qIGFkZHJl
c3Mgb2YgaW5jb21pbmcgZGF0YWdyYW0gKi8KIAogICAvKiBNVFUgZnJhbWUgcGFyYW1ldGVycyAq
LwogICBzdHJ1Y3QgZnJhbWUgZnJhbWU7CkBAIC00MTAsNiArNDEzLDkgQEAKICAgc3RydWN0IGV2
ZW50X3RpbWVvdXQgc2NoZWR1bGVkX2V4aXQ7CiAKICNlbmRpZgorI2lmZGVmIFVTRV9QQVlMT0FE
X0NPTk5UUkFDSworICBzdHJ1Y3QgcGF5bG9hZF9jb250ZXh0ICpwYXlsb2FkX2NvbnRleHQ7Cisj
ZW5kaWYKIH07CiAKIC8qCmRpZmYgLXUgb3BlbnZwbi0yL29wdGlvbnMuYzoxLjQgb3BlbnZwbi0y
L29wdGlvbnMuYzoxLjQuNC41Ci0tLSBvcHRpb25zLmM6MS40CVR1ZSBBcHIgMTkgMTU6MTY6NTAg
MjAwNQorKysgb3B0aW9ucy5jCVdlZCBNYXkgMjUgMjA6NDk6MzYgMjAwNQpAQCAtNzIsNiArNzIs
MTggQEAKICNpZmRlZiBVU0VfUFRIUkVBRAogICAiIFtQVEhSRUFEXSIKICNlbmRpZgorI2lmZGVm
IEVOQUJMRV9JUF9QS1RJTkZPCisgICIgW01IXSIKKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9JTkVU
NgorICAiIFtQRl9JTkVUNl0iCisjZW5kaWYKKyNpZmRlZiBVU0VfUEZfVU5JWAorICAiIFtQRl9V
TklYXSIKKyNlbmRpZgorI2lmZGVmIFVTRV9QQVlMT0FEX0NPTk5UUkFDSworICAiIFtQQVlMT0FE
X0NPTk5UUkFDS10iCisjZW5kaWYKICAgIiBidWlsdCBvbiAiIF9fREFURV9fCiA7CiAKQEAgLTky
LDYgKzEwNCwxMiBAQAogICAiLS1tb2RlIG0gICAgICAgIDogTWFqb3IgbW9kZSwgbSA9ICdwMnAn
IChkZWZhdWx0LCBwb2ludC10by1wb2ludCkgb3IgJ3NlcnZlcicuXG4iCiAgICItLXByb3RvIHAg
ICAgICAgOiBVc2UgcHJvdG9jb2wgcCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHBlZXIuXG4iCiAg
ICIgICAgICAgICAgICAgICAgICBwID0gdWRwIChkZWZhdWx0KSwgdGNwLXNlcnZlciwgb3IgdGNw
LWNsaWVudFxuIgorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAiICAgICAgICAgICAgICAgICAgcCA9
IHVkcDYsIHRjcDYtc2VydmVyLCBvciB0Y3A2LWNsaWVudCAoSVB2NilcbiIKKyNlbmRpZgorI2lm
ZGVmIFVTRV9QRl9VTklYCisgICIgICAgICAgICAgICAgICAgICBhbHNvIChleHBlcmltZW50YWwp
IHAgPSB1bml4LWRncmFtXG4iCisjZW5kaWYKICAgIi0tY29ubmVjdC1yZXRyeSBuIDogRm9yIC0t
cHJvdG8gdGNwLWNsaWVudCwgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdFxuIgogICAiICAgICAg
ICAgICAgICAgICAgYmV0d2VlbiBjb25uZWN0aW9uIHJldHJpZXMgKGRlZmF1bHQ9JWQpLlxuIgog
I2lmZGVmIEVOQUJMRV9IVFRQX1BST1hZCkBAIC0xNzEsNiArMTg5LDkgQEAKICAgIi0tcGluZy10
aW1lci1yZW06IFJ1biB0aGUgLS1waW5nLWV4aXQvLS1waW5nLXJlc3RhcnQgdGltZXIgb25seSBp
ZiB3ZSBoYXZlIGFcbiIKICAgIiAgICAgICAgICAgICAgICAgIHJlbW90ZSBhZGRyZXNzLlxuIgog
ICAiLS1waW5nIG4gICAgICAgIDogUGluZyByZW1vdGUgb25jZSBldmVyeSBuIHNlY29uZHMgb3Zl
ciBUQ1AvVURQIHBvcnQuXG4iCisjaWYgRU5BQkxFX0lQX1BLVElORk8KKyAgIi0tbXVsdGlob21l
ICAgICA6IENvbmZpZ3VyZSBhIG11bHRpLWhvbWVkIFVEUCBzZXJ2ZXIuXG4iCisjZW5kaWYKICAg
Ii0tZmFzdC1pbyAgICAgICA6IChleHBlcmltZW50YWwpIE9wdGltaXplIFRVTi9UQVAvVURQIHdy
aXRlcy5cbiIKICNpZmRlZiBFTkFCTEVfT0NDCiAgICItLWV4cGxpY2l0LWV4aXQtbm90aWZ5IG4g
OiAoZXhwZXJpbWVudGFsKSBvbiBleGl0LCBzZW5kIGV4aXQgc2lnbmFsIHRvIHJlbW90ZS5cbiIK
QEAgLTIwNCw2ICsyMjUsMTAgQEAKICNlbmRpZgogICAiLS1tc3NmaXggW25dICAgIDogU2V0IHVw
cGVyIGJvdW5kIG9uIFRDUCBNU1MsIGRlZmF1bHQgPSB0dW4tbXR1IHNpemVcbiIKICAgIiAgICAg
ICAgICAgICAgICAgIG9yIC0tZnJhZ21lbnQgbWF4IHZhbHVlLCB3aGljaGV2ZXIgaXMgbG93ZXIu
XG4iCisjaWYgVVNFX1BBWUxPQURfQ09OTlRSQUNLCisgICItLXRjcC1yZXRyYW5zIG4gOiBEcm9w
IFRDUCByZXRyYW5zbWlzc2lvbnMgZm9yIG4gc2Vjb25kcyB0aW1lIHNwYW4gbWF4XG4iCisgICIg
ICAgICAgICAgICAgICAgICAoZWcuIG49NjApLCB1c2VmdWwgZm9yIHJlbGlhYmxlIGxpbmtzLlxu
IgorI2VuZGlmCiAgICItLXNuZGJ1ZiBzaXplICAgOiBTZXQgdGhlIFRDUC9VRFAgc2VuZCBidWZm
ZXIgc2l6ZS5cbiIKICAgIi0tcmN2YnVmIHNpemUgICA6IFNldCB0aGUgVENQL1VEUCByZWNlaXZl
IGJ1ZmZlciBzaXplLlxuIgogICAiLS10eHF1ZXVlbGVuIG4gIDogU2V0IHRoZSB0dW4vdGFwIFRY
IHF1ZXVlIGxlbmd0aCB0byBuIChMaW51eCBvbmx5KS5cbiIKQEAgLTUzMSw2ICs1NTYsOSBAQAog
ICBvLT5saW5rX210dSA9IExJTktfTVRVX0RFRkFVTFQ7CiAgIG8tPm10dV9kaXNjb3Zlcl90eXBl
ID0gLTE7CiAgIG8tPm1zc2ZpeCA9IE1TU0ZJWF9ERUZBVUxUOworI2lmIFVTRV9QQVlMT0FEX0NP
Tk5UUkFDSworICBvLT50Y3BfcmV0cmFucyA9IDA7CisjZW5kaWYKICAgby0+cm91dGVfZGVsYXlf
d2luZG93ID0gMzA7CiAgIG8tPnJlc29sdmVfcmV0cnlfc2Vjb25kcyA9IFJFU09MVl9SRVRSWV9J
TkZJTklURTsKICNpZmRlZiBFTkFCTEVfT0NDCkBAIC05OTUsNiArMTAyMyw5IEBACiAgIFNIT1df
Qk9PTCAocGVyc2lzdF9rZXkpOwogCiAgIFNIT1dfSU5UIChtc3NmaXgpOworI2lmIFVTRV9QQVlM
T0FEX0NPTk5UUkFDSworICBTSE9XX0lOVCAodGNwX3JldHJhbnMpOworI2VuZGlmCiAgIAogI2lm
IFBBU1NUT1NfQ0FQQUJJTElUWQogICBTSE9XX0JPT0wgKHBhc3N0b3MpOwpAQCAtMTAzMyw2ICsx
MDY0LDEwIEBACiAgIFNIT1dfSU5UIChyY3ZidWYpOwogICBTSE9XX0lOVCAoc25kYnVmKTsKIAor
I2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIFNIT1dfQk9PTCAobXVsdGlob21lKTsKKyNlbmRpZgor
CiAjaWZkZWYgRU5BQkxFX0hUVFBfUFJPWFkKICAgaWYgKG8tPmh0dHBfcHJveHlfb3B0aW9ucykK
ICAgICBzaG93X2h0dHBfcHJveHlfb3B0aW9ucyAoby0+aHR0cF9wcm94eV9vcHRpb25zKTsKQEAg
LTEyNTIsNyArMTI4Nyw3IEBACiAgICAqIFNhbml0eSBjaGVjayBvbiBUQ1AgbW9kZSBvcHRpb25z
CiAgICAqLwogCi0gIGlmIChvcHRpb25zLT5jb25uZWN0X3JldHJ5X2RlZmluZWQgJiYgb3B0aW9u
cy0+cHJvdG8gIT0gUFJPVE9fVENQdjRfQ0xJRU5UKQorICBpZiAob3B0aW9ucy0+Y29ubmVjdF9y
ZXRyeV9kZWZpbmVkICYmIG9wdGlvbnMtPnByb3RvICE9IFBST1RPX1RDUHY0X0NMSUVOVCAmJiBv
cHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2Nl9DTElFTlQpCiAgICAgbXNnIChNX1VTQUdFLCAi
LS1jb25uZWN0LXJldHJ5IGRvZXNuJ3QgbWFrZSBzZW5zZSB1bmxlc3MgYWxzbyB1c2VkIHdpdGgg
LS1wcm90byB0Y3AtY2xpZW50Iik7CiAKICAgLyoKQEAgLTEyNjIsOCArMTI5Nyw4IEBACiAgICAg
bXNnIChNX1VTQUdFLCAib25seSBvbmUgb2YgLS10dW4tbXR1IG9yIC0tbGluay1tdHUgbWF5IGJl
IGRlZmluZWQgKG5vdGUgdGhhdCAtLWlmY29uZmlnIGltcGxpZXMgLS1saW5rLW10dSAlZCkiLCBM
SU5LX01UVV9ERUZBVUxUKTsKIAogI2lmZGVmIEVOQUJMRV9PQ0MKLSAgaWYgKG9wdGlvbnMtPnBy
b3RvICE9IFBST1RPX1VEUHY0ICYmIG9wdGlvbnMtPm10dV90ZXN0KQotICAgIG1zZyAoTV9VU0FH
RSwgIi0tbXR1LXRlc3Qgb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tcHJvdG8gdWRwIik7CisgIGlm
ICghcHJvdG9faXNfdWRwKG9wdGlvbnMtPnByb3RvKSAmJiBvcHRpb25zLT5tdHVfdGVzdCkKKyAg
ICBtc2cgKE1fVVNBR0UsICJPcHRpb25zIGVycm9yOiAtLW10dS10ZXN0IG9ubHkgbWFrZXMgc2Vu
c2Ugd2l0aCAtLXByb3RvIHVkcCBvciAtLXByb3RvIHVkcDYiKTsKICNlbmRpZgogCiAgIC8qCkBA
IC0xMzA3LDcgKzEzNDIsOCBAQAogCSAgY29uc3QgY2hhciAqcmVtb3RlID0gbC0+YXJyYXlbaV0u
aG9zdG5hbWU7CiAJICBjb25zdCBpbnQgcmVtb3RlX3BvcnQgPSBsLT5hcnJheVtpXS5wb3J0Owog
Ci0JICBpZiAoc3RyaW5nX2RlZmluZWRfZXF1YWwgKG9wdGlvbnMtPmxvY2FsLCByZW1vdGUpCisJ
ICBpZiAocHJvdG9faXNfbmV0KG9wdGlvbnMtPnByb3RvKQorCSAgICAgICYmIHN0cmluZ19kZWZp
bmVkX2VxdWFsIChvcHRpb25zLT5sb2NhbCwgcmVtb3RlKQogCSAgICAgICYmIG9wdGlvbnMtPmxv
Y2FsX3BvcnQgPT0gcmVtb3RlX3BvcnQpCiAJICAgIG1zZyAoTV9VU0FHRSwgIi0tcmVtb3RlIGFu
ZCAtLWxvY2FsIGFkZHJlc3NlcyBhcmUgdGhlIHNhbWUiKTsKIAkKQEAgLTEzNzQsMTYgKzE0MTAs
MTggQEAKICAgICovCiAKICNpZmRlZiBFTkFCTEVfRlJBR01FTlQKLSAgaWYgKG9wdGlvbnMtPnBy
b3RvICE9IFBST1RPX1VEUHY0ICYmIG9wdGlvbnMtPmZyYWdtZW50KQotICAgIG1zZyAoTV9VU0FH
RSwgIi0tZnJhZ21lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tcHJvdG8gdWRwIik7CisgIGlm
ICghcHJvdG9faXNfdWRwKG9wdGlvbnMtPnByb3RvKSAmJiBvcHRpb25zLT5mcmFnbWVudCkKKyAg
ICBtc2cgKE1fVVNBR0UsICItLWZyYWdtZW50IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLXByb3Rv
IHVkcCBvciAtLXByb3RvIHVkcDYiKTsKICNlbmRpZgorICBpZiAoIXByb3RvX2lzX25ldChvcHRp
b25zLT5wcm90bykgJiYgIW9wdGlvbnMtPmxvY2FsKQorICAgIG1zZyAoTV9VU0FHRSwgIi0tbG9j
YWwgTVVTVCBiZSBzcGVjaWZpZWQgd2l0aCAtLXByb3RvIHVuaXgtZGdyYW0gb3IgLS1wcm90byB1
bml4LXN0cmVhbSIpOwogCiAjaWZkZWYgRU5BQkxFX09DQwotICBpZiAob3B0aW9ucy0+cHJvdG8g
IT0gUFJPVE9fVURQdjQgJiYgb3B0aW9ucy0+ZXhwbGljaXRfZXhpdF9ub3RpZmljYXRpb24pCisg
IGlmICghcHJvdG9faXNfdWRwKG9wdGlvbnMtPnByb3RvKSAmJiBvcHRpb25zLT5leHBsaWNpdF9l
eGl0X25vdGlmaWNhdGlvbikKICAgICBtc2cgKE1fVVNBR0UsICItLWV4cGxpY2l0LWV4aXQtbm90
aWZ5IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLXByb3RvIHVkcCIpOwogI2VuZGlmCiAKLSAgaWYg
KCFvcHRpb25zLT5yZW1vdGVfbGlzdCAmJiBvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2NF9D
TElFTlQpCisgIGlmICghb3B0aW9ucy0+cmVtb3RlX2xpc3QgJiYgKG9wdGlvbnMtPnByb3RvID09
IFBST1RPX1RDUHY0X0NMSUVOVHx8b3B0aW9ucy0+cHJvdG89PSBQUk9UT19UQ1B2Nl9DTElFTlQp
KQogICAgIG1zZyAoTV9VU0FHRSwgIi0tcmVtb3RlIE1VU1QgYmUgdXNlZCBpbiBUQ1AgQ2xpZW50
IG1vZGUiKTsKIAogI2lmZGVmIEVOQUJMRV9IVFRQX1BST1hZCkBAIC0xNDAxLDcgKzE0MzksNyBA
QAogICAgIG1zZyAoTV9VU0FHRSwgIi0tc29ja3MtcHJveHkgY2FuIG5vdCBiZSB1c2VkIGluIFRD
UCBTZXJ2ZXIgbW9kZSIpOwogI2VuZGlmCiAKLSAgaWYgKG9wdGlvbnMtPnByb3RvID09IFBST1RP
X1RDUHY0X1NFUlZFUiAmJiByZW1vdGVfbGlzdF9sZW4gKG9wdGlvbnMtPnJlbW90ZV9saXN0KSA+
IDEpCisgIGlmICgob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSfHxvcHRpb25z
LT5wcm90byA9PSBQUk9UT19UQ1B2Nl9TRVJWRVIpICYmIHJlbW90ZV9saXN0X2xlbiAob3B0aW9u
cy0+cmVtb3RlX2xpc3QpID4gMSkKICAgICBtc2cgKE1fVVNBR0UsICJUQ1Agc2VydmVyIG1vZGUg
YWxsb3dzIGF0IG1vc3Qgb25lIC0tcmVtb3RlIGFkZHJlc3MiKTsKIAogI2lmIFAyTVBfU0VSVkVS
CkBAIC0xNDI2LDggKzE0NjQsOCBAQAogCW1zZyAoTV9VU0FHRSwgIi0tbW9kZSBzZXJ2ZXIgb25s
eSB3b3JrcyB3aXRoIC0tZGV2IHR1biBvciAtLWRldiB0YXAiKTsKICAgICAgIGlmIChvcHRpb25z
LT5wdWxsKQogCW1zZyAoTV9VU0FHRSwgIi0tcHVsbCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbW9k
ZSBzZXJ2ZXIiKTsKLSAgICAgIGlmICghKG9wdGlvbnMtPnByb3RvID09IFBST1RPX1VEUHY0IHx8
IG9wdGlvbnMtPnByb3RvID09IFBST1RPX1RDUHY0X1NFUlZFUikpCi0JbXNnIChNX1VTQUdFLCAi
LS1tb2RlIHNlcnZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAtLXByb3RvIHVkcCBvciAtLXBy
b3RvIHRjcC1zZXJ2ZXIiKTsKKyAgICAgIGlmICghKHByb3RvX2lzX3VkcChvcHRpb25zLT5wcm90
bykgfHwgb3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IG9wdGlvbnMtPnBy
b3RvID09IFBST1RPX1RDUHY2X1NFUlZFUiB8fCBvcHRpb25zLT5wcm90byA9PSBQUk9UT19VTklY
X0RHUkFNKSkKKwltc2cgKE1fVVNBR0UsICItLW1vZGUgc2VydmVyIGN1cnJlbnRseSBvbmx5IHN1
cHBvcnRzIC0tcHJvdG8gdWRwIG9yIC0tcHJvdG8gdGNwLXNlcnZlciAoYWxzbyB1ZHA2L3RjcDYp
Iik7CiAgICAgICBpZiAoIW9wdGlvbnMtPnRsc19zZXJ2ZXIpCiAJbXNnIChNX1VTQUdFLCAiLS1t
b2RlIHNlcnZlciByZXF1aXJlcyAtLXRscy1zZXJ2ZXIiKTsKICAgICAgIGlmIChvcHRpb25zLT5y
ZW1vdGVfbGlzdCkKQEAgLTE0NTAsOSArMTQ4OCw5IEBACiAJbXNnIChNX1VTQUdFLCAiLS1pbmV0
ZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbW9kZSBzZXJ2ZXIiKTsKICAgICAgIGlmIChvcHRpb25z
LT5pcGNoYW5nZSkKIAltc2cgKE1fVVNBR0UsICItLWlwY2hhbmdlIGNhbm5vdCBiZSB1c2VkIHdp
dGggLS1tb2RlIHNlcnZlciAodXNlIC0tY2xpZW50LWNvbm5lY3QgaW5zdGVhZCkiKTsKLSAgICAg
IGlmICghKG9wdGlvbnMtPnByb3RvID09IFBST1RPX1VEUHY0IHx8IG9wdGlvbnMtPnByb3RvID09
IFBST1RPX1RDUHY0X1NFUlZFUikpCi0JbXNnIChNX1VTQUdFLCAiLS1tb2RlIHNlcnZlciBjdXJy
ZW50bHkgb25seSBzdXBwb3J0cyAtLXByb3RvIHVkcCBvciAtLXByb3RvIHRjcC1zZXJ2ZXIiKTsK
LSAgICAgIGlmIChvcHRpb25zLT5wcm90byAhPSBQUk9UT19VRFB2NCAmJiAob3B0aW9ucy0+Y2Zf
bWF4IHx8IG9wdGlvbnMtPmNmX3BlcikpCisgICAgICBpZiAoIShwcm90b19pc19kZ3JhbShvcHRp
b25zLT5wcm90bykgfHwgb3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IG9w
dGlvbnMtPnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUiApKQorCW1zZyAoTV9VU0FHRSwgIi0t
bW9kZSBzZXJ2ZXIgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgLS1wcm90byB1ZHAgb3IgLS1wcm90
byB0Y3Atc2VydmVyIChhbHNvIHVkcDYvdGNwNikiKTsKKyAgICAgIGlmICghcHJvdG9faXNfdWRw
KG9wdGlvbnMtPnByb3RvKSAmJiAob3B0aW9ucy0+Y2ZfbWF4IHx8IG9wdGlvbnMtPmNmX3Blcikp
CiAJbXNnIChNX1VTQUdFLCAiLS1jb25uZWN0LWZyZXEgb25seSB3b3JrcyB3aXRoIC0tbW9kZSBz
ZXJ2ZXIgLS1wcm90byB1ZHAuICBUcnkgLS1tYXgtY2xpZW50cyBpbnN0ZWFkLiIpOwogICAgICAg
aWYgKGRldiAhPSBERVZfVFlQRV9UQVAgJiYgb3B0aW9ucy0+aWZjb25maWdfcG9vbF9uZXRtYXNr
KQogCW1zZyAoTV9VU0FHRSwgIlRoZSB0aGlyZCBwYXJhbWV0ZXIgdG8gLS1pZmNvbmZpZy1wb29s
IChuZXRtYXNrKSBpcyBvbmx5IHZhbGlkIGluIC0tZGV2IHRhcCBtb2RlIik7CkBAIC0xNTI2LDcg
KzE1NjQsNyBAQAogICAvKgogICAgKiBDaGVjayBjb25zaXN0ZW5jeSBvZiByZXBsYXkgb3B0aW9u
cwogICAgKi8KLSAgaWYgKChvcHRpb25zLT5wcm90byAhPSBQUk9UT19VRFB2NCkKKyAgaWYgKCgh
cHJvdG9faXNfdWRwKG9wdGlvbnMtPnByb3RvKSkKICAgICAgICYmIChvcHRpb25zLT5yZXBsYXlf
d2luZG93ICE9IGRlZmF1bHRzLnJlcGxheV93aW5kb3cKIAkgIHx8IG9wdGlvbnMtPnJlcGxheV90
aW1lICE9IGRlZmF1bHRzLnJlcGxheV90aW1lKSkKICAgICBtc2cgKE1fVVNBR0UsICItLXJlcGxh
eS13aW5kb3cgb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tcHJvdG8gdWRwIik7CkBAIC0xNjU1LDcg
KzE2OTMsNyBAQAogICAgKi8KICAgaWYgKG9wdGlvbnMtPnB1bGwKICAgICAgICYmIG9wdGlvbnMt
PnBpbmdfcmVjX3RpbWVvdXRfYWN0aW9uID09IFBJTkdfVU5ERUYKLSAgICAgICYmIG9wdGlvbnMt
PnByb3RvID09IFBST1RPX1VEUHY0KQorICAgICAgJiYgcHJvdG9faXNfdWRwKG9wdGlvbnMtPnBy
b3RvKSkKICAgICB7CiAgICAgICBvcHRpb25zLT5waW5nX3JlY190aW1lb3V0ID0gUFJFX1BVTExf
SU5JVElBTF9QSU5HX1JFU1RBUlQ7CiAgICAgICBvcHRpb25zLT5waW5nX3JlY190aW1lb3V0X2Fj
dGlvbiA9IFBJTkdfUkVTVEFSVDsKQEAgLTI5OTYsNiArMzAzNCwxMyBAQAogICAgICAgVkVSSUZZ
X1BFUk1JU1NJT04gKE9QVF9QX0dFTkVSQUwpOwogICAgICAgb3B0aW9ucy0+bWxvY2sgPSB0cnVl
OwogICAgIH0KKyNpZiBFTkFCTEVfSVBfUEtUSU5GTworICBlbHNlIGlmIChzdHJlcSAocFswXSwg
Im11bHRpaG9tZSIpKQorICAgIHsKKyAgICAgIFZFUklGWV9QRVJNSVNTSU9OIChPUFRfUF9HRU5F
UkFMKTsKKyAgICAgIG9wdGlvbnMtPm11bHRpaG9tZSA9IHRydWU7CisgICAgfQorI2VuZGlmCiAg
IGVsc2UgaWYgKHN0cmVxIChwWzBdLCAidmVyYiIpICYmIHBbMV0pCiAgICAgewogICAgICAgKytp
OwpAQCAtMzUwMCw2ICszNTQ1LDE0IEBACiAJb3B0aW9ucy0+bXNzZml4X2RlZmF1bHQgPSB0cnVl
OwogCiAgICAgfQorI2lmIFVTRV9QQVlMT0FEX0NPTk5UUkFDSworICBlbHNlIGlmIChzdHJlcSAo
cFswXSwgInRjcC1yZXRyYW5zIikgJiYgcFsxXSkKKyAgICB7CisgICAgICArK2k7CisgICAgICBW
RVJJRllfUEVSTUlTU0lPTiAoT1BUX1BfR0VORVJBTCk7CisgICAgICBvcHRpb25zLT50Y3BfcmV0
cmFucyA9IHBvc2l0aXZlX2F0b2kgKHBbMV0pOworICAgIH0KKyNlbmRpZgogI2lmZGVmIEVOQUJM
RV9PQ0MKICAgZWxzZSBpZiAoc3RyZXEgKHBbMF0sICJkaXNhYmxlLW9jYyIpKQogICAgIHsKZGlm
ZiAtdSBvcGVudnBuLTIvb3B0aW9ucy5oOjEuNCBvcGVudnBuLTIvb3B0aW9ucy5oOjEuNC40LjEK
LS0tIG9wdGlvbnMuaDoxLjQJVHVlIEFwciAxOSAxNToxNjo1MCAyMDA1CisrKyBvcHRpb25zLmgJ
TW9uIE1heSAgMiAxMDozMzo0OSAyMDA1CkBAIC0xNzgsNiArMTc4LDkgQEAKIAogICBpbnQgbXNz
Zml4OyAgICAgICAgICAgICAgICAgICAvKiBVcHBlciBib3VuZCBvbiBUQ1AgTVNTICovCiAgIGJv
b2wgbXNzZml4X2RlZmF1bHQ7ICAgICAgICAgIC8qIHRydWUgaWYgLS1tc3NmaXggd2FzIHN1cHBs
aWVkIHdpdGhvdXQgYSBwYXJhbWV0ZXIgKi8KKyNpZiBVU0VfUEFZTE9BRF9DT05OVFJBQ0sKKyAg
aW50IHRjcF9yZXRyYW5zOwkJLyogRHJvcCBUQ1AgcmV0cmFuc21pc3Npb25zIGZvciB0aGlzIHRp
bWUgd2luZG93IFtzZWNzXSAqLworI2VuZGlmCiAKICNpZiBQQVNTVE9TX0NBUEFCSUxJVFkKICAg
Ym9vbCBwYXNzdG9zOyAgICAgICAgICAgICAgICAgIApAQCAtMjIyLDYgKzIyNSwxMCBAQAogICAv
KiBvcHRpbWl6ZSBUVU4vVEFQL1VEUCB3cml0ZXMgKi8KICAgYm9vbCBmYXN0X2lvOwogCisjaWYg
RU5BQkxFX0lQX1BLVElORk8KKyAgYm9vbCBtdWx0aWhvbWU7CisjZW5kaWYKKyAKICNpZmRlZiBV
U0VfTFpPCiAgIGJvb2wgY29tcF9sem87CiAgIGJvb2wgY29tcF9sem9fYWRhcHRpdmU7CmRpZmYg
LXUgL2Rldi9udWxsIG9wZW52cG4tMi9wYXlsb2FkLWlubGluZS5oOjEuMS4yLjEKLS0tIC9kZXYv
bnVsbAlXZWQgSnVuIDIyIDEzOjAxOjI1IDIwMDUKKysrIHBheWxvYWQtaW5saW5lLmgJU3VuIE1h
eSAyOSAyMjoxNDozNiAyMDA1CkBAIC0wLDAgKzEsMjQgQEAKKyNpZm5kZWYgX1BBWUxPQURfSU5M
SU5FX0gKKyNkZWZpbmUgX1BBWUxPQURfSU5MSU5FX0gKKworI2lmZGVmIFVTRV9QQVlMT0FEX0NP
Tk5UUkFDSworLyoKKyAqIFNob3VsZCBydW4gY29ubnRyYWNrIEdDPworICovCitzdGF0aWMgaW5s
aW5lIHZvaWQKK2NoZWNrX3BheWxvYWRfZ2MgKHN0cnVjdCBjb250ZXh0ICpjKQoreworICB2b2lk
IGNoZWNrX3BheWxvYWRfZ2NfZG93b3JrIChzdHJ1Y3QgY29udGV4dCAqYyk7CisgIGlmICghYy0+
YzIucGF5bG9hZF9jb250ZXh0KQorICAgIHJldHVybjsKKyAgaWYgKCFldmVudF90aW1lb3V0X2Rl
ZmluZWQgKCZjLT5jMi5wYXlsb2FkX2NvbnRleHQtPmdjLndha2V1cCkpCisgICAgcmV0dXJuOwor
ICBpZiAoZXZlbnRfdGltZW91dF90cmlnZ2VyICgmYy0+YzIucGF5bG9hZF9jb250ZXh0LT5nYy53
YWtldXAsICZjLT5jMi50aW1ldmFsLCBFVFRfREVGQVVMVCkpCisgICAgY2hlY2tfcGF5bG9hZF9n
Y19kb3dvcmsgKGMpOworfQorCisjZW5kaWYKKyNlbmRpZiAvKiBfUEFZTE9BRF9JTkxJTkVfSCAq
LworLyogCit2aW06IGNpbm89ey41cyxcOi41cywrLjVzLHQwLGcwLF4tMixlLTIsbi0yLHAycywo
MCw9LjVzOnN3PTQ6dHM9ODpzdHM9NAorICovCmRpZmYgLXUgL2Rldi9udWxsIG9wZW52cG4tMi9w
YXlsb2FkLmM6MS4xLjEwLjE2Ci0tLSAvZGV2L251bGwJV2VkIEp1biAyMiAxMzowMToyNSAyMDA1
CisrKyBwYXlsb2FkLmMJV2VkIEp1biAyMiAxMTozNzoxNSAyMDA1CkBAIC0wLDAgKzEsNDk5IEBA
CisvKgorICoqKioqIFRISVMgSVMgV09SSyBJTiBQUk9HUkVTUyAoYW5kIGNvcnJlY3RseSBpZmRl
ZidkIG91dCkgLS1qam8gSnVuLzIwMDUgKioqKioKKyAqIAorICogIFBheWxvYWQgY29ubnRyYWNr
IG9wdGltaXphdGlvbnMgZm9yIE9wZW5WUE4KKyAqICAgIEludGVuZGVkIGZvciBmaWx0ZXJpbmcg
VENQIHJldHJhbnNtaXNzaW9ucyBvdmVyIHJlbGlhYmxlIGxpbmtzCisgKgorICogUVVJQ0sgY29w
eS1uLXBhc3RlIGZvciBqam86CisgKiBtYWtlIHBheWxvYWQubyBDRkxBR1M9Ii1EIFVTRV9QQVlM
T0FEX0NPTk5UUkFDSz0xIC1XYWxsICIKKyAqCisgKiAgQXV0aG9yOiBKdWFuSm8gQ2lhcmxhbnRl
IDxqam9AbWVuZG96YS5nb3YuYXI+CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW0gKHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluY2x1ZGVkIHdpdGgg
dGhpcworICogIGRpc3RyaWJ1dGlvbik7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z
dG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2lmZGVmIFdJTjMyCisjaW5jbHVkZSAi
Y29uZmlnLXdpbjMyLmgiCisjZWxzZQorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNp
ZmRlZiBVU0VfUEFZTE9BRF9DT05OVFJBQ0sKKworI2luY2x1ZGUgInN5c2hlYWQuaCIKKyNpbmNs
dWRlICJmb3J3YXJkLmgiCisjaW5jbHVkZSAibWVtZGJnLmgiCisKKyNpbmNsdWRlICJsaXN0Lmgi
CisjaW5jbHVkZSAiZm9yd2FyZC1pbmxpbmUuaCIKKyNpbmNsdWRlICJwYXlsb2FkLmgiCisjZGVm
aW5lIFBBWUxPQURfSEFTSF9TSVpFIDI1NiAvKiBTaG91bGQgYmUgY29uZmlndXJhYmxlIGJ5IG9w
dGlvbiAqLworCisjZGVmaW5lIFBBWUxPQURfTl9UQ1BTRUdTIDgKKy8qIAorICogc3RydWN0IHBh
eWxvYWRfdHVwbGVfaWQgOiB1bmlxIDUtdXBsYSAocHJvdG89PVRDUCBpcyBpbXBsaWNpdCkKKyAq
Lworc3RydWN0IHBheWxvYWRfdHVwbGVfaWQgeworICAvKiBCRUdJTiB1bmlxIFRDUCA1LXVwbGEg
aWQgKi8KKyAgdWludDMyX3QgaXBfc2FkZHIsIGlwX2RhZGRyOworICB1aW50MTZfdCB0Y3Bfc3Bv
cnQsIHRjcF9kcG9ydDsKKyAgLyogRU5EICAgdW5pcSBUQ1AgNS11cGxhIGlkICovCit9OworCisv
KiAKKyAqIHBheWxvYWRfdHVwbGU6IDEgcGVyIFRDUCBjb25uZWN0aW9uLCBjdXJyZW50bHkgb25s
eSBUWCBzaWRlIGhvb2sKKyAqLworc3RydWN0IHBheWxvYWRfdHVwbGUgeworICBzdHJ1Y3QgcGF5
bG9hZF90dXBsZV9pZCBpZDsKKyAgLyogcm91bmQgcm9iaW4gYXJyYXkgd2l0aCBQQVlMT0FEX05f
VENQU0VHUyBsYXRlc3QgdGNwIHNlZ21lbnRzOiAqLworICBzdHJ1Y3QgeworICAgIHN0cnVjdCBv
cGVudnBuX3RjcGhkciB0Y3BoOworICAgIGludCB0Y3BfbGVuOworICAgIGludCBoaXRzOworICB9
IHRjcF9zZWdbUEFZTE9BRF9OX1RDUFNFR1NdOworICBpbnQgdGNwX3NlZ19pZHg7IAkvKiBuZXh0
IHNsb3QgdG8gdXNlICovCisgIHRpbWVfdCBsYXN0X3VzZWQ7CisgIHRpbWVfdCBleHBpcmVzOwor
ICBpbnQgY29ubl9oaXRzOworICBpbnQgZGVsZXRlZDsKK307CisKKy8qIHNob3J0Y3V0cyBtYWNy
b3MgZm9yIGVhc2llciBwcmludGluZyAqLworI2RlZmluZSBQQVlMT0FEX0ZNVF9NSU4gIjB4JTA4
eDolZCAtPiAweCUwOHg6JWQiCisjZGVmaW5lIFBBWUxPQURfRk1UX01JTl9BUkdTKHBpcCwgcHRj
cCkgXAorCQkJCQludG9obChwaXAtPnNhZGRyKSwgbnRvaHMocHRjcC0+c291cmNlKSxcCisJCQkJ
CW50b2hsKHBpcC0+ZGFkZHIpLCBudG9ocyhwdGNwLT5kZXN0KQorCisjZGVmaW5lIFBBWUxPQURf
Rk1UX01FRCBQQVlMT0FEX0ZNVF9NSU4gIiAoc2VxPSUwOHgsIGFja19zZXE9JTA4eCkiCisjZGVm
aW5lIFBBWUxPQURfRk1UX01FRF9BUkdTKHBpcCwgcHRjcCkgUEFZTE9BRF9GTVRfTUlOX0FSR1Mo
cGlwLCBwdGNwKSAsXAorCQkJCQludG9obChwdGNwLT5zZXEpLG50b2hsKHB0Y3AtPmFja19zZXEp
CisKKyNkZWZpbmUgUEFZTE9BRF9GTVRfRlVMTCBQQVlMT0FEX0ZNVF9NRUQgIiB3PSVkIFslYyVj
JWMlYyVjJWNdIiAvKiBkb2Vzbid0IHNob3cgV1NDQUxFICovCisjZGVmaW5lIFBBWUxPQURfRk1U
X0ZVTExfQVJHUyhwaXAsIHB0Y3ApIFBBWUxPQURfRk1UX01FRF9BUkdTKHBpcCxwdGNwKSAsXAor
CQkJCQludG9ocyhwdGNwLT53aW5kb3cpLCBcCisJCQkJCU9QRU5WUE5fVENQSF9GSU5fTUFTSyAm
IHB0Y3AtPmZsYWdzID8gJ0YnIDogJy4nLCBcCisJCQkJCU9QRU5WUE5fVENQSF9TWU5fTUFTSyAm
IHB0Y3AtPmZsYWdzID8gJ1MnIDogJy4nLCBcCisJCQkJCU9QRU5WUE5fVENQSF9SU1RfTUFTSyAm
IHB0Y3AtPmZsYWdzID8gJ1InIDogJy4nLCBcCisJCQkJCU9QRU5WUE5fVENQSF9QU0hfTUFTSyAm
IHB0Y3AtPmZsYWdzID8gJ1AnIDogJy4nLCBcCisJCQkJCU9QRU5WUE5fVENQSF9BQ0tfTUFTSyAm
IHB0Y3AtPmZsYWdzID8gJ0EnIDogJy4nLCBcCisJCQkJCU9QRU5WUE5fVENQSF9VUkdfTUFTSyAm
IHB0Y3AtPmZsYWdzID8gJ1AnIDogJy4nIAorLyogaGFzaCByZWxhdGVkIGZ1bmN0aW9ucyAqLwor
c3RhdGljIGlubGluZSBjb25zdCB1aW50OF90ICoKK3BheWxvYWRfdHVwbGVfaGFzaF9wdHIgKGNv
bnN0IHN0cnVjdCBwYXlsb2FkX3R1cGxlICpwdCkKK3sKKyAgcmV0dXJuICh1aW50OF90ICopICZw
dC0+aWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKK3BheWxvYWRfdHVwbGVfaGFzaF9s
ZW4gKGNvbnN0IHN0cnVjdCBwYXlsb2FkX3R1cGxlICpwdCkKK3sKKyAgcmV0dXJuICh1aW50MzJf
dCkgc2l6ZW9mIChwdC0+aWQpOworfQorCit1aW50MzJfdCAKK3BheWxvYWRfdHVwbGVfaGFzaF9m
dW5jIChjb25zdCB2b2lkICprZXksIHVpbnQzMl90IGl2KQoreworICByZXR1cm4gaGFzaF9mdW5j
KHBheWxvYWRfdHVwbGVfaGFzaF9wdHIoKGNvbnN0IHN0cnVjdCBwYXlsb2FkX3R1cGxlICopa2V5
KSwKKwkJICAgcGF5bG9hZF90dXBsZV9oYXNoX2xlbigoY29uc3Qgc3RydWN0IHBheWxvYWRfdHVw
bGUgKilrZXkpLAorCQkgICBpdik7Cit9CisKK2Jvb2wKK3BheWxvYWRfdHVwbGVfY29tcGFyZV9m
dW5jKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZvaWQgKmtleTIpCit7CisgIHJldHVybiBtZW1j
bXAoJigoY29uc3Qgc3RydWN0IHBheWxvYWRfdHVwbGUgKilrZXkxKS0+aWQsIAorCQkmKChjb25z
dCBzdHJ1Y3QgcGF5bG9hZF90dXBsZSAqKWtleTIpLT5pZCwgCisJCXNpemVvZiAoKGNvbnN0IHN0
cnVjdCBwYXlsb2FkX3R1cGxlICopa2V5MSktPmlkKSA9PSAwOworfQorCisKKy8qIGNyZWF0ZSBh
IG5ldyBjb25udHJhY2sgZW50cnkgKi8KK3N0YXRpYyBzdHJ1Y3QgcGF5bG9hZF90dXBsZSAqCitw
YXlsb2FkX3R1cGxlX25ldyh2b2lkKQoreworICBzdHJ1Y3QgcGF5bG9hZF90dXBsZSAqcHQ7Cisg
IEFMTE9DX09CSl9DTEVBUihwdCwgc3RydWN0IHBheWxvYWRfdHVwbGUpOworICByZXR1cm4gcHQ7
Cit9Cit2b2lkCitwYXlsb2FkX3R1cGxlX2RlbGV0ZShzdHJ1Y3QgcGF5bG9hZF90dXBsZSAqcHQp
Cit7CisgIGZyZWUocHQpOworfQorCisvKiBpbml0aWFsaXplIGNvbm50cmFjayBlbnRyeSB3aXRo
IHtpcCx0Y3B9IGhkciBkYXRhICovCitzdGF0aWMgdm9pZAorcGF5bG9hZF90dXBsZV9pZF9pbml0
KHN0cnVjdCBwYXlsb2FkX3R1cGxlX2lkICpwdF9pZCwgY29uc3Qgc3RydWN0IG9wZW52cG5faXBo
ZHIgKnBpcCwgY29uc3Qgc3RydWN0IG9wZW52cG5fdGNwaGRyICpwdGNwKQoreworICBBU1NFUlQo
cHRfaWQpOworICBDTEVBUigqcHRfaWQpOworICBwdF9pZC0+aXBfc2FkZHI9cGlwLT5zYWRkcjsK
KyAgcHRfaWQtPmlwX2RhZGRyPXBpcC0+ZGFkZHI7CisgIHB0X2lkLT50Y3Bfc3BvcnQ9cHRjcC0+
c291cmNlOworICBwdF9pZC0+dGNwX2Rwb3J0PXB0Y3AtPmRlc3Q7Cit9CisKKy8qCisgKiBIb3cg
bWFueSBidWNrZXRzIGluIGhhc2ggdG8gZ2MgcGVyIHBhc3MuIChzaGFtZWxlc3NseSBzdG9sZW4g
ZnJvbSBtdWx0aS5jKQorICovCisjZGVmaW5lIFBBWUxPQURfR0NfRElWSVNPUiAgICAgMjU2ICAv
KiBIb3cgbWFueSBwYXNzZXMgdG8gY292ZXIgd2hvbGUgaGFzaCB0YWJsZSAqLworI2RlZmluZSBQ
QVlMT0FEX0dDX01JTiAgICAgICAgICAxNiAgLyogTWluaW11bSBudW1iZXIgb2YgYnVja2V0cyBw
ZXIgcGFzcyAqLworI2RlZmluZSBQQVlMT0FEX0dDX01BWCAgICAgICAgMTAyNCAgLyogTWF4aW11
bSBudW1iZXIgb2YgYnVja2V0cyBwZXIgcGFzcyAqLworc3RhdGljIGludAorcGF5bG9hZF9nY19i
dWNrZXRzX3Blcl9wYXNzIChpbnQgbl9idWNrZXRzKQoreworICByZXR1cm4gY29uc3RyYWluX2lu
dCAobl9idWNrZXRzIC8gUEFZTE9BRF9HQ19ESVZJU09SLCBQQVlMT0FEX0dDX01JTiwgUEFZTE9B
RF9HQ19NQVgpOworfQorCisvKgorICogQWRqdXN0IG5leHQgZXZlbnQgd2FrZXVwIGJhc2VkIG9u
IGhvdyBtYW55IGNvbm50cmFjayBlbnRyaWVzIHByZXNlbnQKKyAqIGN1cnJlbnRseSBpdCBwcm9n
cmFtcworICovCitzdGF0aWMgdm9pZAorcGF5bG9hZF9nY19hZGp1c3RfdGltZXJzKHN0cnVjdCBj
b250ZXh0ICpjKQoreworICBzdHJ1Y3QgcGF5bG9hZF9jb250ZXh0ICpwYz1jLT5jMi5wYXlsb2Fk
X2NvbnRleHQ7CisgIGludCBuPWhhc2hfbl9lbGVtZW50cyhwYy0+aGFzaCk7CisgIGlmIChuPjAp
CisgICAgeworICAgICAgaWYgKHBjLT5nYy53YWtldXAubiAhPSAxKQorCWV2ZW50X3RpbWVvdXRf
aW5pdCAoJnBjLT5nYy53YWtldXAsIDEsIG5vdyk7CisgICAgICBjb250ZXh0X3Jlc2NoZWR1bGVf
c2VjKGMsIDEpOworICAgICAgcmVzZXRfY29hcnNlX3RpbWVycyhjKTsKKyAgICAgIGRtc2coRF9Q
QVlMT0FEX0NPTk5UUkFDSywgInBheWxvYWRfZ2NfYWRqdXN0X3RpbWVyczogbl9lbGVtPSVkIHdh
a2V1cC5uPSVkIiwgbiwgcGMtPmdjLndha2V1cC5uKTsKKyAgICB9CisgIGVsc2UKKyAgICB7Cisg
ICAgICBldmVudF90aW1lb3V0X2NsZWFyKCZwYy0+Z2Mud2FrZXVwKTsKKyAgICAgIGRtc2coRF9Q
QVlMT0FEX0NPTk5UUkFDSywgInBheWxvYWRfZ2NfYWRqdXN0X3RpbWVyczogbl9lbGVtPSVkIHRp
bWVvdXRfY2xlYXJlZCIsIG4pOworICAgIH0KK30KKy8qCisgKiBnYXJiYWdlIGNvbGxlY3Qgb2xk
IChwdC0+ZGVsZXRlZCkgZW50cmllcworICovCitpbnQKK3BheWxvYWRfZ2NfcnVuKHN0cnVjdCBw
YXlsb2FkX2NvbnRleHQgKnBjLCBpbnQgc3RhcnRfYnVja2V0LCBpbnQgZW5kX2J1Y2tldCkKK3sK
KyAgaW50IG5fZGVsZXRlZD0wLCBuX3RvdGFsPTAsIG5fdG90YWxfaGl0cz0wOworICBzdHJ1Y3Qg
aGFzaF9lbGVtZW50ICpoZTsKKyAgc3RydWN0IGhhc2hfaXRlcmF0b3IgaGk7CisgIGlmIChzdGFy
dF9idWNrZXQgPCAwKQorICAgIHsKKyAgICAgIHN0YXJ0X2J1Y2tldCA9IDA7CisgICAgICBlbmRf
YnVja2V0ID0gaGFzaF9uX2J1Y2tldHMgKHBjLT5oYXNoKTsKKyAgICB9CisgIGhhc2hfaXRlcmF0
b3JfaW5pdF9yYW5nZSAocGMtPmhhc2gsICZoaSwgdHJ1ZSwgc3RhcnRfYnVja2V0LCBlbmRfYnVj
a2V0KTsKKyAgd2hpbGUgKChoZSA9IGhhc2hfaXRlcmF0b3JfbmV4dCAoJmhpKSkgIT0gTlVMTCkK
KyAgICB7CisgICAgICBzdHJ1Y3QgcGF5bG9hZF90dXBsZSAqcHQgPSAoc3RydWN0IHBheWxvYWRf
dHVwbGUgKikgaGUtPnZhbHVlOworICAgICAgbl90b3RhbCsrOworICAgICAgbl90b3RhbF9oaXRz
Kz1wdC0+Y29ubl9oaXRzOworICAgICAgaWYgKG5vdyA+IHB0LT5leHBpcmVzKQorCXB0LT5kZWxl
dGVkKys7CisgICAgICAvKgorICAgICAgICogY291bGQgaGF2ZSBiZWVuIG1hcmtlZCBzeW5jcm9u
b3VzbHkgKGZyb20gcGF5bG9hZF90Y3BfZGQgLi4uKSBvcgorICAgICAgICogYXN5bmMgKGhlcmUp
IGJ5IGFib3ZlIGNoZWNrCisgICAgICAgKi8KKyAgICAgIGlmIChwdC0+ZGVsZXRlZCkKKwl7CisJ
ICBuX2RlbGV0ZWQrKzsKKwkgIGRtc2coRF9QQVlMT0FEX0NPTk5UUkFDSywgInBheWxvYWRfZ2Nf
cnVuIERFTEVURUQgIiBQQVlMT0FEX0ZNVF9NSU4sIAorCSAgICAgIG50b2hsKHB0LT5pZC5pcF9z
YWRkciksIG50b2hzKHB0LT5pZC50Y3Bfc3BvcnQpLAorCSAgICAgIG50b2hsKHB0LT5pZC5pcF9k
YWRkciksIG50b2hzKHB0LT5pZC50Y3BfZHBvcnQpKTsKKwkgIHBheWxvYWRfdHVwbGVfZGVsZXRl
KHB0KTsKKwkgIGhhc2hfaXRlcmF0b3JfZGVsZXRlX2VsZW1lbnQgKCZoaSk7CisJfQorICAgIH0K
KyAgaGFzaF9pdGVyYXRvcl9mcmVlICgmaGkpOworICBkbXNnKERfUEFZTE9BRF9DT05OVFJBQ0ss
ICJwYXlsb2FkX2djX3J1biglZCwlZCkgREVMRVRFRCAlZC8lZCBlbnRyaWVzLCBuX2VsZW09JWQs
IHRvdGFsX2hpdHM9JWQiICwgCisgICAgICBzdGFydF9idWNrZXQsIGVuZF9idWNrZXQsCisgICAg
ICBuX2RlbGV0ZWQsIG5fdG90YWwsIGhhc2hfbl9lbGVtZW50cyhwYy0+aGFzaCksIG5fdG90YWxf
aGl0cyk7CisgIHJldHVybiBuX2RlbGV0ZWQ7Cit9CisKK3N0YXRpYyB2b2lkCitwYXlsb2FkX2dj
X2Rvd29yayhzdHJ1Y3QgcGF5bG9hZF9jb250ZXh0ICpwYykKK3sKKyAgaWYgKHBjLT5nYy5idWNr
ZXRfYmFzZSA+PSBoYXNoX25fYnVja2V0cyhwYy0+aGFzaCkpCisgICAgcGMtPmdjLmJ1Y2tldF9i
YXNlID0gMDsKKyAgcGF5bG9hZF9nY19ydW4ocGMsIHBjLT5nYy5idWNrZXRfYmFzZSwgcGMtPmdj
LmJ1Y2tldF9iYXNlK3BjLT5nYy5idWNrZXRzX3Blcl9wYXNzKTsKKyAgcGMtPmdjLmJ1Y2tldF9i
YXNlKz0gcGMtPmdjLmJ1Y2tldHNfcGVyX3Bhc3M7Cit9CisKKy8qCisgKiBjb25udHJhY2sgY2xl
YW5lciBmcm9tIGV2ZW50IHRpY2tzCisgKi8KK3ZvaWQKK2NoZWNrX3BheWxvYWRfZ2NfZG93b3Jr
IChzdHJ1Y3QgY29udGV4dCAqYykKK3sKKyAgc3RydWN0IHBheWxvYWRfY29udGV4dCAqcGM9Yy0+
YzIucGF5bG9hZF9jb250ZXh0OworICBBU1NFUlQocGMpOworICBwYXlsb2FkX2djX2Rvd29yayhw
Yyk7CisgIHBheWxvYWRfZ2NfYWRqdXN0X3RpbWVycyhjKTsKK30KKworLyoKKyAqIExvb3Agb3Zl
ciBUQ1Agb3B0aW9ucywgY2FsbCBjYWxsYmFjaygpIGlmIG1hdGNoZXMgcGFzc2VkIFRDUCBvcHQg
ICh3aWxkY2FyZDogT1BFTlZQTl9UQ1BPUFRfQU5ZKQorICoKKyAqIFNvbWUgZXhhbXBsZXM6Cisg
KiAtIGlzIFNBQ0sgcHJlc2VudD8KKyAqICAgIGlmKHRjcF9vcHRfcHJvY2VzcyhidWYsIE9QRU5W
UE5fVENQT1BUX1NBQ0ssIE5VTEwsIE5VTEwsIHBpcCwgcHRjcCkpIC4uLgorICogLSBpZiBTQUNL
IGlzIHByZXNlbnQsIGNhbGwgbXlmdW5jKC4uLiwgbXlhcmcsIC4uLikKKyAqICAgIGlmKHRjcF9v
cHRfcHJvY2VzcyhidWYsIE9QRU5WUE5fVENQT1BUX1NBQ0ssIG15ZnVuYywgbXlhcmcsIHBpcCwg
cHRjcCkpIC4uLgorICogLSBpcyBhbnkgb3B0aW9uIHByZXNlbnQ/IChleGNlcHQgRU9MLCBOT1Ap
CisgKiAgICBpZih0Y3Bfb3B0X3Byb2Nlc3MoYnVmLCBPUEVOVlBOX1RDUE9QVF9BTlksIE5VTEws
IE5VTEwsIHBpcCwgcHRjcCkpIC4uLgorICogLSBmb3IgZWFjaCBvcHRpb24gKGV4Y2VwdCBFT0ws
IE5PUCkgY2FsbCBteWZ1bmMoLi4uLCBteWFyZywgLi4uKQorICogICAgaWYodGNwX29wdF9wcm9j
ZXNzKGJ1ZiwgT1BFTlZQTl9UQ1BPUFRfQU5ZLCBteWZ1bmMsIG15YXJnLCBwaXAsIHB0Y3ApKSAu
Li4KKyAqICAgIAorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK3RjcF9vcHRfcHJvY2VzcyAoc3Ry
dWN0IGJ1ZmZlciAqYnVmLCBpbnQgb3B0bnVtLCAgYm9vbCAoKmNhbGxiYWNrKSh1aW50OF90ICpv
cHQsIGludCBvcHRsZW4sIHZvaWQgKmNhbGxiYWNrX2FyZyksIHZvaWQgKmNhbGxiYWNrX2FyZykK
K3sKKyAgaW50IGhsZW4sIG9sZW4sIG9wdGxlbjsKKyAgdWludDhfdCAqb3B0OworICBzdHJ1Y3Qg
b3BlbnZwbl90Y3BoZHIgKnB0Y3A7CisKKyAgQVNTRVJUIChCTEVOIChidWYpID49IChpbnQpIHNp
emVvZiAoc3RydWN0IG9wZW52cG5fdGNwaGRyKSk7CisKKyAgdmVyaWZ5X2FsaWduXzQgKGJ1Zik7
CisKKyAgcHRjcCA9IChzdHJ1Y3Qgb3BlbnZwbl90Y3BoZHIgKikgQlBUUiAoYnVmKTsKKyAgaGxl
biA9IE9QRU5WUE5fVENQSF9HRVRfRE9GRiAocHRjcC0+ZG9mZl9yZXMpOworCisgIC8qIEludmFs
aWQgaGVhZGVyIGxlbmd0aCBvciBoZWFkZXIgd2l0aG91dCBvcHRpb25zLiAqLworICBpZiAoaGxl
biA8PSAoaW50KSBzaXplb2YgKHN0cnVjdCBvcGVudnBuX3RjcGhkcikKKyAgICAgIHx8IGhsZW4g
PiBCTEVOIChidWYpKQorICAgIHJldHVybiBmYWxzZTsKKworICBmb3IgKG9sZW4gPSBobGVuIC0g
c2l6ZW9mIChzdHJ1Y3Qgb3BlbnZwbl90Y3BoZHIpLAorCSBvcHQgPSAodWludDhfdCAqKShwdGNw
ICsgMSk7CisgICAgICAgb2xlbiA+IDA7CisgICAgICAgb2xlbiAtPSBvcHRsZW4sIG9wdCArPSBv
cHRsZW4pIHsKKyAgICBpZiAoKm9wdCA9PSBPUEVOVlBOX1RDUE9QVF9FT0wpCisgICAgICBicmVh
azsKKyAgICBlbHNlIGlmICgqb3B0ID09IE9QRU5WUE5fVENQT1BUX05PUCkKKyAgICAgIG9wdGxl
biA9IDE7CisgICAgZWxzZSB7CisgICAgICBvcHRsZW4gPSAqKG9wdCArIDEpOworICAgICAgaWYg
KG9wdGxlbiA8PSAwIHx8IG9wdGxlbiA+IG9sZW4pCisgICAgICAgIGJyZWFrOworICAgICAgLyog
CisgICAgICAgKiBUQ1Agb3B0IGZvdW5kLCBjYWxsYmFjaygpIHBhc3NlZCBmdW5jdGlvbiBhbmQg
cmV0dXJuIHRydWUgaWYgY2FsbGJhY2sgc3VjY2VkZWQgCisgICAgICAgKi8KKworICAgICAgaWYg
KG9wdG51bSA9PSBPUEVOVlBOX1RDUE9QVF9BTlkgfHwgb3B0bnVtID09ICpvcHQpIHsKKwlpZiAo
Y2FsbGJhY2spIHsKKwkgIGlmIChjYWxsYmFjayhvcHQsIG9wdGxlbiwgY2FsbGJhY2tfYXJnKSkK
KwkgICAgcmV0dXJuIHRydWU7CisJfSBlbHNlIAorCSAgLyogaWYgbm8gY2FsbGJhY2sgZnVuY3Rp
b24sIGp1c3QgcmV0dXJuIHRydWUgKG9wdCBmb3VuZCkgKi8KKwkgIHJldHVybiB0cnVlOworICAg
ICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bAordGNwX2RkX29wdF9za2lwX3NlZ21lbnQodWludDhfdCAqb3B0LCBpbnQgb3B0bGVuLCB2b2lk
ICphcmcpCit7CisgIHN3aXRjaCgqb3B0KQorICAgIHsKKyAgICBjYXNlIE9QRU5WUE5fVENQT1BU
X1NBQ0s6CisgICAgY2FzZSBPUEVOVlBOX1RDUE9QVF9XU0NBTEU6CisgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgIHJldHVybiBmYWxzZTsKK30KKy8qCisgKiBjYXJlZnVsIGxvZ2ljOiBUQ1Ag
bWF5IHVwZGF0ZSB3aW5kb3csIHByb2JlIDAtd2luZG93IGFuZCBhbGlrZQorICogeWV0IGNvdWxk
IGJlIHNlZW4gYXMgYSByZXRyYW5zbWlzc2lvbgorICovCisKK3N0YXRpYyBpbmxpbmUgaW50Citw
YXlsb2FkX3RjcF9kZF9kcm9wX2hpdChzdHJ1Y3QgY29udGV4dCAqYywgY29uc3Qgc3RydWN0IG9w
ZW52cG5faXBoZHIgKnBpcCwgY29uc3Qgc3RydWN0IG9wZW52cG5fdGNwaGRyICpwdGNwLCBzdHJ1
Y3QgYnVmZmVyICpidWYpCit7CisgIGJvb2wgcmVzdWx0PWZhbHNlOworICBzdHJ1Y3QgaGFzaF9l
bGVtZW50ICpoZTsKKyAgdWludDMyX3QgaHY7CisgIHN0cnVjdCBoYXNoX2J1Y2tldCAqYnVja2V0
OworICBzdHJ1Y3QgcGF5bG9hZF9jb250ZXh0ICpwYz1jLT5jMi5wYXlsb2FkX2NvbnRleHQ7Cisg
IHN0cnVjdCBwYXlsb2FkX3R1cGxlX2lkIHB0X2lkOworICBzdHJ1Y3QgcGF5bG9hZF90dXBsZSAq
cHQ7CisgIHN0cnVjdCBvcGVudnBuX3RjcGhkciB0Y3BoID0gKnB0Y3A7IC8qIGxvY2FsIGNvcHk6
IHN0b3JlZCB0Y3BoIGlzIE5PVCBlcXVhbCB0byBzbmlmZmVkIG9uZSAqLworICBpbnQgaXBfdG90
bGVuPW50b2hzKHBpcC0+dG90X2xlbik7CisgIGludCB0Y3BfbGVuPWlwX3RvdGxlbi1PUEVOVlBO
X0lQSF9HRVRfTEVOIChwaXAtPnZlcnNpb25fbGVuKTsgLyogdGNwaGRyK0RBVEEgKi8KKworICBB
U1NFUlQocGMpOworICB0Y3BoLmNoZWNrPTA7IC8qIFRDUCBjaGtzdW0gd2lsbCB2YXJ5IHdpdGgg
ZWcuIHRzdGFtcCAqLworICBwYXlsb2FkX3R1cGxlX2lkX2luaXQoJnB0X2lkLCBwaXAsIHB0Y3Ap
OworCisgIGh2PSBoYXNoX3ZhbHVlIChwYy0+aGFzaCwgJnB0X2lkKTsKKyAgYnVja2V0PSBoYXNo
X2J1Y2tldCAocGMtPmhhc2gsIGh2KTsKKyAgaGFzaF9idWNrZXRfbG9jayAoYnVja2V0KTsKKyAg
aGUgPSBoYXNoX2xvb2t1cF9mYXN0IChwYy0+aGFzaCwgYnVja2V0LCAmcHRfaWQsIGh2KTsKKyAg
aWYgKGhlKQorICAgIHsKKyAgICAgIGludCBpOworICAgICAgcHQgPSAoc3RydWN0IHBheWxvYWRf
dHVwbGUgKikgaGUtPnZhbHVlOworICAgICAgLyoKKyAgICAgICAqIEF2b2lkIGZpbHRlcmluZyBv
dXQgaWY6CisgICAgICAgKiAtIFNZTiBvciBGSU4KKyAgICAgICAqIC0gemVybyB3aW5kb3cgCisg
ICAgICAgKiAtIHplcm8gd2luZG93IHByb2JlIChkYXRhIHNpemU9MSkKKyAgICAgICAqIC0gU0FD
SyBvciBXU0NBTEUgb3B0aW9uIHByZXNlbnQKKyAgICAgICAqLworICAgICAgaWYgKCAocHRjcC0+
ZmxhZ3MgJiAoT1BFTlZQTl9UQ1BIX1NZTl9NQVNLfE9QRU5WUE5fVENQSF9GSU5fTUFTSykpCisJ
ICAgfHwgdGNwaC53aW5kb3cgPT0gMAorCSAgIHx8IChpcF90b3RsZW4tT1BFTlZQTl9UQ1BIX0dF
VF9ET0ZGKHRjcGguZG9mZl9yZXMpKT09MQorCSAgIHx8IHRjcF9vcHRfcHJvY2VzcyhidWYsIE9Q
RU5WUE5fVENQT1BUX0FOWSwgdGNwX2RkX29wdF9za2lwX3NlZ21lbnQsIE5VTEwpKQorCXsKKwkg
IGRtc2coRF9QQVlMT0FEX0NPTk5UUkFDSywgInBheWxvYWRfdGNwX2RkX2Ryb3BfaGl0OiBTS0lQ
IHNlZ21lbnQgIiBQQVlMT0FEX0ZNVF9GVUxMLCAKKwkgICAgICBQQVlMT0FEX0ZNVF9GVUxMX0FS
R1MocGlwLCBwdGNwKSk7CisJICBnb3RvIGRvbmU7CisJfQorCisgICAgICAvKiBzZWFyY2ggZm9y
IHNlZW4gVENQIGhlYWRlciAqLworICAgICAgZm9yKGk9MDtpPFBBWUxPQURfTl9UQ1BTRUdTO2kr
KykKKwl7CisJICAvKiAKKwkgICAqIGlmOgorCSAgICogCXNhbWUgc2VxIG51bXMgKG9wdGltaXph
dGlvbiB0byBhdm9pZCBuZXh0IGNoZWNrcyBpZiB1bmVxdWFsKQorCSAgICogCUFORCBzYW1lIHRj
cCBzZWdtZW50IGhlYWRlciAody9vIG9wdGlvbnMpCisJICAgKiAJQU5EIHNhbWUgdGNwIGhlYWRl
ciBsZW4gKGluY2wuIG9wdGlvbnMgc2l6ZXMpCisJICAgKgorCSAgICovCisJICBpZiAocHQtPnRj
cF9zZWdbaV0udGNwaC5zZXE9PXRjcGguc2VxIAorCSAgICAgICYmIG1lbWNtcChwdC0+dGNwX3Nl
ZytpLCAmdGNwaCwgc2l6ZW9mIHRjcGgpPT0wCisJICAgICAgJiYgcHQtPnRjcF9zZWdbaV0udGNw
X2xlbiA9PSB0Y3BfbGVuKQorCSAgICB7CisJICAgICAgcHQtPnRjcF9zZWdbaV0uaGl0cysrOwor
CSAgICAgIHB0LT5jb25uX2hpdHMrKzsKKwkgICAgICBkbXNnKERfUEFZTE9BRF9DT05OVFJBQ0ss
ICJwYXlsb2FkX3RjcF9kZF9kcm9wX2hpdCBISVQhIGNvbm5faGl0cz0lZCB0aW1lbGVmdD0lbGQg
IiBQQVlMT0FEX0ZNVF9GVUxMLCAKKwkJICBwdC0+Y29ubl9oaXRzLCBwdC0+ZXhwaXJlcy1ub3cs
CisJCSAgUEFZTE9BRF9GTVRfRlVMTF9BUkdTKHBpcCwgcHRjcCkpOworCSAgICAgIHJlc3VsdD10
cnVlOwkvKiBfSVNfIGEgZHVwICovCisJICAgICAgZ290byBkb25lOworCSAgICB9CisJfQorICAg
ICAgaWYgKHB0LT5leHBpcmVzIDwgbm93KQorCXsKKwkgIHB0LT5kZWxldGVkPXRydWU7CisJICBn
b3RvIG91dDsKKwl9CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgZG1zZyhEX1BBWUxPQURf
Q09OTlRSQUNLLCAicGF5bG9hZF90Y3BfZGRfZHJvcF9oaXQgQ1JFQVRFRCAiIFBBWUxPQURfRk1U
X0ZVTEwsIFBBWUxPQURfRk1UX0ZVTExfQVJHUyhwaXAsIHB0Y3ApKTsKKyAgICAgIHB0ID0gcGF5
bG9hZF90dXBsZV9uZXcoKTsKKyAgICAgIHB0LT5pZCA9IHB0X2lkOworICAgICAgaGFzaF9hZGRf
ZmFzdChwYy0+aGFzaCwgYnVja2V0LCAmcHRfaWQsIGh2LCBwdCk7CisgICAgICBwYXlsb2FkX2dj
X2FkanVzdF90aW1lcnMoYyk7CisgICAgfQorCisgIC8qIE5vdCBmb3VuZCBvciBuZXcgLi4uIHVz
ZSBuZXh0IGF2YWlsYWJsZSBzbG90ICovCisgIHB0LT50Y3Bfc2VnW3B0LT50Y3Bfc2VnX2lkeF0u
dGNwaD10Y3BoOworICBwdC0+dGNwX3NlZ1twdC0+dGNwX3NlZ19pZHhdLnRjcF9sZW49dGNwX2xl
bjsKKyAgcHQtPnRjcF9zZWdbcHQtPnRjcF9zZWdfaWR4XS5oaXRzPTA7CisgIHB0LT50Y3Bfc2Vn
X2lkeCsrOworICBwdC0+dGNwX3NlZ19pZHglPVBBWUxPQURfTl9UQ1BTRUdTOworCitkb25lOgor
ICAvKiByZWZyZXNoIGVudHJ5ICovCisgIHB0LT5leHBpcmVzPW5vdytwYy0+dGNwX3JldHJhbnM7
CisgIHB0LT5sYXN0X3VzZWQ9bm93OworCitvdXQ6CisgIGhhc2hfYnVja2V0X3VubG9jayAoYnVj
a2V0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEV4dGVybmFsIGludGVyZmFjZTog
cGF5bG9hZF90Y3BfcmV0cmFuc19kcm9wKCkgcmV0dXJucyB0cnVlCisgKiBpZiB0aGlzIHNlZ21l
bnQgSVMgYSBkdXAgKHNob3VsZCBiZSBkcm9wcGVkIGJ5IGNhbGxlcikKKyAqLworYm9vbAorcGF5
bG9hZF90Y3BfcmV0cmFuc19kcm9wIChzdHJ1Y3QgY29udGV4dCAqYywgc3RydWN0IGJ1ZmZlciAq
YnVmKQoreworICBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9pcGhkciAqcGlwOworICBpbnQgaGxlbjsK
KyAgaWYgKEJMRU4gKGJ1ZikgPCAoaW50KSBzaXplb2YgKHN0cnVjdCBvcGVudnBuX2lwaGRyKSkK
KyAgICByZXR1cm4gZmFsc2U7CisgIHBpcCA9IChzdHJ1Y3Qgb3BlbnZwbl9pcGhkciAqKSBCUFRS
IChidWYpOworCisgIGhsZW4gPSBPUEVOVlBOX0lQSF9HRVRfTEVOIChwaXAtPnZlcnNpb25fbGVu
KTsKKworICBpZiAocGlwLT5wcm90b2NvbCA9PSBPUEVOVlBOX0lQUFJPVE9fVENQCisgICAgICAm
JiBudG9ocyAocGlwLT50b3RfbGVuKSA9PSBCTEVOIChidWYpCisgICAgICAmJiAobnRvaHMgKHBp
cC0+ZnJhZ19vZmYpICYgT1BFTlZQTl9JUF9PRkZNQVNLKSA9PSAwCisgICAgICAmJiBobGVuIDw9
IEJMRU4gKGJ1ZikKKyAgICAgICYmIEJMRU4gKGJ1ZikgLSBobGVuCisgICAgICA+PSAoaW50KSBz
aXplb2YgKHN0cnVjdCBvcGVudnBuX3RjcGhkcikpCisgICAgeworICAgICAgc3RydWN0IGJ1ZmZl
ciBuZXdidWYgPSAqYnVmOworICAgICAgaWYgKGJ1Zl9hZHZhbmNlICgmbmV3YnVmLCBobGVuKSkK
Kwl7CisJICBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl90Y3BoZHIgKnB0Y3AgPSAoc3RydWN0IG9wZW52
cG5fdGNwaGRyICopIEJQVFIgKCZuZXdidWYpOworCSAgLyoKKwkgICAgIGRtc2coRF9QQVlMT0FE
X0NPTk5UUkFDSywgInBheWxvYWRfdGNwX3JldHJhbnNfZHJvcCA6ICIgUEFZTE9BRF9GTVRfRlVM
TCwgUEFZTE9BRF9GTVRfRlVMTF9BUkdTKHBpcCwgcHRjcCkpOworCSAgICAgKi8KKwkgIGlmIChj
LT5jMi5wYXlsb2FkX2NvbnRleHQgJiYgcGF5bG9hZF90Y3BfZGRfZHJvcF9oaXQoYywgcGlwLCBw
dGNwLCBidWYpKQorCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgfQorICByZXR1cm4gZmFsc2U7
CisKK30KKy8qIEluaXRpYWxpemUgcGF5bG9hZCAoY29ubnRyYWNrKSBoYXNoIHRhYmxlICovCitz
dHJ1Y3QgcGF5bG9hZF9jb250ZXh0ICoKK3BheWxvYWRfbmV3KGludCB0Y3BfcmV0cmFucykKK3sK
KyAgc3RydWN0IHBheWxvYWRfY29udGV4dCAqcGM7CisgIEFTU0VSVCh0Y3BfcmV0cmFucyk7CisK
KyAgQUxMT0NfT0JKX0NMRUFSKHBjLCBzdHJ1Y3QgcGF5bG9hZF9jb250ZXh0KTsKKyAgcGMtPnRj
cF9yZXRyYW5zID0gdGNwX3JldHJhbnM7CisgIHBjLT5oYXNoPSBoYXNoX2luaXQoUEFZTE9BRF9I
QVNIX1NJWkUsIHBheWxvYWRfdHVwbGVfaGFzaF9mdW5jLCBwYXlsb2FkX3R1cGxlX2NvbXBhcmVf
ZnVuYyk7CisgIHBjLT5nYy5idWNrZXRzX3Blcl9wYXNzID0gcGF5bG9hZF9nY19idWNrZXRzX3Bl
cl9wYXNzKFBBWUxPQURfSEFTSF9TSVpFKTsKKyNpZiAwK1dJUAorICBwYy0+cGF5bG9hZF9jb250
ZXh0PnNjaGVkdWxlID0gc2NoZWR1bGVfaW5pdCgpOworICBwYy0+cGF5bG9hZF9jb250ZXh0Pm1h
eF90Y3BfY29ubnMgPSA2NDsgLyogWFhYOiBvYnZpb3VzbHkgbXVzdCBiZSBjb25maWd1cmFibGUs
IHRlc3QgNG5vdyAqLworI2VuZGlmCisgIGV2ZW50X3RpbWVvdXRfY2xlYXIoJnBjLT5nYy53YWtl
dXApOworICByZXR1cm4gcGM7Cit9Cit2b2lkIHBheWxvYWRfZnJlZShzdHJ1Y3QgcGF5bG9hZF9j
b250ZXh0ICpwYykKK3sKKyAgc3RydWN0IGhhc2hfaXRlcmF0b3IgaGk7CisgIHN0cnVjdCBoYXNo
X2VsZW1lbnQgKmhlOworICBBU1NFUlQocGMpOworCisgIGV2ZW50X3RpbWVvdXRfY2xlYXIoJnBj
LT5nYy53YWtldXApOworICBoYXNoX2l0ZXJhdG9yX2luaXQgKHBjLT5oYXNoLCAmaGksIHRydWUp
OworICB3aGlsZSAoKGhlID0gaGFzaF9pdGVyYXRvcl9uZXh0ICgmaGkpKSkKKyAgICB7CisgICAg
ICBzdHJ1Y3QgcGF5bG9hZF90dXBsZSAqcHQgPSAoc3RydWN0IHBheWxvYWRfdHVwbGUgKikgaGUt
PnZhbHVlOworICAgICAgcHQtPmRlbGV0ZWQrKzsKKyAgICB9CisgIGhhc2hfaXRlcmF0b3JfZnJl
ZSAoJmhpKTsKKyAgcGF5bG9hZF9nY19ydW4ocGMsIC0xLCAwKTsKKyAgZnJlZShwYyk7Cit9CisK
KyNlbmRpZgorLyogCit2aW06IGNpbm89ey41cyxcOi41cywrLjVzLHQwLGcwLF4tMixlLTIsbi0y
LHAycywoMCw9LjVzOnN3PTQ6dHM9ODpzdHM9NAorICovCmRpZmYgLXUgL2Rldi9udWxsIG9wZW52
cG4tMi9wYXlsb2FkLmg6MS4xLjEwLjUKLS0tIC9kZXYvbnVsbAlXZWQgSnVuIDIyIDEzOjAxOjI1
IDIwMDUKKysrIHBheWxvYWQuaAlTdW4gTWF5IDI5IDIyOjE0OjIyIDIwMDUKQEAgLTAsMCArMSwy
MiBAQAorI2lmbmRlZiBfUEFZTE9BRF9ICisjZGVmaW5lIF9QQVlMT0FEX0gKK3N0cnVjdCBwYXls
b2FkX2NvbnRleHQgeworICBzdHJ1Y3QgaGFzaCAqaGFzaDsKKyAgc3RydWN0IHNjaGVkdWxlICpz
Y2hlZHVsZTsgLyogdW51c2VkIGJ5IG5vdyAqLworICBpbnQgbWF4X3RjcF9jb25uczsgLyogdW51
c2VkIGJ5IG5vdyAqLworICBpbnQgdGNwX3JldHJhbnM7CisgIHN0cnVjdCB7CisgICAgdGltZV90
IHBlcl9zZWNvbmRfdHJpZ2dlcjsKKyAgICBpbnQgYnVja2V0X2Jhc2U7CisgICAgaW50IGJ1Y2tl
dHNfcGVyX3Bhc3M7CisgICAgc3RydWN0IGV2ZW50X3RpbWVvdXQgd2FrZXVwOworICB9IGdjOwor
fTsKKworc3RydWN0IHBheWxvYWRfY29udGV4dCAqIHBheWxvYWRfbmV3KGludCB0Y3BfcmV0cmFu
cyk7Cit2b2lkIHBheWxvYWRfZnJlZShzdHJ1Y3QgcGF5bG9hZF9jb250ZXh0ICopOworaW50IHBh
eWxvYWRfdGNwX3JldHJhbnNfZHJvcChzdHJ1Y3QgY29udGV4dCAqYywgc3RydWN0IGJ1ZmZlciAq
YnVmKTsKKyNlbmRpZiAvKiBfUEFZTE9BRF9IICovCisvKiAKK3ZpbTogY2lubz17LjVzLFw6LjVz
LCsuNXMsdDAsZzAsXi0yLGUtMixuLTIscDJzLCgwLD0uNXM6c3c9NDp0cz04OnN0cz00CisgKi8K
ZGlmZiAtdSBvcGVudnBuLTIvcHJvdG8uaDoxLjMgb3BlbnZwbi0yL3Byb3RvLmg6MS4zLjYuMQot
LS0gcHJvdG8uaDoxLjMJVHVlIEFwciAxOSAxNToxNjo1MSAyMDA1CisrKyBwcm90by5oCVN1biBN
YXkgMjkgMjI6MTQ6MjIgMjAwNQpAQCAtMTIxLDYgKzEyMSwxMSBAQAogI2RlZmluZQlPUEVOVlBO
X1RDUE9QVF9NQVhTRUcgIDIKICNkZWZpbmUgT1BFTlZQTl9UQ1BPTEVOX01BWFNFRyA0CiAKKyNk
ZWZpbmUJT1BFTlZQTl9UQ1BPUFRfV1NDQUxFCTMKKyNkZWZpbmUJT1BFTlZQTl9UQ1BPUFRfU0FD
Swk1CisjZGVmaW5lIE9QRU5WUE5fVENQT1BUX1RJTUVTVEFNUAk4CisjZGVmaW5lCU9QRU5WUE5f
VENQT1BUX0FOWQkyNTUKKwogLyoKICAqIFRoZSBmb2xsb3dpbmcgbWFjcm8gaXMgdXNlZCB0byB1
cGRhdGUgYW4KICAqIGludGVybmV0IGNoZWNrc3VtLiAgImFjYyIgaXMgYSAzMi1iaXQKZGlmZiAt
dSBvcGVudnBuLTIvc29ja2V0LmM6MS40IG9wZW52cG4tMi9zb2NrZXQuYzoxLjQuNC4xNwotLS0g
c29ja2V0LmMJMjAwNS0xMS0wNCAyMDoyODo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrIHNvY2tldC5j
CTIwMDctMDYtMjcgMTY6MzE6MjkuNTczNjM2MDAwICswMjAwCkBAIC0yMzYsOSArMjM2LDEwIEBA
CiAKIHN0YXRpYyB2b2lkCiB1cGRhdGVfcmVtb3RlIChjb25zdCBjaGFyKiBob3N0LAotCSAgICAg
ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsCisJICAgICAgIHN0cnVjdCBvcGVudnBuX3NvY2th
ZGRyICphZGRyLAogCSAgICAgICBib29sICpjaGFuZ2VkKQogeworICBpZiAoYWRkci0+YWRkci5z
YS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewogICBpZiAoaG9zdCAmJiBhZGRyKQogICAgIHsKICAg
ICAgIGNvbnN0IGluX2FkZHJfdCBuZXdfYWRkciA9IGdldGFkZHIgKApAQCAtMjQ3LDEyICsyNDgs
MTMgQEAKIAkJCQkJICAxLAogCQkJCQkgIE5VTEwsCiAJCQkJCSAgTlVMTCk7Ci0gICAgICBpZiAo
bmV3X2FkZHIgJiYgYWRkci0+c2luX2FkZHIuc19hZGRyICE9IG5ld19hZGRyKQorICAgICAgaWYg
KG5ld19hZGRyICYmIGFkZHItPmFkZHIuaW4uc2luX2FkZHIuc19hZGRyICE9IG5ld19hZGRyKQog
CXsKLQkgIGFkZHItPnNpbl9hZGRyLnNfYWRkciA9IG5ld19hZGRyOworCSAgYWRkci0+YWRkci5p
bi5zaW5fYWRkci5zX2FkZHIgPSBuZXdfYWRkcjsKIAkgICpjaGFuZ2VkID0gdHJ1ZTsKIAl9CiAg
ICAgfQorICB9CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTQzOSwyMiArNDQxLDc5IEBACiB9CiAKIHN0
YXRpYyBzb2NrZXRfZGVzY3JpcHRvcl90Ci1jcmVhdGVfc29ja2V0X3VkcCAodm9pZCkKK2NyZWF0
ZV9zb2NrZXRfdWRwIChjb25zdCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAgIHNvY2tldF9kZXNj
cmlwdG9yX3Qgc2Q7CiAKICAgaWYgKChzZCA9IHNvY2tldCAoUEZfSU5FVCwgU09DS19ER1JBTSwg
SVBQUk9UT19VRFApKSA8IDApCiAgICAgbXNnIChNX1NPQ0tFUlIsICJVRFA6IENhbm5vdCBjcmVh
dGUgVURQIHNvY2tldCIpOworI2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIGVsc2UgaWYgKGZsYWdz
ICYgU0ZfVVNFX0lQX1BLVElORk8pCisgICAgeworICAgICAgaW50IHBhZCA9IDE7CisgICAgICBz
ZXRzb2Nrb3B0IChzZCwgU09MX0lQLCBJUF9QS1RJTkZPLCAodm9pZCopJnBhZCwgc2l6ZW9mKHBh
ZCkpOworICAgIH0KKyNlbmRpZgorICByZXR1cm4gc2Q7Cit9CisKKyNpZmRlZiBVU0VfUEZfSU5F
VDYKK3N0YXRpYyBzb2NrZXRfZGVzY3JpcHRvcl90CitjcmVhdGVfc29ja2V0X3VkcDYgKGNvbnN0
IHVuc2lnbmVkIGludCBmbGFncykKK3sKKyAgc29ja2V0X2Rlc2NyaXB0b3JfdCBzZDsKKworICBp
ZiAoKHNkID0gc29ja2V0IChQRl9JTkVUNiwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDAp
CisgICAgbXNnIChNX1NPQ0tFUlIsICJVRFA6IENhbm5vdCBjcmVhdGUgVURQNiBzb2NrZXQiKTsK
KyNpZiBFTkFCTEVfSVBfUEtUSU5GTworICBlbHNlIGlmIChmbGFncyAmIFNGX1VTRV9JUF9QS1RJ
TkZPKQorICAgIHsKKyAgICAgIGludCBwYWQgPSAxOworICAgICAgc2V0c29ja29wdCAoc2QsIElQ
UFJPVE9fSVBWNiwgSVBWNl9QS1RJTkZPLCAodm9pZCopJnBhZCwgc2l6ZW9mKHBhZCkpOworICAg
IH0KKyNlbmRpZgogICByZXR1cm4gc2Q7CiB9CiAKK3N0YXRpYyBzb2NrZXRfZGVzY3JpcHRvcl90
CitjcmVhdGVfc29ja2V0X3RjcDYgKHZvaWQpCit7CisgIHNvY2tldF9kZXNjcmlwdG9yX3Qgc2Q7
CisKKyAgaWYgKChzZCA9IHNvY2tldCAoUEZfSU5FVDYsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RD
UCkpIDwgMCkKKyAgICBtc2cgKE1fU09DS0VSUiwgIkNhbm5vdCBjcmVhdGUgVENQNiBzb2NrZXQi
KTsKKworICAvKiBzZXQgU09fUkVVU0VBRERSIG9uIHNvY2tldCAqLworICB7CisgICAgaW50IG9u
ID0gMTsKKyAgICBpZiAoc2V0c29ja29wdCAoc2QsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwK
KwkJICAgICh2b2lkICopICZvbiwgc2l6ZW9mIChvbikpIDwgMCkKKyAgICAgIG1zZyAoTV9TT0NL
RVJSLCAiVENQOiBDYW5ub3Qgc2V0c29ja29wdCBTT19SRVVTRUFERFIgb24gVENQNiBzb2NrZXQi
KTsKKyAgfQorCisgIHJldHVybiBzZDsKK30KKworI2VuZGlmCisjaWZkZWYgVVNFX1BGX1VOSVgK
K3N0YXRpYyBzb2NrZXRfZGVzY3JpcHRvcl90CitjcmVhdGVfc29ja2V0X3VuaXhfZGdyYW0gKHZv
aWQpCit7CisgIHNvY2tldF9kZXNjcmlwdG9yX3Qgc2Q7CisKKyAgaWYgKChzZCA9IHNvY2tldCAo
UEZfVU5JWCwgU09DS19ER1JBTSwgMCkpIDwgMCkKKyAgICBtc2cgKE1fU09DS0VSUiwgIlBGX1VO
SVg6IENhbm5vdCBjcmVhdGUgZGF0YWdyYW0gc29ja2V0Iik7CisgIHJldHVybiBzZDsKK30KKyNl
bmRpZgorCiBzdGF0aWMgdm9pZAogY3JlYXRlX3NvY2tldCAoc3RydWN0IGxpbmtfc29ja2V0ICpz
b2NrKQogewogICAvKiBjcmVhdGUgc29ja2V0ICovCiAgIGlmIChzb2NrLT5pbmZvLnByb3RvID09
IFBST1RPX1VEUHY0KQogICAgIHsKLSAgICAgIHNvY2stPnNkID0gY3JlYXRlX3NvY2tldF91ZHAg
KCk7CisgICAgICBzb2NrLT5zZCA9IGNyZWF0ZV9zb2NrZXRfdWRwIChzb2NrLT5zb2NrZXRfZmxh
Z3MpOwogCiAjaWZkZWYgRU5BQkxFX1NPQ0tTCiAgICAgICBpZiAoc29jay0+c29ja3NfcHJveHkp
CkBAIC00NjYsNiArNTI1LDIzIEBACiAgICAgewogICAgICAgc29jay0+c2QgPSBjcmVhdGVfc29j
a2V0X3RjcCAoKTsKICAgICB9CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgIGVsc2UgaWYgKHNvY2st
PmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjZfU0VSVkVSCisJICAgfHwgc29jay0+aW5mby5wcm90
byA9PSBQUk9UT19UQ1B2Nl9DTElFTlQpCisgICAgeworICAgICAgc29jay0+c2QgPSBjcmVhdGVf
c29ja2V0X3RjcDYgKCk7CisgICAgfQorICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBS
T1RPX1VEUHY2KQorICAgIHsKKyAgICAgIHNvY2stPnNkID0gY3JlYXRlX3NvY2tldF91ZHA2IChz
b2NrLT5zb2NrZXRfZmxhZ3MpOworICAgIH0KKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9VTklYCisg
IGVsc2UgaWYgKHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVU5JWF9ER1JBTSkKKyAgICB7Cisg
ICAgICBzb2NrLT5zZCA9IGNyZWF0ZV9zb2NrZXRfdW5peF9kZ3JhbSgpOworICAgIH0KKyNlbmRp
ZgogICBlbHNlCiAgICAgewogICAgICAgQVNTRVJUICgwKTsKQEAgLTQ3OCw3ICs1NTQsNyBAQAog
CiBzdGF0aWMgdm9pZAogc29ja2V0X2RvX2xpc3RlbiAoc29ja2V0X2Rlc2NyaXB0b3JfdCBzZCwK
LQkJICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmxvY2FsLAorCQkgIGNvbnN0IHN0cnVjdCBv
cGVudnBuX3NvY2thZGRyICpsb2NhbCwKIAkJICBib29sIGRvX2xpc3RlbiwKIAkJICBib29sIGRv
X3NldF9ub25ibG9jaykKIHsKQEAgLTQ4Niw3ICs1NjIsNyBAQAogICBpZiAoZG9fbGlzdGVuKQog
ICAgIHsKICAgICAgIG1zZyAoTV9JTkZPLCAiTGlzdGVuaW5nIGZvciBpbmNvbWluZyBUQ1AgY29u
bmVjdGlvbiBvbiAlcyIsIAotCSAgIHByaW50X3NvY2thZGRyIChsb2NhbCwgJmdjKSk7CisJICAg
cHJpbnRfbGlua19zb2NrYWRkciAobG9jYWwsICZnYykpOwogICAgICAgaWYgKGxpc3RlbiAoc2Qs
IDEpKQogCW1zZyAoTV9TT0NLRVJSLCAiVENQOiBsaXN0ZW4oKSBmYWlsZWQiKTsKICAgICB9CkBA
IC01MDAsMTYgKzU3NiwyMyBAQAogCiBzb2NrZXRfZGVzY3JpcHRvcl90CiBzb2NrZXRfZG9fYWNj
ZXB0IChzb2NrZXRfZGVzY3JpcHRvcl90IHNkLAotCQkgIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmVt
b3RlLAorCQkgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphY3QsCiAJCSAgY29uc3QgYm9vbCBu
b3dhaXQpCiB7Ci0gIHNvY2tsZW5fdCByZW1vdGVfbGVuID0gc2l6ZW9mICgqcmVtb3RlKTsKKyAg
LyogYWZfYWRkcl9zaXplIFdJTEwgcmV0dXJuIDAgaW4gdGhpcyBjYXNlIGlmIEFGcyBvdGhlciB0
aGFuIEFGX0lORVQKKyAgICogYXJlIGNvbXBpbGVkIGJlY2F1c2UgYWN0IGlzIGVtcHR5IGhlcmUu
CisgICAqIGNvdWxkIHVzZSBnZXRzb2NrbmFtZSgpIHRvIHN1cHBvcnQgbGF0ZXIgcmVtb3RlX2xl
biBjaGVjaworICAgKi8KKyAgc29ja2xlbl90IHJlbW90ZV9sZW5fYWYgPSBhZl9hZGRyX3NpemUo
YWN0LT5hZGRyLnNhLnNhX2ZhbWlseSk7CisgIHNvY2tsZW5fdCByZW1vdGVfbGVuID0gc2l6ZW9m
KGFjdC0+YWRkcik7CiAgIHNvY2tldF9kZXNjcmlwdG9yX3QgbmV3X3NkID0gU09DS0VUX1VOREVG
SU5FRDsKIAorICBDTEVBUiAoKmFjdCk7CisKICNpZmRlZiBIQVZFX0dFVFBFRVJOQU1FCiAgIGlm
IChub3dhaXQpCiAgICAgewotICAgICAgbmV3X3NkID0gZ2V0cGVlcm5hbWUgKHNkLCAoc3RydWN0
IHNvY2thZGRyICopIHJlbW90ZSwgJnJlbW90ZV9sZW4pOworICAgICAgbmV3X3NkID0gZ2V0cGVl
cm5hbWUgKHNkLCAmYWN0LT5hZGRyLnNhLCAmcmVtb3RlX2xlbik7CiAKICAgICAgIGlmICghc29j
a2V0X2RlZmluZWQgKG5ld19zZCkpCiAJbXNnIChEX0xJTktfRVJST1JTIHwgTV9FUlJOT19TT0NL
LCAiVENQOiBnZXRwZWVybmFtZSgpIGZhaWxlZCIpOwpAQCAtNTIyLDcgKzYwNSw3IEBACiAjZW5k
aWYKICAgZWxzZQogICAgIHsKLSAgICAgIG5ld19zZCA9IGFjY2VwdCAoc2QsIChzdHJ1Y3Qgc29j
a2FkZHIgKikgcmVtb3RlLCAmcmVtb3RlX2xlbik7CisgICAgICBuZXdfc2QgPSBhY2NlcHQgKHNk
LCAmYWN0LT5hZGRyLnNhLCAmcmVtb3RlX2xlbik7CiAgICAgfQogCiAjaWYgMCAvKiBGb3IgZGVi
dWdnaW5nIG9ubHksIHRlc3QgdGhlIGVmZmVjdCBvZiBhY2NlcHQoKSBmYWlsdXJlcyAqLwpAQCAt
NTM4LDcgKzYyMSw3IEBACiAgICAgewogICAgICAgbXNnIChEX0xJTktfRVJST1JTIHwgTV9FUlJO
T19TT0NLLCAiVENQOiBhY2NlcHQoJWQpIGZhaWxlZCIsIHNkKTsKICAgICB9Ci0gIGVsc2UgaWYg
KHJlbW90ZV9sZW4gIT0gc2l6ZW9mICgqcmVtb3RlKSkKKyAgZWxzZSBpZiAocmVtb3RlX2xlbl9h
ZiAmJiByZW1vdGVfbGVuICE9IHJlbW90ZV9sZW5fYWYpIC8qIG9ubHkgY2hlY2sgaWYgd2UgaGF2
ZSByZW1vdGVfbGVuX2FmIT0wICovCiAgICAgewogICAgICAgbXNnIChEX0xJTktfRVJST1JTLCAi
VENQOiBSZWNlaXZlZCBzdHJhbmdlIGluY29taW5nIGNvbm5lY3Rpb24gd2l0aCB1bmtub3duIGFk
ZHJlc3MgbGVuZ3RoPSVkIiwgcmVtb3RlX2xlbik7CiAgICAgICBvcGVudnBuX2Nsb3NlX3NvY2tl
dCAobmV3X3NkKTsKQEAgLTU0OCwyNyArNjMxLDI5IEBACiB9CiAKIHN0YXRpYyB2b2lkCi10Y3Bf
Y29ubmVjdGlvbl9lc3RhYmxpc2hlZCAoY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpyZW1vdGUp
Cit0Y3BfY29ubmVjdGlvbl9lc3RhYmxpc2hlZCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2Fk
ZHIgKnJlbW90ZSkKIHsKICAgc3RydWN0IGdjX2FyZW5hIGdjID0gZ2NfbmV3ICgpOwogICBtc2cg
KE1fSU5GTywgIlRDUCBjb25uZWN0aW9uIGVzdGFibGlzaGVkIHdpdGggJXMiLCAKLSAgICAgICBw
cmludF9zb2NrYWRkciAocmVtb3RlLCAmZ2MpKTsKKyAgICAgICBwcmludF9saW5rX3NvY2thZGRy
IChyZW1vdGUsICZnYykpOwogICBnY19mcmVlICgmZ2MpOwogfQogCiBzdGF0aWMgaW50CiBzb2Nr
ZXRfbGlzdGVuX2FjY2VwdCAoc29ja2V0X2Rlc2NyaXB0b3JfdCBzZCwKLQkJICAgICAgc3RydWN0
IHNvY2thZGRyX2luICpyZW1vdGUsCisJCSAgICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICph
Y3QsCiAJCSAgICAgIGNvbnN0IGNoYXIgKnJlbW90ZV9keW5hbWljLAogCQkgICAgICBib29sICpy
ZW1vdGVfY2hhbmdlZCwKLQkJICAgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpsb2NhbCwK
KwkJICAgICAgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmxvY2FsLAogCQkgICAgICBi
b29sIGRvX2xpc3RlbiwKIAkJICAgICAgYm9vbCBub3dhaXQsCiAJCSAgICAgIHZvbGF0aWxlIGlu
dCAqc2lnbmFsX3JlY2VpdmVkKQogewogICBzdHJ1Y3QgZ2NfYXJlbmEgZ2MgPSBnY19uZXcgKCk7
Ci0gIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfdmVyaWZ5ID0gKnJlbW90ZTsKKyAgc3RydWN0
IG9wZW52cG5fc29ja2FkZHIgcmVtb3RlX3ZlcmlmeTsKICAgaW50IG5ld19zZCA9IFNPQ0tFVF9V
TkRFRklORUQ7CisgIGFkZHJfY29weV9zYSgmcmVtb3RlX3ZlcmlmeSwgYWN0KTsKKyAgQ0xFQVIg
KCphY3QpOwogCiAgIHNvY2tldF9kb19saXN0ZW4gKHNkLCBsb2NhbCwgZG9fbGlzdGVuLCB0cnVl
KTsKIApAQCAtNjAxLDE3ICs2ODYsMTcgQEAKIAkgIGNvbnRpbnVlOwogCX0KIAotICAgICAgbmV3
X3NkID0gc29ja2V0X2RvX2FjY2VwdCAoc2QsIHJlbW90ZSwgbm93YWl0KTsKKyAgICAgIG5ld19z
ZCA9IHNvY2tldF9kb19hY2NlcHQgKHNkLCBhY3QsIG5vd2FpdCk7CiAKICAgICAgIGlmIChzb2Nr
ZXRfZGVmaW5lZCAobmV3X3NkKSkKIAl7CiAJICB1cGRhdGVfcmVtb3RlIChyZW1vdGVfZHluYW1p
YywgJnJlbW90ZV92ZXJpZnksIHJlbW90ZV9jaGFuZ2VkKTsKIAkgIGlmIChhZGRyX2RlZmluZWQg
KCZyZW1vdGVfdmVyaWZ5KQotCSAgICAgICYmICFhZGRyX21hdGNoICgmcmVtb3RlX3ZlcmlmeSwg
cmVtb3RlKSkKKwkgICAgICAmJiAhYWRkcl9tYXRjaCAoJnJlbW90ZV92ZXJpZnksIGFjdCkpCiAJ
ICAgIHsKIAkgICAgICBtc2cgKE1fV0FSTiwKIAkJICAgIlRDUCBOT1RFOiBSZWplY3RlZCBjb25u
ZWN0aW9uIGF0dGVtcHQgZnJvbSAlcyBkdWUgdG8gLS1yZW1vdGUgc2V0dGluZyIsCi0JCSAgIHBy
aW50X3NvY2thZGRyIChyZW1vdGUsICZnYykpOworCQkgICBwcmludF9saW5rX3NvY2thZGRyIChh
Y3QsICZnYykpOwogCSAgICAgIGlmIChvcGVudnBuX2Nsb3NlX3NvY2tldCAobmV3X3NkKSkKIAkJ
bXNnIChNX1NPQ0tFUlIsICJUQ1A6IGNsb3NlIHNvY2tldCBmYWlsZWQgKG5ld19zZCkiKTsKIAkg
ICAgfQpAQCAtNjI0LDcgKzcwOSw3IEBACiAgIGlmICghbm93YWl0ICYmIG9wZW52cG5fY2xvc2Vf
c29ja2V0IChzZCkpCiAgICAgbXNnIChNX1NPQ0tFUlIsICJUQ1A6IGNsb3NlIHNvY2tldCBmYWls
ZWQgKHNkKSIpOwogCi0gIHRjcF9jb25uZWN0aW9uX2VzdGFibGlzaGVkIChyZW1vdGUpOworICB0
Y3BfY29ubmVjdGlvbl9lc3RhYmxpc2hlZCAoYWN0KTsKIAogICBnY19mcmVlICgmZ2MpOwogICBy
ZXR1cm4gbmV3X3NkOwpAQCAtNjMyLDcgKzcxNyw3IEBACiAKIHN0YXRpYyB2b2lkCiBzb2NrZXRf
Y29ubmVjdCAoc29ja2V0X2Rlc2NyaXB0b3JfdCAqc2QsCi0JCXN0cnVjdCBzb2NrYWRkcl9pbiAq
cmVtb3RlLAorCQlzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqcmVtb3RlLAogCQlzdHJ1Y3QgcmVt
b3RlX2xpc3QgKnJlbW90ZV9saXN0LAogCQljb25zdCBjaGFyICpyZW1vdGVfZHluYW1pYywKIAkJ
Ym9vbCAqcmVtb3RlX2NoYW5nZWQsCkBAIC02NDIsMTEgKzcyNywxMSBAQAogICBzdHJ1Y3QgZ2Nf
YXJlbmEgZ2MgPSBnY19uZXcgKCk7CiAKICAgbXNnIChNX0lORk8sICJBdHRlbXB0aW5nIHRvIGVz
dGFibGlzaCBUQ1AgY29ubmVjdGlvbiB3aXRoICVzIiwgCi0gICAgICAgcHJpbnRfc29ja2FkZHIg
KHJlbW90ZSwgJmdjKSk7CisgICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAocmVtb3RlLCAmZ2Mp
KTsKICAgd2hpbGUgKHRydWUpCiAgICAgewotICAgICAgY29uc3QgaW50IHN0YXR1cyA9IGNvbm5l
Y3QgKCpzZCwgKHN0cnVjdCBzb2NrYWRkciAqKSByZW1vdGUsCi0JCQkJICBzaXplb2YgKCpyZW1v
dGUpKTsKKyAgICAgIGNvbnN0IGludCBzdGF0dXMgPSBjb25uZWN0ICgqc2QsICZyZW1vdGUtPmFk
ZHIuc2EsCisJCQkJICBhZl9hZGRyX3NpemUocmVtb3RlLT5hZGRyLnNhLnNhX2ZhbWlseSkpOwog
CiAgICAgICBnZXRfc2lnbmFsIChzaWduYWxfcmVjZWl2ZWQpOwogICAgICAgaWYgKCpzaWduYWxf
cmVjZWl2ZWQpCkBAIC02NTcsMjYgKzc0MiwzMyBAQAogCiAgICAgICBtc2cgKERfTElOS19FUlJP
UlMgfCBNX0VSUk5PX1NPQ0ssCiAJICAgIlRDUDogY29ubmVjdCB0byAlcyBmYWlsZWQsIHdpbGwg
dHJ5IGFnYWluIGluICVkIHNlY29uZHMiLAotCSAgIHByaW50X3NvY2thZGRyIChyZW1vdGUsICZn
YyksCisJICAgcHJpbnRfbGlua19zb2NrYWRkciAocmVtb3RlLCAmZ2MpLAogCSAgIGNvbm5lY3Rf
cmV0cnlfc2Vjb25kcyk7CiAKICAgICAgIG9wZW52cG5fY2xvc2Vfc29ja2V0ICgqc2QpOwogICAg
ICAgb3BlbnZwbl9zbGVlcCAoY29ubmVjdF9yZXRyeV9zZWNvbmRzKTsKIAorICAgICAgc3dpdGNo
KHJlbW90ZS0+YWRkci5zYS5zYV9mYW1pbHkpIHsKK2Nhc2UgQUZfSU5FVDoKICAgICAgIGlmIChy
ZW1vdGVfbGlzdCkKIAl7CiAJICByZW1vdGVfbGlzdF9uZXh0IChyZW1vdGVfbGlzdCk7CiAJICBy
ZW1vdGVfZHluYW1pYyA9IHJlbW90ZV9saXN0X2hvc3QgKHJlbW90ZV9saXN0KTsKLQkgIHJlbW90
ZS0+c2luX3BvcnQgPSBodG9ucyAocmVtb3RlX2xpc3RfcG9ydCAocmVtb3RlX2xpc3QpKTsKKwkg
IHJlbW90ZS0+YWRkci5pbi5zaW5fcG9ydCA9IGh0b25zIChyZW1vdGVfbGlzdF9wb3J0IChyZW1v
dGVfbGlzdCkpOwogCSAgKnJlbW90ZV9jaGFuZ2VkID0gdHJ1ZTsKIAl9CiAKICAgICAgICpzZCA9
IGNyZWF0ZV9zb2NrZXRfdGNwICgpOwogICAgICAgdXBkYXRlX3JlbW90ZSAocmVtb3RlX2R5bmFt
aWMsIHJlbW90ZSwgcmVtb3RlX2NoYW5nZWQpOworICAgICAgYnJlYWs7CitkZWZhdWx0OgorICAg
ICAgbXNnKE1fRkFUQUwsICJPbmx5IFRDUCBpcyBzdXBwb3J0ZWQgZm9yIGNvbm5lY3Rpb24gb3Jp
ZW50ZWQsIHNhX2ZhbWlseT0lZCIsIAorICAgICAgCXJlbW90ZS0+YWRkci5zYS5zYV9mYW1pbHkp
OworICAgIH0KICAgICB9CiAKICAgbXNnIChNX0lORk8sICJUQ1AgY29ubmVjdGlvbiBlc3RhYmxp
c2hlZCB3aXRoICVzIiwgCi0gICAgICAgcHJpbnRfc29ja2FkZHIgKHJlbW90ZSwgJmdjKSk7Cisg
ICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAocmVtb3RlLCAmZ2MpKTsKIAogIGRvbmU6CiAgIGdj
X2ZyZWUgKCZnYyk7CkBAIC03MjMsMjYgKzgxNSw2MiBAQAogcmVzb2x2ZV9iaW5kX2xvY2FsIChz
dHJ1Y3QgbGlua19zb2NrZXQgKnNvY2spCiB7CiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25l
dyAoKTsKKyAgaW50IGFkZHJsZW47CiAKICAgLyogcmVzb2x2ZSBsb2NhbCBhZGRyZXNzIGlmIHVu
ZGVmaW5lZCAqLwogICBpZiAoIWFkZHJfZGVmaW5lZCAoJnNvY2stPmluZm8ubHNhLT5sb2NhbCkp
CiAgICAgewotICAgICAgc29jay0+aW5mby5sc2EtPmxvY2FsLnNpbl9mYW1pbHkgPSBBRl9JTkVU
OwotICAgICAgc29jay0+aW5mby5sc2EtPmxvY2FsLnNpbl9hZGRyLnNfYWRkciA9CisgICAgICBz
d2l0Y2goYWRkcl9ndWVzc19mYW1pbHkoc29jay0+aW5mby5wcm90bywgc29jay0+bG9jYWxfaG9z
dCkpIHsgLyogbWF5IHJldHVybiBBRl97SU5FVHxJTkVUNnxVTklYfSBndWVzc2VkIGZyb20gbG9j
YWxfaG9zdCAqLworY2FzZSBBRl9JTkVUOgorICAgICAgc29jay0+aW5mby5sc2EtPmxvY2FsLmFk
ZHIuaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwu
YWRkci5pbi5zaW5fYWRkci5zX2FkZHIgPQogCShzb2NrLT5sb2NhbF9ob3N0ID8gZ2V0YWRkciAo
R0VUQUREUl9SRVNPTFZFIHwgR0VUQUREUl9XQVJOX09OX1NJR05BTCB8IEdFVEFERFJfRkFUQUws
CiAJCQkJICAgICBzb2NrLT5sb2NhbF9ob3N0LAogCQkJCSAgICAgMCwKIAkJCQkgICAgIE5VTEws
CiAJCQkJICAgICBOVUxMKQogCSA6IGh0b25sIChJTkFERFJfQU5ZKSk7Ci0gICAgICBzb2NrLT5p
bmZvLmxzYS0+bG9jYWwuc2luX3BvcnQgPSBodG9ucyAoc29jay0+bG9jYWxfcG9ydCk7CisgICAg
ICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbi5zaW5fcG9ydCA9IGh0b25zIChzb2NrLT5s
b2NhbF9wb3J0KTsKKyAgICAgIGFkZHJsZW49c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7Cisg
ICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKK2Nhc2UgQUZfSU5FVDY6Cit7CisgICAg
ICBzdHJ1Y3QgYWRkcmluZm8gaGludHMgLCAqYWk7CisgICAgICBpbnQgZXJyOworICAgICAgbWVt
c2V0KCZoaW50cywgMCwgc2l6ZW9mIGhpbnRzKTsKKyAgICAgIGhpbnRzLmFpX2ZsYWdzPUFJX05V
TUVSSUNIT1NUfEFJX1BBU1NJVkU7CisgICAgICBoaW50cy5haV9mYW1pbHk9QUZfSU5FVDY7Cisg
ICAgICAvKiBpZiBubyBsb2NhbF9ob3N0IHByb3ZpZGVkLCBhc2sgZm9yIElONkFERFJfQU5ZIC4u
LiAqLworICAgICAgaWYgKChlcnI9Z2V0YWRkcmluZm8oc29jay0+bG9jYWxfaG9zdD8gc29jay0+
bG9jYWxfaG9zdCA6ICI6OiIsIAorCSAgICAgIE5VTEwsICZoaW50cywgJmFpKSk9PTApIHsKKwlz
b2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjYgPSAqKChzdHJ1Y3Qgc29ja2FkZHJfaW42Kiko
YWktPmFpX2FkZHIpKTsKKwlmcmVlYWRkcmluZm8oYWkpOworICAgICAgfSBlbHNlIHsKKwkgIG1z
ZyAoTV9GQVRBTCwgImdldGFkZHJpbmZvKCkgZmFpbGVkIGZvciBsb2NhbCBcIiVzXCI6ICVzIiwK
KwkgIAlzb2NrLT5sb2NhbF9ob3N0LAorCQlnYWlfc3RyZXJyb3IoZXJyKSk7CisgICAgICB9Cisg
ICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjYuc2luNl9wb3J0ID0gaHRvbnMgKHNv
Y2stPmxvY2FsX3BvcnQpOworICAgICAgYWRkcmxlbj1zaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
Nik7CisgICAgICBicmVhazsKK30KKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9VTklYCitjYXNlIEFG
X1VOSVg6CisgICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci51bi5zdW5fZmFtaWx5ID0g
QUZfVU5JWDsKKyAgICAgIHN0cm5jcHludChzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci51bi5z
dW5fcGF0aCwgc29jay0+bG9jYWxfaG9zdCwgc2l6ZW9mKHNvY2stPmluZm8ubHNhLT5sb2NhbC5h
ZGRyLnVuLnN1bl9wYXRoKSk7CisgICAgICBhZGRybGVuPShvZmZzZXRvZiAoc3RydWN0IHNvY2th
ZGRyX3VuLCBzdW5fcGF0aCkgKyBzdHJsZW4gKHNvY2stPmluZm8ubHNhLT5sb2NhbC5hZGRyLnVu
LnN1bl9wYXRoKSArIDEpOworCisgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgfQogICAgIH0K
ICAgCiAgIC8qIGJpbmQgdG8gbG9jYWwgYWRkcmVzcy9wb3J0ICovCiAgIGlmIChzb2NrLT5iaW5k
X2xvY2FsKQogICAgIHsKLSAgICAgIGlmIChiaW5kIChzb2NrLT5zZCwgKHN0cnVjdCBzb2NrYWRk
ciAqKSAmc29jay0+aW5mby5sc2EtPmxvY2FsLAotCQlzaXplb2YgKHNvY2stPmluZm8ubHNhLT5s
b2NhbCkpKQorICAgICAgaWYgKGJpbmQgKHNvY2stPnNkLCAgJnNvY2stPmluZm8ubHNhLT5sb2Nh
bC5hZGRyLnNhLCBhZGRybGVuKSkKIAl7CiAJICBjb25zdCBpbnQgZXJybnVtID0gb3BlbnZwbl9l
cnJub19zb2NrZXQgKCk7CiAJICBtc2cgKE1fRkFUQUwsICJUQ1AvVURQOiBTb2NrZXQgYmluZCBm
YWlsZWQgb24gbG9jYWwgYWRkcmVzcyAlczogJXMiLApAQCAtNzY2LDggKzg5NCwxMSBAQAogICAg
ICAgLyogcmVzb2x2ZSByZW1vdGUgYWRkcmVzcyBpZiB1bmRlZmluZWQgKi8KICAgICAgIGlmICgh
YWRkcl9kZWZpbmVkICgmc29jay0+aW5mby5sc2EtPnJlbW90ZSkpCiAJewotCSAgc29jay0+aW5m
by5sc2EtPnJlbW90ZS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLQkgIHNvY2stPmluZm8ubHNhLT5y
ZW1vdGUuc2luX2FkZHIuc19hZGRyID0gMDsKKwkgIHN3aXRjaChhZGRyX2d1ZXNzX2ZhbWlseShz
b2NrLT5pbmZvLnByb3RvLCBzb2NrLT5yZW1vdGVfaG9zdCkpIAorCSAgeworY2FzZSBBRl9JTkVU
OgorCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluLnNpbl9mYW1pbHkgPSBBRl9JTkVU
OworCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluLnNpbl9hZGRyLnNfYWRkciA9IDA7
CiAKIAkgIGlmIChzb2NrLT5yZW1vdGVfaG9zdCkKIAkgICAgewpAQCAtODEyLDcgKzk0Myw3IEBA
CiAJCSAgQVNTRVJUICgwKTsKIAkJfQogCi0JICAgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5z
aW5fYWRkci5zX2FkZHIgPSBnZXRhZGRyICgKKwkgICAgICBzb2NrLT5pbmZvLmxzYS0+cmVtb3Rl
LmFkZHIuaW4uc2luX2FkZHIuc19hZGRyID0gZ2V0YWRkciAoCiAJCSAgICBmbGFncywKIAkJICAg
IHNvY2stPnJlbW90ZV9ob3N0LAogCQkgICAgcmV0cnksCkBAIC04MzksMTQgKzk3MCw0NiBAQAog
CQl9CiAJICAgIH0KIAotCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zaW5fcG9ydCA9IGh0b25z
IChzb2NrLT5yZW1vdGVfcG9ydCk7CisJICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIuaW4u
c2luX3BvcnQgPSBodG9ucyAoc29jay0+cmVtb3RlX3BvcnQpOworCSAgYnJlYWs7CisjaWZkZWYg
VVNFX1BGX0lORVQ2CitjYXNlIEFGX0lORVQ2OgoreworCSAgc3RydWN0IGFkZHJpbmZvIGhpbnRz
ICwgKmFpOworCSAgaW50IGVycjsKKwkgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZiBoaW50cyk7
CisJICBoaW50cy5haV9mbGFncz1BSV9OVU1FUklDSE9TVDsKKwkgIGhpbnRzLmFpX2ZhbWlseT1B
Rl9JTkVUNjsKKwkgIGlmICgoZXJyPWdldGFkZHJpbmZvKHNvY2stPnJlbW90ZV9ob3N0PyBzb2Nr
LT5yZW1vdGVfaG9zdCA6ICI6OiIgLCBOVUxMLCAmaGludHMsICZhaSkpPT0wKSB7CisJICAgIHNv
Y2stPmluZm8ubHNhLT5yZW1vdGUuYWRkci5pbjYgPSAqKChzdHJ1Y3Qgc29ja2FkZHJfaW42Kiko
YWktPmFpX2FkZHIpKTsKKwkgICAgZnJlZWFkZHJpbmZvKGFpKTsKKwkgIH0gZWxzZSB7CisJICAg
IG1zZyAoTV9GQVRBTCwgImdldGFkZHJpbmZvKCkgZmFpbGVkIGZvciByZW1vdGUgXCIlc1wiOiAl
cyIsCisJCXNvY2stPnJlbW90ZV9ob3N0LAorCQlnYWlfc3RyZXJyb3IoZXJyKSk7CisJICB9CisJ
ICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIuaW42LnNpbjZfcG9ydCA9IGh0b25zIChzb2Nr
LT5yZW1vdGVfcG9ydCk7CisJICBicmVhazsKK30KKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9VTklY
CitjYXNlIEFGX1VOSVg6CisJc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLnVuLnN1bl9mYW1p
bHkgPSBBRl9VTklYOworCWlmIChzb2NrLT5yZW1vdGVfaG9zdCkKKyAgCSAgc3RybmNweW50IChz
b2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIudW4uc3VuX3BhdGgsIHNvY2stPnJlbW90ZV9ob3N0
LAorCSAgICAgc2l6ZW9mIChzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIudW4uc3VuX3BhdGgp
KTsKKwllbHNlCisgIAkgIHNvY2stPmluZm8ubHNhLT5yZW1vdGUuYWRkci51bi5zdW5fcGF0aFsw
XSA9IDA7CisJYnJlYWs7CisjZW5kaWYKKwkgIH0KIAl9CiAgIAogICAgICAgLyogc2hvdWxkIHdl
IHJlLXVzZSBwcmV2aW91cyBhY3RpdmUgcmVtb3RlIGFkZHJlc3M/ICovCi0gICAgICBpZiAoYWRk
cl9kZWZpbmVkICgmc29jay0+aW5mby5sc2EtPmFjdHVhbCkpCisgICAgICBpZiAobGlua19hZGRy
X2RlZmluZWQgKCZzb2NrLT5pbmZvLmxzYS0+YWN0dWFsKSkKIAl7CiAJICBtc2cgKE1fSU5GTywg
IlRDUC9VRFA6IFByZXNlcnZpbmcgcmVjZW50bHkgdXNlZCByZW1vdGUgYWRkcmVzczogJXMiLAot
CSAgICAgICBwcmludF9zb2NrYWRkciAoJnNvY2stPmluZm8ubHNhLT5hY3R1YWwsICZnYykpOwor
CSAgICAgICBwcmludF9saW5rX3NvY2thZGRyICgmc29jay0+aW5mby5sc2EtPmFjdHVhbCwgJmdj
KSk7CiAJICBpZiAocmVtb3RlX2R5bmFtaWMpCiAJICAgICpyZW1vdGVfZHluYW1pYyA9IE5VTEw7
CiAJfQpAQCAtOTAyLDcgKzEwNjUsOCBAQAogCQkJIGludCBjb25uZWN0X3JldHJ5X3NlY29uZHMs
CiAJCQkgaW50IG10dV9kaXNjb3Zlcl90eXBlLAogCQkJIGludCByY3ZidWYsCi0JCQkgaW50IHNu
ZGJ1ZikKKwkJCSBpbnQgc25kYnVmLAorCQkJIGNvbnN0IHVuc2lnbmVkIGludCBzb2NrZXRfZmxh
Z3MpCiB7CiAgIGNvbnN0IGNoYXIgKnJlbW90ZV9ob3N0OwogICBpbnQgcmVtb3RlX3BvcnQ7CkBA
IC05MzgsNiArMTEwMiw4IEBACiAgIHNvY2stPnNvY2tldF9idWZmZXJfc2l6ZXMucmN2YnVmID0g
cmN2YnVmOwogICBzb2NrLT5zb2NrZXRfYnVmZmVyX3NpemVzLnNuZGJ1ZiA9IHNuZGJ1ZjsKIAor
ICBzb2NrLT5zb2NrZXRfZmxhZ3MgPSBzb2NrZXRfZmxhZ3M7CisKICAgc29jay0+aW5mby5wcm90
byA9IHByb3RvOwogICBzb2NrLT5pbmZvLnJlbW90ZV9mbG9hdCA9IHJlbW90ZV9mbG9hdDsKICAg
c29jay0+aW5mby5sc2EgPSBsc2E7CkBAIC0xMDg0LDcgKzEyNTAsNyBAQAogCWdvdG8gZG9uZTsK
IAogICAgICAgLyogVENQIGNsaWVudC9zZXJ2ZXIgKi8KLSAgICAgIGlmIChzb2NrLT5pbmZvLnBy
b3RvID09IFBST1RPX1RDUHY0X1NFUlZFUikKKyAgICAgIGlmIChzb2NrLT5pbmZvLnByb3RvID09
IFBST1RPX1RDUHY0X1NFUlZFUiB8fCBzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY2X1NF
UlZFUikKIAl7CiAJICBzd2l0Y2ggKHNvY2stPm1vZGUpCiAJICAgIHsKQEAgLTExMTksNyArMTI4
NSw3IEBACiAJICAgICAgQVNTRVJUICgwKTsKIAkgICAgfQogCX0KLSAgICAgIGVsc2UgaWYgKHNv
Y2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UKQorICAgICAgZWxzZSBpZiAoc29j
ay0+aW5mby5wcm90byA9PSBQUk9UT19UQ1B2NF9DTElFTlQgfHwgc29jay0+aW5mby5wcm90byA9
PSBQUk9UT19UQ1B2Nl9DTElFTlQpCiAJewogCSAgc29ja2V0X2Nvbm5lY3QgKCZzb2NrLT5zZCwK
IAkJCSAgJnNvY2stPmluZm8ubHNhLT5hY3R1YWwsCkBAIC0xMTgxLDggKzEzNDcsOCBAQAogCSAg
c29jay0+cmVtb3RlX2hvc3QgPSBzb2NrLT5wcm94eV9kZXN0X2hvc3Q7CiAJICBzb2NrLT5yZW1v
dGVfcG9ydCA9IHNvY2stPnByb3h5X2Rlc3RfcG9ydDsKIAkgIHNvY2stPmRpZF9yZXNvbHZlX3Jl
bW90ZSA9IGZhbHNlOwotCSAgc29jay0+aW5mby5sc2EtPmFjdHVhbC5zaW5fYWRkci5zX2FkZHIg
PSAwOwotCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zaW5fYWRkci5zX2FkZHIgPSAwOworCSAg
YWRkcl96ZXJvX2hvc3QoJnNvY2stPmluZm8ubHNhLT5hY3R1YWwpOworCSAgYWRkcl96ZXJvX2hv
c3QoJnNvY2stPmluZm8ubHNhLT5yZW1vdGUpOwogCiAJICByZXNvbHZlX3JlbW90ZSAoc29jaywg
MSwgTlVMTCwgc2lnbmFsX3JlY2VpdmVkKTsKIApAQCAtMTE5Nyw3ICsxMzYzLDcgQEAKICAgICAg
IGlmIChyZW1vdGVfY2hhbmdlZCkKIAl7CiAJICBtc2cgKE1fSU5GTywgIlRDUC9VRFA6IER5bmFt
aWMgcmVtb3RlIGFkZHJlc3MgY2hhbmdlZCBkdXJpbmcgVENQIGNvbm5lY3Rpb24gZXN0YWJsaXNo
bWVudCIpOwotCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zaW5fYWRkci5zX2FkZHIgPSBzb2Nr
LT5pbmZvLmxzYS0+YWN0dWFsLnNpbl9hZGRyLnNfYWRkcjsKKwkgIGFkZHJfY29weV9ob3N0KCZz
b2NrLT5pbmZvLmxzYS0+cmVtb3RlLCAmc29jay0+aW5mby5sc2EtPmFjdHVhbCk7CiAJfQogICAg
IH0KIApAQCAtMTIyMSw3ICsxMzg3LDggQEAKIAogI2lmIEVYVEVOREVEX1NPQ0tFVF9FUlJPUl9D
QVBBQklMSVRZCiAgIC8qIGlmIHRoZSBPUyBzdXBwb3J0cyBpdCwgZW5hYmxlIGV4dGVuZGVkIGVy
cm9yIHBhc3Npbmcgb24gdGhlIHNvY2tldCAqLwotICBzZXRfc29ja19leHRlbmRlZF9lcnJvcl9w
YXNzaW5nIChzb2NrLT5zZCk7CisgIGlmIChhZGRyX2luZXQ0b3I2KCZzb2NrLT5pbmZvLmxzYS0+
bG9jYWwuYWRkci5zYSkpCisJICBzZXRfc29ja19leHRlbmRlZF9lcnJvcl9wYXNzaW5nIChzb2Nr
LT5zZCk7CiAjZW5kaWYKIAogICAvKiBwcmludCBsb2NhbCBhZGRyZXNzICovCkBAIC0xMjMxLDEy
ICsxMzk4LDEyIEBACiAgICAgbXNnIChNX0lORk8sICIlcyBsaW5rIGxvY2FsJXM6ICVzIiwKIAkg
cHJvdG8yYXNjaWkgKHNvY2stPmluZm8ucHJvdG8sIHRydWUpLAogCSAoc29jay0+YmluZF9sb2Nh
bCA/ICIgKGJvdW5kKSIgOiAiIiksCi0JIHByaW50X3NvY2thZGRyX2V4ICgmc29jay0+aW5mby5s
c2EtPmxvY2FsLCBzb2NrLT5iaW5kX2xvY2FsLCAiOiIsICZnYykpOworCSBwcmludF9zb2NrYWRk
cl9leCAoJnNvY2stPmluZm8ubHNhLT5sb2NhbCwgIjoiLCBzb2NrLT5iaW5kX2xvY2FsID8gUFNf
U0hPV19QT1JUOiAwLCAmZ2MpKTsKIAogICAvKiBwcmludCBhY3RpdmUgcmVtb3RlIGFkZHJlc3Mg
Ki8KICAgbXNnIChNX0lORk8sICIlcyBsaW5rIHJlbW90ZTogJXMiLAogICAgICAgIHByb3RvMmFz
Y2lpIChzb2NrLT5pbmZvLnByb3RvLCB0cnVlKSwKLSAgICAgICBwcmludF9zb2NrYWRkcl9leCAo
JnNvY2stPmluZm8ubHNhLT5hY3R1YWwsIGFkZHJfZGVmaW5lZCAoJnNvY2stPmluZm8ubHNhLT5h
Y3R1YWwpLCAiOiIsICZnYykpOworICAgICAgIHByaW50X3NvY2thZGRyX2V4ICgmc29jay0+aW5m
by5sc2EtPmFjdHVhbCwgIjoiLCBQU19TSE9XX1BPUlRfSUZfREVGSU5FRHxQU19TSE9XX1BLVElO
Rk8sICZnYykpOwogCiAgZG9uZToKICAgaWYgKHNpZ19zYXZlICYmIHNpZ25hbF9yZWNlaXZlZCkK
QEAgLTEzMTIsMTMgKzE0NzksMTcgQEAKIHZvaWQKIGxpbmtfc29ja2V0X2Nvbm5lY3Rpb25faW5p
dGlhdGVkIChjb25zdCBzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCQkJICBzdHJ1Y3QgbGlua19zb2Nr
ZXRfaW5mbyAqaW5mbywKLQkJCQkgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwKKwkJ
CQkgIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphY3QsCiAJCQkJICBjb25zdCBjaGFy
ICpjb21tb25fbmFtZSwKIAkJCQkgIHN0cnVjdCBlbnZfc2V0ICplcykKIHsKICAgc3RydWN0IGdj
X2FyZW5hIGdjID0gZ2NfbmV3ICgpOwogICAKLSAgaW5mby0+bHNhLT5hY3R1YWwgPSAqYWRkcjsg
LyogTm90ZTogc2tpcCB0aGlzIGxpbmUgZm9yIC0tZm9yY2UtZGVzdCAqLworICAvKiBhY3F1aXJl
IHNjcmlwdCBtdXRleCAqLworICAvL211dGV4X2xvY2tfc3RhdGljIChMX1NDUklQVCk7CisKKyAg
Ly9hZGRyX2NvcHkoJmluZm8tPmxzYS0+YWN0dWFsLmFkZHIuc2EsIGFkZHIpOyAvKiBOb3RlOiBz
a2lwIHRoaXMgbGluZSBmb3IgLS1mb3JjZS1kZXN0ICovCisgIGluZm8tPmxzYS0+YWN0dWFsID0g
KmFjdDsgLyogTm90ZTogc2tpcCB0aGlzIGxpbmUgZm9yIC0tZm9yY2UtZGVzdCAqLwogICBzZXRl
bnZfdHJ1c3RlZCAoZXMsIGluZm8pOwogICBpbmZvLT5jb25uZWN0aW9uX2VzdGFibGlzaGVkID0g
dHJ1ZTsKIApAQCAtMTMyNyw3ICsxNDk4LDcgQEAKICAgICBzdHJ1Y3QgYnVmZmVyIG91dCA9IGFs
bG9jX2J1Zl9nYyAoMjU2LCAmZ2MpOwogICAgIGlmIChjb21tb25fbmFtZSkKICAgICAgIGJ1Zl9w
cmludGYgKCZvdXQsICJbJXNdICIsIGNvbW1vbl9uYW1lKTsKLSAgICBidWZfcHJpbnRmICgmb3V0
LCAiUGVlciBDb25uZWN0aW9uIEluaXRpYXRlZCB3aXRoICVzIiwgcHJpbnRfc29ja2FkZHIgKCZp
bmZvLT5sc2EtPmFjdHVhbCwgJmdjKSk7CisgICAgYnVmX3ByaW50ZiAoJm91dCwgIlBlZXIgQ29u
bmVjdGlvbiBJbml0aWF0ZWQgd2l0aCAlcyIsIHByaW50X2xpbmtfc29ja2FkZHIgKCZpbmZvLT5s
c2EtPmFjdHVhbCwgJmdjKSk7CiAgICAgbXNnIChNX0lORk8sICIlcyIsIEJTVFIgKCZvdXQpKTsK
ICAgfQogCkBAIC0xMzM3LDcgKzE1MDgsNyBAQAogICAvKiBQcm9jZXNzIC0taXBjaGFuZ2UgcGx1
Z2luICovCiAgIGlmIChwbHVnaW5fZGVmaW5lZCAoaW5mby0+cGx1Z2lucywgT1BFTlZQTl9QTFVH
SU5fSVBDSEFOR0UpKQogICAgIHsKLSAgICAgIGNvbnN0IGNoYXIgKmFkZHJfYXNjaWkgPSBwcmlu
dF9zb2NrYWRkcl9leCAoJmluZm8tPmxzYS0+YWN0dWFsLCB0cnVlLCAiICIsICZnYyk7CisgICAg
ICBjb25zdCBjaGFyICphZGRyX2FzY2lpID0gcHJpbnRfc29ja2FkZHJfZXggKCZpbmZvLT5sc2Et
PmFjdHVhbCwgIiAiLCBQU19TSE9XX1BPUlQsICZnYyk7CiAgICAgICBpZiAocGx1Z2luX2NhbGwg
KGluZm8tPnBsdWdpbnMsIE9QRU5WUE5fUExVR0lOX0lQQ0hBTkdFLCBhZGRyX2FzY2lpLCBlcykp
CiAJbXNnIChNX1dBUk4sICJXQVJOSU5HOiBpcGNoYW5nZSBwbHVnaW4gY2FsbCBmYWlsZWQiKTsK
ICAgICB9CkBAIC0xMzQ5LDcgKzE1MjAsNyBAQAogICAgICAgc2V0ZW52X3N0ciAoZXMsICJzY3Jp
cHRfdHlwZSIsICJpcGNoYW5nZSIpOwogICAgICAgYnVmX3ByaW50ZiAoJm91dCwgIiVzICVzIiwK
IAkJICBpbmZvLT5pcGNoYW5nZV9jb21tYW5kLAotCQkgIHByaW50X3NvY2thZGRyX2V4ICgmaW5m
by0+bHNhLT5hY3R1YWwsIHRydWUsICIgIiwgJmdjKSk7CisJCSAgcHJpbnRfc29ja2FkZHJfZXgg
KCZpbmZvLT5sc2EtPmFjdHVhbCwgIiAiLCBQU19TSE9XX1BPUlQsICZnYykpOwogICAgICAgc3lz
dGVtX2NoZWNrIChCU1RSICgmb3V0KSwgZXMsIFNfU0NSSVBULCAiaXAtY2hhbmdlIGNvbW1hbmQg
ZmFpbGVkIik7CiAgICAgfQogCkBAIC0xMzU5LDE3ICsxNTMwLDM4IEBACiB2b2lkCiBsaW5rX3Nv
Y2tldF9iYWRfaW5jb21pbmdfYWRkciAoc3RydWN0IGJ1ZmZlciAqYnVmLAogCQkJICAgICAgIGNv
bnN0IHN0cnVjdCBsaW5rX3NvY2tldF9pbmZvICppbmZvLAotCQkJICAgICAgIGNvbnN0IHN0cnVj
dCBzb2NrYWRkcl9pbiAqZnJvbV9hZGRyKQorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBvcGVudnBu
X3NvY2thZGRyICpmcm9tX2FkZHIpCiB7CiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAo
KTsKIAorICBzd2l0Y2goZnJvbV9hZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworY2FzZSBBRl9J
TkVUOgogICBtc2cgKERfTElOS19FUlJPUlMsCiAgICAgICAgIlRDUC9VRFA6IEluY29taW5nIHBh
Y2tldCByZWplY3RlZCBmcm9tICVzWyVkXSwgZXhwZWN0ZWQgcGVlciBhZGRyZXNzOiAlcyAoYWxs
b3cgdGhpcyBpbmNvbWluZyBzb3VyY2UgYWRkcmVzcy9wb3J0IGJ5IHJlbW92aW5nIC0tcmVtb3Rl
IG9yIGFkZGluZyAtLWZsb2F0KSIsCisgICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbV9h
ZGRyLCAmZ2MpLAorICAgICAgIChpbnQpZnJvbV9hZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSwKKyAg
ICAgICBwcmludF9zb2NrYWRkciAoJmluZm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgYnJlYWs7
CisjaWZkZWYgVVNFX1BGX0lORVQ2CitjYXNlIEFGX0lORVQ2OgorICBtc2cgKERfTElOS19FUlJP
UlMsCisgICAgICAgIlRDUC9VRFA6IEluY29taW5nIHBhY2tldCByZWplY3RlZCBmcm9tICVzWyVk
XSwgZXhwZWN0ZWQgcGVlciBhZGRyZXNzOiAlcyAoYWxsb3cgdGhpcyBpbmNvbWluZyBzb3VyY2Ug
YWRkcmVzcy9wb3J0IGJ5IHJlbW92aW5nIC0tcmVtb3RlIG9yIGFkZGluZyAtLWZsb2F0KSIsCisg
ICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbV9hZGRyLCAmZ2MpLAorICAgICAgIChpbnQp
ZnJvbV9hZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSwKKyAgICAgICBwcmludF9zb2NrYWRkciAoJmlu
Zm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBVU0VfUEZf
VU5JWAorY2FzZSBBRl9VTklYOgorICBtc2cgKERfTElOS19FUlJPUlMsCisgICAgICAgIkFGX1VO
SVg6IEluY29taW5nIHBhY2tldCByZWplY3RlZCBmcm9tICVzWyVkXSwgZXhwZWN0ZWQgcGVlciBh
ZGRyZXNzOiAlcyAoYWxsb3cgdGhpcyBpbmNvbWluZyBzb3VyY2UgYnkgcmVtb3ZpbmcgLS1yZW1v
dGUgb3IgYWRkaW5nIC0tZmxvYXQpIiwKICAgICAgICBwcmludF9zb2NrYWRkciAoZnJvbV9hZGRy
LCAmZ2MpLAotICAgICAgIChpbnQpZnJvbV9hZGRyLT5zaW5fZmFtaWx5LAorICAgICAgIChpbnQp
ZnJvbV9hZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSwKICAgICAgICBwcmludF9zb2NrYWRkciAoJmlu
Zm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgYnJlYWs7CisjZW5kaWYKKyAgfQogICBidWYtPmxl
biA9IDA7Ci0KICAgZ2NfZnJlZSAoJmdjKTsKIH0KIApAQCAtMTM4NCwxMCArMTU3NiwyNCBAQAog
ewogICBjb25zdCBzdHJ1Y3QgbGlua19zb2NrZXRfYWRkciAqbHNhID0gaW5mby0+bHNhOwogCisv
KiAKKyAqIFRoaXMgbG9naWMgc3VwcG9ydHMgInJlZGlyZWN0LWdhdGV3YXkiIHNlbWFudGljLCB3
aGljaCAKKyAqIG1ha2VzIHNlbnNlIG9ubHkgZm9yIFBGX0lORVQgcm91dGVzIG92ZXIgUEZfSU5F
VCBlbmRwb2ludHMKKyAqCisgKiBNYXliZSBpbiB0aGUgZnV0dXJlIGNvbnNpZGVyIFBGX0lORVQ2
IGVuZHBvaW50cyBhbHNvIC4uLgorICogYnkgbm93IGp1c3QgaWdub3JlIGl0CisgKgorICovCisj
aWYgZGVmaW5lZCAoIFVTRV9QRl9JTkVUNiApIHx8IGRlZmluZWQgKCBVU0VfUEZfVU5JWCApCisg
IGlmKGxzYS0+YWN0dWFsLmFkZHIuc2Euc2FfZmFtaWx5ICE9IEFGX0lORVQpCisJICByZXR1cm4g
MDsKKyNlbHNlCisgIEFTU0VSVChsc2EtPmFjdHVhbC5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9J
TkVUKTsKKyNlbmRpZgogICBpZiAoYWRkcl9kZWZpbmVkICgmbHNhLT5hY3R1YWwpKQotICAgIHJl
dHVybiBudG9obCAobHNhLT5hY3R1YWwuc2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1cm4gbnRv
aGwgKGxzYS0+YWN0dWFsLmFkZHIuaW4uc2luX2FkZHIuc19hZGRyKTsKICAgZWxzZSBpZiAoYWRk
cl9kZWZpbmVkICgmbHNhLT5yZW1vdGUpKQotICAgIHJldHVybiBudG9obCAobHNhLT5yZW1vdGUu
c2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1cm4gbnRvaGwgKGxzYS0+cmVtb3RlLmFkZHIuaW4u
c2luX2FkZHIuc19hZGRyKTsKICAgZWxzZQogICAgIHJldHVybiAwOwogfQpAQCAtMTU4MCwyOCAr
MTc4Niw5NiBAQAogICovCiAKIGNvbnN0IGNoYXIgKgotcHJpbnRfc29ja2FkZHIgKGNvbnN0IHN0
cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwgc3RydWN0IGdjX2FyZW5hICpnYykKK3ByaW50X3NvY2th
ZGRyIChjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYWRkciwgc3RydWN0IGdjX2FyZW5h
ICpnYykKIHsKLSAgcmV0dXJuIHByaW50X3NvY2thZGRyX2V4KGFkZHIsIHRydWUsICI6IiwgZ2Mp
OworICByZXR1cm4gcHJpbnRfc29ja2FkZHJfZXgoYWRkciwgIjoiLCBQU19TSE9XX1BPUlQsIGdj
KTsKIH0KIAogY29uc3QgY2hhciAqCi1wcmludF9zb2NrYWRkcl9leCAoY29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luICphZGRyLCBib29sIGRvX3BvcnQsIGNvbnN0IGNoYXIqIHNlcGFyYXRvciwgc3Ry
dWN0IGdjX2FyZW5hICpnYykKK3ByaW50X3NvY2thZGRyX2V4IChjb25zdCBzdHJ1Y3Qgb3BlbnZw
bl9zb2NrYWRkciAqYWRkciwgY29uc3QgY2hhciogc2VwYXJhdG9yLCBpbnQgZmxhZ3MsIHN0cnVj
dCBnY19hcmVuYSAqZ2MpCiB7Ci0gIHN0cnVjdCBidWZmZXIgb3V0ID0gYWxsb2NfYnVmX2djICg2
NCwgZ2MpOwotICBjb25zdCBpbnQgcG9ydCA9IG50b2hzIChhZGRyLT5zaW5fcG9ydCk7Ci0KKyAg
c3RydWN0IGJ1ZmZlciBvdXQ7CisgIGJvb2wgYWRkcl9pc19kZWZpbmVkOworICAKKyAgaWYgKCFh
ZGRyKSB7CisgICAgcmV0dXJuICJbTlVMTF0iOworICB9CisgIGFkZHJfaXNfZGVmaW5lZCA9ICBh
ZGRyX2RlZmluZWQgKGFkZHIpOworICBzd2l0Y2goYWRkci0+YWRkci5zYS5zYV9mYW1pbHkpIHsK
K2Nhc2UgQUZfSU5FVDogeworICBjb25zdCBpbnQgcG9ydD0gbnRvaHMgKGFkZHItPmFkZHIuaW4u
c2luX3BvcnQpOworICBvdXQgPSBhbGxvY19idWZfZ2MgKDEyOCwgZ2MpOworICBidWZfcHV0cyAo
Jm91dCwgIltBRl9JTkVUXSIpOwogICBtdXRleF9sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOwot
ICBidWZfcHJpbnRmICgmb3V0LCAiJXMiLCAoYWRkcl9kZWZpbmVkIChhZGRyKSA/IGluZXRfbnRv
YSAoYWRkci0+c2luX2FkZHIpIDogIlt1bmRlZl0iKSk7CisgIGJ1Zl9wdXRzICgmb3V0LCAoYWRk
cl9pc19kZWZpbmVkID8gaW5ldF9udG9hIChhZGRyLT5hZGRyLmluLnNpbl9hZGRyKSA6ICJbdW5k
ZWZdIikpOwogICBtdXRleF91bmxvY2tfc3RhdGljIChMX0lORVRfTlRPQSk7CiAKLSAgaWYgKGRv
X3BvcnQgJiYgcG9ydCkKKyAgaWYgKCgoZmxhZ3MgJiBQU19TSE9XX1BPUlQpIHx8IChhZGRyX2lz
X2RlZmluZWQgJiYgKGZsYWdzICYgUFNfU0hPV19QT1JUX0lGX0RFRklORUQpKSkKKyAgICAgICAm
JiBwb3J0KQogICAgIHsKICAgICAgIGlmIChzZXBhcmF0b3IpCiAJYnVmX3ByaW50ZiAoJm91dCwg
IiVzIiwgc2VwYXJhdG9yKTsKIAogICAgICAgYnVmX3ByaW50ZiAoJm91dCwgIiVkIiwgcG9ydCk7
CiAgICAgfQorI2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIGlmICgoZmxhZ3MgJiBQU19TSE9XX1BL
VElORk8pICYmIGFkZHJfZGVmaW5lZF9pcGkoYWRkcikpCisgICAgeworICAgICAgYnVmX3ByaW50
ZiAoJm91dCwgIiAodmlhICVzKSIsIGluZXRfbnRvYSAoYWRkci0+cGkuaW4uaXBpX3NwZWNfZHN0
KSk7CisgICAgfQorI2VuZGlmCisgIH0KKyAgYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2Citj
YXNlIEFGX0lORVQ2OiB7CisgIGNvbnN0IGludCBwb3J0PSBudG9ocyAoYWRkci0+YWRkci5pbjYu
c2luNl9wb3J0KTsKKyAgY2hhciBidWZbSU5FVDZfQUREUlNUUkxFTl0gPSAiW3VuZGVmXSI7Cisg
IG91dCA9IGFsbG9jX2J1Zl9nYyAoMTI4LCBnYyk7CisgIGJ1Zl9wdXRzICgmb3V0LCAiW0FGX0lO
RVQ2XSIpOworICBpZiAoYWRkcl9pc19kZWZpbmVkKQorICAgIHsKKyAgICAgIGdldG5hbWVpbmZv
KCZhZGRyLT5hZGRyLnNhLCBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorICAgICAgICBi
dWYsIHNpemVvZiAoYnVmKSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hPU1QpOworICAgICAgYnVmX3B1
dHMgKCZvdXQsIGJ1Zik7CisgICAgfQorICBpZiAoKChmbGFncyAmIFBTX1NIT1dfUE9SVCkgfHwg
KGFkZHJfaXNfZGVmaW5lZCAmJiAoZmxhZ3MgJiBQU19TSE9XX1BPUlRfSUZfREVGSU5FRCkpKQor
ICAgICAgICYmIHBvcnQpCisgICAgeworICAgICAgaWYgKHNlcGFyYXRvcikKKwlidWZfcHV0cyAo
Jm91dCwgc2VwYXJhdG9yKTsKKworICAgICAgYnVmX3ByaW50ZiAoJm91dCwgIiVkIiwgcG9ydCk7
CisgICAgfQorI2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIGlmICgoZmxhZ3MgJiBQU19TSE9XX1BL
VElORk8pICYmIGFkZHJfZGVmaW5lZF9pcGkoYWRkcikpCisgICAgeworICAgICAgc3RydWN0IHNv
Y2thZGRyX2luNiBzaW42OworICAgICAgbWVtc2V0KCZzaW42LCAwLCBzaXplb2Ygc2luNik7Cisg
ICAgICBzaW42LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgICBzaW42LnNpbjZfYWRkciA9
IGFkZHItPnBpLmluNi5pcGk2X2FkZHI7CisgICAgICB7CisgICAgICAgIGlmIChnZXRuYW1laW5m
bygoc3RydWN0IHNvY2thZGRyICopJnNpbjYsIHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luNiks
CisJCQkJYnVmLCBzaXplb2YgKGJ1ZiksIE5VTEwsIDAsIE5JX05VTUVSSUNIT1NUKSA9PSAwKQor
ICAgICAgCSAgYnVmX3ByaW50ZiAoJm91dCwgIiAodmlhICVzKSIsIGJ1Zik7CisJZWxzZQorICAg
ICAgCSAgYnVmX3ByaW50ZiAoJm91dCwgIiAodmlhIFtnZXRuYW1laW5mbygpIGVycl0pIik7Cisg
ICAgICB9CisgICAgfQorI2VuZGlmCisgIH0KKyAgYnJlYWs7CisjZW5kaWYKKyNpZmRlZiBVU0Vf
UEZfVU5JWAorY2FzZSBBRl9VTklYOiB7CisgIG91dCA9IGFsbG9jX2J1Zl9nYyAoc2l6ZW9mIChh
ZGRyLT5hZGRyLnVuLnN1bl9wYXRoKSs5IC8qICJbQUZfVU5JWF0iICovKzEsIGdjKTsKKyAgYnVm
X3B1dHMgKCZvdXQsICJbQUZfVU5JWF0iKTsKKyAgYnVmX3B1dHMgKCZvdXQsIGFkZHItPmFkZHIu
dW4uc3VuX3BhdGgpOworICB9CisgIGJyZWFrOworI2VuZGlmCitkZWZhdWx0OiAKKyAgICByZXR1
cm4gIltOTyBhZGRyZXNzIGZhbWlseSBkZWZpbmVkXSI7CisgIH0KICAgcmV0dXJuIEJTVFIgKCZv
dXQpOwogfQogCkBAIC0xNjI3LDI2ICsxOTAxLDUzIEBACiAgIHJldHVybiBCU1RSICgmb3V0KTsK
IH0KIAorY29uc3QgY2hhciAqCitwcmludF9saW5rX3NvY2thZGRyIChjb25zdCBzdHJ1Y3Qgb3Bl
bnZwbl9zb2NrYWRkciAqYWN0LCBzdHJ1Y3QgZ2NfYXJlbmEgKmdjKQoreworICByZXR1cm4gcHJp
bnRfc29ja2FkZHJfZXggKGFjdCwgIjoiLCBQU19TSE9XX1BPUlR8UFNfU0hPV19QS1RJTkZPLCBn
Yyk7Cit9CisKIC8qIHNldCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBmb3IgaXAvcG9ydCBpbiAq
YWRkciAqLwogdm9pZAotc2V0ZW52X3NvY2thZGRyIChzdHJ1Y3QgZW52X3NldCAqZXMsIGNvbnN0
IGNoYXIgKm5hbWVfcHJlZml4LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGNvbnN0
IGJvb2wgZmxhZ3MpCitzZXRlbnZfc29ja2FkZHIgKHN0cnVjdCBlbnZfc2V0ICplcywgY29uc3Qg
Y2hhciAqbmFtZV9wcmVmaXgsIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphZGRyLCBj
b25zdCBib29sIGZsYWdzKQogewogICBjaGFyIG5hbWVfYnVmWzI1Nl07CisgIGNoYXIgYnVmWzEy
OF07CiAKKyAgc3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CitjYXNlIEFGX0lORVQ6
CiAgIGlmIChmbGFncyAmIFNBX0lQX1BPUlQpCiAgICAgb3BlbnZwbl9zbnByaW50ZiAobmFtZV9i
dWYsIHNpemVvZiAobmFtZV9idWYpLCAiJXNfaXAiLCBuYW1lX3ByZWZpeCk7CiAgIGVsc2UKICAg
ICBvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlcyIsIG5h
bWVfcHJlZml4KTsKLQogICBtdXRleF9sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOwotICBzZXRl
bnZfc3RyIChlcywgbmFtZV9idWYsIGluZXRfbnRvYSAoYWRkci0+c2luX2FkZHIpKTsKKyAgc2V0
ZW52X3N0ciAoZXMsIG5hbWVfYnVmLCBpbmV0X250b2EgKGFkZHItPmFkZHIuaW4uc2luX2FkZHIp
KTsKICAgbXV0ZXhfdW5sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOwogCi0gIGlmICgoZmxhZ3Mg
JiBTQV9JUF9QT1JUKSAmJiBhZGRyLT5zaW5fcG9ydCkKKyAgaWYgKChmbGFncyAmIFNBX0lQX1BP
UlQpICYmIChhZGRyLT5hZGRyLmluLnNpbl9wb3J0KSkKICAgICB7CiAgICAgICBvcGVudnBuX3Nu
cHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlc19wb3J0IiwgbmFtZV9wcmVm
aXgpOwotICAgICAgc2V0ZW52X2ludCAoZXMsIG5hbWVfYnVmLCBudG9ocyAoYWRkci0+c2luX3Bv
cnQpKTsKKyAgICAgIHNldGVudl9pbnQgKGVzLCBuYW1lX2J1ZiwgbnRvaHMgKGFkZHItPmFkZHIu
aW4uc2luX3BvcnQpKTsKICAgICB9CisgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9JTkVUNgorY2Fz
ZSBBRl9JTkVUNjoKKyAgb3BlbnZwbl9zbnByaW50ZiAobmFtZV9idWYsIHNpemVvZiAobmFtZV9i
dWYpLCAiJXNfaXA2IiwgbmFtZV9wcmVmaXgpOworICBnZXRuYW1laW5mbygmYWRkci0+YWRkci5z
YSwgc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW42KSwKKyAgCWJ1Ziwgc2l6ZW9mKGJ1ZiksIE5V
TEwsIDAsIE5JX05VTUVSSUNIT1NUKTsKKyAgc2V0ZW52X3N0ciAoZXMsIG5hbWVfYnVmLCBidWYp
OworCisgIG9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBzaXplb2YgKG5hbWVfYnVmKSwgIiVz
X3BvcnQiLCBuYW1lX3ByZWZpeCk7CisgIHNldGVudl9pbnQgKGVzLCBuYW1lX2J1ZiwgbnRvaHMg
KGFkZHItPmFkZHIuaW42LnNpbjZfcG9ydCkpOworICBicmVhazsKKyNlbmRpZgorI2lmZGVmIFVT
RV9QRl9VTklYCitjYXNlIEFGX1VOSVg6CisgIG9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBz
aXplb2YgKG5hbWVfYnVmKSwgIiVzX3BhdGgiLCBuYW1lX3ByZWZpeCk7CisgIHNldGVudl9zdHIg
KGVzLCBuYW1lX2J1ZiwgYWRkci0+YWRkci51bi5zdW5fcGF0aCk7CisgIGJyZWFrOworI2VuZGlm
CisgIH0KIH0KIAogdm9pZApAQCAtMTY1NCwxMyArMTk1NSwxNSBAQAogewogICBpZiAoYWRkciB8
fCAhKGZsYWdzICYgU0FfU0VUX0lGX05PTlpFUk8pKQogICAgIHsKLSAgICAgIHN0cnVjdCBzb2Nr
YWRkcl9pbiBzaTsKLSAgICAgIENMRUFSIChzaSk7Ci0gICAgICBzaS5zaW5fYWRkci5zX2FkZHIg
PSBodG9ubCAoYWRkcik7Ci0gICAgICBzZXRlbnZfc29ja2FkZHIgKGVzLCBuYW1lX3ByZWZpeCwg
JnNpLCBmbGFncyk7CisgICAgICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciBvc2E7CisgICAgICBD
TEVBUiAob3NhKTsKKyAgICAgIG9zYS5hZGRyLmluLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAg
ICAgb3NhLmFkZHIuaW4uc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKGFkZHIpOworICAgICAgc2V0
ZW52X3NvY2thZGRyIChlcywgbmFtZV9wcmVmaXgsICZvc2EsIGZsYWdzKTsKICAgICB9CiB9CiAK
KwogLyoKICAqIENvbnZlcnQgcHJvdG9jb2wgbmFtZXMgYmV0d2VlbiBpbmRleCBhbmQgYXNjaWkg
Zm9ybS4KICAqLwpAQCAtMTY2OCwxNiArMTk3MSw2NyBAQAogc3RydWN0IHByb3RvX25hbWVzIHsK
ICAgY29uc3QgY2hhciAqc2hvcnRfZm9ybTsKICAgY29uc3QgY2hhciAqZGlzcGxheV9mb3JtOwor
ICBib29sCWlzX2RncmFtOworICBib29sCWlzX25ldDsKKyAgc2FfZmFtaWx5X3QgcHJvdG9fYWY7
CiB9OwogCiAvKiBJbmRleGVkIGJ5IFBST1RPX3ggKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJv
dG9fbmFtZXMgcHJvdG9fbmFtZXNbXSA9IHsKLSAgeyJ1ZHAiLCAgICAgICAgIlVEUHY0In0sCi0g
IHsidGNwLXNlcnZlciIsICJUQ1B2NF9TRVJWRVIifSwKLSAgeyJ0Y3AtY2xpZW50IiwgIlRDUHY0
X0NMSUVOVCJ9LAotICB7InRjcCIsICAgICAgICAiVENQdjQifQorc3RhdGljIGNvbnN0IHN0cnVj
dCBwcm90b19uYW1lcyBwcm90b19uYW1lc1tQUk9UT19OXSA9IHsKKyAgeyJwcm90by11bmluaXRp
YWxpemVkIiwgICAgICAgICJwcm90by1OT05FIiwwLDAsIEFGX1VOU1BFQ30sCisgIHsidWRwIiwg
ICAgICAgICJVRFB2NCIsMSwxLCBBRl9JTkVUfSwKKyAgeyJ0Y3Atc2VydmVyIiwgIlRDUHY0X1NF
UlZFUiIsMCwxLCBBRl9JTkVUfSwKKyAgeyJ0Y3AtY2xpZW50IiwgIlRDUHY0X0NMSUVOVCIsMCwx
LCBBRl9JTkVUfSwKKyAgeyJ0Y3AiLCAgICAgICAgIlRDUHY0IiwwLDEsIEFGX0lORVR9LAorI2lm
ZGVmIFVTRV9QRl9JTkVUNgorICB7InVkcDYiICAgICAgICwiVURQdjYiLDEsMSwgQUZfSU5FVDZ9
LAorICB7InRjcDYtc2VydmVyIiwiVENQdjZfU0VSVkVSIiwwLDEsIEFGX0lORVQ2fSwKKyAgeyJ0
Y3A2LWNsaWVudCIsIlRDUHY2X0NMSUVOVCIsMCwxLCBBRl9JTkVUNn0sCisgIHsidGNwNiIgICAg
ICAgLCJUQ1B2NiIsMCwxLCBBRl9JTkVUNn0sCisjZW5kaWYKKyNpZmRlZiBVU0VfUEZfVU5JWAor
ICB7InVuaXgtZGdyYW0iICwiVU5JWF9ER1JBTSIsMSwwLCBBRl9VTklYIH0sCisgIHsidW5peC1z
dHJlYW0iLCJVTklYX1NUUkVBTSIsMSwwLCBBRl9VTklYIH0KKyNlbmRpZgogfTsKIAorYm9vbAor
cHJvdG9faXNfbmV0KGludCBwcm90bykKK3sKKyAgaWYgKHByb3RvIDwgMCB8fCBwcm90byA+PSBQ
Uk9UT19OKQorICAgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIHByb3RvX25hbWVzW3Byb3RvXS5pc19u
ZXQ7Cit9Citib29sCitwcm90b19pc19kZ3JhbShpbnQgcHJvdG8pCit7CisgIGlmIChwcm90byA8
IDAgfHwgcHJvdG8gPj0gUFJPVE9fTikKKyAgICBBU1NFUlQoMCk7CisgIHJldHVybiBwcm90b19u
YW1lc1twcm90b10uaXNfZGdyYW07Cit9Citib29sCitwcm90b19pc191ZHAoaW50IHByb3RvKQor
eworICBpZiAocHJvdG8gPCAwIHx8IHByb3RvID49IFBST1RPX04pCisgICAgQVNTRVJUKDApOwor
ICByZXR1cm4gcHJvdG9fbmFtZXNbcHJvdG9dLmlzX2RncmFtJiZwcm90b19uYW1lc1twcm90b10u
aXNfbmV0OworfQorYm9vbAorcHJvdG9faXNfdGNwKGludCBwcm90bykKK3sKKyAgaWYgKHByb3Rv
IDwgMCB8fCBwcm90byA+PSBQUk9UT19OKQorICAgIEFTU0VSVCgwKTsKKyAgcmV0dXJuICghcHJv
dG9fbmFtZXNbcHJvdG9dLmlzX2RncmFtKSYmcHJvdG9fbmFtZXNbcHJvdG9dLmlzX25ldDsKK30K
Kworc2FfZmFtaWx5X3QgCitwcm90b19zYV9mYW1pbHkoaW50IHByb3RvKQoreworICBpZiAocHJv
dG8gPCAwIHx8IHByb3RvID49IFBST1RPX04pCisgICAgQVNTRVJUKDApOworICByZXR1cm4gcHJv
dG9fbmFtZXNbcHJvdG9dLnByb3RvX2FmOworfQorCiBpbnQKIGFzY2lpMnByb3RvIChjb25zdCBj
aGFyKiBwcm90b19uYW1lKQogewpAQCAtMTcwOCw3ICsyMDYyLDcgQEAKICAgaW50IGk7CiAKICAg
QVNTRVJUIChQUk9UT19OID09IFNJWkUgKHByb3RvX25hbWVzKSk7Ci0gIGZvciAoaSA9IDA7IGkg
PCBQUk9UT19OOyArK2kpCisgIGZvciAoaSA9IDE7IGkgPCBQUk9UT19OOyArK2kpIC8qIHNraXAg
Zmlyc3Qgc2xvdCAqLwogICAgIHsKICAgICAgIGlmIChpKQogCWJ1Zl9wcmludGYoJm91dCwgIiAi
KTsKQEAgLTE3MTcsNiArMjA3MSw0NyBAQAogICByZXR1cm4gQlNUUiAoJm91dCk7CiB9CiAKKwor
aW50CithZGRyX2d1ZXNzX2ZhbWlseShpbnQgcHJvdG8sIGNvbnN0IGNoYXIgKm5hbWUpIAorewor
ICBzYV9mYW1pbHlfdCByZXQ7CisgIGlmIChwcm90bykgeworICAgIHJldHVybiBwcm90b19zYV9m
YW1pbHkocHJvdG8pOwkvKiBhbHJlYWR5IHN0YW1wZWQgKi8KKyAgfSAKKyNpZmRlZiBVU0VfUEZf
VU5JWAorICBlbHNlIGlmIChuYW1lICYmIG5hbWVbMF0gPT0gJy8nKSB7CisgICAgcmV0dXJuIEFG
X1VOSVg7CisgIH0KKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9JTkVUNgorICBlbHNlIHsKKyAgICBz
dHJ1Y3QgYWRkcmluZm8gaGludHMgLCAqYWk7CisgICAgaW50IGVycjsKKyAgICBtZW1zZXQoJmhp
bnRzLCAwLCBzaXplb2YgaGludHMpOworICAgIGhpbnRzLmFpX2ZsYWdzPUFJX05VTUVSSUNIT1NU
OworICAgIGlmICgoZXJyPWdldGFkZHJpbmZvKG5hbWUsIE5VTEwsICZoaW50cywgJmFpKSk9PTAp
IHsKKyAgICAgIHJldD1haS0+YWlfZmFtaWx5OworICAgICAgZnJlZWFkZHJpbmZvKGFpKTsKKyAg
ICAgIHJldHVybiByZXQ7CisgICAgfQorICB9CisjZW5kaWYKKyAgcmV0dXJuIEFGX0lORVQ7CS8q
IGRlZmF1bHQgKi8KK30KK2NvbnN0IGNoYXIgKgorYWRkcl9mYW1pbHlfbmFtZSAoaW50IGFmKSAK
K3sKKyAgc3dpdGNoIChhZikgeworICAgIGNhc2UgQUZfSU5FVDogcmV0dXJuICJBRl9JTkVUIjsK
KyAgICBjYXNlIEFGX0lORVQ2OiByZXR1cm4gIkFGX0lORVQ2IjsKKyNpZmRlZiBVU0VfUEZfVU5J
WAorICAgIGNhc2UgQUZfVU5JWDogcmV0dXJuICJBRl9VTklYIjsKKyNlbmRpZgorICB9CisgIHJl
dHVybiAiQUZfVU5TUEVDIjsKK30KKwogLyoKICAqIEdpdmVuIGEgbG9jYWwgcHJvdG8sIHJldHVy
biBsb2NhbCBwcm90bwogICogaWYgIXJlbW90ZSwgb3IgY29tcGF0aWJsZSByZW1vdGUgcHJvdG8K
QEAgLTE3OTAsMjQgKzIxODUsMTI4IEBACiAKICNpZm5kZWYgV0lOMzIKIAorI2lmIEVOQUJMRV9J
UF9QS1RJTkZPCisKK3N0cnVjdCBvcGVudnBuX2luX3BrdGluZm8KK3sKKyAgc3RydWN0IGNtc2do
ZHIgY21zZ2hkcjsKKyAgc3RydWN0IGluX3BrdGluZm8gcGk7Cit9OworI2lmZGVmIFVTRV9QRl9J
TkVUNgorc3RydWN0IG9wZW52cG5faW42X3BrdGluZm8KK3sKKyAgc3RydWN0IGNtc2doZHIgY21z
Z2hkcjsKKyAgc3RydWN0IGluNl9wa3RpbmZvIHBpNjsKK307CisjZW5kaWYKKwordW5pb24gb3Bl
bnZwbl9wa3RpbmZvIHsKKwlzdHJ1Y3Qgb3BlbnZwbl9pbl9wa3RpbmZvIGNtc2dwaTsKKyNpZmRl
ZiBVU0VfUEZfSU5FVDYKKwlzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbyBjbXNncGk2OworI2Vu
ZGlmCit9OworCisvKiBVRFB2NCBhbmQgVURQdjYgKi8KK3N0YXRpYyBzb2NrbGVuX3QKK2xpbmtf
c29ja2V0X3JlYWRfdWRwX3Bvc2l4X3JlY3Ztc2cgKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywK
KwkJCQkgICAgc3RydWN0IGJ1ZmZlciAqYnVmLAorCQkJCSAgICBpbnQgbWF4c2l6ZSwKKwkJCQkg
ICAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmZyb20pCit7CisgIHN0cnVjdCBpb3ZlYyBpb3Y7
CisgIHVuaW9uIG9wZW52cG5fcGt0aW5mbyBvcGk7CisgIHN0cnVjdCBtc2doZHIgbWVzZzsKKyAg
c29ja2xlbl90IGZyb21sZW4gPSBzaXplb2YgKGZyb20tPmFkZHIpOworCisgIGlvdi5pb3ZfYmFz
ZSA9IEJQVFIgKGJ1Zik7CisgIGlvdi5pb3ZfbGVuID0gbWF4c2l6ZTsKKyAgbWVzZy5tc2dfaW92
ID0gJmlvdjsKKyAgbWVzZy5tc2dfaW92bGVuID0gMTsKKyAgbWVzZy5tc2dfbmFtZSA9ICZmcm9t
LT5hZGRyOworICBtZXNnLm1zZ19uYW1lbGVuID0gZnJvbWxlbjsKKyAgbWVzZy5tc2dfY29udHJv
bCA9ICZvcGk7CisgIG1lc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YgKG9waSk7CisgIGJ1Zi0+
bGVuID0gcmVjdm1zZyAoc29jay0+c2QsICZtZXNnLCAwKTsKKyAgaWYgKGJ1Zi0+bGVuID49IDAp
CisgICAgeworICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2c7CisgICAgICBmcm9tbGVuID0gbWVz
Zy5tc2dfbmFtZWxlbjsKKyAgICAgIGNtc2cgPSBDTVNHX0ZJUlNUSERSICgmbWVzZyk7CisgICAg
ICBpZiAoY21zZyAhPSBOVUxMCisJICAmJiBDTVNHX05YVEhEUiAoJm1lc2csIGNtc2cpID09IE5V
TEwKKwkgICYmIGNtc2ctPmNtc2dfbGV2ZWwgPT0gU09MX0lQIAorCSAgJiYgY21zZy0+Y21zZ190
eXBlID09IElQX1BLVElORk8KKwkgICYmIGNtc2ctPmNtc2dfbGVuID49IHNpemVvZiAoc3RydWN0
IG9wZW52cG5faW5fcGt0aW5mbykpCisJeworCSAgc3RydWN0IGluX3BrdGluZm8gKnBrdGkgPSAo
c3RydWN0IGluX3BrdGluZm8gKikgQ01TR19EQVRBIChjbXNnKTsKKwkgIGZyb20tPnBpLmluLmlw
aV9pZmluZGV4ID0gcGt0aS0+aXBpX2lmaW5kZXg7CisJICBmcm9tLT5waS5pbi5pcGlfc3BlY19k
c3QgPSBwa3RpLT5pcGlfc3BlY19kc3Q7CisJfQorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICAg
ZWxzZSBpZiAoY21zZyAhPSBOVUxMCisJICAmJiBDTVNHX05YVEhEUiAoJm1lc2csIGNtc2cpID09
IE5VTEwKKwkgICYmIGNtc2ctPmNtc2dfbGV2ZWwgPT0gSVBQUk9UT19JUFY2IAorCSAgJiYgY21z
Zy0+Y21zZ190eXBlID09IElQVjZfUEtUSU5GTworCSAgJiYgY21zZy0+Y21zZ19sZW4gPj0gc2l6
ZW9mIChzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbykpCisJeworCSAgc3RydWN0IGluNl9wa3Rp
bmZvICpwa3RpNiA9IChzdHJ1Y3QgaW42X3BrdGluZm8gKikgQ01TR19EQVRBIChjbXNnKTsKKwkg
IGZyb20tPnBpLmluNi5pcGk2X2lmaW5kZXggPSBwa3RpNi0+aXBpNl9pZmluZGV4OworCSAgZnJv
bS0+cGkuaW42LmlwaTZfYWRkciA9IHBrdGk2LT5pcGk2X2FkZHI7CisJfQorI2VuZGlmCisgICAg
fQorICByZXR1cm4gZnJvbWxlbjsKK30KKyNlbmRpZgorCisvKiBVRFB2NCBhbmQgVURQdjYgKi8K
IGludAogbGlua19zb2NrZXRfcmVhZF91ZHBfcG9zaXggKHN0cnVjdCBsaW5rX3NvY2tldCAqc29j
aywKIAkJCSAgICBzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCQkgICAgaW50IG1heHNpemUsCi0JCQkg
ICAgc3RydWN0IHNvY2thZGRyX2luICpmcm9tKQorCQkJICAgIHN0cnVjdCBvcGVudnBuX3NvY2th
ZGRyICpmcm9tKQoreworICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoZnJvbS0+YWRkcik7
CisgIHNvY2tsZW5fdCBleHBlY3RlZGxlbiA9IGFmX2FkZHJfc2l6ZShwcm90b19zYV9mYW1pbHko
c29jay0+aW5mby5wcm90bykpOworICBDTEVBUiAoKmZyb20pOworICBBU1NFUlQgKGJ1Zl9zYWZl
IChidWYsIG1heHNpemUpKTsKKyNpZiBFTkFCTEVfSVBfUEtUSU5GTworICAvKiBpZiAoc29jay0+
aW5mby5wcm90byA9PSBQUk9UT19VRFB2NCAmJiBzb2NrLT5zb2NrZXRfZmxhZ3MgJiBTRl9VU0Vf
SVBfUEtUSU5GTykgKi8KKyAgLyogQm90aCBQUk9UT19VRFB2NCBhbmQgUFJPVE9fVURQdjYgKi8K
KyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSAmJiBzb2NrLT5zb2NrZXRfZmxh
Z3MgJiBTRl9VU0VfSVBfUEtUSU5GTykKKyAgICBmcm9tbGVuID0gbGlua19zb2NrZXRfcmVhZF91
ZHBfcG9zaXhfcmVjdm1zZyAoc29jaywgYnVmLCBtYXhzaXplLCBmcm9tKTsKKyAgZWxzZQorI2Vu
ZGlmCisgICAgYnVmLT5sZW4gPSByZWN2ZnJvbSAoc29jay0+c2QsIEJQVFIgKGJ1ZiksIG1heHNp
emUsIDAsCisJCSAgICAgICAmZnJvbS0+YWRkci5zYSwgJmZyb21sZW4pOworICBpZiAoYnVmLT5s
ZW4gPj0gMCAmJiBleHBlY3RlZGxlbiAmJiBmcm9tbGVuICE9IGV4cGVjdGVkbGVuKQorICAgIGJh
ZF9hZGRyZXNzX2xlbmd0aCAoZnJvbWxlbiwgZXhwZWN0ZWRsZW4pOworICByZXR1cm4gYnVmLT5s
ZW47Cit9CisKKyNlbmRpZgorCisjaWZkZWYgVVNFX1BGX1VOSVgKKworaW50CitsaW5rX3NvY2tl
dF9yZWFkX3VuaXhfZGdyYW0gKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKKwkJCSAgICBzdHJ1
Y3QgYnVmZmVyICpidWYsCisJCQkgICAgaW50IG1heHNpemUsCisJCQkgICAgc3RydWN0IHNvY2th
ZGRyX3VuICpmcm9tKQogewogICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoKmZyb20pOwog
ICBDTEVBUiAoKmZyb20pOwogICBBU1NFUlQgKGJ1Zl9zYWZlIChidWYsIG1heHNpemUpKTsKKyAg
LyogUEZfVU5JWCBER1JBTSAqLwogICBidWYtPmxlbiA9IHJlY3Zmcm9tIChzb2NrLT5zZCwgQlBU
UiAoYnVmKSwgbWF4c2l6ZSwgMCwKIAkJICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikgZnJvbSwg
JmZyb21sZW4pOwotICBpZiAoZnJvbWxlbiAhPSBzaXplb2YgKCpmcm9tKSkKLSAgICBiYWRfYWRk
cmVzc19sZW5ndGggKGZyb21sZW4sIHNpemVvZiAoKmZyb20pKTsKKyAgaWYgKGZyb21sZW4gPiBz
aXplb2YgKCpmcm9tKSkKKyAgICBiYWRfYWRkcmVzc19sZW5ndGggKGZyb21sZW4sIHNpemVvZiAo
KmZyb20pKTsgLyogampvOiBYWFg6IGFjdHVhbGx5IGV4Y2Vzc2l2ZV9hZGRyX2xlbigpICovCiAg
IHJldHVybiBidWYtPmxlbjsKIH0KIAogI2VuZGlmCi0KIC8qCiAgKiBTb2NrZXQgV3JpdGUgUm91
dGluZXMKICAqLwpAQCAtMTgxNSw3ICsyMzE0LDcgQEAKIGludAogbGlua19zb2NrZXRfd3JpdGVf
dGNwIChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvY2ssCiAJCSAgICAgICBzdHJ1Y3QgYnVmZmVyICpi
dWYsCi0JCSAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnRvKQorCQkgICAgICAgc3RydWN0IG9w
ZW52cG5fc29ja2FkZHIgKnRvKQogewogICBwYWNrZXRfc2l6ZV90eXBlIGxlbiA9IEJMRU4gKGJ1
Zik7CiAgIGRtc2cgKERfU1RSRUFNX0RFQlVHLCAiU1RSRUFNOiBXUklURSAlZCBvZmZzZXQ9JWQi
LCAoaW50KWxlbiwgYnVmLT5vZmZzZXQpOwpAQCAtMTgyOSw2ICsyMzI4LDY4IEBACiAjZW5kaWYK
IH0KIAorI2lmIEVOQUJMRV9JUF9QS1RJTkZPCisKK2ludAorbGlua19zb2NrZXRfd3JpdGVfdWRw
X3Bvc2l4X3NlbmRtc2cgKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKKwkJCQkgICAgIHN0cnVj
dCBidWZmZXIgKmJ1ZiwKKwkJCQkgICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICp0bykKK3sK
KyAgc3RydWN0IGlvdmVjIGlvdjsKKyAgc3RydWN0IG1zZ2hkciBtZXNnOworICBzdHJ1Y3QgY21z
Z2hkciAqY21zZzsKKworICAvKiBBU1NFUlQoc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmlu
LnNpbl9mYW1pbHkgPT0gQUZfSU5FVCk7ICovCisgIGlvdi5pb3ZfYmFzZSA9IEJQVFIgKGJ1Zik7
CisgIGlvdi5pb3ZfbGVuID0gQkxFTiAoYnVmKTsKKyAgbWVzZy5tc2dfaW92ID0gJmlvdjsKKyAg
bWVzZy5tc2dfaW92bGVuID0gMTsKKyAgc3dpdGNoIChzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFk
ZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOiB7CisJICBzdHJ1Y3Qgb3BlbnZw
bl9pbl9wa3RpbmZvIG9waTsKKwkgIHN0cnVjdCBpbl9wa3RpbmZvICpwa3RpOworCSAgbWVzZy5t
c2dfbmFtZSA9ICZ0by0+YWRkci5zYTsKKwkgIG1lc2cubXNnX25hbWVsZW4gPSBzaXplb2YgKHN0
cnVjdCBzb2NrYWRkcl9pbik7CisJICBtZXNnLm1zZ19jb250cm9sID0gJm9waTsKKwkgIG1lc2cu
bXNnX2NvbnRyb2xsZW4gPSBzaXplb2YgKG9waSk7CisJICBtZXNnLm1zZ19mbGFncyA9IDA7CisJ
ICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOworCSAgY21zZy0+Y21zZ19sZW4gPSBzaXpl
b2YgKG9waSk7CisJICBjbXNnLT5jbXNnX2xldmVsID0gU09MX0lQOworCSAgY21zZy0+Y21zZ190
eXBlID0gSVBfUEtUSU5GTzsKKwkgIHBrdGkgPSAoc3RydWN0IGluX3BrdGluZm8gKikgQ01TR19E
QVRBIChjbXNnKTsKKwkgIHBrdGktPmlwaV9pZmluZGV4ID0gdG8tPnBpLmluLmlwaV9pZmluZGV4
OworCSAgcGt0aS0+aXBpX3NwZWNfZHN0ID0gdG8tPnBpLmluLmlwaV9zcGVjX2RzdDsKKwkgIHBr
dGktPmlwaV9hZGRyLnNfYWRkciA9IDA7CisJICBicmVhazsKKyAgICB9CisjaWZkZWYgVVNFX1BG
X0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjogeworCSAgc3RydWN0IG9wZW52cG5faW42X3BrdGlu
Zm8gb3BpNjsKKwkgIHN0cnVjdCBpbjZfcGt0aW5mbyAqcGt0aTY7CisJICBtZXNnLm1zZ19uYW1l
ID0gJnRvLT5hZGRyLnNhOworCSAgbWVzZy5tc2dfbmFtZWxlbiA9IHNpemVvZiAoc3RydWN0IHNv
Y2thZGRyX2luNik7CisJICBtZXNnLm1zZ19jb250cm9sID0gJm9waTY7CisJICBtZXNnLm1zZ19j
b250cm9sbGVuID0gc2l6ZW9mIChvcGk2KTsKKwkgIG1lc2cubXNnX2ZsYWdzID0gMDsKKwkgIGNt
c2cgPSBDTVNHX0ZJUlNUSERSICgmbWVzZyk7CisJICBjbXNnLT5jbXNnX2xlbiA9IHNpemVvZiAo
b3BpNik7CisJICBjbXNnLT5jbXNnX2xldmVsID0gSVBQUk9UT19JUFY2OworCSAgY21zZy0+Y21z
Z190eXBlID0gSVBWNl9QS1RJTkZPOworCSAgcGt0aTYgPSAoc3RydWN0IGluNl9wa3RpbmZvICop
IENNU0dfREFUQSAoY21zZyk7CisJICBwa3RpNi0+aXBpNl9pZmluZGV4ID0gdG8tPnBpLmluNi5p
cGk2X2lmaW5kZXg7CisJICBwa3RpNi0+aXBpNl9hZGRyID0gdG8tPnBpLmluNi5pcGk2X2FkZHI7
CisJICBicmVhazsKKyAgICB9CisjZW5kaWYKKyAgICBkZWZhdWx0OiBBU1NFUlQoMCk7CisgIH0K
KyAgcmV0dXJuIHNlbmRtc2cgKHNvY2stPnNkLCAmbWVzZywgMCk7Cit9CisKKyNlbmRpZgorCisK
IC8qCiAgKiBXaW4zMiBvdmVybGFwcGVkIHNvY2tldCBJL08gZnVuY3Rpb25zLgogICovCmRpZmYg
LXUgb3BlbnZwbi0yL3NvY2tldC5oOjEuNCBvcGVudnBuLTIvc29ja2V0Lmg6MS40LjQuMTEKLS0t
IHNvY2tldC5oOjEuNAlUdWUgQXByIDE5IDE1OjE2OjUxIDIwMDUKKysrIHNvY2tldC5oCU1vbiBN
YXkgMzAgMTU6MDk6NTYgMjAwNQpAQCAtNzcsMTIgKzc3LDMyIEBACiAvKiBjb252ZXJ0IGEgcGFj
a2V0X3NpemVfdHlwZSBmcm9tIG5ldHdvcmsgdG8gaG9zdCBvcmRlciAqLwogI2RlZmluZSBudG9o
cHMoeCkgbnRvaHMoeCkKIAorc3RydWN0IG9wZW52cG5fc29ja2FkZHIgeworCXVuaW9uIHsKKwkJ
c3RydWN0IHNvY2thZGRyIHNhOworCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gaW47CisjaWZkZWYgVVNF
X1BGX0lORVQ2CisJCXN0cnVjdCBzb2NrYWRkcl9pbjYgaW42OworI2VuZGlmCisjaWZkZWYgVVNF
X1BGX1VOSVgKKwkJc3RydWN0IHNvY2thZGRyX3VuIHVuOworI2VuZGlmCisJfSBhZGRyOworI2lm
IEVOQUJMRV9JUF9QS1RJTkZPCisJdW5pb24geworCQlzdHJ1Y3QgaW5fcGt0aW5mbyBpbjsKKyNp
ZmRlZiBVU0VfUEZfSU5FVDYKKwkJc3RydWN0IGluNl9wa3RpbmZvIGluNjsKKyNlbmRpZgorCX0g
cGk7CS8qIE11bHRpaG9tZSBzdXBwb3J0IGZvciBVRFAgKi8KKyNlbmRpZgorfTsKIC8qIElQIGFk
ZHJlc3NlcyB3aGljaCBhcmUgcGVyc2lzdGFudCBhY3Jvc3MgU0lHVVNSMXMgKi8KIHN0cnVjdCBs
aW5rX3NvY2tldF9hZGRyCiB7Ci0gIHN0cnVjdCBzb2NrYWRkcl9pbiBsb2NhbDsKLSAgc3RydWN0
IHNvY2thZGRyX2luIHJlbW90ZTsgLyogaW5pdGlhbCByZW1vdGUgKi8KLSAgc3RydWN0IHNvY2th
ZGRyX2luIGFjdHVhbDsgLyogcmVtb3RlIG1heSBjaGFuZ2UgZHVlIHRvIC0tZmxvYXQgKi8KKwlz
dHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciBsb2NhbDsKKwlzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciBy
ZW1vdGU7CisJc3RydWN0IG9wZW52cG5fc29ja2FkZHIgYWN0dWFsOwogfTsKIAogc3RydWN0IGxp
bmtfc29ja2V0X2luZm8KQEAgLTE4NCw2ICsyMDQsOCBAQAogICBzdHJ1Y3Qgc3RyZWFtX2J1ZiBz
dHJlYW1fYnVmOwogICBzdHJ1Y3QgYnVmZmVyIHN0cmVhbV9idWZfZGF0YTsKICAgYm9vbCBzdHJl
YW1fcmVzZXQ7CisjIGRlZmluZSBTRl9VU0VfSVBfUEtUSU5GTyAoMTw8MCkKKyAgdW5zaWduZWQg
aW50IHNvY2tldF9mbGFnczsKIAogI2lmZGVmIEVOQUJMRV9IVFRQX1BST1hZCiAgIC8qIEhUVFAg
cHJveHkgKi8KQEAgLTE5Myw3ICsyMTUsNyBAQAogI2lmZGVmIEVOQUJMRV9TT0NLUwogICAvKiBT
b2NrcyBwcm94eSAqLwogICBzdHJ1Y3Qgc29ja3NfcHJveHlfaW5mbyAqc29ja3NfcHJveHk7Ci0g
IHN0cnVjdCBzb2NrYWRkcl9pbiBzb2Nrc19yZWxheTsgLyogU29ja3MgVURQIHJlbGF5IGFkZHJl
c3MgKi8KKyAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgIHNvY2tzX3JlbGF5OyAvKiBTb2NrcyBV
RFAgcmVsYXkgYWRkcmVzcyAqLwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9IVFRQX1BS
T1hZKSB8fCBkZWZpbmVkKEVOQUJMRV9TT0NLUykKQEAgLTI3Niw3ICsyOTgsOCBAQAogCQkJIGlu
dCBjb25uZWN0X3JldHJ5X3NlY29uZHMsCiAJCQkgaW50IG10dV9kaXNjb3Zlcl90eXBlLAogCQkJ
IGludCByY3ZidWYsCi0JCQkgaW50IHNuZGJ1Zik7CisJCQkgaW50IHNuZGJ1ZiwKKwkJCSBjb25z
dCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCiB2b2lkIGxpbmtfc29ja2V0X2luaXRfcGhhc2UyIChz
dHJ1Y3QgbGlua19zb2NrZXQgKnNvY2ssCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgZnJhbWUgKmZy
YW1lLApAQCAtMjkxLDE0ICszMTQsMjEgQEAKIAogdm9pZCBsaW5rX3NvY2tldF9jbG9zZSAoc3Ry
dWN0IGxpbmtfc29ja2V0ICpzb2NrKTsKIAotY29uc3QgY2hhciAqcHJpbnRfc29ja2FkZHJfZXgg
KGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwKLQkJCSAgICAgICBib29sIGRvX3BvcnQs
CisjZGVmaW5lIFBTX1NIT1dfUE9SVF9JRl9ERUZJTkVEICgxPDwwKQorI2RlZmluZSBQU19TSE9X
X1BPUlQgICAgICAgICAgICAoMTw8MSkKKyNkZWZpbmUgUFNfU0hPV19QS1RJTkZPICAgICAgICAg
KDE8PDIpCitjb25zdCBjaGFyICpwcmludF9zb2NrYWRkcl9leCAoY29uc3Qgc3RydWN0IG9wZW52
cG5fc29ja2FkZHIgKmFkZHIsCiAJCQkgICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yLAorCQkJ
ICAgICAgIGludCBmbGFncywKIAkJCSAgICAgICBzdHJ1Y3QgZ2NfYXJlbmEgKmdjKTsKIAotY29u
c3QgY2hhciAqcHJpbnRfc29ja2FkZHIgKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwK
K2NvbnN0IGNoYXIgKnByaW50X3NvY2thZGRyIChjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRk
ciAqYWRkciwKIAkJCSAgICBzdHJ1Y3QgZ2NfYXJlbmEgKmdjKTsKK2NvbnN0IGNoYXIgKnByaW50
X2xpbmtfc29ja2FkZHIgKGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphY3QsCisJCQkJ
ICAgICAgc3RydWN0IGdjX2FyZW5hICpnYyk7CisKIAoraW50IGFkZHJfZ3Vlc3NfdHlwZShpbnQg
cHJvdG8sIGNvbnN0IGNoYXIgKm5hbWUpOwogI2RlZmluZSBJQV9FTVBUWV9JRl9VTkRFRiAoMTw8
MCkKICNkZWZpbmUgSUFfTkVUX09SREVSICAgICAgKDE8PDEpCiBjb25zdCBjaGFyICpwcmludF9p
bl9hZGRyX3QgKGluX2FkZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBnY19h
cmVuYSAqZ2MpOwpAQCAtMzA3LDI3ICszMzcsMjYgQEAKICNkZWZpbmUgU0FfU0VUX0lGX05PTlpF
Uk8gKDE8PDEpCiB2b2lkIHNldGVudl9zb2NrYWRkciAoc3RydWN0IGVudl9zZXQgKmVzLAogCQkg
ICAgICBjb25zdCBjaGFyICpuYW1lX3ByZWZpeCwKLQkJICAgICAgY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luICphZGRyLAorCQkgICAgICBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYWRk
ciwKIAkJICAgICAgY29uc3QgYm9vbCBmbGFncyk7CiAKIHZvaWQgc2V0ZW52X2luX2FkZHJfdCAo
c3RydWN0IGVudl9zZXQgKmVzLAogCQkgICAgICAgY29uc3QgY2hhciAqbmFtZV9wcmVmaXgsCiAJ
CSAgICAgICBpbl9hZGRyX3QgYWRkciwKIAkJICAgICAgIGNvbnN0IGJvb2wgZmxhZ3MpOwotCiB2
b2lkIGJhZF9hZGRyZXNzX2xlbmd0aCAoaW50IGFjdHVhbCwgaW50IGV4cGVjdGVkKTsKIAogaW5f
YWRkcl90IGxpbmtfc29ja2V0X2N1cnJlbnRfcmVtb3RlIChjb25zdCBzdHJ1Y3QgbGlua19zb2Nr
ZXRfaW5mbyAqaW5mbyk7CiAKIHZvaWQgbGlua19zb2NrZXRfY29ubmVjdGlvbl9pbml0aWF0ZWQg
KGNvbnN0IHN0cnVjdCBidWZmZXIgKmJ1ZiwKIAkJCQkgICAgICAgc3RydWN0IGxpbmtfc29ja2V0
X2luZm8gKmluZm8sCi0JCQkJICAgICAgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwK
KwkJCQkgICAgICAgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmFkZHIsCiAJCQkJICAg
ICAgIGNvbnN0IGNoYXIgKmNvbW1vbl9uYW1lLAogCQkJCSAgICAgICBzdHJ1Y3QgZW52X3NldCAq
ZXMpOwogCiB2b2lkIGxpbmtfc29ja2V0X2JhZF9pbmNvbWluZ19hZGRyIChzdHJ1Y3QgYnVmZmVy
ICpidWYsCiAJCQkJICAgIGNvbnN0IHN0cnVjdCBsaW5rX3NvY2tldF9pbmZvICppbmZvLAotCQkJ
CSAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmZyb21fYWRkcik7CisJCQkJICAgIGNvbnN0
IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICpmcm9tX2FkZHIpOwogCiB2b2lkIGxpbmtfc29ja2V0
X2JhZF9vdXRnb2luZ19hZGRyICh2b2lkKTsKIApAQCAtMzQ4LDEwICszNzcsMTkgQEAKIHNvY2tl
dF9kZXNjcmlwdG9yX3QgY3JlYXRlX3NvY2tldF90Y3AgKHZvaWQpOwogCiBzb2NrZXRfZGVzY3Jp
cHRvcl90IHNvY2tldF9kb19hY2NlcHQgKHNvY2tldF9kZXNjcmlwdG9yX3Qgc2QsCi0JCQkJICAg
ICAgc3RydWN0IHNvY2thZGRyX2luICpyZW1vdGUsCisJCQkJICAgICAgc3RydWN0IG9wZW52cG5f
c29ja2FkZHIgKmFjdCwKIAkJCQkgICAgICBjb25zdCBib29sIG5vd2FpdCk7CiAKIC8qCisgKiBw
cm90byByZWxhdGVkCisgKi8KK2Jvb2wgcHJvdG9faXNfbmV0KGludCBwcm90byk7Citib29sIHBy
b3RvX2lzX2RncmFtKGludCBwcm90byk7Citib29sIHByb3RvX2lzX3VkcChpbnQgcHJvdG8pOwor
Ym9vbCBwcm90b19pc190Y3AoaW50IHByb3RvKTsKKworCisvKgogICogRE5TIHJlc29sdXRpb24K
ICAqLwogCkBAIC0zNzMsMjggKzQxMSw3MCBAQAogICogVHJhbnNwb3J0IHByb3RvY29sIG5hbWlu
ZyBhbmQgb3RoZXIgZGV0YWlscy4KICAqLwogCi0jZGVmaW5lIFBST1RPX1VEUHY0ICAgICAgICAw
Ci0jZGVmaW5lIFBST1RPX1RDUHY0X1NFUlZFUiAxCi0jZGVmaW5lIFBST1RPX1RDUHY0X0NMSUVO
VCAyCi0jZGVmaW5lIFBST1RPX1RDUHY0ICAgICAgICAzCi0jZGVmaW5lIFBST1RPX04gICAgICAg
ICAgICA0CisjaWYgMCAvKiBQUkUgVURQdjYvVENQdjYgY29kZSAqLworI2RlZmluZSBQUk9UT19O
T05FICAgICAgICAgMCAvKiBjYXRjaCBmb3IgdW5pbml0aWFsaXplZCAqLworI2RlZmluZSBQUk9U
T19VRFB2NCAgICAgICAgMQorI2RlZmluZSBQUk9UT19UQ1B2NF9TRVJWRVIgMgorI2RlZmluZSBQ
Uk9UT19UQ1B2NF9DTElFTlQgMworI2RlZmluZSBQUk9UT19UQ1B2NCAgICAgICAgNAorI2RlZmlu
ZSBQUk9UT19VRFB2NiAgICAgICAgNQorI2RlZmluZSBQUk9UT19UQ1B2Nl9TRVJWRVIgNgorI2Rl
ZmluZSBQUk9UT19UQ1B2Nl9DTElFTlQgNworI2RlZmluZSBQUk9UT19UQ1B2NiAgICAgICAgOAor
I2RlZmluZSBQUk9UT19VTklYX0RHUkFNICAgOQorI2RlZmluZSBQUk9UT19VTklYX1NUUkVBTSAg
MTAKKyNkZWZpbmUgUFJPVE9fTiAgICAgICAgICAgIDExCisjZW5kaWYKKworLyogCisgKiBVc2Ug
ZW51bSdzIGluc3RlYWQgb2YgI2RlZmluZSB0byBhbGxvdyBmb3IgZWFzaWVyCisgKiBvcHRpb25h
bCBwcm90byBzdXBwb3J0CisgKi8KK2VudW0gcHJvdG9fbnVtIHsKKwlQUk9UT19OT05FLCAvKiBj
YXRjaCBmb3IgdW5pbml0aWFsaXplZCAqLworCVBST1RPX1VEUHY0LAorCVBST1RPX1RDUHY0X1NF
UlZFUiwKKwlQUk9UT19UQ1B2NF9DTElFTlQsCisJUFJPVE9fVENQdjQsCisJUFJPVE9fVURQdjYs
CisJUFJPVE9fVENQdjZfU0VSVkVSLAorCVBST1RPX1RDUHY2X0NMSUVOVCwKKwlQUk9UT19UQ1B2
NiwKKwlQUk9UT19VTklYX0RHUkFNLAorCVBST1RPX1VOSVhfU1RSRUFNLAorCVBST1RPX04KK307
CiAKIGludCBhc2NpaTJwcm90byAoY29uc3QgY2hhciogcHJvdG9fbmFtZSk7CiBjb25zdCBjaGFy
ICpwcm90bzJhc2NpaSAoaW50IHByb3RvLCBib29sIGRpc3BsYXlfZm9ybSk7CiBjb25zdCBjaGFy
ICpwcm90bzJhc2NpaV9hbGwgKHN0cnVjdCBnY19hcmVuYSAqZ2MpOwogaW50IHByb3RvX3JlbW90
ZSAoaW50IHByb3RvLCBib29sIHJlbW90ZSk7Citjb25zdCBjaGFyICphZGRyX2ZhbWlseV9uYW1l
KGludCBhZik7CiAKIC8qCiAgKiBPdmVyaGVhZCBhZGRlZCB0byBwYWNrZXRzIGJ5IHZhcmlvdXMg
cHJvdG9jb2xzLgogICovCiAjZGVmaW5lIElQdjRfVURQX0hFQURFUl9TSVpFICAgICAgICAgICAg
ICAyOAogI2RlZmluZSBJUHY0X1RDUF9IRUFERVJfU0laRSAgICAgICAgICAgICAgNDAKLSNkZWZp
bmUgSVB2Nl9VRFBfSEVBREVSX1NJWkUgICAgICAgICAgICAgIDQwCisjZGVmaW5lIElQdjZfVURQ
X0hFQURFUl9TSVpFICAgICAgICAgICAgICA0OAorI2RlZmluZSBJUHY2X1RDUF9IRUFERVJfU0la
RSAgICAgICAgICAgICAgNjAKIAotc3RhdGljIGNvbnN0IGludCBwcm90b19vdmVyaGVhZFtdID0g
eyAvKiBpbmRleGVkIGJ5IFBST1RPX3ggKi8KLSAgSVB2NF9VRFBfSEVBREVSX1NJWkUsCitzdGF0
aWMgY29uc3QgaW50IHByb3RvX292ZXJoZWFkW1BST1RPX05dID0geyAvKiBpbmRleGVkIGJ5IFBS
T1RPX3ggKi8KKyAgMCwKKyAgSVB2NF9VRFBfSEVBREVSX1NJWkUsIC8qIElQdjQgKi8KKyAgSVB2
NF9UQ1BfSEVBREVSX1NJWkUsCiAgIElQdjRfVENQX0hFQURFUl9TSVpFLAotICBJUHY0X1RDUF9I
RUFERVJfU0laRQorICBJUHY0X1RDUF9IRUFERVJfU0laRSwKKyNpZmRlZiBVU0VfUEZfSU5FVDYK
KyAgSVB2Nl9VRFBfSEVBREVSX1NJWkUsIC8qIElQdjYgKi8KKyAgSVB2Nl9UQ1BfSEVBREVSX1NJ
WkUsCisgIElQdjZfVENQX0hFQURFUl9TSVpFLAorICBJUHY2X1RDUF9IRUFERVJfU0laRSwKKyNl
bmRpZgorI2lmZGVmIFVTRV9QRl9VTklYCisgIDAsCQkJLyogQUZfVU5JWCBwcm94aWVzLCBhc3N1
bWUgbm8gb3ZlcmhlYWQgKi8KKyAgMCwKKyNlbmRpZgogfTsKIAogc3RhdGljIGlubGluZSBpbnQK
QEAgLTQyNiw3ICs1MDYsNyBAQAogc3RhdGljIGlubGluZSBib29sCiBsaW5rX3NvY2tldF9wcm90
b19jb25uZWN0aW9uX29yaWVudGVkIChpbnQgcHJvdG8pCiB7Ci0gIHJldHVybiBwcm90byA9PSBQ
Uk9UT19UQ1B2NF9TRVJWRVIgfHwgcHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UOworICByZXR1
cm4gIXByb3RvX2lzX2RncmFtKHByb3RvKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCkBAIC00
MzcsMzUgKzUxNywxMTMgQEAKICAgZWxzZQogICAgIHJldHVybiBmYWxzZTsKIH0KLQogc3RhdGlj
IGlubGluZSBib29sCi1hZGRyX2RlZmluZWQgKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRk
cikKK2FkZHJfZGVmaW5lZCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmFkZHIpCiB7
Ci0gIHJldHVybiBhZGRyLT5zaW5fYWRkci5zX2FkZHIgIT0gMDsKKyAgaWYgKCFhZGRyKSByZXR1
cm4gMDsKKyAgc3dpdGNoIChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNhc2UgQUZf
SU5FVDogcmV0dXJuIGFkZHItPmFkZHIuaW4uc2luX2FkZHIuc19hZGRyICE9IDA7CisjaWZkZWYg
VVNFX1BGX1VOSVgKKyAgICBjYXNlIEFGX1VOSVg6IHJldHVybiBhZGRyLT5hZGRyLnVuLnN1bl9w
YXRoWzBdICE9IDA7CisjZW5kaWYKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lO
RVQ2OiByZXR1cm4gIUlONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZhZGRyLT5hZGRyLmluNi5zaW42
X2FkZHIpOworI2VuZGlmCisgICAgZGVmYXVsdDogcmV0dXJuIDA7CisgIH0KK30KK3N0YXRpYyBp
bmxpbmUgYm9vbAorYWRkcl9kZWZpbmVkX2lwaSAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2Fk
ZHIgKmFkZHIpCit7CisjaWYgRU5BQkxFX0lQX1BLVElORk8KKyAgaWYgKCFhZGRyKSByZXR1cm4g
MDsKKyAgc3dpdGNoIChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5F
VDogcmV0dXJuIGFkZHItPnBpLmluLmlwaV9zcGVjX2RzdC5zX2FkZHIgIT0gMDsKKyNpZmRlZiBV
U0VfUEZfVU5JWAorICAgIGNhc2UgQUZfVU5JWDogQVNTRVJUKDApOworI2VuZGlmCisjaWZkZWYg
VVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjogcmV0dXJuICFJTjZfSVNfQUREUl9VTlNQ
RUNJRklFRCgmYWRkci0+cGkuaW42LmlwaTZfYWRkcik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiBy
ZXR1cm4gMDsKKyAgfQorI2Vsc2UKKyAgQVNTRVJUKDApOworI2VuZGlmCit9CitzdGF0aWMgaW5s
aW5lIGJvb2wKK2FkZHJfZGVmaW5lZF9zYSAoY29uc3Qgc3RydWN0IHNvY2thZGRyICphZGRyKQor
eworCXN0cnVjdCBvcGVudnBuX3NvY2thZGRyIG9zYTsKKwltZW1jcHkoJm9zYS5hZGRyLnNhLCBh
ZGRyLCBzaXplb2YgKG9zYS5hZGRyKSk7CisJcmV0dXJuIGFkZHJfZGVmaW5lZCgmb3NhKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sCi1hZGRyX21hdGNoIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHJf
aW4gKmExLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmEyKQorbGlua19hZGRyX2RlZmluZWQg
KGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphY3QpCiB7Ci0gIHJldHVybiBhMS0+c2lu
X2FkZHIuc19hZGRyID09IGEyLT5zaW5fYWRkci5zX2FkZHI7CisgIHJldHVybiBhZGRyX2RlZmlu
ZWQgKGFjdCk7Cit9CitzdGF0aWMgaW5saW5lIGJvb2wKK2FkZHJfbWF0Y2ggKGNvbnN0IHN0cnVj
dCBvcGVudnBuX3NvY2thZGRyICphMSwgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmEy
KQoreworICBzd2l0Y2goYTEtPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVU
OgorICAgICAgcmV0dXJuIGExLT5hZGRyLmluLnNpbl9hZGRyLnNfYWRkciA9PSBhMi0+YWRkci5p
bi5zaW5fYWRkci5zX2FkZHI7CisjaWZkZWYgVVNFX1BGX1VOSVgKKyAgICBjYXNlIEFGX1VOSVg6
CisgICAgICByZXR1cm4gc3RybmNtcChhMS0+YWRkci51bi5zdW5fcGF0aCwgYTItPmFkZHIudW4u
c3VuX3BhdGgsIHNpemVvZiAoYTEtPmFkZHIudW4uc3VuX3BhdGgpKSA9PSAwOworI2VuZGlmCisj
aWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHJldHVybiBJTjZf
QVJFX0FERFJfRVFVQUwoJmExLT5hZGRyLmluNi5zaW42X2FkZHIsICZhMi0+YWRkci5pbjYuc2lu
Nl9hZGRyKTsKKyNlbmRpZgorICB9CisgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIGZhbHNlOwogfQog
CiBzdGF0aWMgaW5saW5lIGluX2FkZHJfdAotYWRkcl9ob3N0IChjb25zdCBzdHJ1Y3Qgc29ja2Fk
ZHJfaW4gKnMpCithZGRyX2hvc3QgKGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphZGRy
KQogewotICByZXR1cm4gbnRvaGwgKHMtPnNpbl9hZGRyLnNfYWRkcik7CisgIC8qIAorICAgKiAi
cHVibGljIiBhZGRyIHJldHVybmVkIGlzIGNoZWNrZWQgYWdhaW5zdCBpZmNvbmZpZyBmb3IKKyAg
ICogcG9zc2libGUgY2xhc2g6IG5vbiBzZW5zZSBmb3Igbm93IGdpdmVuCisgICAqIHRoYXQgd2Ug
ZG8gaWZjb25maWcgb25seSBJUHY0CisgICAqLworI2lmIGRlZmluZWQoVVNFX1BGX0lORVQ2KSB8
fCBkZWZpbmVkKFVTRV9QRl9VTklYKQorICBpZihhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSAhPSBB
Rl9JTkVUKQorICAgIHJldHVybiAwOworI2Vsc2UgCisgIEFTU0VSVChhZGRyLT5hZGRyLnNhLnNh
X2ZhbWlseSA9PSBBRl9JTkVUKTsKKyNlbmRpZgorICByZXR1cm4gbnRvaGwgKGFkZHItPmFkZHIu
aW4uc2luX2FkZHIuc19hZGRyKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCi1hZGRyX3BvcnRf
bWF0Y2ggKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYTEsIGNvbnN0IHN0cnVjdCBzb2NrYWRk
cl9pbiAqYTIpCithZGRyX3BvcnRfbWF0Y2ggKGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRy
ICphMSwgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmEyKQogewotICByZXR1cm4gYTEt
PnNpbl9hZGRyLnNfYWRkciA9PSBhMi0+c2luX2FkZHIuc19hZGRyCi0gICAgJiYgYTEtPnNpbl9w
b3J0ID09IGEyLT5zaW5fcG9ydDsKKyAgc3dpdGNoKGExLT5hZGRyLnNhLnNhX2ZhbWlseSkgewor
ICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgIHJldHVybiBhMS0+YWRkci5pbi5zaW5fYWRkci5zX2Fk
ZHIgPT0gYTItPmFkZHIuaW4uc2luX2FkZHIuc19hZGRyCisJJiYgYTEtPmFkZHIuaW4uc2luX3Bv
cnQgPT0gYTItPmFkZHIuaW4uc2luX3BvcnQ7CisjaWZkZWYgVVNFX1BGX1VOSVgKKyAgICBjYXNl
IEFGX1VOSVg6CisgICAgICByZXR1cm4gc3RybmNtcChhMS0+YWRkci51bi5zdW5fcGF0aCwgYTIt
PmFkZHIudW4uc3VuX3BhdGgsIHNpemVvZiAoYTEtPmFkZHIudW4uc3VuX3BhdGgpKSA9PSAwOwor
I2VuZGlmCisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHJl
dHVybiBJTjZfQVJFX0FERFJfRVFVQUwoJmExLT5hZGRyLmluNi5zaW42X2FkZHIsICZhMi0+YWRk
ci5pbjYuc2luNl9hZGRyKSAKKwkmJiBhMS0+YWRkci5pbjYuc2luNl9wb3J0ID09IGEyLT5hZGRy
LmluNi5zaW42X3BvcnQ7CisjZW5kaWYKKyAgfQorICBBU1NFUlQoMCk7CisgIHJldHVybiBmYWxz
ZTsKIH0KIAogc3RhdGljIGlubGluZSBib29sCi1hZGRyX21hdGNoX3Byb3RvIChjb25zdCBzdHJ1
Y3Qgc29ja2FkZHJfaW4gKmExLAotCQkgIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqYTIsCith
ZGRyX21hdGNoX3Byb3RvIChjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYTEsCisJCSAg
Y29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmEyLAogCQkgIGNvbnN0IGludCBwcm90bykK
IHsKICAgcmV0dXJuIGxpbmtfc29ja2V0X3Byb3RvX2Nvbm5lY3Rpb25fb3JpZW50ZWQgKHByb3Rv
KQpAQCAtNDczLDYgKzYzMSw5MyBAQAogICAgIDogYWRkcl9wb3J0X21hdGNoIChhMSwgYTIpOwog
fQogCitzdGF0aWMgaW5saW5lIHZvaWQKK2FkZHJfY29weV9zYShzdHJ1Y3Qgb3BlbnZwbl9zb2Nr
YWRkciAqZHN0LCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqc3JjKQoreworICBkc3Qt
PmFkZHIgPSBzcmMtPmFkZHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorYWRkcl9jb3B5X2hv
c3Qoc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmRzdCwgY29uc3Qgc3RydWN0IG9wZW52cG5fc29j
a2FkZHIgKnNyYykKK3sKKyAgIHN3aXRjaChzcmMtPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAg
IGNhc2UgQUZfSU5FVDoKKyAgICAgICBkc3QtPmFkZHIuaW4uc2luX2FkZHIuc19hZGRyID0gc3Jj
LT5hZGRyLmluLnNpbl9hZGRyLnNfYWRkcjsKKyAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZf
VU5JWAorICAgICBjYXNlIEFGX1VOSVg6CisgICAgICAgc3RybmNweW50KGRzdC0+YWRkci51bi5z
dW5fcGF0aCwgc3JjLT5hZGRyLnVuLnN1bl9wYXRoLCBzaXplb2YgZHN0LT5hZGRyLnVuLnN1bl9w
YXRoKTsKKyAgICAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICBj
YXNlIEFGX0lORVQ2OiAKKyAgICAgICBkc3QtPmFkZHIuaW42LnNpbjZfYWRkciA9IHNyYy0+YWRk
ci5pbjYuc2luNl9hZGRyOworICAgICAgIGJyZWFrOworI2VuZGlmCisgICB9Cit9CisKKworc3Rh
dGljIGlubGluZSB2b2lkCithZGRyX3plcm9faG9zdChzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAq
YWRkcikKK3sKKyAgIHN3aXRjaChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgICBjYXNl
IEFGX0lORVQ6CisgICAgICAgYWRkci0+YWRkci5pbi5zaW5fYWRkci5zX2FkZHIgPSAwOworICAg
ICAgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9VTklYCisgICAgIGNhc2UgQUZfVU5JWDoKKyAgICAg
ICAqYWRkci0+YWRkci51bi5zdW5fcGF0aD0wOworICAgICAgIGJyZWFrOworI2VuZGlmCisjaWZk
ZWYgVVNFX1BGX0lORVQ2CisgICAgIGNhc2UgQUZfSU5FVDY6IAorICAgICAgIG1lbXNldCgmYWRk
ci0+YWRkci5pbjYuc2luNl9hZGRyLCAwLCBzaXplb2YgKHN0cnVjdCBpbjZfYWRkcikpOworICAg
ICAgIGJyZWFrOworI2VuZGlmCisgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYWRkcl9p
bmV0NG9yNihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCit7CisJcmV0dXJuIGFkZHItPnNhX2ZhbWls
eSA9PSBBRl9JTkVUIHx8IGFkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUNjsKK30KK2ludAorYWRk
cl9ndWVzc19mYW1pbHkoaW50IHByb3RvLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIGlu
bGluZSBpbnQKK2FmX2FkZHJfc2l6ZShzYV9mYW1pbHlfdCBhZikKK3sKKyNpZiBkZWZpbmVkKFVT
RV9QRl9JTkVUNikgfHwgZGVmaW5lZCAoVVNFX1BGX1VOSVgpCisgICBzd2l0Y2goYWYpIHsKKyAg
ICAgY2FzZSBBRl9JTkVUOiByZXR1cm4gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2lm
ZGVmIFVTRV9QRl9VTklYCisgICAgIGNhc2UgQUZfVU5JWDogcmV0dXJuIHNpemVvZiAoc3RydWN0
IHNvY2thZGRyX3VuKTsKKyNlbmRpZgorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICBjYXNlIEFG
X0lORVQ2OiByZXR1cm4gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgorICAg
ICBkZWZhdWx0OiAKKyNpZiAwCisgICAgICAvKiBjb3VsZCBiZSBjYWxsZWQgZnJvbSBzb2NrZXRf
ZG9fYWNjZXB0KCkgd2l0aCBlbXB0eSBhZGRyICovCisgICAgICBtc2cgKE1fRVJSLCAiQmFkIGFk
ZHJlc3MgZmFtaWx5OiAlZFxuIiwgYWRkci0+c2FfZmFtaWx5KTsKKyAgICAgIEFTU0VSVCgwKTsK
KyNlbmRpZgorICAgICAJcmV0dXJuIDA7CisgICB9CisjZWxzZSAvKiBvbmx5IEFGX0lORVQgKi8K
KyAgIHJldHVybiBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKKyNlbmRpZgorfQorCisKK3N0
YXRpYyBpbmxpbmUgYm9vbAorbGlua19hZGRyX3BvcnRfbWF0Y2ggKGNvbnN0IHN0cnVjdCBvcGVu
dnBuX3NvY2thZGRyICphMSwgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmEyKQorewor
ICByZXR1cm4gYWRkcl9wb3J0X21hdGNoIChhMSwgYTIpOworfQorCiBzdGF0aWMgaW5saW5lIGJv
b2wKIHNvY2tldF9jb25uZWN0aW9uX3Jlc2V0IChjb25zdCBzdHJ1Y3QgbGlua19zb2NrZXQgKnNv
Y2ssIGludCBzdGF0dXMpCiB7CkBAIC00OTYsMTggKzc0MSwyNSBAQAogc3RhdGljIGlubGluZSBi
b29sCiBsaW5rX3NvY2tldF92ZXJpZnlfaW5jb21pbmdfYWRkciAoc3RydWN0IGJ1ZmZlciAqYnVm
LAogCQkJCSAgY29uc3Qgc3RydWN0IGxpbmtfc29ja2V0X2luZm8gKmluZm8sCi0JCQkJICBjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmZyb21fYWRkcikKKwkJCQkgIGNvbnN0IHN0cnVjdCBvcGVu
dnBuX3NvY2thZGRyICpmcm9tX2FkZHIpCiB7CiAgIGlmIChidWYtPmxlbiA+IDApCiAgICAgewot
ICAgICAgaWYgKGZyb21fYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKQotCXJldHVybiBmYWxz
ZTsKLSAgICAgIGlmICghYWRkcl9kZWZpbmVkIChmcm9tX2FkZHIpKQotCXJldHVybiBmYWxzZTsK
LSAgICAgIGlmIChpbmZvLT5yZW1vdGVfZmxvYXQgfHwgIWFkZHJfZGVmaW5lZCAoJmluZm8tPmxz
YS0+cmVtb3RlKSkKLQlyZXR1cm4gdHJ1ZTsKLSAgICAgIGlmIChhZGRyX21hdGNoX3Byb3RvIChm
cm9tX2FkZHIsICZpbmZvLT5sc2EtPnJlbW90ZSwgaW5mby0+cHJvdG8pKQotCXJldHVybiB0cnVl
OworICAgICAgc3dpdGNoIChmcm9tX2FkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisjaWZkZWYg
VVNFX1BGX1VOSVgKKwljYXNlIEFGX1VOSVg6CisjZW5kaWYKKyNpZmRlZiBVU0VfUEZfSU5FVDYK
KwljYXNlIEFGX0lORVQ2OgorI2VuZGlmCisJY2FzZSBBRl9JTkVUOgorCSAgaWYgKCFhZGRyX2Rl
ZmluZWQgKGZyb21fYWRkcikpCisJICAgIHJldHVybiBmYWxzZTsKKwkgIGlmIChpbmZvLT5yZW1v
dGVfZmxvYXQgfHwgIWFkZHJfZGVmaW5lZCAoJmluZm8tPmxzYS0+cmVtb3RlKSkKKwkgICAgcmV0
dXJuIHRydWU7CisJICBpZiAoYWRkcl9tYXRjaF9wcm90byAoZnJvbV9hZGRyLCAmaW5mby0+bHNh
LT5yZW1vdGUsIGluZm8tPnByb3RvKSkKKwkgICAgcmV0dXJuIHRydWU7CisgICAgICB9CiAgICAg
fQogICByZXR1cm4gZmFsc2U7CiB9CkBAIC01MTUsMTYgKzc2NywxNSBAQAogc3RhdGljIGlubGlu
ZSB2b2lkCiBsaW5rX3NvY2tldF9nZXRfb3V0Z29pbmdfYWRkciAoc3RydWN0IGJ1ZmZlciAqYnVm
LAogCQkJICAgICAgY29uc3Qgc3RydWN0IGxpbmtfc29ja2V0X2luZm8gKmluZm8sCi0JCQkgICAg
ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIpCisJCQkgICAgICBzdHJ1Y3Qgb3BlbnZwbl9zb2Nr
YWRkciAqKmFjdCkKIHsKICAgaWYgKGJ1Zi0+bGVuID4gMCkKICAgICB7CiAgICAgICBzdHJ1Y3Qg
bGlua19zb2NrZXRfYWRkciAqbHNhID0gaW5mby0+bHNhOwotICAgICAgaWYgKGFkZHJfZGVmaW5l
ZCAoJmxzYS0+YWN0dWFsKSkKKyAgICAgIGlmIChsaW5rX2FkZHJfZGVmaW5lZCAoJmxzYS0+YWN0
dWFsKSkKIAl7Ci0JICBhZGRyLT5zaW5fZmFtaWx5ID0gbHNhLT5hY3R1YWwuc2luX2ZhbWlseTsK
LQkgIGFkZHItPnNpbl9hZGRyLnNfYWRkciA9IGxzYS0+YWN0dWFsLnNpbl9hZGRyLnNfYWRkcjsK
LQkgIGFkZHItPnNpbl9wb3J0ID0gbHNhLT5hY3R1YWwuc2luX3BvcnQ7CisJICAvL2FkZHJfY29w
eShhZGRyLCAmbHNhLT5hY3R1YWwuYWRkcik7CisJICAqYWN0ID0gJmxzYS0+YWN0dWFsOwogCX0K
ICAgICAgIGVsc2UKIAl7CkBAIC01MzcsNyArNzg4LDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZAog
bGlua19zb2NrZXRfc2V0X291dGdvaW5nX2FkZHIgKGNvbnN0IHN0cnVjdCBidWZmZXIgKmJ1ZiwK
IAkJCSAgICAgICBzdHJ1Y3QgbGlua19zb2NrZXRfaW5mbyAqaW5mbywKLQkJCSAgICAgICBjb25z
dCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IG9wZW52
cG5fc29ja2FkZHIgKmFkZHIsCiAJCQkgICAgICAgY29uc3QgY2hhciAqY29tbW9uX25hbWUsCiAJ
CQkgICAgICAgc3RydWN0IGVudl9zZXQgKmVzKQogewpAQCAtNjAxLDM0ICs4NTIsNDggQEAKIGlu
dCBsaW5rX3NvY2tldF9yZWFkX3VkcF9wb3NpeCAoc3RydWN0IGxpbmtfc29ja2V0ICpzb2NrLAog
CQkJCXN0cnVjdCBidWZmZXIgKmJ1ZiwKIAkJCQlpbnQgbWF4c2l6ZSwKLQkJCQlzdHJ1Y3Qgc29j
a2FkZHJfaW4gKmZyb20pOworCQkJCXN0cnVjdCBvcGVudnBuX3NvY2thZGRyICpmcm9tKTsKIAog
I2VuZGlmCisjaWZkZWYgVVNFX1BGX1VOSVgKK2ludCBsaW5rX3NvY2tldF9yZWFkX3VuaXhfZGdy
YW0gKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKKwkJCQlzdHJ1Y3QgYnVmZmVyICpidWYsCisJ
CQkJaW50IG1heHNpemUsCisJCQkJc3RydWN0IHNvY2thZGRyX3VuICpmcm9tKTsKKyNlbmRpZgog
CiAvKiByZWFkIGEgVENQIG9yIFVEUCBwYWNrZXQgZnJvbSBsaW5rICovCiBzdGF0aWMgaW5saW5l
IGludAogbGlua19zb2NrZXRfcmVhZCAoc3RydWN0IGxpbmtfc29ja2V0ICpzb2NrLAogCQkgIHN0
cnVjdCBidWZmZXIgKmJ1ZiwKIAkJICBpbnQgbWF4c2l6ZSwKLQkJICBzdHJ1Y3Qgc29ja2FkZHJf
aW4gKmZyb20pCisJCSAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmZyb20pCiB7Ci0gIGlmIChz
b2NrLT5pbmZvLnByb3RvID09IFBST1RPX1VEUHY0KQorICBpZiAocHJvdG9faXNfdWRwKHNvY2st
PmluZm8ucHJvdG8pKSAvKiB1bmlmaWVkIFVEUHY0IGFuZCBVRFB2NiAqLwogICAgIHsKICAgICAg
IGludCByZXM7CiAKICNpZmRlZiBXSU4zMgotICAgICAgcmVzID0gbGlua19zb2NrZXRfcmVhZF91
ZHBfd2luMzIgKHNvY2ssIGJ1ZiwgZnJvbSk7CisgICAgICByZXMgPSBsaW5rX3NvY2tldF9yZWFk
X3VkcF93aW4zMiAoc29jaywgYnVmLCBmcm9tLT5pbik7CiAjZWxzZQogICAgICAgcmVzID0gbGlu
a19zb2NrZXRfcmVhZF91ZHBfcG9zaXggKHNvY2ssIGJ1ZiwgbWF4c2l6ZSwgZnJvbSk7CiAjZW5k
aWYKICAgICAgIHJldHVybiByZXM7CiAgICAgfQotICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3Rv
ID09IFBST1RPX1RDUHY0X1NFUlZFUiB8fCBzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY0
X0NMSUVOVCkKKyAgZWxzZSBpZiAocHJvdG9faXNfdGNwKHNvY2stPmluZm8ucHJvdG8pKSAvKiB1
bmlmaWVkIFRDUHY0IGFuZCBUQ1B2NiAqLwogICAgIHsKICAgICAgIC8qIGZyb20gYWRkcmVzcyB3
YXMgcmV0dXJuZWQgYnkgYWNjZXB0ICovCi0gICAgICAqZnJvbSA9IHNvY2stPmluZm8ubHNhLT5h
Y3R1YWw7CisgICAgICBhZGRyX2NvcHlfc2EoZnJvbSwgJnNvY2stPmluZm8ubHNhLT5hY3R1YWwp
OwogICAgICAgcmV0dXJuIGxpbmtfc29ja2V0X3JlYWRfdGNwIChzb2NrLCBidWYpOwogICAgIH0K
KyNpZmRlZiBVU0VfUEZfVU5JWAorICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBST1RP
X1VOSVhfREdSQU0pCisgICAgeworICAgICAgaW50IHJlczsKKyAgICAgIHJlcyA9IGxpbmtfc29j
a2V0X3JlYWRfdW5peF9kZ3JhbSAoc29jaywgYnVmLCBtYXhzaXplLCAmZnJvbS0+YWRkci51bik7
CisgICAgICByZXR1cm4gcmVzOworICAgIH0KKyNlbmRpZgogICBlbHNlCiAgICAgewogICAgICAg
QVNTRVJUICgwKTsKQEAgLTY0MiwxNCArOTA3LDE0IEBACiAKIGludCBsaW5rX3NvY2tldF93cml0
ZV90Y3AgKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKIAkJCSAgIHN0cnVjdCBidWZmZXIgKmJ1
ZiwKLQkJCSAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG8pOworCQkJICAgc3RydWN0IG9wZW52cG5f
c29ja2FkZHIgKnRvKTsKIAogI2lmZGVmIFdJTjMyCiAKIHN0YXRpYyBpbmxpbmUgaW50CiBsaW5r
X3NvY2tldF93cml0ZV93aW4zMiAoc3RydWN0IGxpbmtfc29ja2V0ICpzb2NrLAogCQkJIHN0cnVj
dCBidWZmZXIgKmJ1ZiwKLQkJCSBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnRvKQorCQkJIHN0cnVjdCBv
cGVudnBuX3NvY2thZGRyICp0bykKIHsKICAgaW50IGVyciA9IDA7CiAgIGludCBzdGF0dXMgPSAw
OwpAQCAtNjU5LDcgKzkyNCw3IEBACiAgICAgICBpZiAoc3RhdHVzIDwgMCkKIAllcnIgPSBXU0FH
ZXRMYXN0RXJyb3IgKCk7CiAgICAgfQotICBzb2NrZXRfc2VuZF9xdWV1ZSAoc29jaywgYnVmLCB0
byk7CisgIHNvY2tldF9zZW5kX3F1ZXVlIChzb2NrLCBidWYsIHRvLT5hZGRyKTsKICAgaWYgKHN0
YXR1cyA8IDApCiAgICAgewogICAgICAgV1NBU2V0TGFzdEVycm9yIChlcnIpOwpAQCAtNjc0LDMw
ICs5MzksNTcgQEAKIHN0YXRpYyBpbmxpbmUgaW50CiBsaW5rX3NvY2tldF93cml0ZV91ZHBfcG9z
aXggKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKIAkJCSAgICAgc3RydWN0IGJ1ZmZlciAqYnVm
LAotCQkJICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnRvKQorCQkJICAgICBzdHJ1Y3Qgb3BlbnZw
bl9zb2NrYWRkciAqdG8pCiB7Ci0gIHJldHVybiBzZW5kdG8gKHNvY2stPnNkLCBCUFRSIChidWYp
LCBCTEVOIChidWYpLCAwLAotCQkgKHN0cnVjdCBzb2NrYWRkciAqKSB0bywKLQkJIChzb2NrbGVu
X3QpIHNpemVvZiAoKnRvKSk7CisjaWYgRU5BQkxFX0lQX1BLVElORk8KKyAgaW50IGxpbmtfc29j
a2V0X3dyaXRlX3VkcF9wb3NpeF9zZW5kbXNnIChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvY2ssCisJ
CQkJCSAgIHN0cnVjdCBidWZmZXIgKmJ1ZiwKKwkJCQkJICAgc3RydWN0IG9wZW52cG5fc29ja2Fk
ZHIgKnRvKTsKKworICAvKgorICBpZiAoc29jay0+aW5mby5wcm90byA9PSBQUk9UT19VRFB2NCAm
JiAoc29jay0+c29ja2V0X2ZsYWdzICYgU0ZfVVNFX0lQX1BLVElORk8pCisJICAmJiB0by0+cGku
aW4uaXBpX3NwZWNfZHN0LnNfYWRkcikKKworICAqLworICBpZiAocHJvdG9faXNfdWRwKHNvY2st
PmluZm8ucHJvdG8pICYmIChzb2NrLT5zb2NrZXRfZmxhZ3MgJiBTRl9VU0VfSVBfUEtUSU5GTykK
KwkgICYmIGFkZHJfZGVmaW5lZF9pcGkodG8pKQorICAgIHJldHVybiBsaW5rX3NvY2tldF93cml0
ZV91ZHBfcG9zaXhfc2VuZG1zZyAoc29jaywgYnVmLCB0byk7CisgIGVsc2UKKyNlbmRpZgorICAg
IHJldHVybiBzZW5kdG8gKHNvY2stPnNkLCBCUFRSIChidWYpLCBCTEVOIChidWYpLCAwLAorCQkg
ICAmdG8tPmFkZHIuc2EsCisJCSAgIChzb2NrbGVuX3QpIGFmX2FkZHJfc2l6ZSh0by0+YWRkci5z
YS5zYV9mYW1pbHkpKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQKIGxpbmtfc29ja2V0X3dyaXRl
X3RjcF9wb3NpeCAoc3RydWN0IGxpbmtfc29ja2V0ICpzb2NrLAogCQkJICAgICBzdHJ1Y3QgYnVm
ZmVyICpidWYsCi0JCQkgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG8pCisJCQkgICAgIHN0cnVj
dCBvcGVudnBuX3NvY2thZGRyICp0bykKIHsKICAgcmV0dXJuIHNlbmQgKHNvY2stPnNkLCBCUFRS
IChidWYpLCBCTEVOIChidWYpLCBNU0dfTk9TSUdOQUwpOwogfQogCiAjZW5kaWYKKyNpZmRlZiBV
U0VfUEZfVU5JWAorc3RhdGljIGlubGluZSBpbnQKK2xpbmtfc29ja2V0X3dyaXRlX3VuaXhfZGdy
YW0gKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKKwkJCSAgICAgc3RydWN0IGJ1ZmZlciAqYnVm
LAorCQkJICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gKnRvKQoreworICByZXR1cm4gc2VuZHRvIChz
b2NrLT5zZCwgQlBUUiAoYnVmKSwgQkxFTiAoYnVmKSwgMCwKKwkJIChzdHJ1Y3Qgc29ja2FkZHIg
KikgdG8sCisJCSAoc29ja2xlbl90KSBzaXplb2YgKCp0bykpOworfQorI2VuZGlmCisKIAogc3Rh
dGljIGlubGluZSBpbnQKIGxpbmtfc29ja2V0X3dyaXRlX3VkcCAoc3RydWN0IGxpbmtfc29ja2V0
ICpzb2NrLAogCQkgICAgICAgc3RydWN0IGJ1ZmZlciAqYnVmLAotCQkgICAgICAgc3RydWN0IHNv
Y2thZGRyX2luICp0bykKKwkJICAgICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICp0bykKIHsK
ICNpZmRlZiBXSU4zMgotICByZXR1cm4gbGlua19zb2NrZXRfd3JpdGVfd2luMzIgKHNvY2ssIGJ1
ZiwgdG8pOworICByZXR1cm4gbGlua19zb2NrZXRfd3JpdGVfd2luMzIgKHNvY2ssIGJ1ZiwgdG8t
PmluKTsKICNlbHNlCiAgIHJldHVybiBsaW5rX3NvY2tldF93cml0ZV91ZHBfcG9zaXggKHNvY2ss
IGJ1ZiwgdG8pOwogI2VuZGlmCkBAIC03MDcsMTYgKzk5OSwyMiBAQAogc3RhdGljIGlubGluZSBp
bnQKIGxpbmtfc29ja2V0X3dyaXRlIChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvY2ssCiAJCSAgIHN0
cnVjdCBidWZmZXIgKmJ1ZiwKLQkJICAgc3RydWN0IHNvY2thZGRyX2luICp0bykKKwkJICAgc3Ry
dWN0IG9wZW52cG5fc29ja2FkZHIgKnRvKQogewotICBpZiAoc29jay0+aW5mby5wcm90byA9PSBQ
Uk9UT19VRFB2NCkKKyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSkgLyogdW5p
ZmllZCBVRFB2NCBhbmQgVURQdjYgKi8KICAgICB7CiAgICAgICByZXR1cm4gbGlua19zb2NrZXRf
d3JpdGVfdWRwIChzb2NrLCBidWYsIHRvKTsKICAgICB9Ci0gIGVsc2UgaWYgKHNvY2stPmluZm8u
cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9f
VENQdjRfQ0xJRU5UKQorICBlbHNlIGlmIChwcm90b19pc190Y3Aoc29jay0+aW5mby5wcm90bykp
IC8qIHVuaWZpZWQgVENQdjQgYW5kIFRDUHY2ICovCiAgICAgewogICAgICAgcmV0dXJuIGxpbmtf
c29ja2V0X3dyaXRlX3RjcCAoc29jaywgYnVmLCB0byk7CiAgICAgfQorI2lmZGVmIFVTRV9QRl9V
TklYCisgIGVsc2UgaWYgKHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVU5JWF9ER1JBTSkKKyAg
ICB7CisgICAgICByZXR1cm4gbGlua19zb2NrZXRfd3JpdGVfdW5peF9kZ3JhbSAoc29jaywgYnVm
LCAmdG8tPmFkZHIudW4pOworICAgIH0KKyNlbmRpZgogICBlbHNlCiAgICAgewogICAgICAgQVNT
RVJUICgwKTsKZGlmZiAtdSBvcGVudnBuLTIvc29ja3MuYzoxLjQgb3BlbnZwbi0yL3NvY2tzLmM6
MS40LjYuMQotLS0gc29ja3MuYzoxLjQJVHVlIEFwciAxOSAxNToxNjo1MSAyMDA1CisrKyBzb2Nr
cy5jCU1vbiBNYXkgIDIgMTA6MzM6NTAgMjAwNQpAQCAtMTQ4LDcgKzE0OCw3IEBACiB9CiAKIHN0
YXRpYyBib29sCi1yZWN2X3NvY2tzX3JlcGx5IChzb2NrZXRfZGVzY3JpcHRvcl90IHNkLCBzdHJ1
Y3Qgc29ja2FkZHJfaW4gKmFkZHIsCityZWN2X3NvY2tzX3JlcGx5IChzb2NrZXRfZGVzY3JpcHRv
cl90IHNkLCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYWRkciwKIAkJICB2b2xhdGlsZSBpbnQg
KnNpZ25hbF9yZWNlaXZlZCkKIHsKICAgY2hhciBhdHlwID0gJ1wwJzsKQEAgLTE1OSw5ICsxNTks
OSBAQAogCiAgIGlmIChhZGRyICE9IE5VTEwpCiAgICAgewotICAgICAgYWRkci0+c2luX2ZhbWls
eSA9IEFGX0lORVQ7Ci0gICAgICBhZGRyLT5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAoSU5BRERS
X0FOWSk7Ci0gICAgICBhZGRyLT5zaW5fcG9ydCA9IGh0b25zICgwKTsKKyAgICAgIGFkZHItPmFk
ZHIuaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBhZGRyLT5hZGRyLmluLnNpbl9hZGRy
LnNfYWRkciA9IGh0b25sIChJTkFERFJfQU5ZKTsKKyAgICAgIGFkZHItPmFkZHIuaW4uc2luX3Bv
cnQgPSBodG9ucyAoMCk7CiAgICAgfQogCiAgIHdoaWxlIChsZW4gPCA0ICsgYWxlbiArIDIpCkBA
IC0yNDgsOCArMjQ4LDggQEAKICAgLyogQVRZUCA9PSAxIChJUCBWNCBhZGRyZXNzKSAqLwogICBp
ZiAoYXR5cCA9PSAnXHgwMScgJiYgYWRkciAhPSBOVUxMKQogICAgIHsKLSAgICAgIG1lbWNweSAo
JmFkZHItPnNpbl9hZGRyLCBidWYgKyA0LCBzaXplb2YgKGFkZHItPnNpbl9hZGRyKSk7Ci0gICAg
ICBtZW1jcHkgKCZhZGRyLT5zaW5fcG9ydCwgYnVmICsgOCwgc2l6ZW9mIChhZGRyLT5zaW5fcG9y
dCkpOworICAgICAgbWVtY3B5ICgmYWRkci0+YWRkci5pbi5zaW5fYWRkciwgYnVmICsgNCwgc2l6
ZW9mIChhZGRyLT5hZGRyLmluLnNpbl9hZGRyKSk7CisgICAgICBtZW1jcHkgKCZhZGRyLT5hZGRy
LmluLnNpbl9wb3J0LCBidWYgKyA4LCBzaXplb2YgKGFkZHItPmFkZHIuaW4uc2luX3BvcnQpKTsK
ICAgICB9CiAKIApAQCAtMzEwLDcgKzMxMCw3IEBACiBlc3RhYmxpc2hfc29ja3NfcHJveHlfdWRw
YXNzb2MgKHN0cnVjdCBzb2Nrc19wcm94eV9pbmZvICpwLAogCQkJICAgICAgICBzb2NrZXRfZGVz
Y3JpcHRvcl90IGN0cmxfc2QsIC8qIGFscmVhZHkgb3BlbiB0byBwcm94eSAqLwogCQkJCXNvY2tl
dF9kZXNjcmlwdG9yX3QgdWRwX3NkLAotCQkJCXN0cnVjdCBzb2NrYWRkcl9pbiAqcmVsYXlfYWRk
ciwKKwkJCQlzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqcmVsYXlfYWRkciwKIAkJCSAgICAgICAg
dm9sYXRpbGUgaW50ICpzaWduYWxfcmVjZWl2ZWQpCiB7CiAgIGlmICghc29ja3NfaGFuZHNoYWtl
IChjdHJsX3NkLCBzaWduYWxfcmVjZWl2ZWQpKQpAQCAtMzg1LDcgKzM4NSw3IEBACiAgKi8KIGlu
dAogc29ja3NfcHJvY2Vzc19vdXRnb2luZ191ZHAgKHN0cnVjdCBidWZmZXIgKmJ1ZiwKLQkJCSAg
ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnRvKQorCQkJICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRy
ICp0bykKIHsKICAgLyogCiAgICAqIEdldCBhIDEwIGJ5dGUgc3Vic2V0IGJ1ZmZlciBwcmVwZW5k
ZWQgdG8gYnVmIC0tCkBAIC00MDAsOCArNDAwLDggQEAKICAgYnVmX3dyaXRlX3UxNiAoJmhlYWQs
IDApOwkvKiBSU1YgPSAwICovCiAgIGJ1Zl93cml0ZV91OCAoJmhlYWQsIDApOwkvKiBGUkFHID0g
MCAqLwogICBidWZfd3JpdGVfdTggKCZoZWFkLCAnXHgwMScpOyAvKiBBVFlQID0gMSAoSVAgVjQp
ICovCi0gIGJ1Zl93cml0ZSAoJmhlYWQsICZ0by0+c2luX2FkZHIsIHNpemVvZiAodG8tPnNpbl9h
ZGRyKSk7Ci0gIGJ1Zl93cml0ZSAoJmhlYWQsICZ0by0+c2luX3BvcnQsIHNpemVvZiAodG8tPnNp
bl9wb3J0KSk7CisgIGJ1Zl93cml0ZSAoJmhlYWQsICZ0by0+YWRkci5pbi5zaW5fYWRkciwgc2l6
ZW9mICh0by0+YWRkci5pbi5zaW5fYWRkcikpOworICBidWZfd3JpdGUgKCZoZWFkLCAmdG8tPmFk
ZHIuaW4uc2luX3BvcnQsIHNpemVvZiAodG8tPmFkZHIuaW4uc2luX3BvcnQpKTsKIAogICByZXR1
cm4gMTA7CiB9CmRpZmYgLXUgb3BlbnZwbi0yL3NvY2tzLmg6MS40IG9wZW52cG4tMi9zb2Nrcy5o
OjEuNC42LjEKLS0tIHNvY2tzLmg6MS40CVR1ZSBBcHIgMTkgMTU6MTY6NTEgMjAwNQorKysgc29j
a3MuaAlNb24gTWF5ICAyIDEwOjMzOjUwIDIwMDUKQEAgLTM0LDYgKzM0LDggQEAKIAogI2luY2x1
ZGUgImJ1ZmZlci5oIgogCitzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkcjsKKwogc3RydWN0IHNvY2tz
X3Byb3h5X2luZm8gewogICBib29sIGRlZmluZWQ7CiAgIGJvb2wgcmV0cnk7CkBAIC01OCwxNCAr
NjAsMTQgQEAKIHZvaWQgZXN0YWJsaXNoX3NvY2tzX3Byb3h5X3VkcGFzc29jIChzdHJ1Y3Qgc29j
a3NfcHJveHlfaW5mbyAqcCwKIAkJCQkgICAgIHNvY2tldF9kZXNjcmlwdG9yX3QgY3RybF9zZCwg
LyogYWxyZWFkeSBvcGVuIHRvIHByb3h5ICovCiAJCQkJICAgICBzb2NrZXRfZGVzY3JpcHRvcl90
IHVkcF9zZCwKLQkJCQkgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmVsYXlfYWRkciwKKwkJCQkg
ICAgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICpyZWxheV9hZGRyLAogCQkJCSAgICAgdm9sYXRp
bGUgaW50ICpzaWduYWxfcmVjZWl2ZWQpOwogCiB2b2lkIHNvY2tzX3Byb2Nlc3NfaW5jb21pbmdf
dWRwIChzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCQkJc3RydWN0IHNvY2thZGRyX2luICpmcm9tKTsK
IAogaW50IHNvY2tzX3Byb2Nlc3Nfb3V0Z29pbmdfdWRwIChzdHJ1Y3QgYnVmZmVyICpidWYsCi0J
CQkJc3RydWN0IHNvY2thZGRyX2luICp0byk7CisJCQkJc3RydWN0IG9wZW52cG5fc29ja2FkZHIg
KnRvKTsKIAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtdSBvcGVudnBuLTIvc3NsLmM6MS40IG9wZW52
cG4tMi9zc2wuYzoxLjQuNC4xCi0tLSBzc2wuYzoxLjQJVHVlIEFwciAxOSAxNToxNjo1MSAyMDA1
CisrKyBzc2wuYwlNb24gTWF5ICAyIDEwOjMzOjUwIDIwMDUKQEAgLTM2MSw3ICszNjEsNyBAQAog
c3RhdGljIHZvaWQKIHNldGVudl91bnRydXN0ZWQgKHN0cnVjdCB0bHNfc2Vzc2lvbiAqc2Vzc2lv
bikKIHsKLSAgc2V0ZW52X3NvY2thZGRyIChzZXNzaW9uLT5vcHQtPmVzLCAidW50cnVzdGVkIiwg
JnNlc3Npb24tPnVudHJ1c3RlZF9zb2NrYWRkciwgU0FfSVBfUE9SVCk7CisgIHNldGVudl9zb2Nr
YWRkciAoc2Vzc2lvbi0+b3B0LT5lcywgInVudHJ1c3RlZCIsICZzZXNzaW9uLT51bnRydXN0ZWRf
YWRkciwgU0FfSVBfUE9SVCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNzgzLDcgKzE3ODMsNyBA
QAogd3JpdGVfY29udHJvbF9hdXRoIChzdHJ1Y3QgdGxzX3Nlc3Npb24gKnNlc3Npb24sCiAJCSAg
ICBzdHJ1Y3Qga2V5X3N0YXRlICprcywKIAkJICAgIHN0cnVjdCBidWZmZXIgKmJ1ZiwKLQkJICAg
IHN0cnVjdCBzb2NrYWRkcl9pbiAqdG9fbGlua19hZGRyLAorCQkgICAgc3RydWN0IG9wZW52cG5f
c29ja2FkZHIgKip0b19saW5rX2FkZHIsCiAJCSAgICBpbnQgb3Bjb2RlLAogCQkgICAgaW50IG1h
eF9hY2ssCiAJCSAgICBib29sIHByZXBlbmRfYWNrKQpAQCAtMTc5MSw3ICsxNzkxLDcgQEAKICAg
dWludDhfdCAqaGVhZGVyOwogICBzdHJ1Y3QgYnVmZmVyIG51bGwgPSBjbGVhcl9idWYgKCk7CiAK
LSAgQVNTRVJUIChhZGRyX2RlZmluZWQgKCZrcy0+cmVtb3RlX2FkZHIpKTsKKyAgQVNTRVJUIChs
aW5rX2FkZHJfZGVmaW5lZCAoJmtzLT5yZW1vdGVfYWRkcikpOwogICBBU1NFUlQgKHJlbGlhYmxl
X2Fja193cml0ZQogCSAgKGtzLT5yZWNfYWNrLCBidWYsICZrcy0+c2Vzc2lvbl9pZF9yZW1vdGUs
IG1heF9hY2ssIHByZXBlbmRfYWNrKSk7CiAgIEFTU0VSVCAoc2Vzc2lvbl9pZF93cml0ZV9wcmVw
ZW5kICgmc2Vzc2lvbi0+c2Vzc2lvbl9pZCwgYnVmKSk7CkBAIC0xODAzLDcgKzE4MDMsNyBAQAog
ICAgICAgb3BlbnZwbl9lbmNyeXB0IChidWYsIG51bGwsICZzZXNzaW9uLT50bHNfYXV0aCwgTlVM
TCk7CiAgICAgICBBU1NFUlQgKHN3YXBfaG1hYyAoYnVmLCAmc2Vzc2lvbi0+dGxzX2F1dGgsIGZh
bHNlKSk7CiAgICAgfQotICAqdG9fbGlua19hZGRyID0ga3MtPnJlbW90ZV9hZGRyOworICAqdG9f
bGlua19hZGRyID0gJmtzLT5yZW1vdGVfYWRkcjsKIH0KIAogLyoKQEAgLTE4MTIsNyArMTgxMiw3
IEBACiBzdGF0aWMgYm9vbAogcmVhZF9jb250cm9sX2F1dGggKHN0cnVjdCBidWZmZXIgKmJ1ZiwK
IAkJICAgY29uc3Qgc3RydWN0IGNyeXB0b19vcHRpb25zICpjbywKLQkJICAgY29uc3Qgc3RydWN0
IHNvY2thZGRyX2luICpmcm9tKQorCQkgICBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAq
ZnJvbSkKIHsKICAgc3RydWN0IGdjX2FyZW5hIGdjID0gZ2NfbmV3ICgpOwogCkBAIC0xODI1LDcg
KzE4MjUsNyBAQAogCXsKIAkgIG1zZyAoRF9UTFNfRVJST1JTLAogCSAgICAgICAiVExTIEVycm9y
OiBjYW5ub3QgbG9jYXRlIEhNQUMgaW4gaW5jb21pbmcgcGFja2V0IGZyb20gJXMiLAotCSAgICAg
ICBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSk7CisJICAgICAgIHByaW50X2xpbmtfc29ja2Fk
ZHIgKGZyb20sICZnYykpOwogCSAgZ2NfZnJlZSAoJmdjKTsKIAkgIHJldHVybiBmYWxzZTsKIAl9
CkBAIC0xODM3LDcgKzE4MzcsNyBAQAogCXsKIAkgIG1zZyAoRF9UTFNfRVJST1JTLAogCSAgICAg
ICAiVExTIEVycm9yOiBpbmNvbWluZyBwYWNrZXQgYXV0aGVudGljYXRpb24gZmFpbGVkIGZyb20g
JXMiLAotCSAgICAgICBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSk7CisJICAgICAgIHByaW50
X2xpbmtfc29ja2FkZHIgKGZyb20sICZnYykpOwogCSAgZ2NfZnJlZSAoJmdjKTsKIAkgIHJldHVy
biBmYWxzZTsKIAl9CkBAIC0yNzE5LDcgKzI3MTksNyBAQAogdGxzX3Byb2Nlc3MgKHN0cnVjdCB0
bHNfbXVsdGkgKm11bHRpLAogCSAgICAgc3RydWN0IHRsc19zZXNzaW9uICpzZXNzaW9uLAogCSAg
ICAgc3RydWN0IGJ1ZmZlciAqdG9fbGluaywKLQkgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG9f
bGlua19hZGRyLAorCSAgICAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKip0b19saW5rX2FkZHIs
CiAJICAgICBzdHJ1Y3QgbGlua19zb2NrZXRfaW5mbyAqdG9fbGlua19zb2NrZXRfaW5mbywKIAkg
ICAgIGludGVydmFsX3QgKndha2V1cCkKIHsKQEAgLTMxMTIsNyArMzExMiw3IEBACiBib29sCiB0
bHNfbXVsdGlfcHJvY2VzcyAoc3RydWN0IHRsc19tdWx0aSAqbXVsdGksCiAJCSAgIHN0cnVjdCBi
dWZmZXIgKnRvX2xpbmssCi0JCSAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG9fbGlua19hZGRyLAor
CQkgICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqKnRvX2xpbmtfYWRkciwKIAkJICAgc3RydWN0
IGxpbmtfc29ja2V0X2luZm8gKnRvX2xpbmtfc29ja2V0X2luZm8sCiAJCSAgIGludGVydmFsX3Qg
Kndha2V1cCkKIHsKQEAgLTMxMzYsNyArMzEzNiw3IEBACiAKICAgICAgIC8qIHNldCBpbml0aWFs
IHJlbW90ZSBhZGRyZXNzICovCiAgICAgICBpZiAoaSA9PSBUTV9BQ1RJVkUgJiYga3MtPnN0YXRl
ID09IFNfSU5JVElBTCAmJgotCSAgYWRkcl9kZWZpbmVkICgmdG9fbGlua19zb2NrZXRfaW5mby0+
bHNhLT5hY3R1YWwpKQorCSAgbGlua19hZGRyX2RlZmluZWQgKCZ0b19saW5rX3NvY2tldF9pbmZv
LT5sc2EtPmFjdHVhbCkpCiAJa3MtPnJlbW90ZV9hZGRyID0gdG9fbGlua19zb2NrZXRfaW5mby0+
bHNhLT5hY3R1YWw7CiAKICAgICAgIGRtc2cgKERfVExTX0RFQlVHLApAQCAtMzE0NSwxNyArMzE0
NSwzMCBAQAogCSAgIHN0YXRlX25hbWUgKGtzLT5zdGF0ZSksCiAJICAgc2Vzc2lvbl9pZF9wcmlu
dCAoJnNlc3Npb24tPnNlc3Npb25faWQsICZnYyksCiAJICAgc2Vzc2lvbl9pZF9wcmludCAoJmtz
LT5zZXNzaW9uX2lkX3JlbW90ZSwgJmdjKSwKLQkgICBwcmludF9zb2NrYWRkciAoJmtzLT5yZW1v
dGVfYWRkciwgJmdjKSk7CisJICAgcHJpbnRfbGlua19zb2NrYWRkciAoJmtzLT5yZW1vdGVfYWRk
ciwgJmdjKSk7CiAKLSAgICAgIGlmIChrcy0+c3RhdGUgPj0gU19JTklUSUFMICYmIGFkZHJfZGVm
aW5lZCAoJmtzLT5yZW1vdGVfYWRkcikpCisgICAgICBpZiAoa3MtPnN0YXRlID49IFNfSU5JVElB
TCAmJiBsaW5rX2FkZHJfZGVmaW5lZCAoJmtzLT5yZW1vdGVfYWRkcikpCiAJeworCSAgc3RydWN0
IG9wZW52cG5fc29ja2FkZHIgKnRsYSA9IE5VTEw7CisKIAkgIHVwZGF0ZV90aW1lICgpOwogCi0J
ICBpZiAodGxzX3Byb2Nlc3MgKG11bHRpLCBzZXNzaW9uLCB0b19saW5rLCB0b19saW5rX2FkZHIs
CisJICBpZiAodGxzX3Byb2Nlc3MgKG11bHRpLCBzZXNzaW9uLCB0b19saW5rLCAmdGxhLAogCQkJ
ICAgdG9fbGlua19zb2NrZXRfaW5mbywgd2FrZXVwKSkKIAkgICAgYWN0aXZlID0gdHJ1ZTsKIAog
CSAgLyoKKwkgICAqIElmIHRsc19wcm9jZXNzIHByb2R1Y2VkIGFuIG91dGdvaW5nIHBhY2tldCwK
KwkgICAqIHJldHVybiB0aGUgb3BlbnZwbl9zb2NrYWRkciBvYmplY3QgKHdoaWNoCisJICAgKiBj
b250YWlucyB0aGUgb3V0Z29pbmcgYWRkcmVzcykuCisJICAgKi8KKwkgIGlmICh0bGEpCisJICAg
IHsKKwkgICAgICBtdWx0aS0+dG9fbGlua19hZGRyID0gKnRsYTsKKwkgICAgICAqdG9fbGlua19h
ZGRyID0gJm11bHRpLT50b19saW5rX2FkZHI7CisJICAgIH0KKworCSAgLyoKIAkgICAqIElmIHRs
c19wcm9jZXNzIGhpdHMgYW4gZXJyb3I6CiAJICAgKiAoMSkgSWYgdGhlIHNlc3Npb24gaGFzIGFu
IHVuZXhwaXJlZCBsYW1lIGR1Y2sga2V5LCBwcmVzZXJ2ZSBpdC4KIAkgICAqICgyKSBSZWluaXRp
YWxpemUgdGhlIHNlc3Npb24uCkBAIC0zMjc0LDcgKzMyODcsNyBAQAogCiBib29sCiB0bHNfcHJl
X2RlY3J5cHQgKHN0cnVjdCB0bHNfbXVsdGkgKm11bHRpLAotCQkgc3RydWN0IHNvY2thZGRyX2lu
ICpmcm9tLAorCQkgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmZyb20sCiAJCSBzdHJ1
Y3QgYnVmZmVyICpidWYsCiAJCSBzdHJ1Y3QgY3J5cHRvX29wdGlvbnMgKm9wdCkKIHsKQEAgLTMz
MTYsNyArMzMyOSw3IEBACiAJICAgICAgaWYgKERFQ1JZUFRfS0VZX0VOQUJMRUQgKG11bHRpLCBr
cykKIAkJICAmJiBrZXlfaWQgPT0ga3MtPmtleV9pZAogCQkgICYmIGtzLT5hdXRoZW50aWNhdGVk
Ci0JCSAgJiYgYWRkcl9wb3J0X21hdGNoKGZyb20sICZrcy0+cmVtb3RlX2FkZHIpKQorCQkgICYm
IGxpbmtfYWRkcl9wb3J0X21hdGNoKGZyb20sICZrcy0+cmVtb3RlX2FkZHIpKQogCQl7CiAJCSAg
LyogcmV0dXJuIGFwcHJvcHJpYXRlIGRhdGEgY2hhbm5lbCBkZWNyeXB0IGtleSBpbiBvcHQgKi8K
IAkJICBvcHQtPmtleV9jdHhfYmkgPSAma3MtPmtleTsKQEAgLTMzMjksNyArMzM0Miw3IEBACiAJ
CSAga3MtPm5fYnl0ZXMgKz0gYnVmLT5sZW47CiAJCSAgZG1zZyAoRF9UTFNfREVCVUcsCiAJCSAg
ICAgICAiVExTOiBkYXRhIGNoYW5uZWwsIGtleV9pZD0lZCwgSVA9JXMiLAotCQkgICAgICAga2V5
X2lkLCBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSk7CisJCSAgICAgICBrZXlfaWQsIHByaW50
X2xpbmtfc29ja2FkZHIgKGZyb20sICZnYykpOwogCQkgIGdjX2ZyZWUgKCZnYyk7CiAJCSAgcmV0
dXJuIHJldDsKIAkJfQpAQCAtMzM0OSw3ICszMzYyLDcgQEAKIAogCSAgbXNnIChEX1RMU19FUlJP
UlMsCiAJICAgICAgICJUTFMgRXJyb3I6IGxvY2FsL3JlbW90ZSBUTFMga2V5cyBhcmUgb3V0IG9m
IHN5bmM6ICVzIFslZF0iLAotCSAgICAgICBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSwga2V5
X2lkKTsKKwkgICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSwga2V5X2lkKTsK
IAkgIGdvdG8gZXJyb3I7CiAJfQogICAgICAgZWxzZQkJCSAgLyogY29udHJvbCBjaGFubmVsIHBh
Y2tldCAqLwpAQCAtMzM2Myw3ICszMzc2LDcgQEAKIAkgICAgewogCSAgICAgIG1zZyAoRF9UTFNf
RVJST1JTLAogCQkgICAiVExTIEVycm9yOiB1bmtub3duIG9wY29kZSByZWNlaXZlZCBmcm9tICVz
IG9wPSVkIiwKLQkJICAgcHJpbnRfc29ja2FkZHIgKGZyb20sICZnYyksIG9wKTsKKwkJICAgcHJp
bnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSwgb3ApOwogCSAgICAgIGdvdG8gZXJyb3I7CiAJ
ICAgIH0KIApAQCAtMzM3OCw3ICszMzkxLDcgQEAKIAkJewogCQkgIG1zZyAoRF9UTFNfRVJST1JT
LAogCQkgICAgICAgIlRMUyBFcnJvcjogY2xpZW50LT5jbGllbnQgb3Igc2VydmVyLT5zZXJ2ZXIg
Y29ubmVjdGlvbiBhdHRlbXB0ZWQgZnJvbSAlcyIsCi0JCSAgICAgICBwcmludF9zb2NrYWRkciAo
ZnJvbSwgJmdjKSk7CisJCSAgICAgICBwcmludF9saW5rX3NvY2thZGRyIChmcm9tLCAmZ2MpKTsK
IAkJICBnb3RvIGVycm9yOwogCQl9CiAJICAgIH0KQEAgLTMzODcsNyArMzQwMCw3IEBACiAJICAg
KiBBdXRoZW50aWNhdGUgUGFja2V0CiAJICAgKi8KIAkgIGRtc2cgKERfVExTX0RFQlVHLCAiVExT
OiBjb250cm9sIGNoYW5uZWwsIG9wPSVzLCBJUD0lcyIsCi0JICAgICAgIHBhY2tldF9vcGNvZGVf
bmFtZSAob3ApLCBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSk7CisJICAgICAgIHBhY2tldF9v
cGNvZGVfbmFtZSAob3ApLCBwcmludF9saW5rX3NvY2thZGRyIChmcm9tLCAmZ2MpKTsKIAogCSAg
LyogZ2V0IHJlbW90ZSBzZXNzaW9uLWlkICovCiAJICB7CkBAIC0zMzk3LDcgKzM0MTAsNyBAQAog
CSAgICAgIHsKIAkJbXNnIChEX1RMU19FUlJPUlMsCiAJCSAgICAgIlRMUyBFcnJvcjogc2Vzc2lv
bi1pZCBub3QgZm91bmQgaW4gcGFja2V0IGZyb20gJXMiLAotCQkgICAgIHByaW50X3NvY2thZGRy
IChmcm9tLCAmZ2MpKTsKKwkJICAgICBwcmludF9saW5rX3NvY2thZGRyIChmcm9tLCAmZ2MpKTsK
IAkJZ290byBlcnJvcjsKIAkgICAgICB9CiAJICB9CkBAIC0zNDE0LDkgKzM0MjcsOSBAQAogCQkg
ICBzdGF0ZV9uYW1lIChrcy0+c3RhdGUpLAogCQkgICBzZXNzaW9uX2lkX3ByaW50ICgmc2Vzc2lv
bi0+c2Vzc2lvbl9pZCwgJmdjKSwKIAkJICAgc2Vzc2lvbl9pZF9wcmludCAoJnNpZCwgJmdjKSwK
LQkJICAgcHJpbnRfc29ja2FkZHIgKGZyb20sICZnYyksCisJCSAgIHByaW50X2xpbmtfc29ja2Fk
ZHIgKGZyb20sICZnYyksCiAJCSAgIHNlc3Npb25faWRfcHJpbnQgKCZrcy0+c2Vzc2lvbl9pZF9y
ZW1vdGUsICZnYyksCi0JCSAgIHByaW50X3NvY2thZGRyICgma3MtPnJlbW90ZV9hZGRyLCAmZ2Mp
KTsKKwkJICAgcHJpbnRfbGlua19zb2NrYWRkciAoJmtzLT5yZW1vdGVfYWRkciwgJmdjKSk7CiAK
IAkgICAgICBpZiAoc2Vzc2lvbl9pZF9lcXVhbCAoJmtzLT5zZXNzaW9uX2lkX3JlbW90ZSwgJnNp
ZCkpCiAJCS8qIGZvdW5kIGEgbWF0Y2ggKi8KQEAgLTM0NjEsNyArMzQ3NCw3IEBACiAJCSAgICB7
CiAJCSAgICAgIG1zZyAoRF9UTFNfRVJST1JTLAogCQkJICAgIlRMUyBFcnJvcjogQ2Fubm90IGFj
Y2VwdCBuZXcgc2Vzc2lvbiByZXF1ZXN0IGZyb20gJXMgZHVlIHRvIHNlc3Npb24gY29udGV4dCBl
eHBpcmUgb3IgLS1zaW5nbGUtc2Vzc2lvbiBbMV0iLAotCQkJICAgcHJpbnRfc29ja2FkZHIgKGZy
b20sICZnYykpOworCQkJICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSk7CiAJCSAg
ICAgIGdvdG8gZXJyb3I7CiAJCSAgICB9CiAKQEAgLTM0NzcsMTMgKzM0OTAsMTMgQEAKIAogCQkg
IG1zZyAoRF9UTFNfREVCVUdfTE9XLAogCQkgICAgICAgIlRMUzogSW5pdGlhbCBwYWNrZXQgZnJv
bSAlcywgc2lkPSVzIiwKLQkJICAgICAgIHByaW50X3NvY2thZGRyIChmcm9tLCAmZ2MpLAorCQkg
ICAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSwKIAkJICAgICAgIHNlc3Npb25f
aWRfcHJpbnQgKCZzaWQsICZnYykpOwogCiAJCSAgZG9fYnVyc3QgPSB0cnVlOwogCQkgIG5ld19s
aW5rID0gdHJ1ZTsKIAkJICBpID0gVE1fQUNUSVZFOwotCQkgIHNlc3Npb24tPnVudHJ1c3RlZF9z
b2NrYWRkciA9ICpmcm9tOworCQkgIHNlc3Npb24tPnVudHJ1c3RlZF9hZGRyID0gKmZyb207CiAJ
CX0KIAkgICAgfQogCkBAIC0zNTAzLDcgKzM1MTYsNyBAQAogCQl7CiAJCSAgbXNnIChEX1RMU19F
UlJPUlMsCiAJCSAgICAgICAiVExTIEVycm9yOiBDYW5ub3QgYWNjZXB0IG5ldyBzZXNzaW9uIHJl
cXVlc3QgZnJvbSAlcyBkdWUgdG8gc2Vzc2lvbiBjb250ZXh0IGV4cGlyZSBvciAtLXNpbmdsZS1z
ZXNzaW9uIFsyXSIsCi0JCSAgICAgICBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSk7CisJCSAg
ICAgICBwcmludF9saW5rX3NvY2thZGRyIChmcm9tLCAmZ2MpKTsKIAkJICBnb3RvIGVycm9yOwog
CQl9CiAJICAgICAgCkBAIC0zNTI2LDExICszNTM5LDExIEBACiAJICAgICAgICovCiAJICAgICAg
bXNnIChEX1RMU19ERUJVR19MT1csCiAJCSAgICJUTFM6IG5ldyBzZXNzaW9uIGluY29taW5nIGNv
bm5lY3Rpb24gZnJvbSAlcyIsCi0JCSAgIHByaW50X3NvY2thZGRyIChmcm9tLCAmZ2MpKTsKKwkJ
ICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSk7CiAKIAkgICAgICBuZXdfbGluayA9
IHRydWU7CiAJICAgICAgaSA9IFRNX1VOVFJVU1RFRDsKLQkgICAgICBzZXNzaW9uLT51bnRydXN0
ZWRfc29ja2FkZHIgPSAqZnJvbTsKKwkgICAgICBzZXNzaW9uLT51bnRydXN0ZWRfYWRkciA9ICpm
cm9tOwogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKQEAgLTM1NDQsNyArMzU1Nyw3IEBACiAJCXsK
IAkJICBtc2cgKERfVExTX0VSUk9SUywKIAkJICAgICAgICJUTFMgRXJyb3I6IFVucm91dGFibGUg
Y29udHJvbCBwYWNrZXQgcmVjZWl2ZWQgZnJvbSAlcyAoc2k9JWQgb3A9JXMpIiwKLQkJICAgICAg
IHByaW50X3NvY2thZGRyIChmcm9tLCAmZ2MpLAorCQkgICAgICAgcHJpbnRfbGlua19zb2NrYWRk
ciAoZnJvbSwgJmdjKSwKIAkJICAgICAgIGksCiAJCSAgICAgICBwYWNrZXRfb3Bjb2RlX25hbWUg
KG9wKSk7CiAJCSAgZ290byBlcnJvcjsKQEAgLTM1NTMsMTAgKzM1NjYsMTAgQEAKIAkgICAgICAv
KgogCSAgICAgICAqIFZlcmlmeSByZW1vdGUgSVAgYWRkcmVzcwogCSAgICAgICAqLwotCSAgICAg
IGlmICghbmV3X2xpbmsgJiYgIWFkZHJfcG9ydF9tYXRjaCAoJmtzLT5yZW1vdGVfYWRkciwgZnJv
bSkpCisJICAgICAgaWYgKCFuZXdfbGluayAmJiAhbGlua19hZGRyX3BvcnRfbWF0Y2ggKCZrcy0+
cmVtb3RlX2FkZHIsIGZyb20pKQogCQl7CiAJCSAgbXNnIChEX1RMU19FUlJPUlMsICJUTFMgRXJy
b3I6IFJlY2VpdmVkIGNvbnRyb2wgcGFja2V0IGZyb20gdW5leHBlY3RlZCBJUCBhZGRyOiAlcyIs
Ci0JCSAgICAgIHByaW50X3NvY2thZGRyIChmcm9tLCAmZ2MpKTsKKwkJICAgICAgcHJpbnRfbGlu
a19zb2NrYWRkciAoZnJvbSwgJmdjKSk7CiAJCSAgZ290byBlcnJvcjsKIAkJfQogCkBAIC0zNjE4
LDExICszNjMxLDExIEBACiAJCWtzLT5yZW1vdGVfYWRkciA9ICpmcm9tOwogCQkrK211bHRpLT5u
X3Nlc3Npb25zOwogCSAgICAgIH0KLQkgICAgZWxzZSBpZiAoIWFkZHJfcG9ydF9tYXRjaCAoJmtz
LT5yZW1vdGVfYWRkciwgZnJvbSkpCisJICAgIGVsc2UgaWYgKCFsaW5rX2FkZHJfcG9ydF9tYXRj
aCAoJmtzLT5yZW1vdGVfYWRkciwgZnJvbSkpCiAJICAgICAgewogCQltc2cgKERfVExTX0VSUk9S
UywKIAkJICAgICAiVExTIEVycm9yOiBFeGlzdGluZyBzZXNzaW9uIGNvbnRyb2wgY2hhbm5lbCBw
YWNrZXQgZnJvbSB1bmtub3duIElQIGFkZHJlc3M6ICVzIiwKLQkJICAgICBwcmludF9zb2NrYWRk
ciAoZnJvbSwgJmdjKSk7CisJCSAgICAgcHJpbnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSk7
CiAJCWdvdG8gZXJyb3I7CiAJICAgICAgfQogCkBAIC0zNzE5LDcgKzM3MzIsNyBAQAogICovCiBi
b29sCiB0bHNfcHJlX2RlY3J5cHRfbGl0ZSAoY29uc3Qgc3RydWN0IHRsc19hdXRoX3N0YW5kYWxv
bmUgKnRhcywKLQkJICAgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpmcm9tLAorCQkgICAg
ICBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqZnJvbSwKIAkJICAgICAgY29uc3Qgc3Ry
dWN0IGJ1ZmZlciAqYnVmKQogewogICBzdHJ1Y3QgZ2NfYXJlbmEgZ2MgPSBnY19uZXcgKCk7CkBA
IC0zNzQ3LDcgKzM3NjAsNyBAQAogCSAgICovCiAJICBkbXNnIChEX1RMU19TVEFURV9FUlJPUlMs
CiAJICAgICAgICJUTFMgU3RhdGUgRXJyb3I6IE5vIFRMUyBzdGF0ZSBmb3IgY2xpZW50ICVzLCBv
cGNvZGU9JWQiLAotCSAgICAgICBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSwKKwkgICAgICAg
cHJpbnRfbGlua19zb2NrYWRkciAoZnJvbSwgJmdjKSwKIAkgICAgICAgb3ApOwogCSAgZ290byBl
cnJvcjsKIAl9CkBAIC0zNzU3LDcgKzM3NzAsNyBAQAogCSAgZG1zZyAoRF9UTFNfU1RBVEVfRVJS
T1JTLAogCSAgICAgICAiVExTIFN0YXRlIEVycm9yOiBVbmtub3duIGtleSBJRCAoJWQpIHJlY2Vp
dmVkIGZyb20gJXMgLS0gMCB3YXMgZXhwZWN0ZWQiLAogCSAgICAgICBrZXlfaWQsCi0JICAgICAg
IHByaW50X3NvY2thZGRyIChmcm9tLCAmZ2MpKTsKKwkgICAgICAgcHJpbnRfbGlua19zb2NrYWRk
ciAoZnJvbSwgJmdjKSk7CiAJICBnb3RvIGVycm9yOwogCX0KIApAQCAtMzc2Niw3ICszNzc5LDcg
QEAKIAkgIGRtc2cgKERfVExTX1NUQVRFX0VSUk9SUywKIAkgICAgICAgIlRMUyBTdGF0ZSBFcnJv
cjogTGFyZ2UgcGFja2V0IChzaXplICVkKSByZWNlaXZlZCBmcm9tICVzIC0tIGEgcGFja2V0IG5v
IGxhcmdlciB0aGFuICVkIGJ5dGVzIHdhcyBleHBlY3RlZCIsCiAJICAgICAgIGJ1Zi0+bGVuLAot
CSAgICAgICBwcmludF9zb2NrYWRkciAoZnJvbSwgJmdjKSwKKwkgICAgICAgcHJpbnRfbGlua19z
b2NrYWRkciAoZnJvbSwgJmdjKSwKIAkgICAgICAgRVhQQU5ERURfU0laRV9EWU5BTUlDICgmdGFz
LT5mcmFtZSkpOwogCSAgZ290byBlcnJvcjsKIAl9CmRpZmYgLXUgb3BlbnZwbi0yL3NzbC5oOjEu
NCBvcGVudnBuLTIvc3NsLmg6MS40LjQuMQotLS0gc3NsLmg6MS40CVR1ZSBBcHIgMTkgMTU6MTY6
NTEgMjAwNQorKysgc3NsLmgJTW9uIE1heSAgMiAxMDozMzo1MCAyMDA1CkBAIC0zNDUsNyArMzQ1
LDcgQEAKIAogICBpbnQgaW5pdGlhbF9vcGNvZGU7CQkvKiBvdXIgaW5pdGlhbCBQXyBvcGNvZGUg
Ki8KICAgc3RydWN0IHNlc3Npb25faWQgc2Vzc2lvbl9pZF9yZW1vdGU7IC8qIHBlZXIncyByYW5k
b20gc2Vzc2lvbiBJRCAqLwotICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7ICAgICAg
LyogcGVlcidzIElQIGFkZHIgKi8KKyAgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgcmVtb3RlX2Fk
ZHI7ICAgICAgLyogcGVlcidzIElQIGFkZHIgKi8KICAgc3RydWN0IHBhY2tldF9pZCBwYWNrZXRf
aWQ7CSAgICAgICAvKiBmb3IgZGF0YSBjaGFubmVsLCB0byBwcmV2ZW50IHJlcGxheSBhdHRhY2tz
ICovCiAKICAgc3RydWN0IGtleV9jdHhfYmkga2V5OwkgICAgICAgLyogZGF0YSBjaGFubmVsIGtl
eXMgZm9yIGVuY3J5cHQvZGVjcnlwdC9obWFjICovCkBAIC00ODgsNyArNDg4LDcgQEAKICAgYm9v
bCB2ZXJpZmllZDsgICAgICAgICAgICAgICAgLyogdHJ1ZSBpZiBwZWVyIGNlcnRpZmljYXRlIHdh
cyB2ZXJpZmllZCBhZ2FpbnN0IENBICovCiAKICAgLyogbm90LXlldC1hdXRoZW50aWNhdGVkIGlu
Y29taW5nIGNsaWVudCAqLwotICBzdHJ1Y3Qgc29ja2FkZHJfaW4gdW50cnVzdGVkX3NvY2thZGRy
OworICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciB1bnRydXN0ZWRfYWRkcjsKIAogICBzdHJ1Y3Qg
a2V5X3N0YXRlIGtleVtLU19TSVpFXTsKIH07CkBAIC01MzUsNiArNTM1LDEyIEBACiAgIHN0cnVj
dCBrZXlfc3RhdGUgKnNhdmVfa3M7CS8qIHRlbXBvcmFyeSBwb2ludGVyIHVzZWQgYmV0d2VlbiBw
cmUvcG9zdCByb3V0aW5lcyAqLwogCiAgIC8qCisgICAqIFVzZWQgdG8gcmV0dXJuIG91dGdvaW5n
IGFkZHJlc3MgZnJvbQorICAgKiB0bHNfbXVsdGlfcHJvY2Vzcy4KKyAgICovCisgIHN0cnVjdCBv
cGVudnBuX3NvY2thZGRyIHRvX2xpbmtfYWRkcjsKKworICAvKgogICAgKiBOdW1iZXIgb2Ygc2Vz
c2lvbnMgbmVnb3RpYXRlZCB0aHVzIGZhci4KICAgICovCiAgIGludCBuX3Nlc3Npb25zOwpAQCAt
NTkwLDE5ICs1OTYsMTkgQEAKIAogYm9vbCB0bHNfbXVsdGlfcHJvY2VzcyAoc3RydWN0IHRsc19t
dWx0aSAqbXVsdGksCiAJCQlzdHJ1Y3QgYnVmZmVyICp0b19saW5rLAotCQkJc3RydWN0IHNvY2th
ZGRyX2luICp0b19saW5rX2FkZHIsCisJCQlzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqKnRvX2xp
bmtfYWRkciwKIAkJCXN0cnVjdCBsaW5rX3NvY2tldF9pbmZvICp0b19saW5rX3NvY2tldF9pbmZv
LAogCQkJaW50ZXJ2YWxfdCAqd2FrZXVwKTsKIAogdm9pZCB0bHNfbXVsdGlfZnJlZSAoc3RydWN0
IHRsc19tdWx0aSAqbXVsdGksIGJvb2wgY2xlYXIpOwogCiBib29sIHRsc19wcmVfZGVjcnlwdCAo
c3RydWN0IHRsc19tdWx0aSAqbXVsdGksCi0JCSAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqZnJv
bSwKKwkJICAgICAgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmZyb20sCiAJCSAgICAg
IHN0cnVjdCBidWZmZXIgKmJ1ZiwKIAkJICAgICAgc3RydWN0IGNyeXB0b19vcHRpb25zICpvcHQp
OwogCiBib29sIHRsc19wcmVfZGVjcnlwdF9saXRlIChjb25zdCBzdHJ1Y3QgdGxzX2F1dGhfc3Rh
bmRhbG9uZSAqdGFzLAotCQkJICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpmcm9tLAorCQkJ
ICAgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmZyb20sCiAJCQkgICBjb25zdCBzdHJ1
Y3QgYnVmZmVyICpidWYpOwogCiB2b2lkIHRsc19wcmVfZW5jcnlwdCAoc3RydWN0IHRsc19tdWx0
aSAqbXVsdGksCmRpZmYgLXUgb3BlbnZwbi0yL3N5c2hlYWQuaDoxLjQgb3BlbnZwbi0yL3N5c2hl
YWQuaDoxLjQuNC4yCi0tLSBzeXNoZWFkLmg6MS40CVR1ZSBBcHIgMTkgMTU6MTY6NTEgMjAwNQor
Kysgc3lzaGVhZC5oCU1vbiBNYXkgIDIgMTM6NDE6MTYgMjAwNQpAQCAtNTcsNiArNTcsMTQgQEAK
ICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjZW5kaWYKIAorI2lmZGVmIFVTRV9QRl9VTklYCisj
aW5jbHVkZSA8c3lzL3VuLmg+CisjZW5kaWYKKworI2lmZGVmIFVTRV9QRl9JTkVUNgorI2luY2x1
ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfSU9DVExfSAogI2lu
Y2x1ZGUgPHN5cy9pb2N0bC5oPgogI2VuZGlmCkBAIC0yOTAsNiArMjk4LDE1IEBACiAjZW5kaWYK
IAogLyoKKyAqIERvZXMgdGhpcyBwbGF0Zm9ybSBzdXBwb3J0IGxpbnV4LXN0eWxlIElQX1BLVElO
Rk8/CisgKi8KKyNpZiBkZWZpbmVkKEVOQUJMRV9NVUxUSUhPTUUpICYmIGRlZmluZWQoSEFWRV9J
Tl9QS1RJTkZPKSAmJiBkZWZpbmVkKElQX1BLVElORk8pICYmIGRlZmluZWQoSEFWRV9NU0dIRFIp
ICYmIGRlZmluZWQoSEFWRV9DTVNHSERSKSAmJiBkZWZpbmVkKEhBVkVfSU9WRUMpICYmIGRlZmlu
ZWQoQ01TR19GSVJTVEhEUikgJiYgZGVmaW5lZChDTVNHX05YVEhEUikgJiYgZGVmaW5lZChIQVZF
X1JFQ1ZNU0cpICYmIGRlZmluZWQoSEFWRV9TRU5ETVNHKQorI2RlZmluZSBFTkFCTEVfSVBfUEtU
SU5GTyAxCisjZWxzZQorI2RlZmluZSBFTkFCTEVfSVBfUEtUSU5GTyAwCisjZW5kaWYKKworLyoK
ICAqIERpc2FibGUgRVNFQwogICovCiAjaWYgMAo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>123247</attachid>
            <date>2007-06-27 20:56 0000</date>
            <desc>openvpn-2.0.6.ebuild</desc>
            <filename>openvpn-2.0.6.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L25ldC1taXNjL29wZW52cG4vb3BlbnZwbi0yLjAu
Ni5lYnVpbGQsdiAxLjE1IDIwMDcvMDUvMjcgMTM6NDQ6MjYgdWJlcmxvcmQgRXhwICQKCmluaGVy
aXQgZXV0aWxzIG11bHRpbGliCgpERVNDUklQVElPTj0iT3BlblZQTiBpcyBhIHJvYnVzdCBhbmQg
aGlnaGx5IGZsZXhpYmxlIHR1bm5lbGluZyBhcHBsaWNhdGlvbiBjb21wYXRpYmxlIHdpdGggbWFu
eSBPU2VzLiIKU1JDX1VSST0iaHR0cDovL29wZW52cG4ubmV0L3JlbGVhc2Uvb3BlbnZwbi0ke1BW
fS50YXIuZ3oiCkhPTUVQQUdFPSJodHRwOi8vb3BlbnZwbi5uZXQvIgoKTElDRU5TRT0iR1BMLTIi
ClNMT1Q9IjAiCktFWVdPUkRTPSJhbHBoYSBhbWQ2NCBocHBhIHBwYyBwcGMtbWFjb3MgcHBjNjQg
c2ggc3BhcmMgeDg2IgpJVVNFPSJleGFtcGxlcyBpcHJvdXRlMiBtaW5pbWFsIHBhbSBwYXNzd29y
ZHNhdmUgc2VsaW51eCBzc2wgc3RhdGljIHRocmVhZHMgaXB2NiIKClJERVBFTkQ9Ij49ZGV2LWxp
YnMvbHpvLTEuMDcKCWtlcm5lbF9saW51eD8gKAoJCWlwcm91dGUyPyAoIHN5cy1hcHBzL2lwcm91
dGUyICkgIWlwcm91dGUyPyAoIHN5cy1hcHBzL25ldC10b29scyApCgkpCgkhbWluaW1hbD8gKCBw
YW0/ICggdmlydHVhbC9wYW0gKSApCglzZWxpbnV4PyAoIHNlYy1wb2xpY3kvc2VsaW51eC1vcGVu
dnBuICkKCXNzbD8gKCA+PWRldi1saWJzL29wZW5zc2wtMC45LjYgKSIKREVQRU5EPSIke1JERVBF
TkR9Cgl2aXJ0dWFsL29zLWhlYWRlcnMiCgpwa2dfc2V0dXAoKSB7CglpZiB1c2UgaXByb3V0ZTIg
OyB0aGVuCgkJaWYgYnVpbHRfd2l0aF91c2Ugc3lzLWFwcHMvaXByb3V0ZTIgbWluaW1hbCA7IHRo
ZW4KCQkJZWVycm9yICJpcHJvdXRlMiBzdXBwb3J0IHJlcXVpcmVzIHRoYXQgc3lzLWFwcHMvaXBy
b3V0ZTIgd2FzIG5vdCIKCQkJZWVycm9yICJidWlsdCB3aXRoIHRoZSBtaW5pbWFsIFVTRSBmbGFn
IgoJCQlkaWUgImlwcm91dGUyIHN1cHBvcnQgbm90IGF2YWlsYWJsZSIKCQlmaQoJZmkKfQoKc3Jj
X3VucGFjaygpIHsKCXVucGFjayAiJHtBfSIKCWNkICIke1N9IgoJZXBhdGNoICIke0ZJTEVTRElS
fS8ke1BOfSItMi4wLjQtZGFyd2luLnBhdGNoCgl1c2UgaXB2NiAmJiBlcGF0Y2ggIiR7RklMRVNE
SVJ9LyR7UE59Ii0yLjAtdWRwNi5wYXRjaAp9CgpzcmNfY29tcGlsZSgpIHsKCWxvY2FsIG15Y29u
Zj0iIgoJIyBXZSBjYW5ub3QgdXNlIHVzZV9lbmFibGUgd2l0aCBpcHJvdXRlMiBhcyB0aGUgTWFr
ZWZpbGUgc3R1cGlkbHkKCSMgZW5hYmxlcyBpdCB3aXRoIC0tZGlzYWJsZS1pcHJvdXRlMgoJdXNl
IGlwcm91dGUyICYmIG15Y29uZj0iJHtteWNvbmZ9IC0tZW5hYmxlLWlwcm91dGUyIgoJdXNlIG1p
bmltYWwgJiYgbXljb25mPSIke215Y29uZn0gLS1kaXNhYmxlLXBsdWdpbnMiCgoJZWNvbmYgJHtt
eWNvbmZ9IFwKCQkkKHVzZV9lbmFibGUgcGFzc3dvcmRzYXZlIHBhc3N3b3JkLXNhdmUpIFwKCQkk
KHVzZV9lbmFibGUgc3NsKSBcCgkJJCh1c2VfZW5hYmxlIHNzbCBjcnlwdG8pIFwKCQkkKHVzZV9l
bmFibGUgdGhyZWFkcyBwdGhyZWFkKSBcCgkJfHwgZGllICJjb25maWd1cmUgZmFpbGVkIgoKCXVz
ZSBzdGF0aWMgJiYgc2VkIC1pIC1lICcvXkxJQlMvcy9MSUJTID0gL0xJQlMgPSAtc3RhdGljIC8n
IE1ha2VmaWxlCgoJZW1ha2UgfHwgZGllICJtYWtlIGZhaWxlZCIKCglpZiAhIHVzZSBtaW5pbWFs
IDsgdGhlbgoJCWNkIHBsdWdpbgoJCWZvciBpIGluICQoIGxzIDI+L2Rldi9udWxsICk7IGRvCgkJ
CVtbICR7aX0gPT0gIlJFQURNRSIgfHwgJHtpfSA9PSAiZXhhbXBsZXMiIF1dICYmIGNvbnRpbnVl
CgkJCVtbICR7aX0gPT0gImF1dGgtcGFtIiBdXSAmJiAhIHVzZSBwYW0gJiYgY29udGludWUKCQkJ
ZWluZm8gIkJ1aWxkaW5nICR7aX0gcGx1Z2luIgoJCQljZCAiJHtpfSIKCQkJZW1ha2UgfHwgZGll
ICJtYWtlIGZhaWxlZCIKCQkJY2QgLi4KCQlkb25lCgkJY2QgLi4KCWZpCn0KCnNyY19pbnN0YWxs
KCkgewoJbWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsIHx8IGRpZSAibWFrZSBpbnN0YWxsIGZh
aWxlZCIKCgkjIGluc3RhbGwgZG9jdW1lbnRhdGlvbgoJZG9kb2MgQVVUSE9SUyBDaGFuZ2VMb2cg
UE9SVFMgUkVBRE1FCgoJIyBFbXB0eSBkaXIKCWRvZGlyIC9ldGMvb3BlbnZwbgoJa2VlcGRpciAv
ZXRjL29wZW52cG4KCgkjIEluc3RhbGwgdGhlIGluaXQgc2NyaXB0CgluZXdpbml0ZCAiJHtGSUxF
U0RJUn0vb3BlbnZwbi5pbml0IiBvcGVudnBuCgoJIyBpbnN0YWxsIGV4YW1wbGVzLCBjb250cm9s
bGVkIGJ5IHRoZSByZXNwZWN0aXZlIHVzZWZsYWcKCWlmIHVzZSBleGFtcGxlcyA7IHRoZW4KCQkj
IGRvZG9jIGRvZXMgbm90IHN1cHBvcnRseSBzdXBwb3J0IGRpcmVjdG9yeSB0cmF2ZXJzYWwsICMx
NTE5MwoJCWluc2ludG8gL3Vzci9zaGFyZS9kb2MvJHtQRn0vZXhhbXBsZXMKCQlkb2lucyAtciBz
YW1wbGUte2NvbmZpZy1maWxlcyxrZXlzLHNjcmlwdHN9IGNvbnRyaWIKCQlwcmVwYWxsZG9jcwoJ
ZmkKCgkjIEluc3RhbGwgcGx1Z2lucyBhbmQgZWFzeS1yc2EKCWlmICEgdXNlIG1pbmltYWwgOyB0
aGVuCgkJY2QgZWFzeS1yc2EvMi4wCgkJZXhlaW50byAiL3Vzci9zaGFyZS8ke1BOfS9lYXN5LXJz
YSIKCQlkb2V4ZSAqLSogcGtpdG9vbAoJCWluc2ludG8gIi91c3Ivc2hhcmUvJHtQTn0vZWFzeS1y
c2EiCgkJZG9pbnMgUkVBRE1FIG9wZW5zc2wuY25mIHZhcnMKCQljZCAuLi8uLgoKCQlleGVpbnRv
ICIvdXNyLyQoZ2V0X2xpYmRpcikvJHtQTn0iCgkJZG9leGUgcGx1Z2luLyovKi5zbwoJZmkKfQoK
cGtnX3Bvc3RpbnN0KCkgewoJZXdhcm4gIldBUk5JTkc6IFRoZSBvcGVudnBuIGluaXQgc2NyaXB0
IGhhcyBjaGFuZ2VkIgoJZXdhcm4gIiIKCWVpbmZvICJUaGUgb3BlbnZwbiBpbml0IHNjcmlwdCBl
eHBlY3RzIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSIKCWVpbmZvICJvcGVudnBuLmNv
bmYgaW4gL2V0Yy9vcGVudnBuIGFsb25nIHdpdGggYW55IGV4dHJhIGZpbGVzIGl0IG1heSBuZWVk
LiIKCWVpbmZvICIiCgllaW5mbyAiVG8gY3JlYXRlIG1vcmUgVlBOcywgc2ltcGx5IGNyZWF0ZSBh
IG5ldyAuY29uZiBmaWxlIGZvciBpdCBhbmQiCgllaW5mbyAidGhlbiBjcmVhdGUgYSBzeW1saW5r
IHRvIHRoZSBvcGVudnBuIGluaXQgc2NyaXB0IGZyb20gYSBsaW5rIGNhbGxlZCIKCWVpbmZvICJv
cGVudnBuLm5ld2NvbmZuYW1lIC0gbGlrZSBzbyIKCWVpbmZvICIgICBjZCAvZXRjL29wZW52cG4i
CgllaW5mbyAiICAgJHtFRElUT1IjIyovfSBmb28uY29uZiIKCWVpbmZvICIgICBjZCAvZXRjL2lu
aXQuZCIKCWVpbmZvICIgICBsbiAtcyBvcGVudnBuIG9wZW52cG4uZm9vIgoJZWluZm8gIiIKCWVp
bmZvICJZb3UgY2FuIHRoZW4gdHJlYXQgb3BlbnZwbi5mb28gYXMgYW55IG90aGVyIHNlcnZpY2Us
IHNvIHlvdSBjYW4iCgllaW5mbyAic3RvcCBvbmUgdnBuIGFuZCBzdGFydCBhbm90aGVyIGlmIHlv
dSBuZWVkIHRvLiIKCWlmICEgdXNlIG1pbmltYWwgOyB0aGVuCgkJZWluZm8gIiIKCQllaW5mbyAi
cGx1Z2lucyBoYXZlIGJlZW4gaW5zdGFsbGVkIGludG8gL3Vzci8kKGdldF9saWJkaXIpLyR7UE59
IgoJZmkKCWVpbmZvICIiCgllaW5mbyAiSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY3JlYXRl
IHlvdXIgdHVuL3RhcCBpbnRlcmZhY2VzIHVzaW5nIgoJZWluZm8gInRoZSBuZXQudHVuMC9uZXQu
dGFwMCBzY3JpcHRzIHByb3ZpZGVkIGJ5IGJhc2VsYXlvdXQgaW5zdGVhZCBvZiIKCWVpbmZvICJ1
c2luZyB0aGUgJ3NlcnZlcicgZGlyZWN0aXZlIGluIG9wZW52cG4gY29uZmlndXJhdGlvbiBmaWxl
cy4iCgllaW5mbyAiVGhpcyB3aWxsIGluc3VyZSB0aGF0IHRoZSBpbnRlcmZhY2UgcmVhbGx5IGlz
IHVwIGFmdGVyIG9wZW52cG4iCgllaW5mbyAic3RhcnRzLiIKCWVpbmZvICJOb3RlIHRoYXQgeW91
IGNhbm5vdCB1c2UgbmV0LnR1bjAvbmV0LnRhcDAgYW5kIHRoZSBzZXJ2ZXIgb3B0aW9uLCIKCWVp
bmZvICJvdGhlcndpc2Ugb3BlbnZwbiB3aWxsIG5vdCBzdGFydC4iCgllYmVlcAp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>123248</attachid>
            <date>2007-06-27 20:57 0000</date>
            <desc>openvpn-2.1_rc4.ebuild</desc>
            <filename>openvpn-2.1_rc4.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L25ldC1taXNjL29wZW52cG4vb3BlbnZwbi0yLjFf
cmM0LmVidWlsZCx2IDEuMSAyMDA3LzA0LzI2IDEzOjQ4OjQ4IHViZXJsb3JkIEV4cCAkCgppbmhl
cml0IGV1dGlscyBtdWx0aWxpYgoKREVTQ1JJUFRJT049Ik9wZW5WUE4gaXMgYSByb2J1c3QgYW5k
IGhpZ2hseSBmbGV4aWJsZSB0dW5uZWxpbmcgYXBwbGljYXRpb24gY29tcGF0aWJsZSB3aXRoIG1h
bnkgT1Nlcy4iClNSQ19VUkk9Imh0dHA6Ly9vcGVudnBuLm5ldC9yZWxlYXNlL29wZW52cG4tJHtQ
Vn0udGFyLmd6IgpIT01FUEFHRT0iaHR0cDovL29wZW52cG4ubmV0LyIKCkxJQ0VOU0U9IkdQTC0y
IgpTTE9UPSIwIgpLRVlXT1JEUz0ifmFscGhhIH5hbWQ2NCB+aHBwYSB+cHBjIH5wcGMtbWFjb3Mg
fnBwYzY0IH5zaCB+c3BhcmMgfnNwYXJjLWZic2Qgfng4NiB+eDg2LWZic2QiCklVU0U9ImV4YW1w
bGVzIGlwcm91dGUyIG1pbmltYWwgcGFtIHBhc3N3b3Jkc2F2ZSBzZWxpbnV4IHNzbCBzdGF0aWMg
dGhyZWFkcyB1c2VybGFuZF9CU0QgaXB2NiIKCkRFUEVORD0iPj1kZXYtbGlicy9sem8tMS4wNwoJ
a2VybmVsX2xpbnV4PyAoCgkJaXByb3V0ZTI/ICggc3lzLWFwcHMvaXByb3V0ZTIgKSAhaXByb3V0
ZTI/ICggc3lzLWFwcHMvbmV0LXRvb2xzICkKCSkKCSFtaW5pbWFsPyAoIHBhbT8gKCB2aXJ0dWFs
L3BhbSApICkKCXNlbGludXg/ICggc2VjLXBvbGljeS9zZWxpbnV4LW9wZW52cG4gKQoJc3NsPyAo
ID49ZGV2LWxpYnMvb3BlbnNzbC0wLjkuNiApIgoKcGtnX3NldHVwKCkgewoJaWYgdXNlIGlwcm91
dGUyIDsgdGhlbgoJCWlmIGJ1aWx0X3dpdGhfdXNlIHN5cy1hcHBzL2lwcm91dGUyIG1pbmltYWwg
OyB0aGVuCgkJCWVlcnJvciAiaXByb3V0ZTIgc3VwcG9ydCByZXF1aXJlcyB0aGF0IHN5cy1hcHBz
L2lwcm91dGUyIHdhcyBub3QiCgkJCWVlcnJvciAiYnVpbHQgd2l0aCB0aGUgbWluaW1hbCBVU0Ug
ZmxhZyIKCQkJZGllICJpcHJvdXRlMiBzdXBwb3J0IG5vdCBhdmFpbGFibGUiCgkJZmkKCWZpCn0K
CnNyY191bnBhY2soKSB7Cgl1bnBhY2sgJHtBfQoJY2QgIiR7U30iCgoJZXBhdGNoICIke0ZJTEVT
RElSfS8ke1BOfSItMi4wLjQtZGFyd2luLnBhdGNoCgl1c2UgaXB2NiAmJiBlcGF0Y2ggIiR7RklM
RVNESVJ9LyR7UE59Ii0yLjEtdWRwNi5wYXRjaAkKfQoKc3JjX2NvbXBpbGUoKSB7Cglsb2NhbCBt
eWNvbmY9IiIKCSMgV2UgY2Fubm90IHVzZSB1c2VfZW5hYmxlIHdpdGggaXByb3V0ZTIgYXMgdGhl
IE1ha2VmaWxlIHN0dXBpZGx5CgkjIGVuYWJsZXMgaXQgd2l0aCAtLWRpc2FibGUtaXByb3V0ZTIK
CXVzZSBpcHJvdXRlMiAmJiBteWNvbmY9IiR7bXljb25mfSAtLWVuYWJsZS1pcHJvdXRlMiIKCWlm
IHVzZSBtaW5pbWFsIDsgdGhlbgoJCW15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wbHVnaW5z
IgoJCW15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wa2NzMTEiCglmaQoKCWVjb25mICR7bXlj
b25mfSBcCgkJJCh1c2VfZW5hYmxlIHBhc3N3b3Jkc2F2ZSBwYXNzd29yZC1zYXZlKSBcCgkJJCh1
c2VfZW5hYmxlIHNzbCkgXAoJCSQodXNlX2VuYWJsZSBzc2wgY3J5cHRvKSBcCgkJJCh1c2VfZW5h
YmxlIHRocmVhZHMgcHRocmVhZCkgXAoJCXx8IGRpZSAiY29uZmlndXJlIGZhaWxlZCIKCgl1c2Ug
c3RhdGljICYmIHNlZCAtaSAtZSAnL15MSUJTL3MvTElCUyA9IC9MSUJTID0gLXN0YXRpYyAvJyBN
YWtlZmlsZQoKCWVtYWtlIHx8IGRpZSAibWFrZSBmYWlsZWQiCgoJaWYgISB1c2UgbWluaW1hbCA7
IHRoZW4KCQljZCBwbHVnaW4KCQlmb3IgaSBpbiAkKCBscyAyPi9kZXYvbnVsbCApOyBkbwoJCQlb
WyAke2l9ID09ICJSRUFETUUiIHx8ICR7aX0gPT0gImV4YW1wbGVzIiBdXSAmJiBjb250aW51ZQoJ
CQlbWyAke2l9ID09ICJhdXRoLXBhbSIgXV0gJiYgISB1c2UgcGFtICYmIGNvbnRpbnVlCgkJCWVp
bmZvICJCdWlsZGluZyAke2l9IHBsdWdpbiIKCQkJY2QgIiR7aX0iCgkJCWVtYWtlIHx8IGRpZSAi
bWFrZSBmYWlsZWQiCgkJCWNkIC4uCgkJZG9uZQoJCWNkIC4uCglmaQp9CgpzcmNfaW5zdGFsbCgp
IHsKCW1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbCB8fCBkaWUgIm1ha2UgaW5zdGFsbCBmYWls
ZWQiCgoJIyBpbnN0YWxsIGRvY3VtZW50YXRpb24KCWRvZG9jIEFVVEhPUlMgQ2hhbmdlTG9nIFBP
UlRTIFJFQURNRQoKCSMgRW1wdHkgZGlyCglkb2RpciAvZXRjL29wZW52cG4KCWtlZXBkaXIgL2V0
Yy9vcGVudnBuCgoJIyBJbnN0YWxsIHNvbWUgaGVscGVyIHNjcmlwdHMKCWV4ZWludG8gL2V0Yy9v
cGVudnBuCglkb2V4ZSAiJHtGSUxFU0RJUn0vdXAuc2giCglkb2V4ZSAiJHtGSUxFU0RJUn0vZG93
bi5zaCIKCgkjIEluc3RhbGwgdGhlIGluaXQgc2NyaXB0CgluZXdpbml0ZCAiJHtGSUxFU0RJUn0v
b3BlbnZwbi0yLjEuaW5pdCIgb3BlbnZwbgoKCSMgaW5zdGFsbCBleGFtcGxlcywgY29udHJvbGxl
ZCBieSB0aGUgcmVzcGVjdGl2ZSB1c2VmbGFnCglpZiB1c2UgZXhhbXBsZXMgOyB0aGVuCgkJIyBk
b2RvYyBkb2VzIG5vdCBzdXBwb3J0bHkgc3VwcG9ydCBkaXJlY3RvcnkgdHJhdmVyc2FsLCAjMTUx
OTMKCQlpbnNpbnRvIC91c3Ivc2hhcmUvZG9jLyR7UEZ9L2V4YW1wbGVzCgkJZG9pbnMgLXIgc2Ft
cGxlLXtjb25maWctZmlsZXMsa2V5cyxzY3JpcHRzfSBjb250cmliCgkJcHJlcGFsbGRvY3MKCWZp
CgoJIyBJbnN0YWxsIHBsdWdpbnMgYW5kIGVhc3ktcnNhCglpZiAhIHVzZSBtaW5pbWFsIDsgdGhl
bgoJCWNkIGVhc3ktcnNhLzIuMAoJCW1ha2UgaW5zdGFsbCAiREVTVERJUj0ke0R9L3Vzci9zaGFy
ZS8ke1BOfS9lYXN5LXJzYSIKCQljZCAuLi8uLgoKCQlleGVpbnRvICIvdXNyLyQoZ2V0X2xpYmRp
cikvJHtQTn0iCgkJZG9leGUgcGx1Z2luLyovKi5zbwoJZmkKfQoKcGtnX3Bvc3RpbnN0KCkgewoJ
IyBBZGQgb3BlbnZwbiB1c2VyIHNvIG9wZW52cG4gc2VydmVycyBjYW4gZHJvcCBwcml2cwoJIyBD
bGllbnRzIHNob3VsZCBydW4gYXMgcm9vdCBzbyB0aGV5IGNhbiBjaGFuZ2UgaXAgYWRkcmVzc2Vz
LAoJIyBkbnMgaW5mb3JtYXRpb24gYW5kIG90aGVyIHN1Y2ggdGhpbmdzLgoJZW5ld2dyb3VwIG9w
ZW52cG4KCWVuZXd1c2VyIG9wZW52cG4gIiIgIiIgIiIgb3BlbnZwbgoKCWlmIFtbIC1uICQobHMg
L2V0Yy9vcGVudnBuLyovbG9jYWwuY29uZiAyPi9kZXYvbnVsbCkgXV0gOyB0aGVuCgkJZXdhcm4g
IldBUk5JTkc6IFRoZSBvcGVudnBuIGluaXQgc2NyaXB0IGhhcyBjaGFuZ2VkIgoJCWV3YXJuICIi
CglmaQoKCWVpbmZvICJUaGUgb3BlbnZwbiBpbml0IHNjcmlwdCBleHBlY3RzIHRvIGZpbmQgdGhl
IGNvbmZpZ3VyYXRpb24gZmlsZSIKCWVpbmZvICJvcGVudnBuLmNvbmYgaW4gL2V0Yy9vcGVudnBu
IGFsb25nIHdpdGggYW55IGV4dHJhIGZpbGVzIGl0IG1heSBuZWVkLiIKCWVpbmZvICIiCgllaW5m
byAiVG8gY3JlYXRlIG1vcmUgVlBOcywgc2ltcGx5IGNyZWF0ZSBhIG5ldyAuY29uZiBmaWxlIGZv
ciBpdCBhbmQiCgllaW5mbyAidGhlbiBjcmVhdGUgYSBzeW1saW5rIHRvIHRoZSBvcGVudnBuIGlu
aXQgc2NyaXB0IGZyb20gYSBsaW5rIGNhbGxlZCIKCWVpbmZvICJvcGVudnBuLm5ld2NvbmZuYW1l
IC0gbGlrZSBzbyIKCWVpbmZvICIgICBjZCAvZXRjL29wZW52cG4iCgllaW5mbyAiICAgJHtFRElU
T1IjIyovfSBmb28uY29uZiIKCWVpbmZvICIgICBjZCAvZXRjL2luaXQuZCIKCWVpbmZvICIgICBs
biAtcyBvcGVudnBuIG9wZW52cG4uZm9vIgoJZWluZm8gIiIKCWVpbmZvICJZb3UgY2FuIHRoZW4g
dHJlYXQgb3BlbnZwbi5mb28gYXMgYW55IG90aGVyIHNlcnZpY2UsIHNvIHlvdSBjYW4iCgllaW5m
byAic3RvcCBvbmUgdnBuIGFuZCBzdGFydCBhbm90aGVyIGlmIHlvdSBuZWVkIHRvLiIKCglpZiBn
cmVwIC1FcSAiXlsgXHRdKih1cHxkb3duKVsgXHRdLioiICR7Uk9PVH0vZXRjL29wZW52cG4vKi5j
b25mIDI+L2Rldi9udWxsIDsgdGhlbgoJCWV3YXJuICIiCgkJZXdhcm4gIldBUk5JTkc6IElmIHlv
dSB1c2UgdGhlIHJlbW90ZSBrZXl3b3JkIHRoZW4geW91IGFyZSBkZWVtZWQgdG8gYmUiCgkJZXdh
cm4gImEgY2xpZW50IGJ5IG91ciBpbml0IHNjcmlwdCBhbmQgYXMgc3VjaCB3ZSBmb3JjZSB1cCxk
b3duIHNjcmlwdHMuIgoJCWV3YXJuICJUaGVzZSBzY3JpcHRzIGNhbGwgL2V0Yy9vcGVudnBuL1wk
U1ZDTkFNRS17dXAsZG93bn0uc2ggd2hlcmUgeW91IgoJCWV3YXJuICJjYW4gbW92ZSB5b3VyIHNj
cmlwdHMgdG8uIgoJZmkKCglpZiAhIHVzZSBtaW5pbWFsIDsgdGhlbgoJCWVpbmZvICIiCgkJZWlu
Zm8gInBsdWdpbnMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbnRvIC91c3IvJChnZXRfbGliZGlyKS8k
e1BOfSIKCWZpCgoJaWYgdXNlIHVzZXJsYW5kX0JTRCA7IHRoZW4KCQlld2FybiAiIgoJCWV3YXJu
ICJJZiB5b3UgcnVuIGFueSBraW5kIG9mIGZpcmV3YWxsIG9uIEJTRCBhbmQgdXNlIElQdjYgYWNy
b3NzcyIKCQlld2FybiAiT3BlblZQTiB0aGVuIHlvdSdsbCBwcm9iYWJseSBoYXZlIHRvIGxvd2Vy
IHRoZSBNVFUgdG8gMTQyMCIKCQlld2FybiAidXNpbmcgdGhlIHR1bi1tdHUgc3RhdGVtZW50IChl
dmVuIGZvciB0YXAgZGV2aWNlcykiCglmaQp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123249</attachid>
            <date>2007-06-27 20:57 0000</date>
            <desc>openvpn-2.1-udp6.patch</desc>
            <filename>openvpn-2.1-udp6.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9saWJ0ZXN0LnNoIGIvampvLXRlc3RzL2xpYnRlc3Quc2gK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWIwZDRiNQotLS0gL2Rldi9udWxs
CisrKyBiL2pqby10ZXN0cy9saWJ0ZXN0LnNoCkBAIC0wLDAgKzEsMTE1IEBACisjIS9iaW4vYmFz
aAorCit0eXBlc2V0IC1pIHRlc3RfbnVtPTAgIyBpbmNyZW1lbnRzIHcvZWFjaCB0ZXN0X2RlZmlu
ZQordHlwZXNldCB0ZXN0X21zZwkjIHByZWZpeDogInRlc3QgbnIjIiAgZm9yIG1zZ3MKK3R5cGVz
ZXQgdGVzdF9uYW1lCSMgdGVzdCBuYW1lIGdpdmVuCQordHlwZXNldCB0ZXN0X3NhbmVuYW1lCSMg
dGVzdCBuYW1lIHdpdGggYWxsIHdoaXRlc3BhY2UgKGFuZCBhbGlrZSkgcmVwbGFjZWQgYnkgJ18n
CisKK1RFU1RfQ0xFQU5VUD0iOiIKKworc2F5ICgpIHsKKwllY2hvICIkQCIgPiYzCit9CitlcnIg
KCkgeworCWVjaG8gIiRAIiA+JjQKK30KK2RlYnVnICgpIHsKKwllY2hvICIkQCIgPiY0Cit9Cit0
ZXN0X2RlZmluZSgpIHsKKwl0ZXN0X25hbWU9IiQqIgorCXRlc3Rfc2FuZW5hbWU9IiQoZWNobyAt
biAkdGVzdF9uYW1lfCB0ciAtYyAnW0EtWmEtejAtOS5fXScgXyApIgorCXRlc3RfbnVtPXRlc3Rf
bnVtKzEKKwl0ZXN0X21zZz0idGVzdCAkdGVzdF9udW0iCisJdGVzdF9iZ19jbGVhbnVwIAorfQor
dGVzdF9leHBlY3Rfc3VjY2VzcyAoKSB7CisJbG9jYWwgbXNnPSIkMSIgCisJdGVzdCAkIyAtZ2Ug
MiB8fCB7IGVyciAidXNhZ2UgZXJyb3I6IHRlc3RfZXhwZWN0X2ZhaWx1cmUgbXNnIGNtZCBhcmdz
IC4uLiI7IHJldHVybiAxOyB9CisJc2F5IC1uICIkdGVzdF9tc2c6IC0tICRtc2cgKGV4cGVjdGlu
ZyBzdWNjZXNzKSAiCisJc2hpZnQKKwkoZXZhbCAiJEAiIDQ+JjEpICYmIHsgc2F5IC1lICJcbiR0
ZXN0X21zZzogT0sgJSUlICR0ZXN0X3NhbmVuYW1lIiA7ICByZXR1cm4gMCA7IH0KKwlzYXkgLWUg
IlxuJHRlc3RfbXNnOiBGQUlMRUQgJSUlICR0ZXN0X3NhbmVuYW1lIiAKKwlyZXR1cm4gMQorfQor
Cit0ZXN0X2V4cGVjdF9mYWlsdXJlICgpIHsKKwlsb2NhbCBtc2c9IiQxIiAKKwl0ZXN0ICQjIC1n
ZSAyIHx8IHsgZXJyICJ1c2FnZSBlcnJvcjogdGVzdF9leHBlY3RfZmFpbHVyZSBtc2cgY21kIGFy
Z3MgLi4uIjsgIHJldHVybiAxO30KKwlzYXkgLW4gIiR0ZXN0X21zZzogLS0gJG1zZyAoZXhwZWN0
aW5nIGZhaWx1cmUpICIKKwlzaGlmdAorCShldmFsICIkQCIpICYmIHsgc2F5IC1lICJcbiR0ZXN0
X21zZzogRkFJTEVEICUlJSAkdGVzdF9zYW5lbmFtZSIgPiYzIDsgIHJldHVybiAwIDsgfQorCXNh
eSAtZSAiXG4kdGVzdF9tc2c6IE9LICUlJSAkdGVzdF9zYW5lbmFtZSIKKwlyZXR1cm4gMQorfQor
Cit0ZXN0X2JnX2VncmVwKCkgeworCWxvY2FsIG5zZWNzPSIkMSIKKwlsb2NhbCB0eHQ9IiQyIgor
CWxvY2FsIHJldAorCXNoaWZ0IDIKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkdGVzdF9uYW1lIiBc
CisJCSJzZXQgLW0gOyAkQCAmPiAkdC9vdXQtJHRlc3Rfc2FuZW5hbWUgJgorCQlzPTE7CisJCWZv
ciBpIGluIFwkKHNlcSAxICRuc2Vjcyk7ZG8gCisJCQlzYXkgLW4gJy4nCisJCQlraWxsIC0wICUx
IHx8IHsgZWdyZXAgZmFpbGVkICR0L291dC0kdGVzdF9zYW5lbmFtZSA+JjQ7IGJyZWFrOyB9CisJ
CQlvPVwkKGVncmVwIFwiJHR4dFwiICR0L291dC0kdGVzdF9zYW5lbmFtZSApICYmIHsgZGVidWcg
XCRvOyBzPTA7IGJyZWFrOyB9CisJCQlzbGVlcCAxOworCQlkb25lOworCQlraWxsICUxCisJCXdh
aXQKKwkJZXhpdCBcJHMKKwkJIiAyPi9kZXYvbnVsbCA0PiR0L2VycgorCXJldD0kPworCXRlc3Qg
JHJldCAtZXEgMCAmJiByZXR1cm4gMAorCXNheSAiJHRlc3RfbXNnOiBzZWU6ICR0L291dC0kdGVz
dF9zYW5lbmFtZSoiIAorCXJldHVybiAkcmV0Cit9CisjIHJ1biBjb21tYW5kIGluICpjdXJyZW50
KiBzaGVsbCBpZ25vcmluZyBzdGRlcnIsIGV2YWxzIGFyZ3MgcGFzc2VkCitxdWlldDIoKSB7CisJ
I2JhY2t1cCBmZD0yCisJZXhlYyAyNTA+JjIKKwlleGVjIDI+L2Rldi9udWxsCisJZXZhbCAiJEAi
CisJI2Nsb3NlIGF1eGZkCisJZXhlYyAyPiYyNTAKKwlleGVjIDI1MD4mLQorfQordGVzdF9iZ19w
cmV2KCl7IGxvY2FsIG91dD0kdC9vdXQtJHRlc3Rfc2FuZW5hbWUtcHJldjsgJEAgPiYgJG91dCAm
IH0KK3Rlc3RfYmdfY2xlYW51cCgpIHsgcXVpZXQyICIkVEVTVF9DTEVBTlVQOyR7QDotOn07a2ls
bCAlIDI+L2Rldi9udWxsO3dhaXQiIDt9Cit0ZXN0X3NldF9jbGVhbnVwICgpIHsgVEVTVF9DTEVB
TlVQPSIkeyo6LTp9IiA7fQorCit0PS90bXAKK2V4ZWMgMz4mMQorZXhlYyA0PiYyCisKKyM9PT09
PT09PT0KKworbG4gLXNmICRQV0Qvb3BlbnZwbiAkdC9vcGVudnBuLXRlc3QKK2V4cG9ydCBPUEVO
VlBOPSR0L29wZW52cG4tdGVzdAorCit0ZXN0X3NldF9jbGVhbnVwICJraWxsYWxsICRPUEVOVlBO
IgorCit0cmFwICd0ZXN0X2JnX2NsZWFudXA7ZXhpdCcgMCAyIDE1CisKK3Rlc3RfZGVmaW5lICJV
RFA2IGxvb3BiYWNrIgordGVzdF9iZ19lZ3JlcCAzMCAiSW5pdGlhbGl6YXRpb24gU2VxdWVuY2Ug
Q29tcGxldGVkIiAuLi9qam8tdGVzdHMvcnVuLXVkcDYtMC1sb29wYmFjay1zZWxmLnNoCisKK3Rl
c3RfZGVmaW5lICJVRFA2IGxvb3BiYWNrIGJ5bmFtZSIKK3Rlc3RfYmdfZWdyZXAgMzAgIkluaXRp
YWxpemF0aW9uIFNlcXVlbmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi11ZHA2LTAtbG9v
cGJhY2stYnluYW1lLnNoCisKK3Rlc3RfZGVmaW5lICJUQ1A2IGxvb3BiYWNrIgordGVzdF9iZ19w
cmV2IC4uL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLXNlcnZlci5zaAordGVzdF9iZ19l
Z3JlcCAzMCAiSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UgQ29tcGxldGVkIiAuLi9qam8tdGVzdHMv
cnVuLXRjcDYtMC1sb29wYmFjay1jbGllbnQuc2gKKwordGVzdF9kZWZpbmUgIlRDUDYgbG9vcGJh
Y2sgYnluYW1lIgordGVzdF9iZ19wcmV2IC4uL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LXNlcnZlci1ieW5hbWUuc2gKK3Rlc3RfYmdfZWdyZXAgMzAgIkluaXRpYWxpemF0aW9uIFNlcXVl
bmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi10Y3A2LTAtbG9vcGJhY2stY2xpZW50LWJ5
bmFtZS5zaAorCit0ZXN0X2RlZmluZSAiVURQNCBsb29wYmFjayIKK3Rlc3RfYmdfZWdyZXAgMzAg
IkluaXRpYWxpemF0aW9uIFNlcXVlbmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi11ZHA0
LTAtbG9vcGJhY2stc2VsZi5zaAorCit0ZXN0X2RlZmluZSAiVENQNCBsb29wYmFjayIKK3Rlc3Rf
YmdfcHJldiAuLi9qam8tdGVzdHMvcnVuLXRjcDQtMC1sb29wYmFjay1zZXJ2ZXIuc2ggCit0ZXN0
X2JnX2VncmVwIDMwICJJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSBDb21wbGV0ZWQiIC4uL2pqby10
ZXN0cy9ydW4tdGNwNC0wLWxvb3BiYWNrLWNsaWVudC5zaApkaWZmIC0tZ2l0IGEvampvLXRlc3Rz
L3FlbXUtaWZ1cC0yLmpqby5zaCBiL2pqby10ZXN0cy9xZW11LWlmdXAtMi5qam8uc2gKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjA0MThhZAotLS0gL2Rldi9udWxsCisrKyBi
L2pqby10ZXN0cy9xZW11LWlmdXAtMi5qam8uc2gKQEAgLTAsMCArMSwxMiBAQAorIyEvYmluL3No
IC14Cisjc3VkbyBzaCAtYyAiL3NiaW4vaWZjb25maWcgJDEgaHcgZXRoZXIgMDA6MDA6MDA6MDA6
MDA6MDE7IC9zYmluL2lmY29uZmlnICQxIDE5Mi4xNjguMjU0LjEiCitleHBvcnQgUEFUSD0vc2Jp
bjovdXNyL3NiaW46JFBBVEgKK05VTT0yCitERVY9cWVtdXR1biROVU0KK3N1ZG8gc2ggLXggPDxF
T0YKK2lwIGxpIHNldCAkMSBuYW1lICRERVYKK2lwIGxpIHNldCAkREVWIGFkZHJlc3MgMDA6MDA6
MDA6MDA6MDA6MDEKK2lwIGxpIHNldCAkREVWIHVwCitpcCBhZCBhZGQgMTkyLjE2OC4yNTQuMSBk
ZXYgJERFVgoraXAgcm8gYWRkIDE5Mi4xNjguMjU0LiROVU0gZGV2ICRERVYKK0VPRgpkaWZmIC0t
Z2l0IGEvampvLXRlc3RzL3FlbXUtaWZ1cC0zLmpqby5zaCBiL2pqby10ZXN0cy9xZW11LWlmdXAt
My5qam8uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTZjMmYzMwotLS0g
L2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9xZW11LWlmdXAtMy5qam8uc2gKQEAgLTAsMCArMSwx
MiBAQAorIyEvYmluL3NoIC14Cisjc3VkbyBzaCAtYyAiL3NiaW4vaWZjb25maWcgJDEgaHcgZXRo
ZXIgMDA6MDA6MDA6MDA6MDA6MDE7IC9zYmluL2lmY29uZmlnICQxIDE5Mi4xNjguMjU0LjEiCitl
eHBvcnQgUEFUSD0vc2JpbjovdXNyL3NiaW46JFBBVEgKK05VTT0zCitERVY9cWVtdXR1biROVU0K
K3N1ZG8gc2ggLXggPDxFT0YKK2lwIGxpIHNldCAkMSBuYW1lICRERVYKK2lwIGxpIHNldCAkREVW
IGFkZHJlc3MgMDA6MDA6MDA6MDA6MDA6MDEKK2lwIGxpIHNldCAkREVWIHVwCitpcCBhZCBhZGQg
MTkyLjE2OC4yNTQuMSBkZXYgJERFVgoraXAgcm8gYWRkIDE5Mi4xNjguMjU0LiROVU0gZGV2ICRE
RVYKK0VPRgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1hZnVuaXgtMC1sb29wLnNoIGIvampv
LXRlc3RzL3J1bi1hZnVuaXgtMC1sb29wLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAuLmVkNTA2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLWFmdW5peC0w
LWxvb3Auc2gKQEAgLTAsMCArMSw0IEBACisjIS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29w
ZW52cG59CitybSAtZnYgL3RtcC9vLnMKKyR7T1BFTlZQTn0gLS1wcm90byB1bml4LWRncmFtIC0t
bG9jYWwgL3RtcC9vLnMgLS1yZW1vdGUgL3RtcC9vLnMgLS1kZXYgdHVuIC0taWZjb25maWcgMS4x
LjEuMSAxLjEuMS4yIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5ICQqCmRpZmYgLS1naXQgYS9qam8t
dGVzdHMvcnVuLWFmdW5peC0xLW8xLnNoIGIvampvLXRlc3RzL3J1bi1hZnVuaXgtMS1vMS5zaApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjFkZjBmCi0tLSAvZGV2L251bGwK
KysrIGIvampvLXRlc3RzL3J1bi1hZnVuaXgtMS1vMS5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jp
bi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7T1BFTlZQTn0gLS1wcm90byB1bml4
LWRncmFtIC0tbG9jYWwgL3RtcC9vMS5zIC0tcmVtb3RlIC90bXAvbzIucyAtLWRldiB0dW4gLS1p
ZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjIgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgJCoKZGlmZiAt
LWdpdCBhL2pqby10ZXN0cy9ydW4tYWZ1bml4LTEtbzIuc2ggYi9qam8tdGVzdHMvcnVuLWFmdW5p
eC0xLW8yLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZlOTQyMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLWFmdW5peC0xLW8yLnNoCkBAIC0wLDAgKzEs
MyBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAt
LXByb3RvIHVuaXgtZGdyYW0gLS1sb2NhbCAvdG1wL28yLnMgLS1yZW1vdGUgL3RtcC9vMS5zIC0t
ZGV2IHR1biAtLWlmY29uZmlnIDEuMS4xLjIgMS4xLjEuMSAtLXNlY3JldCAuLi9vcGVudnBuLmtl
eSAkKgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1veGctMS5zaCBiL2pqby10ZXN0cy9ydW4t
b3hnLTEuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjFmZDAyZgotLS0g
L2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tb3hnLTEuc2gKQEAgLTAsMCArMSwzIEBACisj
IS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiB0
dW4gLS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tbHBvcnQgNTAyMCAtLXJwb3J0IDEx
OTQgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjIgIiRA
IgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1veGctMi5zaCBiL2pqby10ZXN0cy9ydW4tb3hn
LTIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWVhNjM0NQotLS0gL2Rl
di9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tb3hnLTIuc2gKQEAgLTAsMCArMSwzIEBACisjIS9i
aW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiB0dW4g
LS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tbHBvcnQgNTAyMCAtLXJwb3J0IDExOTQg
LS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4yIDEuMS4xLjEgIiRAIgpk
aWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stY2xpZW50LnNoIGIvampv
LXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stY2xpZW50LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAuLjk1NmQ0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVu
LXRjcDQtMC1sb29wYmFjay1jbGllbnQuc2gKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggLXgK
KzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59IC0tZGV2IG51bGwgLS1wcm90byB0
Y3AtY2xpZW50IC0tcmVtb3RlIGxvY2FsaG9zdCAtLXJwb3J0IDUwMTEgLS1zZWNyZXQgLi4vb3Bl
bnZwbi5rZXkgIiRAIgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2st
c2VydmVyLnNoIGIvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stc2VydmVyLnNoCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBjYWIzODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9qam8tdGVzdHMvcnVuLXRjcDQtMC1sb29wYmFjay1zZXJ2ZXIuc2gKQEAgLTAsMCArMSwzIEBA
CisjIS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRl
diBudWxsIC0tcHJvdG8gdGNwLXNlcnZlciAtLXJlbW90ZSBsb2NhbGhvc3QgLS1scG9ydCA1MDEx
IC0tc2VjcmV0IC4uL29wZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4t
dGNwNi0wLWxvb3BiYWNrLWNsaWVudC1ieW5hbWUuc2ggYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1s
b29wYmFjay1jbGllbnQtYnluYW1lLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLmY4YjJjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29w
YmFjay1jbGllbnQtYnluYW1lLnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC14Cis6ICR7
T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAgLS1kZXYgbnVsbCAtLXByb3RvIHRjcDYt
Y2xpZW50IC0tcmVtb3RlIGlwNi1sb2NhbGhvc3QgLS1ycG9ydCA1MDExIC0tc2VjcmV0IC4uL29w
ZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LWNsaWVudC5zaCBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLWNsaWVudC5zaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOTg1MWM1Ci0tLSAvZGV2L251bGwKKysr
IGIvampvLXRlc3RzL3J1bi10Y3A2LTAtbG9vcGJhY2stY2xpZW50LnNoCkBAIC0wLDAgKzEsMyBA
QAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAgLS1k
ZXYgbnVsbCAtLXByb3RvIHRjcDYtY2xpZW50IC0tcmVtb3RlIDo6MSAtLXJwb3J0IDUwMTEgLS1z
ZWNyZXQgLi4vb3BlbnZwbi5rZXkgIiRAIgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A2
LTAtbG9vcGJhY2stc2VydmVyLWJ5bmFtZS5zaCBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3Bi
YWNrLXNlcnZlci1ieW5hbWUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
OGZlYWQzYwotLS0gL2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LXNlcnZlci1ieW5hbWUuc2gKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggLXgKKzogJHtPUEVO
VlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiBudWxsIC0tcHJvdG8gdGNwNi1zZXJ2
ZXIgLS1sb2NhbCBpcDYtbG9jYWxob3N0IC0tbHBvcnQgNTAxMSAtLXNlY3JldCAuLi9vcGVudnBu
LmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29wYmFjay1zZXJ2
ZXIuc2ggYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29wYmFjay1zZXJ2ZXIuc2gKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWQzNjU1NQotLS0gL2Rldi9udWxsCisrKyBiL2pq
by10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLXNlcnZlci5zaApAQCAtMCwwICsxLDMgQEAKKyMh
L2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7T1BFTlZQTn0gIC0tZGV2IG51
bGwgLS1wcm90byB0Y3A2LXNlcnZlciAtLWxvY2FsIDo6IC0tbHBvcnQgNTAxMSAtLXNlY3JldCAu
Li9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDQtMC1sb29w
YmFjay1zZWxmLnNoIGIvampvLXRlc3RzL3J1bi11ZHA0LTAtbG9vcGJhY2stc2VsZi5zaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43YTI5YTNkCi0tLSAvZGV2L251bGwKKysr
IGIvampvLXRlc3RzL3J1bi11ZHA0LTAtbG9vcGJhY2stc2VsZi5zaApAQCAtMCwwICsxLDMgQEAK
KyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59
IC0tZGV2IG51bGwgLS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tcG9ydCA1MDExIC0t
c2VjcmV0IC4uL29wZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRw
NC0xLXFlbXUtZ3Vlc3Quc2ggYi9qam8tdGVzdHMvcnVuLXVkcDQtMS1xZW11LWd1ZXN0LnNoCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkY2I2NDEKLS0tIC9kZXYvbnVsbAor
KysgYi9qam8tdGVzdHMvcnVuLXVkcDQtMS1xZW11LWd1ZXN0LnNoCkBAIC0wLDAgKzEsMyBAQAor
IyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0g
LS1kZXYgdHVuIC0tcHJvdG8gdWRwIC0tcmVtb3RlIDEwLjAuMi4yIC0tcG9ydCA1MDExIC0tc2Vj
cmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWcgMS4xLjEuMjUzIDEuMS4xLjEKZGlmZiAtLWdp
dCBhL2pqby10ZXN0cy9ydW4tdWRwNC0xLXFlbXUtaG9zdC5zaCBiL2pqby10ZXN0cy9ydW4tdWRw
NC0xLXFlbXUtaG9zdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZGI0
NWYyCi0tLSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA0LTEtcWVtdS1ob3N0LnNo
CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQor
JHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8gdWRwIC0tZmxvYXQgLS1wb3J0IDUw
MTEgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjI1Mwpk
aWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi11ZHA0LTItTUguc2ggYi9qam8tdGVzdHMvcnVuLXVk
cDQtMi1NSC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MzU4ZmJjCi0t
LSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA0LTItTUguc2gKQEAgLTAsMCArMSw0
IEBACisjIS9iaW4vc2ggLXgKKyNwYXNzIC0tbG9jYWwgQUREUiAtLXJlbW90ZSBBRERSCis6ICR7
T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8g
dWRwIC0tcG9ydCA1MDExIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWctbm9leGVj
ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRwNi0wLWxvb3BiYWNrLWJ5bmFtZS5z
aCBiL2pqby10ZXN0cy9ydW4tdWRwNi0wLWxvb3BiYWNrLWJ5bmFtZS5zaApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi45OTNlZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvampvLXRl
c3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stYnluYW1lLnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmlu
L3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYg
bnVsbCAtLXByb3RvIHVkcDYgLS1yZW1vdGUgaXA2LWxvY2FsaG9zdCAtLXBvcnQgNTAxMSAtLXNl
Y3JldCAuLi9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDYt
MC1sb29wYmFjay1zZWxmLnNoIGIvampvLXRlc3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stc2VsZi5z
aApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NjliYzM5Ci0tLSAvZGV2L251
bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stc2VsZi5zaApAQCAtMCwwICsx
LDMgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7R0RCfSAke09Q
RU5WUE59IC0tZGV2IG51bGwgLS1wcm90byB1ZHA2IC0tcmVtb3RlIDo6MSAtLXBvcnQgNTAxMSAt
LXNlY3JldCAuLi9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVk
cDYtMS1jYXJwZWRpZW0uc2ggYi9qam8tdGVzdHMvcnVuLXVkcDYtMS1jYXJwZWRpZW0uc2gKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmNjZTM1ZQotLS0gL2Rldi9udWxsCisr
KyBiL2pqby10ZXN0cy9ydW4tdWRwNi0xLWNhcnBlZGllbS5zaApAQCAtMCwwICsxLDQgQEAKKyMh
L2Jpbi9zaCAteAorUkVNNj0iZmU4MDo6MmUwOjdkZmY6ZmVlMzplZjE3IgorOiAke09QRU5WUE46
PS4vb3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59IC0tZGV2IHR1biAtLXByb3RvIHVkcDYgLS1y
ZW1vdGUgIiRSRU02IiAtLXBvcnQgNTAxMCAtLXNlY3JldCAuLi9vcGVudnBuLmtleSAtLWlmY29u
ZmlnIDEuMS4xLjI1MyAxLjEuMS4xCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDYtMS1j
eC5zaCBiL2pqby10ZXN0cy9ydW4tdWRwNi0xLWN4LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAuLmFiNjllYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXVk
cDYtMS1jeC5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4v
b3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59IC0tdmVyYiA1IC0tZGV2IHR1biAtLXByb3RvIHVk
cDYgLS1wb3J0IDUwMTAgLS1zZWNyZXQgL2hvbWUvampvL3NyYy9qdWFuam8vb3BlbnZwbi9vcGVu
dnBuLmtleSAtLWZsb2F0IC0taWZjb25maWcgMS4xLjEuMSAxLjEuMS4yNTMKZGlmZiAtLWdpdCBh
L2pqby10ZXN0cy9ydW4tdWRwNi0yLXFlbXUtZ3Vlc3Quc2ggYi9qam8tdGVzdHMvcnVuLXVkcDYt
Mi1xZW11LWd1ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBlMjgw
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXVkcDYtMi1xZW11LWd1ZXN0LnNo
CkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQor
Y2FzZSAiJDEiIGluCistLWZyZWVic2QpIHNoaWZ0O3NldCAtLSAgIGVkMCAiJEAiOzsKKy0tb3Bl
bmJzZCkgc2hpZnQ7c2V0IC0tICAgbmUzIC0tZGV2IHR1bjAgIiRAIjs7Citlc2FjCitERVY9JHsx
Oj9taXNzaW5nIGRldm5hbWV9O3NoaWZ0Ciske0dEQn0gJHtPUEVOVlBOfSAtLWRldiB0dW4gLS1w
cm90byB1ZHA2IC0tcmVtb3RlIGZlODA6OjIwMDpmZjpmZTAwOjElJERFViAtLXBvcnQgNTAxMCAt
LXNlY3JldCAuLi9vcGVudnBuLmtleSAiJEAiIC0taWZjb25maWcgMS4xLjEuMjUzIDEuMS4xLjEK
ZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRwNi0yLXFlbXUtaG9zdC5zaCBiL2pqby10ZXN0
cy9ydW4tdWRwNi0yLXFlbXUtaG9zdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwLi41MDBmMGQzCi0tLSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA2LTItcWVt
dS1ob3N0LnNoCkBAIC0wLDAgKzEsNCBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9v
cGVudnBufQorREVWPSR7MTo/bWlzc2luZyBkZXZuYW1lfTtzaGlmdAorJHtHREJ9ICR7T1BFTlZQ
Tn0gLS1kZXYgdHVuIC0tcHJvdG8gdWRwNiAtLXJlbW90ZSBmZTgwOjo1MDU0OmZmOmZlMTI6MzQ1
NiUkREVWIC0tcG9ydCA1MDEwIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWcgIDEu
MS4xLjEgMS4xLjEuMjUzICIkQCIKZGlmZiAtLWdpdCBhL29wZW52cG4vYnVmZmVyLmMgYi9vcGVu
dnBuL2J1ZmZlci5jCmluZGV4IDY0MzA3ZWYuLjA2NTA3NDUgMTAwNjQ0Ci0tLSBhL29wZW52cG4v
YnVmZmVyLmMKKysrIGIvb3BlbnZwbi9idWZmZXIuYwpAQCAtMTk4LDYgKzE5OCwxOSBAQCBidWZf
cHJpbnRmIChzdHJ1Y3QgYnVmZmVyICpidWYsIGNvbnN0IGNoCiAgICAgfQogfQogCit2b2lkIGJ1
Zl9wdXRzKHN0cnVjdCBidWZmZXIgKmJ1ZiwgY29uc3QgY2hhciAqc3RyKQoreworICB1aW50OF90
ICpwdHIgPSBCRU5EIChidWYpOworICBpbnQgY2FwID0gYnVmX2ZvcndhcmRfY2FwYWNpdHkgKGJ1
Zik7CisgIGlmIChjYXAgPiAwKQorICAgIHsKKyAgICAgIHN0cm5jcHludCAoKGNoYXIgKilwdHIs
c3RyLCBjYXApOworICAgICAgKihidWYtPmRhdGEgKyBidWYtPmNhcGFjaXR5IC0gMSkgPSAwOyAv
KiB3aW5kb3dzIHZzbnByaW50ZiBuZWVkcyB0aGlzICovCisgICAgICBidWYtPmxlbiArPSAoaW50
KSBzdHJsZW4gKChjaGFyICopcHRyKTsKKyAgICB9Cit9CisgCisKIC8qCiAgKiBUaGlzIGlzIG5l
Y2Vzc2FyeSBkdWUgdG8gY2VydGFpbiBidWdneSBpbXBsZW1lbnRhdGlvbnMgb2Ygc25wcmludGYs
CiAgKiB0aGF0IGRvbid0IGd1YXJhbnRlZSBudWxsIHRlcm1pbmF0aW9uIGZvciBzaXplID4gMC4K
ZGlmZiAtLWdpdCBhL29wZW52cG4vY29uZmlndXJlLmFjIGIvb3BlbnZwbi9jb25maWd1cmUuYWMK
aW5kZXggODg0M2EyYy4uOGNlYTIwNCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9jb25maWd1cmUuYWMK
KysrIGIvb3BlbnZwbi9jb25maWd1cmUuYWMKQEAgLTEwMSw2ICsxMDEsMTIgQEAgQUNfQVJHX0VO
QUJMRShtdWx0aWhvbWUsCiAgICBbTVVMVElIT01FPSJ5ZXMiXQogKQogCitBQ19BUkdfRU5BQkxF
KGlwdjYsCisgICBbICAtLWRpc2FibGUtaXB2NiAgICAgICAgICBEaXNhYmxlIFVEUC9JUHY2IHN1
cHBvcnRdLAorICAgW1BGX0lORVQ2PSIkZW5hYmxldmFsIl0sCisgICBbUEZfSU5FVDY9InllcyJd
CispCisKIEFDX0FSR19FTkFCTEUocG9ydC1zaGFyZSwKICAgIFsgIC0tZGlzYWJsZS1wb3J0LXNo
YXJlICAgIERpc2FibGUgVENQIHNlcnZlciBwb3J0LXNoYXJlIHN1cHBvcnQgKC0tcG9ydC1zaGFy
ZSldLAogICAgW1BPUlRfU0hBUkU9IiRlbmFibGV2YWwiXSwKQEAgLTQwNiw2ICs0MTIsMTYgQEAg
TERGTEFHUz0iJExERkxBR1MgLVdsLC0tZmF0YWwtd2FybmluZ3MiCiBBQ19DSEVDS19GVU5DUyhl
cG9sbF9jcmVhdGUsIEFDX0RFRklORShbSEFWRV9FUE9MTF9DUkVBVEVdLCAxLCBbXSkpCiBMREZM
QUdTPSIkT0xETERGTEFHUyIKIAorZG5sIGlwdjYgc3VwcG9ydAoraWYgdGVzdCAiJFBGX0lORVQ2
IiA9ICJ5ZXMiOyB0aGVuCisgIEFDX0NIRUNLSU5HKFtmb3Igc3RydWN0IHNvY2thZGRyX2luNiBm
b3IgSVB2NiBzdXBwb3J0XSkKKyAgQUNfQ0hFQ0tfVFlQRSgKKyAgICAgIFtzdHJ1Y3Qgc29ja2Fk
ZHJfaW42XSwKKyAgICAgIFtBQ19ERUZJTkUoVVNFX1BGX0lORVQ2LCAxLCBbc3RydWN0IHNvY2th
ZGRyX2luNiBpcyBuZWVkZWQgZm9yIElQdjYgcGVlciBzdXBwb3J0XSldLAorICAgICAgW10sCisg
ICAgICBbI2luY2x1ZGUgInN5c2hlYWQuaCJdKQorZmkKKwogZG5sCiBkbmwgY2hlY2sgZm9yIHZh
bGdyaW5kIHRvb2wKIGRubApkaWZmIC0tZ2l0IGEvb3BlbnZwbi9oZWxwZXIuYyBiL29wZW52cG4v
aGVscGVyLmMKaW5kZXggZDJiM2Q2Zi4uNDU5ZjAwZCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9oZWxw
ZXIuYworKysgYi9vcGVudnBuL2hlbHBlci5jCkBAIC0zNTgsNiArMzU4LDEwIEBAICNlbmRpZiAv
KiBQMk1QX1NFUlZFUiAqLwogCiAgICAgICBpZiAoby0+cHJvdG8gPT0gUFJPVE9fVENQdjQpCiAJ
by0+cHJvdG8gPSBQUk9UT19UQ1B2NF9DTElFTlQ7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAg
ICBlbHNlIGlmIChvLT5wcm90byA9PSBQUk9UT19UQ1B2NikKKwlvLT5wcm90byA9IFBST1RPX1RD
UHY2X0NMSUVOVDsKKyNlbmRpZgogICAgIH0KIAogI2VuZGlmIC8qIFAyTVAgKi8KZGlmZiAtLWdp
dCBhL29wZW52cG4vaW5pdC5jIGIvb3BlbnZwbi9pbml0LmMKaW5kZXggMjQ0ZjAzYy4uMGQ5Mjll
NCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9pbml0LmMKKysrIGIvb3BlbnZwbi9pbml0LmMKQEAgLTcw
Myw3ICs3MDMsNyBAQCAjaWZkZWYgRU5BQkxFX01BTkFHRU1FTlQKICAgICAgIGNvbnN0IGNoYXIg
KmRldGFpbCA9ICJTVUNDRVNTIjsKICAgICAgIGlmIChjLT5jMS50dW50YXApCiAJdHVuX2xvY2Fs
ID0gYy0+YzEudHVudGFwLT5sb2NhbDsKLSAgICAgIHR1bl9yZW1vdGUgPSBodG9ubCAoYy0+YzEu
bGlua19zb2NrZXRfYWRkci5hY3R1YWwuZGVzdC5zYS5zaW5fYWRkci5zX2FkZHIpOworICAgICAg
dHVuX3JlbW90ZSA9IGh0b25sIChjLT5jMS5saW5rX3NvY2tldF9hZGRyLmFjdHVhbC5kZXN0LmFk
ZHIuaW40LnNpbl9hZGRyLnNfYWRkcik7CiAgICAgICBpZiAoZmxhZ3MgJiBJU0NfRVJST1JTKQog
CWRldGFpbCA9ICJFUlJPUiI7CiAgICAgICBtYW5hZ2VtZW50X3NldF9zdGF0ZSAobWFuYWdlbWVu
dCwKQEAgLTExMDUsNyArMTEwNSw3IEBAIGRvX2RlZmVycmVkX29wdGlvbnMgKHN0cnVjdCBjb250
ZXh0ICpjLCAKICNpZmRlZiBFTkFCTEVfT0NDCiAgIGlmIChmb3VuZCAmIE9QVF9QX0VYUExJQ0lU
X05PVElGWSkKICAgICB7Ci0gICAgICBpZiAoYy0+b3B0aW9ucy5wcm90byAhPSBQUk9UT19VRFB2
NCAmJiBjLT5vcHRpb25zLmV4cGxpY2l0X2V4aXRfbm90aWZpY2F0aW9uKQorICAgICAgaWYgKCFw
cm90b19pc191ZHAoYy0+b3B0aW9ucy5wcm90bykgJiYgYy0+b3B0aW9ucy5leHBsaWNpdF9leGl0
X25vdGlmaWNhdGlvbikKIAl7CiAJICBtc2cgKERfUFVTSCwgIk9QVElPTlMgSU1QT1JUOiAtLWV4
cGxpY2l0LWV4aXQtbm90aWZ5IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLXByb3RvIHVkcCIpOwog
CSAgYy0+b3B0aW9ucy5leHBsaWNpdF9leGl0X25vdGlmaWNhdGlvbiA9IDA7CkBAIC0xMjAwLDEy
ICsxMjAwLDIxIEBAICNlbmRpZgogICBzd2l0Y2ggKGMtPm9wdGlvbnMucHJvdG8pCiAgICAgewog
ICAgIGNhc2UgUFJPVE9fVURQdjQ6CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBQUk9U
T19VRFB2NjoKKyNlbmRpZgogICAgICAgaWYgKHByb3h5KQogCXNlYyA9IGMtPm9wdGlvbnMuY29u
bmVjdF9yZXRyeV9zZWNvbmRzOwogICAgICAgYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2Cisg
ICAgY2FzZSBQUk9UT19UQ1B2Nl9TRVJWRVI6CisjZW5kaWYKICAgICBjYXNlIFBST1RPX1RDUHY0
X1NFUlZFUjoKICAgICAgIHNlYyA9IDE7CiAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5F
VDYKKyAgICBjYXNlIFBST1RPX1RDUHY2X0NMSUVOVDoKKyNlbmRpZgogICAgIGNhc2UgUFJPVE9f
VENQdjRfQ0xJRU5UOgogICAgICAgc2VjID0gYy0+b3B0aW9ucy5jb25uZWN0X3JldHJ5X3NlY29u
ZHM7CiAgICAgICBicmVhazsKQEAgLTIyOTIsNyArMjMwMSw3IEBAIGRvX3NldHVwX2Zhc3RfaW8g
KHN0cnVjdCBjb250ZXh0ICpjKQogI2lmZGVmIFdJTjMyCiAgICAgICBtc2cgKE1fSU5GTywgIk5P
VEU6IC0tZmFzdC1pbyBpcyBkaXNhYmxlZCBzaW5jZSB3ZSBhcmUgcnVubmluZyBvbiBXaW5kb3dz
Iik7CiAjZWxzZQotICAgICAgaWYgKGMtPm9wdGlvbnMucHJvdG8gIT0gUFJPVE9fVURQdjQpCisg
ICAgICBpZiAoIXByb3RvX2lzX3VkcChjLT5vcHRpb25zLnByb3RvKSkKIAltc2cgKE1fSU5GTywg
Ik5PVEU6IC0tZmFzdC1pbyBpcyBkaXNhYmxlZCBzaW5jZSB3ZSBhcmUgbm90IHVzaW5nIFVEUCIp
OwogICAgICAgZWxzZQogCXsKQEAgLTI1NDksNyArMjU1OCwxMSBAQCBpbml0X2luc3RhbmNlIChz
dHJ1Y3QgY29udGV4dCAqYywgY29uc3QgCiAgIC8qIGxpbmtfc29ja2V0X21vZGUgYWxsb3dzIENN
X0NISUxEX1RDUAogICAgICBpbnN0YW5jZXMgdG8gaW5oZXJpdCBhY2NlcHRhYmxlIGZkcwogICAg
ICBmcm9tIGEgdG9wLWxldmVsIHBhcmVudCAqLworI2lmZGVmIFVTRV9QRl9JTkVUNgorICBpZiAo
Yy0+b3B0aW9ucy5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIgfHwgYy0+b3B0aW9ucy5wcm90
byA9PSBQUk9UT19UQ1B2Nl9TRVJWRVIpCisjZWxzZQogICBpZiAoYy0+b3B0aW9ucy5wcm90byA9
PSBQUk9UT19UQ1B2NF9TRVJWRVIpCisjZW5kaWYKICAgICB7CiAgICAgICBpZiAoYy0+bW9kZSA9
PSBDTV9UT1ApCiAJbGlua19zb2NrZXRfbW9kZSA9IExTX01PREVfVENQX0xJU1RFTjsKQEAgLTI4
MDksMTcgKzI4MjIsNyBAQCBpbmhlcml0X2NvbnRleHRfY2hpbGQgKHN0cnVjdCBjb250ZXh0ICpk
CiB7CiAgIENMRUFSICgqZGVzdCk7CiAKLSAgc3dpdGNoIChzcmMtPm9wdGlvbnMucHJvdG8pCi0g
ICAgewotICAgIGNhc2UgUFJPVE9fVURQdjQ6Ci0gICAgICBkZXN0LT5tb2RlID0gQ01fQ0hJTERf
VURQOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9UT19UQ1B2NF9TRVJWRVI6Ci0gICAgICBk
ZXN0LT5tb2RlID0gQ01fQ0hJTERfVENQOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgIEFTU0VSVCAoMCk7Ci0gICAgfQorICBkZXN0LT5tb2RlID0gcHJvdG9faXNfZGdyYW0oc3Jj
LT5vcHRpb25zLnByb3RvKT8gQ01fQ0hJTERfVURQIDogQ01fQ0hJTERfVENQOwogCiAgIGRlc3Qt
PmdjID0gZ2NfbmV3ICgpOwogCkBAIC0yOTI0LDcgKzI5MjcsNyBAQCAjZW5kaWYKICAgZGVzdC0+
YzIuYnVmZmVyc19vd25lZCA9IGZhbHNlOwogCiAgIGRlc3QtPmMyLmV2ZW50X3NldCA9IE5VTEw7
Ci0gIGlmIChzcmMtPm9wdGlvbnMucHJvdG8gPT0gUFJPVE9fVURQdjQpCisgIGlmIChwcm90b19p
c19kZ3JhbShzcmMtPm9wdGlvbnMucHJvdG8pKQogICAgIGRvX2V2ZW50X3NldF9pbml0IChkZXN0
LCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL29wZW52cG4vbWFuYWdlLmMgYi9vcGVudnBuL21h
bmFnZS5jCmluZGV4IDk5M2FmYTIuLjI2MTUxMzcgMTAwNjQ0Ci0tLSBhL29wZW52cG4vbWFuYWdl
LmMKKysrIGIvb3BlbnZwbi9tYW5hZ2UuYwpAQCAtMTM1MSw5ICsxMzUxLDkgQEAgbWFuX3NldHRp
bmdzX2luaXQgKHN0cnVjdCBtYW5fc2V0dGluZ3MgKgogICAgICAgLyoKICAgICAgICAqIEluaXRp
YWxpemUgc29ja2V0IGFkZHJlc3MKICAgICAgICAqLwotICAgICAgbXMtPmxvY2FsLnNhLnNpbl9m
YW1pbHkgPSBBRl9JTkVUOwotICAgICAgbXMtPmxvY2FsLnNhLnNpbl9hZGRyLnNfYWRkciA9IDA7
Ci0gICAgICBtcy0+bG9jYWwuc2Euc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CisgICAgICBtcy0+
bG9jYWwuYWRkci5pbjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBtcy0+bG9jYWwuYWRk
ci5pbjQuc2luX2FkZHIuc19hZGRyID0gMDsKKyAgICAgIG1zLT5sb2NhbC5hZGRyLmluNC5zaW5f
cG9ydCA9IGh0b25zIChwb3J0KTsKIAogICAgICAgLyoKICAgICAgICAqIFJ1biBtYW5hZ2VtZW50
IG92ZXIgdHVubmVsLCBvcgpAQCAtMTM2NSw3ICsxMzY1LDcgQEAgbWFuX3NldHRpbmdzX2luaXQg
KHN0cnVjdCBtYW5fc2V0dGluZ3MgKgogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBtcy0+bG9jYWwu
c2Euc2luX2FkZHIuc19hZGRyID0gZ2V0YWRkcgorCSAgbXMtPmxvY2FsLmFkZHIuaW40LnNpbl9h
ZGRyLnNfYWRkciA9IGdldGFkZHIKIAkgICAgKEdFVEFERFJfUkVTT0xWRXxHRVRBRERSX1dBUk5f
T05fU0lHTkFMfEdFVEFERFJfRkFUQUwsIGFkZHIsIDAsIE5VTEwsIE5VTEwpOwogCX0KICAgICAg
IApAQCAtMTYzNCw3ICsxNjM0LDcgQEAgbWFuYWdlbWVudF9wb3N0X3R1bm5lbF9vcGVuIChzdHJ1
Y3QgbWFuYQogICAgICAgJiYgbWFuLT5jb25uZWN0aW9uLnN0YXRlID09IE1TX0lOSVRJQUwpCiAg
ICAgewogICAgICAgLyogbGlzdGVuIG9uIG91ciBsb2NhbCBUVU4vVEFQIElQIGFkZHJlc3MgKi8K
LSAgICAgIG1hbi0+c2V0dGluZ3MubG9jYWwuc2Euc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKHR1
bl9sb2NhbF9pcCk7CisgICAgICBtYW4tPnNldHRpbmdzLmxvY2FsLmFkZHIuaW40LnNpbl9hZGRy
LnNfYWRkciA9IGh0b25sICh0dW5fbG9jYWxfaXApOwogICAgICAgbWFuX2Nvbm5lY3Rpb25faW5p
dCAobWFuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL29wZW52cG4vbXJvdXRlLmMgYi9vcGVudnBu
L21yb3V0ZS5jCmluZGV4IGE3ZDEyMTUuLjhkODU1MTggMTAwNjQ0Ci0tLSBhL29wZW52cG4vbXJv
dXRlLmMKKysrIGIvb3BlbnZwbi9tcm91dGUuYwpAQCAtMTc1LDI1ICsxNzUsNDcgQEAgYm9vbCBt
cm91dGVfZXh0cmFjdF9vcGVudnBuX3NvY2thZGRyIChzdAogCQkJCSAgICAgIGNvbnN0IHN0cnVj
dCBvcGVudnBuX3NvY2thZGRyICpvc2FkZHIsCiAJCQkJICAgICAgYm9vbCB1c2VfcG9ydCkKIHsK
LSAgaWYgKG9zYWRkci0+c2Euc2luX2ZhbWlseSA9PSBBRl9JTkVUKQorICBzd2l0Y2ggKG9zYWRk
ci0+YWRkci5zYS5zYV9mYW1pbHkpIAorICB7CisgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAg
ICAgIGlmICh1c2VfcG9ydCkKIAl7CiAJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY0IHwgTVJf
V0lUSF9QT1JUOwogCSAgYWRkci0+bmV0Yml0cyA9IDA7CiAJICBhZGRyLT5sZW4gPSA2OwotCSAg
bWVtY3B5IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIsIDQpOwotCSAg
bWVtY3B5IChhZGRyLT5hZGRyICsgNCwgJm9zYWRkci0+c2Euc2luX3BvcnQsIDIpOworCSAgbWVt
Y3B5IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIsIDQpOwor
CSAgbWVtY3B5IChhZGRyLT5hZGRyICsgNCwgJm9zYWRkci0+YWRkci5pbjQuc2luX3BvcnQsIDIp
OwogCX0KICAgICAgIGVsc2UKIAl7CiAJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY0OwogCSAg
YWRkci0+bmV0Yml0cyA9IDA7CiAJICBhZGRyLT5sZW4gPSA0OwotCSAgbWVtY3B5IChhZGRyLT5h
ZGRyLCAmb3NhZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIsIDQpOworCSAgbWVtY3B5IChhZGRyLT5h
ZGRyLCAmb3NhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIsIDQpOwogCX0KICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2
OgorICAgICAgaWYgKHVzZV9wb3J0KQorCXsKKwkgIGFkZHItPnR5cGUgPSBNUl9BRERSX0lQVjYg
fCBNUl9XSVRIX1BPUlQ7CisJICBhZGRyLT5uZXRiaXRzID0gMDsKKwkgIGFkZHItPmxlbiA9IDE4
OworCSAgbWVtY3B5IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5hZGRyLmluNi5zaW42X2FkZHIsIDE2
KTsKKwkgIG1lbWNweSAoYWRkci0+YWRkciArIDE2LCAmb3NhZGRyLT5hZGRyLmluNi5zaW42X3Bv
cnQsIDIpOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY2
OworCSAgYWRkci0+bmV0Yml0cyA9IDA7CisJICBhZGRyLT5sZW4gPSAxNjsKKwkgIG1lbWNweSAo
YWRkci0+YWRkciwgJm9zYWRkci0+YWRkci5pbjYuc2luNl9hZGRyLCAxNik7CisJfQorICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKyAgfQogICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTI2OCw3
ICsyOTAsMzcgQEAgbXJvdXRlX2FkZHJfcHJpbnQgKGNvbnN0IHN0cnVjdCBtcm91dGVfYQogCSAg
fQogCSAgYnJlYWs7CiAJY2FzZSBNUl9BRERSX0lQVjY6CisjaWZkZWYgVVNFX1BGX0lORVQ2Cisg
ICAgICAgICAgeworCSAgICBzdHJ1Y3QgYnVmZmVyIGJ1ZjsKKwkgICAgc3RydWN0IHNvY2thZGRy
X2luNiBzaW42OworCSAgICBpbnQgcG9ydDsKKwkgICAgY2hhciBidWY2W0lORVQ2X0FERFJTVFJM
RU5dID0gIiI7CisJICAgIG1lbXNldCgmc2luNiwgMCwgc2l6ZW9mIHNpbjYpOworCSAgICBzaW42
LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisJICAgIGJ1Zl9zZXRfcmVhZCAoJmJ1ZiwgbWFkZHIu
YWRkciwgbWFkZHIubGVuKTsKKyAgICAgICAgICAgIGlmIChidWZfcmVhZCgmYnVmLCAmc2luNi5z
aW42X2FkZHIsIHNpemVvZiAoc2luNi5zaW42X2FkZHIpKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgaWYgKGdldG5hbWVpbmZvKChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luNiwgc2l6ZW9m
IChzdHJ1Y3Qgc29ja2FkZHJfaW42KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmNiwgc2l6ZW9mIChidWY2KSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hPU1QpICE9IDAp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgYnVmX3ByaW50ZiAoJm91dCwg
Ik1SX0FERFJfSVBWNiBnZXRuYW1laW5mbygpIGVyciIpOworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJCX0KKyAgICAgICAgICAgICAgYnVmX3B1dHMgKCZvdXQsIGJ1ZjYpOworCSAgICAgIGlm
IChtYWRkci50eXBlICYgTVJfV0lUSF9ORVRCSVRTKQorCSAgICAgICAgYnVmX3ByaW50ZiAoJm91
dCwgIi8lZCIsIG1hZGRyLm5ldGJpdHMpOworICAgICAgICAgICAgICBpZiAobWFkZHIudHlwZSAm
IE1SX1dJVEhfUE9SVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBwb3J0
ID0gYnVmX3JlYWRfdTE2ICgmYnVmKTsKKyAgICAgICAgICAgICAgICAgIGlmIChwb3J0ID49IDAp
CisgICAgICAgICAgICAgICAgICAgIGJ1Zl9wcmludGYgKCZvdXQsICI6JWQiLCBwb3J0KTsKKyAg
ICAgICAgICAgICAgICB9CisJICAgIH0KKyAgICAgICAgICB9CisjZWxzZSAvKiBvbGQgcHJlIElQ
VjYgMS1saW5lIGNvZGU6ICovCiAJICBidWZfcHJpbnRmICgmb3V0LCAiSVBWNiIpOyAKKyNlbmRp
ZgogCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGJ1Zl9wcmludGYgKCZvdXQsICJVTktOT1dOIik7
IApkaWZmIC0tZ2l0IGEvb3BlbnZwbi9tdGNwLmMgYi9vcGVudnBuL210Y3AuYwppbmRleCA2ZWM5
OTc0Li41MDExNjg4IDEwMDY0NAotLS0gYS9vcGVudnBuL210Y3AuYworKysgYi9vcGVudnBuL210
Y3AuYwpAQCAtMTU5LDYgKzE1OSw3IEBAIG11bHRpX3RjcF9pbnN0YW5jZV9zcGVjaWZpY19pbml0
IChzdHJ1Y3QKICAgQVNTRVJUIChtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldCk7CiAgIEFTU0VS
VCAobWktPmNvbnRleHQuYzIubGlua19zb2NrZXQtPmluZm8ubHNhKTsKICAgQVNTRVJUIChtaS0+
Y29udGV4dC5jMi5saW5rX3NvY2tldC0+bW9kZSA9PSBMU19NT0RFX1RDUF9BQ0NFUFRfRlJPTSk7
CisgIEFTU0VSVCAobWktPmNvbnRleHQuYzIubGlua19zb2NrZXQtPmluZm8ubHNhLT5hY3R1YWwu
ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKTsKICAgaWYgKCFtcm91dGVfZXh0cmFj
dF9vcGVudnBuX3NvY2thZGRyICgmbWktPnJlYWwsICZtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tl
dC0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LCB0cnVlKSkKICAgICB7CiAgICAgICBtc2cgKERfTVVM
VElfRVJST1JTLCAiTVVMVEkgVENQOiBUQ1AgY2xpZW50IGFkZHJlc3MgaXMgdW5kZWZpbmVkIik7
CmRpZmYgLS1naXQgYS9vcGVudnBuL211bHRpLmMgYi9vcGVudnBuL211bHRpLmMKaW5kZXggZWU3
NGE0Ni4uYmZkNzliMyAxMDA2NDQKLS0tIGEvb3BlbnZwbi9tdWx0aS5jCisrKyBiL29wZW52cG4v
bXVsdGkuYwpAQCAtOTkwLDggKzk5MCw4IEBAIG11bHRpX2xlYXJuX2luX2FkZHJfdCAoc3RydWN0
IG11bHRpX2NvbnQKICAgc3RydWN0IG1yb3V0ZV9hZGRyIGFkZHI7CiAKICAgQ0xFQVIgKHJlbW90
ZV9zaSk7Ci0gIHJlbW90ZV9zaS5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgcmVtb3RlX3Np
LnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhKTsKKyAgcmVtb3RlX3NpLmFkZHIuaW40LnNp
bl9mYW1pbHkgPSBBRl9JTkVUOworICByZW1vdGVfc2kuYWRkci5pbjQuc2luX2FkZHIuc19hZGRy
ID0gaHRvbmwgKGEpOwogICBBU1NFUlQgKG1yb3V0ZV9leHRyYWN0X29wZW52cG5fc29ja2FkZHIg
KCZhZGRyLCAmcmVtb3RlX3NpLCBmYWxzZSkpOwogCiAgIGlmIChuZXRiaXRzID49IDApCkBAIC0y
MjI0LDkgKzIyMjQsOSBAQCBtYW5hZ2VtZW50X2NhbGxiYWNrX2tpbGxfYnlfYWRkciAodm9pZCAq
CiAgIGludCBjb3VudCA9IDA7CiAKICAgQ0xFQVIgKHNhZGRyKTsKLSAgc2FkZHIuc2Euc2luX2Zh
bWlseSA9IEFGX0lORVQ7Ci0gIHNhZGRyLnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRy
KTsKLSAgc2FkZHIuc2Euc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CisgIHNhZGRyLmFkZHIuaW40
LnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICBzYWRkci5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIg
PSBodG9ubCAoYWRkcik7CisgIHNhZGRyLmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQp
OwogICBpZiAobXJvdXRlX2V4dHJhY3Rfb3BlbnZwbl9zb2NrYWRkciAoJm1hZGRyLCAmc2FkZHIs
IHRydWUpKQogICAgIHsKICAgICAgIGhhc2hfaXRlcmF0b3JfaW5pdCAobS0+aXRlciwgJmhpLCB0
cnVlKTsKQEAgLTIyODcsMTggKzIyODcsMTMgQEAgdHVubmVsX3NlcnZlciAoc3RydWN0IGNvbnRl
eHQgKnRvcCkKIHsKICAgQVNTRVJUICh0b3AtPm9wdGlvbnMubW9kZSA9PSBNT0RFX1NFUlZFUik7
CiAKLSAgc3dpdGNoICh0b3AtPm9wdGlvbnMucHJvdG8pIHsKLSAgY2FzZSBQUk9UT19VRFB2NDoK
LSAgICB0dW5uZWxfc2VydmVyX3VkcCAodG9wKTsKLSAgICBicmVhazsKLSAgY2FzZSBQUk9UT19U
Q1B2NF9TRVJWRVI6Ci0gICAgdHVubmVsX3NlcnZlcl90Y3AgKHRvcCk7Ci0gICAgYnJlYWs7Ci0g
IGRlZmF1bHQ6Ci0gICAgQVNTRVJUICgwKTsKLSAgfQorICBpZiAocHJvdG9faXNfZGdyYW0odG9w
LT5vcHRpb25zLnByb3RvKSkKKyAgICB0dW5uZWxfc2VydmVyX3VkcCh0b3ApOworICBlbHNlCisg
ICAgdHVubmVsX3NlcnZlcl90Y3AodG9wKTsKIH0KIAorCiAjZWxzZQogc3RhdGljIHZvaWQgZHVt
bXkodm9pZCkge30KICNlbmRpZiAvKiBQMk1QX1NFUlZFUiAqLwpkaWZmIC0tZ2l0IGEvb3BlbnZw
bi9vY2MuYyBiL29wZW52cG4vb2NjLmMKaW5kZXggNmIxMzZkYy4uM2VjNzc4NCAxMDA2NDQKLS0t
IGEvb3BlbnZwbi9vY2MuYworKysgYi9vcGVudnBuL29jYy5jCkBAIC0zNzUsNyArMzc1LDcgQEAg
cHJvY2Vzc19yZWNlaXZlZF9vY2NfbXNnIChzdHJ1Y3QgY29udGV4dAogCSAgICAgICBjLT5jMi5t
YXhfc2VuZF9zaXplX3JlbW90ZSwKIAkgICAgICAgYy0+YzIubWF4X3JlY3Zfc2l6ZV9sb2NhbCk7
CiAJICBpZiAoIWMtPm9wdGlvbnMuZnJhZ21lbnQKLQkgICAgICAmJiBjLT5vcHRpb25zLnByb3Rv
ID09IFBST1RPX1VEUHY0CisJICAgICAgJiYgKHByb3RvX2lzX2RncmFtKGMtPm9wdGlvbnMucHJv
dG8pKQogCSAgICAgICYmIGMtPmMyLm1heF9zZW5kX3NpemVfbG9jYWwgPiBUVU5fTVRVX01JTgog
CSAgICAgICYmIChjLT5jMi5tYXhfcmVjdl9zaXplX3JlbW90ZSA8IGMtPmMyLm1heF9zZW5kX3Np
emVfbG9jYWwKIAkJICB8fCBjLT5jMi5tYXhfcmVjdl9zaXplX2xvY2FsIDwgYy0+YzIubWF4X3Nl
bmRfc2l6ZV9yZW1vdGUpKQpkaWZmIC0tZ2l0IGEvb3BlbnZwbi9vcHRpb25zLmMgYi9vcGVudnBu
L29wdGlvbnMuYwppbmRleCA5NGRhOThlLi4xNDkwMDA5IDEwMDY0NAotLS0gYS9vcGVudnBuL29w
dGlvbnMuYworKysgYi9vcGVudnBuL29wdGlvbnMuYwpAQCAtNzMsNiArNzMsMTIgQEAgI2VuZGlm
CiAjaWZkZWYgVVNFX1BUSFJFQUQKICAgIiBbUFRIUkVBRF0iCiAjZW5kaWYKKyNpZmRlZiBFTkFC
TEVfSVBfUEtUSU5GTworICAiIFtNSF0iCisjZW5kaWYKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAg
IiBbUEZfSU5FVDZdIgorI2VuZGlmCiAgICIgYnVpbHQgb24gIiBfX0RBVEVfXwogOwogCkBAIC05
Myw2ICs5OSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIHVzYWdlX21lc3NhZ2VbXSA9CiAgICItLW1v
ZGUgbSAgICAgICAgOiBNYWpvciBtb2RlLCBtID0gJ3AycCcgKGRlZmF1bHQsIHBvaW50LXRvLXBv
aW50KSBvciAnc2VydmVyJy5cbiIKICAgIi0tcHJvdG8gcCAgICAgICA6IFVzZSBwcm90b2NvbCBw
IGZvciBjb21tdW5pY2F0aW5nIHdpdGggcGVlci5cbiIKICAgIiAgICAgICAgICAgICAgICAgIHAg
PSB1ZHAgKGRlZmF1bHQpLCB0Y3Atc2VydmVyLCBvciB0Y3AtY2xpZW50XG4iCisjaWZkZWYgVVNF
X1BGX0lORVQ2CisgICIgICAgICAgICAgICAgICAgICBwID0gdWRwNiwgdGNwNi1zZXJ2ZXIsIG9y
IHRjcDYtY2xpZW50IChJUHY2KVxuIgorI2VuZGlmCiAgICItLWNvbm5lY3QtcmV0cnkgbiA6IEZv
ciAtLXByb3RvIHRjcC1jbGllbnQsIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXRcbiIKICAgIiAg
ICAgICAgICAgICAgICAgICAgYmV0d2VlbiBjb25uZWN0aW9uIHJldHJpZXMgKGRlZmF1bHQ9JWQp
LlxuIgogICAiLS1jb25uZWN0LXRpbWVvdXQgbiA6IEZvciAtLXByb3RvIHRjcC1jbGllbnQsIGNv
bm5lY3Rpb24gdGltZW91dCAoaW4gc2Vjb25kcykuXG4iCkBAIC0xNDIxLDEwICsxNDMwLDEwIEBA
ICNlbmRpZgogICAgKiBTYW5pdHkgY2hlY2sgb24gVENQIG1vZGUgb3B0aW9ucwogICAgKi8KIAot
ICBpZiAob3B0aW9ucy0+Y29ubmVjdF9yZXRyeV9kZWZpbmVkICYmIG9wdGlvbnMtPnByb3RvICE9
IFBST1RPX1RDUHY0X0NMSUVOVCkKKyAgaWYgKG9wdGlvbnMtPmNvbm5lY3RfcmV0cnlfZGVmaW5l
ZCAmJiBvcHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElFTlQgJiYgb3B0aW9ucy0+cHJv
dG8gIT0gUFJPVE9fVENQdjZfQ0xJRU5UKQogICAgIG1zZyAoTV9VU0FHRSwgIi0tY29ubmVjdC1y
ZXRyeSBkb2Vzbid0IG1ha2Ugc2Vuc2UgdW5sZXNzIGFsc28gdXNlZCB3aXRoIC0tcHJvdG8gdGNw
LWNsaWVudCIpOwogCi0gIGlmIChvcHRpb25zLT5jb25uZWN0X3RpbWVvdXRfZGVmaW5lZCAmJiBv
cHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElFTlQpCisgIGlmIChvcHRpb25zLT5jb25u
ZWN0X3RpbWVvdXRfZGVmaW5lZCAmJiBvcHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElF
TlQgJiYgb3B0aW9ucy0+cHJvdG8gIT0gUFJPVE9fVENQdjZfQ0xJRU5UKQogICAgIG1zZyAoTV9V
U0FHRSwgIi0tY29ubmVjdC10aW1lb3V0IGRvZXNuJ3QgbWFrZSBzZW5zZSB1bmxlc3MgYWxzbyB1
c2VkIHdpdGggLS1wcm90byB0Y3AtY2xpZW50Iik7CiAKICAgLyoKQEAgLTE0MzQsNyArMTQ0Myw3
IEBAICNlbmRpZgogICAgIG1zZyAoTV9VU0FHRSwgIm9ubHkgb25lIG9mIC0tdHVuLW10dSBvciAt
LWxpbmstbXR1IG1heSBiZSBkZWZpbmVkIChub3RlIHRoYXQgLS1pZmNvbmZpZyBpbXBsaWVzIC0t
bGluay1tdHUgJWQpIiwgTElOS19NVFVfREVGQVVMVCk7CiAKICNpZmRlZiBFTkFCTEVfT0NDCi0g
IGlmIChvcHRpb25zLT5wcm90byAhPSBQUk9UT19VRFB2NCAmJiBvcHRpb25zLT5tdHVfdGVzdCkK
KyAgaWYgKCFwcm90b19pc191ZHAob3B0aW9ucy0+cHJvdG8pICYmIG9wdGlvbnMtPm10dV90ZXN0
KQogICAgIG1zZyAoTV9VU0FHRSwgIi0tbXR1LXRlc3Qgb25seSBtYWtlcyBzZW5zZSB3aXRoIC0t
cHJvdG8gdWRwIik7CiAjZW5kaWYKIApAQCAtMTQ3OSw3ICsxNDg4LDggQEAgI2VuZGlmCiAJICBj
b25zdCBjaGFyICpyZW1vdGUgPSBsLT5hcnJheVtpXS5ob3N0bmFtZTsKIAkgIGNvbnN0IGludCBy
ZW1vdGVfcG9ydCA9IGwtPmFycmF5W2ldLnBvcnQ7CiAKLQkgIGlmIChzdHJpbmdfZGVmaW5lZF9l
cXVhbCAob3B0aW9ucy0+bG9jYWwsIHJlbW90ZSkKKwkgIGlmIChwcm90b19pc19uZXQob3B0aW9u
cy0+cHJvdG8pCisJICAgICAgJiYgc3RyaW5nX2RlZmluZWRfZXF1YWwgKG9wdGlvbnMtPmxvY2Fs
LCByZW1vdGUpCiAJICAgICAgJiYgb3B0aW9ucy0+bG9jYWxfcG9ydCA9PSByZW1vdGVfcG9ydCkK
IAkgICAgbXNnIChNX1VTQUdFLCAiLS1yZW1vdGUgYW5kIC0tbG9jYWwgYWRkcmVzc2VzIGFyZSB0
aGUgc2FtZSIpOwogCQpAQCAtMTUwOCw3ICsxNTE4LDcgQEAgI2VuZGlmCiAgIGlmICghb3B0aW9u
cy0+cmVtb3RlX2xpc3QgJiYgIW9wdGlvbnMtPmJpbmRfbG9jYWwpCiAgICAgbXNnIChNX1VTQUdF
LCAiLS1ub2JpbmQgZG9lc24ndCBtYWtlIHNlbnNlIHVubGVzcyB1c2VkIHdpdGggLS1yZW1vdGUi
KTsKIAotICBpZiAob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UICYmICFvcHRp
b25zLT5sb2NhbCAmJiAhb3B0aW9ucy0+bG9jYWxfcG9ydF9kZWZpbmVkICYmICFvcHRpb25zLT5i
aW5kX2RlZmluZWQpCisgIGlmICgob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5U
fHxvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2Nl9DTElFTlQpICYmICFvcHRpb25zLT5sb2Nh
bCAmJiAhb3B0aW9ucy0+bG9jYWxfcG9ydF9kZWZpbmVkICYmICFvcHRpb25zLT5iaW5kX2RlZmlu
ZWQpCiAgICAgb3B0aW9ucy0+YmluZF9sb2NhbCA9IGZhbHNlOwogCiAjaWZkZWYgRU5BQkxFX1NP
Q0tTCkBAIC0xNTY1LDE2ICsxNTc1LDE2IEBAICNlbmRpZgogICAgKi8KIAogI2lmZGVmIEVOQUJM
RV9GUkFHTUVOVAotICBpZiAob3B0aW9ucy0+cHJvdG8gIT0gUFJPVE9fVURQdjQgJiYgb3B0aW9u
cy0+ZnJhZ21lbnQpCisgIGlmICghcHJvdG9faXNfdWRwKG9wdGlvbnMtPnByb3RvKSAmJiBvcHRp
b25zLT5mcmFnbWVudCkKICAgICBtc2cgKE1fVVNBR0UsICItLWZyYWdtZW50IGNhbiBvbmx5IGJl
IHVzZWQgd2l0aCAtLXByb3RvIHVkcCIpOwogI2VuZGlmCiAKICNpZmRlZiBFTkFCTEVfT0NDCi0g
IGlmIChvcHRpb25zLT5wcm90byAhPSBQUk9UT19VRFB2NCAmJiBvcHRpb25zLT5leHBsaWNpdF9l
eGl0X25vdGlmaWNhdGlvbikKKyAgaWYgKCFwcm90b19pc191ZHAob3B0aW9ucy0+cHJvdG8pICYm
IG9wdGlvbnMtPmV4cGxpY2l0X2V4aXRfbm90aWZpY2F0aW9uKQogICAgIG1zZyAoTV9VU0FHRSwg
Ii0tZXhwbGljaXQtZXhpdC1ub3RpZnkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tcHJvdG8gdWRw
Iik7CiAjZW5kaWYKIAotICBpZiAoIW9wdGlvbnMtPnJlbW90ZV9saXN0ICYmIG9wdGlvbnMtPnBy
b3RvID09IFBST1RPX1RDUHY0X0NMSUVOVCkKKyAgaWYgKCFvcHRpb25zLT5yZW1vdGVfbGlzdCAm
JiAob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UfHxvcHRpb25zLT5wcm90byA9
PSBQUk9UT19UQ1B2Nl9DTElFTlQpKQogICAgIG1zZyAoTV9VU0FHRSwgIi0tcmVtb3RlIE1VU1Qg
YmUgdXNlZCBpbiBUQ1AgQ2xpZW50IG1vZGUiKTsKIAogI2lmZGVmIEVOQUJMRV9IVFRQX1BST1hZ
CkBAIC0xNTkyLDcgKzE2MDIsOCBAQCAjaWZkZWYgRU5BQkxFX1NPQ0tTCiAgICAgbXNnIChNX1VT
QUdFLCAiLS1zb2Nrcy1wcm94eSBjYW4gbm90IGJlIHVzZWQgaW4gVENQIFNlcnZlciBtb2RlIik7
CiAjZW5kaWYKIAotICBpZiAob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSICYm
IHJlbW90ZV9saXN0X2xlbiAob3B0aW9ucy0+cmVtb3RlX2xpc3QpID4gMSkKKyAgaWYgKChvcHRp
b25zLT5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVJ8fG9wdGlvbnMtPnByb3RvID09IFBST1RP
X1RDUHY2X1NFUlZFUikgCisJICAmJiByZW1vdGVfbGlzdF9sZW4gKG9wdGlvbnMtPnJlbW90ZV9s
aXN0KSA+IDEpCiAgICAgbXNnIChNX1VTQUdFLCAiVENQIHNlcnZlciBtb2RlIGFsbG93cyBhdCBt
b3N0IG9uZSAtLXJlbW90ZSBhZGRyZXNzIik7CiAKICNpZiBQMk1QX1NFUlZFUgpAQCAtMTYxNyw3
ICsxNjI4LDcgQEAgI2VuZGlmCiAJbXNnIChNX1VTQUdFLCAiLS1tb2RlIHNlcnZlciBvbmx5IHdv
cmtzIHdpdGggLS1kZXYgdHVuIG9yIC0tZGV2IHRhcCIpOwogICAgICAgaWYgKG9wdGlvbnMtPnB1
bGwpCiAJbXNnIChNX1VTQUdFLCAiLS1wdWxsIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1tb2RlIHNl
cnZlciIpOwotICAgICAgaWYgKCEob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVURQdjQgfHwgb3B0
aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSKSkKKyAgICAgIGlmICghKHByb3RvX2lz
X3VkcChvcHRpb25zLT5wcm90bykgfHwgb3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VS
VkVSIHx8IG9wdGlvbnMtPnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUikpCiAJbXNnIChNX1VT
QUdFLCAiLS1tb2RlIHNlcnZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAtLXByb3RvIHVkcCBv
ciAtLXByb3RvIHRjcC1zZXJ2ZXIiKTsKICNpZiBQT1JUX1NIQVJFCiAgICAgICBpZiAoKG9wdGlv
bnMtPnBvcnRfc2hhcmVfaG9zdCB8fCBvcHRpb25zLT5wb3J0X3NoYXJlX3BvcnQpICYmIG9wdGlv
bnMtPnByb3RvICE9IFBST1RPX1RDUHY0X1NFUlZFUikKQEAgLTE2NDUsOSArMTY1Niw5IEBAICNl
bmRpZgogCW1zZyAoTV9VU0FHRSwgIi0taW5ldGQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLW1vZGUg
c2VydmVyIik7CiAgICAgICBpZiAob3B0aW9ucy0+aXBjaGFuZ2UpCiAJbXNnIChNX1VTQUdFLCAi
LS1pcGNoYW5nZSBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbW9kZSBzZXJ2ZXIgKHVzZSAtLWNsaWVu
dC1jb25uZWN0IGluc3RlYWQpIik7Ci0gICAgICBpZiAoIShvcHRpb25zLT5wcm90byA9PSBQUk9U
T19VRFB2NCB8fCBvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIpKQotCW1zZyAo
TV9VU0FHRSwgIi0tbW9kZSBzZXJ2ZXIgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgLS1wcm90byB1
ZHAgb3IgLS1wcm90byB0Y3Atc2VydmVyIik7Ci0gICAgICBpZiAob3B0aW9ucy0+cHJvdG8gIT0g
UFJPVE9fVURQdjQgJiYgKG9wdGlvbnMtPmNmX21heCB8fCBvcHRpb25zLT5jZl9wZXIpKQorICAg
ICAgaWYgKCEocHJvdG9faXNfZGdyYW0ob3B0aW9ucy0+cHJvdG8pIHx8IG9wdGlvbnMtPnByb3Rv
ID09IFBST1RPX1RDUHY0X1NFUlZFUiB8fCBvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2Nl9T
RVJWRVIgKSkKKwltc2cgKE1fVVNBR0UsICItLW1vZGUgc2VydmVyIGN1cnJlbnRseSBvbmx5IHN1
cHBvcnRzIC0tcHJvdG8gdWRwIG9yIC0tcHJvdG8gdGNwLXNlcnZlciAoYWxzbyB1ZHA2L3RjcDYp
Iik7CisgICAgICBpZiAoIXByb3RvX2lzX3VkcChvcHRpb25zLT5wcm90bykgJiYgKG9wdGlvbnMt
PmNmX21heCB8fCBvcHRpb25zLT5jZl9wZXIpKQogCW1zZyAoTV9VU0FHRSwgIi0tY29ubmVjdC1m
cmVxIG9ubHkgd29ya3Mgd2l0aCAtLW1vZGUgc2VydmVyIC0tcHJvdG8gdWRwLiAgVHJ5IC0tbWF4
LWNsaWVudHMgaW5zdGVhZC4iKTsKICAgICAgIGlmICghKGRldiA9PSBERVZfVFlQRV9UQVAgfHwg
KGRldiA9PSBERVZfVFlQRV9UVU4gJiYgb3B0aW9ucy0+dG9wb2xvZ3kgPT0gVE9QX1NVQk5FVCkp
ICYmIG9wdGlvbnMtPmlmY29uZmlnX3Bvb2xfbmV0bWFzaykKIAltc2cgKE1fVVNBR0UsICJUaGUg
dGhpcmQgcGFyYW1ldGVyIHRvIC0taWZjb25maWctcG9vbCAobmV0bWFzaykgaXMgb25seSB2YWxp
ZCBpbiAtLWRldiB0YXAgbW9kZSIpOwpAQCAtMTcyNCw3ICsxNzM1LDcgQEAgI2lmZGVmIFVTRV9D
UllQVE8KICAgLyoKICAgICogQ2hlY2sgY29uc2lzdGVuY3kgb2YgcmVwbGF5IG9wdGlvbnMKICAg
ICovCi0gIGlmICgob3B0aW9ucy0+cHJvdG8gIT0gUFJPVE9fVURQdjQpCisgIGlmICgoIXByb3Rv
X2lzX3VkcChvcHRpb25zLT5wcm90bykpCiAgICAgICAmJiAob3B0aW9ucy0+cmVwbGF5X3dpbmRv
dyAhPSBkZWZhdWx0cy5yZXBsYXlfd2luZG93CiAJICB8fCBvcHRpb25zLT5yZXBsYXlfdGltZSAh
PSBkZWZhdWx0cy5yZXBsYXlfdGltZSkpCiAgICAgbXNnIChNX1VTQUdFLCAiLS1yZXBsYXktd2lu
ZG93IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXByb3RvIHVkcCIpOwpAQCAtMTkxMyw3ICsxOTI0
LDcgQEAgI2lmIFAyTVAKICAgICovCiAgIGlmIChvcHRpb25zLT5wdWxsCiAgICAgICAmJiBvcHRp
b25zLT5waW5nX3JlY190aW1lb3V0X2FjdGlvbiA9PSBQSU5HX1VOREVGCi0gICAgICAmJiBvcHRp
b25zLT5wcm90byA9PSBQUk9UT19VRFB2NCkKKyAgICAgICYmIHByb3RvX2lzX3VkcChvcHRpb25z
LT5wcm90bykpCiAgICAgewogICAgICAgb3B0aW9ucy0+cGluZ19yZWNfdGltZW91dCA9IFBSRV9Q
VUxMX0lOSVRJQUxfUElOR19SRVNUQVJUOwogICAgICAgb3B0aW9ucy0+cGluZ19yZWNfdGltZW91
dF9hY3Rpb24gPSBQSU5HX1JFU1RBUlQ7CmRpZmYgLS1naXQgYS9vcGVudnBuL3BzLmMgYi9vcGVu
dnBuL3BzLmMKaW5kZXggNDliMWEyYy4uNDcyYzYyNiAxMDA2NDQKLS0tIGEvb3BlbnZwbi9wcy5j
CisrKyBiL29wZW52cG4vcHMuYwpAQCAtMzM3LDkgKzMzNyw5IEBAIHNvY2tfYWRkcl9zZXQgKHN0
cnVjdCBvcGVudnBuX3NvY2thZGRyICoKIAkgICAgICAgY29uc3QgaW50IHBvcnQpCiB7CiAgIENM
RUFSICgqb3NhZGRyKTsKLSAgb3NhZGRyLT5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgb3Nh
ZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAoYWRkcik7Ci0gIG9zYWRkci0+c2Euc2lu
X3BvcnQgPSBodG9ucyAocG9ydCk7CisgIG9zYWRkci0+YWRkci5pbjQuc2luX2ZhbWlseSA9IEFG
X0lORVQ7CisgIG9zYWRkci0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKGFkZHIp
OworICBvc2FkZHItPmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL29wZW52cG4vc29ja2V0LmMgYi9vcGVudnBuL3Nv
Y2tldC5jCmluZGV4IDcwZDhmZmQuLjMwNzQyNjcgMTAwNjQ0Ci0tLSBhL29wZW52cG4vc29ja2V0
LmMKKysrIGIvb3BlbnZwbi9zb2NrZXQuYwpAQCAtNDIsMTAgKzQyLDE2IEBAICNpbmNsdWRlICJt
YW5hZ2UuaCIKICNpbmNsdWRlICJtZW1kYmcuaCIKIAogY29uc3QgaW50IHByb3RvX292ZXJoZWFk
W10gPSB7IC8qIGluZGV4ZWQgYnkgUFJPVE9feCAqLwotICBJUHY0X1VEUF9IRUFERVJfU0laRSwK
KyAgMCwKKyAgSVB2NF9VRFBfSEVBREVSX1NJWkUsIC8qIElQdjQgKi8KICAgSVB2NF9UQ1BfSEVB
REVSX1NJWkUsCiAgIElQdjRfVENQX0hFQURFUl9TSVpFLAotICBJUHY0X1RDUF9IRUFERVJfU0la
RQorI2lmZGVmIFVTRV9QRl9JTkVUNgorICBJUHY2X1VEUF9IRUFERVJfU0laRSwgLyogSVB2NiAq
LworICBJUHY2X1RDUF9IRUFERVJfU0laRSwKKyAgSVB2Nl9UQ1BfSEVBREVSX1NJWkUsCisgIElQ
djZfVENQX0hFQURFUl9TSVpFLAorI2VuZGlmCiB9OwogCiAvKgpAQCAtMjYwLDIwICsyNjYsNDkg
QEAgdXBkYXRlX3JlbW90ZSAoY29uc3QgY2hhciogaG9zdCwKIAkgICAgICAgc3RydWN0IG9wZW52
cG5fc29ja2FkZHIgKmFkZHIsCiAJICAgICAgIGJvb2wgKmNoYW5nZWQpCiB7Ci0gIGlmIChob3N0
ICYmIGFkZHIpCi0gICAgewotICAgICAgY29uc3QgaW5fYWRkcl90IG5ld19hZGRyID0gZ2V0YWRk
ciAoCi0JCQkJCSAgR0VUQUREUl9SRVNPTFZFfEdFVEFERFJfVVBEQVRFX01BTkFHRU1FTlRfU1RB
VEUsCi0JCQkJCSAgaG9zdCwKLQkJCQkJICAxLAotCQkJCQkgIE5VTEwsCi0JCQkJCSAgTlVMTCk7
Ci0gICAgICBpZiAobmV3X2FkZHIgJiYgYWRkci0+c2Euc2luX2FkZHIuc19hZGRyICE9IG5ld19h
ZGRyKQorICBzd2l0Y2goYWRkci0+YWRkci5zYS5zYV9mYW1pbHkpIHsKKyAgICBjYXNlIEFGX0lO
RVQ6CisgICAgICBpZiAoaG9zdCAmJiBhZGRyKQorICAgICAgeworCWNvbnN0IGluX2FkZHJfdCBu
ZXdfYWRkciA9IGdldGFkZHIgKAorCSAgICBHRVRBRERSX1JFU09MVkV8R0VUQUREUl9VUERBVEVf
TUFOQUdFTUVOVF9TVEFURSwKKwkgICAgaG9zdCwKKwkgICAgMSwKKwkgICAgTlVMTCwKKwkgICAg
TlVMTCk7CisJaWYgKG5ld19hZGRyICYmIGFkZHItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciAh
PSBuZXdfYWRkcikKIAl7Ci0JICBhZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIgPSBuZXdfYWRkcjsK
KwkgIGFkZHItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciA9IG5ld19hZGRyOwogCSAgKmNoYW5n
ZWQgPSB0cnVlOwogCX0KLSAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyNpZmRlZiBVU0Vf
UEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OiAvKiBqam9GSVhNRTogc2hvdWxkIGFkYXB0IGdl
dGFkZHIoKSBmb3IgQUZfSU5FVDYgKi8KKyAgICAgIGlmIChob3N0ICYmIGFkZHIpCisgICAgICB7
CisJc3RydWN0IGFkZHJpbmZvIGhpbnRzICwgKmFpOworCWludCBlcnI7CisJbWVtc2V0KCZoaW50
cywgMCwgc2l6ZW9mIGhpbnRzKTsKKwloaW50cy5haV9mbGFncz1BSV9QQVNTSVZFOworCWhpbnRz
LmFpX2ZhbWlseT1BRl9JTkVUNjsKKwlpZiAoKGVycj1nZXRhZGRyaW5mbyhob3N0LCBOVUxMLCAm
aGludHMsICZhaSkpPT0wKQorCXsKKwkgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjY9KHN0cnVj
dCBzb2NrYWRkcl9pbjYqKWFpLT5haV9hZGRyOworCSAgaWYgKElONl9BUkVfQUREUl9FUVVBTCgm
c2luNi0+c2luNl9hZGRyLCAmYWRkci0+YWRkci5pbjYuc2luNl9hZGRyKSkKKwkgIHsKKwkgICAg
aW50IHBvcnQ9YWRkci0+YWRkci5pbjYuc2luNl9wb3J0OyAvKiBiYWNrdXAgY3VycmVudCBwb3J0
IGZvciBlYXNpZXIgY29weSwgcmVzdG9yZSBsYXRlciAqLworCSAgICBhZGRyLT5hZGRyLmluNj0q
c2luNjsgLyogaXB2NiByZXF1aXJlcyBhbHNvIGVnLiBzaW42X3Njb3BlX2lkID0+IGVhc3kgdG8g
ZnVsbCBjb3B5Ki8KKwkgICAgYWRkci0+YWRkci5pbjYuc2luNl9wb3J0PXBvcnQ7CisJICB9CisJ
ICBmcmVlYWRkcmluZm8oYWkpOworCX0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworI2VuZGlmCisg
ICAgZGVmYXVsdDoKKyAgICAJQVNTRVJUKDApOworICB9CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTUz
MSw2ICs1NjYsNDQgQEAgI2VuZGlmCiAgIHJldHVybiBzZDsKIH0KIAorI2lmZGVmIFVTRV9QRl9J
TkVUNgorc3RhdGljIHNvY2tldF9kZXNjcmlwdG9yX3QKK2NyZWF0ZV9zb2NrZXRfdWRwNiAoY29u
c3QgdW5zaWduZWQgaW50IGZsYWdzKQoreworICBzb2NrZXRfZGVzY3JpcHRvcl90IHNkOworCisg
IGlmICgoc2QgPSBzb2NrZXQgKFBGX0lORVQ2LCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpIDwg
MCkKKyAgICBtc2cgKE1fU09DS0VSUiwgIlVEUDogQ2Fubm90IGNyZWF0ZSBVRFA2IHNvY2tldCIp
OworI2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIGVsc2UgaWYgKGZsYWdzICYgU0ZfVVNFX0lQX1BL
VElORk8pCisgICAgeworICAgICAgaW50IHBhZCA9IDE7CisgICAgICBzZXRzb2Nrb3B0IChzZCwg
SVBQUk9UT19JUFY2LCBJUFY2X1BLVElORk8sICh2b2lkKikmcGFkLCBzaXplb2YocGFkKSk7Cisg
ICAgfQorI2VuZGlmCisgIHJldHVybiBzZDsKK30KKworc3RhdGljIHNvY2tldF9kZXNjcmlwdG9y
X3QKK2NyZWF0ZV9zb2NrZXRfdGNwNiAodm9pZCkKK3sKKyAgc29ja2V0X2Rlc2NyaXB0b3JfdCBz
ZDsKKworICBpZiAoKHNkID0gc29ja2V0IChQRl9JTkVUNiwgU09DS19TVFJFQU0sIElQUFJPVE9f
VENQKSkgPCAwKQorICAgIG1zZyAoTV9TT0NLRVJSLCAiQ2Fubm90IGNyZWF0ZSBUQ1A2IHNvY2tl
dCIpOworCisgIC8qIHNldCBTT19SRVVTRUFERFIgb24gc29ja2V0ICovCisgIHsKKyAgICBpbnQg
b24gPSAxOworICAgIGlmIChzZXRzb2Nrb3B0IChzZCwgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERS
LAorCQkgICAgKHZvaWQgKikgJm9uLCBzaXplb2YgKG9uKSkgPCAwKQorICAgICAgbXNnIChNX1NP
Q0tFUlIsICJUQ1A6IENhbm5vdCBzZXRzb2Nrb3B0IFNPX1JFVVNFQUREUiBvbiBUQ1A2IHNvY2tl
dCIpOworICB9CisKKyAgcmV0dXJuIHNkOworfQorCisjZW5kaWYKIHN0YXRpYyB2b2lkCiBjcmVh
dGVfc29ja2V0IChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvY2spCiB7CkBAIC01NDksNiArNjIyLDE3
IEBAICNlbmRpZgogICAgIHsKICAgICAgIHNvY2stPnNkID0gY3JlYXRlX3NvY2tldF90Y3AgKCk7
CiAgICAgfQorI2lmZGVmIFVTRV9QRl9JTkVUNgorICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3Rv
ID09IFBST1RPX1RDUHY2X1NFUlZFUgorCSAgIHx8IHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9f
VENQdjZfQ0xJRU5UKQorICAgIHsKKyAgICAgIHNvY2stPnNkID0gY3JlYXRlX3NvY2tldF90Y3A2
ICgpOworICAgIH0KKyAgZWxzZSBpZiAoc29jay0+aW5mby5wcm90byA9PSBQUk9UT19VRFB2NikK
KyAgICB7CisgICAgICBzb2NrLT5zZCA9IGNyZWF0ZV9zb2NrZXRfdWRwNiAoc29jay0+c29ja2Zs
YWdzKTsKKyAgICB9CisjZW5kaWYKICAgZWxzZQogICAgIHsKICAgICAgIEFTU0VSVCAoMCk7CkBA
IC01ODYsNyArNjcwLDEyIEBAIHNvY2tldF9kb19hY2NlcHQgKHNvY2tldF9kZXNjcmlwdG9yX3Qg
c2QKIAkJICBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFsICphY3QsCiAJCSAgY29uc3QgYm9vbCBu
b3dhaXQpCiB7Ci0gIHNvY2tsZW5fdCByZW1vdGVfbGVuID0gc2l6ZW9mIChhY3QtPmRlc3Quc2Ep
OworICAvKiBhZl9hZGRyX3NpemUgV0lMTCByZXR1cm4gMCBpbiB0aGlzIGNhc2UgaWYgQUZzIG90
aGVyIHRoYW4gQUZfSU5FVAorICAgKiBhcmUgY29tcGlsZWQgYmVjYXVzZSBhY3QgaXMgZW1wdHkg
aGVyZS4KKyAgICogY291bGQgdXNlIGdldHNvY2tuYW1lKCkgdG8gc3VwcG9ydCBsYXRlciByZW1v
dGVfbGVuIGNoZWNrCisgICAqLworICBzb2NrbGVuX3QgcmVtb3RlX2xlbl9hZiA9IGFmX2FkZHJf
c2l6ZShhY3QtPmRlc3QuYWRkci5zYS5zYV9mYW1pbHkpOworICBzb2NrbGVuX3QgcmVtb3RlX2xl
biA9IHNpemVvZihhY3QtPmRlc3QuYWRkcik7CiAgIHNvY2tldF9kZXNjcmlwdG9yX3QgbmV3X3Nk
ID0gU09DS0VUX1VOREVGSU5FRDsKIAogICBDTEVBUiAoKmFjdCk7CkBAIC01OTQsNyArNjgzLDcg
QEAgc29ja2V0X2RvX2FjY2VwdCAoc29ja2V0X2Rlc2NyaXB0b3JfdCBzZAogI2lmZGVmIEhBVkVf
R0VUUEVFUk5BTUUKICAgaWYgKG5vd2FpdCkKICAgICB7Ci0gICAgICBuZXdfc2QgPSBnZXRwZWVy
bmFtZSAoc2QsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmFjdC0+ZGVzdC5zYSwgJnJlbW90ZV9sZW4p
OworICAgICAgbmV3X3NkID0gZ2V0cGVlcm5hbWUgKHNkLCAmYWN0LT5kZXN0LmFkZHIuc2EsICZy
ZW1vdGVfbGVuKTsKIAogICAgICAgaWYgKCFzb2NrZXRfZGVmaW5lZCAobmV3X3NkKSkKIAltc2cg
KERfTElOS19FUlJPUlMgfCBNX0VSUk5PX1NPQ0ssICJUQ1A6IGdldHBlZXJuYW1lKCkgZmFpbGVk
Iik7CkBAIC02MDcsNyArNjk2LDcgQEAgI2Vsc2UKICNlbmRpZgogICBlbHNlCiAgICAgewotICAg
ICAgbmV3X3NkID0gYWNjZXB0IChzZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmYWN0LT5kZXN0LnNh
LCAmcmVtb3RlX2xlbik7CisgICAgICBuZXdfc2QgPSBhY2NlcHQgKHNkLCAmYWN0LT5kZXN0LmFk
ZHIuc2EsICZyZW1vdGVfbGVuKTsKICAgICB9CiAKICNpZiAwIC8qIEZvciBkZWJ1Z2dpbmcgb25s
eSwgdGVzdCB0aGUgZWZmZWN0IG9mIGFjY2VwdCgpIGZhaWx1cmVzICovCkBAIC02MjMsNyArNzEy
LDggQEAgI2VuZGlmCiAgICAgewogICAgICAgbXNnIChEX0xJTktfRVJST1JTIHwgTV9FUlJOT19T
T0NLLCAiVENQOiBhY2NlcHQoJWQpIGZhaWxlZCIsIHNkKTsKICAgICB9Ci0gIGVsc2UgaWYgKHJl
bW90ZV9sZW4gIT0gc2l6ZW9mIChhY3QtPmRlc3Quc2EpKQorICAvKiBvbmx5IHZhbGlkIGlmIHdl
IGhhdmUgcmVtb3RlX2xlbl9hZiE9MCAqLworICBlbHNlIGlmIChyZW1vdGVfbGVuX2FmICYmIHJl
bW90ZV9sZW4gIT0gcmVtb3RlX2xlbl9hZikKICAgICB7CiAgICAgICBtc2cgKERfTElOS19FUlJP
UlMsICJUQ1A6IFJlY2VpdmVkIHN0cmFuZ2UgaW5jb21pbmcgY29ubmVjdGlvbiB3aXRoIHVua25v
d24gYWRkcmVzcyBsZW5ndGg9JWQiLCByZW1vdGVfbGVuKTsKICAgICAgIG9wZW52cG5fY2xvc2Vf
c29ja2V0IChuZXdfc2QpOwpAQCAtNzI0LDcgKzgxNCw3IEBAIHNvY2tldF9iaW5kIChzb2NrZXRf
ZGVzY3JpcHRvcl90IHNkLAogewogICBzdHJ1Y3QgZ2NfYXJlbmEgZ2MgPSBnY19uZXcgKCk7CiAK
LSAgaWYgKGJpbmQgKHNkLCAoc3RydWN0IHNvY2thZGRyICopICZsb2NhbC0+c2EsIHNpemVvZiAo
bG9jYWwtPnNhKSkpCisgIGlmIChiaW5kIChzZCwgJmxvY2FsLT5hZGRyLnNhLCBhZl9hZGRyX3Np
emUobG9jYWwtPmFkZHIuc2Euc2FfZmFtaWx5KSkpCiAgICAgewogICAgICAgY29uc3QgaW50IGVy
cm51bSA9IG9wZW52cG5fZXJybm9fc29ja2V0ICgpOwogICAgICAgbXNnIChNX0ZBVEFMLCAiJXM6
IFNvY2tldCBiaW5kIGZhaWxlZCBvbiBsb2NhbCBhZGRyZXNzICVzOiAlcyIsCkBAIC03NDUsNyAr
ODM1LDcgQEAgb3BlbnZwbl9jb25uZWN0IChzb2NrZXRfZGVzY3JpcHRvcl90IHNkLAogCiAjaWZk
ZWYgQ09OTkVDVF9OT05CTE9DSwogICBzZXRfbm9uYmxvY2sgKHNkKTsKLSAgc3RhdHVzID0gY29u
bmVjdCAoc2QsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZS0+c2EsIHNpemVvZiAocmVtb3Rl
LT5zYSkpOworICBzdGF0dXMgPSBjb25uZWN0IChzZCwgJnJlbW90ZS0+YWRkci5zYSwgYWZfYWRk
cl9zaXplKHJlbW90ZS0+YWRkci5zYS5zYV9mYW1pbHkpKTsKICAgaWYgKHN0YXR1cykKICAgICBz
dGF0dXMgPSBvcGVudnBuX2Vycm5vX3NvY2tldCAoKTsKICAgaWYgKHN0YXR1cyA9PSBFSU5QUk9H
UkVTUykKQEAgLTgyOSw3MyArOTE5LDk1IEBAIHNvY2tldF9jb25uZWN0IChzb2NrZXRfZGVzY3Jp
cHRvcl90ICpzZCwKIAogI2lmZGVmIENPTk5FQ1RfTk9OQkxPQ0sKICAgbXNnIChNX0lORk8sICJB
dHRlbXB0aW5nIHRvIGVzdGFibGlzaCBUQ1AgY29ubmVjdGlvbiB3aXRoICVzIFtub25ibG9ja10i
LCAKLSAgICAgICBwcmludF9zb2NrYWRkciAocmVtb3RlLCAmZ2MpKTsKKyAgICAgIHByaW50X3Nv
Y2thZGRyIChyZW1vdGUsICZnYykpOwogI2Vsc2UKICAgbXNnIChNX0lORk8sICJBdHRlbXB0aW5n
IHRvIGVzdGFibGlzaCBUQ1AgY29ubmVjdGlvbiB3aXRoICVzIiwgCi0gICAgICAgcHJpbnRfc29j
a2FkZHIgKHJlbW90ZSwgJmdjKSk7CisgICAgICBwcmludF9zb2NrYWRkciAocmVtb3RlLCAmZ2Mp
KTsKICNlbmRpZgogCiAgIHdoaWxlICh0cnVlKQotICAgIHsKLSAgICAgIGludCBzdGF0dXM7Cisg
IHsKKyAgICBpbnQgc3RhdHVzOwogCiAjaWZkZWYgRU5BQkxFX01BTkFHRU1FTlQKLSAgICAgIGlm
IChtYW5hZ2VtZW50KQotCW1hbmFnZW1lbnRfc2V0X3N0YXRlIChtYW5hZ2VtZW50LAotCQkJICAg
ICAgT1BFTlZQTl9TVEFURV9UQ1BfQ09OTkVDVCwKLQkJCSAgICAgIE5VTEwsCi0JCQkgICAgICAo
aW5fYWRkcl90KTAsCi0JCQkgICAgICAoaW5fYWRkcl90KTApOworICAgIGlmIChtYW5hZ2VtZW50
KQorICAgICAgbWFuYWdlbWVudF9zZXRfc3RhdGUgKG1hbmFnZW1lbnQsCisJICBPUEVOVlBOX1NU
QVRFX1RDUF9DT05ORUNULAorCSAgTlVMTCwKKwkgIChpbl9hZGRyX3QpMCwKKwkgIChpbl9hZGRy
X3QpMCk7CiAjZW5kaWYKIAotICAgICAgc3RhdHVzID0gb3BlbnZwbl9jb25uZWN0ICgqc2QsIHJl
bW90ZSwgY29ubmVjdF90aW1lb3V0LCBzaWduYWxfcmVjZWl2ZWQpOworICAgIHN0YXR1cyA9IG9w
ZW52cG5fY29ubmVjdCAoKnNkLCByZW1vdGUsIGNvbm5lY3RfdGltZW91dCwgc2lnbmFsX3JlY2Vp
dmVkKTsKIAotICAgICAgZ2V0X3NpZ25hbCAoc2lnbmFsX3JlY2VpdmVkKTsKLSAgICAgIGlmICgq
c2lnbmFsX3JlY2VpdmVkKQotCWdvdG8gZG9uZTsKKyAgICBnZXRfc2lnbmFsIChzaWduYWxfcmVj
ZWl2ZWQpOworICAgIGlmICgqc2lnbmFsX3JlY2VpdmVkKQorICAgICAgZ290byBkb25lOwogCi0g
ICAgICBpZiAoIXN0YXR1cykKLQlicmVhazsKKyAgICBpZiAoIXN0YXR1cykKKyAgICAgIGJyZWFr
OwogCi0gICAgICBtc2cgKERfTElOS19FUlJPUlMsCi0JICAgIlRDUDogY29ubmVjdCB0byAlcyBm
YWlsZWQsIHdpbGwgdHJ5IGFnYWluIGluICVkIHNlY29uZHM6ICVzIiwKLQkgICBwcmludF9zb2Nr
YWRkciAocmVtb3RlLCAmZ2MpLAotCSAgIGNvbm5lY3RfcmV0cnlfc2Vjb25kcywKLQkgICBzdHJl
cnJvcl90cyAoc3RhdHVzLCAmZ2MpKTsKKyAgICBtc2cgKERfTElOS19FUlJPUlMsCisJIlRDUDog
Y29ubmVjdCB0byAlcyBmYWlsZWQsIHdpbGwgdHJ5IGFnYWluIGluICVkIHNlY29uZHM6ICVzIiwK
KwlwcmludF9zb2NrYWRkciAocmVtb3RlLCAmZ2MpLAorCWNvbm5lY3RfcmV0cnlfc2Vjb25kcywK
KwlzdHJlcnJvcl90cyAoc3RhdHVzLCAmZ2MpKTsKIAotICAgICAgb3BlbnZwbl9jbG9zZV9zb2Nr
ZXQgKCpzZCk7Ci0gICAgICAqc2QgPSBTT0NLRVRfVU5ERUZJTkVEOworICAgIG9wZW52cG5fY2xv
c2Vfc29ja2V0ICgqc2QpOworICAgICpzZCA9IFNPQ0tFVF9VTkRFRklORUQ7CiAKLSAgICAgIGlm
IChjb25uZWN0X3JldHJ5X21heCA+IDAgJiYgKytyZXRyeSA+PSBjb25uZWN0X3JldHJ5X21heCkK
LQl7Ci0JICAqc2lnbmFsX3JlY2VpdmVkID0gU0lHVVNSMTsKLQkgIGdvdG8gZG9uZTsKLQl9Cisg
ICAgaWYgKGNvbm5lY3RfcmV0cnlfbWF4ID4gMCAmJiArK3JldHJ5ID49IGNvbm5lY3RfcmV0cnlf
bWF4KQorICAgIHsKKyAgICAgICpzaWduYWxfcmVjZWl2ZWQgPSBTSUdVU1IxOworICAgICAgZ290
byBkb25lOworICAgIH0KIAotICAgICAgb3BlbnZwbl9zbGVlcCAoY29ubmVjdF9yZXRyeV9zZWNv
bmRzKTsKKyAgICBvcGVudnBuX3NsZWVwIChjb25uZWN0X3JldHJ5X3NlY29uZHMpOwogCi0gICAg
ICBnZXRfc2lnbmFsIChzaWduYWxfcmVjZWl2ZWQpOwotICAgICAgaWYgKCpzaWduYWxfcmVjZWl2
ZWQpCi0JZ290byBkb25lOworICAgIGdldF9zaWduYWwgKHNpZ25hbF9yZWNlaXZlZCk7CisgICAg
aWYgKCpzaWduYWxfcmVjZWl2ZWQpCisgICAgICBnb3RvIGRvbmU7CiAKLSAgICAgIGlmIChyZW1v
dGVfbGlzdCkKKyAgICBzd2l0Y2gocmVtb3RlLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgICAg
Y2FzZSBBRl9JTkVUOgorCWlmIChyZW1vdGVfbGlzdCkKIAl7CiAJICByZW1vdGVfbGlzdF9uZXh0
IChyZW1vdGVfbGlzdCk7CiAJICByZW1vdGVfZHluYW1pYyA9IHJlbW90ZV9saXN0X2hvc3QgKHJl
bW90ZV9saXN0KTsKLQkgIHJlbW90ZS0+c2Euc2luX3BvcnQgPSBodG9ucyAocmVtb3RlX2xpc3Rf
cG9ydCAocmVtb3RlX2xpc3QpKTsKKwkgIHJlbW90ZS0+YWRkci5pbjQuc2luX3BvcnQgPSBodG9u
cyAocmVtb3RlX2xpc3RfcG9ydCAocmVtb3RlX2xpc3QpKTsKIAkgICpyZW1vdGVfY2hhbmdlZCA9
IHRydWU7CiAJfQogCi0gICAgICAqc2QgPSBjcmVhdGVfc29ja2V0X3RjcCAoKTsKLSAgICAgIGlm
IChiaW5kX2xvY2FsKQotICAgICAgICBzb2NrZXRfYmluZCAoKnNkLCBsb2NhbCwgIlRDUCBDbGll
bnQiKTsKLSAgICAgIHVwZGF0ZV9yZW1vdGUgKHJlbW90ZV9keW5hbWljLCByZW1vdGUsIHJlbW90
ZV9jaGFuZ2VkKTsKKwkqc2QgPSBjcmVhdGVfc29ja2V0X3RjcCAoKTsKKwlpZiAoYmluZF9sb2Nh
bCkKKwkgIHNvY2tldF9iaW5kICgqc2QsIGxvY2FsLCAiVENQIENsaWVudCIpOworCXVwZGF0ZV9y
ZW1vdGUgKHJlbW90ZV9keW5hbWljLCByZW1vdGUsIHJlbW90ZV9jaGFuZ2VkKTsKKwlicmVhazsK
KyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICAgIGNhc2UgQUZfSU5FVDY6IAorCWlmIChyZW1vdGVf
bGlzdCkKKwl7CisJICByZW1vdGVfbGlzdF9uZXh0IChyZW1vdGVfbGlzdCk7CisJICByZW1vdGVf
ZHluYW1pYyA9IHJlbW90ZV9saXN0X2hvc3QgKHJlbW90ZV9saXN0KTsKKwkgIHJlbW90ZS0+YWRk
ci5pbjYuc2luNl9wb3J0ID0gaHRvbnMgKHJlbW90ZV9saXN0X3BvcnQgKHJlbW90ZV9saXN0KSk7
CisJICAqcmVtb3RlX2NoYW5nZWQgPSB0cnVlOworCX0KKwkqc2QgPSBjcmVhdGVfc29ja2V0X3Rj
cDYgKCk7CisJaWYgKGJpbmRfbG9jYWwpCisJICBzb2NrZXRfYmluZCAoKnNkLCBsb2NhbCwgIlRD
UDYgQ2xpZW50Iik7CisJdXBkYXRlX3JlbW90ZSAocmVtb3RlX2R5bmFtaWMsIHJlbW90ZSwgcmVt
b3RlX2NoYW5nZWQpOworCWJyZWFrOworI2VuZGlmCisgICAgICBkZWZhdWx0OgorCW1zZyhNX0ZB
VEFMLCAiT25seSBUQ1AgaXMgc3VwcG9ydGVkIGZvciBjb25uZWN0aW9uIG9yaWVudGVkLCBzYV9m
YW1pbHk9JWQiLCAKKwkgICAgcmVtb3RlLT5hZGRyLnNhLnNhX2ZhbWlseSk7CiAgICAgfQorICB9
CiAKICAgbXNnIChNX0lORk8sICJUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCB3aXRoICVzIiwg
Ci0gICAgICAgcHJpbnRfc29ja2FkZHIgKHJlbW90ZSwgJmdjKSk7CisgICAgICBwcmludF9zb2Nr
YWRkciAocmVtb3RlLCAmZ2MpKTsKIAotIGRvbmU6Citkb25lOgogICBnY19mcmVlICgmZ2MpOwog
fQogCkBAIC05NTAsMTcgKzEwNjIsNDQgQEAgcmVzb2x2ZV9iaW5kX2xvY2FsIChzdHJ1Y3QgbGlu
a19zb2NrZXQgKgogCiAgIC8qIHJlc29sdmUgbG9jYWwgYWRkcmVzcyBpZiB1bmRlZmluZWQgKi8K
ICAgaWYgKCFhZGRyX2RlZmluZWQgKCZzb2NrLT5pbmZvLmxzYS0+bG9jYWwpKQotICAgIHsKLSAg
ICAgIHNvY2stPmluZm8ubHNhLT5sb2NhbC5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgICAg
IHNvY2stPmluZm8ubHNhLT5sb2NhbC5zYS5zaW5fYWRkci5zX2FkZHIgPQotCShzb2NrLT5sb2Nh
bF9ob3N0ID8gZ2V0YWRkciAoR0VUQUREUl9SRVNPTFZFIHwgR0VUQUREUl9XQVJOX09OX1NJR05B
TCB8IEdFVEFERFJfRkFUQUwsCi0JCQkJICAgICBzb2NrLT5sb2NhbF9ob3N0LAotCQkJCSAgICAg
MCwKLQkJCQkgICAgIE5VTEwsCi0JCQkJICAgICBOVUxMKQotCSA6IGh0b25sIChJTkFERFJfQU5Z
KSk7Ci0gICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuc2Euc2luX3BvcnQgPSBodG9ucyAoc29j
ay0+bG9jYWxfcG9ydCk7CisgIHsKKyAgICAvKiBtYXkgcmV0dXJuIEFGX3tJTkVUfElORVQ2fSBn
dWVzc2VkIGZyb20gbG9jYWxfaG9zdCAqLworICAgIHN3aXRjaChhZGRyX2d1ZXNzX2ZhbWlseShz
b2NrLT5pbmZvLnByb3RvLCBzb2NrLT5sb2NhbF9ob3N0KSkgeworICAgICAgY2FzZSBBRl9JTkVU
OgorCXNvY2stPmluZm8ubHNhLT5sb2NhbC5hZGRyLmluNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsK
Kwlzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0KKwkgIChz
b2NrLT5sb2NhbF9ob3N0ID8gZ2V0YWRkciAoR0VUQUREUl9SRVNPTFZFIHwgR0VUQUREUl9XQVJO
X09OX1NJR05BTCB8IEdFVEFERFJfRkFUQUwsCisJCQkJICAgICAgIHNvY2stPmxvY2FsX2hvc3Qs
CisJCQkJICAgICAgIDAsCisJCQkJICAgICAgIE5VTEwsCisJCQkJICAgICAgIE5VTEwpCisJICAg
OiBodG9ubCAoSU5BRERSX0FOWSkpOworCXNvY2stPmluZm8ubHNhLT5sb2NhbC5hZGRyLmluNC5z
aW5fcG9ydCA9IGh0b25zIChzb2NrLT5sb2NhbF9wb3J0KTsKKwlicmVhazsKKyNpZmRlZiBVU0Vf
UEZfSU5FVDYKKyAgICAgIGNhc2UgQUZfSU5FVDY6CisJeworCSAgc3RydWN0IGFkZHJpbmZvIGhp
bnRzICwgKmFpOworCSAgaW50IGVycjsKKwkgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZiBoaW50
cyk7CisJICBoaW50cy5haV9mbGFncz1BSV9QQVNTSVZFOworCSAgaGludHMuYWlfZmFtaWx5PUFG
X0lORVQ2OworCSAgLyogaWYgbm8gbG9jYWxfaG9zdCBwcm92aWRlZCwgYXNrIGZvciBJTjZBRERS
X0FOWSAuLi4gKi8KKwkgIGlmICgoZXJyPWdldGFkZHJpbmZvKHNvY2stPmxvY2FsX2hvc3Q/IHNv
Y2stPmxvY2FsX2hvc3QgOiAiOjoiLCAKKwkJICBOVUxMLCAmaGludHMsICZhaSkpPT0wKSB7CisJ
ICAgIHNvY2stPmluZm8ubHNhLT5sb2NhbC5hZGRyLmluNiA9ICooKHN0cnVjdCBzb2NrYWRkcl9p
bjYqKShhaS0+YWlfYWRkcikpOworCSAgICBmcmVlYWRkcmluZm8oYWkpOworCSAgfSBlbHNlIHsK
KwkgICAgbXNnIChNX0ZBVEFMLCAiZ2V0YWRkcmluZm8oKSBmYWlsZWQgZm9yIGxvY2FsIFwiJXNc
IjogJXMiLAorCQlzb2NrLT5sb2NhbF9ob3N0LAorCQlnYWlfc3RyZXJyb3IoZXJyKSk7CisJICB9
CisJICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjYuc2luNl9wb3J0ID0gaHRvbnMgKHNv
Y2stPmxvY2FsX3BvcnQpOworCX0KKwlicmVhazsKKyNlbmRpZgogICAgIH0KKyAgfQogICAKICAg
LyogYmluZCB0byBsb2NhbCBhZGRyZXNzL3BvcnQgKi8KICAgaWYgKHNvY2stPmJpbmRfbG9jYWwp
CkBAIC05ODQsMTAzICsxMTIzLDEyOCBAQCByZXNvbHZlX3JlbW90ZSAoc3RydWN0IGxpbmtfc29j
a2V0ICpzb2NrCiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsKIAogICBpZiAoIXNv
Y2stPmRpZF9yZXNvbHZlX3JlbW90ZSkKKyAgeworICAgIC8qIHJlc29sdmUgcmVtb3RlIGFkZHJl
c3MgaWYgdW5kZWZpbmVkICovCisgICAgaWYgKCFhZGRyX2RlZmluZWQgKCZzb2NrLT5pbmZvLmxz
YS0+cmVtb3RlKSkKICAgICB7Ci0gICAgICAvKiByZXNvbHZlIHJlbW90ZSBhZGRyZXNzIGlmIHVu
ZGVmaW5lZCAqLwotICAgICAgaWYgKCFhZGRyX2RlZmluZWQgKCZzb2NrLT5pbmZvLmxzYS0+cmVt
b3RlKSkKLQl7Ci0JICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNhLnNpbl9mYW1pbHkgPSBBRl9J
TkVUOwotCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zYS5zaW5fYWRkci5zX2FkZHIgPSAwOwor
ICAgICAgc3dpdGNoKGFkZHJfZ3Vlc3NfZmFtaWx5KHNvY2stPmluZm8ucHJvdG8sIHNvY2stPnJl
bW90ZV9ob3N0KSkgCisgICAgICB7CisJY2FzZSBBRl9JTkVUOgorCSAgc29jay0+aW5mby5sc2Et
PnJlbW90ZS5hZGRyLmluNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKwkgIHNvY2stPmluZm8ubHNh
LT5yZW1vdGUuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gMDsKIAogCSAgaWYgKHNvY2stPnJl
bW90ZV9ob3N0KQotCSAgICB7Ci0JICAgICAgdW5zaWduZWQgaW50IGZsYWdzID0gR0VUQUREUl9S
RVNPTFZFfEdFVEFERFJfVVBEQVRFX01BTkFHRU1FTlRfU1RBVEU7Ci0JICAgICAgaW50IHJldHJ5
ID0gMDsKLQkgICAgICBib29sIHN0YXR1cyA9IGZhbHNlOworCSAgeworCSAgICB1bnNpZ25lZCBp
bnQgZmxhZ3MgPSBHRVRBRERSX1JFU09MVkV8R0VUQUREUl9VUERBVEVfTUFOQUdFTUVOVF9TVEFU
RTsKKwkgICAgaW50IHJldHJ5ID0gMDsKKwkgICAgYm9vbCBzdGF0dXMgPSBmYWxzZTsKIAotCSAg
ICAgIGlmIChyZW1vdGVfbGlzdF9sZW4gKHNvY2stPnJlbW90ZV9saXN0KSA+IDEgJiYgc29jay0+
cmVzb2x2ZV9yZXRyeV9zZWNvbmRzID09IFJFU09MVl9SRVRSWV9JTkZJTklURSkKLQkJewotCQkg
IGlmIChwaGFzZSA9PSAyKQotCQkgICAgZmxhZ3MgfD0gKEdFVEFERFJfVFJZX09OQ0UgfCBHRVRB
RERSX0ZBVEFMKTsKLQkJICByZXRyeSA9IDA7Ci0JCX0KLQkgICAgICBlbHNlIGlmIChwaGFzZSA9
PSAxKQotCQl7Ci0JCSAgaWYgKHNvY2stPnJlc29sdmVfcmV0cnlfc2Vjb25kcykKLQkJICAgIHsK
LQkJICAgICAgcmV0cnkgPSAwOwotCQkgICAgfQotCQkgIGVsc2UKLQkJICAgIHsKLQkJICAgICAg
ZmxhZ3MgfD0gKEdFVEFERFJfRkFUQUwgfCBHRVRBRERSX01FTlRJT05fUkVTT0xWRV9SRVRSWSk7
Ci0JCSAgICAgIHJldHJ5ID0gMDsKLQkJICAgIH0KLQkJfQotCSAgICAgIGVsc2UgaWYgKHBoYXNl
ID09IDIpCi0JCXsKLQkJICBpZiAoc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzKQotCQkgICAg
ewotCQkgICAgICBmbGFncyB8PSBHRVRBRERSX0ZBVEFMOwotCQkgICAgICByZXRyeSA9IHNvY2st
PnJlc29sdmVfcmV0cnlfc2Vjb25kczsKLQkJICAgIH0KLQkJICBlbHNlCi0JCSAgICB7Ci0JCSAg
ICAgIEFTU0VSVCAoMCk7Ci0JCSAgICB9Ci0JCX0KKwkgICAgaWYgKHJlbW90ZV9saXN0X2xlbiAo
c29jay0+cmVtb3RlX2xpc3QpID4gMSAmJiBzb2NrLT5yZXNvbHZlX3JldHJ5X3NlY29uZHMgPT0g
UkVTT0xWX1JFVFJZX0lORklOSVRFKQorCSAgICB7CisJICAgICAgaWYgKHBoYXNlID09IDIpCisJ
CWZsYWdzIHw9IChHRVRBRERSX1RSWV9PTkNFIHwgR0VUQUREUl9GQVRBTCk7CisJICAgICAgcmV0
cnkgPSAwOworCSAgICB9CisJICAgIGVsc2UgaWYgKHBoYXNlID09IDEpCisJICAgIHsKKwkgICAg
ICBpZiAoc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzKQorCSAgICAgIHsKKwkJcmV0cnkgPSAw
OworCSAgICAgIH0KIAkgICAgICBlbHNlCi0JCXsKLQkJICBBU1NFUlQgKDApOwotCQl9Ci0KLQkg
ICAgICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNhLnNpbl9hZGRyLnNfYWRkciA9IGdldGFkZHIg
KAotCQkgICAgZmxhZ3MsCi0JCSAgICBzb2NrLT5yZW1vdGVfaG9zdCwKLQkJICAgIHJldHJ5LAot
CQkgICAgJnN0YXR1cywKLQkJICAgIHNpZ25hbF9yZWNlaXZlZCk7Ci0JICAgICAgCi0JICAgICAg
ZG1zZyAoRF9TT0NLRVRfREVCVUcsICJSRVNPTFZFX1JFTU9URSBmbGFncz0weCUwNHggcGhhc2U9
JWQgcnJzPSVkIHNpZz0lZCBzdGF0dXM9JWQiLAotCQkgICBmbGFncywKLQkJICAgcGhhc2UsCi0J
CSAgIHJldHJ5LAotCQkgICBzaWduYWxfcmVjZWl2ZWQgPyAqc2lnbmFsX3JlY2VpdmVkIDogLTEs
Ci0JCSAgIHN0YXR1cyk7CisJICAgICAgeworCQlmbGFncyB8PSAoR0VUQUREUl9GQVRBTCB8IEdF
VEFERFJfTUVOVElPTl9SRVNPTFZFX1JFVFJZKTsKKwkJcmV0cnkgPSAwOworCSAgICAgIH0KKwkg
ICAgfQorCSAgICBlbHNlIGlmIChwaGFzZSA9PSAyKQorCSAgICB7CisJICAgICAgaWYgKHNvY2st
PnJlc29sdmVfcmV0cnlfc2Vjb25kcykKKwkgICAgICB7CisJCWZsYWdzIHw9IEdFVEFERFJfRkFU
QUw7CisJCXJldHJ5ID0gc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzOworCSAgICAgIH0KKwkg
ICAgICBlbHNlCisJICAgICAgeworCQlBU1NFUlQgKDApOworCSAgICAgIH0KKwkgICAgfQorCSAg
ICBlbHNlCisJICAgIHsKKwkgICAgICBBU1NFUlQgKDApOworCSAgICB9CiAKKwkgICAgc29jay0+
aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBnZXRhZGRyICgKKwkJ
ZmxhZ3MsCisJCXNvY2stPnJlbW90ZV9ob3N0LAorCQlyZXRyeSwKKwkJJnN0YXR1cywKKwkJc2ln
bmFsX3JlY2VpdmVkKTsKKworCSAgICBkbXNnIChEX1NPQ0tFVF9ERUJVRywgIlJFU09MVkVfUkVN
T1RFIGZsYWdzPTB4JTA0eCBwaGFzZT0lZCBycnM9JWQgc2lnPSVkIHN0YXR1cz0lZCIsCisJCWZs
YWdzLAorCQlwaGFzZSwKKwkJcmV0cnksCisJCXNpZ25hbF9yZWNlaXZlZCA/ICpzaWduYWxfcmVj
ZWl2ZWQgOiAtMSwKKwkJc3RhdHVzKTsKKworCSAgICBpZiAoc2lnbmFsX3JlY2VpdmVkKQorCSAg
ICB7CisJICAgICAgaWYgKCpzaWduYWxfcmVjZWl2ZWQpCisJCWdvdG8gZG9uZTsKKwkgICAgfQor
CSAgICBpZiAoIXN0YXR1cykKKwkgICAgewogCSAgICAgIGlmIChzaWduYWxfcmVjZWl2ZWQpCi0J
CXsKLQkJICBpZiAoKnNpZ25hbF9yZWNlaXZlZCkKLQkJICAgIGdvdG8gZG9uZTsKLQkJfQotCSAg
ICAgIGlmICghc3RhdHVzKQotCQl7Ci0JCSAgaWYgKHNpZ25hbF9yZWNlaXZlZCkKLQkJICAgICpz
aWduYWxfcmVjZWl2ZWQgPSBTSUdVU1IxOwotCQkgIGdvdG8gZG9uZTsKLQkJfQorCQkqc2lnbmFs
X3JlY2VpdmVkID0gU0lHVVNSMTsKKwkgICAgICBnb3RvIGRvbmU7CiAJICAgIH0KKwkgIH0KIAot
CSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zYS5zaW5fcG9ydCA9IGh0b25zIChzb2NrLT5yZW1v
dGVfcG9ydCk7Ci0JfQotICAKLSAgICAgIC8qIHNob3VsZCB3ZSByZS11c2UgcHJldmlvdXMgYWN0
aXZlIHJlbW90ZSBhZGRyZXNzPyAqLwotICAgICAgaWYgKGxpbmtfc29ja2V0X2FjdHVhbF9kZWZp
bmVkICgmc29jay0+aW5mby5sc2EtPmFjdHVhbCkpCi0JewotCSAgbXNnIChNX0lORk8sICJUQ1Av
VURQOiBQcmVzZXJ2aW5nIHJlY2VudGx5IHVzZWQgcmVtb3RlIGFkZHJlc3M6ICVzIiwKLQkgICAg
ICAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsICgmc29jay0+aW5mby5sc2EtPmFjdHVhbCwgJmdj
KSk7Ci0JICBpZiAocmVtb3RlX2R5bmFtaWMpCi0JICAgICpyZW1vdGVfZHluYW1pYyA9IE5VTEw7
Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIENMRUFSIChzb2NrLT5pbmZvLmxzYS0+YWN0dWFsKTsK
LQkgIHNvY2stPmluZm8ubHNhLT5hY3R1YWwuZGVzdCA9IHNvY2stPmluZm8ubHNhLT5yZW1vdGU7
Ci0JfQorCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNC5zaW5fcG9ydCA9IGh0b25z
IChzb2NrLT5yZW1vdGVfcG9ydCk7CisJICBicmVhazsKIAotICAgICAgLyogcmVtZW1iZXIgdGhh
dCB3ZSBmaW5pc2hlZCAqLwotICAgICAgc29jay0+ZGlkX3Jlc29sdmVfcmVtb3RlID0gdHJ1ZTsK
KyNpZmRlZiBVU0VfUEZfSU5FVDYKKwljYXNlIEFGX0lORVQ2OiAvKiBqam9GSVhNRTogaXB2NiBz
aWduYWwgbG9naWMgKi8KKwkgIHsKKwkgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzICwgKmFpOwor
CSAgICBpbnQgZXJyOworCSAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YgaGludHMpOworCSAg
ICBoaW50cy5haV9mbGFncz0wOworCSAgICBoaW50cy5haV9mYW1pbHk9QUZfSU5FVDY7CisJICAg
IGlmICgoZXJyPWdldGFkZHJpbmZvKHNvY2stPnJlbW90ZV9ob3N0PyBzb2NrLT5yZW1vdGVfaG9z
dCA6ICI6OiIgLCBOVUxMLCAmaGludHMsICZhaSkpPT0wKSB7CisJICAgICAgc29jay0+aW5mby5s
c2EtPnJlbW90ZS5hZGRyLmluNiA9ICooKHN0cnVjdCBzb2NrYWRkcl9pbjYqKShhaS0+YWlfYWRk
cikpOworCSAgICAgIGZyZWVhZGRyaW5mbyhhaSk7CisJICAgIH0gZWxzZSB7CisJICAgICAgbXNn
IChNX0ZBVEFMLCAiZ2V0YWRkcmluZm8oKSBmYWlsZWQgZm9yIHJlbW90ZSBcIiVzXCI6ICVzIiwK
KwkJICBzb2NrLT5yZW1vdGVfaG9zdCwKKwkJICBnYWlfc3RyZXJyb3IoZXJyKSk7CisJICAgIH0K
KwkgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNi5zaW42X3BvcnQgPSBodG9ucyAo
c29jay0+cmVtb3RlX3BvcnQpOworCSAgfQorCSAgYnJlYWs7CisjZW5kaWYKKyAgICAgIH0KKyAg
ICB9CisgICAgLyogc2hvdWxkIHdlIHJlLXVzZSBwcmV2aW91cyBhY3RpdmUgcmVtb3RlIGFkZHJl
c3M/ICovCisgICAgaWYgKGxpbmtfc29ja2V0X2FjdHVhbF9kZWZpbmVkICgmc29jay0+aW5mby5s
c2EtPmFjdHVhbCkpCisgICAgeworICAgICAgbXNnIChNX0lORk8sICJUQ1AvVURQOiBQcmVzZXJ2
aW5nIHJlY2VudGx5IHVzZWQgcmVtb3RlIGFkZHJlc3M6ICVzIiwKKwkgIHByaW50X2xpbmtfc29j
a2V0X2FjdHVhbCAoJnNvY2stPmluZm8ubHNhLT5hY3R1YWwsICZnYykpOworICAgICAgaWYgKHJl
bW90ZV9keW5hbWljKQorCSpyZW1vdGVfZHluYW1pYyA9IE5VTEw7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICBDTEVBUiAoc29jay0+aW5mby5sc2EtPmFjdHVhbCk7CisgICAgICBzb2Nr
LT5pbmZvLmxzYS0+YWN0dWFsLmRlc3QgPSBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlOwogICAgIH0K
IAotIGRvbmU6CisgICAgLyogcmVtZW1iZXIgdGhhdCB3ZSBmaW5pc2hlZCAqLworICAgIHNvY2st
PmRpZF9yZXNvbHZlX3JlbW90ZSA9IHRydWU7CisgIH0KKworZG9uZToKICAgZ2NfZnJlZSAoJmdj
KTsKIH0KIApAQCAtMTMxMCw3ICsxNDc0LDExIEBAIGxpbmtfc29ja2V0X2luaXRfcGhhc2UyIChz
dHJ1Y3QgbGlua19zb2MKIAlnb3RvIGRvbmU7CiAKICAgICAgIC8qIFRDUCBjbGllbnQvc2VydmVy
ICovCi0gICAgICBpZiAoc29jay0+aW5mby5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIpCisg
ICAgICBpZiAoc29jay0+aW5mby5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIKKyNpZmRlZiBV
U0VfUEZfSU5FVDYKKwl8fHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjZfU0VSVkVSCisj
ZW5kaWYKKwkpCiAJewogCSAgc3dpdGNoIChzb2NrLT5tb2RlKQogCSAgICB7CkBAIC0xMzQ1LDcg
KzE1MTMsMTEgQEAgbGlua19zb2NrZXRfaW5pdF9waGFzZTIgKHN0cnVjdCBsaW5rX3NvYwogCSAg
ICAgIEFTU0VSVCAoMCk7CiAJICAgIH0KIAl9Ci0gICAgICBlbHNlIGlmIChzb2NrLT5pbmZvLnBy
b3RvID09IFBST1RPX1RDUHY0X0NMSUVOVCkKKyAgICAgIGVsc2UgaWYgKHNvY2stPmluZm8ucHJv
dG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UCisjaWZkZWYgVVNFX1BGX0lORVQ2CisJfHxzb2NrLT5p
bmZvLnByb3RvID09IFBST1RPX1RDUHY2X0NMSUVOVAorI2VuZGlmCisJKQogCXsKIAogI2lmZGVm
IEdFTkVSQUxfUFJPWFlfU1VQUE9SVApAQCAtMTQzMCw4ICsxNjAyLDggQEAgI2lmZGVmIEVOQUJM
RV9TT0NLUwogCSAgc29jay0+cmVtb3RlX3BvcnQgPSBzb2NrLT5wcm94eV9kZXN0X3BvcnQ7CiAJ
ICBzb2NrLT5kaWRfcmVzb2x2ZV9yZW1vdGUgPSBmYWxzZTsKIAotCSAgc29jay0+aW5mby5sc2Et
PmFjdHVhbC5kZXN0LnNhLnNpbl9hZGRyLnNfYWRkciA9IDA7Ci0JICBzb2NrLT5pbmZvLmxzYS0+
cmVtb3RlLnNhLnNpbl9hZGRyLnNfYWRkciA9IDA7CisJICBhZGRyX3plcm9faG9zdCgmc29jay0+
aW5mby5sc2EtPmFjdHVhbC5kZXN0KTsKKwkgIGFkZHJfemVyb19ob3N0KCZzb2NrLT5pbmZvLmxz
YS0+cmVtb3RlKTsKIAogCSAgcmVzb2x2ZV9yZW1vdGUgKHNvY2ssIDEsIE5VTEwsIHNpZ25hbF9y
ZWNlaXZlZCk7CiAKQEAgLTE0NDYsNyArMTYxOCw3IEBAICNlbmRpZgogICAgICAgaWYgKHJlbW90
ZV9jaGFuZ2VkKQogCXsKIAkgIG1zZyAoTV9JTkZPLCAiVENQL1VEUDogRHluYW1pYyByZW1vdGUg
YWRkcmVzcyBjaGFuZ2VkIGR1cmluZyBUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Iik7Ci0J
ICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNhLnNpbl9hZGRyLnNfYWRkciA9IHNvY2stPmluZm8u
bHNhLT5hY3R1YWwuZGVzdC5zYS5zaW5fYWRkci5zX2FkZHI7CisJICBhZGRyX2NvcHlfaG9zdCgm
c29jay0+aW5mby5sc2EtPnJlbW90ZSwgJnNvY2stPmluZm8ubHNhLT5hY3R1YWwuZGVzdCk7CiAJ
fQogICAgIH0KIApAQCAtMTYxOCwxMyArMTc5MCwyMCBAQCBsaW5rX3NvY2tldF9iYWRfaW5jb21p
bmdfYWRkciAoc3RydWN0IGJ1CiB7CiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsK
IAotICBtc2cgKERfTElOS19FUlJPUlMsCi0gICAgICAgIlRDUC9VRFA6IEluY29taW5nIHBhY2tl
dCByZWplY3RlZCBmcm9tICVzWyVkXSwgZXhwZWN0ZWQgcGVlciBhZGRyZXNzOiAlcyAoYWxsb3cg
dGhpcyBpbmNvbWluZyBzb3VyY2UgYWRkcmVzcy9wb3J0IGJ5IHJlbW92aW5nIC0tcmVtb3RlIG9y
IGFkZGluZyAtLWZsb2F0KSIsCi0gICAgICAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsIChmcm9t
X2FkZHIsICZnYyksCi0gICAgICAgKGludClmcm9tX2FkZHItPmRlc3Quc2Euc2luX2ZhbWlseSwK
LSAgICAgICBwcmludF9zb2NrYWRkciAoJmluZm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgc3dp
dGNoKGZyb21fYWRkci0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkKKyAgeworICAgIGNhc2UgQUZf
SU5FVDoKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OgorI2VuZGlmCisg
ICAgICBtc2cgKERfTElOS19FUlJPUlMsCisJICAiVENQL1VEUDogSW5jb21pbmcgcGFja2V0IHJl
amVjdGVkIGZyb20gJXNbJWRdLCBleHBlY3RlZCBwZWVyIGFkZHJlc3M6ICVzIChhbGxvdyB0aGlz
IGluY29taW5nIHNvdXJjZSBhZGRyZXNzL3BvcnQgYnkgcmVtb3ZpbmcgLS1yZW1vdGUgb3IgYWRk
aW5nIC0tZmxvYXQpIiwKKwkgIHByaW50X2xpbmtfc29ja2V0X2FjdHVhbCAoZnJvbV9hZGRyLCAm
Z2MpLAorCSAgKGludClmcm9tX2FkZHItPmRlc3QuYWRkci5zYS5zYV9mYW1pbHksCisJICBwcmlu
dF9zb2NrYWRkciAoJmluZm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgICAgIGJyZWFrOworICB9
CiAgIGJ1Zi0+bGVuID0gMDsKLQogICBnY19mcmVlICgmZ2MpOwogfQogCkBAIC0xNjM5LDEwICsx
ODE4LDI1IEBAIGxpbmtfc29ja2V0X2N1cnJlbnRfcmVtb3RlIChjb25zdCBzdHJ1Y3QKIHsKICAg
Y29uc3Qgc3RydWN0IGxpbmtfc29ja2V0X2FkZHIgKmxzYSA9IGluZm8tPmxzYTsKIAorLyogCisg
KiBUaGlzIGxvZ2ljIHN1cHBvcnRzICJyZWRpcmVjdC1nYXRld2F5IiBzZW1hbnRpYywgd2hpY2gg
CisgKiBtYWtlcyBzZW5zZSBvbmx5IGZvciBQRl9JTkVUIHJvdXRlcyBvdmVyIFBGX0lORVQgZW5k
cG9pbnRzCisgKgorICogTWF5YmUgaW4gdGhlIGZ1dHVyZSBjb25zaWRlciBQRl9JTkVUNiBlbmRw
b2ludHMgYWxzbyAuLi4KKyAqIGJ5IG5vdyBqdXN0IGlnbm9yZSBpdAorICoKKyAqLworI2lmIGRl
ZmluZWQgKCBVU0VfUEZfSU5FVDYgKQorICBpZihsc2EtPmFjdHVhbC5kZXN0LmFkZHIuc2Euc2Ff
ZmFtaWx5ICE9IEFGX0lORVQpCisJICByZXR1cm4gMDsKKyNlbHNlCisgIEFTU0VSVChsc2EtPmFj
dHVhbC5kZXN0LmFkZHIuc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpOworI2VuZGlmCisKICAgaWYg
KGxpbmtfc29ja2V0X2FjdHVhbF9kZWZpbmVkICgmbHNhLT5hY3R1YWwpKQotICAgIHJldHVybiBu
dG9obCAobHNhLT5hY3R1YWwuZGVzdC5zYS5zaW5fYWRkci5zX2FkZHIpOworICAgIHJldHVybiBu
dG9obCAobHNhLT5hY3R1YWwuZGVzdC5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIpOwogICBlbHNl
IGlmIChhZGRyX2RlZmluZWQgKCZsc2EtPnJlbW90ZSkpCi0gICAgcmV0dXJuIG50b2hsIChsc2Et
PnJlbW90ZS5zYS5zaW5fYWRkci5zX2FkZHIpOworICAgIHJldHVybiBudG9obCAobHNhLT5yZW1v
dGUuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyKTsKICAgZWxzZQogICAgIHJldHVybiAwOwogfQpA
QCAtMTg2OSwyNyArMjA2Myw1OCBAQCBwcmludF9zb2NrYWRkcl9leCAoY29uc3Qgc3RydWN0IG9w
ZW52cG5fCiAJCSAgIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywKIAkJICAgc3RydWN0IGdjX2Fy
ZW5hICpnYykKIHsKLSAgaWYgKGFkZHIpCi0gICAgewotICAgICAgc3RydWN0IGJ1ZmZlciBvdXQg
PSBhbGxvY19idWZfZ2MgKDY0LCBnYyk7Ci0gICAgICBjb25zdCBpbnQgcG9ydCA9IG50b2hzIChh
ZGRyLT5zYS5zaW5fcG9ydCk7Ci0KLSAgICAgIG11dGV4X2xvY2tfc3RhdGljIChMX0lORVRfTlRP
QSk7Ci0gICAgICBidWZfcHJpbnRmICgmb3V0LCAiJXMiLCAoYWRkcl9kZWZpbmVkIChhZGRyKSA/
IGluZXRfbnRvYSAoYWRkci0+c2Euc2luX2FkZHIpIDogIlt1bmRlZl0iKSk7Ci0gICAgICBtdXRl
eF91bmxvY2tfc3RhdGljIChMX0lORVRfTlRPQSk7Ci0KLSAgICAgIGlmICgoKGZsYWdzICYgUFNf
U0hPV19QT1JUKSB8fCAoYWRkcl9kZWZpbmVkIChhZGRyKSAmJiAoZmxhZ3MgJiBQU19TSE9XX1BP
UlRfSUZfREVGSU5FRCkpKQotCSAgJiYgcG9ydCkKKyAgc3RydWN0IGJ1ZmZlciBvdXQ7CisgIGJv
b2wgYWRkcl9pc19kZWZpbmVkOworICBpZiAoIWFkZHIpIHsKKyAgICByZXR1cm4gIltOVUxMXSI7
CisgIH0KKyAgYWRkcl9pc19kZWZpbmVkID0gIGFkZHJfZGVmaW5lZCAoYWRkcik7CisgIHN3aXRj
aChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgIHsK
Kwljb25zdCBpbnQgcG9ydD0gbnRvaHMgKGFkZHItPmFkZHIuaW40LnNpbl9wb3J0KTsKKwlvdXQg
PSBhbGxvY19idWZfZ2MgKDEyOCwgZ2MpOworCWJ1Zl9wdXRzICgmb3V0LCAiW0FGX0lORVRdIik7
CisJbXV0ZXhfbG9ja19zdGF0aWMgKExfSU5FVF9OVE9BKTsKKwlidWZfcHV0cyAoJm91dCwgKGFk
ZHJfaXNfZGVmaW5lZCA/IGluZXRfbnRvYSAoYWRkci0+YWRkci5pbjQuc2luX2FkZHIpIDogIlt1
bmRlZl0iKSk7CisJbXV0ZXhfdW5sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOworCisJaWYgKCgo
ZmxhZ3MgJiBQU19TSE9XX1BPUlQpIHx8IChhZGRyX2lzX2RlZmluZWQgJiYgKGZsYWdzICYgUFNf
U0hPV19QT1JUX0lGX0RFRklORUQpKSkKKwkgICAgJiYgcG9ydCkKIAl7CiAJICBpZiAoc2VwYXJh
dG9yKQogCSAgICBidWZfcHJpbnRmICgmb3V0LCAiJXMiLCBzZXBhcmF0b3IpOwogCiAJICBidWZf
cHJpbnRmICgmb3V0LCAiJWQiLCBwb3J0KTsKIAl9Ci0gICAgICByZXR1cm4gQlNUUiAoJm91dCk7
Ci0gICAgfQotICBlbHNlCi0gICAgcmV0dXJuICJbTlVMTF0iOworICAgICAgfQorICAgICAgYnJl
YWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHsKKwlj
b25zdCBpbnQgcG9ydD0gbnRvaHMgKGFkZHItPmFkZHIuaW42LnNpbjZfcG9ydCk7CisJY2hhciBi
dWZbSU5FVDZfQUREUlNUUkxFTl0gPSAiW3VuZGVmXSI7CisJb3V0ID0gYWxsb2NfYnVmX2djICgx
MjgsIGdjKTsKKwlidWZfcHV0cyAoJm91dCwgIltBRl9JTkVUNl0iKTsKKwlpZiAoYWRkcl9pc19k
ZWZpbmVkKQorCXsKKwkgIGdldG5hbWVpbmZvKCZhZGRyLT5hZGRyLnNhLCBzaXplb2YgKHN0cnVj
dCBzb2NrYWRkcl9pbjYpLAorCSAgICAgIGJ1Ziwgc2l6ZW9mIChidWYpLCBOVUxMLCAwLCBOSV9O
VU1FUklDSE9TVCk7CisJICBidWZfcHV0cyAoJm91dCwgYnVmKTsKKwl9CisJaWYgKCgoZmxhZ3Mg
JiBQU19TSE9XX1BPUlQpIHx8IChhZGRyX2lzX2RlZmluZWQgJiYgKGZsYWdzICYgUFNfU0hPV19Q
T1JUX0lGX0RFRklORUQpKSkKKwkgICAgJiYgcG9ydCkKKwl7CisJICBpZiAoc2VwYXJhdG9yKQor
CSAgICBidWZfcHV0cyAoJm91dCwgc2VwYXJhdG9yKTsKKworCSAgYnVmX3ByaW50ZiAoJm91dCwg
IiVkIiwgcG9ydCk7CisJfQorICAgICAgfQorICAgICAgYnJlYWs7CisjZW5kaWYKKyAgfQorICAg
cmV0dXJuIEJTVFIgKCZvdXQpOwogfQogCiBjb25zdCBjaGFyICoKQEAgLTE5MDksMTIgKzIxMzQs
MzggQEAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsX2V4IChjb25zdCBzdHJ1YwogICAgICAgc3Ry
dWN0IGJ1ZmZlciBvdXQgPSBhbGxvY19idWZfZ2MgKDEyOCwgZ2MpOwogICAgICAgYnVmX3ByaW50
ZiAoJm91dCwgIiVzIiwgcHJpbnRfc29ja2FkZHJfZXggKCZhY3QtPmRlc3QsIHNlcGFyYXRvciwg
ZmxhZ3MsIGdjKSk7CiAjaWYgRU5BQkxFX0lQX1BLVElORk8KLSAgICAgIGlmICgoZmxhZ3MgJiBQ
U19TSE9XX1BLVElORk8pICYmIGFjdC0+cGkuaXBpX3NwZWNfZHN0LnNfYWRkcikKKyAgICAgIGlm
ICgoZmxhZ3MgJiBQU19TSE9XX1BLVElORk8pICYmIGFkZHJfZGVmaW5lZF9pcGkoYWN0KSkKIAl7
CisJICBzd2l0Y2goYWN0LT5kZXN0LmFkZHIuc2Euc2FfZmFtaWx5KQorCSAgeworCWNhc2UgQUZf
SU5FVDoKKwkgIHsKIAkgIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyIHNhOwogCSAgQ0xFQVIgKHNh
KTsKLQkgIHNhLnNhLnNpbl9hZGRyID0gYWN0LT5waS5pcGlfc3BlY19kc3Q7CisJICBzYS5hZGRy
LmluNC5zaW5fYWRkciA9IGFjdC0+cGkuaW40LmlwaV9zcGVjX2RzdDsKIAkgIGJ1Zl9wcmludGYg
KCZvdXQsICIgKHZpYSAlcykiLCBwcmludF9zb2NrYWRkcl9leCAoJnNhLCBzZXBhcmF0b3IsIDAs
IGdjKSk7CisJICB9CisJICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKwljYXNlIEFGX0lO
RVQ2OgorCSAgeworCSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjY7CisJICAgIGNoYXIgYnVm
W0lORVQ2X0FERFJTVFJMRU5dID0gIlt1bmRlZl0iOworCSAgICBtZW1zZXQoJnNpbjYsIDAsIHNp
emVvZiBzaW42KTsKKwkgICAgc2luNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworCSAgICBzaW42
LnNpbjZfYWRkciA9IGFjdC0+cGkuaW42LmlwaTZfYWRkcjsKKwkgICAgeworCSAgICAgIGlmIChn
ZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJnNpbjYsIHNpemVvZiAoc3RydWN0IHNvY2th
ZGRyX2luNiksCisJCSAgICBidWYsIHNpemVvZiAoYnVmKSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hP
U1QpID09IDApCisJCWJ1Zl9wcmludGYgKCZvdXQsICIgKHZpYSAlcykiLCBidWYpOworCSAgICAg
IGVsc2UKKwkJYnVmX3ByaW50ZiAoJm91dCwgIiAodmlhIFtnZXRuYW1laW5mbygpIGVycl0pIik7
CisJICAgIH0KKwkgIH0KKwkgIGJyZWFrOworI2VuZGlmCisJICB9CisKIAl9CiAjZW5kaWYKICAg
ICAgIHJldHVybiBCU1RSICgmb3V0KTsKQEAgLTE5NTAsMjEgKzIyMDEsMzcgQEAgdm9pZAogc2V0
ZW52X3NvY2thZGRyIChzdHJ1Y3QgZW52X3NldCAqZXMsIGNvbnN0IGNoYXIgKm5hbWVfcHJlZml4
LCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYWRkciwgY29uc3QgYm9vbCBmbGFncykK
IHsKICAgY2hhciBuYW1lX2J1ZlsyNTZdOworICBjaGFyIGJ1ZlsxMjhdOwogCi0gIGlmIChmbGFn
cyAmIFNBX0lQX1BPUlQpCi0gICAgb3BlbnZwbl9zbnByaW50ZiAobmFtZV9idWYsIHNpemVvZiAo
bmFtZV9idWYpLCAiJXNfaXAiLCBuYW1lX3ByZWZpeCk7Ci0gIGVsc2UKLSAgICBvcGVudnBuX3Nu
cHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlcyIsIG5hbWVfcHJlZml4KTsK
KyAgc3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOgor
ICAgICAgaWYgKGZsYWdzICYgU0FfSVBfUE9SVCkKKwlvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1
Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlc19pcCIsIG5hbWVfcHJlZml4KTsKKyAgICAgIGVsc2UK
KwlvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlcyIsIG5h
bWVfcHJlZml4KTsKIAotICBtdXRleF9sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOwotICBzZXRl
bnZfc3RyIChlcywgbmFtZV9idWYsIGluZXRfbnRvYSAoYWRkci0+c2Euc2luX2FkZHIpKTsKLSAg
bXV0ZXhfdW5sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOworICAgICAgbXV0ZXhfbG9ja19zdGF0
aWMgKExfSU5FVF9OVE9BKTsKKyAgICAgIHNldGVudl9zdHIgKGVzLCBuYW1lX2J1ZiwgaW5ldF9u
dG9hIChhZGRyLT5hZGRyLmluNC5zaW5fYWRkcikpOworICAgICAgbXV0ZXhfdW5sb2NrX3N0YXRp
YyAoTF9JTkVUX05UT0EpOworCisgICAgICBpZiAoKGZsYWdzICYgU0FfSVBfUE9SVCkgJiYgYWRk
ci0+YWRkci5pbjQuc2luX3BvcnQpCisgICAgICB7CisJb3BlbnZwbl9zbnByaW50ZiAobmFtZV9i
dWYsIHNpemVvZiAobmFtZV9idWYpLCAiJXNfcG9ydCIsIG5hbWVfcHJlZml4KTsKKwlzZXRlbnZf
aW50IChlcywgbmFtZV9idWYsIG50b2hzIChhZGRyLT5hZGRyLmluNC5zaW5fcG9ydCkpOworICAg
ICAgfQorICAgICAgYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVU
NjoKKyAgICAgIG9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBzaXplb2YgKG5hbWVfYnVmKSwg
IiVzX2lwNiIsIG5hbWVfcHJlZml4KTsKKyAgICAgIGdldG5hbWVpbmZvKCZhZGRyLT5hZGRyLnNh
LCBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorCSAgYnVmLCBzaXplb2YoYnVmKSwgTlVM
TCwgMCwgTklfTlVNRVJJQ0hPU1QpOworICAgICAgc2V0ZW52X3N0ciAoZXMsIG5hbWVfYnVmLCBi
dWYpOwogCi0gIGlmICgoZmxhZ3MgJiBTQV9JUF9QT1JUKSAmJiBhZGRyLT5zYS5zaW5fcG9ydCkK
LSAgICB7CiAgICAgICBvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1
ZiksICIlc19wb3J0IiwgbmFtZV9wcmVmaXgpOwotICAgICAgc2V0ZW52X2ludCAoZXMsIG5hbWVf
YnVmLCBudG9ocyAoYWRkci0+c2Euc2luX3BvcnQpKTsKLSAgICB9CisgICAgICBzZXRlbnZfaW50
IChlcywgbmFtZV9idWYsIG50b2hzIChhZGRyLT5hZGRyLmluNi5zaW42X3BvcnQpKTsKKyAgICAg
IGJyZWFrOworI2VuZGlmCisgIH0KIH0KIAogdm9pZApAQCAtMTk3NCw3ICsyMjQxLDggQEAgc2V0
ZW52X2luX2FkZHJfdCAoc3RydWN0IGVudl9zZXQgKmVzLCBjbwogICAgIHsKICAgICAgIHN0cnVj
dCBvcGVudnBuX3NvY2thZGRyIHNpOwogICAgICAgQ0xFQVIgKHNpKTsKLSAgICAgIHNpLnNhLnNp
bl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRyKTsKKyAgICAgIHNpLmFkZHIuaW40LnNpbl9mYW1p
bHkgPSBBRl9JTkVUOworICAgICAgc2kuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwg
KGFkZHIpOwogICAgICAgc2V0ZW52X3NvY2thZGRyIChlcywgbmFtZV9wcmVmaXgsICZzaSwgZmxh
Z3MpOwogICAgIH0KIH0KQEAgLTE5OTUsMTYgKzIyNjMsNjMgQEAgc2V0ZW52X2xpbmtfc29ja2V0
X2FjdHVhbCAoc3RydWN0IGVudl9zZQogc3RydWN0IHByb3RvX25hbWVzIHsKICAgY29uc3QgY2hh
ciAqc2hvcnRfZm9ybTsKICAgY29uc3QgY2hhciAqZGlzcGxheV9mb3JtOworICBib29sCWlzX2Rn
cmFtOworICBib29sCWlzX25ldDsKKyAgc2FfZmFtaWx5X3QgcHJvdG9fYWY7CiB9OwogCiAvKiBJ
bmRleGVkIGJ5IFBST1RPX3ggKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fbmFtZXMgcHJv
dG9fbmFtZXNbXSA9IHsKLSAgeyJ1ZHAiLCAgICAgICAgIlVEUHY0In0sCi0gIHsidGNwLXNlcnZl
ciIsICJUQ1B2NF9TRVJWRVIifSwKLSAgeyJ0Y3AtY2xpZW50IiwgIlRDUHY0X0NMSUVOVCJ9LAot
ICB7InRjcCIsICAgICAgICAiVENQdjQifQorc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19uYW1l
cyBwcm90b19uYW1lc1tQUk9UT19OXSA9IHsKKyAgeyJwcm90by11bmluaXRpYWxpemVkIiwgICAg
ICAgICJwcm90by1OT05FIiwwLDAsIEFGX1VOU1BFQ30sCisgIHsidWRwIiwgICAgICAgICJVRFB2
NCIsMSwxLCBBRl9JTkVUfSwKKyAgeyJ0Y3Atc2VydmVyIiwgIlRDUHY0X1NFUlZFUiIsMCwxLCBB
Rl9JTkVUfSwKKyAgeyJ0Y3AtY2xpZW50IiwgIlRDUHY0X0NMSUVOVCIsMCwxLCBBRl9JTkVUfSwK
KyAgeyJ0Y3AiLCAgICAgICAgIlRDUHY0IiwwLDEsIEFGX0lORVR9LAorI2lmZGVmIFVTRV9QRl9J
TkVUNgorICB7InVkcDYiICAgICAgICwiVURQdjYiLDEsMSwgQUZfSU5FVDZ9LAorICB7InRjcDYt
c2VydmVyIiwiVENQdjZfU0VSVkVSIiwwLDEsIEFGX0lORVQ2fSwKKyAgeyJ0Y3A2LWNsaWVudCIs
IlRDUHY2X0NMSUVOVCIsMCwxLCBBRl9JTkVUNn0sCisgIHsidGNwNiIgICAgICAgLCJUQ1B2NiIs
MCwxLCBBRl9JTkVUNn0sCisjZW5kaWYKIH07CiAKK2Jvb2wKK3Byb3RvX2lzX25ldChpbnQgcHJv
dG8pCit7CisgIGlmIChwcm90byA8IDAgfHwgcHJvdG8gPj0gUFJPVE9fTikKKyAgICBBU1NFUlQo
MCk7CisgIHJldHVybiBwcm90b19uYW1lc1twcm90b10uaXNfbmV0OworfQorYm9vbAorcHJvdG9f
aXNfZGdyYW0oaW50IHByb3RvKQoreworICBpZiAocHJvdG8gPCAwIHx8IHByb3RvID49IFBST1RP
X04pCisgICAgQVNTRVJUKDApOworICByZXR1cm4gcHJvdG9fbmFtZXNbcHJvdG9dLmlzX2RncmFt
OworfQorYm9vbAorcHJvdG9faXNfdWRwKGludCBwcm90bykKK3sKKyAgaWYgKHByb3RvIDwgMCB8
fCBwcm90byA+PSBQUk9UT19OKQorICAgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIHByb3RvX25hbWVz
W3Byb3RvXS5pc19kZ3JhbSYmcHJvdG9fbmFtZXNbcHJvdG9dLmlzX25ldDsKK30KK2Jvb2wKK3By
b3RvX2lzX3RjcChpbnQgcHJvdG8pCit7CisgIGlmIChwcm90byA8IDAgfHwgcHJvdG8gPj0gUFJP
VE9fTikKKyAgICBBU1NFUlQoMCk7CisgIHJldHVybiAoIXByb3RvX25hbWVzW3Byb3RvXS5pc19k
Z3JhbSkmJnByb3RvX25hbWVzW3Byb3RvXS5pc19uZXQ7Cit9CisKK3NhX2ZhbWlseV90IAorcHJv
dG9fc2FfZmFtaWx5KGludCBwcm90bykKK3sKKyAgaWYgKHByb3RvIDwgMCB8fCBwcm90byA+PSBQ
Uk9UT19OKQorICAgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIHByb3RvX25hbWVzW3Byb3RvXS5wcm90
b19hZjsKK30KKwogaW50CiBhc2NpaTJwcm90byAoY29uc3QgY2hhciogcHJvdG9fbmFtZSkKIHsK
QEAgLTIwNDQsNiArMjM1OSw0NiBAQCBwcm90bzJhc2NpaV9hbGwgKHN0cnVjdCBnY19hcmVuYSAq
Z2MpCiAgIHJldHVybiBCU1RSICgmb3V0KTsKIH0KIAoraW50CithZGRyX2d1ZXNzX2ZhbWlseShp
bnQgcHJvdG8sIGNvbnN0IGNoYXIgKm5hbWUpIAoreworICBzYV9mYW1pbHlfdCByZXQ7CisgIGlm
IChwcm90bykgeworICAgIHJldHVybiBwcm90b19zYV9mYW1pbHkocHJvdG8pOwkvKiBhbHJlYWR5
IHN0YW1wZWQgKi8KKyAgfSAKKyNpZmRlZiBVU0VfUEZfVU5JWAorICBlbHNlIGlmIChuYW1lICYm
IG5hbWVbMF0gPT0gJy8nKSB7CisgICAgcmV0dXJuIEFGX1VOSVg7CisgIH0KKyNlbmRpZgorI2lm
ZGVmIFVTRV9QRl9JTkVUNgorICBlbHNlIHsKKyAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMgLCAq
YWk7CisgICAgaW50IGVycjsKKyAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YgaGludHMpOwor
ICAgIGhpbnRzLmFpX2ZsYWdzPUFJX05VTUVSSUNIT1NUOworICAgIGlmICgoZXJyPWdldGFkZHJp
bmZvKG5hbWUsIE5VTEwsICZoaW50cywgJmFpKSk9PTApIHsKKyAgICAgIHJldD1haS0+YWlfZmFt
aWx5OworICAgICAgZnJlZWFkZHJpbmZvKGFpKTsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQor
ICB9CisjZW5kaWYKKyAgcmV0dXJuIEFGX0lORVQ7CS8qIGRlZmF1bHQgKi8KK30KK2NvbnN0IGNo
YXIgKgorYWRkcl9mYW1pbHlfbmFtZSAoaW50IGFmKSAKK3sKKyAgc3dpdGNoIChhZikgeworICAg
IGNhc2UgQUZfSU5FVDogcmV0dXJuICJBRl9JTkVUIjsKKyAgICBjYXNlIEFGX0lORVQ2OiByZXR1
cm4gIkFGX0lORVQ2IjsKKyNpZmRlZiBVU0VfUEZfVU5JWAorICAgIGNhc2UgQUZfVU5JWDogcmV0
dXJuICJBRl9VTklYIjsKKyNlbmRpZgorICB9CisgIHJldHVybiAiQUZfVU5TUEVDIjsKK30KKwog
LyoKICAqIEdpdmVuIGEgbG9jYWwgcHJvdG8sIHJldHVybiBsb2NhbCBwcm90bwogICogaWYgIXJl
bW90ZSwgb3IgY29tcGF0aWJsZSByZW1vdGUgcHJvdG8KQEAgLTIwNTgsMTAgKzI0MTMsMTUgQEAg
cHJvdG9fcmVtb3RlIChpbnQgcHJvdG8sIGJvb2wgcmVtb3RlKQogICBBU1NFUlQgKHByb3RvID49
IDAgJiYgcHJvdG8gPCBQUk9UT19OKTsKICAgaWYgKHJlbW90ZSkKICAgICB7Ci0gICAgICBpZiAo
cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSKQotCXJldHVybiBQUk9UT19UQ1B2NF9DTElFTlQ7
Ci0gICAgICBpZiAocHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UKQotCXJldHVybiBQUk9UT19U
Q1B2NF9TRVJWRVI7CisgICAgICBzd2l0Y2ggKHByb3RvKQorICAgICAgeworCWNhc2UgUFJPVE9f
VENQdjRfU0VSVkVSOiByZXR1cm4gUFJPVE9fVENQdjRfQ0xJRU5UOworCWNhc2UgUFJPVE9fVENQ
djRfQ0xJRU5UOiByZXR1cm4gUFJPVE9fVENQdjRfU0VSVkVSOworI2lmZGVmIFVTRV9QRl9JTkVU
NgorCWNhc2UgUFJPVE9fVENQdjZfU0VSVkVSOiByZXR1cm4gUFJPVE9fVENQdjZfQ0xJRU5UOwor
CWNhc2UgUFJPVE9fVENQdjZfQ0xJRU5UOiByZXR1cm4gUFJPVE9fVENQdjZfU0VSVkVSOworI2Vu
ZGlmCisgICAgICB9CiAgICAgfQogICByZXR1cm4gcHJvdG87CiB9CkBAIC0yMTE5LDExICsyNDc5
LDI2IEBAICNpZm5kZWYgV0lOMzIKIAogI2lmIEVOQUJMRV9JUF9QS1RJTkZPCiAKLXN0cnVjdCBv
cGVudnBuX3BrdGluZm8KK3N0cnVjdCBvcGVudnBuX2luNF9wa3RpbmZvCiB7CiAgIHN0cnVjdCBj
bXNnaGRyIGNtc2doZHI7Ci0gIHN0cnVjdCBpbl9wa3RpbmZvIGluX3BrdGluZm87CisgIHN0cnVj
dCBpbl9wa3RpbmZvIHBpOwogfTsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKK3N0cnVjdCBvcGVudnBu
X2luNl9wa3RpbmZvCit7CisgIHN0cnVjdCBjbXNnaGRyIGNtc2doZHI7CisgIHN0cnVjdCBpbjZf
cGt0aW5mbyBwaTY7Cit9OworI2VuZGlmCisKK3VuaW9uIG9wZW52cG5fcGt0aW5mbyB7CisJc3Ry
dWN0IG9wZW52cG5faW40X3BrdGluZm8gY21zZ3BpOworI2lmZGVmIFVTRV9QRl9JTkVUNgorCXN0
cnVjdCBvcGVudnBuX2luNl9wa3RpbmZvIGNtc2dwaTY7CisjZW5kaWYKK307CisKIAogc3RhdGlj
IHNvY2tsZW5fdAogbGlua19zb2NrZXRfcmVhZF91ZHBfcG9zaXhfcmVjdm1zZyAoc3RydWN0IGxp
bmtfc29ja2V0ICpzb2NrLApAQCAtMjEzMiwxNSArMjUwNywxNSBAQCBsaW5rX3NvY2tldF9yZWFk
X3VkcF9wb3NpeF9yZWN2bXNnIChzdHJ1CiAJCQkJICAgIHN0cnVjdCBsaW5rX3NvY2tldF9hY3R1
YWwgKmZyb20pCiB7CiAgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0gIHN0cnVjdCBvcGVudnBuX3BrdGlu
Zm8gb3BpOworICB1bmlvbiBvcGVudnBuX3BrdGluZm8gb3BpOwogICBzdHJ1Y3QgbXNnaGRyIG1l
c2c7Ci0gIHNvY2tsZW5fdCBmcm9tbGVuID0gc2l6ZW9mIChmcm9tLT5kZXN0LnNhKTsKKyAgc29j
a2xlbl90IGZyb21sZW4gPSBzaXplb2YgKGZyb20tPmRlc3QuYWRkcik7CiAKICAgaW92Lmlvdl9i
YXNlID0gQlBUUiAoYnVmKTsKICAgaW92Lmlvdl9sZW4gPSBtYXhzaXplOwogICBtZXNnLm1zZ19p
b3YgPSAmaW92OwogICBtZXNnLm1zZ19pb3ZsZW4gPSAxOwotICBtZXNnLm1zZ19uYW1lID0gJmZy
b20tPmRlc3Quc2E7CisgIG1lc2cubXNnX25hbWUgPSAmZnJvbS0+ZGVzdC5hZGRyOwogICBtZXNn
Lm1zZ19uYW1lbGVuID0gZnJvbWxlbjsKICAgbWVzZy5tc2dfY29udHJvbCA9ICZvcGk7CiAgIG1l
c2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YgKG9waSk7CkBAIC0yMTU3LDkgKzI1MzIsMjEgQEAg
bGlua19zb2NrZXRfcmVhZF91ZHBfcG9zaXhfcmVjdm1zZyAoc3RydQogCSAgJiYgY21zZy0+Y21z
Z19sZW4gPj0gc2l6ZW9mIChvcGkpKQogCXsKIAkgIHN0cnVjdCBpbl9wa3RpbmZvICpwa3RpID0g
KHN0cnVjdCBpbl9wa3RpbmZvICopIENNU0dfREFUQSAoY21zZyk7Ci0JICBmcm9tLT5waS5pcGlf
aWZpbmRleCA9IHBrdGktPmlwaV9pZmluZGV4OwotCSAgZnJvbS0+cGkuaXBpX3NwZWNfZHN0ID0g
cGt0aS0+aXBpX3NwZWNfZHN0OworCSAgZnJvbS0+cGkuaW40LmlwaV9pZmluZGV4ID0gcGt0aS0+
aXBpX2lmaW5kZXg7CisJICBmcm9tLT5waS5pbjQuaXBpX3NwZWNfZHN0ID0gcGt0aS0+aXBpX3Nw
ZWNfZHN0OworCX0KKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICAgIGVsc2UgaWYgKGNtc2cgIT0g
TlVMTAorCSAgJiYgQ01TR19OWFRIRFIgKCZtZXNnLCBjbXNnKSA9PSBOVUxMCisJICAmJiBjbXNn
LT5jbXNnX2xldmVsID09IElQUFJPVE9fSVBWNiAKKwkgICYmIGNtc2ctPmNtc2dfdHlwZSA9PSBJ
UFY2X1BLVElORk8KKwkgICYmIGNtc2ctPmNtc2dfbGVuID49IHNpemVvZiAoc3RydWN0IG9wZW52
cG5faW42X3BrdGluZm8pKQorCXsKKwkgIHN0cnVjdCBpbjZfcGt0aW5mbyAqcGt0aTYgPSAoc3Ry
dWN0IGluNl9wa3RpbmZvICopIENNU0dfREFUQSAoY21zZyk7CisJICBmcm9tLT5waS5pbjYuaXBp
Nl9pZmluZGV4ID0gcGt0aTYtPmlwaTZfaWZpbmRleDsKKwkgIGZyb20tPnBpLmluNi5pcGk2X2Fk
ZHIgPSBwa3RpNi0+aXBpNl9hZGRyOwogCX0KKyNlbmRpZgogICAgIH0KICAgcmV0dXJuIGZyb21s
ZW47CiB9CkBAIC0yMTcxLDE4ICsyNTU4LDIwIEBAIGxpbmtfc29ja2V0X3JlYWRfdWRwX3Bvc2l4
IChzdHJ1Y3QgbGlua18KIAkJCSAgICBpbnQgbWF4c2l6ZSwKIAkJCSAgICBzdHJ1Y3QgbGlua19z
b2NrZXRfYWN0dWFsICpmcm9tKQogewotICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoZnJv
bS0+ZGVzdC5zYSk7Ci0gIGZyb20tPmRlc3Quc2Euc2luX2FkZHIuc19hZGRyID0gMDsKKyAgc29j
a2xlbl90IGZyb21sZW4gPSBzaXplb2YgKGZyb20tPmRlc3QuYWRkcik7CisgIHNvY2tsZW5fdCBl
eHBlY3RlZGxlbiA9IGFmX2FkZHJfc2l6ZShwcm90b19zYV9mYW1pbHkoc29jay0+aW5mby5wcm90
bykpOworICBhZGRyX3plcm9faG9zdCgmZnJvbS0+ZGVzdCk7CiAgIEFTU0VSVCAoYnVmX3NhZmUg
KGJ1ZiwgbWF4c2l6ZSkpOwogI2lmIEVOQUJMRV9JUF9QS1RJTkZPCi0gIGlmIChzb2NrLT5zb2Nr
ZmxhZ3MgJiBTRl9VU0VfSVBfUEtUSU5GTykKKyAgLyogQm90aCBQUk9UT19VRFB2NCBhbmQgUFJP
VE9fVURQdjYgKi8KKyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSAmJiBzb2Nr
LT5zb2NrZmxhZ3MgJiBTRl9VU0VfSVBfUEtUSU5GTykKICAgICBmcm9tbGVuID0gbGlua19zb2Nr
ZXRfcmVhZF91ZHBfcG9zaXhfcmVjdm1zZyAoc29jaywgYnVmLCBtYXhzaXplLCBmcm9tKTsKICAg
ZWxzZQogI2VuZGlmCiAgICAgYnVmLT5sZW4gPSByZWN2ZnJvbSAoc29jay0+c2QsIEJQVFIgKGJ1
ZiksIG1heHNpemUsIDAsCi0JCQkgKHN0cnVjdCBzb2NrYWRkciAqKSAmZnJvbS0+ZGVzdC5zYSwg
JmZyb21sZW4pOwotICBpZiAoZnJvbWxlbiAhPSBzaXplb2YgKGZyb20tPmRlc3Quc2EpKQotICAg
IGJhZF9hZGRyZXNzX2xlbmd0aCAoZnJvbWxlbiwgc2l6ZW9mIChmcm9tLT5kZXN0LnNhKSk7CisJ
CQkgJmZyb20tPmRlc3QuYWRkci5zYSwgJmZyb21sZW4pOworICBpZiAoYnVmLT5sZW4gPj0gMCAm
JiBleHBlY3RlZGxlbiAmJiBmcm9tbGVuICE9IGV4cGVjdGVkbGVuKQorICAgIGJhZF9hZGRyZXNz
X2xlbmd0aCAoZnJvbWxlbiwgZXhwZWN0ZWRsZW4pOwogICByZXR1cm4gYnVmLT5sZW47CiB9CiAK
QEAgLTIyMTksMjYgKzI2MDgsNTIgQEAgbGlua19zb2NrZXRfd3JpdGVfdWRwX3Bvc2l4X3NlbmRt
c2cgKHN0cgogICBzdHJ1Y3QgaW92ZWMgaW92OwogICBzdHJ1Y3QgbXNnaGRyIG1lc2c7CiAgIHN0
cnVjdCBjbXNnaGRyICpjbXNnOwotICBzdHJ1Y3QgaW5fcGt0aW5mbyAqcGt0aTsKLSAgc3RydWN0
IG9wZW52cG5fcGt0aW5mbyBvcGk7CiAKICAgaW92Lmlvdl9iYXNlID0gQlBUUiAoYnVmKTsKICAg
aW92Lmlvdl9sZW4gPSBCTEVOIChidWYpOwogICBtZXNnLm1zZ19pb3YgPSAmaW92OwogICBtZXNn
Lm1zZ19pb3ZsZW4gPSAxOwotICBtZXNnLm1zZ19uYW1lID0gJnRvLT5kZXN0LnNhOwotICBtZXNn
Lm1zZ19uYW1lbGVuID0gc2l6ZW9mICh0by0+ZGVzdC5zYSk7Ci0gIG1lc2cubXNnX2NvbnRyb2wg
PSAmb3BpOwotICBtZXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mIChvcGkpOwotICBtZXNnLm1z
Z19mbGFncyA9IDA7Ci0gIGNtc2cgPSBDTVNHX0ZJUlNUSERSICgmbWVzZyk7Ci0gIGNtc2ctPmNt
c2dfbGVuID0gc2l6ZW9mIChvcGkpOwotICBjbXNnLT5jbXNnX2xldmVsID0gU09MX0lQOwotICBj
bXNnLT5jbXNnX3R5cGUgPSBJUF9QS1RJTkZPOwotICBwa3RpID0gKHN0cnVjdCBpbl9wa3RpbmZv
ICopIENNU0dfREFUQSAoY21zZyk7Ci0gIHBrdGktPmlwaV9pZmluZGV4ID0gdG8tPnBpLmlwaV9p
ZmluZGV4OwotICBwa3RpLT5pcGlfc3BlY19kc3QgPSB0by0+cGkuaXBpX3NwZWNfZHN0OwotICBw
a3RpLT5pcGlfYWRkci5zX2FkZHIgPSAwOworICBzd2l0Y2ggKHNvY2stPmluZm8ubHNhLT5yZW1v
dGUuYWRkci5zYS5zYV9mYW1pbHkpCisgIHsKKyAgICBjYXNlIEFGX0lORVQ6IHsKKwkgIHN0cnVj
dCBvcGVudnBuX2luNF9wa3RpbmZvIG9waTsKKwkgIHN0cnVjdCBpbl9wa3RpbmZvICpwa3RpOwor
CSAgbWVzZy5tc2dfbmFtZSA9ICZ0by0+ZGVzdC5hZGRyLnNhOworCSAgbWVzZy5tc2dfbmFtZWxl
biA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luKTsKKwkgIG1lc2cubXNnX2NvbnRyb2wgPSAm
b3BpOworCSAgbWVzZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZiAob3BpKTsKKwkgIG1lc2cubXNn
X2ZsYWdzID0gMDsKKwkgIGNtc2cgPSBDTVNHX0ZJUlNUSERSICgmbWVzZyk7CisJICBjbXNnLT5j
bXNnX2xlbiA9IHNpemVvZiAob3BpKTsKKwkgIGNtc2ctPmNtc2dfbGV2ZWwgPSBTT0xfSVA7CisJ
ICBjbXNnLT5jbXNnX3R5cGUgPSBJUF9QS1RJTkZPOworCSAgcGt0aSA9IChzdHJ1Y3QgaW5fcGt0
aW5mbyAqKSBDTVNHX0RBVEEgKGNtc2cpOworCSAgcGt0aS0+aXBpX2lmaW5kZXggPSB0by0+cGku
aW40LmlwaV9pZmluZGV4OworCSAgcGt0aS0+aXBpX3NwZWNfZHN0ID0gdG8tPnBpLmluNC5pcGlf
c3BlY19kc3Q7CisJICBwa3RpLT5pcGlfYWRkci5zX2FkZHIgPSAwOworCSAgYnJlYWs7CisgICAg
fQorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgIGNhc2UgQUZfSU5FVDY6IHsKKwkgIHN0cnVjdCBv
cGVudnBuX2luNl9wa3RpbmZvIG9waTY7CisJICBzdHJ1Y3QgaW42X3BrdGluZm8gKnBrdGk2Owor
CSAgbWVzZy5tc2dfbmFtZSA9ICZ0by0+ZGVzdC5hZGRyLnNhOworCSAgbWVzZy5tc2dfbmFtZWxl
biA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luNik7CisJICBtZXNnLm1zZ19jb250cm9sID0g
Jm9waTY7CisJICBtZXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mIChvcGk2KTsKKwkgIG1lc2cu
bXNnX2ZsYWdzID0gMDsKKwkgIGNtc2cgPSBDTVNHX0ZJUlNUSERSICgmbWVzZyk7CisJICBjbXNn
LT5jbXNnX2xlbiA9IHNpemVvZiAob3BpNik7CisJICBjbXNnLT5jbXNnX2xldmVsID0gSVBQUk9U
T19JUFY2OworCSAgY21zZy0+Y21zZ190eXBlID0gSVBWNl9QS1RJTkZPOworCSAgcGt0aTYgPSAo
c3RydWN0IGluNl9wa3RpbmZvICopIENNU0dfREFUQSAoY21zZyk7CisJICBwa3RpNi0+aXBpNl9p
ZmluZGV4ID0gdG8tPnBpLmluNi5pcGk2X2lmaW5kZXg7CisJICBwa3RpNi0+aXBpNl9hZGRyID0g
dG8tPnBpLmluNi5pcGk2X2FkZHI7CisJICBicmVhazsKKyAgICB9CisjZW5kaWYKKyAgICBkZWZh
dWx0OiBBU1NFUlQoMCk7CisgIH0KICAgcmV0dXJuIHNlbmRtc2cgKHNvY2stPnNkLCAmbWVzZywg
MCk7CiB9CiAKQEAgLTIzODIsNyArMjc5Nyw3IEBAIHNvY2tldF9zZW5kX3F1ZXVlIChzdHJ1Y3Qg
bGlua19zb2NrZXQgKnMKIAl7CiAJICAvKiBzZXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgVURQ
IHdyaXRlcyAqLwogCSAgc29jay0+d3JpdGVzLmFkZHJfZGVmaW5lZCA9IHRydWU7Ci0JICBzb2Nr
LT53cml0ZXMuYWRkciA9IHRvLT5kZXN0LnNhOworCSAgc29jay0+d3JpdGVzLmFkZHIgPSB0by0+
ZGVzdC5hZGRyLmluNDsKIAkgIHNvY2stPndyaXRlcy5hZGRybGVuID0gc2l6ZW9mIChzb2NrLT53
cml0ZXMuYWRkcik7CiAKIAkgIHN0YXR1cyA9IFdTQVNlbmRUbygKQEAgLTI1MzgsMTAgKzI5NTMs
MTAgQEAgc29ja2V0X2ZpbmFsaXplIChTT0NLRVQgcywKIAl7CiAJICBpZiAoaW8tPmFkZHJsZW4g
IT0gc2l6ZW9mIChpby0+YWRkcikpCiAJICAgIGJhZF9hZGRyZXNzX2xlbmd0aCAoaW8tPmFkZHJs
ZW4sIHNpemVvZiAoaW8tPmFkZHIpKTsKLQkgIGZyb20tPmRlc3Quc2EgPSBpby0+YWRkcjsKKwkg
IGZyb20tPmRlc3QuYWRkci5zYSA9IGlvLT5hZGRyOwogCX0KICAgICAgIGVsc2UKLQlDTEVBUiAo
ZnJvbS0+ZGVzdC5zYSk7CisJQ0xFQVIgKGZyb20tPmRlc3QuYWRkci5zYSk7CiAgICAgfQogICAK
ICAgaWYgKGJ1ZikKZGlmZiAtLWdpdCBhL29wZW52cG4vc29ja2V0LmggYi9vcGVudnBuL3NvY2tl
dC5oCmluZGV4IDI4YmY0MWYuLjQzNWNmMzggMTAwNjQ0Ci0tLSBhL29wZW52cG4vc29ja2V0LmgK
KysrIGIvb3BlbnZwbi9zb2NrZXQuaApAQCAtODEsNyArODEsMTMgQEAgI2RlZmluZSBudG9ocHMo
eCkgbnRvaHMoeCkKIHN0cnVjdCBvcGVudnBuX3NvY2thZGRyCiB7CiAgIC8qaW50IGR1bW15Oyov
IC8qIGFkZCBvZmZzZXQgdG8gZm9yY2UgYSBidWcgaWYgc2Egbm90IGV4cGxpY2l0bHkgZGVyZWZl
cmVuY2VkICovCi0gIHN0cnVjdCBzb2NrYWRkcl9pbiBzYTsKKyAgdW5pb24geworICBzdHJ1Y3Qg
c29ja2FkZHIgc2E7CisgIHN0cnVjdCBzb2NrYWRkcl9pbiBpbjQ7CisjaWZkZWYgVVNFX1BGX0lO
RVQ2CisgIHN0cnVjdCBzb2NrYWRkcl9pbjYgaW42OworI2VuZGlmCisgIH0gYWRkcjsKIH07CiAK
IC8qIGFjdHVhbCBhZGRyZXNzIG9mIHJlbW90ZSwgYmFzZWQgb24gc291cmNlIGFkZHJlc3Mgb2Yg
cmVjZWl2ZWQgcGFja2V0cyAqLwpAQCAtOTAsNyArOTYsMTIgQEAgc3RydWN0IGxpbmtfc29ja2V0
X2FjdHVhbAogICBpbnQgZHVtbXk7IC8qIEpZRklYTUUgLS0gYWRkIG9mZnNldCB0byBmb3JjZSBh
IGJ1ZyBpZiBkZXN0IG5vdCBleHBsaWNpdGx5IGRlcmVmZXJlbmNlZCAqLwogICBzdHJ1Y3Qgb3Bl
bnZwbl9zb2NrYWRkciBkZXN0OwogI2lmIEVOQUJMRV9JUF9QS1RJTkZPCi0gIHN0cnVjdCBpbl9w
a3RpbmZvIHBpOworICB1bmlvbiB7CisgICAgc3RydWN0IGluX3BrdGluZm8gaW40OworI2lmZGVm
IFVTRV9QRl9JTkVUNgorICAgIHN0cnVjdCBpbjZfcGt0aW5mbyBpbjY7CisjZW5kaWYKKyAgfSBw
aTsKICNlbmRpZgogfTsKIApAQCAtNDExLDYgKzQyMiwxNCBAQCBzb2NrZXRfZGVzY3JpcHRvcl90
IGNyZWF0ZV9zb2NrZXRfdGNwICh2CiBzb2NrZXRfZGVzY3JpcHRvcl90IHNvY2tldF9kb19hY2Nl
cHQgKHNvY2tldF9kZXNjcmlwdG9yX3Qgc2QsCiAJCQkJICAgICAgc3RydWN0IGxpbmtfc29ja2V0
X2FjdHVhbCAqYWN0LAogCQkJCSAgICAgIGNvbnN0IGJvb2wgbm93YWl0KTsKKy8qCisgKiBwcm90
byByZWxhdGVkCisgKi8KK2Jvb2wgcHJvdG9faXNfbmV0KGludCBwcm90byk7Citib29sIHByb3Rv
X2lzX2RncmFtKGludCBwcm90byk7Citib29sIHByb3RvX2lzX3VkcChpbnQgcHJvdG8pOworYm9v
bCBwcm90b19pc190Y3AoaW50IHByb3RvKTsKKwogCiAvKgogICogRE5TIHJlc29sdXRpb24KQEAg
LTQzNiwyMyArNDU1LDQ5IEBAIGluX2FkZHJfdCBnZXRhZGRyICh1bnNpZ25lZCBpbnQgZmxhZ3Ms
CiAgKiBUcmFuc3BvcnQgcHJvdG9jb2wgbmFtaW5nIGFuZCBvdGhlciBkZXRhaWxzLgogICovCiAK
LSNkZWZpbmUgUFJPVE9fVURQdjQgICAgICAgIDAKLSNkZWZpbmUgUFJPVE9fVENQdjRfU0VSVkVS
IDEKLSNkZWZpbmUgUFJPVE9fVENQdjRfQ0xJRU5UIDIKLSNkZWZpbmUgUFJPVE9fVENQdjQgICAg
ICAgIDMKLSNkZWZpbmUgUFJPVE9fTiAgICAgICAgICAgIDQKKyNpZiAwIC8qIFBSRSBVRFB2Ni9U
Q1B2NiBjb2RlICovCisjZGVmaW5lIFBST1RPX05PTkUgICAgICAgICAwIC8qIGNhdGNoIGZvciB1
bmluaXRpYWxpemVkICovCisjZGVmaW5lIFBST1RPX1VEUHY0ICAgICAgICAxCisjZGVmaW5lIFBS
T1RPX1RDUHY0X1NFUlZFUiAyCisjZGVmaW5lIFBST1RPX1RDUHY0X0NMSUVOVCAzCisjZGVmaW5l
IFBST1RPX1RDUHY0ICAgICAgICA0CisjZGVmaW5lIFBST1RPX1VEUHY2ICAgICAgICA1CisjZGVm
aW5lIFBST1RPX1RDUHY2X1NFUlZFUiA2CisjZGVmaW5lIFBST1RPX1RDUHY2X0NMSUVOVCA3Cisj
ZGVmaW5lIFBST1RPX1RDUHY2ICAgICAgICA4CisjZGVmaW5lIFBST1RPX04gICAgICAgICAgICA5
CisjZW5kaWYgLyogaWYgMCAqLworCisvKiAKKyAqIFVzZSBlbnVtJ3MgaW5zdGVhZCBvZiAjZGVm
aW5lIHRvIGFsbG93IGZvciBlYXNpZXIKKyAqIG9wdGlvbmFsIHByb3RvIHN1cHBvcnQKKyAqLwor
ZW51bSBwcm90b19udW0geworCVBST1RPX05PTkUsIC8qIGNhdGNoIGZvciB1bmluaXRpYWxpemVk
ICovCisJUFJPVE9fVURQdjQsCisJUFJPVE9fVENQdjRfU0VSVkVSLAorCVBST1RPX1RDUHY0X0NM
SUVOVCwKKwlQUk9UT19UQ1B2NCwKKwlQUk9UT19VRFB2NiwKKwlQUk9UT19UQ1B2Nl9TRVJWRVIs
CisJUFJPVE9fVENQdjZfQ0xJRU5ULAorCVBST1RPX1RDUHY2LAorCVBST1RPX04KK307CiAKIGlu
dCBhc2NpaTJwcm90byAoY29uc3QgY2hhciogcHJvdG9fbmFtZSk7CiBjb25zdCBjaGFyICpwcm90
bzJhc2NpaSAoaW50IHByb3RvLCBib29sIGRpc3BsYXlfZm9ybSk7CiBjb25zdCBjaGFyICpwcm90
bzJhc2NpaV9hbGwgKHN0cnVjdCBnY19hcmVuYSAqZ2MpOwogaW50IHByb3RvX3JlbW90ZSAoaW50
IHByb3RvLCBib29sIHJlbW90ZSk7Citjb25zdCBjaGFyICphZGRyX2ZhbWlseV9uYW1lKGludCBh
Zik7CiAKIC8qCiAgKiBPdmVyaGVhZCBhZGRlZCB0byBwYWNrZXRzIGJ5IHZhcmlvdXMgcHJvdG9j
b2xzLgogICovCiAjZGVmaW5lIElQdjRfVURQX0hFQURFUl9TSVpFICAgICAgICAgICAgICAyOAog
I2RlZmluZSBJUHY0X1RDUF9IRUFERVJfU0laRSAgICAgICAgICAgICAgNDAKLSNkZWZpbmUgSVB2
Nl9VRFBfSEVBREVSX1NJWkUgICAgICAgICAgICAgIDQwCisjZGVmaW5lIElQdjZfVURQX0hFQURF
Ul9TSVpFICAgICAgICAgICAgICA0OAorI2RlZmluZSBJUHY2X1RDUF9IRUFERVJfU0laRSAgICAg
ICAgICAgICAgNjAKIAogZXh0ZXJuIGNvbnN0IGludCBwcm90b19vdmVyaGVhZFtdOwogCkBAIC00
ODUsNyArNTMwLDcgQEAgbGVnYWxfaXB2NF9wb3J0IChpbnQgcG9ydCkKIHN0YXRpYyBpbmxpbmUg
Ym9vbAogbGlua19zb2NrZXRfcHJvdG9fY29ubmVjdGlvbl9vcmllbnRlZCAoaW50IHByb3RvKQog
ewotICByZXR1cm4gcHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IHByb3RvID09IFBST1RP
X1RDUHY0X0NMSUVOVDsKKyAgcmV0dXJuICFwcm90b19pc19kZ3JhbShwcm90byk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbApAQCAtNTAwLDcgKzU0NSwzMCBAQCBsaW5rX3NvY2tldF9jb25uZWN0
aW9uX29yaWVudGVkIChjb25zdCBzCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFkZHJfZGVmaW5lZCAo
Y29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmFkZHIpCiB7Ci0gIHJldHVybiBhZGRyLT5z
YS5zaW5fYWRkci5zX2FkZHIgIT0gMDsKKyAgaWYgKCFhZGRyKSByZXR1cm4gMDsKKyAgc3dpdGNo
IChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5FVDogcmV0dXJuIGFk
ZHItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciAhPSAwOworI2lmZGVmIFVTRV9QRl9JTkVUNgor
ICAgIGNhc2UgQUZfSU5FVDY6IHJldHVybiAhSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoJmFkZHIt
PmFkZHIuaW42LnNpbjZfYWRkcik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiByZXR1cm4gMDsKKyAg
fQorfQorc3RhdGljIGlubGluZSBib29sCithZGRyX2RlZmluZWRfaXBpIChjb25zdCBzdHJ1Y3Qg
bGlua19zb2NrZXRfYWN0dWFsICpsc2EpCit7CisjaWYgRU5BQkxFX0lQX1BLVElORk8KKyAgaWYg
KCFsc2EpIHJldHVybiAwOworICBzd2l0Y2ggKGxzYS0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkg
eworICAgIGNhc2UgQUZfSU5FVDogcmV0dXJuIGxzYS0+cGkuaW40LmlwaV9zcGVjX2RzdC5zX2Fk
ZHIgIT0gMDsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OiByZXR1cm4g
IUlONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZsc2EtPnBpLmluNi5pcGk2X2FkZHIpOworI2VuZGlm
CisgICAgZGVmYXVsdDogcmV0dXJuIDA7CisgIH0KKyNlbHNlCisgIEFTU0VSVCgwKTsKKyNlbmRp
ZgogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKQEAgLTUxMiwyMCArNTgwLDUwIEBAIGxpbmtfc29j
a2V0X2FjdHVhbF9kZWZpbmVkIChjb25zdCBzdHJ1Y3QKIHN0YXRpYyBpbmxpbmUgYm9vbAogYWRk
cl9tYXRjaCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmExLCBjb25zdCBzdHJ1Y3Qg
b3BlbnZwbl9zb2NrYWRkciAqYTIpCiB7Ci0gIHJldHVybiBhMS0+c2Euc2luX2FkZHIuc19hZGRy
ID09IGEyLT5zYS5zaW5fYWRkci5zX2FkZHI7CisgIHN3aXRjaChhMS0+YWRkci5zYS5zYV9mYW1p
bHkpIHsKKyAgICBjYXNlIEFGX0lORVQ6CisgICAgICByZXR1cm4gYTEtPmFkZHIuaW40LnNpbl9h
ZGRyLnNfYWRkciA9PSBhMi0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyOworI2lmZGVmIFVTRV9Q
Rl9JTkVUNgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICByZXR1cm4gSU42X0FSRV9BRERSX0VR
VUFMKCZhMS0+YWRkci5pbjYuc2luNl9hZGRyLCAmYTItPmFkZHIuaW42LnNpbjZfYWRkcik7Cisj
ZW5kaWYKKyAgfQorICBBU1NFUlQoMCk7CisgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGlu
bGluZSBpbl9hZGRyX3QKLWFkZHJfaG9zdCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIg
KnMpCithZGRyX2hvc3QgKGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphZGRyKQogewot
ICByZXR1cm4gbnRvaGwgKHMtPnNhLnNpbl9hZGRyLnNfYWRkcik7CisgIC8qIAorICAgKiAicHVi
bGljIiBhZGRyIHJldHVybmVkIGlzIGNoZWNrZWQgYWdhaW5zdCBpZmNvbmZpZyBmb3IKKyAgICog
cG9zc2libGUgY2xhc2g6IG5vbiBzZW5zZSBmb3Igbm93IGdpdmVuCisgICAqIHRoYXQgd2UgZG8g
aWZjb25maWcgb25seSBJUHY0CisgICAqLworI2lmIGRlZmluZWQoVVNFX1BGX0lORVQ2KSAKKyAg
aWYoYWRkci0+YWRkci5zYS5zYV9mYW1pbHkgIT0gQUZfSU5FVCkKKyAgICByZXR1cm4gMDsKKyNl
bHNlIAorICBBU1NFUlQoYWRkci0+YWRkci5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCk7CisjZW5k
aWYKKyAgcmV0dXJuIG50b2hsIChhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIpOwogfQog
CiBzdGF0aWMgaW5saW5lIGJvb2wKIGFkZHJfcG9ydF9tYXRjaCAoY29uc3Qgc3RydWN0IG9wZW52
cG5fc29ja2FkZHIgKmExLCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYTIpCiB7Ci0g
IHJldHVybiBhMS0+c2Euc2luX2FkZHIuc19hZGRyID09IGEyLT5zYS5zaW5fYWRkci5zX2FkZHIK
LSAgICAmJiBhMS0+c2Euc2luX3BvcnQgPT0gYTItPnNhLnNpbl9wb3J0OworICBzd2l0Y2goYTEt
PmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOgorICAgICAgcmV0dXJuIGEx
LT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPT0gYTItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRk
cgorCSYmIGExLT5hZGRyLmluNC5zaW5fcG9ydCA9PSBhMi0+YWRkci5pbjQuc2luX3BvcnQ7Cisj
aWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHJldHVybiBJTjZf
QVJFX0FERFJfRVFVQUwoJmExLT5hZGRyLmluNi5zaW42X2FkZHIsICZhMi0+YWRkci5pbjYuc2lu
Nl9hZGRyKSAKKwkmJiBhMS0+YWRkci5pbjYuc2luNl9wb3J0ID09IGEyLT5hZGRyLmluNi5zaW42
X3BvcnQ7CisjZW5kaWYKKyAgfQorICBBU1NFUlQoMCk7CisgIHJldHVybiBmYWxzZTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sCkBAIC01MzgsNiArNjM2LDc0IEBAIGFkZHJfbWF0Y2hfcHJvdG8g
KGNvbnN0IHN0cnVjdCBvcGVudnBuX3MKICAgICA6IGFkZHJfcG9ydF9tYXRjaCAoYTEsIGEyKTsK
IH0KIAorc3RhdGljIGlubGluZSB2b2lkCithZGRyX3plcm9faG9zdChzdHJ1Y3Qgb3BlbnZwbl9z
b2NrYWRkciAqYWRkcikKK3sKKyAgIHN3aXRjaChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgewor
ICAgICBjYXNlIEFGX0lORVQ6CisgICAgICAgYWRkci0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRy
ID0gMDsKKyAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICAgY2FzZSBBRl9J
TkVUNjogCisgICAgICAgbWVtc2V0KCZhZGRyLT5hZGRyLmluNi5zaW42X2FkZHIsIDAsIHNpemVv
ZiAoc3RydWN0IGluNl9hZGRyKSk7CisgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgIH0KK30KKwor
c3RhdGljIGlubGluZSB2b2lkCithZGRyX2NvcHlfc2Eoc3RydWN0IG9wZW52cG5fc29ja2FkZHIg
KmRzdCwgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKnNyYykKK3sKKyAgZHN0LT5hZGRy
ID0gc3JjLT5hZGRyOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2FkZHJfY29weV9ob3N0KHN0
cnVjdCBvcGVudnBuX3NvY2thZGRyICpkc3QsIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRy
ICpzcmMpCit7CisgICBzd2l0Y2goc3JjLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgICBjYXNl
IEFGX0lORVQ6CisgICAgICAgZHN0LT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBzcmMtPmFk
ZHIuaW40LnNpbl9hZGRyLnNfYWRkcjsKKyAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5F
VDYKKyAgICAgY2FzZSBBRl9JTkVUNjogCisgICAgICAgZHN0LT5hZGRyLmluNi5zaW42X2FkZHIg
PSBzcmMtPmFkZHIuaW42LnNpbjZfYWRkcjsKKyAgICAgICBicmVhazsKKyNlbmRpZgorICAgfQor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wKK2FkZHJfaW5ldDRvcjYoc3RydWN0IHNvY2thZGRyICph
ZGRyKQoreworCXJldHVybiBhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCB8fCBhZGRyLT5zYV9m
YW1pbHkgPT0gQUZfSU5FVDY7Cit9CisKK2ludCBhZGRyX2d1ZXNzX2ZhbWlseShpbnQgcHJvdG8s
IGNvbnN0IGNoYXIgKm5hbWUpOworc3RhdGljIGlubGluZSBpbnQKK2FmX2FkZHJfc2l6ZShzYV9m
YW1pbHlfdCBhZikKK3sKKyNpZiBkZWZpbmVkKFVTRV9QRl9JTkVUNikgfHwgZGVmaW5lZCAoVVNF
X1BGX1VOSVgpCisgICBzd2l0Y2goYWYpIHsKKyAgICAgY2FzZSBBRl9JTkVUOiByZXR1cm4gc2l6
ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW4pOworI2lmZGVmIFVTRV9QRl9VTklYCisgICAgIGNhc2Ug
QUZfVU5JWDogcmV0dXJuIHNpemVvZiAoc3RydWN0IHNvY2thZGRyX3VuKTsKKyNlbmRpZgorI2lm
ZGVmIFVTRV9QRl9JTkVUNgorICAgICBjYXNlIEFGX0lORVQ2OiByZXR1cm4gc2l6ZW9mIChzdHJ1
Y3Qgc29ja2FkZHJfaW42KTsKKyNlbmRpZgorICAgICBkZWZhdWx0OiAKKyNpZiAwCisgICAgICAv
KiBjb3VsZCBiZSBjYWxsZWQgZnJvbSBzb2NrZXRfZG9fYWNjZXB0KCkgd2l0aCBlbXB0eSBhZGRy
ICovCisgICAgICBtc2cgKE1fRVJSLCAiQmFkIGFkZHJlc3MgZmFtaWx5OiAlZFxuIiwgYWRkci0+
c2FfZmFtaWx5KTsKKyAgICAgIEFTU0VSVCgwKTsKKyNlbmRpZgorICAgICAJcmV0dXJuIDA7Cisg
ICB9CisjZWxzZSAvKiBvbmx5IEFGX0lORVQgKi8KKyAgIHJldHVybiBzaXplb2Yoc3RydWN0IHNv
Y2thZGRyX2luKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW5saW5lIGJvb2wKIGxpbmtfc29ja2V0
X2FjdHVhbF9tYXRjaCAoY29uc3Qgc3RydWN0IGxpbmtfc29ja2V0X2FjdHVhbCAqYTEsIGNvbnN0
IHN0cnVjdCBsaW5rX3NvY2tldF9hY3R1YWwgKmEyKQogewpAQCAtNTk0LDE0ICs3NjAsMTggQEAg
bGlua19zb2NrZXRfdmVyaWZ5X2luY29taW5nX2FkZHIgKHN0cnVjdAogewogICBpZiAoYnVmLT5s
ZW4gPiAwKQogICAgIHsKLSAgICAgIGlmIChmcm9tX2FkZHItPmRlc3Quc2Euc2luX2ZhbWlseSAh
PSBBRl9JTkVUKQotCXJldHVybiBmYWxzZTsKLSAgICAgIGlmICghbGlua19zb2NrZXRfYWN0dWFs
X2RlZmluZWQgKGZyb21fYWRkcikpCi0JcmV0dXJuIGZhbHNlOwotICAgICAgaWYgKGluZm8tPnJl
bW90ZV9mbG9hdCB8fCAhYWRkcl9kZWZpbmVkICgmaW5mby0+bHNhLT5yZW1vdGUpKQotCXJldHVy
biB0cnVlOwotICAgICAgaWYgKGFkZHJfbWF0Y2hfcHJvdG8gKCZmcm9tX2FkZHItPmRlc3QsICZp
bmZvLT5sc2EtPnJlbW90ZSwgaW5mby0+cHJvdG8pKQotCXJldHVybiB0cnVlOworICAgICAgc3dp
dGNoIChmcm9tX2FkZHItPmRlc3QuYWRkci5zYS5zYV9mYW1pbHkpIHsKKyNpZmRlZiBVU0VfUEZf
SU5FVDYKKwljYXNlIEFGX0lORVQ2OgorI2VuZGlmCisJY2FzZSBBRl9JTkVUOgorCSAgaWYgKCFs
aW5rX3NvY2tldF9hY3R1YWxfZGVmaW5lZCAoZnJvbV9hZGRyKSkKKwkgICAgcmV0dXJuIGZhbHNl
OworCSAgaWYgKGluZm8tPnJlbW90ZV9mbG9hdCB8fCAhYWRkcl9kZWZpbmVkICgmaW5mby0+bHNh
LT5yZW1vdGUpKQorCSAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmIChhZGRyX21hdGNoX3Byb3RvICgm
ZnJvbV9hZGRyLT5kZXN0LCAmaW5mby0+bHNhLT5yZW1vdGUsIGluZm8tPnByb3RvKSkKKwkgICAg
cmV0dXJuIHRydWU7CisgICAgICB9CiAgICAgfQogICByZXR1cm4gZmFsc2U7CiB9CkBAIC03MDcs
NyArODc3LDcgQEAgbGlua19zb2NrZXRfcmVhZCAoc3RydWN0IGxpbmtfc29ja2V0ICpzbwogCQkg
IGludCBtYXhzaXplLAogCQkgIHN0cnVjdCBsaW5rX3NvY2tldF9hY3R1YWwgKmZyb20pCiB7Ci0g
IGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1VEUHY0KQorICBpZiAocHJvdG9faXNfdWRw
KHNvY2stPmluZm8ucHJvdG8pKSAvKiB1bmlmaWVkIFVEUHY0IGFuZCBVRFB2NiAqLwogICAgIHsK
ICAgICAgIGludCByZXM7CiAKQEAgLTcxOCwxMCArODg4LDEwIEBAICNlbHNlCiAjZW5kaWYKICAg
ICAgIHJldHVybiByZXM7CiAgICAgfQotICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBS
T1RPX1RDUHY0X1NFUlZFUiB8fCBzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY0X0NMSUVO
VCkKKyAgZWxzZSBpZiAocHJvdG9faXNfdGNwKHNvY2stPmluZm8ucHJvdG8pKSAvKiB1bmlmaWVk
IFRDUHY0IGFuZCBUQ1B2NiAqLwogICAgIHsKICAgICAgIC8qIGZyb20gYWRkcmVzcyB3YXMgcmV0
dXJuZWQgYnkgYWNjZXB0ICovCi0gICAgICBmcm9tLT5kZXN0LnNhID0gc29jay0+aW5mby5sc2Et
PmFjdHVhbC5kZXN0LnNhOworICAgICAgYWRkcl9jb3B5X3NhKCZmcm9tLT5kZXN0LCAmc29jay0+
aW5mby5sc2EtPmFjdHVhbC5kZXN0KTsKICAgICAgIHJldHVybiBsaW5rX3NvY2tldF9yZWFkX3Rj
cCAoc29jaywgYnVmKTsKICAgICB9CiAgIGVsc2UKQEAgLTc3NiwxMyArOTQ2LDE0IEBAICNpZiBF
TkFCTEVfSVBfUEtUSU5GTwogCQkJCQkgICBzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCQkJCSAgIHN0
cnVjdCBsaW5rX3NvY2tldF9hY3R1YWwgKnRvKTsKIAotICBpZiAoc29jay0+c29ja2ZsYWdzICYg
U0ZfVVNFX0lQX1BLVElORk8pCisgIGlmIChwcm90b19pc191ZHAoc29jay0+aW5mby5wcm90bykg
JiYgKHNvY2stPnNvY2tmbGFncyAmIFNGX1VTRV9JUF9QS1RJTkZPKQorCSAgJiYgYWRkcl9kZWZp
bmVkX2lwaSh0bykpCiAgICAgcmV0dXJuIGxpbmtfc29ja2V0X3dyaXRlX3VkcF9wb3NpeF9zZW5k
bXNnIChzb2NrLCBidWYsIHRvKTsKICAgZWxzZQogI2VuZGlmCiAgICAgcmV0dXJuIHNlbmR0byAo
c29jay0+c2QsIEJQVFIgKGJ1ZiksIEJMRU4gKGJ1ZiksIDAsCi0JCSAgIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikgJnRvLT5kZXN0LnNhLAotCQkgICAoc29ja2xlbl90KSBzaXplb2YgKHRvLT5kZXN0LnNh
KSk7CisJCSAgIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnRvLT5kZXN0LmFkZHIuc2EsCisJCSAgIChz
b2NrbGVuX3QpIGFmX2FkZHJfc2l6ZSh0by0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIGludApAQCAtODEzLDExICs5ODQsMTEgQEAgbGlua19zb2NrZXRfd3Jp
dGUgKHN0cnVjdCBsaW5rX3NvY2tldCAqcwogCQkgICBzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCSAg
IHN0cnVjdCBsaW5rX3NvY2tldF9hY3R1YWwgKnRvKQogewotICBpZiAoc29jay0+aW5mby5wcm90
byA9PSBQUk9UT19VRFB2NCkKKyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSkg
LyogdW5pZmllZCBVRFB2NCBhbmQgVURQdjYgKi8KICAgICB7CiAgICAgICByZXR1cm4gbGlua19z
b2NrZXRfd3JpdGVfdWRwIChzb2NrLCBidWYsIHRvKTsKICAgICB9Ci0gIGVsc2UgaWYgKHNvY2st
PmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IHNvY2stPmluZm8ucHJvdG8gPT0g
UFJPVE9fVENQdjRfQ0xJRU5UKQorICBlbHNlIGlmIChwcm90b19pc190Y3Aoc29jay0+aW5mby5w
cm90bykpIC8qIHVuaWZpZWQgVENQdjQgYW5kIFRDUHY2ICovCiAgICAgewogICAgICAgcmV0dXJu
IGxpbmtfc29ja2V0X3dyaXRlX3RjcCAoc29jaywgYnVmLCB0byk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvb3BlbnZwbi9zb2Nrcy5jIGIvb3BlbnZwbi9zb2Nrcy5jCmluZGV4IGNjOWQ4MmYuLjdlYzlh
M2UgMTAwNjQ0Ci0tLSBhL29wZW52cG4vc29ja3MuYworKysgYi9vcGVudnBuL3NvY2tzLmMKQEAg
LTE3NSw5ICsxNzUsOSBAQCByZWN2X3NvY2tzX3JlcGx5IChzb2NrZXRfZGVzY3JpcHRvcl90IHNk
CiAKICAgaWYgKGFkZHIgIT0gTlVMTCkKICAgICB7Ci0gICAgICBhZGRyLT5zYS5zaW5fZmFtaWx5
ID0gQUZfSU5FVDsKLSAgICAgIGFkZHItPnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChJTkFE
RFJfQU5ZKTsKLSAgICAgIGFkZHItPnNhLnNpbl9wb3J0ID0gaHRvbnMgKDApOworICAgICAgYWRk
ci0+YWRkci5pbjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBhZGRyLT5hZGRyLmluNC5z
aW5fYWRkci5zX2FkZHIgPSBodG9ubCAoSU5BRERSX0FOWSk7CisgICAgICBhZGRyLT5hZGRyLmlu
NC5zaW5fcG9ydCA9IGh0b25zICgwKTsKICAgICB9CiAKICAgd2hpbGUgKGxlbiA8IDQgKyBhbGVu
ICsgMikKQEAgLTI2NCw4ICsyNjQsOCBAQCByZWN2X3NvY2tzX3JlcGx5IChzb2NrZXRfZGVzY3Jp
cHRvcl90IHNkCiAgIC8qIEFUWVAgPT0gMSAoSVAgVjQgYWRkcmVzcykgKi8KICAgaWYgKGF0eXAg
PT0gJ1x4MDEnICYmIGFkZHIgIT0gTlVMTCkKICAgICB7Ci0gICAgICBtZW1jcHkgKCZhZGRyLT5z
YS5zaW5fYWRkciwgYnVmICsgNCwgc2l6ZW9mIChhZGRyLT5zYS5zaW5fYWRkcikpOwotICAgICAg
bWVtY3B5ICgmYWRkci0+c2Euc2luX3BvcnQsIGJ1ZiArIDgsIHNpemVvZiAoYWRkci0+c2Euc2lu
X3BvcnQpKTsKKyAgICAgIG1lbWNweSAoJmFkZHItPmFkZHIuaW40LnNpbl9hZGRyLCBidWYgKyA0
LCBzaXplb2YgKGFkZHItPmFkZHIuaW40LnNpbl9hZGRyKSk7CisgICAgICBtZW1jcHkgKCZhZGRy
LT5hZGRyLmluNC5zaW5fcG9ydCwgYnVmICsgOCwgc2l6ZW9mIChhZGRyLT5hZGRyLmluNC5zaW5f
cG9ydCkpOwogICAgIH0KIAogCkBAIC0zODMsOCArMzgzLDggQEAgc29ja3NfcHJvY2Vzc19pbmNv
bWluZ191ZHAgKHN0cnVjdCBidWZmZQogICBpZiAoYXR5cCAhPSAxKQkJLyogQVRZUCA9PSAxIChJ
UCBWNCkgKi8KICAgICBnb3RvIGVycm9yOwogCi0gIGJ1Zl9yZWFkIChidWYsICZmcm9tLT5kZXN0
LnNhLnNpbl9hZGRyLCBzaXplb2YgKGZyb20tPmRlc3Quc2Euc2luX2FkZHIpKTsKLSAgYnVmX3Jl
YWQgKGJ1ZiwgJmZyb20tPmRlc3Quc2Euc2luX3BvcnQsIHNpemVvZiAoZnJvbS0+ZGVzdC5zYS5z
aW5fcG9ydCkpOworICBidWZfcmVhZCAoYnVmLCAmZnJvbS0+ZGVzdC5hZGRyLmluNC5zaW5fYWRk
ciwgc2l6ZW9mIChmcm9tLT5kZXN0LmFkZHIuaW40LnNpbl9hZGRyKSk7CisgIGJ1Zl9yZWFkIChi
dWYsICZmcm9tLT5kZXN0LmFkZHIuaW40LnNpbl9wb3J0LCBzaXplb2YgKGZyb20tPmRlc3QuYWRk
ci5pbjQuc2luX3BvcnQpKTsKIAogICByZXR1cm47CiAKQEAgLTQxNiw4ICs0MTYsOCBAQCBzb2Nr
c19wcm9jZXNzX291dGdvaW5nX3VkcCAoc3RydWN0IGJ1ZmZlCiAgIGJ1Zl93cml0ZV91MTYgKCZo
ZWFkLCAwKTsJLyogUlNWID0gMCAqLwogICBidWZfd3JpdGVfdTggKCZoZWFkLCAwKTsJLyogRlJB
RyA9IDAgKi8KICAgYnVmX3dyaXRlX3U4ICgmaGVhZCwgJ1x4MDEnKTsgLyogQVRZUCA9IDEgKElQ
IFY0KSAqLwotICBidWZfd3JpdGUgKCZoZWFkLCAmdG8tPmRlc3Quc2Euc2luX2FkZHIsIHNpemVv
ZiAodG8tPmRlc3Quc2Euc2luX2FkZHIpKTsKLSAgYnVmX3dyaXRlICgmaGVhZCwgJnRvLT5kZXN0
LnNhLnNpbl9wb3J0LCBzaXplb2YgKHRvLT5kZXN0LnNhLnNpbl9wb3J0KSk7CisgIGJ1Zl93cml0
ZSAoJmhlYWQsICZ0by0+ZGVzdC5hZGRyLmluNC5zaW5fYWRkciwgc2l6ZW9mICh0by0+ZGVzdC5h
ZGRyLmluNC5zaW5fYWRkcikpOworICBidWZfd3JpdGUgKCZoZWFkLCAmdG8tPmRlc3QuYWRkci5p
bjQuc2luX3BvcnQsIHNpemVvZiAodG8tPmRlc3QuYWRkci5pbjQuc2luX3BvcnQpKTsKIAogICBy
ZXR1cm4gMTA7CiB9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142939</attachid>
            <date>2008-02-07 22:16 0000</date>
            <desc>openvpn-2.1_rc6-r1.ebuild</desc>
            <filename>openvpn-2.1_rc6-r1.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA4IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L25ldC1taXNjL29wZW52cG4vb3BlbnZwbi0yLjFf
cmM2LXIxLmVidWlsZCx2IDEuMSAyMDA4LzAxLzI1IDIzOjUxOjQ1IGFsb25ibCBFeHAgJAoKaW5o
ZXJpdCBldXRpbHMgbXVsdGlsaWIKCkRFU0NSSVBUSU9OPSJPcGVuVlBOIGlzIGEgcm9idXN0IGFu
ZCBoaWdobHkgZmxleGlibGUgdHVubmVsaW5nIGFwcGxpY2F0aW9uIGNvbXBhdGlibGUgd2l0aCBt
YW55IE9TZXMuIgpTUkNfVVJJPSJodHRwOi8vb3BlbnZwbi5uZXQvYmV0YS8ke1B9LnRhci5neiIK
SE9NRVBBR0U9Imh0dHA6Ly9vcGVudnBuLm5ldC8iCgpMSUNFTlNFPSJHUEwtMiIKU0xPVD0iMCIK
S0VZV09SRFM9In5hbHBoYSB+YW1kNjQgfmhwcGEgfnBwYyB+cHBjNjQgfnNoIH5zcGFyYyB+c3Bh
cmMtZmJzZCB+eDg2IH54ODYtZmJzZCIKSVVTRT0iZXhhbXBsZXMgaXByb3V0ZTIgbWluaW1hbCBw
YW0gcGFzc3dvcmRzYXZlIHNlbGludXggc3NsIHN0YXRpYyBwa2NzMTEKdGhyZWFkcyB1c2VybGFu
ZF9CU0QgaXB2NiIKCkRFUEVORD0iPj1kZXYtbGlicy9sem8tMS4wNwoJa2VybmVsX2xpbnV4PyAo
CgkJaXByb3V0ZTI/ICggc3lzLWFwcHMvaXByb3V0ZTIgKSAhaXByb3V0ZTI/ICggc3lzLWFwcHMv
bmV0LXRvb2xzICkKCSkKCSFtaW5pbWFsPyAoIHBhbT8gKCB2aXJ0dWFsL3BhbSApICkKCXNlbGlu
dXg/ICggc2VjLXBvbGljeS9zZWxpbnV4LW9wZW52cG4gKQoJc3NsPyAoID49ZGV2LWxpYnMvb3Bl
bnNzbC0wLjkuNiApCglwa2NzMTE/ICggPj1kZXYtbGlicy9wa2NzMTEtaGVscGVyLTEuMDUgKSIK
CnBrZ19zZXR1cCgpIHsKCWlmIHVzZSBpcHJvdXRlMiA7IHRoZW4KCQlpZiBidWlsdF93aXRoX3Vz
ZSBzeXMtYXBwcy9pcHJvdXRlMiBtaW5pbWFsIDsgdGhlbgoJCQllZXJyb3IgImlwcm91dGUyIHN1
cHBvcnQgcmVxdWlyZXMgdGhhdCBzeXMtYXBwcy9pcHJvdXRlMiB3YXMgbm90IgoJCQllZXJyb3Ig
ImJ1aWx0IHdpdGggdGhlIG1pbmltYWwgVVNFIGZsYWciCgkJCWRpZSAiaXByb3V0ZTIgc3VwcG9y
dCBub3QgYXZhaWxhYmxlIgoJCWZpCglmaQp9CgpzcmNfdW5wYWNrKCkgewoJdW5wYWNrICR7QX0K
CWNkICIke1N9IgoJZXBhdGNoICIke0ZJTEVTRElSfS8ke1B9LWlwcm91dGUucGF0Y2giCiAgICB1
c2UgaXB2NiAmJiBlcGF0Y2ggIiR7RklMRVNESVJ9LyR7UE59Ii0yLjFfcmM2LXVkcDYucGF0Y2gK
fQoKc3JjX2NvbXBpbGUoKSB7Cglsb2NhbCBteWNvbmY9IiIKCglpZiB1c2UgbWluaW1hbCA7IHRo
ZW4KCQlteWNvbmY9IiR7bXljb25mfSAtLWRpc2FibGUtcGx1Z2lucyIKCQlteWNvbmY9IiR7bXlj
b25mfSAtLWRpc2FibGUtcGtjczExIgoJZWxzZQoJCW15Y29uZj0iJCh1c2VfZW5hYmxlIHBrY3Mx
MSkiCglmaQoKCWVjb25mICR7bXljb25mfSBcCgkJJCh1c2VfZW5hYmxlIHBhc3N3b3Jkc2F2ZSBw
YXNzd29yZC1zYXZlKSBcCgkJJCh1c2VfZW5hYmxlIHNzbCkgXAoJCSQodXNlX2VuYWJsZSBzc2wg
Y3J5cHRvKSBcCgkJJCh1c2VfZW5hYmxlIHRocmVhZHMgcHRocmVhZCkgXAoJCSQodXNlX2VuYWJs
ZSBpcHJvdXRlMikgXAoJCXx8IGRpZSAiY29uZmlndXJlIGZhaWxlZCIKCgl1c2Ugc3RhdGljICYm
IHNlZCAtaSAtZSAnL15MSUJTL3MvTElCUyA9IC9MSUJTID0gLXN0YXRpYyAvJyBNYWtlZmlsZQoK
CWVtYWtlIHx8IGRpZSAibWFrZSBmYWlsZWQiCgoJaWYgISB1c2UgbWluaW1hbCA7IHRoZW4KCQlj
ZCBwbHVnaW4KCQlmb3IgaSBpbiAkKCBscyAyPi9kZXYvbnVsbCApOyBkbwoJCQlbWyAke2l9ID09
ICJSRUFETUUiIHx8ICR7aX0gPT0gImV4YW1wbGVzIiBdXSAmJiBjb250aW51ZQoJCQlbWyAke2l9
ID09ICJhdXRoLXBhbSIgXV0gJiYgISB1c2UgcGFtICYmIGNvbnRpbnVlCgkJCWVpbmZvICJCdWls
ZGluZyAke2l9IHBsdWdpbiIKCQkJY2QgIiR7aX0iCgkJCWVtYWtlIHx8IGRpZSAibWFrZSBmYWls
ZWQiCgkJCWNkIC4uCgkJZG9uZQoJCWNkIC4uCglmaQp9CgpzcmNfaW5zdGFsbCgpIHsKCW1ha2Ug
REVTVERJUj0iJHtEfSIgaW5zdGFsbCB8fCBkaWUgIm1ha2UgaW5zdGFsbCBmYWlsZWQiCgoJIyBp
bnN0YWxsIGRvY3VtZW50YXRpb24KCWRvZG9jIEFVVEhPUlMgQ2hhbmdlTG9nIFBPUlRTIFJFQURN
RQoKCSMgRW1wdHkgZGlyCglkb2RpciAvZXRjL29wZW52cG4KCWtlZXBkaXIgL2V0Yy9vcGVudnBu
CgoJIyBJbnN0YWxsIHNvbWUgaGVscGVyIHNjcmlwdHMKCWV4ZWludG8gL2V0Yy9vcGVudnBuCglk
b2V4ZSAiJHtGSUxFU0RJUn0vdXAuc2giCglkb2V4ZSAiJHtGSUxFU0RJUn0vZG93bi5zaCIKCgkj
IEluc3RhbGwgdGhlIGluaXQgc2NyaXB0IGFuZCBjb25maWcgZmlsZQoJbmV3aW5pdGQgIiR7RklM
RVNESVJ9LyR7UE59LTIuMS5pbml0IiBvcGVudnBuCgluZXdjb25mZCAiJHtGSUxFU0RJUn0vJHtQ
Tn0tMi4xLmNvbmYiIG9wZW52cG4KCgkjIGluc3RhbGwgZXhhbXBsZXMsIGNvbnRyb2xsZWQgYnkg
dGhlIHJlc3BlY3RpdmUgdXNlZmxhZwoJaWYgdXNlIGV4YW1wbGVzIDsgdGhlbgoJCSMgZG9kb2Mg
ZG9lcyBub3Qgc3VwcG9ydGx5IHN1cHBvcnQgZGlyZWN0b3J5IHRyYXZlcnNhbCwgIzE1MTkzCgkJ
aW5zaW50byAvdXNyL3NoYXJlL2RvYy8ke1BGfS9leGFtcGxlcwoJCWRvaW5zIC1yIHNhbXBsZS17
Y29uZmlnLWZpbGVzLGtleXMsc2NyaXB0c30gY29udHJpYgoJCXByZXBhbGxkb2NzCglmaQoKCSMg
SW5zdGFsbCBwbHVnaW5zIGFuZCBlYXN5LXJzYQoJaWYgISB1c2UgbWluaW1hbCA7IHRoZW4KCQlj
ZCBlYXN5LXJzYS8yLjAKCQltYWtlIGluc3RhbGwgIkRFU1RESVI9JHtEfS91c3Ivc2hhcmUvJHtQ
Tn0vZWFzeS1yc2EiCgkJY2QgLi4vLi4KCgkJZXhlaW50byAiL3Vzci8kKGdldF9saWJkaXIpLyR7
UE59IgoJCWRvZXhlIHBsdWdpbi8qLyouc28KCWZpCn0KCnBrZ19wb3N0aW5zdCgpIHsKCSMgQWRk
IG9wZW52cG4gdXNlciBzbyBvcGVudnBuIHNlcnZlcnMgY2FuIGRyb3AgcHJpdnMKCSMgQ2xpZW50
cyBzaG91bGQgcnVuIGFzIHJvb3Qgc28gdGhleSBjYW4gY2hhbmdlIGlwIGFkZHJlc3NlcywKCSMg
ZG5zIGluZm9ybWF0aW9uIGFuZCBvdGhlciBzdWNoIHRoaW5ncy4KCWVuZXdncm91cCBvcGVudnBu
CgllbmV3dXNlciBvcGVudnBuICIiICIiICIiIG9wZW52cG4KCglpZiBbWyAtbiAkKGxzIC9ldGMv
b3BlbnZwbi8qL2xvY2FsLmNvbmYgMj4vZGV2L251bGwpIF1dIDsgdGhlbgoJCWV3YXJuICJXQVJO
SU5HOiBUaGUgb3BlbnZwbiBpbml0IHNjcmlwdCBoYXMgY2hhbmdlZCIKCQlld2FybiAiIgoJZmkK
CgllaW5mbyAiVGhlIG9wZW52cG4gaW5pdCBzY3JpcHQgZXhwZWN0cyB0byBmaW5kIHRoZSBjb25m
aWd1cmF0aW9uIGZpbGUiCgllaW5mbyAib3BlbnZwbi5jb25mIGluIC9ldGMvb3BlbnZwbiBhbG9u
ZyB3aXRoIGFueSBleHRyYSBmaWxlcyBpdCBtYXkgbmVlZC4iCgllaW5mbyAiIgoJZWluZm8gIlRv
IGNyZWF0ZSBtb3JlIFZQTnMsIHNpbXBseSBjcmVhdGUgYSBuZXcgLmNvbmYgZmlsZSBmb3IgaXQg
YW5kIgoJZWluZm8gInRoZW4gY3JlYXRlIGEgc3ltbGluayB0byB0aGUgb3BlbnZwbiBpbml0IHNj
cmlwdCBmcm9tIGEgbGluayBjYWxsZWQiCgllaW5mbyAib3BlbnZwbi5uZXdjb25mbmFtZSAtIGxp
a2Ugc28iCgllaW5mbyAiICAgY2QgL2V0Yy9vcGVudnBuIgoJZWluZm8gIiAgICR7RURJVE9SIyMq
L30gZm9vLmNvbmYiCgllaW5mbyAiICAgY2QgL2V0Yy9pbml0LmQiCgllaW5mbyAiICAgbG4gLXMg
b3BlbnZwbiBvcGVudnBuLmZvbyIKCWVpbmZvICIiCgllaW5mbyAiWW91IGNhbiB0aGVuIHRyZWF0
IG9wZW52cG4uZm9vIGFzIGFueSBvdGhlciBzZXJ2aWNlLCBzbyB5b3UgY2FuIgoJZWluZm8gInN0
b3Agb25lIHZwbiBhbmQgc3RhcnQgYW5vdGhlciBpZiB5b3UgbmVlZCB0by4iCgoJaWYgZ3JlcCAt
RXEgIl5bIFx0XSoodXB8ZG93bilbIFx0XS4qIiAiJHtST09UfS9ldGMvb3BlbnZwbiIvKi5jb25m
IDI+L2Rldi9udWxsIDsgdGhlbgoJCWV3YXJuICIiCgkJZXdhcm4gIldBUk5JTkc6IElmIHlvdSB1
c2UgdGhlIHJlbW90ZSBrZXl3b3JkIHRoZW4geW91IGFyZSBkZWVtZWQgdG8gYmUiCgkJZXdhcm4g
ImEgY2xpZW50IGJ5IG91ciBpbml0IHNjcmlwdCBhbmQgYXMgc3VjaCB3ZSBmb3JjZSB1cCxkb3du
IHNjcmlwdHMuIgoJCWV3YXJuICJUaGVzZSBzY3JpcHRzIGNhbGwgL2V0Yy9vcGVudnBuL1wkU1ZD
TkFNRS17dXAsZG93bn0uc2ggd2hlcmUgeW91IgoJCWV3YXJuICJjYW4gbW92ZSB5b3VyIHNjcmlw
dHMgdG8uIgoJZmkKCglpZiAhIHVzZSBtaW5pbWFsIDsgdGhlbgoJCWVpbmZvICIiCgkJZWluZm8g
InBsdWdpbnMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbnRvIC91c3IvJChnZXRfbGliZGlyKS8ke1BO
fSIKCWZpCn0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>142940</attachid>
            <date>2008-02-07 22:16 0000</date>
            <desc>openvpn-2.1_rc6-udp6.patch</desc>
            <filename>openvpn-2.1_rc6-udp6.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9saWJ0ZXN0LnNoIGIvampvLXRlc3RzL2xpYnRlc3Quc2gK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWIwZDRiNQotLS0gL2Rldi9udWxs
CisrKyBiL2pqby10ZXN0cy9saWJ0ZXN0LnNoCkBAIC0wLDAgKzEsMTE1IEBACisjIS9iaW4vYmFz
aAorCit0eXBlc2V0IC1pIHRlc3RfbnVtPTAgIyBpbmNyZW1lbnRzIHcvZWFjaCB0ZXN0X2RlZmlu
ZQordHlwZXNldCB0ZXN0X21zZwkjIHByZWZpeDogInRlc3QgbnIjIiAgZm9yIG1zZ3MKK3R5cGVz
ZXQgdGVzdF9uYW1lCSMgdGVzdCBuYW1lIGdpdmVuCQordHlwZXNldCB0ZXN0X3NhbmVuYW1lCSMg
dGVzdCBuYW1lIHdpdGggYWxsIHdoaXRlc3BhY2UgKGFuZCBhbGlrZSkgcmVwbGFjZWQgYnkgJ18n
CisKK1RFU1RfQ0xFQU5VUD0iOiIKKworc2F5ICgpIHsKKwllY2hvICIkQCIgPiYzCit9CitlcnIg
KCkgeworCWVjaG8gIiRAIiA+JjQKK30KK2RlYnVnICgpIHsKKwllY2hvICIkQCIgPiY0Cit9Cit0
ZXN0X2RlZmluZSgpIHsKKwl0ZXN0X25hbWU9IiQqIgorCXRlc3Rfc2FuZW5hbWU9IiQoZWNobyAt
biAkdGVzdF9uYW1lfCB0ciAtYyAnW0EtWmEtejAtOS5fXScgXyApIgorCXRlc3RfbnVtPXRlc3Rf
bnVtKzEKKwl0ZXN0X21zZz0idGVzdCAkdGVzdF9udW0iCisJdGVzdF9iZ19jbGVhbnVwIAorfQor
dGVzdF9leHBlY3Rfc3VjY2VzcyAoKSB7CisJbG9jYWwgbXNnPSIkMSIgCisJdGVzdCAkIyAtZ2Ug
MiB8fCB7IGVyciAidXNhZ2UgZXJyb3I6IHRlc3RfZXhwZWN0X2ZhaWx1cmUgbXNnIGNtZCBhcmdz
IC4uLiI7IHJldHVybiAxOyB9CisJc2F5IC1uICIkdGVzdF9tc2c6IC0tICRtc2cgKGV4cGVjdGlu
ZyBzdWNjZXNzKSAiCisJc2hpZnQKKwkoZXZhbCAiJEAiIDQ+JjEpICYmIHsgc2F5IC1lICJcbiR0
ZXN0X21zZzogT0sgJSUlICR0ZXN0X3NhbmVuYW1lIiA7ICByZXR1cm4gMCA7IH0KKwlzYXkgLWUg
IlxuJHRlc3RfbXNnOiBGQUlMRUQgJSUlICR0ZXN0X3NhbmVuYW1lIiAKKwlyZXR1cm4gMQorfQor
Cit0ZXN0X2V4cGVjdF9mYWlsdXJlICgpIHsKKwlsb2NhbCBtc2c9IiQxIiAKKwl0ZXN0ICQjIC1n
ZSAyIHx8IHsgZXJyICJ1c2FnZSBlcnJvcjogdGVzdF9leHBlY3RfZmFpbHVyZSBtc2cgY21kIGFy
Z3MgLi4uIjsgIHJldHVybiAxO30KKwlzYXkgLW4gIiR0ZXN0X21zZzogLS0gJG1zZyAoZXhwZWN0
aW5nIGZhaWx1cmUpICIKKwlzaGlmdAorCShldmFsICIkQCIpICYmIHsgc2F5IC1lICJcbiR0ZXN0
X21zZzogRkFJTEVEICUlJSAkdGVzdF9zYW5lbmFtZSIgPiYzIDsgIHJldHVybiAwIDsgfQorCXNh
eSAtZSAiXG4kdGVzdF9tc2c6IE9LICUlJSAkdGVzdF9zYW5lbmFtZSIKKwlyZXR1cm4gMQorfQor
Cit0ZXN0X2JnX2VncmVwKCkgeworCWxvY2FsIG5zZWNzPSIkMSIKKwlsb2NhbCB0eHQ9IiQyIgor
CWxvY2FsIHJldAorCXNoaWZ0IDIKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkdGVzdF9uYW1lIiBc
CisJCSJzZXQgLW0gOyAkQCAmPiAkdC9vdXQtJHRlc3Rfc2FuZW5hbWUgJgorCQlzPTE7CisJCWZv
ciBpIGluIFwkKHNlcSAxICRuc2Vjcyk7ZG8gCisJCQlzYXkgLW4gJy4nCisJCQlraWxsIC0wICUx
IHx8IHsgZWdyZXAgZmFpbGVkICR0L291dC0kdGVzdF9zYW5lbmFtZSA+JjQ7IGJyZWFrOyB9CisJ
CQlvPVwkKGVncmVwIFwiJHR4dFwiICR0L291dC0kdGVzdF9zYW5lbmFtZSApICYmIHsgZGVidWcg
XCRvOyBzPTA7IGJyZWFrOyB9CisJCQlzbGVlcCAxOworCQlkb25lOworCQlraWxsICUxCisJCXdh
aXQKKwkJZXhpdCBcJHMKKwkJIiAyPi9kZXYvbnVsbCA0PiR0L2VycgorCXJldD0kPworCXRlc3Qg
JHJldCAtZXEgMCAmJiByZXR1cm4gMAorCXNheSAiJHRlc3RfbXNnOiBzZWU6ICR0L291dC0kdGVz
dF9zYW5lbmFtZSoiIAorCXJldHVybiAkcmV0Cit9CisjIHJ1biBjb21tYW5kIGluICpjdXJyZW50
KiBzaGVsbCBpZ25vcmluZyBzdGRlcnIsIGV2YWxzIGFyZ3MgcGFzc2VkCitxdWlldDIoKSB7CisJ
I2JhY2t1cCBmZD0yCisJZXhlYyAyNTA+JjIKKwlleGVjIDI+L2Rldi9udWxsCisJZXZhbCAiJEAi
CisJI2Nsb3NlIGF1eGZkCisJZXhlYyAyPiYyNTAKKwlleGVjIDI1MD4mLQorfQordGVzdF9iZ19w
cmV2KCl7IGxvY2FsIG91dD0kdC9vdXQtJHRlc3Rfc2FuZW5hbWUtcHJldjsgJEAgPiYgJG91dCAm
IH0KK3Rlc3RfYmdfY2xlYW51cCgpIHsgcXVpZXQyICIkVEVTVF9DTEVBTlVQOyR7QDotOn07a2ls
bCAlIDI+L2Rldi9udWxsO3dhaXQiIDt9Cit0ZXN0X3NldF9jbGVhbnVwICgpIHsgVEVTVF9DTEVB
TlVQPSIkeyo6LTp9IiA7fQorCit0PS90bXAKK2V4ZWMgMz4mMQorZXhlYyA0PiYyCisKKyM9PT09
PT09PT0KKworbG4gLXNmICRQV0Qvb3BlbnZwbiAkdC9vcGVudnBuLXRlc3QKK2V4cG9ydCBPUEVO
VlBOPSR0L29wZW52cG4tdGVzdAorCit0ZXN0X3NldF9jbGVhbnVwICJraWxsYWxsICRPUEVOVlBO
IgorCit0cmFwICd0ZXN0X2JnX2NsZWFudXA7ZXhpdCcgMCAyIDE1CisKK3Rlc3RfZGVmaW5lICJV
RFA2IGxvb3BiYWNrIgordGVzdF9iZ19lZ3JlcCAzMCAiSW5pdGlhbGl6YXRpb24gU2VxdWVuY2Ug
Q29tcGxldGVkIiAuLi9qam8tdGVzdHMvcnVuLXVkcDYtMC1sb29wYmFjay1zZWxmLnNoCisKK3Rl
c3RfZGVmaW5lICJVRFA2IGxvb3BiYWNrIGJ5bmFtZSIKK3Rlc3RfYmdfZWdyZXAgMzAgIkluaXRp
YWxpemF0aW9uIFNlcXVlbmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi11ZHA2LTAtbG9v
cGJhY2stYnluYW1lLnNoCisKK3Rlc3RfZGVmaW5lICJUQ1A2IGxvb3BiYWNrIgordGVzdF9iZ19w
cmV2IC4uL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLXNlcnZlci5zaAordGVzdF9iZ19l
Z3JlcCAzMCAiSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UgQ29tcGxldGVkIiAuLi9qam8tdGVzdHMv
cnVuLXRjcDYtMC1sb29wYmFjay1jbGllbnQuc2gKKwordGVzdF9kZWZpbmUgIlRDUDYgbG9vcGJh
Y2sgYnluYW1lIgordGVzdF9iZ19wcmV2IC4uL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LXNlcnZlci1ieW5hbWUuc2gKK3Rlc3RfYmdfZWdyZXAgMzAgIkluaXRpYWxpemF0aW9uIFNlcXVl
bmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi10Y3A2LTAtbG9vcGJhY2stY2xpZW50LWJ5
bmFtZS5zaAorCit0ZXN0X2RlZmluZSAiVURQNCBsb29wYmFjayIKK3Rlc3RfYmdfZWdyZXAgMzAg
IkluaXRpYWxpemF0aW9uIFNlcXVlbmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi11ZHA0
LTAtbG9vcGJhY2stc2VsZi5zaAorCit0ZXN0X2RlZmluZSAiVENQNCBsb29wYmFjayIKK3Rlc3Rf
YmdfcHJldiAuLi9qam8tdGVzdHMvcnVuLXRjcDQtMC1sb29wYmFjay1zZXJ2ZXIuc2ggCit0ZXN0
X2JnX2VncmVwIDMwICJJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSBDb21wbGV0ZWQiIC4uL2pqby10
ZXN0cy9ydW4tdGNwNC0wLWxvb3BiYWNrLWNsaWVudC5zaApkaWZmIC0tZ2l0IGEvampvLXRlc3Rz
L3FlbXUtaWZ1cC0yLmpqby5zaCBiL2pqby10ZXN0cy9xZW11LWlmdXAtMi5qam8uc2gKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjA0MThhZAotLS0gL2Rldi9udWxsCisrKyBi
L2pqby10ZXN0cy9xZW11LWlmdXAtMi5qam8uc2gKQEAgLTAsMCArMSwxMiBAQAorIyEvYmluL3No
IC14Cisjc3VkbyBzaCAtYyAiL3NiaW4vaWZjb25maWcgJDEgaHcgZXRoZXIgMDA6MDA6MDA6MDA6
MDA6MDE7IC9zYmluL2lmY29uZmlnICQxIDE5Mi4xNjguMjU0LjEiCitleHBvcnQgUEFUSD0vc2Jp
bjovdXNyL3NiaW46JFBBVEgKK05VTT0yCitERVY9cWVtdXR1biROVU0KK3N1ZG8gc2ggLXggPDxF
T0YKK2lwIGxpIHNldCAkMSBuYW1lICRERVYKK2lwIGxpIHNldCAkREVWIGFkZHJlc3MgMDA6MDA6
MDA6MDA6MDA6MDEKK2lwIGxpIHNldCAkREVWIHVwCitpcCBhZCBhZGQgMTkyLjE2OC4yNTQuMSBk
ZXYgJERFVgoraXAgcm8gYWRkIDE5Mi4xNjguMjU0LiROVU0gZGV2ICRERVYKK0VPRgpkaWZmIC0t
Z2l0IGEvampvLXRlc3RzL3FlbXUtaWZ1cC0zLmpqby5zaCBiL2pqby10ZXN0cy9xZW11LWlmdXAt
My5qam8uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTZjMmYzMwotLS0g
L2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9xZW11LWlmdXAtMy5qam8uc2gKQEAgLTAsMCArMSwx
MiBAQAorIyEvYmluL3NoIC14Cisjc3VkbyBzaCAtYyAiL3NiaW4vaWZjb25maWcgJDEgaHcgZXRo
ZXIgMDA6MDA6MDA6MDA6MDA6MDE7IC9zYmluL2lmY29uZmlnICQxIDE5Mi4xNjguMjU0LjEiCitl
eHBvcnQgUEFUSD0vc2JpbjovdXNyL3NiaW46JFBBVEgKK05VTT0zCitERVY9cWVtdXR1biROVU0K
K3N1ZG8gc2ggLXggPDxFT0YKK2lwIGxpIHNldCAkMSBuYW1lICRERVYKK2lwIGxpIHNldCAkREVW
IGFkZHJlc3MgMDA6MDA6MDA6MDA6MDA6MDEKK2lwIGxpIHNldCAkREVWIHVwCitpcCBhZCBhZGQg
MTkyLjE2OC4yNTQuMSBkZXYgJERFVgoraXAgcm8gYWRkIDE5Mi4xNjguMjU0LiROVU0gZGV2ICRE
RVYKK0VPRgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1hZnVuaXgtMC1sb29wLnNoIGIvampv
LXRlc3RzL3J1bi1hZnVuaXgtMC1sb29wLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAuLmVkNTA2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLWFmdW5peC0w
LWxvb3Auc2gKQEAgLTAsMCArMSw0IEBACisjIS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29w
ZW52cG59CitybSAtZnYgL3RtcC9vLnMKKyR7T1BFTlZQTn0gLS1wcm90byB1bml4LWRncmFtIC0t
bG9jYWwgL3RtcC9vLnMgLS1yZW1vdGUgL3RtcC9vLnMgLS1kZXYgdHVuIC0taWZjb25maWcgMS4x
LjEuMSAxLjEuMS4yIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5ICQqCmRpZmYgLS1naXQgYS9qam8t
dGVzdHMvcnVuLWFmdW5peC0xLW8xLnNoIGIvampvLXRlc3RzL3J1bi1hZnVuaXgtMS1vMS5zaApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjFkZjBmCi0tLSAvZGV2L251bGwK
KysrIGIvampvLXRlc3RzL3J1bi1hZnVuaXgtMS1vMS5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jp
bi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7T1BFTlZQTn0gLS1wcm90byB1bml4
LWRncmFtIC0tbG9jYWwgL3RtcC9vMS5zIC0tcmVtb3RlIC90bXAvbzIucyAtLWRldiB0dW4gLS1p
ZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjIgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgJCoKZGlmZiAt
LWdpdCBhL2pqby10ZXN0cy9ydW4tYWZ1bml4LTEtbzIuc2ggYi9qam8tdGVzdHMvcnVuLWFmdW5p
eC0xLW8yLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZlOTQyMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLWFmdW5peC0xLW8yLnNoCkBAIC0wLDAgKzEs
MyBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAt
LXByb3RvIHVuaXgtZGdyYW0gLS1sb2NhbCAvdG1wL28yLnMgLS1yZW1vdGUgL3RtcC9vMS5zIC0t
ZGV2IHR1biAtLWlmY29uZmlnIDEuMS4xLjIgMS4xLjEuMSAtLXNlY3JldCAuLi9vcGVudnBuLmtl
eSAkKgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1veGctMS5zaCBiL2pqby10ZXN0cy9ydW4t
b3hnLTEuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjFmZDAyZgotLS0g
L2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tb3hnLTEuc2gKQEAgLTAsMCArMSwzIEBACisj
IS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiB0
dW4gLS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tbHBvcnQgNTAyMCAtLXJwb3J0IDEx
OTQgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjIgIiRA
IgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1veGctMi5zaCBiL2pqby10ZXN0cy9ydW4tb3hn
LTIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWVhNjM0NQotLS0gL2Rl
di9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tb3hnLTIuc2gKQEAgLTAsMCArMSwzIEBACisjIS9i
aW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiB0dW4g
LS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tbHBvcnQgNTAyMCAtLXJwb3J0IDExOTQg
LS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4yIDEuMS4xLjEgIiRAIgpk
aWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stY2xpZW50LnNoIGIvampv
LXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stY2xpZW50LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAuLjk1NmQ0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVu
LXRjcDQtMC1sb29wYmFjay1jbGllbnQuc2gKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggLXgK
KzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59IC0tZGV2IG51bGwgLS1wcm90byB0
Y3AtY2xpZW50IC0tcmVtb3RlIGxvY2FsaG9zdCAtLXJwb3J0IDUwMTEgLS1zZWNyZXQgLi4vb3Bl
bnZwbi5rZXkgIiRAIgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2st
c2VydmVyLnNoIGIvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stc2VydmVyLnNoCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBjYWIzODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9qam8tdGVzdHMvcnVuLXRjcDQtMC1sb29wYmFjay1zZXJ2ZXIuc2gKQEAgLTAsMCArMSwzIEBA
CisjIS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRl
diBudWxsIC0tcHJvdG8gdGNwLXNlcnZlciAtLXJlbW90ZSBsb2NhbGhvc3QgLS1scG9ydCA1MDEx
IC0tc2VjcmV0IC4uL29wZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4t
dGNwNi0wLWxvb3BiYWNrLWNsaWVudC1ieW5hbWUuc2ggYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1s
b29wYmFjay1jbGllbnQtYnluYW1lLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLmY4YjJjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29w
YmFjay1jbGllbnQtYnluYW1lLnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC14Cis6ICR7
T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAgLS1kZXYgbnVsbCAtLXByb3RvIHRjcDYt
Y2xpZW50IC0tcmVtb3RlIGlwNi1sb2NhbGhvc3QgLS1ycG9ydCA1MDExIC0tc2VjcmV0IC4uL29w
ZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LWNsaWVudC5zaCBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLWNsaWVudC5zaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOTg1MWM1Ci0tLSAvZGV2L251bGwKKysr
IGIvampvLXRlc3RzL3J1bi10Y3A2LTAtbG9vcGJhY2stY2xpZW50LnNoCkBAIC0wLDAgKzEsMyBA
QAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAgLS1k
ZXYgbnVsbCAtLXByb3RvIHRjcDYtY2xpZW50IC0tcmVtb3RlIDo6MSAtLXJwb3J0IDUwMTEgLS1z
ZWNyZXQgLi4vb3BlbnZwbi5rZXkgIiRAIgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A2
LTAtbG9vcGJhY2stc2VydmVyLWJ5bmFtZS5zaCBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3Bi
YWNrLXNlcnZlci1ieW5hbWUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
OGZlYWQzYwotLS0gL2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LXNlcnZlci1ieW5hbWUuc2gKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggLXgKKzogJHtPUEVO
VlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiBudWxsIC0tcHJvdG8gdGNwNi1zZXJ2
ZXIgLS1sb2NhbCBpcDYtbG9jYWxob3N0IC0tbHBvcnQgNTAxMSAtLXNlY3JldCAuLi9vcGVudnBu
LmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29wYmFjay1zZXJ2
ZXIuc2ggYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29wYmFjay1zZXJ2ZXIuc2gKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWQzNjU1NQotLS0gL2Rldi9udWxsCisrKyBiL2pq
by10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLXNlcnZlci5zaApAQCAtMCwwICsxLDMgQEAKKyMh
L2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7T1BFTlZQTn0gIC0tZGV2IG51
bGwgLS1wcm90byB0Y3A2LXNlcnZlciAtLWxvY2FsIDo6IC0tbHBvcnQgNTAxMSAtLXNlY3JldCAu
Li9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDQtMC1sb29w
YmFjay1zZWxmLnNoIGIvampvLXRlc3RzL3J1bi11ZHA0LTAtbG9vcGJhY2stc2VsZi5zaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43YTI5YTNkCi0tLSAvZGV2L251bGwKKysr
IGIvampvLXRlc3RzL3J1bi11ZHA0LTAtbG9vcGJhY2stc2VsZi5zaApAQCAtMCwwICsxLDMgQEAK
KyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59
IC0tZGV2IG51bGwgLS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tcG9ydCA1MDExIC0t
c2VjcmV0IC4uL29wZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRw
NC0xLXFlbXUtZ3Vlc3Quc2ggYi9qam8tdGVzdHMvcnVuLXVkcDQtMS1xZW11LWd1ZXN0LnNoCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkY2I2NDEKLS0tIC9kZXYvbnVsbAor
KysgYi9qam8tdGVzdHMvcnVuLXVkcDQtMS1xZW11LWd1ZXN0LnNoCkBAIC0wLDAgKzEsMyBAQAor
IyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0g
LS1kZXYgdHVuIC0tcHJvdG8gdWRwIC0tcmVtb3RlIDEwLjAuMi4yIC0tcG9ydCA1MDExIC0tc2Vj
cmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWcgMS4xLjEuMjUzIDEuMS4xLjEKZGlmZiAtLWdp
dCBhL2pqby10ZXN0cy9ydW4tdWRwNC0xLXFlbXUtaG9zdC5zaCBiL2pqby10ZXN0cy9ydW4tdWRw
NC0xLXFlbXUtaG9zdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZGI0
NWYyCi0tLSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA0LTEtcWVtdS1ob3N0LnNo
CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQor
JHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8gdWRwIC0tZmxvYXQgLS1wb3J0IDUw
MTEgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjI1Mwpk
aWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi11ZHA0LTItTUguc2ggYi9qam8tdGVzdHMvcnVuLXVk
cDQtMi1NSC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MzU4ZmJjCi0t
LSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA0LTItTUguc2gKQEAgLTAsMCArMSw0
IEBACisjIS9iaW4vc2ggLXgKKyNwYXNzIC0tbG9jYWwgQUREUiAtLXJlbW90ZSBBRERSCis6ICR7
T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8g
dWRwIC0tcG9ydCA1MDExIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWctbm9leGVj
ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRwNi0wLWxvb3BiYWNrLWJ5bmFtZS5z
aCBiL2pqby10ZXN0cy9ydW4tdWRwNi0wLWxvb3BiYWNrLWJ5bmFtZS5zaApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi45OTNlZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvampvLXRl
c3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stYnluYW1lLnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmlu
L3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYg
bnVsbCAtLXByb3RvIHVkcDYgLS1yZW1vdGUgaXA2LWxvY2FsaG9zdCAtLXBvcnQgNTAxMSAtLXNl
Y3JldCAuLi9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDYt
MC1sb29wYmFjay1zZWxmLnNoIGIvampvLXRlc3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stc2VsZi5z
aApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NjliYzM5Ci0tLSAvZGV2L251
bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stc2VsZi5zaApAQCAtMCwwICsx
LDMgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7R0RCfSAke09Q
RU5WUE59IC0tZGV2IG51bGwgLS1wcm90byB1ZHA2IC0tcmVtb3RlIDo6MSAtLXBvcnQgNTAxMSAt
LXNlY3JldCAuLi9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVk
cDYtMS1jYXJwZWRpZW0uc2ggYi9qam8tdGVzdHMvcnVuLXVkcDYtMS1jYXJwZWRpZW0uc2gKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmNjZTM1ZQotLS0gL2Rldi9udWxsCisr
KyBiL2pqby10ZXN0cy9ydW4tdWRwNi0xLWNhcnBlZGllbS5zaApAQCAtMCwwICsxLDQgQEAKKyMh
L2Jpbi9zaCAteAorUkVNNj0iZmU4MDo6MmUwOjdkZmY6ZmVlMzplZjE3IgorOiAke09QRU5WUE46
PS4vb3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59IC0tZGV2IHR1biAtLXByb3RvIHVkcDYgLS1y
ZW1vdGUgIiRSRU02IiAtLXBvcnQgNTAxMCAtLXNlY3JldCAuLi9vcGVudnBuLmtleSAtLWlmY29u
ZmlnIDEuMS4xLjI1MyAxLjEuMS4xCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDYtMS1j
eC5zaCBiL2pqby10ZXN0cy9ydW4tdWRwNi0xLWN4LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAuLmFiNjllYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXVk
cDYtMS1jeC5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4v
b3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59IC0tdmVyYiA1IC0tZGV2IHR1biAtLXByb3RvIHVk
cDYgLS1wb3J0IDUwMTAgLS1zZWNyZXQgL2hvbWUvampvL3NyYy9qdWFuam8vb3BlbnZwbi9vcGVu
dnBuLmtleSAtLWZsb2F0IC0taWZjb25maWcgMS4xLjEuMSAxLjEuMS4yNTMKZGlmZiAtLWdpdCBh
L2pqby10ZXN0cy9ydW4tdWRwNi0yLXFlbXUtZ3Vlc3Quc2ggYi9qam8tdGVzdHMvcnVuLXVkcDYt
Mi1xZW11LWd1ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBlMjgw
YTcKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXVkcDYtMi1xZW11LWd1ZXN0LnNo
CkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQor
Y2FzZSAiJDEiIGluCistLWZyZWVic2QpIHNoaWZ0O3NldCAtLSAgIGVkMCAiJEAiOzsKKy0tb3Bl
bmJzZCkgc2hpZnQ7c2V0IC0tICAgbmUzIC0tZGV2IHR1bjAgIiRAIjs7Citlc2FjCitERVY9JHsx
Oj9taXNzaW5nIGRldm5hbWV9O3NoaWZ0Ciske0dEQn0gJHtPUEVOVlBOfSAtLWRldiB0dW4gLS1w
cm90byB1ZHA2IC0tcmVtb3RlIGZlODA6OjIwMDpmZjpmZTAwOjElJERFViAtLXBvcnQgNTAxMCAt
LXNlY3JldCAuLi9vcGVudnBuLmtleSAiJEAiIC0taWZjb25maWcgMS4xLjEuMjUzIDEuMS4xLjEK
ZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRwNi0yLXFlbXUtaG9zdC5zaCBiL2pqby10ZXN0
cy9ydW4tdWRwNi0yLXFlbXUtaG9zdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwLi41MDBmMGQzCi0tLSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA2LTItcWVt
dS1ob3N0LnNoCkBAIC0wLDAgKzEsNCBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9v
cGVudnBufQorREVWPSR7MTo/bWlzc2luZyBkZXZuYW1lfTtzaGlmdAorJHtHREJ9ICR7T1BFTlZQ
Tn0gLS1kZXYgdHVuIC0tcHJvdG8gdWRwNiAtLXJlbW90ZSBmZTgwOjo1MDU0OmZmOmZlMTI6MzQ1
NiUkREVWIC0tcG9ydCA1MDEwIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWcgIDEu
MS4xLjEgMS4xLjEuMjUzICIkQCIKZGlmZiAtLWdpdCBhL29wZW52cG4vYnVmZmVyLmMgYi9vcGVu
dnBuL2J1ZmZlci5jCmluZGV4IDY0MzA3ZWYuLjA2NTA3NDUgMTAwNjQ0Ci0tLSBhL29wZW52cG4v
YnVmZmVyLmMKKysrIGIvb3BlbnZwbi9idWZmZXIuYwpAQCAtMTk4LDYgKzE5OCwxOSBAQCBidWZf
cHJpbnRmIChzdHJ1Y3QgYnVmZmVyICpidWYsIGNvbnN0IGNoCiAgICAgfQogfQogCit2b2lkIGJ1
Zl9wdXRzKHN0cnVjdCBidWZmZXIgKmJ1ZiwgY29uc3QgY2hhciAqc3RyKQoreworICB1aW50OF90
ICpwdHIgPSBCRU5EIChidWYpOworICBpbnQgY2FwID0gYnVmX2ZvcndhcmRfY2FwYWNpdHkgKGJ1
Zik7CisgIGlmIChjYXAgPiAwKQorICAgIHsKKyAgICAgIHN0cm5jcHludCAoKGNoYXIgKilwdHIs
c3RyLCBjYXApOworICAgICAgKihidWYtPmRhdGEgKyBidWYtPmNhcGFjaXR5IC0gMSkgPSAwOyAv
KiB3aW5kb3dzIHZzbnByaW50ZiBuZWVkcyB0aGlzICovCisgICAgICBidWYtPmxlbiArPSAoaW50
KSBzdHJsZW4gKChjaGFyICopcHRyKTsKKyAgICB9Cit9CisgCisKIC8qCiAgKiBUaGlzIGlzIG5l
Y2Vzc2FyeSBkdWUgdG8gY2VydGFpbiBidWdneSBpbXBsZW1lbnRhdGlvbnMgb2Ygc25wcmludGYs
CiAgKiB0aGF0IGRvbid0IGd1YXJhbnRlZSBudWxsIHRlcm1pbmF0aW9uIGZvciBzaXplID4gMC4K
ZGlmZiAtLWdpdCBhL29wZW52cG4vY29uZmlndXJlLmFjIGIvb3BlbnZwbi9jb25maWd1cmUuYWMK
aW5kZXggODg0M2EyYy4uOGNlYTIwNCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9jb25maWd1cmUuYWMK
KysrIGIvb3BlbnZwbi9jb25maWd1cmUuYWMKQEAgLTEwMSw2ICsxMDEsMTIgQEAgQUNfQVJHX0VO
QUJMRShtdWx0aWhvbWUsCiAgICBbTVVMVElIT01FPSJ5ZXMiXQogKQogCitBQ19BUkdfRU5BQkxF
KGlwdjYsCisgICBbICAtLWRpc2FibGUtaXB2NiAgICAgICAgICBEaXNhYmxlIFVEUC9JUHY2IHN1
cHBvcnRdLAorICAgW1BGX0lORVQ2PSIkZW5hYmxldmFsIl0sCisgICBbUEZfSU5FVDY9InllcyJd
CispCisKIEFDX0FSR19FTkFCTEUocG9ydC1zaGFyZSwKICAgIFsgIC0tZGlzYWJsZS1wb3J0LXNo
YXJlICAgIERpc2FibGUgVENQIHNlcnZlciBwb3J0LXNoYXJlIHN1cHBvcnQgKC0tcG9ydC1zaGFy
ZSldLAogICAgW1BPUlRfU0hBUkU9IiRlbmFibGV2YWwiXSwKQEAgLTQwNiw2ICs0MTIsMTYgQEAg
TERGTEFHUz0iJExERkxBR1MgLVdsLC0tZmF0YWwtd2FybmluZ3MiCiBBQ19DSEVDS19GVU5DUyhl
cG9sbF9jcmVhdGUsIEFDX0RFRklORShbSEFWRV9FUE9MTF9DUkVBVEVdLCAxLCBbXSkpCiBMREZM
QUdTPSIkT0xETERGTEFHUyIKIAorZG5sIGlwdjYgc3VwcG9ydAoraWYgdGVzdCAiJFBGX0lORVQ2
IiA9ICJ5ZXMiOyB0aGVuCisgIEFDX0NIRUNLSU5HKFtmb3Igc3RydWN0IHNvY2thZGRyX2luNiBm
b3IgSVB2NiBzdXBwb3J0XSkKKyAgQUNfQ0hFQ0tfVFlQRSgKKyAgICAgIFtzdHJ1Y3Qgc29ja2Fk
ZHJfaW42XSwKKyAgICAgIFtBQ19ERUZJTkUoVVNFX1BGX0lORVQ2LCAxLCBbc3RydWN0IHNvY2th
ZGRyX2luNiBpcyBuZWVkZWQgZm9yIElQdjYgcGVlciBzdXBwb3J0XSldLAorICAgICAgW10sCisg
ICAgICBbI2luY2x1ZGUgInN5c2hlYWQuaCJdKQorZmkKKwogZG5sCiBkbmwgY2hlY2sgZm9yIHZh
bGdyaW5kIHRvb2wKIGRubApkaWZmIC0tZ2l0IGEvb3BlbnZwbi9oZWxwZXIuYyBiL29wZW52cG4v
aGVscGVyLmMKaW5kZXggZDJiM2Q2Zi4uNDU5ZjAwZCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9oZWxw
ZXIuYworKysgYi9vcGVudnBuL2hlbHBlci5jCkBAIC0zNTgsNiArMzU4LDEwIEBAICNlbmRpZiAv
KiBQMk1QX1NFUlZFUiAqLwogCiAgICAgICBpZiAoby0+cHJvdG8gPT0gUFJPVE9fVENQdjQpCiAJ
by0+cHJvdG8gPSBQUk9UT19UQ1B2NF9DTElFTlQ7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAg
ICBlbHNlIGlmIChvLT5wcm90byA9PSBQUk9UT19UQ1B2NikKKwlvLT5wcm90byA9IFBST1RPX1RD
UHY2X0NMSUVOVDsKKyNlbmRpZgogICAgIH0KIAogI2VuZGlmIC8qIFAyTVAgKi8KZGlmZiAtLWdp
dCBhL29wZW52cG4vaW5pdC5jIGIvb3BlbnZwbi9pbml0LmMKaW5kZXggMjQ0ZjAzYy4uMGQ5Mjll
NCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9pbml0LmMKKysrIGIvb3BlbnZwbi9pbml0LmMKQEAgLTcw
Myw3ICs3MDMsNyBAQCAjaWZkZWYgRU5BQkxFX01BTkFHRU1FTlQKICAgICAgIGNvbnN0IGNoYXIg
KmRldGFpbCA9ICJTVUNDRVNTIjsKICAgICAgIGlmIChjLT5jMS50dW50YXApCiAJdHVuX2xvY2Fs
ID0gYy0+YzEudHVudGFwLT5sb2NhbDsKLSAgICAgIHR1bl9yZW1vdGUgPSBodG9ubCAoYy0+YzEu
bGlua19zb2NrZXRfYWRkci5hY3R1YWwuZGVzdC5zYS5zaW5fYWRkci5zX2FkZHIpOworICAgICAg
dHVuX3JlbW90ZSA9IGh0b25sIChjLT5jMS5saW5rX3NvY2tldF9hZGRyLmFjdHVhbC5kZXN0LmFk
ZHIuaW40LnNpbl9hZGRyLnNfYWRkcik7CiAgICAgICBpZiAoZmxhZ3MgJiBJU0NfRVJST1JTKQog
CWRldGFpbCA9ICJFUlJPUiI7CiAgICAgICBtYW5hZ2VtZW50X3NldF9zdGF0ZSAobWFuYWdlbWVu
dCwKQEAgLTExMDUsNyArMTEwNSw3IEBAIGRvX2RlZmVycmVkX29wdGlvbnMgKHN0cnVjdCBjb250
ZXh0ICpjLCAKICNpZmRlZiBFTkFCTEVfT0NDCiAgIGlmIChmb3VuZCAmIE9QVF9QX0VYUExJQ0lU
X05PVElGWSkKICAgICB7Ci0gICAgICBpZiAoYy0+b3B0aW9ucy5wcm90byAhPSBQUk9UT19VRFB2
NCAmJiBjLT5vcHRpb25zLmV4cGxpY2l0X2V4aXRfbm90aWZpY2F0aW9uKQorICAgICAgaWYgKCFw
cm90b19pc191ZHAoYy0+b3B0aW9ucy5wcm90bykgJiYgYy0+b3B0aW9ucy5leHBsaWNpdF9leGl0
X25vdGlmaWNhdGlvbikKIAl7CiAJICBtc2cgKERfUFVTSCwgIk9QVElPTlMgSU1QT1JUOiAtLWV4
cGxpY2l0LWV4aXQtbm90aWZ5IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLXByb3RvIHVkcCIpOwog
CSAgYy0+b3B0aW9ucy5leHBsaWNpdF9leGl0X25vdGlmaWNhdGlvbiA9IDA7CkBAIC0xMjAwLDEy
ICsxMjAwLDIxIEBAICNlbmRpZgogICBzd2l0Y2ggKGMtPm9wdGlvbnMucHJvdG8pCiAgICAgewog
ICAgIGNhc2UgUFJPVE9fVURQdjQ6CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBQUk9U
T19VRFB2NjoKKyNlbmRpZgogICAgICAgaWYgKHByb3h5KQogCXNlYyA9IGMtPm9wdGlvbnMuY29u
bmVjdF9yZXRyeV9zZWNvbmRzOwogICAgICAgYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2Cisg
ICAgY2FzZSBQUk9UT19UQ1B2Nl9TRVJWRVI6CisjZW5kaWYKICAgICBjYXNlIFBST1RPX1RDUHY0
X1NFUlZFUjoKICAgICAgIHNlYyA9IDE7CiAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5F
VDYKKyAgICBjYXNlIFBST1RPX1RDUHY2X0NMSUVOVDoKKyNlbmRpZgogICAgIGNhc2UgUFJPVE9f
VENQdjRfQ0xJRU5UOgogICAgICAgc2VjID0gYy0+b3B0aW9ucy5jb25uZWN0X3JldHJ5X3NlY29u
ZHM7CiAgICAgICBicmVhazsKQEAgLTIyOTIsNyArMjMwMSw3IEBAIGRvX3NldHVwX2Zhc3RfaW8g
KHN0cnVjdCBjb250ZXh0ICpjKQogI2lmZGVmIFdJTjMyCiAgICAgICBtc2cgKE1fSU5GTywgIk5P
VEU6IC0tZmFzdC1pbyBpcyBkaXNhYmxlZCBzaW5jZSB3ZSBhcmUgcnVubmluZyBvbiBXaW5kb3dz
Iik7CiAjZWxzZQotICAgICAgaWYgKGMtPm9wdGlvbnMucHJvdG8gIT0gUFJPVE9fVURQdjQpCisg
ICAgICBpZiAoIXByb3RvX2lzX3VkcChjLT5vcHRpb25zLnByb3RvKSkKIAltc2cgKE1fSU5GTywg
Ik5PVEU6IC0tZmFzdC1pbyBpcyBkaXNhYmxlZCBzaW5jZSB3ZSBhcmUgbm90IHVzaW5nIFVEUCIp
OwogICAgICAgZWxzZQogCXsKQEAgLTI1NDksNyArMjU1OCwxMSBAQCBpbml0X2luc3RhbmNlIChz
dHJ1Y3QgY29udGV4dCAqYywgY29uc3QgCiAgIC8qIGxpbmtfc29ja2V0X21vZGUgYWxsb3dzIENN
X0NISUxEX1RDUAogICAgICBpbnN0YW5jZXMgdG8gaW5oZXJpdCBhY2NlcHRhYmxlIGZkcwogICAg
ICBmcm9tIGEgdG9wLWxldmVsIHBhcmVudCAqLworI2lmZGVmIFVTRV9QRl9JTkVUNgorICBpZiAo
Yy0+b3B0aW9ucy5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIgfHwgYy0+b3B0aW9ucy5wcm90
byA9PSBQUk9UT19UQ1B2Nl9TRVJWRVIpCisjZWxzZQogICBpZiAoYy0+b3B0aW9ucy5wcm90byA9
PSBQUk9UT19UQ1B2NF9TRVJWRVIpCisjZW5kaWYKICAgICB7CiAgICAgICBpZiAoYy0+bW9kZSA9
PSBDTV9UT1ApCiAJbGlua19zb2NrZXRfbW9kZSA9IExTX01PREVfVENQX0xJU1RFTjsKQEAgLTI4
MDksMTcgKzI4MjIsNyBAQCBpbmhlcml0X2NvbnRleHRfY2hpbGQgKHN0cnVjdCBjb250ZXh0ICpk
CiB7CiAgIENMRUFSICgqZGVzdCk7CiAKLSAgc3dpdGNoIChzcmMtPm9wdGlvbnMucHJvdG8pCi0g
ICAgewotICAgIGNhc2UgUFJPVE9fVURQdjQ6Ci0gICAgICBkZXN0LT5tb2RlID0gQ01fQ0hJTERf
VURQOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9UT19UQ1B2NF9TRVJWRVI6Ci0gICAgICBk
ZXN0LT5tb2RlID0gQ01fQ0hJTERfVENQOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgIEFTU0VSVCAoMCk7Ci0gICAgfQorICBkZXN0LT5tb2RlID0gcHJvdG9faXNfZGdyYW0oc3Jj
LT5vcHRpb25zLnByb3RvKT8gQ01fQ0hJTERfVURQIDogQ01fQ0hJTERfVENQOwogCiAgIGRlc3Qt
PmdjID0gZ2NfbmV3ICgpOwogCkBAIC0yOTI0LDcgKzI5MjcsNyBAQCAjZW5kaWYKICAgZGVzdC0+
YzIuYnVmZmVyc19vd25lZCA9IGZhbHNlOwogCiAgIGRlc3QtPmMyLmV2ZW50X3NldCA9IE5VTEw7
Ci0gIGlmIChzcmMtPm9wdGlvbnMucHJvdG8gPT0gUFJPVE9fVURQdjQpCisgIGlmIChwcm90b19p
c19kZ3JhbShzcmMtPm9wdGlvbnMucHJvdG8pKQogICAgIGRvX2V2ZW50X3NldF9pbml0IChkZXN0
LCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL29wZW52cG4vbWFuYWdlLmMgYi9vcGVudnBuL21h
bmFnZS5jCmluZGV4IDk5M2FmYTIuLjI2MTUxMzcgMTAwNjQ0Ci0tLSBhL29wZW52cG4vbWFuYWdl
LmMKKysrIGIvb3BlbnZwbi9tYW5hZ2UuYwpAQCAtMTM1MSw5ICsxMzUxLDkgQEAgbWFuX3NldHRp
bmdzX2luaXQgKHN0cnVjdCBtYW5fc2V0dGluZ3MgKgogICAgICAgLyoKICAgICAgICAqIEluaXRp
YWxpemUgc29ja2V0IGFkZHJlc3MKICAgICAgICAqLwotICAgICAgbXMtPmxvY2FsLnNhLnNpbl9m
YW1pbHkgPSBBRl9JTkVUOwotICAgICAgbXMtPmxvY2FsLnNhLnNpbl9hZGRyLnNfYWRkciA9IDA7
Ci0gICAgICBtcy0+bG9jYWwuc2Euc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CisgICAgICBtcy0+
bG9jYWwuYWRkci5pbjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICBtcy0+bG9jYWwuYWRk
ci5pbjQuc2luX2FkZHIuc19hZGRyID0gMDsKKyAgICAgIG1zLT5sb2NhbC5hZGRyLmluNC5zaW5f
cG9ydCA9IGh0b25zIChwb3J0KTsKIAogICAgICAgLyoKICAgICAgICAqIFJ1biBtYW5hZ2VtZW50
IG92ZXIgdHVubmVsLCBvcgpAQCAtMTM2NSw3ICsxMzY1LDcgQEAgbWFuX3NldHRpbmdzX2luaXQg
KHN0cnVjdCBtYW5fc2V0dGluZ3MgKgogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBtcy0+bG9jYWwu
c2Euc2luX2FkZHIuc19hZGRyID0gZ2V0YWRkcgorCSAgbXMtPmxvY2FsLmFkZHIuaW40LnNpbl9h
ZGRyLnNfYWRkciA9IGdldGFkZHIKIAkgICAgKEdFVEFERFJfUkVTT0xWRXxHRVRBRERSX1dBUk5f
T05fU0lHTkFMfEdFVEFERFJfRkFUQUwsIGFkZHIsIDAsIE5VTEwsIE5VTEwpOwogCX0KICAgICAg
IApAQCAtMTYzNCw3ICsxNjM0LDcgQEAgbWFuYWdlbWVudF9wb3N0X3R1bm5lbF9vcGVuIChzdHJ1
Y3QgbWFuYQogICAgICAgJiYgbWFuLT5jb25uZWN0aW9uLnN0YXRlID09IE1TX0lOSVRJQUwpCiAg
ICAgewogICAgICAgLyogbGlzdGVuIG9uIG91ciBsb2NhbCBUVU4vVEFQIElQIGFkZHJlc3MgKi8K
LSAgICAgIG1hbi0+c2V0dGluZ3MubG9jYWwuc2Euc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKHR1
bl9sb2NhbF9pcCk7CisgICAgICBtYW4tPnNldHRpbmdzLmxvY2FsLmFkZHIuaW40LnNpbl9hZGRy
LnNfYWRkciA9IGh0b25sICh0dW5fbG9jYWxfaXApOwogICAgICAgbWFuX2Nvbm5lY3Rpb25faW5p
dCAobWFuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL29wZW52cG4vbXJvdXRlLmMgYi9vcGVudnBu
L21yb3V0ZS5jCmluZGV4IGE3ZDEyMTUuLjhkODU1MTggMTAwNjQ0Ci0tLSBhL29wZW52cG4vbXJv
dXRlLmMKKysrIGIvb3BlbnZwbi9tcm91dGUuYwpAQCAtMTc1LDI1ICsxNzUsNDcgQEAgYm9vbCBt
cm91dGVfZXh0cmFjdF9vcGVudnBuX3NvY2thZGRyIChzdAogCQkJCSAgICAgIGNvbnN0IHN0cnVj
dCBvcGVudnBuX3NvY2thZGRyICpvc2FkZHIsCiAJCQkJICAgICAgYm9vbCB1c2VfcG9ydCkKIHsK
LSAgaWYgKG9zYWRkci0+c2Euc2luX2ZhbWlseSA9PSBBRl9JTkVUKQorICBzd2l0Y2ggKG9zYWRk
ci0+YWRkci5zYS5zYV9mYW1pbHkpIAorICB7CisgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAg
ICAgIGlmICh1c2VfcG9ydCkKIAl7CiAJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY0IHwgTVJf
V0lUSF9QT1JUOwogCSAgYWRkci0+bmV0Yml0cyA9IDA7CiAJICBhZGRyLT5sZW4gPSA2OwotCSAg
bWVtY3B5IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIsIDQpOwotCSAg
bWVtY3B5IChhZGRyLT5hZGRyICsgNCwgJm9zYWRkci0+c2Euc2luX3BvcnQsIDIpOworCSAgbWVt
Y3B5IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIsIDQpOwor
CSAgbWVtY3B5IChhZGRyLT5hZGRyICsgNCwgJm9zYWRkci0+YWRkci5pbjQuc2luX3BvcnQsIDIp
OwogCX0KICAgICAgIGVsc2UKIAl7CiAJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY0OwogCSAg
YWRkci0+bmV0Yml0cyA9IDA7CiAJICBhZGRyLT5sZW4gPSA0OwotCSAgbWVtY3B5IChhZGRyLT5h
ZGRyLCAmb3NhZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIsIDQpOworCSAgbWVtY3B5IChhZGRyLT5h
ZGRyLCAmb3NhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIsIDQpOwogCX0KICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2
OgorICAgICAgaWYgKHVzZV9wb3J0KQorCXsKKwkgIGFkZHItPnR5cGUgPSBNUl9BRERSX0lQVjYg
fCBNUl9XSVRIX1BPUlQ7CisJICBhZGRyLT5uZXRiaXRzID0gMDsKKwkgIGFkZHItPmxlbiA9IDE4
OworCSAgbWVtY3B5IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5hZGRyLmluNi5zaW42X2FkZHIsIDE2
KTsKKwkgIG1lbWNweSAoYWRkci0+YWRkciArIDE2LCAmb3NhZGRyLT5hZGRyLmluNi5zaW42X3Bv
cnQsIDIpOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBhZGRyLT50eXBlID0gTVJfQUREUl9JUFY2
OworCSAgYWRkci0+bmV0Yml0cyA9IDA7CisJICBhZGRyLT5sZW4gPSAxNjsKKwkgIG1lbWNweSAo
YWRkci0+YWRkciwgJm9zYWRkci0+YWRkci5pbjYuc2luNl9hZGRyLCAxNik7CisJfQorICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKyAgfQogICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTI2OCw3
ICsyOTAsMzcgQEAgbXJvdXRlX2FkZHJfcHJpbnQgKGNvbnN0IHN0cnVjdCBtcm91dGVfYQogCSAg
fQogCSAgYnJlYWs7CiAJY2FzZSBNUl9BRERSX0lQVjY6CisjaWZkZWYgVVNFX1BGX0lORVQ2Cisg
ICAgICAgICAgeworCSAgICBzdHJ1Y3QgYnVmZmVyIGJ1ZjsKKwkgICAgc3RydWN0IHNvY2thZGRy
X2luNiBzaW42OworCSAgICBpbnQgcG9ydDsKKwkgICAgY2hhciBidWY2W0lORVQ2X0FERFJTVFJM
RU5dID0gIiI7CisJICAgIG1lbXNldCgmc2luNiwgMCwgc2l6ZW9mIHNpbjYpOworCSAgICBzaW42
LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CisJICAgIGJ1Zl9zZXRfcmVhZCAoJmJ1ZiwgbWFkZHIu
YWRkciwgbWFkZHIubGVuKTsKKyAgICAgICAgICAgIGlmIChidWZfcmVhZCgmYnVmLCAmc2luNi5z
aW42X2FkZHIsIHNpemVvZiAoc2luNi5zaW42X2FkZHIpKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgaWYgKGdldG5hbWVpbmZvKChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luNiwgc2l6ZW9m
IChzdHJ1Y3Qgc29ja2FkZHJfaW42KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmNiwgc2l6ZW9mIChidWY2KSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hPU1QpICE9IDAp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgYnVmX3ByaW50ZiAoJm91dCwg
Ik1SX0FERFJfSVBWNiBnZXRuYW1laW5mbygpIGVyciIpOworICAgICAgICAgICAgICAgICAgYnJl
YWs7CisJCX0KKyAgICAgICAgICAgICAgYnVmX3B1dHMgKCZvdXQsIGJ1ZjYpOworCSAgICAgIGlm
IChtYWRkci50eXBlICYgTVJfV0lUSF9ORVRCSVRTKQorCSAgICAgICAgYnVmX3ByaW50ZiAoJm91
dCwgIi8lZCIsIG1hZGRyLm5ldGJpdHMpOworICAgICAgICAgICAgICBpZiAobWFkZHIudHlwZSAm
IE1SX1dJVEhfUE9SVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBwb3J0
ID0gYnVmX3JlYWRfdTE2ICgmYnVmKTsKKyAgICAgICAgICAgICAgICAgIGlmIChwb3J0ID49IDAp
CisgICAgICAgICAgICAgICAgICAgIGJ1Zl9wcmludGYgKCZvdXQsICI6JWQiLCBwb3J0KTsKKyAg
ICAgICAgICAgICAgICB9CisJICAgIH0KKyAgICAgICAgICB9CisjZWxzZSAvKiBvbGQgcHJlIElQ
VjYgMS1saW5lIGNvZGU6ICovCiAJICBidWZfcHJpbnRmICgmb3V0LCAiSVBWNiIpOyAKKyNlbmRp
ZgogCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGJ1Zl9wcmludGYgKCZvdXQsICJVTktOT1dOIik7
IApkaWZmIC0tZ2l0IGEvb3BlbnZwbi9tdGNwLmMgYi9vcGVudnBuL210Y3AuYwppbmRleCA2ZWM5
OTc0Li41MDExNjg4IDEwMDY0NAotLS0gYS9vcGVudnBuL210Y3AuYworKysgYi9vcGVudnBuL210
Y3AuYwpAQCAtMTU5LDYgKzE1OSw3IEBAIG11bHRpX3RjcF9pbnN0YW5jZV9zcGVjaWZpY19pbml0
IChzdHJ1Y3QKICAgQVNTRVJUIChtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldCk7CiAgIEFTU0VS
VCAobWktPmNvbnRleHQuYzIubGlua19zb2NrZXQtPmluZm8ubHNhKTsKICAgQVNTRVJUIChtaS0+
Y29udGV4dC5jMi5saW5rX3NvY2tldC0+bW9kZSA9PSBMU19NT0RFX1RDUF9BQ0NFUFRfRlJPTSk7
CisgIEFTU0VSVCAobWktPmNvbnRleHQuYzIubGlua19zb2NrZXQtPmluZm8ubHNhLT5hY3R1YWwu
ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKTsKICAgaWYgKCFtcm91dGVfZXh0cmFj
dF9vcGVudnBuX3NvY2thZGRyICgmbWktPnJlYWwsICZtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tl
dC0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LCB0cnVlKSkKICAgICB7CiAgICAgICBtc2cgKERfTVVM
VElfRVJST1JTLCAiTVVMVEkgVENQOiBUQ1AgY2xpZW50IGFkZHJlc3MgaXMgdW5kZWZpbmVkIik7
CmRpZmYgLS1naXQgYS9vcGVudnBuL211bHRpLmMgYi9vcGVudnBuL211bHRpLmMKaW5kZXggZWU3
NGE0Ni4uYmZkNzliMyAxMDA2NDQKLS0tIGEvb3BlbnZwbi9tdWx0aS5jCisrKyBiL29wZW52cG4v
bXVsdGkuYwpAQCAtOTkwLDggKzk5MCw4IEBAIG11bHRpX2xlYXJuX2luX2FkZHJfdCAoc3RydWN0
IG11bHRpX2NvbnQKICAgc3RydWN0IG1yb3V0ZV9hZGRyIGFkZHI7CiAKICAgQ0xFQVIgKHJlbW90
ZV9zaSk7Ci0gIHJlbW90ZV9zaS5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgcmVtb3RlX3Np
LnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhKTsKKyAgcmVtb3RlX3NpLmFkZHIuaW40LnNp
bl9mYW1pbHkgPSBBRl9JTkVUOworICByZW1vdGVfc2kuYWRkci5pbjQuc2luX2FkZHIuc19hZGRy
ID0gaHRvbmwgKGEpOwogICBBU1NFUlQgKG1yb3V0ZV9leHRyYWN0X29wZW52cG5fc29ja2FkZHIg
KCZhZGRyLCAmcmVtb3RlX3NpLCBmYWxzZSkpOwogCiAgIGlmIChuZXRiaXRzID49IDApCkBAIC0y
MjI0LDkgKzIyMjQsOSBAQCBtYW5hZ2VtZW50X2NhbGxiYWNrX2tpbGxfYnlfYWRkciAodm9pZCAq
CiAgIGludCBjb3VudCA9IDA7CiAKICAgQ0xFQVIgKHNhZGRyKTsKLSAgc2FkZHIuc2Euc2luX2Zh
bWlseSA9IEFGX0lORVQ7Ci0gIHNhZGRyLnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRy
KTsKLSAgc2FkZHIuc2Euc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CisgIHNhZGRyLmFkZHIuaW40
LnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICBzYWRkci5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIg
PSBodG9ubCAoYWRkcik7CisgIHNhZGRyLmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQp
OwogICBpZiAobXJvdXRlX2V4dHJhY3Rfb3BlbnZwbl9zb2NrYWRkciAoJm1hZGRyLCAmc2FkZHIs
IHRydWUpKQogICAgIHsKICAgICAgIGhhc2hfaXRlcmF0b3JfaW5pdCAobS0+aXRlciwgJmhpLCB0
cnVlKTsKQEAgLTIyODcsMTggKzIyODcsMTMgQEAgdHVubmVsX3NlcnZlciAoc3RydWN0IGNvbnRl
eHQgKnRvcCkKIHsKICAgQVNTRVJUICh0b3AtPm9wdGlvbnMubW9kZSA9PSBNT0RFX1NFUlZFUik7
CiAKLSAgc3dpdGNoICh0b3AtPm9wdGlvbnMucHJvdG8pIHsKLSAgY2FzZSBQUk9UT19VRFB2NDoK
LSAgICB0dW5uZWxfc2VydmVyX3VkcCAodG9wKTsKLSAgICBicmVhazsKLSAgY2FzZSBQUk9UT19U
Q1B2NF9TRVJWRVI6Ci0gICAgdHVubmVsX3NlcnZlcl90Y3AgKHRvcCk7Ci0gICAgYnJlYWs7Ci0g
IGRlZmF1bHQ6Ci0gICAgQVNTRVJUICgwKTsKLSAgfQorICBpZiAocHJvdG9faXNfZGdyYW0odG9w
LT5vcHRpb25zLnByb3RvKSkKKyAgICB0dW5uZWxfc2VydmVyX3VkcCh0b3ApOworICBlbHNlCisg
ICAgdHVubmVsX3NlcnZlcl90Y3AodG9wKTsKIH0KIAorCiAjZWxzZQogc3RhdGljIHZvaWQgZHVt
bXkodm9pZCkge30KICNlbmRpZiAvKiBQMk1QX1NFUlZFUiAqLwpkaWZmIC0tZ2l0IGEvb3BlbnZw
bi9vY2MuYyBiL29wZW52cG4vb2NjLmMKaW5kZXggNmIxMzZkYy4uM2VjNzc4NCAxMDA2NDQKLS0t
IGEvb3BlbnZwbi9vY2MuYworKysgYi9vcGVudnBuL29jYy5jCkBAIC0zNzUsNyArMzc1LDcgQEAg
cHJvY2Vzc19yZWNlaXZlZF9vY2NfbXNnIChzdHJ1Y3QgY29udGV4dAogCSAgICAgICBjLT5jMi5t
YXhfc2VuZF9zaXplX3JlbW90ZSwKIAkgICAgICAgYy0+YzIubWF4X3JlY3Zfc2l6ZV9sb2NhbCk7
CiAJICBpZiAoIWMtPm9wdGlvbnMuZnJhZ21lbnQKLQkgICAgICAmJiBjLT5vcHRpb25zLnByb3Rv
ID09IFBST1RPX1VEUHY0CisJICAgICAgJiYgKHByb3RvX2lzX2RncmFtKGMtPm9wdGlvbnMucHJv
dG8pKQogCSAgICAgICYmIGMtPmMyLm1heF9zZW5kX3NpemVfbG9jYWwgPiBUVU5fTVRVX01JTgog
CSAgICAgICYmIChjLT5jMi5tYXhfcmVjdl9zaXplX3JlbW90ZSA8IGMtPmMyLm1heF9zZW5kX3Np
emVfbG9jYWwKIAkJICB8fCBjLT5jMi5tYXhfcmVjdl9zaXplX2xvY2FsIDwgYy0+YzIubWF4X3Nl
bmRfc2l6ZV9yZW1vdGUpKQpkaWZmIC0tZ2l0IGEvb3BlbnZwbi9vcHRpb25zLmMgYi9vcGVudnBu
L29wdGlvbnMuYwppbmRleCA5NGRhOThlLi4xNDkwMDA5IDEwMDY0NAotLS0gYS9vcGVudnBuL29w
dGlvbnMuYworKysgYi9vcGVudnBuL29wdGlvbnMuYwpAQCAtNzMsNiArNzMsMTIgQEAgI2VuZGlm
CiAjaWZkZWYgVVNFX1BUSFJFQUQKICAgIiBbUFRIUkVBRF0iCiAjZW5kaWYKKyNpZmRlZiBFTkFC
TEVfSVBfUEtUSU5GTworICAiIFtNSF0iCisjZW5kaWYKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAg
IiBbUEZfSU5FVDZdIgorI2VuZGlmCiAgICIgYnVpbHQgb24gIiBfX0RBVEVfXwogOwogCkBAIC05
Myw2ICs5OSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIHVzYWdlX21lc3NhZ2VbXSA9CiAgICItLW1v
ZGUgbSAgICAgICAgOiBNYWpvciBtb2RlLCBtID0gJ3AycCcgKGRlZmF1bHQsIHBvaW50LXRvLXBv
aW50KSBvciAnc2VydmVyJy5cbiIKICAgIi0tcHJvdG8gcCAgICAgICA6IFVzZSBwcm90b2NvbCBw
IGZvciBjb21tdW5pY2F0aW5nIHdpdGggcGVlci5cbiIKICAgIiAgICAgICAgICAgICAgICAgIHAg
PSB1ZHAgKGRlZmF1bHQpLCB0Y3Atc2VydmVyLCBvciB0Y3AtY2xpZW50XG4iCisjaWZkZWYgVVNF
X1BGX0lORVQ2CisgICIgICAgICAgICAgICAgICAgICBwID0gdWRwNiwgdGNwNi1zZXJ2ZXIsIG9y
IHRjcDYtY2xpZW50IChJUHY2KVxuIgorI2VuZGlmCiAgICItLWNvbm5lY3QtcmV0cnkgbiA6IEZv
ciAtLXByb3RvIHRjcC1jbGllbnQsIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXRcbiIKICAgIiAg
ICAgICAgICAgICAgICAgICAgYmV0d2VlbiBjb25uZWN0aW9uIHJldHJpZXMgKGRlZmF1bHQ9JWQp
LlxuIgogICAiLS1jb25uZWN0LXRpbWVvdXQgbiA6IEZvciAtLXByb3RvIHRjcC1jbGllbnQsIGNv
bm5lY3Rpb24gdGltZW91dCAoaW4gc2Vjb25kcykuXG4iCkBAIC0xNDIxLDEwICsxNDMwLDEwIEBA
ICNlbmRpZgogICAgKiBTYW5pdHkgY2hlY2sgb24gVENQIG1vZGUgb3B0aW9ucwogICAgKi8KIAot
ICBpZiAob3B0aW9ucy0+Y29ubmVjdF9yZXRyeV9kZWZpbmVkICYmIG9wdGlvbnMtPnByb3RvICE9
IFBST1RPX1RDUHY0X0NMSUVOVCkKKyAgaWYgKG9wdGlvbnMtPmNvbm5lY3RfcmV0cnlfZGVmaW5l
ZCAmJiBvcHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElFTlQgJiYgb3B0aW9ucy0+cHJv
dG8gIT0gUFJPVE9fVENQdjZfQ0xJRU5UKQogICAgIG1zZyAoTV9VU0FHRSwgIi0tY29ubmVjdC1y
ZXRyeSBkb2Vzbid0IG1ha2Ugc2Vuc2UgdW5sZXNzIGFsc28gdXNlZCB3aXRoIC0tcHJvdG8gdGNw
LWNsaWVudCIpOwogCi0gIGlmIChvcHRpb25zLT5jb25uZWN0X3RpbWVvdXRfZGVmaW5lZCAmJiBv
cHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElFTlQpCisgIGlmIChvcHRpb25zLT5jb25u
ZWN0X3RpbWVvdXRfZGVmaW5lZCAmJiBvcHRpb25zLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElF
TlQgJiYgb3B0aW9ucy0+cHJvdG8gIT0gUFJPVE9fVENQdjZfQ0xJRU5UKQogICAgIG1zZyAoTV9V
U0FHRSwgIi0tY29ubmVjdC10aW1lb3V0IGRvZXNuJ3QgbWFrZSBzZW5zZSB1bmxlc3MgYWxzbyB1
c2VkIHdpdGggLS1wcm90byB0Y3AtY2xpZW50Iik7CiAKICAgLyoKQEAgLTE0MzQsNyArMTQ0Myw3
IEBAICNlbmRpZgogICAgIG1zZyAoTV9VU0FHRSwgIm9ubHkgb25lIG9mIC0tdHVuLW10dSBvciAt
LWxpbmstbXR1IG1heSBiZSBkZWZpbmVkIChub3RlIHRoYXQgLS1pZmNvbmZpZyBpbXBsaWVzIC0t
bGluay1tdHUgJWQpIiwgTElOS19NVFVfREVGQVVMVCk7CiAKICNpZmRlZiBFTkFCTEVfT0NDCi0g
IGlmIChvcHRpb25zLT5wcm90byAhPSBQUk9UT19VRFB2NCAmJiBvcHRpb25zLT5tdHVfdGVzdCkK
KyAgaWYgKCFwcm90b19pc191ZHAob3B0aW9ucy0+cHJvdG8pICYmIG9wdGlvbnMtPm10dV90ZXN0
KQogICAgIG1zZyAoTV9VU0FHRSwgIi0tbXR1LXRlc3Qgb25seSBtYWtlcyBzZW5zZSB3aXRoIC0t
cHJvdG8gdWRwIik7CiAjZW5kaWYKIApAQCAtMTQ3OSw3ICsxNDg4LDggQEAgI2VuZGlmCiAJICBj
b25zdCBjaGFyICpyZW1vdGUgPSBsLT5hcnJheVtpXS5ob3N0bmFtZTsKIAkgIGNvbnN0IGludCBy
ZW1vdGVfcG9ydCA9IGwtPmFycmF5W2ldLnBvcnQ7CiAKLQkgIGlmIChzdHJpbmdfZGVmaW5lZF9l
cXVhbCAob3B0aW9ucy0+bG9jYWwsIHJlbW90ZSkKKwkgIGlmIChwcm90b19pc19uZXQob3B0aW9u
cy0+cHJvdG8pCisJICAgICAgJiYgc3RyaW5nX2RlZmluZWRfZXF1YWwgKG9wdGlvbnMtPmxvY2Fs
LCByZW1vdGUpCiAJICAgICAgJiYgb3B0aW9ucy0+bG9jYWxfcG9ydCA9PSByZW1vdGVfcG9ydCkK
IAkgICAgbXNnIChNX1VTQUdFLCAiLS1yZW1vdGUgYW5kIC0tbG9jYWwgYWRkcmVzc2VzIGFyZSB0
aGUgc2FtZSIpOwogCQpAQCAtMTUwOCw3ICsxNTE4LDcgQEAgI2VuZGlmCiAgIGlmICghb3B0aW9u
cy0+cmVtb3RlX2xpc3QgJiYgIW9wdGlvbnMtPmJpbmRfbG9jYWwpCiAgICAgbXNnIChNX1VTQUdF
LCAiLS1ub2JpbmQgZG9lc24ndCBtYWtlIHNlbnNlIHVubGVzcyB1c2VkIHdpdGggLS1yZW1vdGUi
KTsKIAotICBpZiAob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UICYmICFvcHRp
b25zLT5sb2NhbCAmJiAhb3B0aW9ucy0+bG9jYWxfcG9ydF9kZWZpbmVkICYmICFvcHRpb25zLT5i
aW5kX2RlZmluZWQpCisgIGlmICgob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5U
fHxvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2Nl9DTElFTlQpICYmICFvcHRpb25zLT5sb2Nh
bCAmJiAhb3B0aW9ucy0+bG9jYWxfcG9ydF9kZWZpbmVkICYmICFvcHRpb25zLT5iaW5kX2RlZmlu
ZWQpCiAgICAgb3B0aW9ucy0+YmluZF9sb2NhbCA9IGZhbHNlOwogCiAjaWZkZWYgRU5BQkxFX1NP
Q0tTCkBAIC0xNTY1LDE2ICsxNTc1LDE2IEBAICNlbmRpZgogICAgKi8KIAogI2lmZGVmIEVOQUJM
RV9GUkFHTUVOVAotICBpZiAob3B0aW9ucy0+cHJvdG8gIT0gUFJPVE9fVURQdjQgJiYgb3B0aW9u
cy0+ZnJhZ21lbnQpCisgIGlmICghcHJvdG9faXNfdWRwKG9wdGlvbnMtPnByb3RvKSAmJiBvcHRp
b25zLT5mcmFnbWVudCkKICAgICBtc2cgKE1fVVNBR0UsICItLWZyYWdtZW50IGNhbiBvbmx5IGJl
IHVzZWQgd2l0aCAtLXByb3RvIHVkcCIpOwogI2VuZGlmCiAKICNpZmRlZiBFTkFCTEVfT0NDCi0g
IGlmIChvcHRpb25zLT5wcm90byAhPSBQUk9UT19VRFB2NCAmJiBvcHRpb25zLT5leHBsaWNpdF9l
eGl0X25vdGlmaWNhdGlvbikKKyAgaWYgKCFwcm90b19pc191ZHAob3B0aW9ucy0+cHJvdG8pICYm
IG9wdGlvbnMtPmV4cGxpY2l0X2V4aXRfbm90aWZpY2F0aW9uKQogICAgIG1zZyAoTV9VU0FHRSwg
Ii0tZXhwbGljaXQtZXhpdC1ub3RpZnkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tcHJvdG8gdWRw
Iik7CiAjZW5kaWYKIAotICBpZiAoIW9wdGlvbnMtPnJlbW90ZV9saXN0ICYmIG9wdGlvbnMtPnBy
b3RvID09IFBST1RPX1RDUHY0X0NMSUVOVCkKKyAgaWYgKCFvcHRpb25zLT5yZW1vdGVfbGlzdCAm
JiAob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UfHxvcHRpb25zLT5wcm90byA9
PSBQUk9UT19UQ1B2Nl9DTElFTlQpKQogICAgIG1zZyAoTV9VU0FHRSwgIi0tcmVtb3RlIE1VU1Qg
YmUgdXNlZCBpbiBUQ1AgQ2xpZW50IG1vZGUiKTsKIAogI2lmZGVmIEVOQUJMRV9IVFRQX1BST1hZ
CkBAIC0xNTkyLDcgKzE2MDIsOCBAQCAjaWZkZWYgRU5BQkxFX1NPQ0tTCiAgICAgbXNnIChNX1VT
QUdFLCAiLS1zb2Nrcy1wcm94eSBjYW4gbm90IGJlIHVzZWQgaW4gVENQIFNlcnZlciBtb2RlIik7
CiAjZW5kaWYKIAotICBpZiAob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSICYm
IHJlbW90ZV9saXN0X2xlbiAob3B0aW9ucy0+cmVtb3RlX2xpc3QpID4gMSkKKyAgaWYgKChvcHRp
b25zLT5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVJ8fG9wdGlvbnMtPnByb3RvID09IFBST1RP
X1RDUHY2X1NFUlZFUikgCisJICAmJiByZW1vdGVfbGlzdF9sZW4gKG9wdGlvbnMtPnJlbW90ZV9s
aXN0KSA+IDEpCiAgICAgbXNnIChNX1VTQUdFLCAiVENQIHNlcnZlciBtb2RlIGFsbG93cyBhdCBt
b3N0IG9uZSAtLXJlbW90ZSBhZGRyZXNzIik7CiAKICNpZiBQMk1QX1NFUlZFUgpAQCAtMTYxNyw3
ICsxNjI4LDcgQEAgI2VuZGlmCiAJbXNnIChNX1VTQUdFLCAiLS1tb2RlIHNlcnZlciBvbmx5IHdv
cmtzIHdpdGggLS1kZXYgdHVuIG9yIC0tZGV2IHRhcCIpOwogICAgICAgaWYgKG9wdGlvbnMtPnB1
bGwpCiAJbXNnIChNX1VTQUdFLCAiLS1wdWxsIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1tb2RlIHNl
cnZlciIpOwotICAgICAgaWYgKCEob3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVURQdjQgfHwgb3B0
aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSKSkKKyAgICAgIGlmICghKHByb3RvX2lz
X3VkcChvcHRpb25zLT5wcm90bykgfHwgb3B0aW9ucy0+cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VS
VkVSIHx8IG9wdGlvbnMtPnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUikpCiAJbXNnIChNX1VT
QUdFLCAiLS1tb2RlIHNlcnZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAtLXByb3RvIHVkcCBv
ciAtLXByb3RvIHRjcC1zZXJ2ZXIiKTsKICNpZiBQT1JUX1NIQVJFCiAgICAgICBpZiAoKG9wdGlv
bnMtPnBvcnRfc2hhcmVfaG9zdCB8fCBvcHRpb25zLT5wb3J0X3NoYXJlX3BvcnQpICYmIG9wdGlv
bnMtPnByb3RvICE9IFBST1RPX1RDUHY0X1NFUlZFUikKQEAgLTE2NDUsOSArMTY1Niw5IEBAICNl
bmRpZgogCW1zZyAoTV9VU0FHRSwgIi0taW5ldGQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLW1vZGUg
c2VydmVyIik7CiAgICAgICBpZiAob3B0aW9ucy0+aXBjaGFuZ2UpCiAJbXNnIChNX1VTQUdFLCAi
LS1pcGNoYW5nZSBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbW9kZSBzZXJ2ZXIgKHVzZSAtLWNsaWVu
dC1jb25uZWN0IGluc3RlYWQpIik7Ci0gICAgICBpZiAoIShvcHRpb25zLT5wcm90byA9PSBQUk9U
T19VRFB2NCB8fCBvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIpKQotCW1zZyAo
TV9VU0FHRSwgIi0tbW9kZSBzZXJ2ZXIgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgLS1wcm90byB1
ZHAgb3IgLS1wcm90byB0Y3Atc2VydmVyIik7Ci0gICAgICBpZiAob3B0aW9ucy0+cHJvdG8gIT0g
UFJPVE9fVURQdjQgJiYgKG9wdGlvbnMtPmNmX21heCB8fCBvcHRpb25zLT5jZl9wZXIpKQorICAg
ICAgaWYgKCEocHJvdG9faXNfZGdyYW0ob3B0aW9ucy0+cHJvdG8pIHx8IG9wdGlvbnMtPnByb3Rv
ID09IFBST1RPX1RDUHY0X1NFUlZFUiB8fCBvcHRpb25zLT5wcm90byA9PSBQUk9UT19UQ1B2Nl9T
RVJWRVIgKSkKKwltc2cgKE1fVVNBR0UsICItLW1vZGUgc2VydmVyIGN1cnJlbnRseSBvbmx5IHN1
cHBvcnRzIC0tcHJvdG8gdWRwIG9yIC0tcHJvdG8gdGNwLXNlcnZlciAoYWxzbyB1ZHA2L3RjcDYp
Iik7CisgICAgICBpZiAoIXByb3RvX2lzX3VkcChvcHRpb25zLT5wcm90bykgJiYgKG9wdGlvbnMt
PmNmX21heCB8fCBvcHRpb25zLT5jZl9wZXIpKQogCW1zZyAoTV9VU0FHRSwgIi0tY29ubmVjdC1m
cmVxIG9ubHkgd29ya3Mgd2l0aCAtLW1vZGUgc2VydmVyIC0tcHJvdG8gdWRwLiAgVHJ5IC0tbWF4
LWNsaWVudHMgaW5zdGVhZC4iKTsKICAgICAgIGlmICghKGRldiA9PSBERVZfVFlQRV9UQVAgfHwg
KGRldiA9PSBERVZfVFlQRV9UVU4gJiYgb3B0aW9ucy0+dG9wb2xvZ3kgPT0gVE9QX1NVQk5FVCkp
ICYmIG9wdGlvbnMtPmlmY29uZmlnX3Bvb2xfbmV0bWFzaykKIAltc2cgKE1fVVNBR0UsICJUaGUg
dGhpcmQgcGFyYW1ldGVyIHRvIC0taWZjb25maWctcG9vbCAobmV0bWFzaykgaXMgb25seSB2YWxp
ZCBpbiAtLWRldiB0YXAgbW9kZSIpOwpAQCAtMTcyNCw3ICsxNzM1LDcgQEAgI2lmZGVmIFVTRV9D
UllQVE8KICAgLyoKICAgICogQ2hlY2sgY29uc2lzdGVuY3kgb2YgcmVwbGF5IG9wdGlvbnMKICAg
ICovCi0gIGlmICgob3B0aW9ucy0+cHJvdG8gIT0gUFJPVE9fVURQdjQpCisgIGlmICgoIXByb3Rv
X2lzX3VkcChvcHRpb25zLT5wcm90bykpCiAgICAgICAmJiAob3B0aW9ucy0+cmVwbGF5X3dpbmRv
dyAhPSBkZWZhdWx0cy5yZXBsYXlfd2luZG93CiAJICB8fCBvcHRpb25zLT5yZXBsYXlfdGltZSAh
PSBkZWZhdWx0cy5yZXBsYXlfdGltZSkpCiAgICAgbXNnIChNX1VTQUdFLCAiLS1yZXBsYXktd2lu
ZG93IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXByb3RvIHVkcCIpOwpAQCAtMTkxMyw3ICsxOTI0
LDcgQEAgI2lmIFAyTVAKICAgICovCiAgIGlmIChvcHRpb25zLT5wdWxsCiAgICAgICAmJiBvcHRp
b25zLT5waW5nX3JlY190aW1lb3V0X2FjdGlvbiA9PSBQSU5HX1VOREVGCi0gICAgICAmJiBvcHRp
b25zLT5wcm90byA9PSBQUk9UT19VRFB2NCkKKyAgICAgICYmIHByb3RvX2lzX3VkcChvcHRpb25z
LT5wcm90bykpCiAgICAgewogICAgICAgb3B0aW9ucy0+cGluZ19yZWNfdGltZW91dCA9IFBSRV9Q
VUxMX0lOSVRJQUxfUElOR19SRVNUQVJUOwogICAgICAgb3B0aW9ucy0+cGluZ19yZWNfdGltZW91
dF9hY3Rpb24gPSBQSU5HX1JFU1RBUlQ7CmRpZmYgLS1naXQgYS9vcGVudnBuL3BzLmMgYi9vcGVu
dnBuL3BzLmMKaW5kZXggNDliMWEyYy4uNDcyYzYyNiAxMDA2NDQKLS0tIGEvb3BlbnZwbi9wcy5j
CisrKyBiL29wZW52cG4vcHMuYwpAQCAtMzM3LDkgKzMzNyw5IEBAIHNvY2tfYWRkcl9zZXQgKHN0
cnVjdCBvcGVudnBuX3NvY2thZGRyICoKIAkgICAgICAgY29uc3QgaW50IHBvcnQpCiB7CiAgIENM
RUFSICgqb3NhZGRyKTsKLSAgb3NhZGRyLT5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgb3Nh
ZGRyLT5zYS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAoYWRkcik7Ci0gIG9zYWRkci0+c2Euc2lu
X3BvcnQgPSBodG9ucyAocG9ydCk7CisgIG9zYWRkci0+YWRkci5pbjQuc2luX2ZhbWlseSA9IEFG
X0lORVQ7CisgIG9zYWRkci0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKGFkZHIp
OworICBvc2FkZHItPmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL29wZW52cG4vc29ja2V0LmMgYi9vcGVudnBuL3Nv
Y2tldC5jCmluZGV4IDcwZDhmZmQuLjMwNzQyNjcgMTAwNjQ0Ci0tLSBhL29wZW52cG4vc29ja2V0
LmMKKysrIGIvb3BlbnZwbi9zb2NrZXQuYwpAQCAtNDIsMTAgKzQyLDE2IEBACiAjaW5jbHVkZSAi
bWVtZGJnLmgiCiAKIGNvbnN0IGludCBwcm90b19vdmVyaGVhZFtdID0geyAvKiBpbmRleGVkIGJ5
IFBST1RPX3ggKi8KLSAgSVB2NF9VRFBfSEVBREVSX1NJWkUsCisgIDAsCisgIElQdjRfVURQX0hF
QURFUl9TSVpFLCAvKiBJUHY0ICovCiAgIElQdjRfVENQX0hFQURFUl9TSVpFLAogICBJUHY0X1RD
UF9IRUFERVJfU0laRSwKLSAgSVB2NF9UQ1BfSEVBREVSX1NJWkUKKyNpZmRlZiBVU0VfUEZfSU5F
VDYKKyAgSVB2Nl9VRFBfSEVBREVSX1NJWkUsIC8qIElQdjYgKi8KKyAgSVB2Nl9UQ1BfSEVBREVS
X1NJWkUsCisgIElQdjZfVENQX0hFQURFUl9TSVpFLAorICBJUHY2X1RDUF9IRUFERVJfU0laRSwK
KyNlbmRpZgogfTsKIAogLyoKQEAgLTI2MCwyMCArMjY2LDQ5IEBACiAJICAgICAgIHN0cnVjdCBv
cGVudnBuX3NvY2thZGRyICphZGRyLAogCSAgICAgICBib29sICpjaGFuZ2VkKQogewotICBpZiAo
aG9zdCAmJiBhZGRyKQotICAgIHsKLSAgICAgIGNvbnN0IGluX2FkZHJfdCBuZXdfYWRkciA9IGdl
dGFkZHIgKAotCQkJCQkgIEdFVEFERFJfUkVTT0xWRXxHRVRBRERSX1VQREFURV9NQU5BR0VNRU5U
X1NUQVRFLAotCQkJCQkgIGhvc3QsCi0JCQkJCSAgMSwKLQkJCQkJICBOVUxMLAotCQkJCQkgIE5V
TEwpOwotICAgICAgaWYgKG5ld19hZGRyICYmIGFkZHItPnNhLnNpbl9hZGRyLnNfYWRkciAhPSBu
ZXdfYWRkcikKKyAgc3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgY2FzZSBB
Rl9JTkVUOgorICAgICAgaWYgKGhvc3QgJiYgYWRkcikKKyAgICAgIHsKKwljb25zdCBpbl9hZGRy
X3QgbmV3X2FkZHIgPSBnZXRhZGRyICgKKwkgICAgR0VUQUREUl9SRVNPTFZFfEdFVEFERFJfVVBE
QVRFX01BTkFHRU1FTlRfU1RBVEUsCisJICAgIGhvc3QsCisJICAgIDEsCisJICAgIE5VTEwsCisJ
ICAgIE5VTEwpOworCWlmIChuZXdfYWRkciAmJiBhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2Fk
ZHIgIT0gbmV3X2FkZHIpCiAJewotCSAgYWRkci0+c2Euc2luX2FkZHIuc19hZGRyID0gbmV3X2Fk
ZHI7CisJICBhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBuZXdfYWRkcjsKIAkgICpj
aGFuZ2VkID0gdHJ1ZTsKIAl9Ci0gICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisjaWZkZWYg
VVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjogLyogampvRklYTUU6IHNob3VsZCBhZGFw
dCBnZXRhZGRyKCkgZm9yIEFGX0lORVQ2ICovCisgICAgICBpZiAoaG9zdCAmJiBhZGRyKQorICAg
ICAgeworCXN0cnVjdCBhZGRyaW5mbyBoaW50cyAsICphaTsKKwlpbnQgZXJyOworCW1lbXNldCgm
aGludHMsIDAsIHNpemVvZiBoaW50cyk7CisJaGludHMuYWlfZmxhZ3M9QUlfUEFTU0lWRTsKKwlo
aW50cy5haV9mYW1pbHk9QUZfSU5FVDY7CisJaWYgKChlcnI9Z2V0YWRkcmluZm8oaG9zdCwgTlVM
TCwgJmhpbnRzLCAmYWkpKT09MCkKKwl7CisJICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42PShz
dHJ1Y3Qgc29ja2FkZHJfaW42KilhaS0+YWlfYWRkcjsKKwkgIGlmIChJTjZfQVJFX0FERFJfRVFV
QUwoJnNpbjYtPnNpbjZfYWRkciwgJmFkZHItPmFkZHIuaW42LnNpbjZfYWRkcikpCisJICB7CisJ
ICAgIGludCBwb3J0PWFkZHItPmFkZHIuaW42LnNpbjZfcG9ydDsgLyogYmFja3VwIGN1cnJlbnQg
cG9ydCBmb3IgZWFzaWVyIGNvcHksIHJlc3RvcmUgbGF0ZXIgKi8KKwkgICAgYWRkci0+YWRkci5p
bjY9KnNpbjY7IC8qIGlwdjYgcmVxdWlyZXMgYWxzbyBlZy4gc2luNl9zY29wZV9pZCA9PiBlYXN5
IHRvIGZ1bGwgY29weSovCisJICAgIGFkZHItPmFkZHIuaW42LnNpbjZfcG9ydD1wb3J0OworCSAg
fQorCSAgZnJlZWFkZHJpbmZvKGFpKTsKKwl9CisgICAgICB9CisgICAgICBicmVhazsKKyNlbmRp
ZgorICAgIGRlZmF1bHQ6CisgICAgCUFTU0VSVCgwKTsKKyAgfQogfQogCiBzdGF0aWMgaW50CkBA
IC01MzEsNiArNTY2LDQ0IEBACiAgIHJldHVybiBzZDsKIH0KIAorI2lmZGVmIFVTRV9QRl9JTkVU
Ngorc3RhdGljIHNvY2tldF9kZXNjcmlwdG9yX3QKK2NyZWF0ZV9zb2NrZXRfdWRwNiAoY29uc3Qg
dW5zaWduZWQgaW50IGZsYWdzKQoreworICBzb2NrZXRfZGVzY3JpcHRvcl90IHNkOworCisgIGlm
ICgoc2QgPSBzb2NrZXQgKFBGX0lORVQ2LCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCkpIDwgMCkK
KyAgICBtc2cgKE1fU09DS0VSUiwgIlVEUDogQ2Fubm90IGNyZWF0ZSBVRFA2IHNvY2tldCIpOwor
I2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIGVsc2UgaWYgKGZsYWdzICYgU0ZfVVNFX0lQX1BLVElO
Rk8pCisgICAgeworICAgICAgaW50IHBhZCA9IDE7CisgICAgICBzZXRzb2Nrb3B0IChzZCwgSVBQ
Uk9UT19JUFY2LCBJUFY2X1BLVElORk8sICh2b2lkKikmcGFkLCBzaXplb2YocGFkKSk7CisgICAg
fQorI2VuZGlmCisgIHJldHVybiBzZDsKK30KKworc3RhdGljIHNvY2tldF9kZXNjcmlwdG9yX3QK
K2NyZWF0ZV9zb2NrZXRfdGNwNiAodm9pZCkKK3sKKyAgc29ja2V0X2Rlc2NyaXB0b3JfdCBzZDsK
KworICBpZiAoKHNkID0gc29ja2V0IChQRl9JTkVUNiwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQ
KSkgPCAwKQorICAgIG1zZyAoTV9TT0NLRVJSLCAiQ2Fubm90IGNyZWF0ZSBUQ1A2IHNvY2tldCIp
OworCisgIC8qIHNldCBTT19SRVVTRUFERFIgb24gc29ja2V0ICovCisgIHsKKyAgICBpbnQgb24g
PSAxOworICAgIGlmIChzZXRzb2Nrb3B0IChzZCwgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLAor
CQkgICAgKHZvaWQgKikgJm9uLCBzaXplb2YgKG9uKSkgPCAwKQorICAgICAgbXNnIChNX1NPQ0tF
UlIsICJUQ1A6IENhbm5vdCBzZXRzb2Nrb3B0IFNPX1JFVVNFQUREUiBvbiBUQ1A2IHNvY2tldCIp
OworICB9CisKKyAgcmV0dXJuIHNkOworfQorCisjZW5kaWYKIHN0YXRpYyB2b2lkCiBjcmVhdGVf
c29ja2V0IChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvY2spCiB7CkBAIC01NDksNiArNjIyLDE3IEBA
CiAgICAgewogICAgICAgc29jay0+c2QgPSBjcmVhdGVfc29ja2V0X3RjcCAoKTsKICAgICB9Cisj
aWZkZWYgVVNFX1BGX0lORVQ2CisgIGVsc2UgaWYgKHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9f
VENQdjZfU0VSVkVSCisJICAgfHwgc29jay0+aW5mby5wcm90byA9PSBQUk9UT19UQ1B2Nl9DTElF
TlQpCisgICAgeworICAgICAgc29jay0+c2QgPSBjcmVhdGVfc29ja2V0X3RjcDYgKCk7CisgICAg
fQorICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1VEUHY2KQorICAgIHsKKyAg
ICAgIHNvY2stPnNkID0gY3JlYXRlX3NvY2tldF91ZHA2IChzb2NrLT5zb2NrZmxhZ3MpOworICAg
IH0KKyNlbmRpZgogICBlbHNlCiAgICAgewogICAgICAgQVNTRVJUICgwKTsKQEAgLTU4Niw3ICs2
NzAsMTIgQEAKIAkJICBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFsICphY3QsCiAJCSAgY29uc3Qg
Ym9vbCBub3dhaXQpCiB7Ci0gIHNvY2tsZW5fdCByZW1vdGVfbGVuID0gc2l6ZW9mIChhY3QtPmRl
c3Quc2EpOworICAvKiBhZl9hZGRyX3NpemUgV0lMTCByZXR1cm4gMCBpbiB0aGlzIGNhc2UgaWYg
QUZzIG90aGVyIHRoYW4gQUZfSU5FVAorICAgKiBhcmUgY29tcGlsZWQgYmVjYXVzZSBhY3QgaXMg
ZW1wdHkgaGVyZS4KKyAgICogY291bGQgdXNlIGdldHNvY2tuYW1lKCkgdG8gc3VwcG9ydCBsYXRl
ciByZW1vdGVfbGVuIGNoZWNrCisgICAqLworICBzb2NrbGVuX3QgcmVtb3RlX2xlbl9hZiA9IGFm
X2FkZHJfc2l6ZShhY3QtPmRlc3QuYWRkci5zYS5zYV9mYW1pbHkpOworICBzb2NrbGVuX3QgcmVt
b3RlX2xlbiA9IHNpemVvZihhY3QtPmRlc3QuYWRkcik7CiAgIHNvY2tldF9kZXNjcmlwdG9yX3Qg
bmV3X3NkID0gU09DS0VUX1VOREVGSU5FRDsKIAogICBDTEVBUiAoKmFjdCk7CkBAIC01OTQsNyAr
NjgzLDcgQEAKICNpZmRlZiBIQVZFX0dFVFBFRVJOQU1FCiAgIGlmIChub3dhaXQpCiAgICAgewot
ICAgICAgbmV3X3NkID0gZ2V0cGVlcm5hbWUgKHNkLCAoc3RydWN0IHNvY2thZGRyICopICZhY3Qt
PmRlc3Quc2EsICZyZW1vdGVfbGVuKTsKKyAgICAgIG5ld19zZCA9IGdldHBlZXJuYW1lIChzZCwg
JmFjdC0+ZGVzdC5hZGRyLnNhLCAmcmVtb3RlX2xlbik7CiAKICAgICAgIGlmICghc29ja2V0X2Rl
ZmluZWQgKG5ld19zZCkpCiAJbXNnIChEX0xJTktfRVJST1JTIHwgTV9FUlJOT19TT0NLLCAiVENQ
OiBnZXRwZWVybmFtZSgpIGZhaWxlZCIpOwpAQCAtNjA3LDcgKzY5Niw3IEBACiAjZW5kaWYKICAg
ZWxzZQogICAgIHsKLSAgICAgIG5ld19zZCA9IGFjY2VwdCAoc2QsIChzdHJ1Y3Qgc29ja2FkZHIg
KikgJmFjdC0+ZGVzdC5zYSwgJnJlbW90ZV9sZW4pOworICAgICAgbmV3X3NkID0gYWNjZXB0IChz
ZCwgJmFjdC0+ZGVzdC5hZGRyLnNhLCAmcmVtb3RlX2xlbik7CiAgICAgfQogCiAjaWYgMCAvKiBG
b3IgZGVidWdnaW5nIG9ubHksIHRlc3QgdGhlIGVmZmVjdCBvZiBhY2NlcHQoKSBmYWlsdXJlcyAq
LwpAQCAtNjIzLDcgKzcxMiw4IEBACiAgICAgewogICAgICAgbXNnIChEX0xJTktfRVJST1JTIHwg
TV9FUlJOT19TT0NLLCAiVENQOiBhY2NlcHQoJWQpIGZhaWxlZCIsIHNkKTsKICAgICB9Ci0gIGVs
c2UgaWYgKHJlbW90ZV9sZW4gIT0gc2l6ZW9mIChhY3QtPmRlc3Quc2EpKQorICAvKiBvbmx5IHZh
bGlkIGlmIHdlIGhhdmUgcmVtb3RlX2xlbl9hZiE9MCAqLworICBlbHNlIGlmIChyZW1vdGVfbGVu
X2FmICYmIHJlbW90ZV9sZW4gIT0gcmVtb3RlX2xlbl9hZikKICAgICB7CiAgICAgICBtc2cgKERf
TElOS19FUlJPUlMsICJUQ1A6IFJlY2VpdmVkIHN0cmFuZ2UgaW5jb21pbmcgY29ubmVjdGlvbiB3
aXRoIHVua25vd24gYWRkcmVzcyBsZW5ndGg9JWQiLCByZW1vdGVfbGVuKTsKICAgICAgIG9wZW52
cG5fY2xvc2Vfc29ja2V0IChuZXdfc2QpOwpAQCAtNzI0LDcgKzgxNCw3IEBACiB7CiAgIHN0cnVj
dCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsKIAotICBpZiAoYmluZCAoc2QsIChzdHJ1Y3Qgc29j
a2FkZHIgKikgJmxvY2FsLT5zYSwgc2l6ZW9mIChsb2NhbC0+c2EpKSkKKyAgaWYgKGJpbmQgKHNk
LCAmbG9jYWwtPmFkZHIuc2EsIGFmX2FkZHJfc2l6ZShsb2NhbC0+YWRkci5zYS5zYV9mYW1pbHkp
KSkKICAgICB7CiAgICAgICBjb25zdCBpbnQgZXJybnVtID0gb3BlbnZwbl9lcnJub19zb2NrZXQg
KCk7CiAgICAgICBtc2cgKE1fRkFUQUwsICIlczogU29ja2V0IGJpbmQgZmFpbGVkIG9uIGxvY2Fs
IGFkZHJlc3MgJXM6ICVzIiwKQEAgLTc0NSw3ICs4MzUsNyBAQAogCiAjaWZkZWYgQ09OTkVDVF9O
T05CTE9DSwogICBzZXRfbm9uYmxvY2sgKHNkKTsKLSAgc3RhdHVzID0gY29ubmVjdCAoc2QsIChz
dHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZS0+c2EsIHNpemVvZiAocmVtb3RlLT5zYSkpOworICBz
dGF0dXMgPSBjb25uZWN0IChzZCwgJnJlbW90ZS0+YWRkci5zYSwgYWZfYWRkcl9zaXplKHJlbW90
ZS0+YWRkci5zYS5zYV9mYW1pbHkpKTsKICAgaWYgKHN0YXR1cykKICAgICBzdGF0dXMgPSBvcGVu
dnBuX2Vycm5vX3NvY2tldCAoKTsKICAgaWYgKHN0YXR1cyA9PSBFSU5QUk9HUkVTUykKQEAgLTgy
OCw3NiArOTE4LDk5IEBACiAgIGludCByZXRyeSA9IDA7CiAKICNpZmRlZiBDT05ORUNUX05PTkJM
T0NLCi0gIG1zZyAoTV9JTkZPLCAiQXR0ZW1wdGluZyB0byBlc3RhYmxpc2ggVENQIGNvbm5lY3Rp
b24gd2l0aCAlcyBbbm9uYmxvY2tdIiwgCi0gICAgICAgcHJpbnRfc29ja2FkZHIgKHJlbW90ZSwg
JmdjKSk7CisgIG1zZyAoTV9JTkZPLCAiQXR0ZW1wdGluZyB0byBlc3RhYmxpc2ggVENQIGNvbm5l
Y3Rpb24gd2l0aCAlcyBbbm9uYmxvY2tdIiwKKyAgICAgIHByaW50X3NvY2thZGRyIChyZW1vdGUs
ICZnYykpOwogI2Vsc2UKLSAgbXNnIChNX0lORk8sICJBdHRlbXB0aW5nIHRvIGVzdGFibGlzaCBU
Q1AgY29ubmVjdGlvbiB3aXRoICVzIiwgCi0gICAgICAgcHJpbnRfc29ja2FkZHIgKHJlbW90ZSwg
JmdjKSk7CisgIG1zZyAoTV9JTkZPLCAiQXR0ZW1wdGluZyB0byBlc3RhYmxpc2ggVENQIGNvbm5l
Y3Rpb24gd2l0aCAlcyIsCisgICAgICBwcmludF9zb2NrYWRkciAocmVtb3RlLCAmZ2MpKTsKICNl
bmRpZgogCiAgIHdoaWxlICh0cnVlKQotICAgIHsKLSAgICAgIGludCBzdGF0dXM7CisgIHsKKyAg
ICBpbnQgc3RhdHVzOwogCiAjaWZkZWYgRU5BQkxFX01BTkFHRU1FTlQKLSAgICAgIGlmIChtYW5h
Z2VtZW50KQotCW1hbmFnZW1lbnRfc2V0X3N0YXRlIChtYW5hZ2VtZW50LAotCQkJICAgICAgT1BF
TlZQTl9TVEFURV9UQ1BfQ09OTkVDVCwKLQkJCSAgICAgIE5VTEwsCi0JCQkgICAgICAoaW5fYWRk
cl90KTAsCi0JCQkgICAgICAoaW5fYWRkcl90KTApOworICAgIGlmIChtYW5hZ2VtZW50KQorICAg
ICAgbWFuYWdlbWVudF9zZXRfc3RhdGUgKG1hbmFnZW1lbnQsCisgICAgICAgICBPUEVOVlBOX1NU
QVRFX1RDUF9DT05ORUNULAorICAgICAgICAgTlVMTCwKKyAgICAgICAgIChpbl9hZGRyX3QpMCwK
KyAgICAgICAgIChpbl9hZGRyX3QpMCk7CiAjZW5kaWYKIAotICAgICAgc3RhdHVzID0gb3BlbnZw
bl9jb25uZWN0ICgqc2QsIHJlbW90ZSwgY29ubmVjdF90aW1lb3V0LCBzaWduYWxfcmVjZWl2ZWQp
OworICAgIHN0YXR1cyA9IG9wZW52cG5fY29ubmVjdCAoKnNkLCByZW1vdGUsIGNvbm5lY3RfdGlt
ZW91dCwgc2lnbmFsX3JlY2VpdmVkKTsKIAotICAgICAgZ2V0X3NpZ25hbCAoc2lnbmFsX3JlY2Vp
dmVkKTsKLSAgICAgIGlmICgqc2lnbmFsX3JlY2VpdmVkKQotCWdvdG8gZG9uZTsKLQotICAgICAg
aWYgKCFzdGF0dXMpCi0JYnJlYWs7Ci0KLSAgICAgIG1zZyAoRF9MSU5LX0VSUk9SUywKLQkgICAi
VENQOiBjb25uZWN0IHRvICVzIGZhaWxlZCwgd2lsbCB0cnkgYWdhaW4gaW4gJWQgc2Vjb25kczog
JXMiLAotCSAgIHByaW50X3NvY2thZGRyIChyZW1vdGUsICZnYyksCi0JICAgY29ubmVjdF9yZXRy
eV9zZWNvbmRzLAotCSAgIHN0cmVycm9yX3RzIChzdGF0dXMsICZnYykpOwotCi0gICAgICBnY19y
ZXNldCAoJmdjKTsKLQotICAgICAgb3BlbnZwbl9jbG9zZV9zb2NrZXQgKCpzZCk7Ci0gICAgICAq
c2QgPSBTT0NLRVRfVU5ERUZJTkVEOwotCi0gICAgICBpZiAoY29ubmVjdF9yZXRyeV9tYXggPiAw
ICYmICsrcmV0cnkgPj0gY29ubmVjdF9yZXRyeV9tYXgpCi0JewotCSAgKnNpZ25hbF9yZWNlaXZl
ZCA9IFNJR1VTUjE7Ci0JICBnb3RvIGRvbmU7Ci0JfQotCi0gICAgICBvcGVudnBuX3NsZWVwIChj
b25uZWN0X3JldHJ5X3NlY29uZHMpOwotCi0gICAgICBnZXRfc2lnbmFsIChzaWduYWxfcmVjZWl2
ZWQpOwotICAgICAgaWYgKCpzaWduYWxfcmVjZWl2ZWQpCi0JZ290byBkb25lOworICAgIGdldF9z
aWduYWwgKHNpZ25hbF9yZWNlaXZlZCk7CisgICAgaWYgKCpzaWduYWxfcmVjZWl2ZWQpCisgICAg
ICBnb3RvIGRvbmU7CiAKLSAgICAgIGlmIChyZW1vdGVfbGlzdCkKLQl7Ci0JICByZW1vdGVfbGlz
dF9uZXh0IChyZW1vdGVfbGlzdCk7Ci0JICByZW1vdGVfZHluYW1pYyA9IHJlbW90ZV9saXN0X2hv
c3QgKHJlbW90ZV9saXN0KTsKLQkgIHJlbW90ZS0+c2Euc2luX3BvcnQgPSBodG9ucyAocmVtb3Rl
X2xpc3RfcG9ydCAocmVtb3RlX2xpc3QpKTsKLQkgICpyZW1vdGVfY2hhbmdlZCA9IHRydWU7Ci0J
fQorICAgIGlmICghc3RhdHVzKQorICAgICAgYnJlYWs7CiAKLSAgICAgICpzZCA9IGNyZWF0ZV9z
b2NrZXRfdGNwICgpOwotICAgICAgaWYgKGJpbmRfbG9jYWwpCi0gICAgICAgIHNvY2tldF9iaW5k
ICgqc2QsIGxvY2FsLCAiVENQIENsaWVudCIpOwotICAgICAgdXBkYXRlX3JlbW90ZSAocmVtb3Rl
X2R5bmFtaWMsIHJlbW90ZSwgcmVtb3RlX2NoYW5nZWQpOwotICAgIH0KKyAgICBtc2cgKERfTElO
S19FUlJPUlMsCisgICAgICAgIlRDUDogY29ubmVjdCB0byAlcyBmYWlsZWQsIHdpbGwgdHJ5IGFn
YWluIGluICVkIHNlY29uZHM6ICVzIiwKKyAgICAgICBwcmludF9zb2NrYWRkciAocmVtb3RlLCAm
Z2MpLAorICAgICAgIGNvbm5lY3RfcmV0cnlfc2Vjb25kcywKKyAgICAgICBzdHJlcnJvcl90cyAo
c3RhdHVzLCAmZ2MpKTsKKworCisgICAgZ2NfcmVzZXQgKCZnYyk7CisKKyAgICBvcGVudnBuX2Ns
b3NlX3NvY2tldCAoKnNkKTsKKyAgICAqc2QgPSBTT0NLRVRfVU5ERUZJTkVEOworCisgICAgaWYg
KGNvbm5lY3RfcmV0cnlfbWF4ID4gMCAmJiArK3JldHJ5ID49IGNvbm5lY3RfcmV0cnlfbWF4KQor
ICAgIHsKKyAgICAgICpzaWduYWxfcmVjZWl2ZWQgPSBTSUdVU1IxOworICAgICAgZ290byBkb25l
OworICAgIH0KKworICAgIG9wZW52cG5fc2xlZXAgKGNvbm5lY3RfcmV0cnlfc2Vjb25kcyk7CisK
KyAgICBnZXRfc2lnbmFsIChzaWduYWxfcmVjZWl2ZWQpOworICAgIGlmICgqc2lnbmFsX3JlY2Vp
dmVkKQorICAgICAgZ290byBkb25lOworCisgICAgc3dpdGNoKHJlbW90ZS0+YWRkci5zYS5zYV9m
YW1pbHkpIHsKKyAgICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICBpZiAocmVtb3RlX2xpc3QpCisg
ICAgICAgeworICAgICAgICAgcmVtb3RlX2xpc3RfbmV4dCAocmVtb3RlX2xpc3QpOworICAgICAg
ICAgcmVtb3RlX2R5bmFtaWMgPSByZW1vdGVfbGlzdF9ob3N0IChyZW1vdGVfbGlzdCk7CisgICAg
ICAgICByZW1vdGUtPmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHJlbW90ZV9saXN0X3BvcnQg
KHJlbW90ZV9saXN0KSk7CisgICAgICAgICAqcmVtb3RlX2NoYW5nZWQgPSB0cnVlOworICAgICAg
IH0KKworICAgICAgICpzZCA9IGNyZWF0ZV9zb2NrZXRfdGNwICgpOworICAgICAgIGlmIChiaW5k
X2xvY2FsKQorICAgICAgICAgc29ja2V0X2JpbmQgKCpzZCwgbG9jYWwsICJUQ1AgQ2xpZW50Iik7
CisgICAgICAgdXBkYXRlX3JlbW90ZSAocmVtb3RlX2R5bmFtaWMsIHJlbW90ZSwgcmVtb3RlX2No
YW5nZWQpOworICAgICAgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICAgY2FzZSBB
Rl9JTkVUNjogCisgICAgICAgaWYgKHJlbW90ZV9saXN0KQorICAgICAgIHsKKyAgICAgICAgIHJl
bW90ZV9saXN0X25leHQgKHJlbW90ZV9saXN0KTsKKyAgICAgICAgIHJlbW90ZV9keW5hbWljID0g
cmVtb3RlX2xpc3RfaG9zdCAocmVtb3RlX2xpc3QpOworICAgICAgICAgcmVtb3RlLT5hZGRyLmlu
Ni5zaW42X3BvcnQgPSBodG9ucyAocmVtb3RlX2xpc3RfcG9ydCAocmVtb3RlX2xpc3QpKTsKKyAg
ICAgICAgICpyZW1vdGVfY2hhbmdlZCA9IHRydWU7CisgICAgICAgfQorICAgICAgICpzZCA9IGNy
ZWF0ZV9zb2NrZXRfdGNwNiAoKTsKKyAgICAgICBpZiAoYmluZF9sb2NhbCkKKyAgICAgICAgIHNv
Y2tldF9iaW5kICgqc2QsIGxvY2FsLCAiVENQNiBDbGllbnQiKTsKKyAgICAgICB1cGRhdGVfcmVt
b3RlIChyZW1vdGVfZHluYW1pYywgcmVtb3RlLCByZW1vdGVfY2hhbmdlZCk7CisgICAgICAgYnJl
YWs7CisjZW5kaWYKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgbXNnKE1fRkFUQUwsICJPbmx5IFRD
UCBpcyBzdXBwb3J0ZWQgZm9yIGNvbm5lY3Rpb24gb3JpZW50ZWQsIHNhX2ZhbWlseT0lZCIsIAor
ICAgICAgICAgICByZW1vdGUtPmFkZHIuc2Euc2FfZmFtaWx5KTsKKyAgICAgfQorICB9CiAKLSAg
bXNnIChNX0lORk8sICJUQ1AgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCB3aXRoICVzIiwgCi0gICAg
ICAgcHJpbnRfc29ja2FkZHIgKHJlbW90ZSwgJmdjKSk7CisgIG1zZyAoTV9JTkZPLCAiVENQIGNv
bm5lY3Rpb24gZXN0YWJsaXNoZWQgd2l0aCAlcyIsCisgICAgICBwcmludF9zb2NrYWRkciAocmVt
b3RlLCAmZ2MpKTsKIAotIGRvbmU6Citkb25lOgogICBnY19mcmVlICgmZ2MpOwogfQogCkBAIC05
NTIsMTcgKzEwNjUsNDQgQEAKIAogICAvKiByZXNvbHZlIGxvY2FsIGFkZHJlc3MgaWYgdW5kZWZp
bmVkICovCiAgIGlmICghYWRkcl9kZWZpbmVkICgmc29jay0+aW5mby5sc2EtPmxvY2FsKSkKLSAg
ICB7Ci0gICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuc2Euc2luX2ZhbWlseSA9IEFGX0lORVQ7
Ci0gICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuc2Euc2luX2FkZHIuc19hZGRyID0KLQkoc29j
ay0+bG9jYWxfaG9zdCA/IGdldGFkZHIgKEdFVEFERFJfUkVTT0xWRSB8IEdFVEFERFJfV0FSTl9P
Tl9TSUdOQUwgfCBHRVRBRERSX0ZBVEFMLAotCQkJCSAgICAgc29jay0+bG9jYWxfaG9zdCwKLQkJ
CQkgICAgIDAsCi0JCQkJICAgICBOVUxMLAotCQkJCSAgICAgTlVMTCkKLQkgOiBodG9ubCAoSU5B
RERSX0FOWSkpOwotICAgICAgc29jay0+aW5mby5sc2EtPmxvY2FsLnNhLnNpbl9wb3J0ID0gaHRv
bnMgKHNvY2stPmxvY2FsX3BvcnQpOworICB7CisgICAgLyogbWF5IHJldHVybiBBRl97SU5FVHxJ
TkVUNn0gZ3Vlc3NlZCBmcm9tIGxvY2FsX2hvc3QgKi8KKyAgICBzd2l0Y2goYWRkcl9ndWVzc19m
YW1pbHkoc29jay0+aW5mby5wcm90bywgc29jay0+bG9jYWxfaG9zdCkpIHsKKyAgICAgIGNhc2Ug
QUZfSU5FVDoKKwlzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjQuc2luX2ZhbWlseSA9IEFG
X0lORVQ7CisJc29jay0+aW5mby5sc2EtPmxvY2FsLmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciA9
CisJICAoc29jay0+bG9jYWxfaG9zdCA/IGdldGFkZHIgKEdFVEFERFJfUkVTT0xWRSB8IEdFVEFE
RFJfV0FSTl9PTl9TSUdOQUwgfCBHRVRBRERSX0ZBVEFMLAorCQkJCSAgICAgICBzb2NrLT5sb2Nh
bF9ob3N0LAorCQkJCSAgICAgICAwLAorCQkJCSAgICAgICBOVUxMLAorCQkJCSAgICAgICBOVUxM
KQorCSAgIDogaHRvbmwgKElOQUREUl9BTlkpKTsKKwlzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRk
ci5pbjQuc2luX3BvcnQgPSBodG9ucyAoc29jay0+bG9jYWxfcG9ydCk7CisJYnJlYWs7CisjaWZk
ZWYgVVNFX1BGX0lORVQ2CisgICAgICBjYXNlIEFGX0lORVQ2OgorCXsKKwkgIHN0cnVjdCBhZGRy
aW5mbyBoaW50cyAsICphaTsKKwkgIGludCBlcnI7CisJICBtZW1zZXQoJmhpbnRzLCAwLCBzaXpl
b2YgaGludHMpOworCSAgaGludHMuYWlfZmxhZ3M9QUlfUEFTU0lWRTsKKwkgIGhpbnRzLmFpX2Zh
bWlseT1BRl9JTkVUNjsKKwkgIC8qIGlmIG5vIGxvY2FsX2hvc3QgcHJvdmlkZWQsIGFzayBmb3Ig
SU42QUREUl9BTlkgLi4uICovCisJICBpZiAoKGVycj1nZXRhZGRyaW5mbyhzb2NrLT5sb2NhbF9o
b3N0PyBzb2NrLT5sb2NhbF9ob3N0IDogIjo6IiwgCisJCSAgTlVMTCwgJmhpbnRzLCAmYWkpKT09
MCkgeworCSAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjYgPSAqKChzdHJ1Y3Qgc29j
a2FkZHJfaW42KikoYWktPmFpX2FkZHIpKTsKKwkgICAgZnJlZWFkZHJpbmZvKGFpKTsKKwkgIH0g
ZWxzZSB7CisJICAgIG1zZyAoTV9GQVRBTCwgImdldGFkZHJpbmZvKCkgZmFpbGVkIGZvciBsb2Nh
bCBcIiVzXCI6ICVzIiwKKwkJc29jay0+bG9jYWxfaG9zdCwKKwkJZ2FpX3N0cmVycm9yKGVycikp
OworCSAgfQorCSAgc29jay0+aW5mby5sc2EtPmxvY2FsLmFkZHIuaW42LnNpbjZfcG9ydCA9IGh0
b25zIChzb2NrLT5sb2NhbF9wb3J0KTsKKwl9CisJYnJlYWs7CisjZW5kaWYKICAgICB9CisgIH0K
ICAgCiAgIC8qIGJpbmQgdG8gbG9jYWwgYWRkcmVzcy9wb3J0ICovCiAgIGlmIChzb2NrLT5iaW5k
X2xvY2FsKQpAQCAtOTg2LDEwMyArMTEyNiwxMjggQEAKICAgc3RydWN0IGdjX2FyZW5hIGdjID0g
Z2NfbmV3ICgpOwogCiAgIGlmICghc29jay0+ZGlkX3Jlc29sdmVfcmVtb3RlKQorICB7CisgICAg
LyogcmVzb2x2ZSByZW1vdGUgYWRkcmVzcyBpZiB1bmRlZmluZWQgKi8KKyAgICBpZiAoIWFkZHJf
ZGVmaW5lZCAoJnNvY2stPmluZm8ubHNhLT5yZW1vdGUpKQogICAgIHsKLSAgICAgIC8qIHJlc29s
dmUgcmVtb3RlIGFkZHJlc3MgaWYgdW5kZWZpbmVkICovCi0gICAgICBpZiAoIWFkZHJfZGVmaW5l
ZCAoJnNvY2stPmluZm8ubHNhLT5yZW1vdGUpKQotCXsKLQkgIHNvY2stPmluZm8ubHNhLT5yZW1v
dGUuc2Euc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0JICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNh
LnNpbl9hZGRyLnNfYWRkciA9IDA7CisgICAgICBzd2l0Y2goYWRkcl9ndWVzc19mYW1pbHkoc29j
ay0+aW5mby5wcm90bywgc29jay0+cmVtb3RlX2hvc3QpKSAKKyAgICAgIHsKKwljYXNlIEFGX0lO
RVQ6CisJICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIuaW40LnNpbl9mYW1pbHkgPSBBRl9J
TkVUOworCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIg
PSAwOwogCiAJICBpZiAoc29jay0+cmVtb3RlX2hvc3QpCi0JICAgIHsKLQkgICAgICB1bnNpZ25l
ZCBpbnQgZmxhZ3MgPSBHRVRBRERSX1JFU09MVkV8R0VUQUREUl9VUERBVEVfTUFOQUdFTUVOVF9T
VEFURTsKLQkgICAgICBpbnQgcmV0cnkgPSAwOwotCSAgICAgIGJvb2wgc3RhdHVzID0gZmFsc2U7
CisJICB7CisJICAgIHVuc2lnbmVkIGludCBmbGFncyA9IEdFVEFERFJfUkVTT0xWRXxHRVRBRERS
X1VQREFURV9NQU5BR0VNRU5UX1NUQVRFOworCSAgICBpbnQgcmV0cnkgPSAwOworCSAgICBib29s
IHN0YXR1cyA9IGZhbHNlOwogCi0JICAgICAgaWYgKHJlbW90ZV9saXN0X2xlbiAoc29jay0+cmVt
b3RlX2xpc3QpID4gMSAmJiBzb2NrLT5yZXNvbHZlX3JldHJ5X3NlY29uZHMgPT0gUkVTT0xWX1JF
VFJZX0lORklOSVRFKQotCQl7Ci0JCSAgaWYgKHBoYXNlID09IDIpCi0JCSAgICBmbGFncyB8PSAo
R0VUQUREUl9UUllfT05DRSB8IEdFVEFERFJfRkFUQUwpOwotCQkgIHJldHJ5ID0gMDsKLQkJfQot
CSAgICAgIGVsc2UgaWYgKHBoYXNlID09IDEpCi0JCXsKLQkJICBpZiAoc29jay0+cmVzb2x2ZV9y
ZXRyeV9zZWNvbmRzKQotCQkgICAgewotCQkgICAgICByZXRyeSA9IDA7Ci0JCSAgICB9Ci0JCSAg
ZWxzZQotCQkgICAgewotCQkgICAgICBmbGFncyB8PSAoR0VUQUREUl9GQVRBTCB8IEdFVEFERFJf
TUVOVElPTl9SRVNPTFZFX1JFVFJZKTsKLQkJICAgICAgcmV0cnkgPSAwOwotCQkgICAgfQotCQl9
Ci0JICAgICAgZWxzZSBpZiAocGhhc2UgPT0gMikKLQkJewotCQkgIGlmIChzb2NrLT5yZXNvbHZl
X3JldHJ5X3NlY29uZHMpCi0JCSAgICB7Ci0JCSAgICAgIGZsYWdzIHw9IEdFVEFERFJfRkFUQUw7
Ci0JCSAgICAgIHJldHJ5ID0gc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzOwotCQkgICAgfQot
CQkgIGVsc2UKLQkJICAgIHsKLQkJICAgICAgQVNTRVJUICgwKTsKLQkJICAgIH0KLQkJfQorCSAg
ICBpZiAocmVtb3RlX2xpc3RfbGVuIChzb2NrLT5yZW1vdGVfbGlzdCkgPiAxICYmIHNvY2stPnJl
c29sdmVfcmV0cnlfc2Vjb25kcyA9PSBSRVNPTFZfUkVUUllfSU5GSU5JVEUpCisJICAgIHsKKwkg
ICAgICBpZiAocGhhc2UgPT0gMikKKwkJZmxhZ3MgfD0gKEdFVEFERFJfVFJZX09OQ0UgfCBHRVRB
RERSX0ZBVEFMKTsKKwkgICAgICByZXRyeSA9IDA7CisJICAgIH0KKwkgICAgZWxzZSBpZiAocGhh
c2UgPT0gMSkKKwkgICAgeworCSAgICAgIGlmIChzb2NrLT5yZXNvbHZlX3JldHJ5X3NlY29uZHMp
CisJICAgICAgeworCQlyZXRyeSA9IDA7CisJICAgICAgfQogCSAgICAgIGVsc2UKLQkJewotCQkg
IEFTU0VSVCAoMCk7Ci0JCX0KKwkgICAgICB7CisJCWZsYWdzIHw9IChHRVRBRERSX0ZBVEFMIHwg
R0VUQUREUl9NRU5USU9OX1JFU09MVkVfUkVUUlkpOworCQlyZXRyeSA9IDA7CisJICAgICAgfQor
CSAgICB9CisJICAgIGVsc2UgaWYgKHBoYXNlID09IDIpCisJICAgIHsKKwkgICAgICBpZiAoc29j
ay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzKQorCSAgICAgIHsKKwkJZmxhZ3MgfD0gR0VUQUREUl9G
QVRBTDsKKwkJcmV0cnkgPSBzb2NrLT5yZXNvbHZlX3JldHJ5X3NlY29uZHM7CisJICAgICAgfQor
CSAgICAgIGVsc2UKKwkgICAgICB7CisJCUFTU0VSVCAoMCk7CisJICAgICAgfQorCSAgICB9CisJ
ICAgIGVsc2UKKwkgICAgeworCSAgICAgIEFTU0VSVCAoMCk7CisJICAgIH0KIAotCSAgICAgIHNv
Y2stPmluZm8ubHNhLT5yZW1vdGUuc2Euc2luX2FkZHIuc19hZGRyID0gZ2V0YWRkciAoCi0JCSAg
ICBmbGFncywKLQkJICAgIHNvY2stPnJlbW90ZV9ob3N0LAotCQkgICAgcmV0cnksCi0JCSAgICAm
c3RhdHVzLAotCQkgICAgc2lnbmFsX3JlY2VpdmVkKTsKLQkgICAgICAKLQkgICAgICBkbXNnIChE
X1NPQ0tFVF9ERUJVRywgIlJFU09MVkVfUkVNT1RFIGZsYWdzPTB4JTA0eCBwaGFzZT0lZCBycnM9
JWQgc2lnPSVkIHN0YXR1cz0lZCIsCi0JCSAgIGZsYWdzLAotCQkgICBwaGFzZSwKLQkJICAgcmV0
cnksCi0JCSAgIHNpZ25hbF9yZWNlaXZlZCA/ICpzaWduYWxfcmVjZWl2ZWQgOiAtMSwKLQkJICAg
c3RhdHVzKTsKKwkgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNC5zaW5fYWRkci5z
X2FkZHIgPSBnZXRhZGRyICgKKwkJZmxhZ3MsCisJCXNvY2stPnJlbW90ZV9ob3N0LAorCQlyZXRy
eSwKKwkJJnN0YXR1cywKKwkJc2lnbmFsX3JlY2VpdmVkKTsKKworCSAgICBkbXNnIChEX1NPQ0tF
VF9ERUJVRywgIlJFU09MVkVfUkVNT1RFIGZsYWdzPTB4JTA0eCBwaGFzZT0lZCBycnM9JWQgc2ln
PSVkIHN0YXR1cz0lZCIsCisJCWZsYWdzLAorCQlwaGFzZSwKKwkJcmV0cnksCisJCXNpZ25hbF9y
ZWNlaXZlZCA/ICpzaWduYWxfcmVjZWl2ZWQgOiAtMSwKKwkJc3RhdHVzKTsKIAorCSAgICBpZiAo
c2lnbmFsX3JlY2VpdmVkKQorCSAgICB7CisJICAgICAgaWYgKCpzaWduYWxfcmVjZWl2ZWQpCisJ
CWdvdG8gZG9uZTsKKwkgICAgfQorCSAgICBpZiAoIXN0YXR1cykKKwkgICAgewogCSAgICAgIGlm
IChzaWduYWxfcmVjZWl2ZWQpCi0JCXsKLQkJICBpZiAoKnNpZ25hbF9yZWNlaXZlZCkKLQkJICAg
IGdvdG8gZG9uZTsKLQkJfQotCSAgICAgIGlmICghc3RhdHVzKQotCQl7Ci0JCSAgaWYgKHNpZ25h
bF9yZWNlaXZlZCkKLQkJICAgICpzaWduYWxfcmVjZWl2ZWQgPSBTSUdVU1IxOwotCQkgIGdvdG8g
ZG9uZTsKLQkJfQorCQkqc2lnbmFsX3JlY2VpdmVkID0gU0lHVVNSMTsKKwkgICAgICBnb3RvIGRv
bmU7CiAJICAgIH0KKwkgIH0KIAotCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zYS5zaW5fcG9y
dCA9IGh0b25zIChzb2NrLT5yZW1vdGVfcG9ydCk7Ci0JfQotICAKLSAgICAgIC8qIHNob3VsZCB3
ZSByZS11c2UgcHJldmlvdXMgYWN0aXZlIHJlbW90ZSBhZGRyZXNzPyAqLwotICAgICAgaWYgKGxp
bmtfc29ja2V0X2FjdHVhbF9kZWZpbmVkICgmc29jay0+aW5mby5sc2EtPmFjdHVhbCkpCi0Jewot
CSAgbXNnIChNX0lORk8sICJUQ1AvVURQOiBQcmVzZXJ2aW5nIHJlY2VudGx5IHVzZWQgcmVtb3Rl
IGFkZHJlc3M6ICVzIiwKLQkgICAgICAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsICgmc29jay0+
aW5mby5sc2EtPmFjdHVhbCwgJmdjKSk7Ci0JICBpZiAocmVtb3RlX2R5bmFtaWMpCi0JICAgICpy
ZW1vdGVfZHluYW1pYyA9IE5VTEw7Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIENMRUFSIChzb2Nr
LT5pbmZvLmxzYS0+YWN0dWFsKTsKLQkgIHNvY2stPmluZm8ubHNhLT5hY3R1YWwuZGVzdCA9IHNv
Y2stPmluZm8ubHNhLT5yZW1vdGU7Ci0JfQorCSAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRy
LmluNC5zaW5fcG9ydCA9IGh0b25zIChzb2NrLT5yZW1vdGVfcG9ydCk7CisJICBicmVhazsKIAot
ICAgICAgLyogcmVtZW1iZXIgdGhhdCB3ZSBmaW5pc2hlZCAqLwotICAgICAgc29jay0+ZGlkX3Jl
c29sdmVfcmVtb3RlID0gdHJ1ZTsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKwljYXNlIEFGX0lORVQ2
OiAvKiBqam9GSVhNRTogaXB2NiBzaWduYWwgbG9naWMgKi8KKwkgIHsKKwkgICAgc3RydWN0IGFk
ZHJpbmZvIGhpbnRzICwgKmFpOworCSAgICBpbnQgZXJyOworCSAgICBtZW1zZXQoJmhpbnRzLCAw
LCBzaXplb2YgaGludHMpOworCSAgICBoaW50cy5haV9mbGFncz0wOworCSAgICBoaW50cy5haV9m
YW1pbHk9QUZfSU5FVDY7CisJICAgIGlmICgoZXJyPWdldGFkZHJpbmZvKHNvY2stPnJlbW90ZV9o
b3N0PyBzb2NrLT5yZW1vdGVfaG9zdCA6ICI6OiIgLCBOVUxMLCAmaGludHMsICZhaSkpPT0wKSB7
CisJICAgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNiA9ICooKHN0cnVjdCBzb2Nr
YWRkcl9pbjYqKShhaS0+YWlfYWRkcikpOworCSAgICAgIGZyZWVhZGRyaW5mbyhhaSk7CisJICAg
IH0gZWxzZSB7CisJICAgICAgbXNnIChNX0ZBVEFMLCAiZ2V0YWRkcmluZm8oKSBmYWlsZWQgZm9y
IHJlbW90ZSBcIiVzXCI6ICVzIiwKKwkJICBzb2NrLT5yZW1vdGVfaG9zdCwKKwkJICBnYWlfc3Ry
ZXJyb3IoZXJyKSk7CisJICAgIH0KKwkgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmlu
Ni5zaW42X3BvcnQgPSBodG9ucyAoc29jay0+cmVtb3RlX3BvcnQpOworCSAgfQorCSAgYnJlYWs7
CisjZW5kaWYKKyAgICAgIH0KKyAgICB9CisgICAgLyogc2hvdWxkIHdlIHJlLXVzZSBwcmV2aW91
cyBhY3RpdmUgcmVtb3RlIGFkZHJlc3M/ICovCisgICAgaWYgKGxpbmtfc29ja2V0X2FjdHVhbF9k
ZWZpbmVkICgmc29jay0+aW5mby5sc2EtPmFjdHVhbCkpCisgICAgeworICAgICAgbXNnIChNX0lO
Rk8sICJUQ1AvVURQOiBQcmVzZXJ2aW5nIHJlY2VudGx5IHVzZWQgcmVtb3RlIGFkZHJlc3M6ICVz
IiwKKwkgIHByaW50X2xpbmtfc29ja2V0X2FjdHVhbCAoJnNvY2stPmluZm8ubHNhLT5hY3R1YWws
ICZnYykpOworICAgICAgaWYgKHJlbW90ZV9keW5hbWljKQorCSpyZW1vdGVfZHluYW1pYyA9IE5V
TEw7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBDTEVBUiAoc29jay0+aW5mby5sc2Et
PmFjdHVhbCk7CisgICAgICBzb2NrLT5pbmZvLmxzYS0+YWN0dWFsLmRlc3QgPSBzb2NrLT5pbmZv
LmxzYS0+cmVtb3RlOwogICAgIH0KIAotIGRvbmU6CisgICAgLyogcmVtZW1iZXIgdGhhdCB3ZSBm
aW5pc2hlZCAqLworICAgIHNvY2stPmRpZF9yZXNvbHZlX3JlbW90ZSA9IHRydWU7CisgIH0KKwor
ZG9uZToKICAgZ2NfZnJlZSAoJmdjKTsKIH0KIApAQCAtMTMxMiw3ICsxNDc3LDExIEBACiAJZ290
byBkb25lOwogCiAgICAgICAvKiBUQ1AgY2xpZW50L3NlcnZlciAqLwotICAgICAgaWYgKHNvY2st
PmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSKQorICAgICAgaWYgKHNvY2stPmluZm8u
cHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSCisjaWZkZWYgVVNFX1BGX0lORVQ2CisJfHxzb2Nr
LT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUgorI2VuZGlmCisJKQogCXsKIAkgIHN3
aXRjaCAoc29jay0+bW9kZSkKIAkgICAgewpAQCAtMTM0Nyw3ICsxNTE2LDExIEBACiAJICAgICAg
QVNTRVJUICgwKTsKIAkgICAgfQogCX0KLSAgICAgIGVsc2UgaWYgKHNvY2stPmluZm8ucHJvdG8g
PT0gUFJPVE9fVENQdjRfQ0xJRU5UKQorICAgICAgZWxzZSBpZiAoc29jay0+aW5mby5wcm90byA9
PSBQUk9UT19UQ1B2NF9DTElFTlQKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKwl8fHNvY2stPmluZm8u
cHJvdG8gPT0gUFJPVE9fVENQdjZfQ0xJRU5UCisjZW5kaWYKKwkpCiAJewogCiAjaWZkZWYgR0VO
RVJBTF9QUk9YWV9TVVBQT1JUCkBAIC0xNDMyLDggKzE2MDUsOCBAQAogCSAgc29jay0+cmVtb3Rl
X3BvcnQgPSBzb2NrLT5wcm94eV9kZXN0X3BvcnQ7CiAJICBzb2NrLT5kaWRfcmVzb2x2ZV9yZW1v
dGUgPSBmYWxzZTsKIAotCSAgc29jay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LnNhLnNpbl9hZGRy
LnNfYWRkciA9IDA7Ci0JICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNhLnNpbl9hZGRyLnNfYWRk
ciA9IDA7CisJICBhZGRyX3plcm9faG9zdCgmc29jay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0KTsK
KwkgIGFkZHJfemVyb19ob3N0KCZzb2NrLT5pbmZvLmxzYS0+cmVtb3RlKTsKIAogCSAgcmVzb2x2
ZV9yZW1vdGUgKHNvY2ssIDEsIE5VTEwsIHNpZ25hbF9yZWNlaXZlZCk7CiAKQEAgLTE0NDgsNyAr
MTYyMSw3IEBACiAgICAgICBpZiAocmVtb3RlX2NoYW5nZWQpCiAJewogCSAgbXNnIChNX0lORk8s
ICJUQ1AvVURQOiBEeW5hbWljIHJlbW90ZSBhZGRyZXNzIGNoYW5nZWQgZHVyaW5nIFRDUCBjb25u
ZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKLQkgIHNvY2stPmluZm8ubHNhLT5yZW1vdGUuc2Euc2lu
X2FkZHIuc19hZGRyID0gc29jay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LnNhLnNpbl9hZGRyLnNf
YWRkcjsKKwkgIGFkZHJfY29weV9ob3N0KCZzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLCAmc29jay0+
aW5mby5sc2EtPmFjdHVhbC5kZXN0KTsKIAl9CiAgICAgfQogCkBAIC0xNjIwLDEzICsxNzkzLDIw
IEBACiB7CiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsKIAotICBtc2cgKERfTElO
S19FUlJPUlMsCi0gICAgICAgIlRDUC9VRFA6IEluY29taW5nIHBhY2tldCByZWplY3RlZCBmcm9t
ICVzWyVkXSwgZXhwZWN0ZWQgcGVlciBhZGRyZXNzOiAlcyAoYWxsb3cgdGhpcyBpbmNvbWluZyBz
b3VyY2UgYWRkcmVzcy9wb3J0IGJ5IHJlbW92aW5nIC0tcmVtb3RlIG9yIGFkZGluZyAtLWZsb2F0
KSIsCi0gICAgICAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsIChmcm9tX2FkZHIsICZnYyksCi0g
ICAgICAgKGludClmcm9tX2FkZHItPmRlc3Quc2Euc2luX2ZhbWlseSwKLSAgICAgICBwcmludF9z
b2NrYWRkciAoJmluZm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgc3dpdGNoKGZyb21fYWRkci0+
ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkKKyAgeworICAgIGNhc2UgQUZfSU5FVDoKKyNpZmRlZiBV
U0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OgorI2VuZGlmCisgICAgICBtc2cgKERfTElO
S19FUlJPUlMsCisJICAiVENQL1VEUDogSW5jb21pbmcgcGFja2V0IHJlamVjdGVkIGZyb20gJXNb
JWRdLCBleHBlY3RlZCBwZWVyIGFkZHJlc3M6ICVzIChhbGxvdyB0aGlzIGluY29taW5nIHNvdXJj
ZSBhZGRyZXNzL3BvcnQgYnkgcmVtb3ZpbmcgLS1yZW1vdGUgb3IgYWRkaW5nIC0tZmxvYXQpIiwK
KwkgIHByaW50X2xpbmtfc29ja2V0X2FjdHVhbCAoZnJvbV9hZGRyLCAmZ2MpLAorCSAgKGludClm
cm9tX2FkZHItPmRlc3QuYWRkci5zYS5zYV9mYW1pbHksCisJICBwcmludF9zb2NrYWRkciAoJmlu
Zm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgICAgIGJyZWFrOworICB9CiAgIGJ1Zi0+bGVuID0g
MDsKLQogICBnY19mcmVlICgmZ2MpOwogfQogCkBAIC0xNjQxLDEwICsxODIxLDI1IEBACiB7CiAg
IGNvbnN0IHN0cnVjdCBsaW5rX3NvY2tldF9hZGRyICpsc2EgPSBpbmZvLT5sc2E7CiAKKy8qIAor
ICogVGhpcyBsb2dpYyBzdXBwb3J0cyAicmVkaXJlY3QtZ2F0ZXdheSIgc2VtYW50aWMsIHdoaWNo
IAorICogbWFrZXMgc2Vuc2Ugb25seSBmb3IgUEZfSU5FVCByb3V0ZXMgb3ZlciBQRl9JTkVUIGVu
ZHBvaW50cworICoKKyAqIE1heWJlIGluIHRoZSBmdXR1cmUgY29uc2lkZXIgUEZfSU5FVDYgZW5k
cG9pbnRzIGFsc28gLi4uCisgKiBieSBub3cganVzdCBpZ25vcmUgaXQKKyAqCisgKi8KKyNpZiBk
ZWZpbmVkICggVVNFX1BGX0lORVQ2ICkKKyAgaWYobHNhLT5hY3R1YWwuZGVzdC5hZGRyLnNhLnNh
X2ZhbWlseSAhPSBBRl9JTkVUKQorCSAgcmV0dXJuIDA7CisjZWxzZQorICBBU1NFUlQobHNhLT5h
Y3R1YWwuZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKTsKKyNlbmRpZgorCiAgIGlm
IChsaW5rX3NvY2tldF9hY3R1YWxfZGVmaW5lZCAoJmxzYS0+YWN0dWFsKSkKLSAgICByZXR1cm4g
bnRvaGwgKGxzYS0+YWN0dWFsLmRlc3Quc2Euc2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1cm4g
bnRvaGwgKGxzYS0+YWN0dWFsLmRlc3QuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyKTsKICAgZWxz
ZSBpZiAoYWRkcl9kZWZpbmVkICgmbHNhLT5yZW1vdGUpKQotICAgIHJldHVybiBudG9obCAobHNh
LT5yZW1vdGUuc2Euc2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1cm4gbnRvaGwgKGxzYS0+cmVt
b3RlLmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkcik7CiAgIGVsc2UKICAgICByZXR1cm4gMDsKIH0K
QEAgLTE4NzEsMjcgKzIwNjYsNTggQEAKIAkJICAgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLAog
CQkgICBzdHJ1Y3QgZ2NfYXJlbmEgKmdjKQogewotICBpZiAoYWRkcikKLSAgICB7Ci0gICAgICBz
dHJ1Y3QgYnVmZmVyIG91dCA9IGFsbG9jX2J1Zl9nYyAoNjQsIGdjKTsKLSAgICAgIGNvbnN0IGlu
dCBwb3J0ID0gbnRvaHMgKGFkZHItPnNhLnNpbl9wb3J0KTsKLQotICAgICAgbXV0ZXhfbG9ja19z
dGF0aWMgKExfSU5FVF9OVE9BKTsKLSAgICAgIGJ1Zl9wcmludGYgKCZvdXQsICIlcyIsIChhZGRy
X2RlZmluZWQgKGFkZHIpID8gaW5ldF9udG9hIChhZGRyLT5zYS5zaW5fYWRkcikgOiAiW3VuZGVm
XSIpKTsKLSAgICAgIG11dGV4X3VubG9ja19zdGF0aWMgKExfSU5FVF9OVE9BKTsKKyAgc3RydWN0
IGJ1ZmZlciBvdXQ7CisgIGJvb2wgYWRkcl9pc19kZWZpbmVkOworICBpZiAoIWFkZHIpIHsKKyAg
ICByZXR1cm4gIltOVUxMXSI7CisgIH0KKyAgYWRkcl9pc19kZWZpbmVkID0gIGFkZHJfZGVmaW5l
ZCAoYWRkcik7CisgIHN3aXRjaChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNhc2Ug
QUZfSU5FVDoKKyAgICAgIHsKKwljb25zdCBpbnQgcG9ydD0gbnRvaHMgKGFkZHItPmFkZHIuaW40
LnNpbl9wb3J0KTsKKwlvdXQgPSBhbGxvY19idWZfZ2MgKDEyOCwgZ2MpOworCWJ1Zl9wdXRzICgm
b3V0LCAiW0FGX0lORVRdIik7CisJbXV0ZXhfbG9ja19zdGF0aWMgKExfSU5FVF9OVE9BKTsKKwli
dWZfcHV0cyAoJm91dCwgKGFkZHJfaXNfZGVmaW5lZCA/IGluZXRfbnRvYSAoYWRkci0+YWRkci5p
bjQuc2luX2FkZHIpIDogIlt1bmRlZl0iKSk7CisJbXV0ZXhfdW5sb2NrX3N0YXRpYyAoTF9JTkVU
X05UT0EpOwogCi0gICAgICBpZiAoKChmbGFncyAmIFBTX1NIT1dfUE9SVCkgfHwgKGFkZHJfZGVm
aW5lZCAoYWRkcikgJiYgKGZsYWdzICYgUFNfU0hPV19QT1JUX0lGX0RFRklORUQpKSkKLQkgICYm
IHBvcnQpCisJaWYgKCgoZmxhZ3MgJiBQU19TSE9XX1BPUlQpIHx8IChhZGRyX2lzX2RlZmluZWQg
JiYgKGZsYWdzICYgUFNfU0hPV19QT1JUX0lGX0RFRklORUQpKSkKKwkgICAgJiYgcG9ydCkKIAl7
CiAJICBpZiAoc2VwYXJhdG9yKQogCSAgICBidWZfcHJpbnRmICgmb3V0LCAiJXMiLCBzZXBhcmF0
b3IpOwogCiAJICBidWZfcHJpbnRmICgmb3V0LCAiJWQiLCBwb3J0KTsKIAl9Ci0gICAgICByZXR1
cm4gQlNUUiAoJm91dCk7Ci0gICAgfQotICBlbHNlCi0gICAgcmV0dXJuICJbTlVMTF0iOworICAg
ICAgfQorICAgICAgYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVU
NjoKKyAgICAgIHsKKwljb25zdCBpbnQgcG9ydD0gbnRvaHMgKGFkZHItPmFkZHIuaW42LnNpbjZf
cG9ydCk7CisJY2hhciBidWZbSU5FVDZfQUREUlNUUkxFTl0gPSAiW3VuZGVmXSI7CisJb3V0ID0g
YWxsb2NfYnVmX2djICgxMjgsIGdjKTsKKwlidWZfcHV0cyAoJm91dCwgIltBRl9JTkVUNl0iKTsK
KwlpZiAoYWRkcl9pc19kZWZpbmVkKQorCXsKKwkgIGdldG5hbWVpbmZvKCZhZGRyLT5hZGRyLnNh
LCBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorCSAgICAgIGJ1Ziwgc2l6ZW9mIChidWYp
LCBOVUxMLCAwLCBOSV9OVU1FUklDSE9TVCk7CisJICBidWZfcHV0cyAoJm91dCwgYnVmKTsKKwl9
CisJaWYgKCgoZmxhZ3MgJiBQU19TSE9XX1BPUlQpIHx8IChhZGRyX2lzX2RlZmluZWQgJiYgKGZs
YWdzICYgUFNfU0hPV19QT1JUX0lGX0RFRklORUQpKSkKKwkgICAgJiYgcG9ydCkKKwl7CisJICBp
ZiAoc2VwYXJhdG9yKQorCSAgICBidWZfcHV0cyAoJm91dCwgc2VwYXJhdG9yKTsKKworCSAgYnVm
X3ByaW50ZiAoJm91dCwgIiVkIiwgcG9ydCk7CisJfQorICAgICAgfQorICAgICAgYnJlYWs7Cisj
ZW5kaWYKKyAgfQorICAgcmV0dXJuIEJTVFIgKCZvdXQpOwogfQogCiBjb25zdCBjaGFyICoKQEAg
LTE5MTEsMTIgKzIxMzcsMzggQEAKICAgICAgIHN0cnVjdCBidWZmZXIgb3V0ID0gYWxsb2NfYnVm
X2djICgxMjgsIGdjKTsKICAgICAgIGJ1Zl9wcmludGYgKCZvdXQsICIlcyIsIHByaW50X3NvY2th
ZGRyX2V4ICgmYWN0LT5kZXN0LCBzZXBhcmF0b3IsIGZsYWdzLCBnYykpOwogI2lmIEVOQUJMRV9J
UF9QS1RJTkZPCi0gICAgICBpZiAoKGZsYWdzICYgUFNfU0hPV19QS1RJTkZPKSAmJiBhY3QtPnBp
LmlwaV9zcGVjX2RzdC5zX2FkZHIpCisgICAgICBpZiAoKGZsYWdzICYgUFNfU0hPV19QS1RJTkZP
KSAmJiBhZGRyX2RlZmluZWRfaXBpKGFjdCkpCiAJeworCSAgc3dpdGNoKGFjdC0+ZGVzdC5hZGRy
LnNhLnNhX2ZhbWlseSkKKwkgIHsKKwljYXNlIEFGX0lORVQ6CisJICB7CiAJICBzdHJ1Y3Qgb3Bl
bnZwbl9zb2NrYWRkciBzYTsKIAkgIENMRUFSIChzYSk7Ci0JICBzYS5zYS5zaW5fYWRkciA9IGFj
dC0+cGkuaXBpX3NwZWNfZHN0OworCSAgc2EuYWRkci5pbjQuc2luX2FkZHIgPSBhY3QtPnBpLmlu
NC5pcGlfc3BlY19kc3Q7CiAJICBidWZfcHJpbnRmICgmb3V0LCAiICh2aWEgJXMpIiwgcHJpbnRf
c29ja2FkZHJfZXggKCZzYSwgc2VwYXJhdG9yLCAwLCBnYykpOworCSAgfQorCSAgYnJlYWs7Cisj
aWZkZWYgVVNFX1BGX0lORVQ2CisJY2FzZSBBRl9JTkVUNjoKKwkgIHsKKwkgICAgc3RydWN0IHNv
Y2thZGRyX2luNiBzaW42OworCSAgICBjaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXSA9ICJbdW5k
ZWZdIjsKKwkgICAgbWVtc2V0KCZzaW42LCAwLCBzaXplb2Ygc2luNik7CisJICAgIHNpbjYuc2lu
Nl9mYW1pbHkgPSBBRl9JTkVUNjsKKwkgICAgc2luNi5zaW42X2FkZHIgPSBhY3QtPnBpLmluNi5p
cGk2X2FkZHI7CisJICAgIHsKKwkgICAgICBpZiAoZ2V0bmFtZWluZm8oKHN0cnVjdCBzb2NrYWRk
ciAqKSZzaW42LCBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorCQkgICAgYnVmLCBzaXpl
b2YgKGJ1ZiksIE5VTEwsIDAsIE5JX05VTUVSSUNIT1NUKSA9PSAwKQorCQlidWZfcHJpbnRmICgm
b3V0LCAiICh2aWEgJXMpIiwgYnVmKTsKKwkgICAgICBlbHNlCisJCWJ1Zl9wcmludGYgKCZvdXQs
ICIgKHZpYSBbZ2V0bmFtZWluZm8oKSBlcnJdKSIpOworCSAgICB9CisJICB9CisJICBicmVhazsK
KyNlbmRpZgorCSAgfQorCiAJfQogI2VuZGlmCiAgICAgICByZXR1cm4gQlNUUiAoJm91dCk7CkBA
IC0xOTUyLDIxICsyMjA0LDM3IEBACiBzZXRlbnZfc29ja2FkZHIgKHN0cnVjdCBlbnZfc2V0ICpl
cywgY29uc3QgY2hhciAqbmFtZV9wcmVmaXgsIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRy
ICphZGRyLCBjb25zdCBib29sIGZsYWdzKQogewogICBjaGFyIG5hbWVfYnVmWzI1Nl07CisgIGNo
YXIgYnVmWzEyOF07CiAKLSAgaWYgKGZsYWdzICYgU0FfSVBfUE9SVCkKLSAgICBvcGVudnBuX3Nu
cHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlc19pcCIsIG5hbWVfcHJlZml4
KTsKLSAgZWxzZQotICAgIG9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBzaXplb2YgKG5hbWVf
YnVmKSwgIiVzIiwgbmFtZV9wcmVmaXgpOworICBzd2l0Y2goYWRkci0+YWRkci5zYS5zYV9mYW1p
bHkpIHsKKyAgICBjYXNlIEFGX0lORVQ6CisgICAgICBpZiAoZmxhZ3MgJiBTQV9JUF9QT1JUKQor
CW9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBzaXplb2YgKG5hbWVfYnVmKSwgIiVzX2lwIiwg
bmFtZV9wcmVmaXgpOworICAgICAgZWxzZQorCW9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBz
aXplb2YgKG5hbWVfYnVmKSwgIiVzIiwgbmFtZV9wcmVmaXgpOwogCi0gIG11dGV4X2xvY2tfc3Rh
dGljIChMX0lORVRfTlRPQSk7Ci0gIHNldGVudl9zdHIgKGVzLCBuYW1lX2J1ZiwgaW5ldF9udG9h
IChhZGRyLT5zYS5zaW5fYWRkcikpOwotICBtdXRleF91bmxvY2tfc3RhdGljIChMX0lORVRfTlRP
QSk7CisgICAgICBtdXRleF9sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOworICAgICAgc2V0ZW52
X3N0ciAoZXMsIG5hbWVfYnVmLCBpbmV0X250b2EgKGFkZHItPmFkZHIuaW40LnNpbl9hZGRyKSk7
CisgICAgICBtdXRleF91bmxvY2tfc3RhdGljIChMX0lORVRfTlRPQSk7CisKKyAgICAgIGlmICgo
ZmxhZ3MgJiBTQV9JUF9QT1JUKSAmJiBhZGRyLT5hZGRyLmluNC5zaW5fcG9ydCkKKyAgICAgIHsK
KwlvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlc19wb3J0
IiwgbmFtZV9wcmVmaXgpOworCXNldGVudl9pbnQgKGVzLCBuYW1lX2J1ZiwgbnRvaHMgKGFkZHIt
PmFkZHIuaW40LnNpbl9wb3J0KSk7CisgICAgICB9CisgICAgICBicmVhazsKKyNpZmRlZiBVU0Vf
UEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgb3BlbnZwbl9zbnByaW50ZiAobmFt
ZV9idWYsIHNpemVvZiAobmFtZV9idWYpLCAiJXNfaXA2IiwgbmFtZV9wcmVmaXgpOworICAgICAg
Z2V0bmFtZWluZm8oJmFkZHItPmFkZHIuc2EsIHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luNiks
CisJICBidWYsIHNpemVvZihidWYpLCBOVUxMLCAwLCBOSV9OVU1FUklDSE9TVCk7CisgICAgICBz
ZXRlbnZfc3RyIChlcywgbmFtZV9idWYsIGJ1Zik7CiAKLSAgaWYgKChmbGFncyAmIFNBX0lQX1BP
UlQpICYmIGFkZHItPnNhLnNpbl9wb3J0KQotICAgIHsKICAgICAgIG9wZW52cG5fc25wcmludGYg
KG5hbWVfYnVmLCBzaXplb2YgKG5hbWVfYnVmKSwgIiVzX3BvcnQiLCBuYW1lX3ByZWZpeCk7Ci0g
ICAgICBzZXRlbnZfaW50IChlcywgbmFtZV9idWYsIG50b2hzIChhZGRyLT5zYS5zaW5fcG9ydCkp
OwotICAgIH0KKyAgICAgIHNldGVudl9pbnQgKGVzLCBuYW1lX2J1ZiwgbnRvaHMgKGFkZHItPmFk
ZHIuaW42LnNpbjZfcG9ydCkpOworICAgICAgYnJlYWs7CisjZW5kaWYKKyAgfQogfQogCiB2b2lk
CkBAIC0xOTc2LDcgKzIyNDQsOCBAQAogICAgIHsKICAgICAgIHN0cnVjdCBvcGVudnBuX3NvY2th
ZGRyIHNpOwogICAgICAgQ0xFQVIgKHNpKTsKLSAgICAgIHNpLnNhLnNpbl9hZGRyLnNfYWRkciA9
IGh0b25sIChhZGRyKTsKKyAgICAgIHNpLmFkZHIuaW40LnNpbl9mYW1pbHkgPSBBRl9JTkVUOwor
ICAgICAgc2kuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKGFkZHIpOwogICAgICAg
c2V0ZW52X3NvY2thZGRyIChlcywgbmFtZV9wcmVmaXgsICZzaSwgZmxhZ3MpOwogICAgIH0KIH0K
QEAgLTE5OTcsMTYgKzIyNjYsNjMgQEAKIHN0cnVjdCBwcm90b19uYW1lcyB7CiAgIGNvbnN0IGNo
YXIgKnNob3J0X2Zvcm07CiAgIGNvbnN0IGNoYXIgKmRpc3BsYXlfZm9ybTsKKyAgYm9vbAlpc19k
Z3JhbTsKKyAgYm9vbAlpc19uZXQ7CisgIHNhX2ZhbWlseV90IHByb3RvX2FmOwogfTsKIAogLyog
SW5kZXhlZCBieSBQUk9UT194ICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX25hbWVzIHBy
b3RvX25hbWVzW10gPSB7Ci0gIHsidWRwIiwgICAgICAgICJVRFB2NCJ9LAotICB7InRjcC1zZXJ2
ZXIiLCAiVENQdjRfU0VSVkVSIn0sCi0gIHsidGNwLWNsaWVudCIsICJUQ1B2NF9DTElFTlQifSwK
LSAgeyJ0Y3AiLCAgICAgICAgIlRDUHY0In0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fbmFt
ZXMgcHJvdG9fbmFtZXNbUFJPVE9fTl0gPSB7CisgIHsicHJvdG8tdW5pbml0aWFsaXplZCIsICAg
ICAgICAicHJvdG8tTk9ORSIsMCwwLCBBRl9VTlNQRUN9LAorICB7InVkcCIsICAgICAgICAiVURQ
djQiLDEsMSwgQUZfSU5FVH0sCisgIHsidGNwLXNlcnZlciIsICJUQ1B2NF9TRVJWRVIiLDAsMSwg
QUZfSU5FVH0sCisgIHsidGNwLWNsaWVudCIsICJUQ1B2NF9DTElFTlQiLDAsMSwgQUZfSU5FVH0s
CisgIHsidGNwIiwgICAgICAgICJUQ1B2NCIsMCwxLCBBRl9JTkVUfSwKKyNpZmRlZiBVU0VfUEZf
SU5FVDYKKyAgeyJ1ZHA2IiAgICAgICAsIlVEUHY2IiwxLDEsIEFGX0lORVQ2fSwKKyAgeyJ0Y3A2
LXNlcnZlciIsIlRDUHY2X1NFUlZFUiIsMCwxLCBBRl9JTkVUNn0sCisgIHsidGNwNi1jbGllbnQi
LCJUQ1B2Nl9DTElFTlQiLDAsMSwgQUZfSU5FVDZ9LAorICB7InRjcDYiICAgICAgICwiVENQdjYi
LDAsMSwgQUZfSU5FVDZ9LAorI2VuZGlmCiB9OwogCitib29sCitwcm90b19pc19uZXQoaW50IHBy
b3RvKQoreworICBpZiAocHJvdG8gPCAwIHx8IHByb3RvID49IFBST1RPX04pCisgICAgQVNTRVJU
KDApOworICByZXR1cm4gcHJvdG9fbmFtZXNbcHJvdG9dLmlzX25ldDsKK30KK2Jvb2wKK3Byb3Rv
X2lzX2RncmFtKGludCBwcm90bykKK3sKKyAgaWYgKHByb3RvIDwgMCB8fCBwcm90byA+PSBQUk9U
T19OKQorICAgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIHByb3RvX25hbWVzW3Byb3RvXS5pc19kZ3Jh
bTsKK30KK2Jvb2wKK3Byb3RvX2lzX3VkcChpbnQgcHJvdG8pCit7CisgIGlmIChwcm90byA8IDAg
fHwgcHJvdG8gPj0gUFJPVE9fTikKKyAgICBBU1NFUlQoMCk7CisgIHJldHVybiBwcm90b19uYW1l
c1twcm90b10uaXNfZGdyYW0mJnByb3RvX25hbWVzW3Byb3RvXS5pc19uZXQ7Cit9Citib29sCitw
cm90b19pc190Y3AoaW50IHByb3RvKQoreworICBpZiAocHJvdG8gPCAwIHx8IHByb3RvID49IFBS
T1RPX04pCisgICAgQVNTRVJUKDApOworICByZXR1cm4gKCFwcm90b19uYW1lc1twcm90b10uaXNf
ZGdyYW0pJiZwcm90b19uYW1lc1twcm90b10uaXNfbmV0OworfQorCitzYV9mYW1pbHlfdCAKK3By
b3RvX3NhX2ZhbWlseShpbnQgcHJvdG8pCit7CisgIGlmIChwcm90byA8IDAgfHwgcHJvdG8gPj0g
UFJPVE9fTikKKyAgICBBU1NFUlQoMCk7CisgIHJldHVybiBwcm90b19uYW1lc1twcm90b10ucHJv
dG9fYWY7Cit9CisKIGludAogYXNjaWkycHJvdG8gKGNvbnN0IGNoYXIqIHByb3RvX25hbWUpCiB7
CkBAIC0yMDQ2LDYgKzIzNjIsNDYgQEAKICAgcmV0dXJuIEJTVFIgKCZvdXQpOwogfQogCitpbnQK
K2FkZHJfZ3Vlc3NfZmFtaWx5KGludCBwcm90bywgY29uc3QgY2hhciAqbmFtZSkgCit7CisgIHNh
X2ZhbWlseV90IHJldDsKKyAgaWYgKHByb3RvKSB7CisgICAgcmV0dXJuIHByb3RvX3NhX2ZhbWls
eShwcm90byk7CS8qIGFscmVhZHkgc3RhbXBlZCAqLworICB9IAorI2lmZGVmIFVTRV9QRl9VTklY
CisgIGVsc2UgaWYgKG5hbWUgJiYgbmFtZVswXSA9PSAnLycpIHsKKyAgICByZXR1cm4gQUZfVU5J
WDsKKyAgfQorI2VuZGlmCisjaWZkZWYgVVNFX1BGX0lORVQ2CisgIGVsc2UgeworICAgIHN0cnVj
dCBhZGRyaW5mbyBoaW50cyAsICphaTsKKyAgICBpbnQgZXJyOworICAgIG1lbXNldCgmaGludHMs
IDAsIHNpemVvZiBoaW50cyk7CisgICAgaGludHMuYWlfZmxhZ3M9QUlfTlVNRVJJQ0hPU1Q7Cisg
ICAgaWYgKChlcnI9Z2V0YWRkcmluZm8obmFtZSwgTlVMTCwgJmhpbnRzLCAmYWkpKT09MCkgewor
ICAgICAgcmV0PWFpLT5haV9mYW1pbHk7CisgICAgICBmcmVlYWRkcmluZm8oYWkpOworICAgICAg
cmV0dXJuIHJldDsKKyAgICB9CisgIH0KKyNlbmRpZgorICByZXR1cm4gQUZfSU5FVDsJLyogZGVm
YXVsdCAqLworfQorY29uc3QgY2hhciAqCithZGRyX2ZhbWlseV9uYW1lIChpbnQgYWYpIAorewor
ICBzd2l0Y2ggKGFmKSB7CisgICAgY2FzZSBBRl9JTkVUOiByZXR1cm4gIkFGX0lORVQiOworICAg
IGNhc2UgQUZfSU5FVDY6IHJldHVybiAiQUZfSU5FVDYiOworI2lmZGVmIFVTRV9QRl9VTklYCisg
ICAgY2FzZSBBRl9VTklYOiByZXR1cm4gIkFGX1VOSVgiOworI2VuZGlmCisgIH0KKyAgcmV0dXJu
ICJBRl9VTlNQRUMiOworfQorCiAvKgogICogR2l2ZW4gYSBsb2NhbCBwcm90bywgcmV0dXJuIGxv
Y2FsIHByb3RvCiAgKiBpZiAhcmVtb3RlLCBvciBjb21wYXRpYmxlIHJlbW90ZSBwcm90bwpAQCAt
MjA2MCwxMCArMjQxNiwxNSBAQAogICBBU1NFUlQgKHByb3RvID49IDAgJiYgcHJvdG8gPCBQUk9U
T19OKTsKICAgaWYgKHJlbW90ZSkKICAgICB7Ci0gICAgICBpZiAocHJvdG8gPT0gUFJPVE9fVENQ
djRfU0VSVkVSKQotCXJldHVybiBQUk9UT19UQ1B2NF9DTElFTlQ7Ci0gICAgICBpZiAocHJvdG8g
PT0gUFJPVE9fVENQdjRfQ0xJRU5UKQotCXJldHVybiBQUk9UT19UQ1B2NF9TRVJWRVI7CisgICAg
ICBzd2l0Y2ggKHByb3RvKQorICAgICAgeworCWNhc2UgUFJPVE9fVENQdjRfU0VSVkVSOiByZXR1
cm4gUFJPVE9fVENQdjRfQ0xJRU5UOworCWNhc2UgUFJPVE9fVENQdjRfQ0xJRU5UOiByZXR1cm4g
UFJPVE9fVENQdjRfU0VSVkVSOworI2lmZGVmIFVTRV9QRl9JTkVUNgorCWNhc2UgUFJPVE9fVENQ
djZfU0VSVkVSOiByZXR1cm4gUFJPVE9fVENQdjZfQ0xJRU5UOworCWNhc2UgUFJPVE9fVENQdjZf
Q0xJRU5UOiByZXR1cm4gUFJPVE9fVENQdjZfU0VSVkVSOworI2VuZGlmCisgICAgICB9CiAgICAg
fQogICByZXR1cm4gcHJvdG87CiB9CkBAIC0yMTIxLDEyICsyNDgyLDI3IEBACiAKICNpZiBFTkFC
TEVfSVBfUEtUSU5GTwogCi1zdHJ1Y3Qgb3BlbnZwbl9wa3RpbmZvCitzdHJ1Y3Qgb3BlbnZwbl9p
bjRfcGt0aW5mbwogewogICBzdHJ1Y3QgY21zZ2hkciBjbXNnaGRyOwotICBzdHJ1Y3QgaW5fcGt0
aW5mbyBpbl9wa3RpbmZvOworICBzdHJ1Y3QgaW5fcGt0aW5mbyBwaTsKK307CisjaWZkZWYgVVNF
X1BGX0lORVQ2CitzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbworeworICBzdHJ1Y3QgY21zZ2hk
ciBjbXNnaGRyOworICBzdHJ1Y3QgaW42X3BrdGluZm8gcGk2OworfTsKKyNlbmRpZgorCit1bmlv
biBvcGVudnBuX3BrdGluZm8geworCXN0cnVjdCBvcGVudnBuX2luNF9wa3RpbmZvIGNtc2dwaTsK
KyNpZmRlZiBVU0VfUEZfSU5FVDYKKwlzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbyBjbXNncGk2
OworI2VuZGlmCiB9OwogCisKIHN0YXRpYyBzb2NrbGVuX3QKIGxpbmtfc29ja2V0X3JlYWRfdWRw
X3Bvc2l4X3JlY3Ztc2cgKHN0cnVjdCBsaW5rX3NvY2tldCAqc29jaywKIAkJCQkgICAgc3RydWN0
IGJ1ZmZlciAqYnVmLApAQCAtMjEzNCwxNSArMjUxMCwxNSBAQAogCQkJCSAgICBzdHJ1Y3QgbGlu
a19zb2NrZXRfYWN0dWFsICpmcm9tKQogewogICBzdHJ1Y3QgaW92ZWMgaW92OwotICBzdHJ1Y3Qg
b3BlbnZwbl9wa3RpbmZvIG9waTsKKyAgdW5pb24gb3BlbnZwbl9wa3RpbmZvIG9waTsKICAgc3Ry
dWN0IG1zZ2hkciBtZXNnOwotICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoZnJvbS0+ZGVz
dC5zYSk7CisgIHNvY2tsZW5fdCBmcm9tbGVuID0gc2l6ZW9mIChmcm9tLT5kZXN0LmFkZHIpOwog
CiAgIGlvdi5pb3ZfYmFzZSA9IEJQVFIgKGJ1Zik7CiAgIGlvdi5pb3ZfbGVuID0gbWF4c2l6ZTsK
ICAgbWVzZy5tc2dfaW92ID0gJmlvdjsKICAgbWVzZy5tc2dfaW92bGVuID0gMTsKLSAgbWVzZy5t
c2dfbmFtZSA9ICZmcm9tLT5kZXN0LnNhOworICBtZXNnLm1zZ19uYW1lID0gJmZyb20tPmRlc3Qu
YWRkcjsKICAgbWVzZy5tc2dfbmFtZWxlbiA9IGZyb21sZW47CiAgIG1lc2cubXNnX2NvbnRyb2wg
PSAmb3BpOwogICBtZXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mIChvcGkpOwpAQCAtMjE1OSw5
ICsyNTM1LDIxIEBACiAJICAmJiBjbXNnLT5jbXNnX2xlbiA+PSBzaXplb2YgKG9waSkpCiAJewog
CSAgc3RydWN0IGluX3BrdGluZm8gKnBrdGkgPSAoc3RydWN0IGluX3BrdGluZm8gKikgQ01TR19E
QVRBIChjbXNnKTsKLQkgIGZyb20tPnBpLmlwaV9pZmluZGV4ID0gcGt0aS0+aXBpX2lmaW5kZXg7
Ci0JICBmcm9tLT5waS5pcGlfc3BlY19kc3QgPSBwa3RpLT5pcGlfc3BlY19kc3Q7CisJICBmcm9t
LT5waS5pbjQuaXBpX2lmaW5kZXggPSBwa3RpLT5pcGlfaWZpbmRleDsKKwkgIGZyb20tPnBpLmlu
NC5pcGlfc3BlY19kc3QgPSBwa3RpLT5pcGlfc3BlY19kc3Q7CisJfQorI2lmZGVmIFVTRV9QRl9J
TkVUNgorICAgICAgZWxzZSBpZiAoY21zZyAhPSBOVUxMCisJICAmJiBDTVNHX05YVEhEUiAoJm1l
c2csIGNtc2cpID09IE5VTEwKKwkgICYmIGNtc2ctPmNtc2dfbGV2ZWwgPT0gSVBQUk9UT19JUFY2
IAorCSAgJiYgY21zZy0+Y21zZ190eXBlID09IElQVjZfUEtUSU5GTworCSAgJiYgY21zZy0+Y21z
Z19sZW4gPj0gc2l6ZW9mIChzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbykpCisJeworCSAgc3Ry
dWN0IGluNl9wa3RpbmZvICpwa3RpNiA9IChzdHJ1Y3QgaW42X3BrdGluZm8gKikgQ01TR19EQVRB
IChjbXNnKTsKKwkgIGZyb20tPnBpLmluNi5pcGk2X2lmaW5kZXggPSBwa3RpNi0+aXBpNl9pZmlu
ZGV4OworCSAgZnJvbS0+cGkuaW42LmlwaTZfYWRkciA9IHBrdGk2LT5pcGk2X2FkZHI7CiAJfQor
I2VuZGlmCiAgICAgfQogICByZXR1cm4gZnJvbWxlbjsKIH0KQEAgLTIxNzMsMTggKzI1NjEsMjAg
QEAKIAkJCSAgICBpbnQgbWF4c2l6ZSwKIAkJCSAgICBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFs
ICpmcm9tKQogewotICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoZnJvbS0+ZGVzdC5zYSk7
Ci0gIGZyb20tPmRlc3Quc2Euc2luX2FkZHIuc19hZGRyID0gMDsKKyAgc29ja2xlbl90IGZyb21s
ZW4gPSBzaXplb2YgKGZyb20tPmRlc3QuYWRkcik7CisgIHNvY2tsZW5fdCBleHBlY3RlZGxlbiA9
IGFmX2FkZHJfc2l6ZShwcm90b19zYV9mYW1pbHkoc29jay0+aW5mby5wcm90bykpOworICBhZGRy
X3plcm9faG9zdCgmZnJvbS0+ZGVzdCk7CiAgIEFTU0VSVCAoYnVmX3NhZmUgKGJ1ZiwgbWF4c2l6
ZSkpOwogI2lmIEVOQUJMRV9JUF9QS1RJTkZPCi0gIGlmIChzb2NrLT5zb2NrZmxhZ3MgJiBTRl9V
U0VfSVBfUEtUSU5GTykKKyAgLyogQm90aCBQUk9UT19VRFB2NCBhbmQgUFJPVE9fVURQdjYgKi8K
KyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSAmJiBzb2NrLT5zb2NrZmxhZ3Mg
JiBTRl9VU0VfSVBfUEtUSU5GTykKICAgICBmcm9tbGVuID0gbGlua19zb2NrZXRfcmVhZF91ZHBf
cG9zaXhfcmVjdm1zZyAoc29jaywgYnVmLCBtYXhzaXplLCBmcm9tKTsKICAgZWxzZQogI2VuZGlm
CiAgICAgYnVmLT5sZW4gPSByZWN2ZnJvbSAoc29jay0+c2QsIEJQVFIgKGJ1ZiksIG1heHNpemUs
IDAsCi0JCQkgKHN0cnVjdCBzb2NrYWRkciAqKSAmZnJvbS0+ZGVzdC5zYSwgJmZyb21sZW4pOwot
ICBpZiAoZnJvbWxlbiAhPSBzaXplb2YgKGZyb20tPmRlc3Quc2EpKQotICAgIGJhZF9hZGRyZXNz
X2xlbmd0aCAoZnJvbWxlbiwgc2l6ZW9mIChmcm9tLT5kZXN0LnNhKSk7CisJCQkgJmZyb20tPmRl
c3QuYWRkci5zYSwgJmZyb21sZW4pOworICBpZiAoYnVmLT5sZW4gPj0gMCAmJiBleHBlY3RlZGxl
biAmJiBmcm9tbGVuICE9IGV4cGVjdGVkbGVuKQorICAgIGJhZF9hZGRyZXNzX2xlbmd0aCAoZnJv
bWxlbiwgZXhwZWN0ZWRsZW4pOwogICByZXR1cm4gYnVmLT5sZW47CiB9CiAKQEAgLTIyMjEsMjYg
KzI2MTEsNTIgQEAKICAgc3RydWN0IGlvdmVjIGlvdjsKICAgc3RydWN0IG1zZ2hkciBtZXNnOwog
ICBzdHJ1Y3QgY21zZ2hkciAqY21zZzsKLSAgc3RydWN0IGluX3BrdGluZm8gKnBrdGk7Ci0gIHN0
cnVjdCBvcGVudnBuX3BrdGluZm8gb3BpOwogCiAgIGlvdi5pb3ZfYmFzZSA9IEJQVFIgKGJ1Zik7
CiAgIGlvdi5pb3ZfbGVuID0gQkxFTiAoYnVmKTsKICAgbWVzZy5tc2dfaW92ID0gJmlvdjsKICAg
bWVzZy5tc2dfaW92bGVuID0gMTsKLSAgbWVzZy5tc2dfbmFtZSA9ICZ0by0+ZGVzdC5zYTsKLSAg
bWVzZy5tc2dfbmFtZWxlbiA9IHNpemVvZiAodG8tPmRlc3Quc2EpOwotICBtZXNnLm1zZ19jb250
cm9sID0gJm9waTsKLSAgbWVzZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZiAob3BpKTsKLSAgbWVz
Zy5tc2dfZmxhZ3MgPSAwOwotICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOwotICBjbXNn
LT5jbXNnX2xlbiA9IHNpemVvZiAob3BpKTsKLSAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9JUDsK
LSAgY21zZy0+Y21zZ190eXBlID0gSVBfUEtUSU5GTzsKLSAgcGt0aSA9IChzdHJ1Y3QgaW5fcGt0
aW5mbyAqKSBDTVNHX0RBVEEgKGNtc2cpOwotICBwa3RpLT5pcGlfaWZpbmRleCA9IHRvLT5waS5p
cGlfaWZpbmRleDsKLSAgcGt0aS0+aXBpX3NwZWNfZHN0ID0gdG8tPnBpLmlwaV9zcGVjX2RzdDsK
LSAgcGt0aS0+aXBpX2FkZHIuc19hZGRyID0gMDsKKyAgc3dpdGNoIChzb2NrLT5pbmZvLmxzYS0+
cmVtb3RlLmFkZHIuc2Euc2FfZmFtaWx5KQorICB7CisgICAgY2FzZSBBRl9JTkVUOiB7CisJICBz
dHJ1Y3Qgb3BlbnZwbl9pbjRfcGt0aW5mbyBvcGk7CisJICBzdHJ1Y3QgaW5fcGt0aW5mbyAqcGt0
aTsKKwkgIG1lc2cubXNnX25hbWUgPSAmdG8tPmRlc3QuYWRkci5zYTsKKwkgIG1lc2cubXNnX25h
bWVsZW4gPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbik7CisJICBtZXNnLm1zZ19jb250cm9s
ID0gJm9waTsKKwkgIG1lc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YgKG9waSk7CisJICBtZXNn
Lm1zZ19mbGFncyA9IDA7CisJICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOworCSAgY21z
Zy0+Y21zZ19sZW4gPSBzaXplb2YgKG9waSk7CisJICBjbXNnLT5jbXNnX2xldmVsID0gU09MX0lQ
OworCSAgY21zZy0+Y21zZ190eXBlID0gSVBfUEtUSU5GTzsKKwkgIHBrdGkgPSAoc3RydWN0IGlu
X3BrdGluZm8gKikgQ01TR19EQVRBIChjbXNnKTsKKwkgIHBrdGktPmlwaV9pZmluZGV4ID0gdG8t
PnBpLmluNC5pcGlfaWZpbmRleDsKKwkgIHBrdGktPmlwaV9zcGVjX2RzdCA9IHRvLT5waS5pbjQu
aXBpX3NwZWNfZHN0OworCSAgcGt0aS0+aXBpX2FkZHIuc19hZGRyID0gMDsKKwkgIGJyZWFrOwor
ICAgIH0KKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OiB7CisJICBzdHJ1
Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbyBvcGk2OworCSAgc3RydWN0IGluNl9wa3RpbmZvICpwa3Rp
NjsKKwkgIG1lc2cubXNnX25hbWUgPSAmdG8tPmRlc3QuYWRkci5zYTsKKwkgIG1lc2cubXNnX25h
bWVsZW4gPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworCSAgbWVzZy5tc2dfY29udHJv
bCA9ICZvcGk2OworCSAgbWVzZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZiAob3BpNik7CisJICBt
ZXNnLm1zZ19mbGFncyA9IDA7CisJICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOworCSAg
Y21zZy0+Y21zZ19sZW4gPSBzaXplb2YgKG9waTYpOworCSAgY21zZy0+Y21zZ19sZXZlbCA9IElQ
UFJPVE9fSVBWNjsKKwkgIGNtc2ctPmNtc2dfdHlwZSA9IElQVjZfUEtUSU5GTzsKKwkgIHBrdGk2
ID0gKHN0cnVjdCBpbjZfcGt0aW5mbyAqKSBDTVNHX0RBVEEgKGNtc2cpOworCSAgcGt0aTYtPmlw
aTZfaWZpbmRleCA9IHRvLT5waS5pbjYuaXBpNl9pZmluZGV4OworCSAgcGt0aTYtPmlwaTZfYWRk
ciA9IHRvLT5waS5pbjYuaXBpNl9hZGRyOworCSAgYnJlYWs7CisgICAgfQorI2VuZGlmCisgICAg
ZGVmYXVsdDogQVNTRVJUKDApOworICB9CiAgIHJldHVybiBzZW5kbXNnIChzb2NrLT5zZCwgJm1l
c2csIDApOwogfQogCkBAIC0yMzg0LDcgKzI4MDAsNyBAQAogCXsKIAkgIC8qIHNldCBkZXN0aW5h
dGlvbiBhZGRyZXNzIGZvciBVRFAgd3JpdGVzICovCiAJICBzb2NrLT53cml0ZXMuYWRkcl9kZWZp
bmVkID0gdHJ1ZTsKLQkgIHNvY2stPndyaXRlcy5hZGRyID0gdG8tPmRlc3Quc2E7CisJICBzb2Nr
LT53cml0ZXMuYWRkciA9IHRvLT5kZXN0LmFkZHIuaW40OwogCSAgc29jay0+d3JpdGVzLmFkZHJs
ZW4gPSBzaXplb2YgKHNvY2stPndyaXRlcy5hZGRyKTsKIAogCSAgc3RhdHVzID0gV1NBU2VuZFRv
KApAQCAtMjU0MCwxMCArMjk1NiwxMCBAQAogCXsKIAkgIGlmIChpby0+YWRkcmxlbiAhPSBzaXpl
b2YgKGlvLT5hZGRyKSkKIAkgICAgYmFkX2FkZHJlc3NfbGVuZ3RoIChpby0+YWRkcmxlbiwgc2l6
ZW9mIChpby0+YWRkcikpOwotCSAgZnJvbS0+ZGVzdC5zYSA9IGlvLT5hZGRyOworCSAgZnJvbS0+
ZGVzdC5hZGRyLnNhID0gaW8tPmFkZHI7CiAJfQogICAgICAgZWxzZQotCUNMRUFSIChmcm9tLT5k
ZXN0LnNhKTsKKwlDTEVBUiAoZnJvbS0+ZGVzdC5hZGRyLnNhKTsKICAgICB9CiAgIAogICBpZiAo
YnVmKQpkaWZmIC0tZ2l0IGEvb3BlbnZwbi9zb2NrZXQuaCBiL29wZW52cG4vc29ja2V0LmgKaW5k
ZXggMjhiZjQxZi4uNDM1Y2YzOCAxMDA2NDQKLS0tIGEvb3BlbnZwbi9zb2NrZXQuaAorKysgYi9v
cGVudnBuL3NvY2tldC5oCkBAIC04MSw3ICs4MSwxMyBAQCAjZGVmaW5lIG50b2hwcyh4KSBudG9o
cyh4KQogc3RydWN0IG9wZW52cG5fc29ja2FkZHIKIHsKICAgLyppbnQgZHVtbXk7Ki8gLyogYWRk
IG9mZnNldCB0byBmb3JjZSBhIGJ1ZyBpZiBzYSBub3QgZXhwbGljaXRseSBkZXJlZmVyZW5jZWQg
Ki8KLSAgc3RydWN0IHNvY2thZGRyX2luIHNhOworICB1bmlvbiB7CisgIHN0cnVjdCBzb2NrYWRk
ciBzYTsKKyAgc3RydWN0IHNvY2thZGRyX2luIGluNDsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAg
c3RydWN0IHNvY2thZGRyX2luNiBpbjY7CisjZW5kaWYKKyAgfSBhZGRyOwogfTsKIAogLyogYWN0
dWFsIGFkZHJlc3Mgb2YgcmVtb3RlLCBiYXNlZCBvbiBzb3VyY2UgYWRkcmVzcyBvZiByZWNlaXZl
ZCBwYWNrZXRzICovCkBAIC05MCw3ICs5NiwxMiBAQCBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFs
CiAgIGludCBkdW1teTsgLyogSllGSVhNRSAtLSBhZGQgb2Zmc2V0IHRvIGZvcmNlIGEgYnVnIGlm
IGRlc3Qgbm90IGV4cGxpY2l0bHkgZGVyZWZlcmVuY2VkICovCiAgIHN0cnVjdCBvcGVudnBuX3Nv
Y2thZGRyIGRlc3Q7CiAjaWYgRU5BQkxFX0lQX1BLVElORk8KLSAgc3RydWN0IGluX3BrdGluZm8g
cGk7CisgIHVuaW9uIHsKKyAgICBzdHJ1Y3QgaW5fcGt0aW5mbyBpbjQ7CisjaWZkZWYgVVNFX1BG
X0lORVQ2CisgICAgc3RydWN0IGluNl9wa3RpbmZvIGluNjsKKyNlbmRpZgorICB9IHBpOwogI2Vu
ZGlmCiB9OwogCkBAIC00MTEsNiArNDIyLDE0IEBAIHNvY2tldF9kZXNjcmlwdG9yX3QgY3JlYXRl
X3NvY2tldF90Y3AgKHYKIHNvY2tldF9kZXNjcmlwdG9yX3Qgc29ja2V0X2RvX2FjY2VwdCAoc29j
a2V0X2Rlc2NyaXB0b3JfdCBzZCwKIAkJCQkgICAgICBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFs
ICphY3QsCiAJCQkJICAgICAgY29uc3QgYm9vbCBub3dhaXQpOworLyoKKyAqIHByb3RvIHJlbGF0
ZWQKKyAqLworYm9vbCBwcm90b19pc19uZXQoaW50IHByb3RvKTsKK2Jvb2wgcHJvdG9faXNfZGdy
YW0oaW50IHByb3RvKTsKK2Jvb2wgcHJvdG9faXNfdWRwKGludCBwcm90byk7Citib29sIHByb3Rv
X2lzX3RjcChpbnQgcHJvdG8pOworCiAKIC8qCiAgKiBETlMgcmVzb2x1dGlvbgpAQCAtNDM2LDIz
ICs0NTUsNDkgQEAgaW5fYWRkcl90IGdldGFkZHIgKHVuc2lnbmVkIGludCBmbGFncywKICAqIFRy
YW5zcG9ydCBwcm90b2NvbCBuYW1pbmcgYW5kIG90aGVyIGRldGFpbHMuCiAgKi8KIAotI2RlZmlu
ZSBQUk9UT19VRFB2NCAgICAgICAgMAotI2RlZmluZSBQUk9UT19UQ1B2NF9TRVJWRVIgMQotI2Rl
ZmluZSBQUk9UT19UQ1B2NF9DTElFTlQgMgotI2RlZmluZSBQUk9UT19UQ1B2NCAgICAgICAgMwot
I2RlZmluZSBQUk9UT19OICAgICAgICAgICAgNAorI2lmIDAgLyogUFJFIFVEUHY2L1RDUHY2IGNv
ZGUgKi8KKyNkZWZpbmUgUFJPVE9fTk9ORSAgICAgICAgIDAgLyogY2F0Y2ggZm9yIHVuaW5pdGlh
bGl6ZWQgKi8KKyNkZWZpbmUgUFJPVE9fVURQdjQgICAgICAgIDEKKyNkZWZpbmUgUFJPVE9fVENQ
djRfU0VSVkVSIDIKKyNkZWZpbmUgUFJPVE9fVENQdjRfQ0xJRU5UIDMKKyNkZWZpbmUgUFJPVE9f
VENQdjQgICAgICAgIDQKKyNkZWZpbmUgUFJPVE9fVURQdjYgICAgICAgIDUKKyNkZWZpbmUgUFJP
VE9fVENQdjZfU0VSVkVSIDYKKyNkZWZpbmUgUFJPVE9fVENQdjZfQ0xJRU5UIDcKKyNkZWZpbmUg
UFJPVE9fVENQdjYgICAgICAgIDgKKyNkZWZpbmUgUFJPVE9fTiAgICAgICAgICAgIDkKKyNlbmRp
ZiAvKiBpZiAwICovCisKKy8qIAorICogVXNlIGVudW0ncyBpbnN0ZWFkIG9mICNkZWZpbmUgdG8g
YWxsb3cgZm9yIGVhc2llcgorICogb3B0aW9uYWwgcHJvdG8gc3VwcG9ydAorICovCitlbnVtIHBy
b3RvX251bSB7CisJUFJPVE9fTk9ORSwgLyogY2F0Y2ggZm9yIHVuaW5pdGlhbGl6ZWQgKi8KKwlQ
Uk9UT19VRFB2NCwKKwlQUk9UT19UQ1B2NF9TRVJWRVIsCisJUFJPVE9fVENQdjRfQ0xJRU5ULAor
CVBST1RPX1RDUHY0LAorCVBST1RPX1VEUHY2LAorCVBST1RPX1RDUHY2X1NFUlZFUiwKKwlQUk9U
T19UQ1B2Nl9DTElFTlQsCisJUFJPVE9fVENQdjYsCisJUFJPVE9fTgorfTsKIAogaW50IGFzY2lp
MnByb3RvIChjb25zdCBjaGFyKiBwcm90b19uYW1lKTsKIGNvbnN0IGNoYXIgKnByb3RvMmFzY2lp
IChpbnQgcHJvdG8sIGJvb2wgZGlzcGxheV9mb3JtKTsKIGNvbnN0IGNoYXIgKnByb3RvMmFzY2lp
X2FsbCAoc3RydWN0IGdjX2FyZW5hICpnYyk7CiBpbnQgcHJvdG9fcmVtb3RlIChpbnQgcHJvdG8s
IGJvb2wgcmVtb3RlKTsKK2NvbnN0IGNoYXIgKmFkZHJfZmFtaWx5X25hbWUoaW50IGFmKTsKIAog
LyoKICAqIE92ZXJoZWFkIGFkZGVkIHRvIHBhY2tldHMgYnkgdmFyaW91cyBwcm90b2NvbHMuCiAg
Ki8KICNkZWZpbmUgSVB2NF9VRFBfSEVBREVSX1NJWkUgICAgICAgICAgICAgIDI4CiAjZGVmaW5l
IElQdjRfVENQX0hFQURFUl9TSVpFICAgICAgICAgICAgICA0MAotI2RlZmluZSBJUHY2X1VEUF9I
RUFERVJfU0laRSAgICAgICAgICAgICAgNDAKKyNkZWZpbmUgSVB2Nl9VRFBfSEVBREVSX1NJWkUg
ICAgICAgICAgICAgIDQ4CisjZGVmaW5lIElQdjZfVENQX0hFQURFUl9TSVpFICAgICAgICAgICAg
ICA2MAogCiBleHRlcm4gY29uc3QgaW50IHByb3RvX292ZXJoZWFkW107CiAKQEAgLTQ4NSw3ICs1
MzAsNyBAQCBsZWdhbF9pcHY0X3BvcnQgKGludCBwb3J0KQogc3RhdGljIGlubGluZSBib29sCiBs
aW5rX3NvY2tldF9wcm90b19jb25uZWN0aW9uX29yaWVudGVkIChpbnQgcHJvdG8pCiB7Ci0gIHJl
dHVybiBwcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIgfHwgcHJvdG8gPT0gUFJPVE9fVENQdjRf
Q0xJRU5UOworICByZXR1cm4gIXByb3RvX2lzX2RncmFtKHByb3RvKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sCkBAIC01MDAsNyArNTQ1LDMwIEBAIGxpbmtfc29ja2V0X2Nvbm5lY3Rpb25fb3Jp
ZW50ZWQgKGNvbnN0IHMKIHN0YXRpYyBpbmxpbmUgYm9vbAogYWRkcl9kZWZpbmVkIChjb25zdCBz
dHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYWRkcikKIHsKLSAgcmV0dXJuIGFkZHItPnNhLnNpbl9h
ZGRyLnNfYWRkciAhPSAwOworICBpZiAoIWFkZHIpIHJldHVybiAwOworICBzd2l0Y2ggKGFkZHIt
PmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOiByZXR1cm4gYWRkci0+YWRk
ci5pbjQuc2luX2FkZHIuc19hZGRyICE9IDA7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2Fz
ZSBBRl9JTkVUNjogcmV0dXJuICFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmYWRkci0+YWRkci5p
bjYuc2luNl9hZGRyKTsKKyNlbmRpZgorICAgIGRlZmF1bHQ6IHJldHVybiAwOworICB9Cit9Citz
dGF0aWMgaW5saW5lIGJvb2wKK2FkZHJfZGVmaW5lZF9pcGkgKGNvbnN0IHN0cnVjdCBsaW5rX3Nv
Y2tldF9hY3R1YWwgKmxzYSkKK3sKKyNpZiBFTkFCTEVfSVBfUEtUSU5GTworICBpZiAoIWxzYSkg
cmV0dXJuIDA7CisgIHN3aXRjaCAobHNhLT5kZXN0LmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAg
Y2FzZSBBRl9JTkVUOiByZXR1cm4gbHNhLT5waS5pbjQuaXBpX3NwZWNfZHN0LnNfYWRkciAhPSAw
OworI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgIGNhc2UgQUZfSU5FVDY6IHJldHVybiAhSU42X0lT
X0FERFJfVU5TUEVDSUZJRUQoJmxzYS0+cGkuaW42LmlwaTZfYWRkcik7CisjZW5kaWYKKyAgICBk
ZWZhdWx0OiByZXR1cm4gMDsKKyAgfQorI2Vsc2UKKyAgQVNTRVJUKDApOworI2VuZGlmCiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbApAQCAtNTEyLDIwICs1ODAsNTAgQEAgbGlua19zb2NrZXRfYWN0
dWFsX2RlZmluZWQgKGNvbnN0IHN0cnVjdAogc3RhdGljIGlubGluZSBib29sCiBhZGRyX21hdGNo
IChjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYTEsIGNvbnN0IHN0cnVjdCBvcGVudnBu
X3NvY2thZGRyICphMikKIHsKLSAgcmV0dXJuIGExLT5zYS5zaW5fYWRkci5zX2FkZHIgPT0gYTIt
PnNhLnNpbl9hZGRyLnNfYWRkcjsKKyAgc3dpdGNoKGExLT5hZGRyLnNhLnNhX2ZhbWlseSkgewor
ICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgIHJldHVybiBhMS0+YWRkci5pbjQuc2luX2FkZHIuc19h
ZGRyID09IGEyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHI7CisjaWZkZWYgVVNFX1BGX0lORVQ2
CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHJldHVybiBJTjZfQVJFX0FERFJfRVFVQUwoJmEx
LT5hZGRyLmluNi5zaW42X2FkZHIsICZhMi0+YWRkci5pbjYuc2luNl9hZGRyKTsKKyNlbmRpZgor
ICB9CisgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgaW5saW5lIGlu
X2FkZHJfdAotYWRkcl9ob3N0IChjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqcykKK2Fk
ZHJfaG9zdCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmFkZHIpCiB7Ci0gIHJldHVy
biBudG9obCAocy0+c2Euc2luX2FkZHIuc19hZGRyKTsKKyAgLyogCisgICAqICJwdWJsaWMiIGFk
ZHIgcmV0dXJuZWQgaXMgY2hlY2tlZCBhZ2FpbnN0IGlmY29uZmlnIGZvcgorICAgKiBwb3NzaWJs
ZSBjbGFzaDogbm9uIHNlbnNlIGZvciBub3cgZ2l2ZW4KKyAgICogdGhhdCB3ZSBkbyBpZmNvbmZp
ZyBvbmx5IElQdjQKKyAgICovCisjaWYgZGVmaW5lZChVU0VfUEZfSU5FVDYpIAorICBpZihhZGRy
LT5hZGRyLnNhLnNhX2ZhbWlseSAhPSBBRl9JTkVUKQorICAgIHJldHVybiAwOworI2Vsc2UgCisg
IEFTU0VSVChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKTsKKyNlbmRpZgorICBy
ZXR1cm4gbnRvaGwgKGFkZHItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkcik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbAogYWRkcl9wb3J0X21hdGNoIChjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2Nr
YWRkciAqYTEsIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphMikKIHsKLSAgcmV0dXJu
IGExLT5zYS5zaW5fYWRkci5zX2FkZHIgPT0gYTItPnNhLnNpbl9hZGRyLnNfYWRkcgotICAgICYm
IGExLT5zYS5zaW5fcG9ydCA9PSBhMi0+c2Euc2luX3BvcnQ7CisgIHN3aXRjaChhMS0+YWRkci5z
YS5zYV9mYW1pbHkpIHsKKyAgICBjYXNlIEFGX0lORVQ6CisgICAgICByZXR1cm4gYTEtPmFkZHIu
aW40LnNpbl9hZGRyLnNfYWRkciA9PSBhMi0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyCisJJiYg
YTEtPmFkZHIuaW40LnNpbl9wb3J0ID09IGEyLT5hZGRyLmluNC5zaW5fcG9ydDsKKyNpZmRlZiBV
U0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgcmV0dXJuIElONl9BUkVfQURE
Ul9FUVVBTCgmYTEtPmFkZHIuaW42LnNpbjZfYWRkciwgJmEyLT5hZGRyLmluNi5zaW42X2FkZHIp
IAorCSYmIGExLT5hZGRyLmluNi5zaW42X3BvcnQgPT0gYTItPmFkZHIuaW42LnNpbjZfcG9ydDsK
KyNlbmRpZgorICB9CisgIEFTU0VSVCgwKTsKKyAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wKQEAgLTUzOCw2ICs2MzYsNzQgQEAgYWRkcl9tYXRjaF9wcm90byAoY29uc3Qg
c3RydWN0IG9wZW52cG5fcwogICAgIDogYWRkcl9wb3J0X21hdGNoIChhMSwgYTIpOwogfQogCitz
dGF0aWMgaW5saW5lIHZvaWQKK2FkZHJfemVyb19ob3N0KHN0cnVjdCBvcGVudnBuX3NvY2thZGRy
ICphZGRyKQoreworICAgc3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgIGNh
c2UgQUZfSU5FVDoKKyAgICAgICBhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSAwOwor
ICAgICAgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICBjYXNlIEFGX0lORVQ2OiAK
KyAgICAgICBtZW1zZXQoJmFkZHItPmFkZHIuaW42LnNpbjZfYWRkciwgMCwgc2l6ZW9mIChzdHJ1
Y3QgaW42X2FkZHIpKTsKKyAgICAgICBicmVhazsKKyNlbmRpZgorICAgfQorfQorCitzdGF0aWMg
aW5saW5lIHZvaWQKK2FkZHJfY29weV9zYShzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqZHN0LCBj
b25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqc3JjKQoreworICBkc3QtPmFkZHIgPSBzcmMt
PmFkZHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorYWRkcl9jb3B5X2hvc3Qoc3RydWN0IG9w
ZW52cG5fc29ja2FkZHIgKmRzdCwgY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKnNyYykK
K3sKKyAgIHN3aXRjaChzcmMtPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgIGNhc2UgQUZfSU5F
VDoKKyAgICAgICBkc3QtPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciA9IHNyYy0+YWRkci5pbjQu
c2luX2FkZHIuc19hZGRyOworICAgICAgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9JTkVUNgorICAg
ICBjYXNlIEFGX0lORVQ2OiAKKyAgICAgICBkc3QtPmFkZHIuaW42LnNpbjZfYWRkciA9IHNyYy0+
YWRkci5pbjYuc2luNl9hZGRyOworICAgICAgIGJyZWFrOworI2VuZGlmCisgICB9Cit9CisKK3N0
YXRpYyBpbmxpbmUgYm9vbAorYWRkcl9pbmV0NG9yNihzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIpCit7
CisJcmV0dXJuIGFkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUIHx8IGFkZHItPnNhX2ZhbWlseSA9
PSBBRl9JTkVUNjsKK30KKworaW50IGFkZHJfZ3Vlc3NfZmFtaWx5KGludCBwcm90bywgY29uc3Qg
Y2hhciAqbmFtZSk7CitzdGF0aWMgaW5saW5lIGludAorYWZfYWRkcl9zaXplKHNhX2ZhbWlseV90
IGFmKQoreworI2lmIGRlZmluZWQoVVNFX1BGX0lORVQ2KSB8fCBkZWZpbmVkIChVU0VfUEZfVU5J
WCkKKyAgIHN3aXRjaChhZikgeworICAgICBjYXNlIEFGX0lORVQ6IHJldHVybiBzaXplb2YgKHN0
cnVjdCBzb2NrYWRkcl9pbik7CisjaWZkZWYgVVNFX1BGX1VOSVgKKyAgICAgY2FzZSBBRl9VTklY
OiByZXR1cm4gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfdW4pOworI2VuZGlmCisjaWZkZWYgVVNF
X1BGX0lORVQ2CisgICAgIGNhc2UgQUZfSU5FVDY6IHJldHVybiBzaXplb2YgKHN0cnVjdCBzb2Nr
YWRkcl9pbjYpOworI2VuZGlmCisgICAgIGRlZmF1bHQ6IAorI2lmIDAKKyAgICAgIC8qIGNvdWxk
IGJlIGNhbGxlZCBmcm9tIHNvY2tldF9kb19hY2NlcHQoKSB3aXRoIGVtcHR5IGFkZHIgKi8KKyAg
ICAgIG1zZyAoTV9FUlIsICJCYWQgYWRkcmVzcyBmYW1pbHk6ICVkXG4iLCBhZGRyLT5zYV9mYW1p
bHkpOworICAgICAgQVNTRVJUKDApOworI2VuZGlmCisgICAgIAlyZXR1cm4gMDsKKyAgIH0KKyNl
bHNlIC8qIG9ubHkgQUZfSU5FVCAqLworICAgcmV0dXJuIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW4pOworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogbGlua19zb2NrZXRfYWN0dWFs
X21hdGNoIChjb25zdCBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFsICphMSwgY29uc3Qgc3RydWN0
IGxpbmtfc29ja2V0X2FjdHVhbCAqYTIpCiB7CkBAIC01OTQsMTQgKzc2MCwxOCBAQCBsaW5rX3Nv
Y2tldF92ZXJpZnlfaW5jb21pbmdfYWRkciAoc3RydWN0CiB7CiAgIGlmIChidWYtPmxlbiA+IDAp
CiAgICAgewotICAgICAgaWYgKGZyb21fYWRkci0+ZGVzdC5zYS5zaW5fZmFtaWx5ICE9IEFGX0lO
RVQpCi0JcmV0dXJuIGZhbHNlOwotICAgICAgaWYgKCFsaW5rX3NvY2tldF9hY3R1YWxfZGVmaW5l
ZCAoZnJvbV9hZGRyKSkKLQlyZXR1cm4gZmFsc2U7Ci0gICAgICBpZiAoaW5mby0+cmVtb3RlX2Zs
b2F0IHx8ICFhZGRyX2RlZmluZWQgKCZpbmZvLT5sc2EtPnJlbW90ZSkpCi0JcmV0dXJuIHRydWU7
Ci0gICAgICBpZiAoYWRkcl9tYXRjaF9wcm90byAoJmZyb21fYWRkci0+ZGVzdCwgJmluZm8tPmxz
YS0+cmVtb3RlLCBpbmZvLT5wcm90bykpCi0JcmV0dXJuIHRydWU7CisgICAgICBzd2l0Y2ggKGZy
b21fYWRkci0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkgeworI2lmZGVmIFVTRV9QRl9JTkVUNgor
CWNhc2UgQUZfSU5FVDY6CisjZW5kaWYKKwljYXNlIEFGX0lORVQ6CisJICBpZiAoIWxpbmtfc29j
a2V0X2FjdHVhbF9kZWZpbmVkIChmcm9tX2FkZHIpKQorCSAgICByZXR1cm4gZmFsc2U7CisJICBp
ZiAoaW5mby0+cmVtb3RlX2Zsb2F0IHx8ICFhZGRyX2RlZmluZWQgKCZpbmZvLT5sc2EtPnJlbW90
ZSkpCisJICAgIHJldHVybiB0cnVlOworCSAgaWYgKGFkZHJfbWF0Y2hfcHJvdG8gKCZmcm9tX2Fk
ZHItPmRlc3QsICZpbmZvLT5sc2EtPnJlbW90ZSwgaW5mby0+cHJvdG8pKQorCSAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgIH0KICAgICB9CiAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTcwNyw3ICs4Nzcs
NyBAQCBsaW5rX3NvY2tldF9yZWFkIChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvCiAJCSAgaW50IG1h
eHNpemUsCiAJCSAgc3RydWN0IGxpbmtfc29ja2V0X2FjdHVhbCAqZnJvbSkKIHsKLSAgaWYgKHNv
Y2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVURQdjQpCisgIGlmIChwcm90b19pc191ZHAoc29jay0+
aW5mby5wcm90bykpIC8qIHVuaWZpZWQgVURQdjQgYW5kIFVEUHY2ICovCiAgICAgewogICAgICAg
aW50IHJlczsKIApAQCAtNzE4LDEwICs4ODgsMTAgQEAgI2Vsc2UKICNlbmRpZgogICAgICAgcmV0
dXJuIHJlczsKICAgICB9Ci0gIGVsc2UgaWYgKHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVENQ
djRfU0VSVkVSIHx8IHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UKQorICBl
bHNlIGlmIChwcm90b19pc190Y3Aoc29jay0+aW5mby5wcm90bykpIC8qIHVuaWZpZWQgVENQdjQg
YW5kIFRDUHY2ICovCiAgICAgewogICAgICAgLyogZnJvbSBhZGRyZXNzIHdhcyByZXR1cm5lZCBi
eSBhY2NlcHQgKi8KLSAgICAgIGZyb20tPmRlc3Quc2EgPSBzb2NrLT5pbmZvLmxzYS0+YWN0dWFs
LmRlc3Quc2E7CisgICAgICBhZGRyX2NvcHlfc2EoJmZyb20tPmRlc3QsICZzb2NrLT5pbmZvLmxz
YS0+YWN0dWFsLmRlc3QpOwogICAgICAgcmV0dXJuIGxpbmtfc29ja2V0X3JlYWRfdGNwIChzb2Nr
LCBidWYpOwogICAgIH0KICAgZWxzZQpAQCAtNzc2LDEzICs5NDYsMTQgQEAgI2lmIEVOQUJMRV9J
UF9QS1RJTkZPCiAJCQkJCSAgIHN0cnVjdCBidWZmZXIgKmJ1ZiwKIAkJCQkJICAgc3RydWN0IGxp
bmtfc29ja2V0X2FjdHVhbCAqdG8pOwogCi0gIGlmIChzb2NrLT5zb2NrZmxhZ3MgJiBTRl9VU0Vf
SVBfUEtUSU5GTykKKyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSAmJiAoc29j
ay0+c29ja2ZsYWdzICYgU0ZfVVNFX0lQX1BLVElORk8pCisJICAmJiBhZGRyX2RlZmluZWRfaXBp
KHRvKSkKICAgICByZXR1cm4gbGlua19zb2NrZXRfd3JpdGVfdWRwX3Bvc2l4X3NlbmRtc2cgKHNv
Y2ssIGJ1ZiwgdG8pOwogICBlbHNlCiAjZW5kaWYKICAgICByZXR1cm4gc2VuZHRvIChzb2NrLT5z
ZCwgQlBUUiAoYnVmKSwgQkxFTiAoYnVmKSwgMCwKLQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSAm
dG8tPmRlc3Quc2EsCi0JCSAgIChzb2NrbGVuX3QpIHNpemVvZiAodG8tPmRlc3Quc2EpKTsKKwkJ
ICAgKHN0cnVjdCBzb2NrYWRkciAqKSAmdG8tPmRlc3QuYWRkci5zYSwKKwkJICAgKHNvY2tsZW5f
dCkgYWZfYWRkcl9zaXplKHRvLT5kZXN0LmFkZHIuc2Euc2FfZmFtaWx5KSk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgaW50CkBAIC04MTMsMTEgKzk4NCwxMSBAQCBsaW5rX3NvY2tldF93cml0ZSAoc3Ry
dWN0IGxpbmtfc29ja2V0ICpzCiAJCSAgIHN0cnVjdCBidWZmZXIgKmJ1ZiwKIAkJICAgc3RydWN0
IGxpbmtfc29ja2V0X2FjdHVhbCAqdG8pCiB7Ci0gIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBS
T1RPX1VEUHY0KQorICBpZiAocHJvdG9faXNfdWRwKHNvY2stPmluZm8ucHJvdG8pKSAvKiB1bmlm
aWVkIFVEUHY0IGFuZCBVRFB2NiAqLwogICAgIHsKICAgICAgIHJldHVybiBsaW5rX3NvY2tldF93
cml0ZV91ZHAgKHNvY2ssIGJ1ZiwgdG8pOwogICAgIH0KLSAgZWxzZSBpZiAoc29jay0+aW5mby5w
cm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIgfHwgc29jay0+aW5mby5wcm90byA9PSBQUk9UT19U
Q1B2NF9DTElFTlQpCisgIGVsc2UgaWYgKHByb3RvX2lzX3RjcChzb2NrLT5pbmZvLnByb3RvKSkg
LyogdW5pZmllZCBUQ1B2NCBhbmQgVENQdjYgKi8KICAgICB7CiAgICAgICByZXR1cm4gbGlua19z
b2NrZXRfd3JpdGVfdGNwIChzb2NrLCBidWYsIHRvKTsKICAgICB9CmRpZmYgLS1naXQgYS9vcGVu
dnBuL3NvY2tzLmMgYi9vcGVudnBuL3NvY2tzLmMKaW5kZXggY2M5ZDgyZi4uN2VjOWEzZSAxMDA2
NDQKLS0tIGEvb3BlbnZwbi9zb2Nrcy5jCisrKyBiL29wZW52cG4vc29ja3MuYwpAQCAtMTc1LDkg
KzE3NSw5IEBAIHJlY3Zfc29ja3NfcmVwbHkgKHNvY2tldF9kZXNjcmlwdG9yX3Qgc2QKIAogICBp
ZiAoYWRkciAhPSBOVUxMKQogICAgIHsKLSAgICAgIGFkZHItPnNhLnNpbl9mYW1pbHkgPSBBRl9J
TkVUOwotICAgICAgYWRkci0+c2Euc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKElOQUREUl9BTlkp
OwotICAgICAgYWRkci0+c2Euc2luX3BvcnQgPSBodG9ucyAoMCk7CisgICAgICBhZGRyLT5hZGRy
LmluNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgIGFkZHItPmFkZHIuaW40LnNpbl9hZGRy
LnNfYWRkciA9IGh0b25sIChJTkFERFJfQU5ZKTsKKyAgICAgIGFkZHItPmFkZHIuaW40LnNpbl9w
b3J0ID0gaHRvbnMgKDApOwogICAgIH0KIAogICB3aGlsZSAobGVuIDwgNCArIGFsZW4gKyAyKQpA
QCAtMjY0LDggKzI2NCw4IEBAIHJlY3Zfc29ja3NfcmVwbHkgKHNvY2tldF9kZXNjcmlwdG9yX3Qg
c2QKICAgLyogQVRZUCA9PSAxIChJUCBWNCBhZGRyZXNzKSAqLwogICBpZiAoYXR5cCA9PSAnXHgw
MScgJiYgYWRkciAhPSBOVUxMKQogICAgIHsKLSAgICAgIG1lbWNweSAoJmFkZHItPnNhLnNpbl9h
ZGRyLCBidWYgKyA0LCBzaXplb2YgKGFkZHItPnNhLnNpbl9hZGRyKSk7Ci0gICAgICBtZW1jcHkg
KCZhZGRyLT5zYS5zaW5fcG9ydCwgYnVmICsgOCwgc2l6ZW9mIChhZGRyLT5zYS5zaW5fcG9ydCkp
OworICAgICAgbWVtY3B5ICgmYWRkci0+YWRkci5pbjQuc2luX2FkZHIsIGJ1ZiArIDQsIHNpemVv
ZiAoYWRkci0+YWRkci5pbjQuc2luX2FkZHIpKTsKKyAgICAgIG1lbWNweSAoJmFkZHItPmFkZHIu
aW40LnNpbl9wb3J0LCBidWYgKyA4LCBzaXplb2YgKGFkZHItPmFkZHIuaW40LnNpbl9wb3J0KSk7
CiAgICAgfQogCiAKQEAgLTM4Myw4ICszODMsOCBAQCBzb2Nrc19wcm9jZXNzX2luY29taW5nX3Vk
cCAoc3RydWN0IGJ1ZmZlCiAgIGlmIChhdHlwICE9IDEpCQkvKiBBVFlQID09IDEgKElQIFY0KSAq
LwogICAgIGdvdG8gZXJyb3I7CiAKLSAgYnVmX3JlYWQgKGJ1ZiwgJmZyb20tPmRlc3Quc2Euc2lu
X2FkZHIsIHNpemVvZiAoZnJvbS0+ZGVzdC5zYS5zaW5fYWRkcikpOwotICBidWZfcmVhZCAoYnVm
LCAmZnJvbS0+ZGVzdC5zYS5zaW5fcG9ydCwgc2l6ZW9mIChmcm9tLT5kZXN0LnNhLnNpbl9wb3J0
KSk7CisgIGJ1Zl9yZWFkIChidWYsICZmcm9tLT5kZXN0LmFkZHIuaW40LnNpbl9hZGRyLCBzaXpl
b2YgKGZyb20tPmRlc3QuYWRkci5pbjQuc2luX2FkZHIpKTsKKyAgYnVmX3JlYWQgKGJ1ZiwgJmZy
b20tPmRlc3QuYWRkci5pbjQuc2luX3BvcnQsIHNpemVvZiAoZnJvbS0+ZGVzdC5hZGRyLmluNC5z
aW5fcG9ydCkpOwogCiAgIHJldHVybjsKIApAQCAtNDE2LDggKzQxNiw4IEBAIHNvY2tzX3Byb2Nl
c3Nfb3V0Z29pbmdfdWRwIChzdHJ1Y3QgYnVmZmUKICAgYnVmX3dyaXRlX3UxNiAoJmhlYWQsIDAp
OwkvKiBSU1YgPSAwICovCiAgIGJ1Zl93cml0ZV91OCAoJmhlYWQsIDApOwkvKiBGUkFHID0gMCAq
LwogICBidWZfd3JpdGVfdTggKCZoZWFkLCAnXHgwMScpOyAvKiBBVFlQID0gMSAoSVAgVjQpICov
Ci0gIGJ1Zl93cml0ZSAoJmhlYWQsICZ0by0+ZGVzdC5zYS5zaW5fYWRkciwgc2l6ZW9mICh0by0+
ZGVzdC5zYS5zaW5fYWRkcikpOwotICBidWZfd3JpdGUgKCZoZWFkLCAmdG8tPmRlc3Quc2Euc2lu
X3BvcnQsIHNpemVvZiAodG8tPmRlc3Quc2Euc2luX3BvcnQpKTsKKyAgYnVmX3dyaXRlICgmaGVh
ZCwgJnRvLT5kZXN0LmFkZHIuaW40LnNpbl9hZGRyLCBzaXplb2YgKHRvLT5kZXN0LmFkZHIuaW40
LnNpbl9hZGRyKSk7CisgIGJ1Zl93cml0ZSAoJmhlYWQsICZ0by0+ZGVzdC5hZGRyLmluNC5zaW5f
cG9ydCwgc2l6ZW9mICh0by0+ZGVzdC5hZGRyLmluNC5zaW5fcG9ydCkpOwogCiAgIHJldHVybiAx
MDsKIH0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>149997</attachid>
            <date>2008-04-16 22:45 0000</date>
            <desc>openvpn-2.1_rc7-r1.ebuild</desc>
            <filename>openvpn-2.1_rc7-r1.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA4IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L25ldC1taXNjL29wZW52cG4vb3BlbnZwbi0yLjFf
cmM3LXIxLmVidWlsZCx2IDEuMSAyMDA4LzA0LzE2IDE2OjM2OjM4IGFsb25ibCBFeHAgJAoKaW5o
ZXJpdCBldXRpbHMgbXVsdGlsaWIKCkRFU0NSSVBUSU9OPSJPcGVuVlBOIGlzIGEgcm9idXN0IGFu
ZCBoaWdobHkgZmxleGlibGUgdHVubmVsaW5nIGFwcGxpY2F0aW9uIGNvbXBhdGlibGUgd2l0aCBt
YW55IE9TZXMuIgpTUkNfVVJJPSJodHRwOi8vb3BlbnZwbi5uZXQvcmVsZWFzZS8ke1B9LnRhci5n
eiIKSE9NRVBBR0U9Imh0dHA6Ly9vcGVudnBuLm5ldC8iCgpMSUNFTlNFPSJHUEwtMiIKU0xPVD0i
MCIKS0VZV09SRFM9In5hbHBoYSB+YW1kNjQgfmhwcGEgfm1pcHMgfnBwYyB+cHBjNjQgfnNoIH5z
cGFyYyB+c3BhcmMtZmJzZCB+eDg2IH54ODYtZmJzZCIKSVVTRT0iZXhhbXBsZXMgaXByb3V0ZTIg
bWluaW1hbCBwYW0gcGFzc3dvcmRzYXZlIHNlbGludXggc3NsIHN0YXRpYyBwa2NzMTEKdGhyZWFk
cyB1c2VybGFuZF9CU0QgaXB2NiIKCkRFUEVORD0iPj1kZXYtbGlicy9sem8tMS4wNwoJa2VybmVs
X2xpbnV4PyAoCgkJaXByb3V0ZTI/ICggc3lzLWFwcHMvaXByb3V0ZTIgKSAhaXByb3V0ZTI/ICgg
c3lzLWFwcHMvbmV0LXRvb2xzICkKCSkKCSFtaW5pbWFsPyAoIHBhbT8gKCB2aXJ0dWFsL3BhbSAp
ICkKCXNlbGludXg/ICggc2VjLXBvbGljeS9zZWxpbnV4LW9wZW52cG4gKQoJc3NsPyAoID49ZGV2
LWxpYnMvb3BlbnNzbC0wLjkuNiApCglwa2NzMTE/ICggPj1kZXYtbGlicy9wa2NzMTEtaGVscGVy
LTEuMDUgKSIKCnBrZ19zZXR1cCgpIHsKCWlmIHVzZSBpcHJvdXRlMiA7IHRoZW4KCQlpZiBidWls
dF93aXRoX3VzZSBzeXMtYXBwcy9pcHJvdXRlMiBtaW5pbWFsIDsgdGhlbgoJCQllZXJyb3IgImlw
cm91dGUyIHN1cHBvcnQgcmVxdWlyZXMgdGhhdCBzeXMtYXBwcy9pcHJvdXRlMiB3YXMgbm90IgoJ
CQllZXJyb3IgImJ1aWx0IHdpdGggdGhlIG1pbmltYWwgVVNFIGZsYWciCgkJCWRpZSAiaXByb3V0
ZTIgc3VwcG9ydCBub3QgYXZhaWxhYmxlIgoJCWZpCglmaQp9CgpzcmNfdW5wYWNrKCkgewoJdW5w
YWNrICR7QX0KCWNkICIke1N9IgoJZXBhdGNoICIke0ZJTEVTRElSfS8ke1B9LXRhcC5wYXRjaCIK
ICAgIHVzZSBpcHY2ICYmIGVwYXRjaCAiJHtGSUxFU0RJUn0vJHtQTn0iLTIuMV9yYzYtdWRwNi5w
YXRjaAp9CgpzcmNfY29tcGlsZSgpIHsKCWxvY2FsIG15Y29uZj0iIgoKCWlmIHVzZSBtaW5pbWFs
IDsgdGhlbgoJCW15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wbHVnaW5zIgoJCW15Y29uZj0i
JHtteWNvbmZ9IC0tZGlzYWJsZS1wa2NzMTEiCgllbHNlCgkJbXljb25mPSIkKHVzZV9lbmFibGUg
cGtjczExKSIKCWZpCgoJZWNvbmYgJHtteWNvbmZ9IFwKCQkkKHVzZV9lbmFibGUgcGFzc3dvcmRz
YXZlIHBhc3N3b3JkLXNhdmUpIFwKCQkkKHVzZV9lbmFibGUgc3NsKSBcCgkJJCh1c2VfZW5hYmxl
IHNzbCBjcnlwdG8pIFwKCQkkKHVzZV9lbmFibGUgdGhyZWFkcyBwdGhyZWFkKSBcCgkJJCh1c2Vf
ZW5hYmxlIGlwcm91dGUyKSBcCgkJfHwgZGllICJjb25maWd1cmUgZmFpbGVkIgoKCXVzZSBzdGF0
aWMgJiYgc2VkIC1pIC1lICcvXkxJQlMvcy9MSUJTID0gL0xJQlMgPSAtc3RhdGljIC8nIE1ha2Vm
aWxlCgoJZW1ha2UgfHwgZGllICJtYWtlIGZhaWxlZCIKCglpZiAhIHVzZSBtaW5pbWFsIDsgdGhl
bgoJCWNkIHBsdWdpbgoJCWZvciBpIGluICQoIGxzIDI+L2Rldi9udWxsICk7IGRvCgkJCVtbICR7
aX0gPT0gIlJFQURNRSIgfHwgJHtpfSA9PSAiZXhhbXBsZXMiIF1dICYmIGNvbnRpbnVlCgkJCVtb
ICR7aX0gPT0gImF1dGgtcGFtIiBdXSAmJiAhIHVzZSBwYW0gJiYgY29udGludWUKCQkJZWluZm8g
IkJ1aWxkaW5nICR7aX0gcGx1Z2luIgoJCQljZCAiJHtpfSIKCQkJZW1ha2UgfHwgZGllICJtYWtl
IGZhaWxlZCIKCQkJY2QgLi4KCQlkb25lCgkJY2QgLi4KCWZpCn0KCnNyY19pbnN0YWxsKCkgewoJ
bWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsIHx8IGRpZSAibWFrZSBpbnN0YWxsIGZhaWxlZCIK
CgkjIGluc3RhbGwgZG9jdW1lbnRhdGlvbgoJZG9kb2MgQVVUSE9SUyBDaGFuZ2VMb2cgUE9SVFMg
UkVBRE1FCgoJIyBFbXB0eSBkaXIKCWRvZGlyIC9ldGMvb3BlbnZwbgoJa2VlcGRpciAvZXRjL29w
ZW52cG4KCgkjIEluc3RhbGwgc29tZSBoZWxwZXIgc2NyaXB0cwoJZXhlaW50byAvZXRjL29wZW52
cG4KCWRvZXhlICIke0ZJTEVTRElSfS91cC5zaCIKCWRvZXhlICIke0ZJTEVTRElSfS9kb3duLnNo
IgoKCSMgSW5zdGFsbCB0aGUgaW5pdCBzY3JpcHQgYW5kIGNvbmZpZyBmaWxlCgluZXdpbml0ZCAi
JHtGSUxFU0RJUn0vJHtQTn0tMi4xLmluaXQiIG9wZW52cG4KCW5ld2NvbmZkICIke0ZJTEVTRElS
fS8ke1BOfS0yLjEuY29uZiIgb3BlbnZwbgoKCSMgaW5zdGFsbCBleGFtcGxlcywgY29udHJvbGxl
ZCBieSB0aGUgcmVzcGVjdGl2ZSB1c2VmbGFnCglpZiB1c2UgZXhhbXBsZXMgOyB0aGVuCgkJIyBk
b2RvYyBkb2VzIG5vdCBzdXBwb3J0bHkgc3VwcG9ydCBkaXJlY3RvcnkgdHJhdmVyc2FsLCAjMTUx
OTMKCQlpbnNpbnRvIC91c3Ivc2hhcmUvZG9jLyR7UEZ9L2V4YW1wbGVzCgkJZG9pbnMgLXIgc2Ft
cGxlLXtjb25maWctZmlsZXMsa2V5cyxzY3JpcHRzfSBjb250cmliCgkJcHJlcGFsbGRvY3MKCWZp
CgoJIyBJbnN0YWxsIHBsdWdpbnMgYW5kIGVhc3ktcnNhCglpZiAhIHVzZSBtaW5pbWFsIDsgdGhl
bgoJCWNkIGVhc3ktcnNhLzIuMAoJCW1ha2UgaW5zdGFsbCAiREVTVERJUj0ke0R9L3Vzci9zaGFy
ZS8ke1BOfS9lYXN5LXJzYSIKCQljZCAuLi8uLgoKCQlleGVpbnRvICIvdXNyLyQoZ2V0X2xpYmRp
cikvJHtQTn0iCgkJZG9leGUgcGx1Z2luLyovKi5zbwoJZmkKfQoKcGtnX3Bvc3RpbnN0KCkgewoJ
IyBBZGQgb3BlbnZwbiB1c2VyIHNvIG9wZW52cG4gc2VydmVycyBjYW4gZHJvcCBwcml2cwoJIyBD
bGllbnRzIHNob3VsZCBydW4gYXMgcm9vdCBzbyB0aGV5IGNhbiBjaGFuZ2UgaXAgYWRkcmVzc2Vz
LAoJIyBkbnMgaW5mb3JtYXRpb24gYW5kIG90aGVyIHN1Y2ggdGhpbmdzLgoJZW5ld2dyb3VwIG9w
ZW52cG4KCWVuZXd1c2VyIG9wZW52cG4gIiIgIiIgIiIgb3BlbnZwbgoKCWlmIFtbIC1uICQobHMg
L2V0Yy9vcGVudnBuLyovbG9jYWwuY29uZiAyPi9kZXYvbnVsbCkgXV0gOyB0aGVuCgkJZXdhcm4g
IldBUk5JTkc6IFRoZSBvcGVudnBuIGluaXQgc2NyaXB0IGhhcyBjaGFuZ2VkIgoJCWV3YXJuICIi
CglmaQoKCWVpbmZvICJUaGUgb3BlbnZwbiBpbml0IHNjcmlwdCBleHBlY3RzIHRvIGZpbmQgdGhl
IGNvbmZpZ3VyYXRpb24gZmlsZSIKCWVpbmZvICJvcGVudnBuLmNvbmYgaW4gL2V0Yy9vcGVudnBu
IGFsb25nIHdpdGggYW55IGV4dHJhIGZpbGVzIGl0IG1heSBuZWVkLiIKCWVpbmZvICIiCgllaW5m
byAiVG8gY3JlYXRlIG1vcmUgVlBOcywgc2ltcGx5IGNyZWF0ZSBhIG5ldyAuY29uZiBmaWxlIGZv
ciBpdCBhbmQiCgllaW5mbyAidGhlbiBjcmVhdGUgYSBzeW1saW5rIHRvIHRoZSBvcGVudnBuIGlu
aXQgc2NyaXB0IGZyb20gYSBsaW5rIGNhbGxlZCIKCWVpbmZvICJvcGVudnBuLm5ld2NvbmZuYW1l
IC0gbGlrZSBzbyIKCWVpbmZvICIgICBjZCAvZXRjL29wZW52cG4iCgllaW5mbyAiICAgJHtFRElU
T1IjIyovfSBmb28uY29uZiIKCWVpbmZvICIgICBjZCAvZXRjL2luaXQuZCIKCWVpbmZvICIgICBs
biAtcyBvcGVudnBuIG9wZW52cG4uZm9vIgoJZWluZm8gIiIKCWVpbmZvICJZb3UgY2FuIHRoZW4g
dHJlYXQgb3BlbnZwbi5mb28gYXMgYW55IG90aGVyIHNlcnZpY2UsIHNvIHlvdSBjYW4iCgllaW5m
byAic3RvcCBvbmUgdnBuIGFuZCBzdGFydCBhbm90aGVyIGlmIHlvdSBuZWVkIHRvLiIKCglpZiBn
cmVwIC1FcSAiXlsgXHRdKih1cHxkb3duKVsgXHRdLioiICIke1JPT1R9L2V0Yy9vcGVudnBuIi8q
LmNvbmYgMj4vZGV2L251bGwgOyB0aGVuCgkJZXdhcm4gIiIKCQlld2FybiAiV0FSTklORzogSWYg
eW91IHVzZSB0aGUgcmVtb3RlIGtleXdvcmQgdGhlbiB5b3UgYXJlIGRlZW1lZCB0byBiZSIKCQll
d2FybiAiYSBjbGllbnQgYnkgb3VyIGluaXQgc2NyaXB0IGFuZCBhcyBzdWNoIHdlIGZvcmNlIHVw
LGRvd24gc2NyaXB0cy4iCgkJZXdhcm4gIlRoZXNlIHNjcmlwdHMgY2FsbCAvZXRjL29wZW52cG4v
XCRTVkNOQU1FLXt1cCxkb3dufS5zaCB3aGVyZSB5b3UiCgkJZXdhcm4gImNhbiBtb3ZlIHlvdXIg
c2NyaXB0cyB0by4iCglmaQoKCWlmICEgdXNlIG1pbmltYWwgOyB0aGVuCgkJZWluZm8gIiIKCQll
aW5mbyAicGx1Z2lucyBoYXZlIGJlZW4gaW5zdGFsbGVkIGludG8gL3Vzci8kKGdldF9saWJkaXIp
LyR7UE59IgoJZmkKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>162041</attachid>
            <date>2008-08-02 21:37 0000</date>
            <desc>openvpn-2.1_rc9.ebuild</desc>
            <filename>openvpn-2.1_rc9.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA4IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L25ldC1taXNjL29wZW52cG4vb3BlbnZwbi0yLjFf
cmM5LmVidWlsZCx2IDEuMSAyMDA4LzA4LzAxIDA5OjAzOjQzIGNlZGsgRXhwICQKCmluaGVyaXQg
ZXV0aWxzIG11bHRpbGliCgpERVNDUklQVElPTj0iT3BlblZQTiBpcyBhIHJvYnVzdCBhbmQgaGln
aGx5IGZsZXhpYmxlIHR1bm5lbGluZyBhcHBsaWNhdGlvbiBjb21wYXRpYmxlIHdpdGggbWFueSBP
U2VzLiIKU1JDX1VSST0iaHR0cDovL29wZW52cG4ubmV0L3JlbGVhc2UvJHtQfS50YXIuZ3oiCkhP
TUVQQUdFPSJodHRwOi8vb3BlbnZwbi5uZXQvIgoKTElDRU5TRT0iR1BMLTIiClNMT1Q9IjAiCktF
WVdPUkRTPSJ+YWxwaGEgfmFtZDY0IH5ocHBhIH5taXBzIH5wcGMgfnBwYzY0IH5zaCB+c3BhcmMg
fnNwYXJjLWZic2Qgfng4NiB+eDg2LWZic2QiCklVU0U9ImV4YW1wbGVzIGlwcm91dGUyIG1pbmlt
YWwgcGFtIHBhc3N3b3Jkc2F2ZSBzZWxpbnV4IHNzbCBzdGF0aWMgcGtjczExCnRocmVhZHMgdXNl
cmxhbmRfQlNEIGlwdjYiCgpERVBFTkQ9Ij49ZGV2LWxpYnMvbHpvLTEuMDcKCWtlcm5lbF9saW51
eD8gKAoJCWlwcm91dGUyPyAoIHN5cy1hcHBzL2lwcm91dGUyICkgIWlwcm91dGUyPyAoIHN5cy1h
cHBzL25ldC10b29scyApCgkpCgkhbWluaW1hbD8gKCBwYW0/ICggdmlydHVhbC9wYW0gKSApCglz
ZWxpbnV4PyAoIHNlYy1wb2xpY3kvc2VsaW51eC1vcGVudnBuICkKCXNzbD8gKCA+PWRldi1saWJz
L29wZW5zc2wtMC45LjYgKQoJcGtjczExPyAoID49ZGV2LWxpYnMvcGtjczExLWhlbHBlci0xLjA1
ICkiCgpwa2dfc2V0dXAoKSB7CglpZiB1c2UgaXByb3V0ZTIgOyB0aGVuCgkJaWYgYnVpbHRfd2l0
aF91c2Ugc3lzLWFwcHMvaXByb3V0ZTIgbWluaW1hbCA7IHRoZW4KCQkJZWVycm9yICJpcHJvdXRl
MiBzdXBwb3J0IHJlcXVpcmVzIHRoYXQgc3lzLWFwcHMvaXByb3V0ZTIgd2FzIG5vdCIKCQkJZWVy
cm9yICJidWlsdCB3aXRoIHRoZSBtaW5pbWFsIFVTRSBmbGFnIgoJCQlkaWUgImlwcm91dGUyIHN1
cHBvcnQgbm90IGF2YWlsYWJsZSIKCQlmaQoJZmkKfQoKc3JjX3VucGFjaygpIHsKCXVucGFjayAk
e0F9CgljZCAiJHtTfSIKCXVzZSBpcHY2ICYmIGVwYXRjaCAiJHtGSUxFU0RJUn0vJHtQTn0iLTIu
MV9yYzktdWRwNi5wYXRjaAp9CgpzcmNfY29tcGlsZSgpIHsKCWxvY2FsIG15Y29uZj0iIgoKCWlm
IHVzZSBtaW5pbWFsIDsgdGhlbgoJCW15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wbHVnaW5z
IgoJCW15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wa2NzMTEiCgllbHNlCgkJbXljb25mPSIk
KHVzZV9lbmFibGUgcGtjczExKSIKCWZpCgoJZWNvbmYgJHtteWNvbmZ9IFwKCQkkKHVzZV9lbmFi
bGUgcGFzc3dvcmRzYXZlIHBhc3N3b3JkLXNhdmUpIFwKCQkkKHVzZV9lbmFibGUgc3NsKSBcCgkJ
JCh1c2VfZW5hYmxlIHNzbCBjcnlwdG8pIFwKCQkkKHVzZV9lbmFibGUgdGhyZWFkcyBwdGhyZWFk
KSBcCgkJJCh1c2VfZW5hYmxlIGlwcm91dGUyKSBcCgkJfHwgZGllICJjb25maWd1cmUgZmFpbGVk
IgoKCXVzZSBzdGF0aWMgJiYgc2VkIC1pIC1lICcvXkxJQlMvcy9MSUJTID0gL0xJQlMgPSAtc3Rh
dGljIC8nIE1ha2VmaWxlCgoJZW1ha2UgfHwgZGllICJtYWtlIGZhaWxlZCIKCglpZiAhIHVzZSBt
aW5pbWFsIDsgdGhlbgoJCWNkIHBsdWdpbgoJCWZvciBpIGluICQoIGxzIDI+L2Rldi9udWxsICk7
IGRvCgkJCVtbICR7aX0gPT0gIlJFQURNRSIgfHwgJHtpfSA9PSAiZXhhbXBsZXMiIHx8ICR7aX0g
PT0gImRlZmVyIiBdXSAmJiBjb250aW51ZQoJCQlbWyAke2l9ID09ICJhdXRoLXBhbSIgXV0gJiYg
ISB1c2UgcGFtICYmIGNvbnRpbnVlCgkJCWVpbmZvICJCdWlsZGluZyAke2l9IHBsdWdpbiIKCQkJ
Y2QgIiR7aX0iCgkJCWVtYWtlIHx8IGRpZSAibWFrZSBmYWlsZWQiCgkJCWNkIC4uCgkJZG9uZQoJ
CWNkIC4uCglmaQp9CgpzcmNfaW5zdGFsbCgpIHsKCW1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFs
bCB8fCBkaWUgIm1ha2UgaW5zdGFsbCBmYWlsZWQiCgoJIyBpbnN0YWxsIGRvY3VtZW50YXRpb24K
CWRvZG9jIEFVVEhPUlMgQ2hhbmdlTG9nIFBPUlRTIFJFQURNRQoKCSMgRW1wdHkgZGlyCglkb2Rp
ciAvZXRjL29wZW52cG4KCWtlZXBkaXIgL2V0Yy9vcGVudnBuCgoJIyBJbnN0YWxsIHNvbWUgaGVs
cGVyIHNjcmlwdHMKCWV4ZWludG8gL2V0Yy9vcGVudnBuCglkb2V4ZSAiJHtGSUxFU0RJUn0vdXAu
c2giCglkb2V4ZSAiJHtGSUxFU0RJUn0vZG93bi5zaCIKCgkjIEluc3RhbGwgdGhlIGluaXQgc2Ny
aXB0IGFuZCBjb25maWcgZmlsZQoJbmV3aW5pdGQgIiR7RklMRVNESVJ9LyR7UE59LTIuMS5pbml0
IiBvcGVudnBuCgluZXdjb25mZCAiJHtGSUxFU0RJUn0vJHtQTn0tMi4xLmNvbmYiIG9wZW52cG4K
CgkjIGluc3RhbGwgZXhhbXBsZXMsIGNvbnRyb2xsZWQgYnkgdGhlIHJlc3BlY3RpdmUgdXNlZmxh
ZwoJaWYgdXNlIGV4YW1wbGVzIDsgdGhlbgoJCSMgZG9kb2MgZG9lcyBub3Qgc3VwcG9ydGx5IHN1
cHBvcnQgZGlyZWN0b3J5IHRyYXZlcnNhbCwgIzE1MTkzCgkJaW5zaW50byAvdXNyL3NoYXJlL2Rv
Yy8ke1BGfS9leGFtcGxlcwoJCWRvaW5zIC1yIHNhbXBsZS17Y29uZmlnLWZpbGVzLGtleXMsc2Ny
aXB0c30gY29udHJpYgoJCXByZXBhbGxkb2NzCglmaQoKCSMgSW5zdGFsbCBwbHVnaW5zIGFuZCBl
YXN5LXJzYQoJaWYgISB1c2UgbWluaW1hbCA7IHRoZW4KCQljZCBlYXN5LXJzYS8yLjAKCQltYWtl
IGluc3RhbGwgIkRFU1RESVI9JHtEfS91c3Ivc2hhcmUvJHtQTn0vZWFzeS1yc2EiCgkJY2QgLi4v
Li4KCgkJZXhlaW50byAiL3Vzci8kKGdldF9saWJkaXIpLyR7UE59IgoJCWRvZXhlIHBsdWdpbi8q
Lyouc28KCWZpCn0KCnBrZ19wb3N0aW5zdCgpIHsKCSMgQWRkIG9wZW52cG4gdXNlciBzbyBvcGVu
dnBuIHNlcnZlcnMgY2FuIGRyb3AgcHJpdnMKCSMgQ2xpZW50cyBzaG91bGQgcnVuIGFzIHJvb3Qg
c28gdGhleSBjYW4gY2hhbmdlIGlwIGFkZHJlc3NlcywKCSMgZG5zIGluZm9ybWF0aW9uIGFuZCBv
dGhlciBzdWNoIHRoaW5ncy4KCWVuZXdncm91cCBvcGVudnBuCgllbmV3dXNlciBvcGVudnBuICIi
ICIiICIiIG9wZW52cG4KCglpZiBbWyAtbiAkKGxzIC9ldGMvb3BlbnZwbi8qL2xvY2FsLmNvbmYg
Mj4vZGV2L251bGwpIF1dIDsgdGhlbgoJCWV3YXJuICJXQVJOSU5HOiBUaGUgb3BlbnZwbiBpbml0
IHNjcmlwdCBoYXMgY2hhbmdlZCIKCQlld2FybiAiIgoJZmkKCgllaW5mbyAiVGhlIG9wZW52cG4g
aW5pdCBzY3JpcHQgZXhwZWN0cyB0byBmaW5kIHRoZSBjb25maWd1cmF0aW9uIGZpbGUiCgllaW5m
byAib3BlbnZwbi5jb25mIGluIC9ldGMvb3BlbnZwbiBhbG9uZyB3aXRoIGFueSBleHRyYSBmaWxl
cyBpdCBtYXkgbmVlZC4iCgllaW5mbyAiIgoJZWluZm8gIlRvIGNyZWF0ZSBtb3JlIFZQTnMsIHNp
bXBseSBjcmVhdGUgYSBuZXcgLmNvbmYgZmlsZSBmb3IgaXQgYW5kIgoJZWluZm8gInRoZW4gY3Jl
YXRlIGEgc3ltbGluayB0byB0aGUgb3BlbnZwbiBpbml0IHNjcmlwdCBmcm9tIGEgbGluayBjYWxs
ZWQiCgllaW5mbyAib3BlbnZwbi5uZXdjb25mbmFtZSAtIGxpa2Ugc28iCgllaW5mbyAiICAgY2Qg
L2V0Yy9vcGVudnBuIgoJZWluZm8gIiAgICR7RURJVE9SIyMqL30gZm9vLmNvbmYiCgllaW5mbyAi
ICAgY2QgL2V0Yy9pbml0LmQiCgllaW5mbyAiICAgbG4gLXMgb3BlbnZwbiBvcGVudnBuLmZvbyIK
CWVpbmZvICIiCgllaW5mbyAiWW91IGNhbiB0aGVuIHRyZWF0IG9wZW52cG4uZm9vIGFzIGFueSBv
dGhlciBzZXJ2aWNlLCBzbyB5b3UgY2FuIgoJZWluZm8gInN0b3Agb25lIHZwbiBhbmQgc3RhcnQg
YW5vdGhlciBpZiB5b3UgbmVlZCB0by4iCgoJaWYgZ3JlcCAtRXEgIl5bIFx0XSoodXB8ZG93bilb
IFx0XS4qIiAiJHtST09UfS9ldGMvb3BlbnZwbiIvKi5jb25mIDI+L2Rldi9udWxsIDsgdGhlbgoJ
CWV3YXJuICIiCgkJZXdhcm4gIldBUk5JTkc6IElmIHlvdSB1c2UgdGhlIHJlbW90ZSBrZXl3b3Jk
IHRoZW4geW91IGFyZSBkZWVtZWQgdG8gYmUiCgkJZXdhcm4gImEgY2xpZW50IGJ5IG91ciBpbml0
IHNjcmlwdCBhbmQgYXMgc3VjaCB3ZSBmb3JjZSB1cCxkb3duIHNjcmlwdHMuIgoJCWV3YXJuICJU
aGVzZSBzY3JpcHRzIGNhbGwgL2V0Yy9vcGVudnBuL1wkU1ZDTkFNRS17dXAsZG93bn0uc2ggd2hl
cmUgeW91IgoJCWV3YXJuICJjYW4gbW92ZSB5b3VyIHNjcmlwdHMgdG8uIgoJZmkKCglpZiAhIHVz
ZSBtaW5pbWFsIDsgdGhlbgoJCWVpbmZvICIiCgkJZWluZm8gInBsdWdpbnMgaGF2ZSBiZWVuIGlu
c3RhbGxlZCBpbnRvIC91c3IvJChnZXRfbGliZGlyKS8ke1BOfSIKCWZpCn0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162043</attachid>
            <date>2008-08-02 21:39 0000</date>
            <desc>openvpn-2.1_rc9-udp6.patch</desc>
            <filename>openvpn-2.1_rc9-udp6.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9saWJ0ZXN0LnNoIGIvampvLXRlc3RzL2xpYnRlc3Quc2gK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWIwZDRiNQotLS0gL2Rldi9udWxs
CisrKyBiL2pqby10ZXN0cy9saWJ0ZXN0LnNoCkBAIC0wLDAgKzEsMTE1IEBACisjIS9iaW4vYmFz
aAorCit0eXBlc2V0IC1pIHRlc3RfbnVtPTAgIyBpbmNyZW1lbnRzIHcvZWFjaCB0ZXN0X2RlZmlu
ZQordHlwZXNldCB0ZXN0X21zZwkjIHByZWZpeDogInRlc3QgbnIjIiAgZm9yIG1zZ3MKK3R5cGVz
ZXQgdGVzdF9uYW1lCSMgdGVzdCBuYW1lIGdpdmVuCQordHlwZXNldCB0ZXN0X3NhbmVuYW1lCSMg
dGVzdCBuYW1lIHdpdGggYWxsIHdoaXRlc3BhY2UgKGFuZCBhbGlrZSkgcmVwbGFjZWQgYnkgJ18n
CisKK1RFU1RfQ0xFQU5VUD0iOiIKKworc2F5ICgpIHsKKwllY2hvICIkQCIgPiYzCit9CitlcnIg
KCkgeworCWVjaG8gIiRAIiA+JjQKK30KK2RlYnVnICgpIHsKKwllY2hvICIkQCIgPiY0Cit9Cit0
ZXN0X2RlZmluZSgpIHsKKwl0ZXN0X25hbWU9IiQqIgorCXRlc3Rfc2FuZW5hbWU9IiQoZWNobyAt
biAkdGVzdF9uYW1lfCB0ciAtYyAnW0EtWmEtejAtOS5fXScgXyApIgorCXRlc3RfbnVtPXRlc3Rf
bnVtKzEKKwl0ZXN0X21zZz0idGVzdCAkdGVzdF9udW0iCisJdGVzdF9iZ19jbGVhbnVwIAorfQor
dGVzdF9leHBlY3Rfc3VjY2VzcyAoKSB7CisJbG9jYWwgbXNnPSIkMSIgCisJdGVzdCAkIyAtZ2Ug
MiB8fCB7IGVyciAidXNhZ2UgZXJyb3I6IHRlc3RfZXhwZWN0X2ZhaWx1cmUgbXNnIGNtZCBhcmdz
IC4uLiI7IHJldHVybiAxOyB9CisJc2F5IC1uICIkdGVzdF9tc2c6IC0tICRtc2cgKGV4cGVjdGlu
ZyBzdWNjZXNzKSAiCisJc2hpZnQKKwkoZXZhbCAiJEAiIDQ+JjEpICYmIHsgc2F5IC1lICJcbiR0
ZXN0X21zZzogT0sgJSUlICR0ZXN0X3NhbmVuYW1lIiA7ICByZXR1cm4gMCA7IH0KKwlzYXkgLWUg
IlxuJHRlc3RfbXNnOiBGQUlMRUQgJSUlICR0ZXN0X3NhbmVuYW1lIiAKKwlyZXR1cm4gMQorfQor
Cit0ZXN0X2V4cGVjdF9mYWlsdXJlICgpIHsKKwlsb2NhbCBtc2c9IiQxIiAKKwl0ZXN0ICQjIC1n
ZSAyIHx8IHsgZXJyICJ1c2FnZSBlcnJvcjogdGVzdF9leHBlY3RfZmFpbHVyZSBtc2cgY21kIGFy
Z3MgLi4uIjsgIHJldHVybiAxO30KKwlzYXkgLW4gIiR0ZXN0X21zZzogLS0gJG1zZyAoZXhwZWN0
aW5nIGZhaWx1cmUpICIKKwlzaGlmdAorCShldmFsICIkQCIpICYmIHsgc2F5IC1lICJcbiR0ZXN0
X21zZzogRkFJTEVEICUlJSAkdGVzdF9zYW5lbmFtZSIgPiYzIDsgIHJldHVybiAwIDsgfQorCXNh
eSAtZSAiXG4kdGVzdF9tc2c6IE9LICUlJSAkdGVzdF9zYW5lbmFtZSIKKwlyZXR1cm4gMQorfQor
Cit0ZXN0X2JnX2VncmVwKCkgeworCWxvY2FsIG5zZWNzPSIkMSIKKwlsb2NhbCB0eHQ9IiQyIgor
CWxvY2FsIHJldAorCXNoaWZ0IDIKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkdGVzdF9uYW1lIiBc
CisJCSJzZXQgLW0gOyAkQCAmPiAkdC9vdXQtJHRlc3Rfc2FuZW5hbWUgJgorCQlzPTE7CisJCWZv
ciBpIGluIFwkKHNlcSAxICRuc2Vjcyk7ZG8gCisJCQlzYXkgLW4gJy4nCisJCQlraWxsIC0wICUx
IHx8IHsgZWdyZXAgZmFpbGVkICR0L291dC0kdGVzdF9zYW5lbmFtZSA+JjQ7IGJyZWFrOyB9CisJ
CQlvPVwkKGVncmVwIFwiJHR4dFwiICR0L291dC0kdGVzdF9zYW5lbmFtZSApICYmIHsgZGVidWcg
XCRvOyBzPTA7IGJyZWFrOyB9CisJCQlzbGVlcCAxOworCQlkb25lOworCQlraWxsICUxCisJCXdh
aXQKKwkJZXhpdCBcJHMKKwkJIiAyPi9kZXYvbnVsbCA0PiR0L2VycgorCXJldD0kPworCXRlc3Qg
JHJldCAtZXEgMCAmJiByZXR1cm4gMAorCXNheSAiJHRlc3RfbXNnOiBzZWU6ICR0L291dC0kdGVz
dF9zYW5lbmFtZSoiIAorCXJldHVybiAkcmV0Cit9CisjIHJ1biBjb21tYW5kIGluICpjdXJyZW50
KiBzaGVsbCBpZ25vcmluZyBzdGRlcnIsIGV2YWxzIGFyZ3MgcGFzc2VkCitxdWlldDIoKSB7CisJ
I2JhY2t1cCBmZD0yCisJZXhlYyAyNTA+JjIKKwlleGVjIDI+L2Rldi9udWxsCisJZXZhbCAiJEAi
CisJI2Nsb3NlIGF1eGZkCisJZXhlYyAyPiYyNTAKKwlleGVjIDI1MD4mLQorfQordGVzdF9iZ19w
cmV2KCl7IGxvY2FsIG91dD0kdC9vdXQtJHRlc3Rfc2FuZW5hbWUtcHJldjsgJEAgPiYgJG91dCAm
IH0KK3Rlc3RfYmdfY2xlYW51cCgpIHsgcXVpZXQyICIkVEVTVF9DTEVBTlVQOyR7QDotOn07a2ls
bCAlIDI+L2Rldi9udWxsO3dhaXQiIDt9Cit0ZXN0X3NldF9jbGVhbnVwICgpIHsgVEVTVF9DTEVB
TlVQPSIkeyo6LTp9IiA7fQorCit0PS90bXAKK2V4ZWMgMz4mMQorZXhlYyA0PiYyCisKKyM9PT09
PT09PT0KKworbG4gLXNmICRQV0Qvb3BlbnZwbiAkdC9vcGVudnBuLXRlc3QKK2V4cG9ydCBPUEVO
VlBOPSR0L29wZW52cG4tdGVzdAorCit0ZXN0X3NldF9jbGVhbnVwICJraWxsYWxsICRPUEVOVlBO
IgorCit0cmFwICd0ZXN0X2JnX2NsZWFudXA7ZXhpdCcgMCAyIDE1CisKK3Rlc3RfZGVmaW5lICJV
RFA2IGxvb3BiYWNrIgordGVzdF9iZ19lZ3JlcCAzMCAiSW5pdGlhbGl6YXRpb24gU2VxdWVuY2Ug
Q29tcGxldGVkIiAuLi9qam8tdGVzdHMvcnVuLXVkcDYtMC1sb29wYmFjay1zZWxmLnNoCisKK3Rl
c3RfZGVmaW5lICJVRFA2IGxvb3BiYWNrIGJ5bmFtZSIKK3Rlc3RfYmdfZWdyZXAgMzAgIkluaXRp
YWxpemF0aW9uIFNlcXVlbmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi11ZHA2LTAtbG9v
cGJhY2stYnluYW1lLnNoCisKK3Rlc3RfZGVmaW5lICJUQ1A2IGxvb3BiYWNrIgordGVzdF9iZ19w
cmV2IC4uL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLXNlcnZlci5zaAordGVzdF9iZ19l
Z3JlcCAzMCAiSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UgQ29tcGxldGVkIiAuLi9qam8tdGVzdHMv
cnVuLXRjcDYtMC1sb29wYmFjay1jbGllbnQuc2gKKwordGVzdF9kZWZpbmUgIlRDUDYgbG9vcGJh
Y2sgYnluYW1lIgordGVzdF9iZ19wcmV2IC4uL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LXNlcnZlci1ieW5hbWUuc2gKK3Rlc3RfYmdfZWdyZXAgMzAgIkluaXRpYWxpemF0aW9uIFNlcXVl
bmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi10Y3A2LTAtbG9vcGJhY2stY2xpZW50LWJ5
bmFtZS5zaAorCit0ZXN0X2RlZmluZSAiVURQNCBsb29wYmFjayIKK3Rlc3RfYmdfZWdyZXAgMzAg
IkluaXRpYWxpemF0aW9uIFNlcXVlbmNlIENvbXBsZXRlZCIgLi4vampvLXRlc3RzL3J1bi11ZHA0
LTAtbG9vcGJhY2stc2VsZi5zaAorCit0ZXN0X2RlZmluZSAiVENQNCBsb29wYmFjayIKK3Rlc3Rf
YmdfcHJldiAuLi9qam8tdGVzdHMvcnVuLXRjcDQtMC1sb29wYmFjay1zZXJ2ZXIuc2ggCit0ZXN0
X2JnX2VncmVwIDMwICJJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSBDb21wbGV0ZWQiIC4uL2pqby10
ZXN0cy9ydW4tdGNwNC0wLWxvb3BiYWNrLWNsaWVudC5zaApkaWZmIC0tZ2l0IGEvampvLXRlc3Rz
L3FlbXUtaWZ1cC0yLmpqby5zaCBiL2pqby10ZXN0cy9xZW11LWlmdXAtMi5qam8uc2gKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjA0MThhZAotLS0gL2Rldi9udWxsCisrKyBi
L2pqby10ZXN0cy9xZW11LWlmdXAtMi5qam8uc2gKQEAgLTAsMCArMSwxMiBAQAorIyEvYmluL3No
IC14Cisjc3VkbyBzaCAtYyAiL3NiaW4vaWZjb25maWcgJDEgaHcgZXRoZXIgMDA6MDA6MDA6MDA6
MDA6MDE7IC9zYmluL2lmY29uZmlnICQxIDE5Mi4xNjguMjU0LjEiCitleHBvcnQgUEFUSD0vc2Jp
bjovdXNyL3NiaW46JFBBVEgKK05VTT0yCitERVY9cWVtdXR1biROVU0KK3N1ZG8gc2ggLXggPDxF
T0YKK2lwIGxpIHNldCAkMSBuYW1lICRERVYKK2lwIGxpIHNldCAkREVWIGFkZHJlc3MgMDA6MDA6
MDA6MDA6MDA6MDEKK2lwIGxpIHNldCAkREVWIHVwCitpcCBhZCBhZGQgMTkyLjE2OC4yNTQuMSBk
ZXYgJERFVgoraXAgcm8gYWRkIDE5Mi4xNjguMjU0LiROVU0gZGV2ICRERVYKK0VPRgpkaWZmIC0t
Z2l0IGEvampvLXRlc3RzL3FlbXUtaWZ1cC0zLmpqby5zaCBiL2pqby10ZXN0cy9xZW11LWlmdXAt
My5qam8uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTZjMmYzMwotLS0g
L2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9xZW11LWlmdXAtMy5qam8uc2gKQEAgLTAsMCArMSwx
MiBAQAorIyEvYmluL3NoIC14Cisjc3VkbyBzaCAtYyAiL3NiaW4vaWZjb25maWcgJDEgaHcgZXRo
ZXIgMDA6MDA6MDA6MDA6MDA6MDE7IC9zYmluL2lmY29uZmlnICQxIDE5Mi4xNjguMjU0LjEiCitl
eHBvcnQgUEFUSD0vc2JpbjovdXNyL3NiaW46JFBBVEgKK05VTT0zCitERVY9cWVtdXR1biROVU0K
K3N1ZG8gc2ggLXggPDxFT0YKK2lwIGxpIHNldCAkMSBuYW1lICRERVYKK2lwIGxpIHNldCAkREVW
IGFkZHJlc3MgMDA6MDA6MDA6MDA6MDA6MDEKK2lwIGxpIHNldCAkREVWIHVwCitpcCBhZCBhZGQg
MTkyLjE2OC4yNTQuMSBkZXYgJERFVgoraXAgcm8gYWRkIDE5Mi4xNjguMjU0LiROVU0gZGV2ICRE
RVYKK0VPRgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1hZnVuaXgtMC1sb29wLnNoIGIvampv
LXRlc3RzL3J1bi1hZnVuaXgtMC1sb29wLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAuLmVkNTA2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLWFmdW5peC0w
LWxvb3Auc2gKQEAgLTAsMCArMSw0IEBACisjIS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29w
ZW52cG59CitybSAtZnYgL3RtcC9vLnMKKyR7T1BFTlZQTn0gLS1wcm90byB1bml4LWRncmFtIC0t
bG9jYWwgL3RtcC9vLnMgLS1yZW1vdGUgL3RtcC9vLnMgLS1kZXYgdHVuIC0taWZjb25maWcgMS4x
LjEuMSAxLjEuMS4yIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5ICQqCmRpZmYgLS1naXQgYS9qam8t
dGVzdHMvcnVuLWFmdW5peC0xLW8xLnNoIGIvampvLXRlc3RzL3J1bi1hZnVuaXgtMS1vMS5zaApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjFkZjBmCi0tLSAvZGV2L251bGwK
KysrIGIvampvLXRlc3RzL3J1bi1hZnVuaXgtMS1vMS5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jp
bi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7T1BFTlZQTn0gLS1wcm90byB1bml4
LWRncmFtIC0tbG9jYWwgL3RtcC9vMS5zIC0tcmVtb3RlIC90bXAvbzIucyAtLWRldiB0dW4gLS1p
ZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjIgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgJCoKZGlmZiAt
LWdpdCBhL2pqby10ZXN0cy9ydW4tYWZ1bml4LTEtbzIuc2ggYi9qam8tdGVzdHMvcnVuLWFmdW5p
eC0xLW8yLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZlOTQyMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLWFmdW5peC0xLW8yLnNoCkBAIC0wLDAgKzEs
MyBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAt
LXByb3RvIHVuaXgtZGdyYW0gLS1sb2NhbCAvdG1wL28yLnMgLS1yZW1vdGUgL3RtcC9vMS5zIC0t
ZGV2IHR1biAtLWlmY29uZmlnIDEuMS4xLjIgMS4xLjEuMSAtLXNlY3JldCAuLi9vcGVudnBuLmtl
eSAkKgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1veGctMS5zaCBiL2pqby10ZXN0cy9ydW4t
b3hnLTEuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjFmZDAyZgotLS0g
L2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tb3hnLTEuc2gKQEAgLTAsMCArMSwzIEBACisj
IS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiB0
dW4gLS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tbHBvcnQgNTAyMCAtLXJwb3J0IDEx
OTQgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjIgIiRA
IgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi1veGctMi5zaCBiL2pqby10ZXN0cy9ydW4tb3hn
LTIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWVhNjM0NQotLS0gL2Rl
di9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tb3hnLTIuc2gKQEAgLTAsMCArMSwzIEBACisjIS9i
aW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiB0dW4g
LS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tbHBvcnQgNTAyMCAtLXJwb3J0IDExOTQg
LS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4yIDEuMS4xLjEgIiRAIgpk
aWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stY2xpZW50LnNoIGIvampv
LXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stY2xpZW50LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAuLjk1NmQ0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVu
LXRjcDQtMC1sb29wYmFjay1jbGllbnQuc2gKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggLXgK
KzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59IC0tZGV2IG51bGwgLS1wcm90byB0
Y3AtY2xpZW50IC0tcmVtb3RlIGxvY2FsaG9zdCAtLXJwb3J0IDUwMTEgLS1zZWNyZXQgLi4vb3Bl
bnZwbi5rZXkgIiRAIgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2st
c2VydmVyLnNoIGIvampvLXRlc3RzL3J1bi10Y3A0LTAtbG9vcGJhY2stc2VydmVyLnNoCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBjYWIzODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9qam8tdGVzdHMvcnVuLXRjcDQtMC1sb29wYmFjay1zZXJ2ZXIuc2gKQEAgLTAsMCArMSwzIEBA
CisjIS9iaW4vc2ggLXgKKzogJHtPUEVOVlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRl
diBudWxsIC0tcHJvdG8gdGNwLXNlcnZlciAtLXJlbW90ZSBsb2NhbGhvc3QgLS1scG9ydCA1MDEx
IC0tc2VjcmV0IC4uL29wZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4t
dGNwNi0wLWxvb3BiYWNrLWNsaWVudC1ieW5hbWUuc2ggYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1s
b29wYmFjay1jbGllbnQtYnluYW1lLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLmY4YjJjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29w
YmFjay1jbGllbnQtYnluYW1lLnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC14Cis6ICR7
T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAgLS1kZXYgbnVsbCAtLXByb3RvIHRjcDYt
Y2xpZW50IC0tcmVtb3RlIGlwNi1sb2NhbGhvc3QgLS1ycG9ydCA1MDExIC0tc2VjcmV0IC4uL29w
ZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LWNsaWVudC5zaCBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLWNsaWVudC5zaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOTg1MWM1Ci0tLSAvZGV2L251bGwKKysr
IGIvampvLXRlc3RzL3J1bi10Y3A2LTAtbG9vcGJhY2stY2xpZW50LnNoCkBAIC0wLDAgKzEsMyBA
QAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtPUEVOVlBOfSAgLS1k
ZXYgbnVsbCAtLXByb3RvIHRjcDYtY2xpZW50IC0tcmVtb3RlIDo6MSAtLXJwb3J0IDUwMTEgLS1z
ZWNyZXQgLi4vb3BlbnZwbi5rZXkgIiRAIgpkaWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi10Y3A2
LTAtbG9vcGJhY2stc2VydmVyLWJ5bmFtZS5zaCBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3Bi
YWNrLXNlcnZlci1ieW5hbWUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
OGZlYWQzYwotLS0gL2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNr
LXNlcnZlci1ieW5hbWUuc2gKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggLXgKKzogJHtPUEVO
VlBOOj0uL29wZW52cG59Ciske09QRU5WUE59ICAtLWRldiBudWxsIC0tcHJvdG8gdGNwNi1zZXJ2
ZXIgLS1sb2NhbCBpcDYtbG9jYWxob3N0IC0tbHBvcnQgNTAxMSAtLXNlY3JldCAuLi9vcGVudnBu
LmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29wYmFjay1zZXJ2
ZXIuc2ggYi9qam8tdGVzdHMvcnVuLXRjcDYtMC1sb29wYmFjay1zZXJ2ZXIuc2gKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWQzNjU1NQotLS0gL2Rldi9udWxsCisrKyBiL2pq
by10ZXN0cy9ydW4tdGNwNi0wLWxvb3BiYWNrLXNlcnZlci5zaApAQCAtMCwwICsxLDMgQEAKKyMh
L2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7T1BFTlZQTn0gIC0tZGV2IG51
bGwgLS1wcm90byB0Y3A2LXNlcnZlciAtLWxvY2FsIDo6IC0tbHBvcnQgNTAxMSAtLXNlY3JldCAu
Li9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDQtMC1sb29w
YmFjay1zZWxmLnNoIGIvampvLXRlc3RzL3J1bi11ZHA0LTAtbG9vcGJhY2stc2VsZi5zaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43YTI5YTNkCi0tLSAvZGV2L251bGwKKysr
IGIvampvLXRlc3RzL3J1bi11ZHA0LTAtbG9vcGJhY2stc2VsZi5zaApAQCAtMCwwICsxLDMgQEAK
KyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59
IC0tZGV2IG51bGwgLS1wcm90byB1ZHAgLS1yZW1vdGUgbG9jYWxob3N0IC0tcG9ydCA1MDExIC0t
c2VjcmV0IC4uL29wZW52cG4ua2V5ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRw
NC0xLXFlbXUtZ3Vlc3Quc2ggYi9qam8tdGVzdHMvcnVuLXVkcDQtMS1xZW11LWd1ZXN0LnNoCm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkY2I2NDEKLS0tIC9kZXYvbnVsbAor
KysgYi9qam8tdGVzdHMvcnVuLXVkcDQtMS1xZW11LWd1ZXN0LnNoCkBAIC0wLDAgKzEsMyBAQAor
IyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0g
LS1kZXYgdHVuIC0tcHJvdG8gdWRwIC0tcmVtb3RlIDEwLjAuMi4yIC0tcG9ydCA1MDExIC0tc2Vj
cmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWcgMS4xLjEuMjUzIDEuMS4xLjEKZGlmZiAtLWdp
dCBhL2pqby10ZXN0cy9ydW4tdWRwNC0xLXFlbXUtaG9zdC5zaCBiL2pqby10ZXN0cy9ydW4tdWRw
NC0xLXFlbXUtaG9zdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZGI0
NWYyCi0tLSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA0LTEtcWVtdS1ob3N0LnNo
CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQor
JHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8gdWRwIC0tZmxvYXQgLS1wb3J0IDUw
MTEgLS1zZWNyZXQgLi4vb3BlbnZwbi5rZXkgLS1pZmNvbmZpZyAxLjEuMS4xIDEuMS4xLjI1Mwpk
aWZmIC0tZ2l0IGEvampvLXRlc3RzL3J1bi11ZHA0LTItTUguc2ggYi9qam8tdGVzdHMvcnVuLXVk
cDQtMi1NSC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MzU4ZmJjCi0t
LSAvZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA0LTItTUguc2gKQEAgLTAsMCArMSw0
IEBACisjIS9iaW4vc2ggLXgKKyNwYXNzIC0tbG9jYWwgQUREUiAtLXJlbW90ZSBBRERSCis6ICR7
T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8g
dWRwIC0tcG9ydCA1MDExIC0tc2VjcmV0IC4uL29wZW52cG4ua2V5IC0taWZjb25maWctbm9leGVj
ICIkQCIKZGlmZiAtLWdpdCBhL2pqby10ZXN0cy9ydW4tdWRwNi0wLWxvb3BiYWNrLWJ5bmFtZS5z
aCBiL2pqby10ZXN0cy9ydW4tdWRwNi0wLWxvb3BiYWNrLWJ5bmFtZS5zaApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi45OTNlZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvampvLXRl
c3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stYnluYW1lLnNoCkBAIC0wLDAgKzEsMyBAQAorIyEvYmlu
L3NoIC14Cis6ICR7T1BFTlZQTjo9Li9vcGVudnBufQorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYg
bnVsbCAtLXByb3RvIHVkcDYgLS1yZW1vdGUgaXA2LWxvY2FsaG9zdCAtLXBvcnQgNTAxMSAtLXNl
Y3JldCAuLi9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDYt
MC1sb29wYmFjay1zZWxmLnNoIGIvampvLXRlc3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stc2VsZi5z
aApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NjliYzM5Ci0tLSAvZGV2L251
bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA2LTAtbG9vcGJhY2stc2VsZi5zaApAQCAtMCwwICsx
LDMgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KKyR7R0RCfSAke09Q
RU5WUE59IC0tZGV2IG51bGwgLS1wcm90byB1ZHA2IC0tcmVtb3RlIDo6MSAtLXBvcnQgNTAxMSAt
LXNlY3JldCAuLi9vcGVudnBuLmtleSAiJEAiCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVk
cDYtMS1jYXJwZWRpZW0uc2ggYi9qam8tdGVzdHMvcnVuLXVkcDYtMS1jYXJwZWRpZW0uc2gKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmNjZTM1ZQotLS0gL2Rldi9udWxsCisr
KyBiL2pqby10ZXN0cy9ydW4tdWRwNi0xLWNhcnBlZGllbS5zaApAQCAtMCwwICsxLDQgQEAKKyMh
L2Jpbi9zaCAteAorUkVNNj0iZmU4MDo6MmUwOjdkZmY6ZmVlMzplZjE3IgorOiAke09QRU5WUE46
PS4vb3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59IC0tZGV2IHR1biAtLXByb3RvIHVkcDYgLS1y
ZW1vdGUgIiRSRU02IiAtLXBvcnQgNTAxMCAtLXNlY3JldCAuLi9vcGVudnBuLmtleSAtLWlmY29u
ZmlnIDEuMS4xLjI1MyAxLjEuMS4xCmRpZmYgLS1naXQgYS9qam8tdGVzdHMvcnVuLXVkcDYtMS1j
eC5zaCBiL2pqby10ZXN0cy9ydW4tdWRwNi0xLWN4LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAuLmFiNjllYTgKLS0tIC9kZXYvbnVsbAorKysgYi9qam8tdGVzdHMvcnVuLXVk
cDYtMS1jeC5zaApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4v
b3BlbnZwbn0KKyR7R0RCfSAke09QRU5WUE59IC0tdmVyYiA1IC0tZGV2IHR1biAtLXByb3RvIHVk
cDYgLS1wb3J0IDUwMTAgLS1zZWNyZXQgL2hvbWUvampvL3NyYy9qdWFuam8vb3BlbnZwbi5rZXkg
LS1mbG9hdCAtLWlmY29uZmlnIDEuMS4xLjEgMS4xLjEuMjUzCmRpZmYgLS1naXQgYS9qam8tdGVz
dHMvcnVuLXVkcDYtMi1xZW11LWd1ZXN0LnNoIGIvampvLXRlc3RzL3J1bi11ZHA2LTItcWVtdS1n
dWVzdC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZTI4MGE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvampvLXRlc3RzL3J1bi11ZHA2LTItcWVtdS1ndWVzdC5zaApAQCAtMCww
ICsxLDggQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0KK2Nhc2UgIiQx
IiBpbgorLS1mcmVlYnNkKSBzaGlmdDtzZXQgLS0gICBlZDAgIiRAIjs7CistLW9wZW5ic2QpIHNo
aWZ0O3NldCAtLSAgIG5lMyAtLWRldiB0dW4wICIkQCI7OworZXNhYworREVWPSR7MTo/bWlzc2lu
ZyBkZXZuYW1lfTtzaGlmdAorJHtHREJ9ICR7T1BFTlZQTn0gLS1kZXYgdHVuIC0tcHJvdG8gdWRw
NiAtLXJlbW90ZSBmZTgwOjoyMDA6ZmY6ZmUwMDoxJSRERVYgLS1wb3J0IDUwMTAgLS1zZWNyZXQg
Li4vb3BlbnZwbi5rZXkgIiRAIiAtLWlmY29uZmlnIDEuMS4xLjI1MyAxLjEuMS4xCmRpZmYgLS1n
aXQgYS9qam8tdGVzdHMvcnVuLXVkcDYtMi1xZW11LWhvc3Quc2ggYi9qam8tdGVzdHMvcnVuLXVk
cDYtMi1xZW11LWhvc3Quc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTAw
ZjBkMwotLS0gL2Rldi9udWxsCisrKyBiL2pqby10ZXN0cy9ydW4tdWRwNi0yLXFlbXUtaG9zdC5z
aApAQCAtMCwwICsxLDQgQEAKKyMhL2Jpbi9zaCAteAorOiAke09QRU5WUE46PS4vb3BlbnZwbn0K
K0RFVj0kezE6P21pc3NpbmcgZGV2bmFtZX07c2hpZnQKKyR7R0RCfSAke09QRU5WUE59IC0tZGV2
IHR1biAtLXByb3RvIHVkcDYgLS1yZW1vdGUgZmU4MDo6NTA1NDpmZjpmZTEyOjM0NTYlJERFViAt
LXBvcnQgNTAxMCAtLXNlY3JldCAuLi9vcGVudnBuLmtleSAtLWlmY29uZmlnICAxLjEuMS4xIDEu
MS4xLjI1MyAiJEAiCmRpZmYgLS1naXQgYS9idWZmZXIuYyBiL2J1ZmZlci5jCmluZGV4IDY0MzA3
ZWYuLjA2NTA3NDUgMTAwNjQ0Ci0tLSBhL2J1ZmZlci5jCisrKyBiL2J1ZmZlci5jCkBAIC0yMTUs
NiArMjE1LDE5IEBAIH0KICAgcmV0dXJuIHJldDsKIH0KIAordm9pZCBidWZfcHV0cyhzdHJ1Y3Qg
YnVmZmVyICpidWYsIGNvbnN0IGNoYXIgKnN0cikKK3sKKyAgdWludDhfdCAqcHRyID0gQkVORCAo
YnVmKTsKKyAgaW50IGNhcCA9IGJ1Zl9mb3J3YXJkX2NhcGFjaXR5IChidWYpOworICBpZiAoY2Fw
ID4gMCkKKyAgICB7CisgICAgICBzdHJuY3B5bnQgKChjaGFyICopcHRyLHN0ciwgY2FwKTsKKyAg
ICAgICooYnVmLT5kYXRhICsgYnVmLT5jYXBhY2l0eSAtIDEpID0gMDsgLyogd2luZG93cyB2c25w
cmludGYgbmVlZHMgdGhpcyAqLworICAgICAgYnVmLT5sZW4gKz0gKGludCkgc3RybGVuICgoY2hh
ciAqKXB0cik7CisgICAgfQorfQorIAorCiAvKgogICogVGhpcyBpcyBuZWNlc3NhcnkgZHVlIHRv
IGNlcnRhaW4gYnVnZ3kgaW1wbGVtZW50YXRpb25zIG9mIHNucHJpbnRmLAogICogdGhhdCBkb24n
dCBndWFyYW50ZWUgbnVsbCB0ZXJtaW5hdGlvbiBmb3Igc2l6ZSA+IDAuCmRpZmYgLS1naXQgYS9j
b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggODg0M2EyYy4uOGNlYTIwNCAxMDA2NDQK
LS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTM1LDYgKzEzNSwxMiBA
QCAgICBbTVVMVElIT01FPSIkZW5hYmxldmFsIl0sCiAgICBbTVVMVElIT01FPSJ5ZXMiXQogKQog
CitBQ19BUkdfRU5BQkxFKGlwdjYsCisgICBbICAtLWRpc2FibGUtaXB2NiAgICAgICAgICBEaXNh
YmxlIFVEUC9JUHY2IHN1cHBvcnRdLAorICAgW1BGX0lORVQ2PSIkZW5hYmxldmFsIl0sCisgICBb
UEZfSU5FVDY9InllcyJdCispCisKIEFDX0FSR19FTkFCTEUocG9ydC1zaGFyZSwKICAgIFsgIC0t
ZGlzYWJsZS1wb3J0LXNoYXJlICAgIERpc2FibGUgVENQIHNlcnZlciBwb3J0LXNoYXJlIHN1cHBv
cnQgKC0tcG9ydC1zaGFyZSldLAogICAgW1BPUlRfU0hBUkU9IiRlbmFibGV2YWwiXSwKQEAgLTUy
NCw2ICs1MzAsMTYgQEAgTERGTEFHUz0iJExERkxBR1MgLVdsLC0tZmF0YWwtd2FybmluZ3MiCiBB
Q19DSEVDS19GVU5DKGVwb2xsX2NyZWF0ZSwgQUNfREVGSU5FKEhBVkVfRVBPTExfQ1JFQVRFLCAx
LCBbZXBvbGxfY3JlYXRlIGZ1bmN0aW9uIGlzIGRlZmluZWRdKSkKIExERkxBR1M9IiRPTERMREZM
QUdTIgogCitkbmwgaXB2NiBzdXBwb3J0CitpZiB0ZXN0ICIkUEZfSU5FVDYiID0gInllcyI7IHRo
ZW4KKyAgQUNfQ0hFQ0tJTkcoW2ZvciBzdHJ1Y3Qgc29ja2FkZHJfaW42IGZvciBJUHY2IHN1cHBv
cnRdKQorICBBQ19DSEVDS19UWVBFKAorICAgICAgW3N0cnVjdCBzb2NrYWRkcl9pbjZdLAorICAg
ICAgW0FDX0RFRklORShVU0VfUEZfSU5FVDYsIDEsIFtzdHJ1Y3Qgc29ja2FkZHJfaW42IGlzIG5l
ZWRlZCBmb3IgSVB2NiBwZWVyIHN1cHBvcnRdKV0sCisgICAgICBbXSwKKyAgICAgIFsjaW5jbHVk
ZSAic3lzaGVhZC5oIl0pCitmaQorCiBkbmwKIGRubCBjaGVjayBmb3IgdmFsZ3JpbmQgdG9vbAog
ZG5sCmRpZmYgLS1naXQgYS9pbml0LmMgYi9pbml0LmMKaW5kZXggMjQ0ZjAzYy4uMGQ5MjllNCAx
MDA2NDQKLS0tIGEvaW5pdC5jCisrKyBiL2luaXQuYwpAQCAtODg0LDcgKzg4NCw3IEBAICNpZmRl
ZiBFTkFCTEVfTUFOQUdFTUVOVAogICAgICAgY29uc3QgY2hhciAqZGV0YWlsID0gIlNVQ0NFU1Mi
OwogICAgICAgaWYgKGMtPmMxLnR1bnRhcCkKIAl0dW5fbG9jYWwgPSBjLT5jMS50dW50YXAtPmxv
Y2FsOwotICAgICAgdHVuX3JlbW90ZSA9IGh0b25sIChjLT5jMS5saW5rX3NvY2tldF9hZGRyLmFj
dHVhbC5kZXN0LnNhLnNpbl9hZGRyLnNfYWRkcik7CisgICAgICB0dW5fcmVtb3RlID0gaHRvbmwg
KGMtPmMxLmxpbmtfc29ja2V0X2FkZHIuYWN0dWFsLmRlc3QuYWRkci5pbjQuc2luX2FkZHIuc19h
ZGRyKTsKICAgICAgIGlmIChmbGFncyAmIElTQ19FUlJPUlMpCiAJZGV0YWlsID0gIkVSUk9SIjsK
ICAgICAgIG1hbmFnZW1lbnRfc2V0X3N0YXRlIChtYW5hZ2VtZW50LApAQCAtMTI4OSw3ICsxMjg5
LDcgQEAgZG9fZGVmZXJyZWRfb3B0aW9ucyAoc3RydWN0IGNvbnRleHQgKmMsIAogI2lmZGVmIEVO
QUJMRV9PQ0MKICAgaWYgKGZvdW5kICYgT1BUX1BfRVhQTElDSVRfTk9USUZZKQogICAgIHsKLSAg
ICAgIGlmIChjLT5vcHRpb25zLmNlLnByb3RvICE9IFBST1RPX1VEUHY0ICYmIGMtPm9wdGlvbnMu
ZXhwbGljaXRfZXhpdF9ub3RpZmljYXRpb24pCisgICAgICBpZiAoIXByb3RvX2lzX3VkcChjLT5v
cHRpb25zLmNlLnByb3RvKSAmJiBjLT5vcHRpb25zLmV4cGxpY2l0X2V4aXRfbm90aWZpY2F0aW9u
KQogCXsKIAkgIG1zZyAoRF9QVVNILCAiT1BUSU9OUyBJTVBPUlQ6IC0tZXhwbGljaXQtZXhpdC1u
b3RpZnkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tcHJvdG8gdWRwIik7CiAJICBjLT5vcHRpb25z
LmV4cGxpY2l0X2V4aXRfbm90aWZpY2F0aW9uID0gMDsKQEAgLTEzODQsMTIgKzEzODQsMjEgQEAg
I2VuZGlmCiAgIHN3aXRjaCAoYy0+b3B0aW9ucy5jZS5wcm90bykKICAgICB7CiAgICAgY2FzZSBQ
Uk9UT19VRFB2NDoKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIFBST1RPX1VEUHY2Ogor
I2VuZGlmCiAgICAgICBpZiAocHJveHkpCiAJc2VjID0gYy0+b3B0aW9ucy5jZS5jb25uZWN0X3Jl
dHJ5X3NlY29uZHM7CiAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNl
IFBST1RPX1RDUHY2X1NFUlZFUjoKKyNlbmRpZgogICAgIGNhc2UgUFJPVE9fVENQdjRfU0VSVkVS
OgogICAgICAgc2VjID0gMTsKICAgICAgIGJyZWFrOworI2lmZGVmIFVTRV9QRl9JTkVUNgorICAg
IGNhc2UgUFJPVE9fVENQdjZfQ0xJRU5UOgorI2VuZGlmCiAgICAgY2FzZSBQUk9UT19UQ1B2NF9D
TElFTlQ6CiAgICAgICBzZWMgPSBjLT5vcHRpb25zLmNlLmNvbm5lY3RfcmV0cnlfc2Vjb25kczsK
ICAgICAgIGJyZWFrOwpAQCAtMjUwNCw3ICsyNTEzLDcgQEAgZG9fc2V0dXBfZmFzdF9pbyAoc3Ry
dWN0IGNvbnRleHQgKmMpCiAjaWZkZWYgV0lOMzIKICAgICAgIG1zZyAoTV9JTkZPLCAiTk9URTog
LS1mYXN0LWlvIGlzIGRpc2FibGVkIHNpbmNlIHdlIGFyZSBydW5uaW5nIG9uIFdpbmRvd3MiKTsK
ICNlbHNlCi0gICAgICBpZiAoYy0+b3B0aW9ucy5jZS5wcm90byAhPSBQUk9UT19VRFB2NCkKKyAg
ICAgIGlmICghcHJvdG9faXNfdWRwKGMtPm9wdGlvbnMuY2UucHJvdG8pKQogCW1zZyAoTV9JTkZP
LCAiTk9URTogLS1mYXN0LWlvIGlzIGRpc2FibGVkIHNpbmNlIHdlIGFyZSBub3QgdXNpbmcgVURQ
Iik7CiAgICAgICBlbHNlCiAJewpAQCAtMjc2NCw3ICsyNzczLDExIEBAIGluaXRfaW5zdGFuY2Ug
KHN0cnVjdCBjb250ZXh0ICpjLCBjb25zdCAKICAgLyogbGlua19zb2NrZXRfbW9kZSBhbGxvd3Mg
Q01fQ0hJTERfVENQCiAgICAgIGluc3RhbmNlcyB0byBpbmhlcml0IGFjY2VwdGFibGUgZmRzCiAg
ICAgIGZyb20gYSB0b3AtbGV2ZWwgcGFyZW50ICovCisjaWZkZWYgVVNFX1BGX0lORVQ2CisgIGlm
IChjLT5vcHRpb25zLmNlLnByb3RvID09IFBST1RPX1RDUHY0X1NFUlZFUiB8fCBjLT5vcHRpb25z
LmNlLnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUikKKyNlbHNlCiAgIGlmIChjLT5vcHRpb25z
LmNlLnByb3RvID09IFBST1RPX1RDUHY0X1NFUlZFUikKKyNlbmRpZgogICAgIHsKICAgICAgIGlm
IChjLT5tb2RlID09IENNX1RPUCkKIAlsaW5rX3NvY2tldF9tb2RlID0gTFNfTU9ERV9UQ1BfTElT
VEVOOwpAQCAtMzA0NywxNyArMzA2MCw3IEBAIGluaGVyaXRfY29udGV4dF9jaGlsZCAoc3RydWN0
IGNvbnRleHQgKmQKIHsKICAgQ0xFQVIgKCpkZXN0KTsKIAotICBzd2l0Y2ggKHNyYy0+b3B0aW9u
cy5jZS5wcm90bykKLSAgICB7Ci0gICAgY2FzZSBQUk9UT19VRFB2NDoKLSAgICAgIGRlc3QtPm1v
ZGUgPSBDTV9DSElMRF9VRFA7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1RPX1RDUHY0X1NF
UlZFUjoKLSAgICAgIGRlc3QtPm1vZGUgPSBDTV9DSElMRF9UQ1A7Ci0gICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OgotICAgICAgQVNTRVJUICgwKTsKLSAgICB9CisgIGRlc3QtPm1vZGUgPSBwcm90
b19pc19kZ3JhbShzcmMtPm9wdGlvbnMuY2UucHJvdG8pPyBDTV9DSElMRF9VRFAgOiBDTV9DSElM
RF9UQ1A7CiAKICAgZGVzdC0+Z2MgPSBnY19uZXcgKCk7CiAKQEAgLTMxNjMsNyArMzE2Niw3IEBA
CiAgIGRlc3QtPmMyLmVzX293bmVkID0gZmFsc2U7CgogICBkZXN0LT5jMi5ldmVudF9zZXQgPSBO
VUxMOwotICBpZiAoc3JjLT5vcHRpb25zLmNlLnByb3RvID09IFBST1RPX1VEUHY0KQorICBpZiAo
cHJvdG9faXNfZGdyYW0oc3JjLT5vcHRpb25zLmNlLnByb3RvKSkKICAgICBkb19ldmVudF9zZXRf
aW5pdCAoZGVzdCwgZmFsc2UpOwogfQoKZGlmZiAtLWdpdCBhL21hbmFnZS5jIGIvbWFuYWdlLmMK
aW5kZXggOTkzYWZhMi4uMjYxNTEzNyAxMDA2NDQKLS0tIGEvbWFuYWdlLmMKKysrIGIvbWFuYWdl
LmMKQEAgLTE2NjksOSArMTY2OSw5IEBAIG1hbl9zZXR0aW5nc19pbml0IChzdHJ1Y3QgbWFuX3Nl
dHRpbmdzICoKICAgICAgIC8qCiAgICAgICAgKiBJbml0aWFsaXplIHNvY2tldCBhZGRyZXNzCiAg
ICAgICAgKi8KLSAgICAgIG1zLT5sb2NhbC5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgICAg
IG1zLT5sb2NhbC5zYS5zaW5fYWRkci5zX2FkZHIgPSAwOwotICAgICAgbXMtPmxvY2FsLnNhLnNp
bl9wb3J0ID0gaHRvbnMgKHBvcnQpOworICAgICAgbXMtPmxvY2FsLmFkZHIuaW40LnNpbl9mYW1p
bHkgPSBBRl9JTkVUOworICAgICAgbXMtPmxvY2FsLmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciA9
IDA7CisgICAgICBtcy0+bG9jYWwuYWRkci5pbjQuc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CiAK
ICAgICAgIC8qCiAgICAgICAgKiBSdW4gbWFuYWdlbWVudCBvdmVyIHR1bm5lbCwgb3IKQEAgLTE2
ODMsNyArMTY4Myw3IEBAIG1hbl9zZXR0aW5nc19pbml0IChzdHJ1Y3QgbWFuX3NldHRpbmdzICoK
IAl9CiAgICAgICBlbHNlCiAJewotCSAgbXMtPmxvY2FsLnNhLnNpbl9hZGRyLnNfYWRkciA9IGdl
dGFkZHIKKwkgIG1zLT5sb2NhbC5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBnZXRhZGRyCiAJ
ICAgIChHRVRBRERSX1JFU09MVkV8R0VUQUREUl9XQVJOX09OX1NJR05BTHxHRVRBRERSX0ZBVEFM
LCBhZGRyLCAwLCBOVUxMLCBOVUxMKTsKIAl9CiAgICAgICAKQEAgLTIwMjIsNyArMjAyMiw3IEBA
IG1hbmFnZW1lbnRfcG9zdF90dW5uZWxfb3BlbiAoc3RydWN0IG1hbmEKICAgICAgICYmIG1hbi0+
Y29ubmVjdGlvbi5zdGF0ZSA9PSBNU19JTklUSUFMKQogICAgIHsKICAgICAgIC8qIGxpc3RlbiBv
biBvdXIgbG9jYWwgVFVOL1RBUCBJUCBhZGRyZXNzICovCi0gICAgICBtYW4tPnNldHRpbmdzLmxv
Y2FsLnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sICh0dW5fbG9jYWxfaXApOworICAgICAgbWFu
LT5zZXR0aW5ncy5sb2NhbC5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAodHVuX2xv
Y2FsX2lwKTsKICAgICAgIG1hbl9jb25uZWN0aW9uX2luaXQgKG1hbik7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9tcm91dGUuYyBiL21yb3V0ZS5jCmluZGV4IGE3ZDEyMTUuLjhkODU1MTggMTAwNjQ0
Ci0tLSBhL21yb3V0ZS5jCisrKyBiL21yb3V0ZS5jCkBAIC0yMjYsMjUgKzIyNiw0NyBAQCBib29s
IG1yb3V0ZV9leHRyYWN0X29wZW52cG5fc29ja2FkZHIgKHN0CiAJCQkJICAgICAgY29uc3Qgc3Ry
dWN0IG9wZW52cG5fc29ja2FkZHIgKm9zYWRkciwKIAkJCQkgICAgICBib29sIHVzZV9wb3J0KQog
ewotICBpZiAob3NhZGRyLT5zYS5zaW5fZmFtaWx5ID09IEFGX0lORVQpCisgIHN3aXRjaCAob3Nh
ZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgCisgIHsKKyAgICBjYXNlIEFGX0lORVQ6CiAgICAgewog
ICAgICAgaWYgKHVzZV9wb3J0KQogCXsKIAkgIGFkZHItPnR5cGUgPSBNUl9BRERSX0lQVjQgfCBN
Ul9XSVRIX1BPUlQ7CiAJICBhZGRyLT5uZXRiaXRzID0gMDsKIAkgIGFkZHItPmxlbiA9IDY7Ci0J
ICBtZW1jcHkgKGFkZHItPmFkZHIsICZvc2FkZHItPnNhLnNpbl9hZGRyLnNfYWRkciwgNCk7Ci0J
ICBtZW1jcHkgKGFkZHItPmFkZHIgKyA0LCAmb3NhZGRyLT5zYS5zaW5fcG9ydCwgMik7CisJICBt
ZW1jcHkgKGFkZHItPmFkZHIsICZvc2FkZHItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciwgNCk7
CisJICBtZW1jcHkgKGFkZHItPmFkZHIgKyA0LCAmb3NhZGRyLT5hZGRyLmluNC5zaW5fcG9ydCwg
Mik7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIGFkZHItPnR5cGUgPSBNUl9BRERSX0lQVjQ7CiAJ
ICBhZGRyLT5uZXRiaXRzID0gMDsKIAkgIGFkZHItPmxlbiA9IDQ7Ci0JICBtZW1jcHkgKGFkZHIt
PmFkZHIsICZvc2FkZHItPnNhLnNpbl9hZGRyLnNfYWRkciwgNCk7CisJICBtZW1jcHkgKGFkZHIt
PmFkZHIsICZvc2FkZHItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkciwgNCk7CiAJfQogICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgIGNhc2UgQUZfSU5F
VDY6CisgICAgICBpZiAodXNlX3BvcnQpCisJeworCSAgYWRkci0+dHlwZSA9IE1SX0FERFJfSVBW
NiB8IE1SX1dJVEhfUE9SVDsKKwkgIGFkZHItPm5ldGJpdHMgPSAwOworCSAgYWRkci0+bGVuID0g
MTg7CisJICBtZW1jcHkgKGFkZHItPmFkZHIsICZvc2FkZHItPmFkZHIuaW42LnNpbjZfYWRkciwg
MTYpOworCSAgbWVtY3B5IChhZGRyLT5hZGRyICsgMTYsICZvc2FkZHItPmFkZHIuaW42LnNpbjZf
cG9ydCwgMik7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGFkZHItPnR5cGUgPSBNUl9BRERSX0lQ
VjY7CisJICBhZGRyLT5uZXRiaXRzID0gMDsKKwkgIGFkZHItPmxlbiA9IDE2OworCSAgbWVtY3B5
IChhZGRyLT5hZGRyLCAmb3NhZGRyLT5hZGRyLmluNi5zaW42X2FkZHIsIDE2KTsKKwl9CisgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICB9CiAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMzM3
LDcgKzM1OSwzNyBAQCBtcm91dGVfYWRkcl9wcmludCAoY29uc3Qgc3RydWN0IG1yb3V0ZV9hCiAJ
ICB9CiAJICBicmVhazsKIAljYXNlIE1SX0FERFJfSVBWNjoKKyNpZmRlZiBVU0VfUEZfSU5FVDYK
KyAgICAgICAgICB7CisJICAgIHN0cnVjdCBidWZmZXIgYnVmOworCSAgICBzdHJ1Y3Qgc29ja2Fk
ZHJfaW42IHNpbjY7CisJICAgIGludCBwb3J0OworCSAgICBjaGFyIGJ1ZjZbSU5FVDZfQUREUlNU
UkxFTl0gPSAiIjsKKwkgICAgbWVtc2V0KCZzaW42LCAwLCBzaXplb2Ygc2luNik7CisJICAgIHNp
bjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKwkgICAgYnVmX3NldF9yZWFkICgmYnVmLCBtYWRk
ci5hZGRyLCBtYWRkci5sZW4pOworICAgICAgICAgICAgaWYgKGJ1Zl9yZWFkKCZidWYsICZzaW42
LnNpbjZfYWRkciwgc2l6ZW9mIChzaW42LnNpbjZfYWRkcikpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICBpZiAoZ2V0bmFtZWluZm8oKHN0cnVjdCBzb2NrYWRkciAqKSZzaW42LCBzaXpl
b2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWY2LCBzaXplb2YgKGJ1ZjYpLCBOVUxMLCAwLCBOSV9OVU1FUklDSE9TVCkgIT0g
MCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBidWZfcHJpbnRmICgmb3V0
LCAiTVJfQUREUl9JUFY2IGdldG5hbWVpbmZvKCkgZXJyIik7CisgICAgICAgICAgICAgICAgICBi
cmVhazsKKwkJfQorICAgICAgICAgICAgICBidWZfcHV0cyAoJm91dCwgYnVmNik7CisJICAgICAg
aWYgKG1hZGRyLnR5cGUgJiBNUl9XSVRIX05FVEJJVFMpCisJICAgICAgICBidWZfcHJpbnRmICgm
b3V0LCAiLyVkIiwgbWFkZHIubmV0Yml0cyk7CisgICAgICAgICAgICAgIGlmIChtYWRkci50eXBl
ICYgTVJfV0lUSF9QT1JUKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHBv
cnQgPSBidWZfcmVhZF91MTYgKCZidWYpOworICAgICAgICAgICAgICAgICAgaWYgKHBvcnQgPj0g
MCkKKyAgICAgICAgICAgICAgICAgICAgYnVmX3ByaW50ZiAoJm91dCwgIjolZCIsIHBvcnQpOwor
ICAgICAgICAgICAgICAgIH0KKwkgICAgfQorICAgICAgICAgIH0KKyNlbHNlIC8qIG9sZCBwcmUg
SVBWNiAxLWxpbmUgY29kZTogKi8KIAkgIGJ1Zl9wcmludGYgKCZvdXQsICJJUFY2Iik7IAorI2Vu
ZGlmCiAJICBicmVhazsKIAlkZWZhdWx0OgogCSAgYnVmX3ByaW50ZiAoJm91dCwgIlVOS05PV04i
KTsgCmRpZmYgLS1naXQgYS9tdGNwLmMgYi9tdGNwLmMKaW5kZXggNmVjOTk3NC4uNTAxMTY4OCAx
MDA2NDQKLS0tIGEvbXRjcC5jCisrKyBiL210Y3AuYwpAQCAtMTUzLDYgKzE1Myw3IEBAIG11bHRp
X3RjcF9pbnN0YW5jZV9zcGVjaWZpY19pbml0IChzdHJ1Y3QKICAgQVNTRVJUIChtaS0+Y29udGV4
dC5jMi5saW5rX3NvY2tldCk7CiAgIEFTU0VSVCAobWktPmNvbnRleHQuYzIubGlua19zb2NrZXQt
PmluZm8ubHNhKTsKICAgQVNTRVJUIChtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldC0+bW9kZSA9
PSBMU19NT0RFX1RDUF9BQ0NFUFRfRlJPTSk7CisgIEFTU0VSVCAobWktPmNvbnRleHQuYzIubGlu
a19zb2NrZXQtPmluZm8ubHNhLT5hY3R1YWwuZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9J
TkVUKTsKICAgaWYgKCFtcm91dGVfZXh0cmFjdF9vcGVudnBuX3NvY2thZGRyICgmbWktPnJlYWws
ICZtaS0+Y29udGV4dC5jMi5saW5rX3NvY2tldC0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LCB0cnVl
KSkKICAgICB7CiAgICAgICBtc2cgKERfTVVMVElfRVJST1JTLCAiTVVMVEkgVENQOiBUQ1AgY2xp
ZW50IGFkZHJlc3MgaXMgdW5kZWZpbmVkIik7CmRpZmYgLS1naXQgYS9tdWx0aS5jIGIvbXVsdGku
YwppbmRleCBlZTc0YTQ2Li5iZmQ3OWIzIDEwMDY0NAotLS0gYS9tdWx0aS5jCisrKyBiL211bHRp
LmMKQEAgLTEwNTMsOCArMTA1Myw4IEBAIG11bHRpX2xlYXJuX2luX2FkZHJfdCAoc3RydWN0IG11
bHRpX2NvbnQKICAgc3RydWN0IG1yb3V0ZV9hZGRyIGFkZHI7CiAKICAgQ0xFQVIgKHJlbW90ZV9z
aSk7Ci0gIHJlbW90ZV9zaS5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgcmVtb3RlX3NpLnNh
LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhKTsKKyAgcmVtb3RlX3NpLmFkZHIuaW40LnNpbl9m
YW1pbHkgPSBBRl9JTkVUOworICByZW1vdGVfc2kuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0g
aHRvbmwgKGEpOwogICBBU1NFUlQgKG1yb3V0ZV9leHRyYWN0X29wZW52cG5fc29ja2FkZHIgKCZh
ZGRyLCAmcmVtb3RlX3NpLCBmYWxzZSkpOwogCiAgIGlmIChuZXRiaXRzID49IDApCkBAIC0yNDY0
LDkgKzI0NjQsOSBAQCBtYW5hZ2VtZW50X2NhbGxiYWNrX2tpbGxfYnlfYWRkciAodm9pZCAqCiAg
IGludCBjb3VudCA9IDA7CiAKICAgQ0xFQVIgKHNhZGRyKTsKLSAgc2FkZHIuc2Euc2luX2ZhbWls
eSA9IEFGX0lORVQ7Ci0gIHNhZGRyLnNhLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRyKTsK
LSAgc2FkZHIuc2Euc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CisgIHNhZGRyLmFkZHIuaW40LnNp
bl9mYW1pbHkgPSBBRl9JTkVUOworICBzYWRkci5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBo
dG9ubCAoYWRkcik7CisgIHNhZGRyLmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwog
ICBpZiAobXJvdXRlX2V4dHJhY3Rfb3BlbnZwbl9zb2NrYWRkciAoJm1hZGRyLCAmc2FkZHIsIHRy
dWUpKQogICAgIHsKICAgICAgIGhhc2hfaXRlcmF0b3JfaW5pdCAobS0+aXRlciwgJmhpLCB0cnVl
KTsKQEAgLTI2MTQsMTggKzI2MTQsMTMgQEAgdHVubmVsX3NlcnZlciAoc3RydWN0IGNvbnRleHQg
KnRvcCkKIHsKICAgQVNTRVJUICh0b3AtPm9wdGlvbnMubW9kZSA9PSBNT0RFX1NFUlZFUik7CiAK
LSAgc3dpdGNoICh0b3AtPm9wdGlvbnMuY2UucHJvdG8pIHsKLSAgY2FzZSBQUk9UT19VRFB2NDoK
LSAgICB0dW5uZWxfc2VydmVyX3VkcCAodG9wKTsKLSAgICBicmVhazsKLSAgY2FzZSBQUk9UT19U
Q1B2NF9TRVJWRVI6Ci0gICAgdHVubmVsX3NlcnZlcl90Y3AgKHRvcCk7Ci0gICAgYnJlYWs7Ci0g
IGRlZmF1bHQ6Ci0gICAgQVNTRVJUICgwKTsKLSAgfQorICBpZiAocHJvdG9faXNfZGdyYW0odG9w
LT5vcHRpb25zLmNlLnByb3RvKSkKKyAgICB0dW5uZWxfc2VydmVyX3VkcCh0b3ApOworICBlbHNl
CisgICAgdHVubmVsX3NlcnZlcl90Y3AodG9wKTsKIH0KIAorCiAjZWxzZQogc3RhdGljIHZvaWQg
ZHVtbXkodm9pZCkge30KICNlbmRpZiAvKiBQMk1QX1NFUlZFUiAqLwpkaWZmIC0tZ2l0IGEvb2Nj
LmMgYi9vY2MuYwppbmRleCA2YjEzNmRjLi4zZWM3Nzg0IDEwMDY0NAotLS0gYS9vY2MuYworKysg
Yi9vY2MuYwpAQCAtMzY5LDcgKzM2OSw3IEBAIHByb2Nlc3NfcmVjZWl2ZWRfb2NjX21zZyAoc3Ry
dWN0IGNvbnRleHQKIAkgICAgICAgYy0+YzIubWF4X3NlbmRfc2l6ZV9yZW1vdGUsCiAJICAgICAg
IGMtPmMyLm1heF9yZWN2X3NpemVfbG9jYWwpOwogCSAgaWYgKCFjLT5vcHRpb25zLmZyYWdtZW50
Ci0JICAgICAgJiYgYy0+b3B0aW9ucy5jZS5wcm90byA9PSBQUk9UT19VRFB2NAorCSAgICAgICYm
IChwcm90b19pc19kZ3JhbShjLT5vcHRpb25zLmNlLnByb3RvKSkKIAkgICAgICAmJiBjLT5jMi5t
YXhfc2VuZF9zaXplX2xvY2FsID4gVFVOX01UVV9NSU4KIAkgICAgICAmJiAoYy0+YzIubWF4X3Jl
Y3Zfc2l6ZV9yZW1vdGUgPCBjLT5jMi5tYXhfc2VuZF9zaXplX2xvY2FsCiAJCSAgfHwgYy0+YzIu
bWF4X3JlY3Zfc2l6ZV9sb2NhbCA8IGMtPmMyLm1heF9zZW5kX3NpemVfcmVtb3RlKSkKZGlmZiAt
LWdpdCBhL3BzLmMgYi9wcy5jCmluZGV4IDQ5YjFhMmMuLjQ3MmM2MjYgMTAwNjQ0Ci0tLSBhL3Bz
LmMKKysrIGIvcHMuYwpAQCAtMzMyLDkgKzMzMiw5IEBAIHNvY2tfYWRkcl9zZXQgKHN0cnVjdCBv
cGVudnBuX3NvY2thZGRyICoKIAkgICAgICAgY29uc3QgaW50IHBvcnQpCiB7CiAgIENMRUFSICgq
b3NhZGRyKTsKLSAgb3NhZGRyLT5zYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLSAgb3NhZGRyLT5z
YS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAoYWRkcik7Ci0gIG9zYWRkci0+c2Euc2luX3BvcnQg
PSBodG9ucyAocG9ydCk7CisgIG9zYWRkci0+YWRkci5pbjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7
CisgIG9zYWRkci0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKGFkZHIpOworICBv
c2FkZHItPmFkZHIuaW40LnNpbl9wb3J0ID0gaHRvbnMgKHBvcnQpOwogfQogCiBzdGF0aWMgaW5s
aW5lIHZvaWQKZGlmZiAtLWdpdCBhL3NvY2tldC5oIGIvc29ja2V0LmgKaW5kZXggMjhiZjQxZi4u
NDM1Y2YzOCAxMDA2NDQKLS0tIGEvc29ja2V0LmgKKysrIGIvc29ja2V0LmgKQEAgLTcwLDcgKzcw
LDEzIEBAICNkZWZpbmUgbnRvaHBzKHgpIG50b2hzKHgpCiBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRk
cgogewogICAvKmludCBkdW1teTsqLyAvKiBhZGQgb2Zmc2V0IHRvIGZvcmNlIGEgYnVnIGlmIHNh
IG5vdCBleHBsaWNpdGx5IGRlcmVmZXJlbmNlZCAqLwotICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7
CisgIHVuaW9uIHsKKyAgc3RydWN0IHNvY2thZGRyIHNhOworICBzdHJ1Y3Qgc29ja2FkZHJfaW4g
aW40OworI2lmZGVmIFVTRV9QRl9JTkVUNgorICBzdHJ1Y3Qgc29ja2FkZHJfaW42IGluNjsKKyNl
bmRpZgorICB9IGFkZHI7CiB9OwogCiAvKiBhY3R1YWwgYWRkcmVzcyBvZiByZW1vdGUsIGJhc2Vk
IG9uIHNvdXJjZSBhZGRyZXNzIG9mIHJlY2VpdmVkIHBhY2tldHMgKi8KQEAgLTc5LDcgKzg1LDEy
IEBAIHsKICAgLyppbnQgZHVtbXk7Ki8gLyogYWRkIG9mZnNldCB0byBmb3JjZSBhIGJ1ZyBpZiBk
ZXN0IG5vdCBleHBsaWNpdGx5IGRlcmVmZXJlbmNlZCAqLwogICBzdHJ1Y3Qgb3BlbnZwbl9zb2Nr
YWRkciBkZXN0OwogI2lmIEVOQUJMRV9JUF9QS1RJTkZPCi0gIHN0cnVjdCBpbl9wa3RpbmZvIHBp
OworICB1bmlvbiB7CisgICAgc3RydWN0IGluX3BrdGluZm8gaW40OworI2lmZGVmIFVTRV9QRl9J
TkVUNgorICAgIHN0cnVjdCBpbjZfcGt0aW5mbyBpbjY7CisjZW5kaWYKKyAgfSBwaTsKICNlbmRp
ZgogfTsKIApAQCAtNDAzLDYgKzQxNCwxNCBAQCBzb2NrZXRfZGVzY3JpcHRvcl90IGNyZWF0ZV9z
b2NrZXRfdGNwICh2CiBzb2NrZXRfZGVzY3JpcHRvcl90IHNvY2tldF9kb19hY2NlcHQgKHNvY2tl
dF9kZXNjcmlwdG9yX3Qgc2QsCiAJCQkJICAgICAgc3RydWN0IGxpbmtfc29ja2V0X2FjdHVhbCAq
YWN0LAogCQkJCSAgICAgIGNvbnN0IGJvb2wgbm93YWl0KTsKKy8qCisgKiBwcm90byByZWxhdGVk
CisgKi8KK2Jvb2wgcHJvdG9faXNfbmV0KGludCBwcm90byk7Citib29sIHByb3RvX2lzX2RncmFt
KGludCBwcm90byk7Citib29sIHByb3RvX2lzX3VkcChpbnQgcHJvdG8pOworYm9vbCBwcm90b19p
c190Y3AoaW50IHByb3RvKTsKKwogCiAvKgogICogRE5TIHJlc29sdXRpb24KQEAgLTQyOCwyMyAr
NDQ3LDQ5IEBAIGluX2FkZHJfdCBnZXRhZGRyICh1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgKiBUcmFu
c3BvcnQgcHJvdG9jb2wgbmFtaW5nIGFuZCBvdGhlciBkZXRhaWxzLgogICovCiAKLSNkZWZpbmUg
UFJPVE9fVURQdjQgICAgICAgIDAKLSNkZWZpbmUgUFJPVE9fVENQdjRfU0VSVkVSIDEKLSNkZWZp
bmUgUFJPVE9fVENQdjRfQ0xJRU5UIDIKLSNkZWZpbmUgUFJPVE9fVENQdjQgICAgICAgIDMKLSNk
ZWZpbmUgUFJPVE9fTiAgICAgICAgICAgIDQKKyNpZiAwIC8qIFBSRSBVRFB2Ni9UQ1B2NiBjb2Rl
ICovCisjZGVmaW5lIFBST1RPX05PTkUgICAgICAgICAwIC8qIGNhdGNoIGZvciB1bmluaXRpYWxp
emVkICovCisjZGVmaW5lIFBST1RPX1VEUHY0ICAgICAgICAxCisjZGVmaW5lIFBST1RPX1RDUHY0
X1NFUlZFUiAyCisjZGVmaW5lIFBST1RPX1RDUHY0X0NMSUVOVCAzCisjZGVmaW5lIFBST1RPX1RD
UHY0ICAgICAgICA0CisjZGVmaW5lIFBST1RPX1VEUHY2ICAgICAgICA1CisjZGVmaW5lIFBST1RP
X1RDUHY2X1NFUlZFUiA2CisjZGVmaW5lIFBST1RPX1RDUHY2X0NMSUVOVCA3CisjZGVmaW5lIFBS
T1RPX1RDUHY2ICAgICAgICA4CisjZGVmaW5lIFBST1RPX04gICAgICAgICAgICA5CisjZW5kaWYg
LyogaWYgMCAqLworCisvKiAKKyAqIFVzZSBlbnVtJ3MgaW5zdGVhZCBvZiAjZGVmaW5lIHRvIGFs
bG93IGZvciBlYXNpZXIKKyAqIG9wdGlvbmFsIHByb3RvIHN1cHBvcnQKKyAqLworZW51bSBwcm90
b19udW0geworCVBST1RPX05PTkUsIC8qIGNhdGNoIGZvciB1bmluaXRpYWxpemVkICovCisJUFJP
VE9fVURQdjQsCisJUFJPVE9fVENQdjRfU0VSVkVSLAorCVBST1RPX1RDUHY0X0NMSUVOVCwKKwlQ
Uk9UT19UQ1B2NCwKKwlQUk9UT19VRFB2NiwKKwlQUk9UT19UQ1B2Nl9TRVJWRVIsCisJUFJPVE9f
VENQdjZfQ0xJRU5ULAorCVBST1RPX1RDUHY2LAorCVBST1RPX04KK307CiAKIGludCBhc2NpaTJw
cm90byAoY29uc3QgY2hhciogcHJvdG9fbmFtZSk7CiBjb25zdCBjaGFyICpwcm90bzJhc2NpaSAo
aW50IHByb3RvLCBib29sIGRpc3BsYXlfZm9ybSk7CiBjb25zdCBjaGFyICpwcm90bzJhc2NpaV9h
bGwgKHN0cnVjdCBnY19hcmVuYSAqZ2MpOwogaW50IHByb3RvX3JlbW90ZSAoaW50IHByb3RvLCBi
b29sIHJlbW90ZSk7Citjb25zdCBjaGFyICphZGRyX2ZhbWlseV9uYW1lKGludCBhZik7CiAKIC8q
CiAgKiBPdmVyaGVhZCBhZGRlZCB0byBwYWNrZXRzIGJ5IHZhcmlvdXMgcHJvdG9jb2xzLgogICov
CiAjZGVmaW5lIElQdjRfVURQX0hFQURFUl9TSVpFICAgICAgICAgICAgICAyOAogI2RlZmluZSBJ
UHY0X1RDUF9IRUFERVJfU0laRSAgICAgICAgICAgICAgNDAKLSNkZWZpbmUgSVB2Nl9VRFBfSEVB
REVSX1NJWkUgICAgICAgICAgICAgIDQwCisjZGVmaW5lIElQdjZfVURQX0hFQURFUl9TSVpFICAg
ICAgICAgICAgICA0OAorI2RlZmluZSBJUHY2X1RDUF9IRUFERVJfU0laRSAgICAgICAgICAgICAg
NjAKIAogZXh0ZXJuIGNvbnN0IGludCBwcm90b19vdmVyaGVhZFtdOwogCkBAIC00NjgsNyArNTEz
LDcgQEAgbGVnYWxfaXB2NF9wb3J0IChpbnQgcG9ydCkKIHN0YXRpYyBpbmxpbmUgYm9vbAogbGlu
a19zb2NrZXRfcHJvdG9fY29ubmVjdGlvbl9vcmllbnRlZCAoaW50IHByb3RvKQogewotICByZXR1
cm4gcHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IHByb3RvID09IFBST1RPX1RDUHY0X0NM
SUVOVDsKKyAgcmV0dXJuICFwcm90b19pc19kZ3JhbShwcm90byk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbApAQCAtNDgzLDcgKzUyOCwzMCBAQCBsaW5rX3NvY2tldF9jb25uZWN0aW9uX29yaWVu
dGVkIChjb25zdCBzCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFkZHJfZGVmaW5lZCAoY29uc3Qgc3Ry
dWN0IG9wZW52cG5fc29ja2FkZHIgKmFkZHIpCiB7Ci0gIHJldHVybiBhZGRyLT5zYS5zaW5fYWRk
ci5zX2FkZHIgIT0gMDsKKyAgaWYgKCFhZGRyKSByZXR1cm4gMDsKKyAgc3dpdGNoIChhZGRyLT5h
ZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5FVDogcmV0dXJuIGFkZHItPmFkZHIu
aW40LnNpbl9hZGRyLnNfYWRkciAhPSAwOworI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgIGNhc2Ug
QUZfSU5FVDY6IHJldHVybiAhSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoJmFkZHItPmFkZHIuaW42
LnNpbjZfYWRkcik7CisjZW5kaWYKKyAgICBkZWZhdWx0OiByZXR1cm4gMDsKKyAgfQorfQorc3Rh
dGljIGlubGluZSBib29sCithZGRyX2RlZmluZWRfaXBpIChjb25zdCBzdHJ1Y3QgbGlua19zb2Nr
ZXRfYWN0dWFsICpsc2EpCit7CisjaWYgRU5BQkxFX0lQX1BLVElORk8KKyAgaWYgKCFsc2EpIHJl
dHVybiAwOworICBzd2l0Y2ggKGxzYS0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgIGNh
c2UgQUZfSU5FVDogcmV0dXJuIGxzYS0+cGkuaW40LmlwaV9zcGVjX2RzdC5zX2FkZHIgIT0gMDsK
KyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OiByZXR1cm4gIUlONl9JU19B
RERSX1VOU1BFQ0lGSUVEKCZsc2EtPnBpLmluNi5pcGk2X2FkZHIpOworI2VuZGlmCisgICAgZGVm
YXVsdDogcmV0dXJuIDA7CisgIH0KKyNlbHNlCisgIEFTU0VSVCgwKTsKKyNlbmRpZgogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wKQEAgLTQ5NSwyMCArNTYzLDUwIEBAIGxpbmtfc29ja2V0X2FjdHVh
bF9kZWZpbmVkIChjb25zdCBzdHJ1Y3QKIHN0YXRpYyBpbmxpbmUgYm9vbAogYWRkcl9tYXRjaCAo
Y29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmExLCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9z
b2NrYWRkciAqYTIpCiB7Ci0gIHJldHVybiBhMS0+c2Euc2luX2FkZHIuc19hZGRyID09IGEyLT5z
YS5zaW5fYWRkci5zX2FkZHI7CisgIHN3aXRjaChhMS0+YWRkci5zYS5zYV9mYW1pbHkpIHsKKyAg
ICBjYXNlIEFGX0lORVQ6CisgICAgICByZXR1cm4gYTEtPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRk
ciA9PSBhMi0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyOworI2lmZGVmIFVTRV9QRl9JTkVUNgor
ICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICByZXR1cm4gSU42X0FSRV9BRERSX0VRVUFMKCZhMS0+
YWRkci5pbjYuc2luNl9hZGRyLCAmYTItPmFkZHIuaW42LnNpbjZfYWRkcik7CisjZW5kaWYKKyAg
fQorICBBU1NFUlQoMCk7CisgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGlubGluZSBpbl9h
ZGRyX3QKLWFkZHJfaG9zdCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKnMpCithZGRy
X2hvc3QgKGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphZGRyKQogewotICByZXR1cm4g
bnRvaGwgKHMtPnNhLnNpbl9hZGRyLnNfYWRkcik7CisgIC8qIAorICAgKiAicHVibGljIiBhZGRy
IHJldHVybmVkIGlzIGNoZWNrZWQgYWdhaW5zdCBpZmNvbmZpZyBmb3IKKyAgICogcG9zc2libGUg
Y2xhc2g6IG5vbiBzZW5zZSBmb3Igbm93IGdpdmVuCisgICAqIHRoYXQgd2UgZG8gaWZjb25maWcg
b25seSBJUHY0CisgICAqLworI2lmIGRlZmluZWQoVVNFX1BGX0lORVQ2KSAKKyAgaWYoYWRkci0+
YWRkci5zYS5zYV9mYW1pbHkgIT0gQUZfSU5FVCkKKyAgICByZXR1cm4gMDsKKyNlbHNlIAorICBB
U1NFUlQoYWRkci0+YWRkci5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCk7CisjZW5kaWYKKyAgcmV0
dXJuIG50b2hsIChhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wKIGFkZHJfcG9ydF9tYXRjaCAoY29uc3Qgc3RydWN0IG9wZW52cG5fc29ja2Fk
ZHIgKmExLCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYTIpCiB7Ci0gIHJldHVybiBh
MS0+c2Euc2luX2FkZHIuc19hZGRyID09IGEyLT5zYS5zaW5fYWRkci5zX2FkZHIKLSAgICAmJiBh
MS0+c2Euc2luX3BvcnQgPT0gYTItPnNhLnNpbl9wb3J0OworICBzd2l0Y2goYTEtPmFkZHIuc2Eu
c2FfZmFtaWx5KSB7CisgICAgY2FzZSBBRl9JTkVUOgorICAgICAgcmV0dXJuIGExLT5hZGRyLmlu
NC5zaW5fYWRkci5zX2FkZHIgPT0gYTItPmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkcgorCSYmIGEx
LT5hZGRyLmluNC5zaW5fcG9ydCA9PSBhMi0+YWRkci5pbjQuc2luX3BvcnQ7CisjaWZkZWYgVVNF
X1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIHJldHVybiBJTjZfQVJFX0FERFJf
RVFVQUwoJmExLT5hZGRyLmluNi5zaW42X2FkZHIsICZhMi0+YWRkci5pbjYuc2luNl9hZGRyKSAK
KwkmJiBhMS0+YWRkci5pbjYuc2luNl9wb3J0ID09IGEyLT5hZGRyLmluNi5zaW42X3BvcnQ7Cisj
ZW5kaWYKKyAgfQorICBBU1NFUlQoMCk7CisgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sCkBAIC01MjEsNiArNjE5LDc0IEBAIGFkZHJfbWF0Y2hfcHJvdG8gKGNvbnN0IHN0
cnVjdCBvcGVudnBuX3MKICAgICA6IGFkZHJfcG9ydF9tYXRjaCAoYTEsIGEyKTsKIH0KIAorc3Rh
dGljIGlubGluZSB2b2lkCithZGRyX3plcm9faG9zdChzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAq
YWRkcikKK3sKKyAgIHN3aXRjaChhZGRyLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgICBjYXNl
IEFGX0lORVQ6CisgICAgICAgYWRkci0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gMDsKKyAg
ICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICAgY2FzZSBBRl9JTkVUNjogCisg
ICAgICAgbWVtc2V0KCZhZGRyLT5hZGRyLmluNi5zaW42X2FkZHIsIDAsIHNpemVvZiAoc3RydWN0
IGluNl9hZGRyKSk7CisgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgIH0KK30KKworc3RhdGljIGlu
bGluZSB2b2lkCithZGRyX2NvcHlfc2Eoc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKmRzdCwgY29u
c3Qgc3RydWN0IG9wZW52cG5fc29ja2FkZHIgKnNyYykKK3sKKyAgZHN0LT5hZGRyID0gc3JjLT5h
ZGRyOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2FkZHJfY29weV9ob3N0KHN0cnVjdCBvcGVu
dnBuX3NvY2thZGRyICpkc3QsIGNvbnN0IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICpzcmMpCit7
CisgICBzd2l0Y2goc3JjLT5hZGRyLnNhLnNhX2ZhbWlseSkgeworICAgICBjYXNlIEFGX0lORVQ6
CisgICAgICAgZHN0LT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBzcmMtPmFkZHIuaW40LnNp
bl9hZGRyLnNfYWRkcjsKKyAgICAgICBicmVhazsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICAg
Y2FzZSBBRl9JTkVUNjogCisgICAgICAgZHN0LT5hZGRyLmluNi5zaW42X2FkZHIgPSBzcmMtPmFk
ZHIuaW42LnNpbjZfYWRkcjsKKyAgICAgICBicmVhazsKKyNlbmRpZgorICAgfQorfQorCitzdGF0
aWMgaW5saW5lIGJvb2wKK2FkZHJfaW5ldDRvcjYoc3RydWN0IHNvY2thZGRyICphZGRyKQorewor
CXJldHVybiBhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCB8fCBhZGRyLT5zYV9mYW1pbHkgPT0g
QUZfSU5FVDY7Cit9CisKK2ludCBhZGRyX2d1ZXNzX2ZhbWlseShpbnQgcHJvdG8sIGNvbnN0IGNo
YXIgKm5hbWUpOworc3RhdGljIGlubGluZSBpbnQKK2FmX2FkZHJfc2l6ZShzYV9mYW1pbHlfdCBh
ZikKK3sKKyNpZiBkZWZpbmVkKFVTRV9QRl9JTkVUNikgfHwgZGVmaW5lZCAoVVNFX1BGX1VOSVgp
CisgICBzd2l0Y2goYWYpIHsKKyAgICAgY2FzZSBBRl9JTkVUOiByZXR1cm4gc2l6ZW9mIChzdHJ1
Y3Qgc29ja2FkZHJfaW4pOworI2lmZGVmIFVTRV9QRl9VTklYCisgICAgIGNhc2UgQUZfVU5JWDog
cmV0dXJuIHNpemVvZiAoc3RydWN0IHNvY2thZGRyX3VuKTsKKyNlbmRpZgorI2lmZGVmIFVTRV9Q
Rl9JTkVUNgorICAgICBjYXNlIEFGX0lORVQ2OiByZXR1cm4gc2l6ZW9mIChzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KTsKKyNlbmRpZgorICAgICBkZWZhdWx0OiAKKyNpZiAwCisgICAgICAvKiBjb3VsZCBi
ZSBjYWxsZWQgZnJvbSBzb2NrZXRfZG9fYWNjZXB0KCkgd2l0aCBlbXB0eSBhZGRyICovCisgICAg
ICBtc2cgKE1fRVJSLCAiQmFkIGFkZHJlc3MgZmFtaWx5OiAlZFxuIiwgYWRkci0+c2FfZmFtaWx5
KTsKKyAgICAgIEFTU0VSVCgwKTsKKyNlbmRpZgorICAgICAJcmV0dXJuIDA7CisgICB9CisjZWxz
ZSAvKiBvbmx5IEFGX0lORVQgKi8KKyAgIHJldHVybiBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2lu
KTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW5saW5lIGJvb2wKIGxpbmtfc29ja2V0X2FjdHVhbF9t
YXRjaCAoY29uc3Qgc3RydWN0IGxpbmtfc29ja2V0X2FjdHVhbCAqYTEsIGNvbnN0IHN0cnVjdCBs
aW5rX3NvY2tldF9hY3R1YWwgKmEyKQogewpAQCAtNTc3LDE0ICs3NDMsMTggQEAgbGlua19zb2Nr
ZXRfdmVyaWZ5X2luY29taW5nX2FkZHIgKHN0cnVjdAogewogICBpZiAoYnVmLT5sZW4gPiAwKQog
ICAgIHsKLSAgICAgIGlmIChmcm9tX2FkZHItPmRlc3Quc2Euc2luX2ZhbWlseSAhPSBBRl9JTkVU
KQotCXJldHVybiBmYWxzZTsKLSAgICAgIGlmICghbGlua19zb2NrZXRfYWN0dWFsX2RlZmluZWQg
KGZyb21fYWRkcikpCi0JcmV0dXJuIGZhbHNlOwotICAgICAgaWYgKGluZm8tPnJlbW90ZV9mbG9h
dCB8fCAhYWRkcl9kZWZpbmVkICgmaW5mby0+bHNhLT5yZW1vdGUpKQotCXJldHVybiB0cnVlOwot
ICAgICAgaWYgKGFkZHJfbWF0Y2hfcHJvdG8gKCZmcm9tX2FkZHItPmRlc3QsICZpbmZvLT5sc2Et
PnJlbW90ZSwgaW5mby0+cHJvdG8pKQotCXJldHVybiB0cnVlOworICAgICAgc3dpdGNoIChmcm9t
X2FkZHItPmRlc3QuYWRkci5zYS5zYV9mYW1pbHkpIHsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKwlj
YXNlIEFGX0lORVQ2OgorI2VuZGlmCisJY2FzZSBBRl9JTkVUOgorCSAgaWYgKCFsaW5rX3NvY2tl
dF9hY3R1YWxfZGVmaW5lZCAoZnJvbV9hZGRyKSkKKwkgICAgcmV0dXJuIGZhbHNlOworCSAgaWYg
KGluZm8tPnJlbW90ZV9mbG9hdCB8fCAhYWRkcl9kZWZpbmVkICgmaW5mby0+bHNhLT5yZW1vdGUp
KQorCSAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmIChhZGRyX21hdGNoX3Byb3RvICgmZnJvbV9hZGRy
LT5kZXN0LCAmaW5mby0+bHNhLT5yZW1vdGUsIGluZm8tPnByb3RvKSkKKwkgICAgcmV0dXJuIHRy
dWU7CisgICAgICB9CiAgICAgfQogICByZXR1cm4gZmFsc2U7CiB9CkBAIC02OTAsNyArODYwLDcg
QEAgbGlua19zb2NrZXRfcmVhZCAoc3RydWN0IGxpbmtfc29ja2V0ICpzbwogCQkgIGludCBtYXhz
aXplLAogCQkgIHN0cnVjdCBsaW5rX3NvY2tldF9hY3R1YWwgKmZyb20pCiB7Ci0gIGlmIChzb2Nr
LT5pbmZvLnByb3RvID09IFBST1RPX1VEUHY0KQorICBpZiAocHJvdG9faXNfdWRwKHNvY2stPmlu
Zm8ucHJvdG8pKSAvKiB1bmlmaWVkIFVEUHY0IGFuZCBVRFB2NiAqLwogICAgIHsKICAgICAgIGlu
dCByZXM7CiAKQEAgLTcwMSwxMCArODcxLDEwIEBAICNlbHNlCiAjZW5kaWYKICAgICAgIHJldHVy
biByZXM7CiAgICAgfQotICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY0
X1NFUlZFUiB8fCBzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY0X0NMSUVOVCkKKyAgZWxz
ZSBpZiAocHJvdG9faXNfdGNwKHNvY2stPmluZm8ucHJvdG8pKSAvKiB1bmlmaWVkIFRDUHY0IGFu
ZCBUQ1B2NiAqLwogICAgIHsKICAgICAgIC8qIGZyb20gYWRkcmVzcyB3YXMgcmV0dXJuZWQgYnkg
YWNjZXB0ICovCi0gICAgICBmcm9tLT5kZXN0LnNhID0gc29jay0+aW5mby5sc2EtPmFjdHVhbC5k
ZXN0LnNhOworICAgICAgYWRkcl9jb3B5X3NhKCZmcm9tLT5kZXN0LCAmc29jay0+aW5mby5sc2Et
PmFjdHVhbC5kZXN0KTsKICAgICAgIHJldHVybiBsaW5rX3NvY2tldF9yZWFkX3RjcCAoc29jaywg
YnVmKTsKICAgICB9CiAgIGVsc2UKQEAgLTc1OSwxMyArOTI5LDE0IEBAICNpZiBFTkFCTEVfSVBf
UEtUSU5GTwogCQkJCQkgICBzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCQkJCSAgIHN0cnVjdCBsaW5r
X3NvY2tldF9hY3R1YWwgKnRvKTsKIAotICBpZiAoc29jay0+c29ja2ZsYWdzICYgU0ZfVVNFX0lQ
X1BLVElORk8pCisgIGlmIChwcm90b19pc191ZHAoc29jay0+aW5mby5wcm90bykgJiYgKHNvY2st
PnNvY2tmbGFncyAmIFNGX1VTRV9JUF9QS1RJTkZPKQorCSAgJiYgYWRkcl9kZWZpbmVkX2lwaSh0
bykpCiAgICAgcmV0dXJuIGxpbmtfc29ja2V0X3dyaXRlX3VkcF9wb3NpeF9zZW5kbXNnIChzb2Nr
LCBidWYsIHRvKTsKICAgZWxzZQogI2VuZGlmCiAgICAgcmV0dXJuIHNlbmR0byAoc29jay0+c2Qs
IEJQVFIgKGJ1ZiksIEJMRU4gKGJ1ZiksIDAsCi0JCSAgIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnRv
LT5kZXN0LnNhLAotCQkgICAoc29ja2xlbl90KSBzaXplb2YgKHRvLT5kZXN0LnNhKSk7CisJCSAg
IChzdHJ1Y3Qgc29ja2FkZHIgKikgJnRvLT5kZXN0LmFkZHIuc2EsCisJCSAgIChzb2NrbGVuX3Qp
IGFmX2FkZHJfc2l6ZSh0by0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkpOwogfQogCiBzdGF0aWMg
aW5saW5lIGludApAQCAtNzk2LDExICs5NjcsMTEgQEAgbGlua19zb2NrZXRfd3JpdGUgKHN0cnVj
dCBsaW5rX3NvY2tldCAqcwogCQkgICBzdHJ1Y3QgYnVmZmVyICpidWYsCiAJCSAgIHN0cnVjdCBs
aW5rX3NvY2tldF9hY3R1YWwgKnRvKQogewotICBpZiAoc29jay0+aW5mby5wcm90byA9PSBQUk9U
T19VRFB2NCkKKyAgaWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSkgLyogdW5pZmll
ZCBVRFB2NCBhbmQgVURQdjYgKi8KICAgICB7CiAgICAgICByZXR1cm4gbGlua19zb2NrZXRfd3Jp
dGVfdWRwIChzb2NrLCBidWYsIHRvKTsKICAgICB9Ci0gIGVsc2UgaWYgKHNvY2stPmluZm8ucHJv
dG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSIHx8IHNvY2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVENQ
djRfQ0xJRU5UKQorICBlbHNlIGlmIChwcm90b19pc190Y3Aoc29jay0+aW5mby5wcm90bykpIC8q
IHVuaWZpZWQgVENQdjQgYW5kIFRDUHY2ICovCiAgICAgewogICAgICAgcmV0dXJuIGxpbmtfc29j
a2V0X3dyaXRlX3RjcCAoc29jaywgYnVmLCB0byk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc29ja3Mu
YyBiL3NvY2tzLmMKaW5kZXggY2M5ZDgyZi4uN2VjOWEzZSAxMDA2NDQKLS0tIGEvc29ja3MuYwor
KysgYi9zb2Nrcy5jCkBAIC0xNzQsOSArMTc0LDkgQEAgcmVjdl9zb2Nrc19yZXBseSAoc29ja2V0
X2Rlc2NyaXB0b3JfdCBzZAogCiAgIGlmIChhZGRyICE9IE5VTEwpCiAgICAgewotICAgICAgYWRk
ci0+c2Euc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0gICAgICBhZGRyLT5zYS5zaW5fYWRkci5zX2Fk
ZHIgPSBodG9ubCAoSU5BRERSX0FOWSk7Ci0gICAgICBhZGRyLT5zYS5zaW5fcG9ydCA9IGh0b25z
ICgwKTsKKyAgICAgIGFkZHItPmFkZHIuaW40LnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgICAg
YWRkci0+YWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0gaHRvbmwgKElOQUREUl9BTlkpOworICAg
ICAgYWRkci0+YWRkci5pbjQuc2luX3BvcnQgPSBodG9ucyAoMCk7CiAgICAgfQogCiAgIHdoaWxl
IChsZW4gPCA0ICsgYWxlbiArIDIpCkBAIC0yNjMsOCArMjYzLDggQEAgcmVjdl9zb2Nrc19yZXBs
eSAoc29ja2V0X2Rlc2NyaXB0b3JfdCBzZAogICAvKiBBVFlQID09IDEgKElQIFY0IGFkZHJlc3Mp
ICovCiAgIGlmIChhdHlwID09ICdceDAxJyAmJiBhZGRyICE9IE5VTEwpCiAgICAgewotICAgICAg
bWVtY3B5ICgmYWRkci0+c2Euc2luX2FkZHIsIGJ1ZiArIDQsIHNpemVvZiAoYWRkci0+c2Euc2lu
X2FkZHIpKTsKLSAgICAgIG1lbWNweSAoJmFkZHItPnNhLnNpbl9wb3J0LCBidWYgKyA4LCBzaXpl
b2YgKGFkZHItPnNhLnNpbl9wb3J0KSk7CisgICAgICBtZW1jcHkgKCZhZGRyLT5hZGRyLmluNC5z
aW5fYWRkciwgYnVmICsgNCwgc2l6ZW9mIChhZGRyLT5hZGRyLmluNC5zaW5fYWRkcikpOworICAg
ICAgbWVtY3B5ICgmYWRkci0+YWRkci5pbjQuc2luX3BvcnQsIGJ1ZiArIDgsIHNpemVvZiAoYWRk
ci0+YWRkci5pbjQuc2luX3BvcnQpKTsKICAgICB9CiAKIApAQCAtMzgyLDggKzM4Miw4IEBAIHNv
Y2tzX3Byb2Nlc3NfaW5jb21pbmdfdWRwIChzdHJ1Y3QgYnVmZmUKICAgaWYgKGF0eXAgIT0gMSkJ
CS8qIEFUWVAgPT0gMSAoSVAgVjQpICovCiAgICAgZ290byBlcnJvcjsKIAotICBidWZfcmVhZCAo
YnVmLCAmZnJvbS0+ZGVzdC5zYS5zaW5fYWRkciwgc2l6ZW9mIChmcm9tLT5kZXN0LnNhLnNpbl9h
ZGRyKSk7Ci0gIGJ1Zl9yZWFkIChidWYsICZmcm9tLT5kZXN0LnNhLnNpbl9wb3J0LCBzaXplb2Yg
KGZyb20tPmRlc3Quc2Euc2luX3BvcnQpKTsKKyAgYnVmX3JlYWQgKGJ1ZiwgJmZyb20tPmRlc3Qu
YWRkci5pbjQuc2luX2FkZHIsIHNpemVvZiAoZnJvbS0+ZGVzdC5hZGRyLmluNC5zaW5fYWRkcikp
OworICBidWZfcmVhZCAoYnVmLCAmZnJvbS0+ZGVzdC5hZGRyLmluNC5zaW5fcG9ydCwgc2l6ZW9m
IChmcm9tLT5kZXN0LmFkZHIuaW40LnNpbl9wb3J0KSk7CiAKICAgcmV0dXJuOwogCkBAIC00MTUs
OCArNDE1LDggQEAgc29ja3NfcHJvY2Vzc19vdXRnb2luZ191ZHAgKHN0cnVjdCBidWZmZQogICBi
dWZfd3JpdGVfdTE2ICgmaGVhZCwgMCk7CS8qIFJTViA9IDAgKi8KICAgYnVmX3dyaXRlX3U4ICgm
aGVhZCwgMCk7CS8qIEZSQUcgPSAwICovCiAgIGJ1Zl93cml0ZV91OCAoJmhlYWQsICdceDAxJyk7
IC8qIEFUWVAgPSAxIChJUCBWNCkgKi8KLSAgYnVmX3dyaXRlICgmaGVhZCwgJnRvLT5kZXN0LnNh
LnNpbl9hZGRyLCBzaXplb2YgKHRvLT5kZXN0LnNhLnNpbl9hZGRyKSk7Ci0gIGJ1Zl93cml0ZSAo
JmhlYWQsICZ0by0+ZGVzdC5zYS5zaW5fcG9ydCwgc2l6ZW9mICh0by0+ZGVzdC5zYS5zaW5fcG9y
dCkpOworICBidWZfd3JpdGUgKCZoZWFkLCAmdG8tPmRlc3QuYWRkci5pbjQuc2luX2FkZHIsIHNp
emVvZiAodG8tPmRlc3QuYWRkci5pbjQuc2luX2FkZHIpKTsKKyAgYnVmX3dyaXRlICgmaGVhZCwg
JnRvLT5kZXN0LmFkZHIuaW40LnNpbl9wb3J0LCBzaXplb2YgKHRvLT5kZXN0LmFkZHIuaW40LnNp
bl9wb3J0KSk7CiAKICAgcmV0dXJuIDEwOwogfQpkaWZmIC0tZ2l0IGEvc29ja2V0LmMgYi9zb2Nr
ZXQuYwotLS0gYS9zb2NrZXQuYworKysgYi9zb2NrZXQuYwpAQCAtMzYsMTAgKzM2LDE2IEBACiAj
aW5jbHVkZSAibWVtZGJnLmgiCiAKIGNvbnN0IGludCBwcm90b19vdmVyaGVhZFtdID0geyAvKiBp
bmRleGVkIGJ5IFBST1RPX3ggKi8KLSAgSVB2NF9VRFBfSEVBREVSX1NJWkUsCisgIDAsCisgIElQ
djRfVURQX0hFQURFUl9TSVpFLCAvKiBJUHY0ICovCiAgIElQdjRfVENQX0hFQURFUl9TSVpFLAog
ICBJUHY0X1RDUF9IRUFERVJfU0laRSwKLSAgSVB2NF9UQ1BfSEVBREVSX1NJWkUKKyNpZmRlZiBV
U0VfUEZfSU5FVDYKKyAgSVB2Nl9VRFBfSEVBREVSX1NJWkUsIC8qIElQdjYgKi8KKyAgSVB2Nl9U
Q1BfSEVBREVSX1NJWkUsCisgIElQdjZfVENQX0hFQURFUl9TSVpFLAorICBJUHY2X1RDUF9IRUFE
RVJfU0laRSwKKyNlbmRpZgogfTsKIAogLyoKQEAgLTI5OSwyMCArMzA1LDQ5IEBACiAJICAgICAg
IHN0cnVjdCBvcGVudnBuX3NvY2thZGRyICphZGRyLAogCSAgICAgICBib29sICpjaGFuZ2VkKQog
ewotICBpZiAoaG9zdCAmJiBhZGRyKQotICAgIHsKLSAgICAgIGNvbnN0IGluX2FkZHJfdCBuZXdf
YWRkciA9IGdldGFkZHIgKAotCQkJCQkgIEdFVEFERFJfUkVTT0xWRXxHRVRBRERSX1VQREFURV9N
QU5BR0VNRU5UX1NUQVRFLAotCQkJCQkgIGhvc3QsCi0JCQkJCSAgMSwKLQkJCQkJICBOVUxMLAot
CQkJCQkgIE5VTEwpOwotICAgICAgaWYgKG5ld19hZGRyICYmIGFkZHItPnNhLnNpbl9hZGRyLnNf
YWRkciAhPSBuZXdfYWRkcikKKyAgc3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7Cisg
ICAgY2FzZSBBRl9JTkVUOgorICAgICAgaWYgKGhvc3QgJiYgYWRkcikKKyAgICAgIHsKKwljb25z
dCBpbl9hZGRyX3QgbmV3X2FkZHIgPSBnZXRhZGRyICgKKwkgICAgR0VUQUREUl9SRVNPTFZFfEdF
VEFERFJfVVBEQVRFX01BTkFHRU1FTlRfU1RBVEUsCisJICAgIGhvc3QsCisJICAgIDEsCisJICAg
IE5VTEwsCisJICAgIE5VTEwpOworCWlmIChuZXdfYWRkciAmJiBhZGRyLT5hZGRyLmluNC5zaW5f
YWRkci5zX2FkZHIgIT0gbmV3X2FkZHIpCiAJewotCSAgYWRkci0+c2Euc2luX2FkZHIuc19hZGRy
ID0gbmV3X2FkZHI7CisJICBhZGRyLT5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIgPSBuZXdfYWRk
cjsKIAkgICpjaGFuZ2VkID0gdHJ1ZTsKIAl9Ci0gICAgfQorICAgICAgfQorICAgICAgYnJlYWs7
CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgY2FzZSBBRl9JTkVUNjogLyogampvRklYTUU6IHNo
b3VsZCBhZGFwdCBnZXRhZGRyKCkgZm9yIEFGX0lORVQ2ICovCisgICAgICBpZiAoaG9zdCAmJiBh
ZGRyKQorICAgICAgeworCXN0cnVjdCBhZGRyaW5mbyBoaW50cyAsICphaTsKKwlpbnQgZXJyOwor
CW1lbXNldCgmaGludHMsIDAsIHNpemVvZiBoaW50cyk7CisJaGludHMuYWlfZmxhZ3M9QUlfUEFT
U0lWRTsKKwloaW50cy5haV9mYW1pbHk9QUZfSU5FVDY7CisJaWYgKChlcnI9Z2V0YWRkcmluZm8o
aG9zdCwgTlVMTCwgJmhpbnRzLCAmYWkpKT09MCkKKwl7CisJICBzdHJ1Y3Qgc29ja2FkZHJfaW42
ICpzaW42PShzdHJ1Y3Qgc29ja2FkZHJfaW42KilhaS0+YWlfYWRkcjsKKwkgIGlmIChJTjZfQVJF
X0FERFJfRVFVQUwoJnNpbjYtPnNpbjZfYWRkciwgJmFkZHItPmFkZHIuaW42LnNpbjZfYWRkcikp
CisJICB7CisJICAgIGludCBwb3J0PWFkZHItPmFkZHIuaW42LnNpbjZfcG9ydDsgLyogYmFja3Vw
IGN1cnJlbnQgcG9ydCBmb3IgZWFzaWVyIGNvcHksIHJlc3RvcmUgbGF0ZXIgKi8KKwkgICAgYWRk
ci0+YWRkci5pbjY9KnNpbjY7IC8qIGlwdjYgcmVxdWlyZXMgYWxzbyBlZy4gc2luNl9zY29wZV9p
ZCA9PiBlYXN5IHRvIGZ1bGwgY29weSovCisJICAgIGFkZHItPmFkZHIuaW42LnNpbjZfcG9ydD1w
b3J0OworCSAgfQorCSAgZnJlZWFkZHJpbmZvKGFpKTsKKwl9CisgICAgICB9CisgICAgICBicmVh
azsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgCUFTU0VSVCgwKTsKKyAgfQogfQogCiBzdGF0
aWMgaW50CkBAIC01MDUsNiArNTQwLDQ0IEBACiAgIHJldHVybiBzZDsKIH0KIAorI2lmZGVmIFVT
RV9QRl9JTkVUNgorc3RhdGljIHNvY2tldF9kZXNjcmlwdG9yX3QKK2NyZWF0ZV9zb2NrZXRfdWRw
NiAoY29uc3QgdW5zaWduZWQgaW50IGZsYWdzKQoreworICBzb2NrZXRfZGVzY3JpcHRvcl90IHNk
OworCisgIGlmICgoc2QgPSBzb2NrZXQgKFBGX0lORVQ2LCBTT0NLX0RHUkFNLCBJUFBST1RPX1VE
UCkpIDwgMCkKKyAgICBtc2cgKE1fU09DS0VSUiwgIlVEUDogQ2Fubm90IGNyZWF0ZSBVRFA2IHNv
Y2tldCIpOworI2lmIEVOQUJMRV9JUF9QS1RJTkZPCisgIGVsc2UgaWYgKGZsYWdzICYgU0ZfVVNF
X0lQX1BLVElORk8pCisgICAgeworICAgICAgaW50IHBhZCA9IDE7CisgICAgICBzZXRzb2Nrb3B0
IChzZCwgSVBQUk9UT19JUFY2LCBJUFY2X1BLVElORk8sICh2b2lkKikmcGFkLCBzaXplb2YocGFk
KSk7CisgICAgfQorI2VuZGlmCisgIHJldHVybiBzZDsKK30KKworc3RhdGljIHNvY2tldF9kZXNj
cmlwdG9yX3QKK2NyZWF0ZV9zb2NrZXRfdGNwNiAodm9pZCkKK3sKKyAgc29ja2V0X2Rlc2NyaXB0
b3JfdCBzZDsKKworICBpZiAoKHNkID0gc29ja2V0IChQRl9JTkVUNiwgU09DS19TVFJFQU0sIElQ
UFJPVE9fVENQKSkgPCAwKQorICAgIG1zZyAoTV9TT0NLRVJSLCAiQ2Fubm90IGNyZWF0ZSBUQ1A2
IHNvY2tldCIpOworCisgIC8qIHNldCBTT19SRVVTRUFERFIgb24gc29ja2V0ICovCisgIHsKKyAg
ICBpbnQgb24gPSAxOworICAgIGlmIChzZXRzb2Nrb3B0IChzZCwgU09MX1NPQ0tFVCwgU09fUkVV
U0VBRERSLAorCQkgICAgKHZvaWQgKikgJm9uLCBzaXplb2YgKG9uKSkgPCAwKQorICAgICAgbXNn
IChNX1NPQ0tFUlIsICJUQ1A6IENhbm5vdCBzZXRzb2Nrb3B0IFNPX1JFVVNFQUREUiBvbiBUQ1A2
IHNvY2tldCIpOworICB9CisKKyAgcmV0dXJuIHNkOworfQorCisjZW5kaWYKIHN0YXRpYyB2b2lk
CiBjcmVhdGVfc29ja2V0IChzdHJ1Y3QgbGlua19zb2NrZXQgKnNvY2spCiB7CkBAIC01MjMsNiAr
NTk2LDE3IEBACiAgICAgewogICAgICAgc29jay0+c2QgPSBjcmVhdGVfc29ja2V0X3RjcCAoKTsK
ICAgICB9CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgIGVsc2UgaWYgKHNvY2stPmluZm8ucHJvdG8g
PT0gUFJPVE9fVENQdjZfU0VSVkVSCisJICAgfHwgc29jay0+aW5mby5wcm90byA9PSBQUk9UT19U
Q1B2Nl9DTElFTlQpCisgICAgeworICAgICAgc29jay0+c2QgPSBjcmVhdGVfc29ja2V0X3RjcDYg
KCk7CisgICAgfQorICBlbHNlIGlmIChzb2NrLT5pbmZvLnByb3RvID09IFBST1RPX1VEUHY2KQor
ICAgIHsKKyAgICAgIHNvY2stPnNkID0gY3JlYXRlX3NvY2tldF91ZHA2IChzb2NrLT5zb2NrZmxh
Z3MpOworICAgIH0KKyNlbmRpZgogICBlbHNlCiAgICAgewogICAgICAgQVNTRVJUICgwKTsKQEAg
LTU2MCw3ICs2NDQsMTIgQEAKIAkJICBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFsICphY3QsCiAJ
CSAgY29uc3QgYm9vbCBub3dhaXQpCiB7Ci0gIHNvY2tsZW5fdCByZW1vdGVfbGVuID0gc2l6ZW9m
IChhY3QtPmRlc3Quc2EpOworICAvKiBhZl9hZGRyX3NpemUgV0lMTCByZXR1cm4gMCBpbiB0aGlz
IGNhc2UgaWYgQUZzIG90aGVyIHRoYW4gQUZfSU5FVAorICAgKiBhcmUgY29tcGlsZWQgYmVjYXVz
ZSBhY3QgaXMgZW1wdHkgaGVyZS4KKyAgICogY291bGQgdXNlIGdldHNvY2tuYW1lKCkgdG8gc3Vw
cG9ydCBsYXRlciByZW1vdGVfbGVuIGNoZWNrCisgICAqLworICBzb2NrbGVuX3QgcmVtb3RlX2xl
bl9hZiA9IGFmX2FkZHJfc2l6ZShhY3QtPmRlc3QuYWRkci5zYS5zYV9mYW1pbHkpOworICBzb2Nr
bGVuX3QgcmVtb3RlX2xlbiA9IHNpemVvZihhY3QtPmRlc3QuYWRkcik7CiAgIHNvY2tldF9kZXNj
cmlwdG9yX3QgbmV3X3NkID0gU09DS0VUX1VOREVGSU5FRDsKIAogICBDTEVBUiAoKmFjdCk7CkBA
IC01NjgsNyArNjU3LDcgQEAKICNpZmRlZiBIQVZFX0dFVFBFRVJOQU1FCiAgIGlmIChub3dhaXQp
CiAgICAgewotICAgICAgbmV3X3NkID0gZ2V0cGVlcm5hbWUgKHNkLCAoc3RydWN0IHNvY2thZGRy
ICopICZhY3QtPmRlc3Quc2EsICZyZW1vdGVfbGVuKTsKKyAgICAgIG5ld19zZCA9IGdldHBlZXJu
YW1lIChzZCwgJmFjdC0+ZGVzdC5hZGRyLnNhLCAmcmVtb3RlX2xlbik7CiAKICAgICAgIGlmICgh
c29ja2V0X2RlZmluZWQgKG5ld19zZCkpCiAJbXNnIChEX0xJTktfRVJST1JTIHwgTV9FUlJOT19T
T0NLLCAiVENQOiBnZXRwZWVybmFtZSgpIGZhaWxlZCIpOwpAQCAtNTgxLDcgKzY3MCw3IEBACiAj
ZW5kaWYKICAgZWxzZQogICAgIHsKLSAgICAgIG5ld19zZCA9IGFjY2VwdCAoc2QsIChzdHJ1Y3Qg
c29ja2FkZHIgKikgJmFjdC0+ZGVzdC5zYSwgJnJlbW90ZV9sZW4pOworICAgICAgbmV3X3NkID0g
YWNjZXB0IChzZCwgJmFjdC0+ZGVzdC5hZGRyLnNhLCAmcmVtb3RlX2xlbik7CiAgICAgfQogCiAj
aWYgMCAvKiBGb3IgZGVidWdnaW5nIG9ubHksIHRlc3QgdGhlIGVmZmVjdCBvZiBhY2NlcHQoKSBm
YWlsdXJlcyAqLwpAQCAtNTk3LDcgKzY4Niw4IEBACiAgICAgewogICAgICAgbXNnIChEX0xJTktf
RVJST1JTIHwgTV9FUlJOT19TT0NLLCAiVENQOiBhY2NlcHQoJWQpIGZhaWxlZCIsIHNkKTsKICAg
ICB9Ci0gIGVsc2UgaWYgKHJlbW90ZV9sZW4gIT0gc2l6ZW9mIChhY3QtPmRlc3Quc2EpKQorICAv
KiBvbmx5IHZhbGlkIGlmIHdlIGhhdmUgcmVtb3RlX2xlbl9hZiE9MCAqLworICBlbHNlIGlmIChy
ZW1vdGVfbGVuX2FmICYmIHJlbW90ZV9sZW4gIT0gcmVtb3RlX2xlbl9hZikKICAgICB7CiAgICAg
ICBtc2cgKERfTElOS19FUlJPUlMsICJUQ1A6IFJlY2VpdmVkIHN0cmFuZ2UgaW5jb21pbmcgY29u
bmVjdGlvbiB3aXRoIHVua25vd24gYWRkcmVzcyBsZW5ndGg9JWQiLCByZW1vdGVfbGVuKTsKICAg
ICAgIG9wZW52cG5fY2xvc2Vfc29ja2V0IChuZXdfc2QpOwpAQCAtNjk4LDcgKzc4OCw3IEBACiB7
CiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsKIAotICBpZiAoYmluZCAoc2QsIChz
dHJ1Y3Qgc29ja2FkZHIgKikgJmxvY2FsLT5zYSwgc2l6ZW9mIChsb2NhbC0+c2EpKSkKKyAgaWYg
KGJpbmQgKHNkLCAmbG9jYWwtPmFkZHIuc2EsIGFmX2FkZHJfc2l6ZShsb2NhbC0+YWRkci5zYS5z
YV9mYW1pbHkpKSkKICAgICB7CiAgICAgICBjb25zdCBpbnQgZXJybnVtID0gb3BlbnZwbl9lcnJu
b19zb2NrZXQgKCk7CiAgICAgICBtc2cgKE1fRkFUQUwsICIlczogU29ja2V0IGJpbmQgZmFpbGVk
IG9uIGxvY2FsIGFkZHJlc3MgJXM6ICVzIiwKQEAgLTcxOSw3ICs4MDksNyBAQAogCiAjaWZkZWYg
Q09OTkVDVF9OT05CTE9DSwogICBzZXRfbm9uYmxvY2sgKHNkKTsKLSAgc3RhdHVzID0gY29ubmVj
dCAoc2QsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnJlbW90ZS0+c2EsIHNpemVvZiAocmVtb3RlLT5z
YSkpOworICBzdGF0dXMgPSBjb25uZWN0IChzZCwgJnJlbW90ZS0+YWRkci5zYSwgYWZfYWRkcl9z
aXplKHJlbW90ZS0+YWRkci5zYS5zYV9mYW1pbHkpKTsKICAgaWYgKHN0YXR1cykKICAgICBzdGF0
dXMgPSBvcGVudnBuX2Vycm5vX3NvY2tldCAoKTsKICAgaWYgKHN0YXR1cyA9PSBFSU5QUk9HUkVT
UykKQEAgLTg1NCwxNyArOTQ0LDMyIEBACiAgICAgICBpZiAoKnNpZ25hbF9yZWNlaXZlZCkKIAln
b3RvIGRvbmU7CiAKLSAgICAgICpzZCA9IGNyZWF0ZV9zb2NrZXRfdGNwICgpOwotICAgICAgaWYg
KGJpbmRfbG9jYWwpCi0gICAgICAgIHNvY2tldF9iaW5kICgqc2QsIGxvY2FsLCAiVENQIENsaWVu
dCIpOwotICAgICAgdXBkYXRlX3JlbW90ZSAocmVtb3RlX2R5bmFtaWMsIHJlbW90ZSwgcmVtb3Rl
X2NoYW5nZWQpOwotICAgIH0KKyAgICAgIHN3aXRjaChyZW1vdGUtPmFkZHIuc2Euc2FfZmFtaWx5
KSB7CisgICAgICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICAgICAqc2QgPSBjcmVhdGVfc29ja2V0
X3RjcCAoKTsKKyAgICAgICAgICBpZiAoYmluZF9sb2NhbCkKKyAgICAgICAgICAgIHNvY2tldF9i
aW5kICgqc2QsIGxvY2FsLCAiVENQIENsaWVudCIpOworICAgICAgICAgIHVwZGF0ZV9yZW1vdGUg
KHJlbW90ZV9keW5hbWljLCByZW1vdGUsIHJlbW90ZV9jaGFuZ2VkKTsKKyAgICAgICAgICBicmVh
azsKKyAgI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAg
ICAgICpzZCA9IGNyZWF0ZV9zb2NrZXRfdGNwNiAoKTsKKyAgICAgICAgICBpZiAoYmluZF9sb2Nh
bCkKKyAgICAgICAgICAgIHNvY2tldF9iaW5kICgqc2QsIGxvY2FsLCAiVENQNiBDbGllbnQiKTsK
KyAgICAgICAgICB1cGRhdGVfcmVtb3RlIChyZW1vdGVfZHluYW1pYywgcmVtb3RlLCByZW1vdGVf
Y2hhbmdlZCk7CisgICAgICAgICAgYnJlYWs7CisgICNlbmRpZgorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgIG1zZyhNX0ZBVEFMLCAiT25seSBUQ1AgaXMgc3VwcG9ydGVkIGZvciBjb25uZWN0
aW9uIG9yaWVudGVkLCBzYV9mYW1pbHk9JWQiLAorICAgICAgICAgICAgICByZW1vdGUtPmFkZHIu
c2Euc2FfZmFtaWx5KTsKKyAgICAgfQorICB9CiAKLSAgbXNnIChNX0lORk8sICJUQ1AgY29ubmVj
dGlvbiBlc3RhYmxpc2hlZCB3aXRoICVzIiwgCisgIG1zZyAoTV9JTkZPLCAiVENQIGNvbm5lY3Rp
b24gZXN0YWJsaXNoZWQgd2l0aCAlcyIsCiAgICAgICAgcHJpbnRfc29ja2FkZHIgKHJlbW90ZSwg
JmdjKSk7CiAKLSBkb25lOgotICBnY19mcmVlICgmZ2MpOworICBkb25lOgorICAgIGdjX2ZyZWUg
KCZnYyk7CiB9CiAKIC8qIEZvciBzdHJlYW0gcHJvdG9jb2xzLCBhbGxvY2F0ZSBhIGJ1ZmZlciB0
byBidWlsZCB1cCBwYWNrZXQuCkBAIC05MTgsMTcgKzEwMjMsNDQgQEAKIAogICAvKiByZXNvbHZl
IGxvY2FsIGFkZHJlc3MgaWYgdW5kZWZpbmVkICovCiAgIGlmICghYWRkcl9kZWZpbmVkICgmc29j
ay0+aW5mby5sc2EtPmxvY2FsKSkKLSAgICB7Ci0gICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwu
c2Euc2luX2ZhbWlseSA9IEFGX0lORVQ7Ci0gICAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwuc2Eu
c2luX2FkZHIuc19hZGRyID0KLQkoc29jay0+bG9jYWxfaG9zdCA/IGdldGFkZHIgKEdFVEFERFJf
UkVTT0xWRSB8IEdFVEFERFJfV0FSTl9PTl9TSUdOQUwgfCBHRVRBRERSX0ZBVEFMLAotCQkJCSAg
ICAgc29jay0+bG9jYWxfaG9zdCwKLQkJCQkgICAgIDAsCi0JCQkJICAgICBOVUxMLAotCQkJCSAg
ICAgTlVMTCkKLQkgOiBodG9ubCAoSU5BRERSX0FOWSkpOwotICAgICAgc29jay0+aW5mby5sc2Et
PmxvY2FsLnNhLnNpbl9wb3J0ID0gaHRvbnMgKHNvY2stPmxvY2FsX3BvcnQpOworICB7CisgICAg
LyogbWF5IHJldHVybiBBRl97SU5FVHxJTkVUNn0gZ3Vlc3NlZCBmcm9tIGxvY2FsX2hvc3QgKi8K
KyAgICBzd2l0Y2goYWRkcl9ndWVzc19mYW1pbHkoc29jay0+aW5mby5wcm90bywgc29jay0+bG9j
YWxfaG9zdCkpIHsKKyAgICAgIGNhc2UgQUZfSU5FVDoKKwlzb2NrLT5pbmZvLmxzYS0+bG9jYWwu
YWRkci5pbjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisJc29jay0+aW5mby5sc2EtPmxvY2FsLmFk
ZHIuaW40LnNpbl9hZGRyLnNfYWRkciA9CisJICAoc29jay0+bG9jYWxfaG9zdCA/IGdldGFkZHIg
KEdFVEFERFJfUkVTT0xWRSB8IEdFVEFERFJfV0FSTl9PTl9TSUdOQUwgfCBHRVRBRERSX0ZBVEFM
LAorCQkJCSAgICAgICBzb2NrLT5sb2NhbF9ob3N0LAorCQkJCSAgICAgICAwLAorCQkJCSAgICAg
ICBOVUxMLAorCQkJCSAgICAgICBOVUxMKQorCSAgIDogaHRvbmwgKElOQUREUl9BTlkpKTsKKwlz
b2NrLT5pbmZvLmxzYS0+bG9jYWwuYWRkci5pbjQuc2luX3BvcnQgPSBodG9ucyAoc29jay0+bG9j
YWxfcG9ydCk7CisJYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgICBjYXNlIEFGX0lO
RVQ2OgorCXsKKwkgIHN0cnVjdCBhZGRyaW5mbyBoaW50cyAsICphaTsKKwkgIGludCBlcnI7CisJ
ICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YgaGludHMpOworCSAgaGludHMuYWlfZmxhZ3M9QUlf
UEFTU0lWRTsKKwkgIGhpbnRzLmFpX2ZhbWlseT1BRl9JTkVUNjsKKwkgIC8qIGlmIG5vIGxvY2Fs
X2hvc3QgcHJvdmlkZWQsIGFzayBmb3IgSU42QUREUl9BTlkgLi4uICovCisJICBpZiAoKGVycj1n
ZXRhZGRyaW5mbyhzb2NrLT5sb2NhbF9ob3N0PyBzb2NrLT5sb2NhbF9ob3N0IDogIjo6IiwgCisJ
CSAgTlVMTCwgJmhpbnRzLCAmYWkpKT09MCkgeworCSAgICBzb2NrLT5pbmZvLmxzYS0+bG9jYWwu
YWRkci5pbjYgPSAqKChzdHJ1Y3Qgc29ja2FkZHJfaW42KikoYWktPmFpX2FkZHIpKTsKKwkgICAg
ZnJlZWFkZHJpbmZvKGFpKTsKKwkgIH0gZWxzZSB7CisJICAgIG1zZyAoTV9GQVRBTCwgImdldGFk
ZHJpbmZvKCkgZmFpbGVkIGZvciBsb2NhbCBcIiVzXCI6ICVzIiwKKwkJc29jay0+bG9jYWxfaG9z
dCwKKwkJZ2FpX3N0cmVycm9yKGVycikpOworCSAgfQorCSAgc29jay0+aW5mby5sc2EtPmxvY2Fs
LmFkZHIuaW42LnNpbjZfcG9ydCA9IGh0b25zIChzb2NrLT5sb2NhbF9wb3J0KTsKKwl9CisJYnJl
YWs7CisjZW5kaWYKICAgICB9CisgIH0KICAgCiAgIC8qIGJpbmQgdG8gbG9jYWwgYWRkcmVzcy9w
b3J0ICovCiAgIGlmIChzb2NrLT5iaW5kX2xvY2FsKQpAQCAtOTU1LDEwMSArMTA4NywxMjUgQEAK
ICAgICB7CiAgICAgICAvKiByZXNvbHZlIHJlbW90ZSBhZGRyZXNzIGlmIHVuZGVmaW5lZCAqLwog
ICAgICAgaWYgKCFhZGRyX2RlZmluZWQgKCZzb2NrLT5pbmZvLmxzYS0+cmVtb3RlKSkKLQl7Ci0J
ICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNhLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotCSAgc29j
ay0+aW5mby5sc2EtPnJlbW90ZS5zYS5zaW5fYWRkci5zX2FkZHIgPSAwOworICAgICAgeworICAg
ICAgICBzd2l0Y2goYWRkcl9ndWVzc19mYW1pbHkoc29jay0+aW5mby5wcm90bywgc29jay0+cmVt
b3RlX2hvc3QpKQorICAgICAgICB7CisgICAgICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICAgICBz
b2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIuaW40LnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAg
ICAgICAgIHNvY2stPmluZm8ubHNhLT5yZW1vdGUuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyID0g
MDsKIAogCSAgaWYgKHNvY2stPnJlbW90ZV9ob3N0KQotCSAgICB7Ci0JICAgICAgdW5zaWduZWQg
aW50IGZsYWdzID0gR0VUQUREUl9SRVNPTFZFfEdFVEFERFJfVVBEQVRFX01BTkFHRU1FTlRfU1RB
VEU7Ci0JICAgICAgaW50IHJldHJ5ID0gMDsKLQkgICAgICBib29sIHN0YXR1cyA9IGZhbHNlOwot
Ci0JICAgICAgaWYgKHNvY2stPmNvbm5lY3Rpb25fcHJvZmlsZXNfZGVmaW5lZCAmJiBzb2NrLT5y
ZXNvbHZlX3JldHJ5X3NlY29uZHMgPT0gUkVTT0xWX1JFVFJZX0lORklOSVRFKQotCQl7Ci0JCSAg
aWYgKHBoYXNlID09IDIpCi0JCSAgICBmbGFncyB8PSAoR0VUQUREUl9UUllfT05DRSB8IEdFVEFE
RFJfRkFUQUwpOwotCQkgIHJldHJ5ID0gMDsKLQkJfQotCSAgICAgIGVsc2UgaWYgKHBoYXNlID09
IDEpCi0JCXsKLQkJICBpZiAoc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzKQotCQkgICAgewot
CQkgICAgICByZXRyeSA9IDA7Ci0JCSAgICB9Ci0JCSAgZWxzZQotCQkgICAgewotCQkgICAgICBm
bGFncyB8PSAoR0VUQUREUl9GQVRBTCB8IEdFVEFERFJfTUVOVElPTl9SRVNPTFZFX1JFVFJZKTsK
LQkJICAgICAgcmV0cnkgPSAwOwotCQkgICAgfQotCQl9Ci0JICAgICAgZWxzZSBpZiAocGhhc2Ug
PT0gMikKLQkJewotCQkgIGlmIChzb2NrLT5yZXNvbHZlX3JldHJ5X3NlY29uZHMpCi0JCSAgICB7
Ci0JCSAgICAgIGZsYWdzIHw9IEdFVEFERFJfRkFUQUw7Ci0JCSAgICAgIHJldHJ5ID0gc29jay0+
cmVzb2x2ZV9yZXRyeV9zZWNvbmRzOwotCQkgICAgfQorICAgICAgICAgIHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGludCBmbGFncyA9IEdFVEFERFJfUkVTT0xWRXxHRVRBRERSX1VQREFURV9NQU5B
R0VNRU5UX1NUQVRFOworICAgICAgICAgICAgaW50IHJldHJ5ID0gMDsKKyAgICAgICAgICAgIGJv
b2wgc3RhdHVzID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChzb2NrLT5jb25uZWN0aW9uX3By
b2ZpbGVzX2RlZmluZWQgJiYgc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzID09IFJFU09MVl9S
RVRSWV9JTkZJTklURSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChwaGFz
ZSA9PSAyKQorICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gKEdFVEFERFJfVFJZX09OQ0UgfCBH
RVRBRERSX0ZBVEFMKTsKKyAgICAgICAgICAgICAgICByZXRyeSA9IDA7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgZWxzZSBpZiAocGhhc2UgPT0gMSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBpZiAoc29jay0+cmVzb2x2ZV9yZXRyeV9zZWNvbmRzKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0cnkgPSAwOworICAg
ICAgICAgICAgICAgICAgICB9CiAJCSAgZWxzZQotCQkgICAgewotCQkgICAgICBBU1NFUlQgKDAp
OwotCQkgICAgfQotCQl9Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAgQVNTRVJUICgwKTsKLQkJfQot
Ci0JICAgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5zYS5zaW5fYWRkci5zX2FkZHIgPSBnZXRh
ZGRyICgKLQkJICAgIGZsYWdzLAotCQkgICAgc29jay0+cmVtb3RlX2hvc3QsCi0JCSAgICByZXRy
eSwKLQkJICAgICZzdGF0dXMsCi0JCSAgICBzaWduYWxfcmVjZWl2ZWQpOwotCSAgICAgIAotCSAg
ICAgIGRtc2cgKERfU09DS0VUX0RFQlVHLCAiUkVTT0xWRV9SRU1PVEUgZmxhZ3M9MHglMDR4IHBo
YXNlPSVkIHJycz0lZCBzaWc9JWQgc3RhdHVzPSVkIiwKLQkJICAgZmxhZ3MsCi0JCSAgIHBoYXNl
LAotCQkgICByZXRyeSwKLQkJICAgc2lnbmFsX3JlY2VpdmVkID8gKnNpZ25hbF9yZWNlaXZlZCA6
IC0xLAotCQkgICBzdGF0dXMpOwotCi0JICAgICAgaWYgKHNpZ25hbF9yZWNlaXZlZCkKLQkJewot
CQkgIGlmICgqc2lnbmFsX3JlY2VpdmVkKQorICAgICAgICAgICAgICAgICAgICB7CisJICAgICAg
ICAgICAgICAgZmxhZ3MgfD0gKEdFVEFERFJfRkFUQUwgfCBHRVRBRERSX01FTlRJT05fUkVTT0xW
RV9SRVRSWSk7CisJICAgICAgICAgICAgICAgcmV0cnkgPSAwOworCSAgICAgICAgICAgIH0KKwkg
ICAgICAgICAgfQorCSAgICAgICAgICBlbHNlIGlmIChwaGFzZSA9PSAyKQorCSAgICAgICAgICB7
CisJICAgICAgICAgICAgaWYgKHNvY2stPnJlc29sdmVfcmV0cnlfc2Vjb25kcykKKwkgICAgICAg
ICAgICB7CisJICAgICAgICAgICAgICBmbGFncyB8PSBHRVRBRERSX0ZBVEFMOworCSAgICAgICAg
ICAgICAgcmV0cnkgPSBzb2NrLT5yZXNvbHZlX3JldHJ5X3NlY29uZHM7CisJICAgICAgICAgICAg
fQorCSAgICAgICAgICAgIGVsc2UKKwkgICAgICAgICAgICB7CisJICAgICAgICAgICAgICBBU1NF
UlQgKDApOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgfQorCSAgICAgICAgICBlbHNlCisJ
ICAgICAgICAgIHsKKwkgICAgICAgICAgICBBU1NFUlQgKDApOworCSAgICAgICAgICB9CisKKwkg
ICAgICAgICAgc29jay0+aW5mby5sc2EtPnJlbW90ZS5hZGRyLmluNC5zaW5fYWRkci5zX2FkZHIg
PSBnZXRhZGRyICgKKwkgICAgICAgICAgICAgIGZsYWdzLAorCSAgICAgICAgICAgICAgc29jay0+
cmVtb3RlX2hvc3QsCisJICAgICAgICAgICAgICByZXRyeSwKKwkgICAgICAgICAgICAgICZzdGF0
dXMsCisJICAgICAgICAgICAgICBzaWduYWxfcmVjZWl2ZWQpOworCQorCSAgICAgICAgICBkbXNn
IChEX1NPQ0tFVF9ERUJVRywgIlJFU09MVkVfUkVNT1RFIGZsYWdzPTB4JTA0eCBwaGFzZT0lZCBy
cnM9JWQgc2lnPSVkIHN0YXR1cz0lZCIsCisJICAgICAgICAgICAgICBmbGFncywKKwkgICAgICAg
ICAgICAgIHBoYXNlLAorCSAgICAgICAgICAgICAgcmV0cnksCisJICAgICAgICAgICAgICBzaWdu
YWxfcmVjZWl2ZWQgPyAqc2lnbmFsX3JlY2VpdmVkIDogLTEsCisJICAgICAgICAgICAgICBzdGF0
dXMpOworCisJICAgICAgICAgIGlmIChzaWduYWxfcmVjZWl2ZWQpCisJICAgICAgICAgIHsKKwkg
ICAgICAgICAgICBpZiAoKnNpZ25hbF9yZWNlaXZlZCkKKwkgICAgICAgICAgICAgIGdvdG8gZG9u
ZTsKKwkgICAgICAgICAgfQorCSAgICAgICAgICBpZiAoIXN0YXR1cykKKwkgICAgICAgICAgewor
CQkgICAgaWYgKHNpZ25hbF9yZWNlaXZlZCkKKwkJICAgICAgKnNpZ25hbF9yZWNlaXZlZCA9IFNJ
R1VTUjE7CiAJCSAgICBnb3RvIGRvbmU7Ci0JCX0KLQkgICAgICBpZiAoIXN0YXR1cykKLQkJewot
CQkgIGlmIChzaWduYWxfcmVjZWl2ZWQpCi0JCSAgICAqc2lnbmFsX3JlY2VpdmVkID0gU0lHVVNS
MTsKLQkJICBnb3RvIGRvbmU7Ci0JCX0KLQkgICAgfQorCQkgIH0KKwkgICAgICAgIH0KIAotCSAg
c29jay0+aW5mby5sc2EtPnJlbW90ZS5zYS5zaW5fcG9ydCA9IGh0b25zIChzb2NrLT5yZW1vdGVf
cG9ydCk7Ci0JfQorICAgICAgICAgIHNvY2stPmluZm8ubHNhLT5yZW1vdGUuYWRkci5pbjQuc2lu
X3BvcnQgPSBodG9ucyAoc29jay0+cmVtb3RlX3BvcnQpOworICAgICAgICAgIGJyZWFrOwogICAK
KyAgI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICAgICBjYXNlIEFGX0lORVQ2OiAvKiBqam9GSVhN
RTogaXB2NiBzaWduYWwgbG9naWMgKi8KKyAgICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qg
YWRkcmluZm8gaGludHMgLCAqYWk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAg
bWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mIGhpbnRzKTsKKyAgICAgICAgICAgIGhpbnRzLmFpX2Zs
YWdzPTA7CisgICAgICAgICAgICBoaW50cy5haV9mYW1pbHk9QUZfSU5FVDY7CisgICAgICAgICAg
ICBpZiAoKGVycj1nZXRhZGRyaW5mbyhzb2NrLT5yZW1vdGVfaG9zdD8gc29jay0+cmVtb3RlX2hv
c3QgOiAiOjoiICwgTlVMTCwgJmhpbnRzLCAmYWkpKT09MCkgeworICAgICAgICAgICAgICBzb2Nr
LT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIuaW42ID0gKigoc3RydWN0IHNvY2thZGRyX2luNiopKGFp
LT5haV9hZGRyKSk7CisgICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhhaSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICBtc2cgKE1fRkFUQUwsICJnZXRhZGRyaW5mbygpIGZh
aWxlZCBmb3IgcmVtb3RlIFwiJXNcIjogJXMiLAorICAgICAgICAgICAgICAgICAgc29jay0+cmVt
b3RlX2hvc3QsCisgICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLmFkZHIuaW42LnNpbjZf
cG9ydCA9IGh0b25zIChzb2NrLT5yZW1vdGVfcG9ydCk7CisgICAgICAgICAgfQorICAgICAgICAg
IGJyZWFrOworICAjZW5kaWYKKyAgICAgICAgfQorICAgICAgfQogICAgICAgLyogc2hvdWxkIHdl
IHJlLXVzZSBwcmV2aW91cyBhY3RpdmUgcmVtb3RlIGFkZHJlc3M/ICovCiAgICAgICBpZiAobGlu
a19zb2NrZXRfYWN0dWFsX2RlZmluZWQgKCZzb2NrLT5pbmZvLmxzYS0+YWN0dWFsKSkKLQl7Ci0J
ICBtc2cgKE1fSU5GTywgIlRDUC9VRFA6IFByZXNlcnZpbmcgcmVjZW50bHkgdXNlZCByZW1vdGUg
YWRkcmVzczogJXMiLAotCSAgICAgICBwcmludF9saW5rX3NvY2tldF9hY3R1YWwgKCZzb2NrLT5p
bmZvLmxzYS0+YWN0dWFsLCAmZ2MpKTsKLQkgIGlmIChyZW1vdGVfZHluYW1pYykKLQkgICAgKnJl
bW90ZV9keW5hbWljID0gTlVMTDsKLQl9CisgICAgICB7CisgICAgICAgIG1zZyAoTV9JTkZPLCAi
VENQL1VEUDogUHJlc2VydmluZyByZWNlbnRseSB1c2VkIHJlbW90ZSBhZGRyZXNzOiAlcyIsCisg
ICAgICAgICAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsICgmc29jay0+aW5mby5sc2EtPmFjdHVh
bCwgJmdjKSk7CisgICAgICAgIGlmIChyZW1vdGVfZHluYW1pYykKKyAgICAgICAgKnJlbW90ZV9k
eW5hbWljID0gTlVMTDsKKyAgICAgIH0KICAgICAgIGVsc2UKLQl7Ci0JICBDTEVBUiAoc29jay0+
aW5mby5sc2EtPmFjdHVhbCk7Ci0JICBzb2NrLT5pbmZvLmxzYS0+YWN0dWFsLmRlc3QgPSBzb2Nr
LT5pbmZvLmxzYS0+cmVtb3RlOwotCX0KLQorICAgICAgeworICAgICAgICBDTEVBUiAoc29jay0+
aW5mby5sc2EtPmFjdHVhbCk7CisgICAgICAgIHNvY2stPmluZm8ubHNhLT5hY3R1YWwuZGVzdCA9
IHNvY2stPmluZm8ubHNhLT5yZW1vdGU7CisgICAgICB9CiAgICAgICAvKiByZW1lbWJlciB0aGF0
IHdlIGZpbmlzaGVkICovCiAgICAgICBzb2NrLT5kaWRfcmVzb2x2ZV9yZW1vdGUgPSB0cnVlOwog
ICAgIH0KIAotIGRvbmU6Ci0gIGdjX2ZyZWUgKCZnYyk7CisgIGRvbmU6CisgICBnY19mcmVlICgm
Z2MpOwogfQogCiBzdHJ1Y3QgbGlua19zb2NrZXQgKgpAQCAtMTI2OCw3ICsxNDI0LDExIEBACiAJ
Z290byBkb25lOwogCiAgICAgICAvKiBUQ1AgY2xpZW50L3NlcnZlciAqLwotICAgICAgaWYgKHNv
Y2stPmluZm8ucHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSKQorICAgICAgaWYgKHNvY2stPmlu
Zm8ucHJvdG8gPT0gUFJPVE9fVENQdjRfU0VSVkVSCisjaWZkZWYgVVNFX1BGX0lORVQ2CisJfHxz
b2NrLT5pbmZvLnByb3RvID09IFBST1RPX1RDUHY2X1NFUlZFUgorI2VuZGlmCisJKQogCXsKIAkg
IHN3aXRjaCAoc29jay0+bW9kZSkKIAkgICAgewpAQCAtMTMwMyw3ICsxNDYzLDExIEBACiAJICAg
ICAgQVNTRVJUICgwKTsKIAkgICAgfQogCX0KLSAgICAgIGVsc2UgaWYgKHNvY2stPmluZm8ucHJv
dG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UKQorICAgICAgZWxzZSBpZiAoc29jay0+aW5mby5wcm90
byA9PSBQUk9UT19UQ1B2NF9DTElFTlQKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKwl8fHNvY2stPmlu
Zm8ucHJvdG8gPT0gUFJPVE9fVENQdjZfQ0xJRU5UCisjZW5kaWYKKwkpCiAJewogCiAjaWZkZWYg
R0VORVJBTF9QUk9YWV9TVVBQT1JUCkBAIC0xMzg4LDggKzE1NTIsOCBAQAogCSAgc29jay0+cmVt
b3RlX3BvcnQgPSBzb2NrLT5wcm94eV9kZXN0X3BvcnQ7CiAJICBzb2NrLT5kaWRfcmVzb2x2ZV9y
ZW1vdGUgPSBmYWxzZTsKIAotCSAgc29jay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LnNhLnNpbl9h
ZGRyLnNfYWRkciA9IDA7Ci0JICBzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLnNhLnNpbl9hZGRyLnNf
YWRkciA9IDA7CisJICBhZGRyX3plcm9faG9zdCgmc29jay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0
KTsKKwkgIGFkZHJfemVyb19ob3N0KCZzb2NrLT5pbmZvLmxzYS0+cmVtb3RlKTsKIAogCSAgcmVz
b2x2ZV9yZW1vdGUgKHNvY2ssIDEsIE5VTEwsIHNpZ25hbF9yZWNlaXZlZCk7CiAKQEAgLTE0MDQs
NyArMTU2OCw3IEBACiAgICAgICBpZiAocmVtb3RlX2NoYW5nZWQpCiAJewogCSAgbXNnIChNX0lO
Rk8sICJUQ1AvVURQOiBEeW5hbWljIHJlbW90ZSBhZGRyZXNzIGNoYW5nZWQgZHVyaW5nIFRDUCBj
b25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKLQkgIHNvY2stPmluZm8ubHNhLT5yZW1vdGUuc2Eu
c2luX2FkZHIuc19hZGRyID0gc29jay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0LnNhLnNpbl9hZGRy
LnNfYWRkcjsKKwkgIGFkZHJfY29weV9ob3N0KCZzb2NrLT5pbmZvLmxzYS0+cmVtb3RlLCAmc29j
ay0+aW5mby5sc2EtPmFjdHVhbC5kZXN0KTsKIAl9CiAgICAgfQogCkBAIC0xNTkzLDEzICsxNzU3
LDIwIEBACiB7CiAgIHN0cnVjdCBnY19hcmVuYSBnYyA9IGdjX25ldyAoKTsKIAotICBtc2cgKERf
TElOS19FUlJPUlMsCi0gICAgICAgIlRDUC9VRFA6IEluY29taW5nIHBhY2tldCByZWplY3RlZCBm
cm9tICVzWyVkXSwgZXhwZWN0ZWQgcGVlciBhZGRyZXNzOiAlcyAoYWxsb3cgdGhpcyBpbmNvbWlu
ZyBzb3VyY2UgYWRkcmVzcy9wb3J0IGJ5IHJlbW92aW5nIC0tcmVtb3RlIG9yIGFkZGluZyAtLWZs
b2F0KSIsCi0gICAgICAgcHJpbnRfbGlua19zb2NrZXRfYWN0dWFsIChmcm9tX2FkZHIsICZnYyks
Ci0gICAgICAgKGludClmcm9tX2FkZHItPmRlc3Quc2Euc2luX2ZhbWlseSwKLSAgICAgICBwcmlu
dF9zb2NrYWRkciAoJmluZm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgc3dpdGNoKGZyb21fYWRk
ci0+ZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSkKKyAgeworICAgIGNhc2UgQUZfSU5FVDoKKyNpZmRl
ZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OgorI2VuZGlmCisgICAgICBtc2cgKERf
TElOS19FUlJPUlMsCisJICAiVENQL1VEUDogSW5jb21pbmcgcGFja2V0IHJlamVjdGVkIGZyb20g
JXNbJWRdLCBleHBlY3RlZCBwZWVyIGFkZHJlc3M6ICVzIChhbGxvdyB0aGlzIGluY29taW5nIHNv
dXJjZSBhZGRyZXNzL3BvcnQgYnkgcmVtb3ZpbmcgLS1yZW1vdGUgb3IgYWRkaW5nIC0tZmxvYXQp
IiwKKwkgIHByaW50X2xpbmtfc29ja2V0X2FjdHVhbCAoZnJvbV9hZGRyLCAmZ2MpLAorCSAgKGlu
dClmcm9tX2FkZHItPmRlc3QuYWRkci5zYS5zYV9mYW1pbHksCisJICBwcmludF9zb2NrYWRkciAo
JmluZm8tPmxzYS0+cmVtb3RlLCAmZ2MpKTsKKyAgICAgIGJyZWFrOworICB9CiAgIGJ1Zi0+bGVu
ID0gMDsKLQogICBnY19mcmVlICgmZ2MpOwogfQogCkBAIC0xNjE0LDEwICsxNzg1LDI1IEBACiB7
CiAgIGNvbnN0IHN0cnVjdCBsaW5rX3NvY2tldF9hZGRyICpsc2EgPSBpbmZvLT5sc2E7CiAKKy8q
IAorICogVGhpcyBsb2dpYyBzdXBwb3J0cyAicmVkaXJlY3QtZ2F0ZXdheSIgc2VtYW50aWMsIHdo
aWNoIAorICogbWFrZXMgc2Vuc2Ugb25seSBmb3IgUEZfSU5FVCByb3V0ZXMgb3ZlciBQRl9JTkVU
IGVuZHBvaW50cworICoKKyAqIE1heWJlIGluIHRoZSBmdXR1cmUgY29uc2lkZXIgUEZfSU5FVDYg
ZW5kcG9pbnRzIGFsc28gLi4uCisgKiBieSBub3cganVzdCBpZ25vcmUgaXQKKyAqCisgKi8KKyNp
ZiBkZWZpbmVkICggVVNFX1BGX0lORVQ2ICkKKyAgaWYobHNhLT5hY3R1YWwuZGVzdC5hZGRyLnNh
LnNhX2ZhbWlseSAhPSBBRl9JTkVUKQorCSAgcmV0dXJuIDA7CisjZWxzZQorICBBU1NFUlQobHNh
LT5hY3R1YWwuZGVzdC5hZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKTsKKyNlbmRpZgorCiAg
IGlmIChsaW5rX3NvY2tldF9hY3R1YWxfZGVmaW5lZCAoJmxzYS0+YWN0dWFsKSkKLSAgICByZXR1
cm4gbnRvaGwgKGxzYS0+YWN0dWFsLmRlc3Quc2Euc2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1
cm4gbnRvaGwgKGxzYS0+YWN0dWFsLmRlc3QuYWRkci5pbjQuc2luX2FkZHIuc19hZGRyKTsKICAg
ZWxzZSBpZiAoYWRkcl9kZWZpbmVkICgmbHNhLT5yZW1vdGUpKQotICAgIHJldHVybiBudG9obCAo
bHNhLT5yZW1vdGUuc2Euc2luX2FkZHIuc19hZGRyKTsKKyAgICByZXR1cm4gbnRvaGwgKGxzYS0+
cmVtb3RlLmFkZHIuaW40LnNpbl9hZGRyLnNfYWRkcik7CiAgIGVsc2UKICAgICByZXR1cm4gMDsK
IH0KQEAgLTE4NDQsMjggKzIwMzAsNTggQEAKIAkJICAgY29uc3QgdW5zaWduZWQgaW50IGZsYWdz
LAogCQkgICBzdHJ1Y3QgZ2NfYXJlbmEgKmdjKQogewotICBpZiAoYWRkcikKLSAgICB7Ci0gICAg
ICBzdHJ1Y3QgYnVmZmVyIG91dCA9IGFsbG9jX2J1Zl9nYyAoNjQsIGdjKTsKLSAgICAgIGNvbnN0
IGludCBwb3J0ID0gbnRvaHMgKGFkZHItPnNhLnNpbl9wb3J0KTsKLQotICAgICAgbXV0ZXhfbG9j
a19zdGF0aWMgKExfSU5FVF9OVE9BKTsKLSAgICAgIGlmICghKGZsYWdzICYgUFNfRE9OVF9TSE9X
X0FERFIpKQotCWJ1Zl9wcmludGYgKCZvdXQsICIlcyIsIChhZGRyX2RlZmluZWQgKGFkZHIpID8g
aW5ldF9udG9hIChhZGRyLT5zYS5zaW5fYWRkcikgOiAiW3VuZGVmXSIpKTsKLSAgICAgIG11dGV4
X3VubG9ja19zdGF0aWMgKExfSU5FVF9OVE9BKTsKLQotICAgICAgaWYgKCgoZmxhZ3MgJiBQU19T
SE9XX1BPUlQpIHx8IChhZGRyX2RlZmluZWQgKGFkZHIpICYmIChmbGFncyAmIFBTX1NIT1dfUE9S
VF9JRl9ERUZJTkVEKSkpCi0JICAmJiBwb3J0KQotCXsKLQkgIGlmIChzZXBhcmF0b3IpCi0JICAg
IGJ1Zl9wcmludGYgKCZvdXQsICIlcyIsIHNlcGFyYXRvcik7Ci0KLQkgIGJ1Zl9wcmludGYgKCZv
dXQsICIlZCIsIHBvcnQpOwotCX0KLSAgICAgIHJldHVybiBCU1RSICgmb3V0KTsKLSAgICB9Ci0g
IGVsc2UKLSAgICByZXR1cm4gIltOVUxMXSI7CisgICBzdHJ1Y3QgYnVmZmVyIG91dDsKKyAgIGJv
b2wgYWRkcl9pc19kZWZpbmVkOworICAgaWYgKCFhZGRyKSB7CisgICAgIHJldHVybiAiW05VTExd
IjsKKyAgIH0KKyAgIGFkZHJfaXNfZGVmaW5lZCA9ICBhZGRyX2RlZmluZWQgKGFkZHIpOworICAg
c3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAgIGNhc2UgQUZfSU5FVDoKKyAg
ICAgICB7CisgICAgICAgY29uc3QgaW50IHBvcnQ9IG50b2hzIChhZGRyLT5hZGRyLmluNC5zaW5f
cG9ydCk7CisgICAgICAgb3V0ID0gYWxsb2NfYnVmX2djICgxMjgsIGdjKTsKKyAgICAgICBidWZf
cHV0cyAoJm91dCwgIltBRl9JTkVUXSIpOworICAgICAgIG11dGV4X2xvY2tfc3RhdGljIChMX0lO
RVRfTlRPQSk7CisgICAgICAgYnVmX3B1dHMgKCZvdXQsIChhZGRyX2lzX2RlZmluZWQgPyBpbmV0
X250b2EgKGFkZHItPmFkZHIuaW40LnNpbl9hZGRyKSA6ICJbdW5kZWZdIikpOworICAgICAgIG11
dGV4X3VubG9ja19zdGF0aWMgKExfSU5FVF9OVE9BKTsKKworICAgICAgIGlmICgoKGZsYWdzICYg
UFNfU0hPV19QT1JUKSB8fCAoYWRkcl9pc19kZWZpbmVkICYmIChmbGFncyAmIFBTX1NIT1dfUE9S
VF9JRl9ERUZJTkVEKSkpCisgICAgICAgICAgJiYgcG9ydCkKKyAgICAgICB7CisgICAgICAgICBp
ZiAoc2VwYXJhdG9yKQorCSAgIGJ1Zl9wcmludGYgKCZvdXQsICIlcyIsIHNlcGFyYXRvcik7CisK
KwkgYnVmX3ByaW50ZiAoJm91dCwgIiVkIiwgcG9ydCk7CisgICAgICAgfQorICAgICAgIH0KKyAg
ICAgICBicmVhazsKKyAjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAgIGNhc2UgQUZfSU5FVDY6Cisg
ICAgICAgeworICAgICAgIGNvbnN0IGludCBwb3J0PSBudG9ocyAoYWRkci0+YWRkci5pbjYuc2lu
Nl9wb3J0KTsKKyAgICAgICBjaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXSA9ICJbdW5kZWZdIjsK
KyAgICAgICBvdXQgPSBhbGxvY19idWZfZ2MgKDEyOCwgZ2MpOworICAgICAgIGJ1Zl9wdXRzICgm
b3V0LCAiW0FGX0lORVQ2XSIpOworICAgICAgIGlmIChhZGRyX2lzX2RlZmluZWQpCisgICAgICAg
eworICAgICAgICAgZ2V0bmFtZWluZm8oJmFkZHItPmFkZHIuc2EsIHNpemVvZiAoc3RydWN0IHNv
Y2thZGRyX2luNiksCisgICAgICAgICAgICAgYnVmLCBzaXplb2YgKGJ1ZiksIE5VTEwsIDAsIE5J
X05VTUVSSUNIT1NUKTsKKyAgICAgICAgIGJ1Zl9wdXRzICgmb3V0LCBidWYpOworICAgICAgIH0K
KyAgICAgICBpZiAoKChmbGFncyAmIFBTX1NIT1dfUE9SVCkgfHwgKGFkZHJfaXNfZGVmaW5lZCAm
JiAoZmxhZ3MgJiBQU19TSE9XX1BPUlRfSUZfREVGSU5FRCkpKQorICAgICAgICAgICAmJiBwb3J0
KQorICAgICAgIHsKKyAgICAgICAgIGlmIChzZXBhcmF0b3IpCisgICAgICAgICAgIGJ1Zl9wdXRz
ICgmb3V0LCBzZXBhcmF0b3IpOworCisgICAgICAgICBidWZfcHJpbnRmICgmb3V0LCAiJWQiLCBw
b3J0KTsKKyAgICAgICB9CisgICAgICAgfQorICAgICAgIGJyZWFrOworICNlbmRpZgorICAgfQor
ICAgIHJldHVybiBCU1RSICgmb3V0KTsKIH0KIAogY29uc3QgY2hhciAqCkBAIC0xODg1LDEyICsy
MTAxLDM4IEBACiAgICAgICBzdHJ1Y3QgYnVmZmVyIG91dCA9IGFsbG9jX2J1Zl9nYyAoMTI4LCBn
Yyk7CiAgICAgICBidWZfcHJpbnRmICgmb3V0LCAiJXMiLCBwcmludF9zb2NrYWRkcl9leCAoJmFj
dC0+ZGVzdCwgc2VwYXJhdG9yLCBmbGFncywgZ2MpKTsKICNpZiBFTkFCTEVfSVBfUEtUSU5GTwot
ICAgICAgaWYgKChmbGFncyAmIFBTX1NIT1dfUEtUSU5GTykgJiYgYWN0LT5waS5pcGlfc3BlY19k
c3Quc19hZGRyKQorICAgICAgaWYgKChmbGFncyAmIFBTX1NIT1dfUEtUSU5GTykgJiYgYWRkcl9k
ZWZpbmVkX2lwaShhY3QpKQogCXsKKwkgIHN3aXRjaChhY3QtPmRlc3QuYWRkci5zYS5zYV9mYW1p
bHkpCisJICB7CisJY2FzZSBBRl9JTkVUOgorCSAgewogCSAgc3RydWN0IG9wZW52cG5fc29ja2Fk
ZHIgc2E7CiAJICBDTEVBUiAoc2EpOwotCSAgc2Euc2Euc2luX2FkZHIgPSBhY3QtPnBpLmlwaV9z
cGVjX2RzdDsKKwkgIHNhLmFkZHIuaW40LnNpbl9hZGRyID0gYWN0LT5waS5pbjQuaXBpX3NwZWNf
ZHN0OwogCSAgYnVmX3ByaW50ZiAoJm91dCwgIiAodmlhICVzKSIsIHByaW50X3NvY2thZGRyX2V4
ICgmc2EsIHNlcGFyYXRvciwgMCwgZ2MpKTsKKwkgIH0KKwkgIGJyZWFrOworI2lmZGVmIFVTRV9Q
Rl9JTkVUNgorCWNhc2UgQUZfSU5FVDY6CisJICB7CisJICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYg
c2luNjsKKwkgICAgY2hhciBidWZbSU5FVDZfQUREUlNUUkxFTl0gPSAiW3VuZGVmXSI7CisJICAg
IG1lbXNldCgmc2luNiwgMCwgc2l6ZW9mIHNpbjYpOworCSAgICBzaW42LnNpbjZfZmFtaWx5ID0g
QUZfSU5FVDY7CisJICAgIHNpbjYuc2luNl9hZGRyID0gYWN0LT5waS5pbjYuaXBpNl9hZGRyOwor
CSAgICB7CisJICAgICAgaWYgKGdldG5hbWVpbmZvKChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luNiwg
c2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW42KSwKKwkJICAgIGJ1Ziwgc2l6ZW9mIChidWYpLCBO
VUxMLCAwLCBOSV9OVU1FUklDSE9TVCkgPT0gMCkKKwkJYnVmX3ByaW50ZiAoJm91dCwgIiAodmlh
ICVzKSIsIGJ1Zik7CisJICAgICAgZWxzZQorCQlidWZfcHJpbnRmICgmb3V0LCAiICh2aWEgW2dl
dG5hbWVpbmZvKCkgZXJyXSkiKTsKKwkgICAgfQorCSAgfQorCSAgYnJlYWs7CisjZW5kaWYKKwkg
IH0KKwogCX0KICNlbmRpZgogICAgICAgcmV0dXJuIEJTVFIgKCZvdXQpOwpAQCAtMTkyNiwyMSAr
MjE2OCwzNyBAQAogc2V0ZW52X3NvY2thZGRyIChzdHJ1Y3QgZW52X3NldCAqZXMsIGNvbnN0IGNo
YXIgKm5hbWVfcHJlZml4LCBjb25zdCBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciAqYWRkciwgY29u
c3QgYm9vbCBmbGFncykKIHsKICAgY2hhciBuYW1lX2J1ZlsyNTZdOworICBjaGFyIGJ1ZlsxMjhd
OwogCi0gIGlmIChmbGFncyAmIFNBX0lQX1BPUlQpCi0gICAgb3BlbnZwbl9zbnByaW50ZiAobmFt
ZV9idWYsIHNpemVvZiAobmFtZV9idWYpLCAiJXNfaXAiLCBuYW1lX3ByZWZpeCk7Ci0gIGVsc2UK
LSAgICBvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlcyIs
IG5hbWVfcHJlZml4KTsKKyAgc3dpdGNoKGFkZHItPmFkZHIuc2Euc2FfZmFtaWx5KSB7CisgICAg
Y2FzZSBBRl9JTkVUOgorICAgICAgaWYgKGZsYWdzICYgU0FfSVBfUE9SVCkKKwlvcGVudnBuX3Nu
cHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1lX2J1ZiksICIlc19pcCIsIG5hbWVfcHJlZml4
KTsKKyAgICAgIGVsc2UKKwlvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwgc2l6ZW9mIChuYW1l
X2J1ZiksICIlcyIsIG5hbWVfcHJlZml4KTsKIAotICBtdXRleF9sb2NrX3N0YXRpYyAoTF9JTkVU
X05UT0EpOwotICBzZXRlbnZfc3RyIChlcywgbmFtZV9idWYsIGluZXRfbnRvYSAoYWRkci0+c2Eu
c2luX2FkZHIpKTsKLSAgbXV0ZXhfdW5sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOworICAgICAg
bXV0ZXhfbG9ja19zdGF0aWMgKExfSU5FVF9OVE9BKTsKKyAgICAgIHNldGVudl9zdHIgKGVzLCBu
YW1lX2J1ZiwgaW5ldF9udG9hIChhZGRyLT5hZGRyLmluNC5zaW5fYWRkcikpOworICAgICAgbXV0
ZXhfdW5sb2NrX3N0YXRpYyAoTF9JTkVUX05UT0EpOworCisgICAgICBpZiAoKGZsYWdzICYgU0Ff
SVBfUE9SVCkgJiYgYWRkci0+YWRkci5pbjQuc2luX3BvcnQpCisgICAgICB7CisJb3BlbnZwbl9z
bnByaW50ZiAobmFtZV9idWYsIHNpemVvZiAobmFtZV9idWYpLCAiJXNfcG9ydCIsIG5hbWVfcHJl
Zml4KTsKKwlzZXRlbnZfaW50IChlcywgbmFtZV9idWYsIG50b2hzIChhZGRyLT5hZGRyLmluNC5z
aW5fcG9ydCkpOworICAgICAgfQorICAgICAgYnJlYWs7CisjaWZkZWYgVVNFX1BGX0lORVQ2Cisg
ICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgIG9wZW52cG5fc25wcmludGYgKG5hbWVfYnVmLCBzaXpl
b2YgKG5hbWVfYnVmKSwgIiVzX2lwNiIsIG5hbWVfcHJlZml4KTsKKyAgICAgIGdldG5hbWVpbmZv
KCZhZGRyLT5hZGRyLnNhLCBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpLAorCSAgYnVmLCBz
aXplb2YoYnVmKSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hPU1QpOworICAgICAgc2V0ZW52X3N0ciAo
ZXMsIG5hbWVfYnVmLCBidWYpOwogCi0gIGlmICgoZmxhZ3MgJiBTQV9JUF9QT1JUKSAmJiBhZGRy
LT5zYS5zaW5fcG9ydCkKLSAgICB7CiAgICAgICBvcGVudnBuX3NucHJpbnRmIChuYW1lX2J1Ziwg
c2l6ZW9mIChuYW1lX2J1ZiksICIlc19wb3J0IiwgbmFtZV9wcmVmaXgpOwotICAgICAgc2V0ZW52
X2ludCAoZXMsIG5hbWVfYnVmLCBudG9ocyAoYWRkci0+c2Euc2luX3BvcnQpKTsKLSAgICB9Cisg
ICAgICBzZXRlbnZfaW50IChlcywgbmFtZV9idWYsIG50b2hzIChhZGRyLT5hZGRyLmluNi5zaW42
X3BvcnQpKTsKKyAgICAgIGJyZWFrOworI2VuZGlmCisgIH0KIH0KIAogdm9pZApAQCAtMTk1MCw3
ICsyMjA4LDggQEAKICAgICB7CiAgICAgICBzdHJ1Y3Qgb3BlbnZwbl9zb2NrYWRkciBzaTsKICAg
ICAgIENMRUFSIChzaSk7Ci0gICAgICBzaS5zYS5zaW5fYWRkci5zX2FkZHIgPSBodG9ubCAoYWRk
cik7CisgICAgICBzaS5hZGRyLmluNC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgIHNpLmFk
ZHIuaW40LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sIChhZGRyKTsKICAgICAgIHNldGVudl9zb2Nr
YWRkciAoZXMsIG5hbWVfcHJlZml4LCAmc2ksIGZsYWdzKTsKICAgICB9CiB9CkBAIC0xOTcxLDE2
ICsyMjMwLDYzIEBACiBzdHJ1Y3QgcHJvdG9fbmFtZXMgewogICBjb25zdCBjaGFyICpzaG9ydF9m
b3JtOwogICBjb25zdCBjaGFyICpkaXNwbGF5X2Zvcm07CisgIGJvb2wJaXNfZGdyYW07CisgIGJv
b2wJaXNfbmV0OworICBzYV9mYW1pbHlfdCBwcm90b19hZjsKIH07CiAKIC8qIEluZGV4ZWQgYnkg
UFJPVE9feCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19uYW1lcyBwcm90b19uYW1lc1td
ID0gewotICB7InVkcCIsICAgICAgICAiVURQdjQifSwKLSAgeyJ0Y3Atc2VydmVyIiwgIlRDUHY0
X1NFUlZFUiJ9LAotICB7InRjcC1jbGllbnQiLCAiVENQdjRfQ0xJRU5UIn0sCi0gIHsidGNwIiwg
ICAgICAgICJUQ1B2NCJ9CitzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX25hbWVzIHByb3RvX25h
bWVzW1BST1RPX05dID0geworICB7InByb3RvLXVuaW5pdGlhbGl6ZWQiLCAgICAgICAgInByb3Rv
LU5PTkUiLDAsMCwgQUZfVU5TUEVDfSwKKyAgeyJ1ZHAiLCAgICAgICAgIlVEUHY0IiwxLDEsIEFG
X0lORVR9LAorICB7InRjcC1zZXJ2ZXIiLCAiVENQdjRfU0VSVkVSIiwwLDEsIEFGX0lORVR9LAor
ICB7InRjcC1jbGllbnQiLCAiVENQdjRfQ0xJRU5UIiwwLDEsIEFGX0lORVR9LAorICB7InRjcCIs
ICAgICAgICAiVENQdjQiLDAsMSwgQUZfSU5FVH0sCisjaWZkZWYgVVNFX1BGX0lORVQ2CisgIHsi
dWRwNiIgICAgICAgLCJVRFB2NiIsMSwxLCBBRl9JTkVUNn0sCisgIHsidGNwNi1zZXJ2ZXIiLCJU
Q1B2Nl9TRVJWRVIiLDAsMSwgQUZfSU5FVDZ9LAorICB7InRjcDYtY2xpZW50IiwiVENQdjZfQ0xJ
RU5UIiwwLDEsIEFGX0lORVQ2fSwKKyAgeyJ0Y3A2IiAgICAgICAsIlRDUHY2IiwwLDEsIEFGX0lO
RVQ2fSwKKyNlbmRpZgogfTsKIAorYm9vbAorcHJvdG9faXNfbmV0KGludCBwcm90bykKK3sKKyAg
aWYgKHByb3RvIDwgMCB8fCBwcm90byA+PSBQUk9UT19OKQorICAgIEFTU0VSVCgwKTsKKyAgcmV0
dXJuIHByb3RvX25hbWVzW3Byb3RvXS5pc19uZXQ7Cit9Citib29sCitwcm90b19pc19kZ3JhbShp
bnQgcHJvdG8pCit7CisgIGlmIChwcm90byA8IDAgfHwgcHJvdG8gPj0gUFJPVE9fTikKKyAgICBB
U1NFUlQoMCk7CisgIHJldHVybiBwcm90b19uYW1lc1twcm90b10uaXNfZGdyYW07Cit9Citib29s
Citwcm90b19pc191ZHAoaW50IHByb3RvKQoreworICBpZiAocHJvdG8gPCAwIHx8IHByb3RvID49
IFBST1RPX04pCisgICAgQVNTRVJUKDApOworICByZXR1cm4gcHJvdG9fbmFtZXNbcHJvdG9dLmlz
X2RncmFtJiZwcm90b19uYW1lc1twcm90b10uaXNfbmV0OworfQorYm9vbAorcHJvdG9faXNfdGNw
KGludCBwcm90bykKK3sKKyAgaWYgKHByb3RvIDwgMCB8fCBwcm90byA+PSBQUk9UT19OKQorICAg
IEFTU0VSVCgwKTsKKyAgcmV0dXJuICghcHJvdG9fbmFtZXNbcHJvdG9dLmlzX2RncmFtKSYmcHJv
dG9fbmFtZXNbcHJvdG9dLmlzX25ldDsKK30KKworc2FfZmFtaWx5X3QgCitwcm90b19zYV9mYW1p
bHkoaW50IHByb3RvKQoreworICBpZiAocHJvdG8gPCAwIHx8IHByb3RvID49IFBST1RPX04pCisg
ICAgQVNTRVJUKDApOworICByZXR1cm4gcHJvdG9fbmFtZXNbcHJvdG9dLnByb3RvX2FmOworfQor
CiBpbnQKIGFzY2lpMnByb3RvIChjb25zdCBjaGFyKiBwcm90b19uYW1lKQogewpAQCAtMjAyMCw2
ICsyMzI2LDQ2IEBACiAgIHJldHVybiBCU1RSICgmb3V0KTsKIH0KIAoraW50CithZGRyX2d1ZXNz
X2ZhbWlseShpbnQgcHJvdG8sIGNvbnN0IGNoYXIgKm5hbWUpIAoreworICBzYV9mYW1pbHlfdCBy
ZXQ7CisgIGlmIChwcm90bykgeworICAgIHJldHVybiBwcm90b19zYV9mYW1pbHkocHJvdG8pOwkv
KiBhbHJlYWR5IHN0YW1wZWQgKi8KKyAgfSAKKyNpZmRlZiBVU0VfUEZfVU5JWAorICBlbHNlIGlm
IChuYW1lICYmIG5hbWVbMF0gPT0gJy8nKSB7CisgICAgcmV0dXJuIEFGX1VOSVg7CisgIH0KKyNl
bmRpZgorI2lmZGVmIFVTRV9QRl9JTkVUNgorICBlbHNlIHsKKyAgICBzdHJ1Y3QgYWRkcmluZm8g
aGludHMgLCAqYWk7CisgICAgaW50IGVycjsKKyAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2Yg
aGludHMpOworICAgIGhpbnRzLmFpX2ZsYWdzPUFJX05VTUVSSUNIT1NUOworICAgIGlmICgoZXJy
PWdldGFkZHJpbmZvKG5hbWUsIE5VTEwsICZoaW50cywgJmFpKSk9PTApIHsKKyAgICAgIHJldD1h
aS0+YWlfZmFtaWx5OworICAgICAgZnJlZWFkZHJpbmZvKGFpKTsKKyAgICAgIHJldHVybiByZXQ7
CisgICAgfQorICB9CisjZW5kaWYKKyAgcmV0dXJuIEFGX0lORVQ7CS8qIGRlZmF1bHQgKi8KK30K
K2NvbnN0IGNoYXIgKgorYWRkcl9mYW1pbHlfbmFtZSAoaW50IGFmKSAKK3sKKyAgc3dpdGNoIChh
ZikgeworICAgIGNhc2UgQUZfSU5FVDogcmV0dXJuICJBRl9JTkVUIjsKKyAgICBjYXNlIEFGX0lO
RVQ2OiByZXR1cm4gIkFGX0lORVQ2IjsKKyNpZmRlZiBVU0VfUEZfVU5JWAorICAgIGNhc2UgQUZf
VU5JWDogcmV0dXJuICJBRl9VTklYIjsKKyNlbmRpZgorICB9CisgIHJldHVybiAiQUZfVU5TUEVD
IjsKK30KKwogLyoKICAqIEdpdmVuIGEgbG9jYWwgcHJvdG8sIHJldHVybiBsb2NhbCBwcm90bwog
ICogaWYgIXJlbW90ZSwgb3IgY29tcGF0aWJsZSByZW1vdGUgcHJvdG8KQEAgLTIwMzQsMTAgKzIz
ODAsMTUgQEAKICAgQVNTRVJUIChwcm90byA+PSAwICYmIHByb3RvIDwgUFJPVE9fTik7CiAgIGlm
IChyZW1vdGUpCiAgICAgewotICAgICAgaWYgKHByb3RvID09IFBST1RPX1RDUHY0X1NFUlZFUikK
LQlyZXR1cm4gUFJPVE9fVENQdjRfQ0xJRU5UOwotICAgICAgaWYgKHByb3RvID09IFBST1RPX1RD
UHY0X0NMSUVOVCkKLQlyZXR1cm4gUFJPVE9fVENQdjRfU0VSVkVSOworICAgICAgc3dpdGNoIChw
cm90bykKKyAgICAgIHsKKwljYXNlIFBST1RPX1RDUHY0X1NFUlZFUjogcmV0dXJuIFBST1RPX1RD
UHY0X0NMSUVOVDsKKwljYXNlIFBST1RPX1RDUHY0X0NMSUVOVDogcmV0dXJuIFBST1RPX1RDUHY0
X1NFUlZFUjsKKyNpZmRlZiBVU0VfUEZfSU5FVDYKKwljYXNlIFBST1RPX1RDUHY2X1NFUlZFUjog
cmV0dXJuIFBST1RPX1RDUHY2X0NMSUVOVDsKKwljYXNlIFBST1RPX1RDUHY2X0NMSUVOVDogcmV0
dXJuIFBST1RPX1RDUHY2X1NFUlZFUjsKKyNlbmRpZgorICAgICAgfQogICAgIH0KICAgcmV0dXJu
IHByb3RvOwogfQpAQCAtMjA5NiwxMCArMjQ0NywyNCBAQAogI2lmIEVOQUJMRV9JUF9QS1RJTkZP
CiAKICNwcmFnbWEgcGFjaygxKSAvKiBuZWVkZWQgdG8ga2VlcCBzdHJ1Y3R1cmUgc2l6ZSBjb25z
aXN0ZW50IGZvciAzMiB2cy4gNjQtYml0IGFyY2hpdGVjdHVyZXMgKi8KLXN0cnVjdCBvcGVudnBu
X3BrdGluZm8KK3N0cnVjdCBvcGVudnBuX2luNF9wa3RpbmZvCit7CisgIHN0cnVjdCBjbXNnaGRy
IGNtc2doZHI7CisgIHN0cnVjdCBpbl9wa3RpbmZvIHBpOworfTsKKyNpZmRlZiBVU0VfUEZfSU5F
VDYKK3N0cnVjdCBvcGVudnBuX2luNl9wa3RpbmZvCiB7CiAgIHN0cnVjdCBjbXNnaGRyIGNtc2do
ZHI7Ci0gIHN0cnVjdCBpbl9wa3RpbmZvIGluX3BrdGluZm87CisgIHN0cnVjdCBpbjZfcGt0aW5m
byBwaTY7Cit9OworI2VuZGlmCisKK3VuaW9uIG9wZW52cG5fcGt0aW5mbyB7CisgICAgICBzdHJ1
Y3Qgb3BlbnZwbl9pbjRfcGt0aW5mbyBjbXNncGk7CisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICAg
ICBzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbyBjbXNncGk2OworI2VuZGlmCiB9OwogI3ByYWdt
YSBwYWNrKCkKIApAQCAtMjExMCwxNSArMjQ3NSwxNSBAQAogCQkJCSAgICBzdHJ1Y3QgbGlua19z
b2NrZXRfYWN0dWFsICpmcm9tKQogewogICBzdHJ1Y3QgaW92ZWMgaW92OwotICBzdHJ1Y3Qgb3Bl
bnZwbl9wa3RpbmZvIG9waTsKKyAgdW5pb24gb3BlbnZwbl9wa3RpbmZvIG9waTsKICAgc3RydWN0
IG1zZ2hkciBtZXNnOwotICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoZnJvbS0+ZGVzdC5z
YSk7CisgIHNvY2tsZW5fdCBmcm9tbGVuID0gc2l6ZW9mIChmcm9tLT5kZXN0LmFkZHIpOwogCiAg
IGlvdi5pb3ZfYmFzZSA9IEJQVFIgKGJ1Zik7CiAgIGlvdi5pb3ZfbGVuID0gbWF4c2l6ZTsKICAg
bWVzZy5tc2dfaW92ID0gJmlvdjsKICAgbWVzZy5tc2dfaW92bGVuID0gMTsKLSAgbWVzZy5tc2df
bmFtZSA9ICZmcm9tLT5kZXN0LnNhOworICBtZXNnLm1zZ19uYW1lID0gJmZyb20tPmRlc3QuYWRk
cjsKICAgbWVzZy5tc2dfbmFtZWxlbiA9IGZyb21sZW47CiAgIG1lc2cubXNnX2NvbnRyb2wgPSAm
b3BpOwogICBtZXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mIChvcGkpOwpAQCAtMjEzNSw5ICsy
NTAwLDIxIEBACiAJICAmJiBjbXNnLT5jbXNnX2xlbiA+PSBzaXplb2YgKG9waSkpCiAJewogCSAg
c3RydWN0IGluX3BrdGluZm8gKnBrdGkgPSAoc3RydWN0IGluX3BrdGluZm8gKikgQ01TR19EQVRB
IChjbXNnKTsKLQkgIGZyb20tPnBpLmlwaV9pZmluZGV4ID0gcGt0aS0+aXBpX2lmaW5kZXg7Ci0J
ICBmcm9tLT5waS5pcGlfc3BlY19kc3QgPSBwa3RpLT5pcGlfc3BlY19kc3Q7CisJICBmcm9tLT5w
aS5pbjQuaXBpX2lmaW5kZXggPSBwa3RpLT5pcGlfaWZpbmRleDsKKwkgIGZyb20tPnBpLmluNC5p
cGlfc3BlY19kc3QgPSBwa3RpLT5pcGlfc3BlY19kc3Q7CiAJfQorI2lmZGVmIFVTRV9QRl9JTkVU
NgorICAgICAgZWxzZSBpZiAoY21zZyAhPSBOVUxMCisJICAmJiBDTVNHX05YVEhEUiAoJm1lc2cs
IGNtc2cpID09IE5VTEwKKwkgICYmIGNtc2ctPmNtc2dfbGV2ZWwgPT0gSVBQUk9UT19JUFY2IAor
CSAgJiYgY21zZy0+Y21zZ190eXBlID09IElQVjZfUEtUSU5GTworCSAgJiYgY21zZy0+Y21zZ19s
ZW4gPj0gc2l6ZW9mIChzdHJ1Y3Qgb3BlbnZwbl9pbjZfcGt0aW5mbykpCisJeworCSAgc3RydWN0
IGluNl9wa3RpbmZvICpwa3RpNiA9IChzdHJ1Y3QgaW42X3BrdGluZm8gKikgQ01TR19EQVRBIChj
bXNnKTsKKwkgIGZyb20tPnBpLmluNi5pcGk2X2lmaW5kZXggPSBwa3RpNi0+aXBpNl9pZmluZGV4
OworCSAgZnJvbS0+cGkuaW42LmlwaTZfYWRkciA9IHBrdGk2LT5pcGk2X2FkZHI7CisJfQorI2Vu
ZGlmCiAgICAgfQogICByZXR1cm4gZnJvbWxlbjsKIH0KQEAgLTIxNDksMTggKzI1MjYsMjAgQEAK
IAkJCSAgICBpbnQgbWF4c2l6ZSwKIAkJCSAgICBzdHJ1Y3QgbGlua19zb2NrZXRfYWN0dWFsICpm
cm9tKQogewotICBzb2NrbGVuX3QgZnJvbWxlbiA9IHNpemVvZiAoZnJvbS0+ZGVzdC5zYSk7Ci0g
IGZyb20tPmRlc3Quc2Euc2luX2FkZHIuc19hZGRyID0gMDsKKyAgc29ja2xlbl90IGZyb21sZW4g
PSBzaXplb2YgKGZyb20tPmRlc3QuYWRkcik7CisgIHNvY2tsZW5fdCBleHBlY3RlZGxlbiA9IGFm
X2FkZHJfc2l6ZShwcm90b19zYV9mYW1pbHkoc29jay0+aW5mby5wcm90bykpOworICBhZGRyX3pl
cm9faG9zdCgmZnJvbS0+ZGVzdCk7CiAgIEFTU0VSVCAoYnVmX3NhZmUgKGJ1ZiwgbWF4c2l6ZSkp
OwogI2lmIEVOQUJMRV9JUF9QS1RJTkZPCi0gIGlmIChzb2NrLT5zb2NrZmxhZ3MgJiBTRl9VU0Vf
SVBfUEtUSU5GTykKKyAgLyogQm90aCBQUk9UT19VRFB2NCBhbmQgUFJPVE9fVURQdjYgKi8KKyAg
aWYgKHByb3RvX2lzX3VkcChzb2NrLT5pbmZvLnByb3RvKSAmJiBzb2NrLT5zb2NrZmxhZ3MgJiBT
Rl9VU0VfSVBfUEtUSU5GTykKICAgICBmcm9tbGVuID0gbGlua19zb2NrZXRfcmVhZF91ZHBfcG9z
aXhfcmVjdm1zZyAoc29jaywgYnVmLCBtYXhzaXplLCBmcm9tKTsKICAgZWxzZQogI2VuZGlmCiAg
ICAgYnVmLT5sZW4gPSByZWN2ZnJvbSAoc29jay0+c2QsIEJQVFIgKGJ1ZiksIG1heHNpemUsIDAs
Ci0JCQkgKHN0cnVjdCBzb2NrYWRkciAqKSAmZnJvbS0+ZGVzdC5zYSwgJmZyb21sZW4pOwotICBp
ZiAoZnJvbWxlbiAhPSBzaXplb2YgKGZyb20tPmRlc3Quc2EpKQotICAgIGJhZF9hZGRyZXNzX2xl
bmd0aCAoZnJvbWxlbiwgc2l6ZW9mIChmcm9tLT5kZXN0LnNhKSk7CisJCQkgJmZyb20tPmRlc3Qu
YWRkci5zYSwgJmZyb21sZW4pOworICBpZiAoYnVmLT5sZW4gPj0gMCAmJiBleHBlY3RlZGxlbiAm
JiBmcm9tbGVuICE9IGV4cGVjdGVkbGVuKQorICAgIGJhZF9hZGRyZXNzX2xlbmd0aCAoZnJvbWxl
biwgZXhwZWN0ZWRsZW4pOwogICByZXR1cm4gYnVmLT5sZW47CiB9CiAKQEAgLTIxOTcsMjYgKzI1
NzYsNTIgQEAKICAgc3RydWN0IGlvdmVjIGlvdjsKICAgc3RydWN0IG1zZ2hkciBtZXNnOwogICBz
dHJ1Y3QgY21zZ2hkciAqY21zZzsKLSAgc3RydWN0IGluX3BrdGluZm8gKnBrdGk7Ci0gIHN0cnVj
dCBvcGVudnBuX3BrdGluZm8gb3BpOwogCiAgIGlvdi5pb3ZfYmFzZSA9IEJQVFIgKGJ1Zik7CiAg
IGlvdi5pb3ZfbGVuID0gQkxFTiAoYnVmKTsKICAgbWVzZy5tc2dfaW92ID0gJmlvdjsKICAgbWVz
Zy5tc2dfaW92bGVuID0gMTsKLSAgbWVzZy5tc2dfbmFtZSA9ICZ0by0+ZGVzdC5zYTsKLSAgbWVz
Zy5tc2dfbmFtZWxlbiA9IHNpemVvZiAodG8tPmRlc3Quc2EpOwotICBtZXNnLm1zZ19jb250cm9s
ID0gJm9waTsKLSAgbWVzZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZiAob3BpKTsKLSAgbWVzZy5t
c2dfZmxhZ3MgPSAwOwotICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOwotICBjbXNnLT5j
bXNnX2xlbiA9IHNpemVvZiAob3BpKTsKLSAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9JUDsKLSAg
Y21zZy0+Y21zZ190eXBlID0gSVBfUEtUSU5GTzsKLSAgcGt0aSA9IChzdHJ1Y3QgaW5fcGt0aW5m
byAqKSBDTVNHX0RBVEEgKGNtc2cpOwotICBwa3RpLT5pcGlfaWZpbmRleCA9IHRvLT5waS5pcGlf
aWZpbmRleDsKLSAgcGt0aS0+aXBpX3NwZWNfZHN0ID0gdG8tPnBpLmlwaV9zcGVjX2RzdDsKLSAg
cGt0aS0+aXBpX2FkZHIuc19hZGRyID0gMDsKKyAgc3dpdGNoIChzb2NrLT5pbmZvLmxzYS0+cmVt
b3RlLmFkZHIuc2Euc2FfZmFtaWx5KQorICB7CisgICAgY2FzZSBBRl9JTkVUOiB7CisJICBzdHJ1
Y3Qgb3BlbnZwbl9pbjRfcGt0aW5mbyBvcGk7CisJICBzdHJ1Y3QgaW5fcGt0aW5mbyAqcGt0aTsK
KwkgIG1lc2cubXNnX25hbWUgPSAmdG8tPmRlc3QuYWRkci5zYTsKKwkgIG1lc2cubXNnX25hbWVs
ZW4gPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbik7CisJICBtZXNnLm1zZ19jb250cm9sID0g
Jm9waTsKKwkgIG1lc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YgKG9waSk7CisJICBtZXNnLm1z
Z19mbGFncyA9IDA7CisJICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOworCSAgY21zZy0+
Y21zZ19sZW4gPSBzaXplb2YgKG9waSk7CisJICBjbXNnLT5jbXNnX2xldmVsID0gU09MX0lQOwor
CSAgY21zZy0+Y21zZ190eXBlID0gSVBfUEtUSU5GTzsKKwkgIHBrdGkgPSAoc3RydWN0IGluX3Br
dGluZm8gKikgQ01TR19EQVRBIChjbXNnKTsKKwkgIHBrdGktPmlwaV9pZmluZGV4ID0gdG8tPnBp
LmluNC5pcGlfaWZpbmRleDsKKwkgIHBrdGktPmlwaV9zcGVjX2RzdCA9IHRvLT5waS5pbjQuaXBp
X3NwZWNfZHN0OworCSAgcGt0aS0+aXBpX2FkZHIuc19hZGRyID0gMDsKKwkgIGJyZWFrOworICAg
IH0KKyNpZmRlZiBVU0VfUEZfSU5FVDYKKyAgICBjYXNlIEFGX0lORVQ2OiB7CisJICBzdHJ1Y3Qg
b3BlbnZwbl9pbjZfcGt0aW5mbyBvcGk2OworCSAgc3RydWN0IGluNl9wa3RpbmZvICpwa3RpNjsK
KwkgIG1lc2cubXNnX25hbWUgPSAmdG8tPmRlc3QuYWRkci5zYTsKKwkgIG1lc2cubXNnX25hbWVs
ZW4gPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworCSAgbWVzZy5tc2dfY29udHJvbCA9
ICZvcGk2OworCSAgbWVzZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZiAob3BpNik7CisJICBtZXNn
Lm1zZ19mbGFncyA9IDA7CisJICBjbXNnID0gQ01TR19GSVJTVEhEUiAoJm1lc2cpOworCSAgY21z
Zy0+Y21zZ19sZW4gPSBzaXplb2YgKG9waTYpOworCSAgY21zZy0+Y21zZ19sZXZlbCA9IElQUFJP
VE9fSVBWNjsKKwkgIGNtc2ctPmNtc2dfdHlwZSA9IElQVjZfUEtUSU5GTzsKKwkgIHBrdGk2ID0g
KHN0cnVjdCBpbjZfcGt0aW5mbyAqKSBDTVNHX0RBVEEgKGNtc2cpOworCSAgcGt0aTYtPmlwaTZf
aWZpbmRleCA9IHRvLT5waS5pbjYuaXBpNl9pZmluZGV4OworCSAgcGt0aTYtPmlwaTZfYWRkciA9
IHRvLT5waS5pbjYuaXBpNl9hZGRyOworCSAgYnJlYWs7CisgICAgfQorI2VuZGlmCisgICAgZGVm
YXVsdDogQVNTRVJUKDApOworICB9CiAgIHJldHVybiBzZW5kbXNnIChzb2NrLT5zZCwgJm1lc2cs
IDApOwogfQogCkBAIC0yMzYwLDcgKzI3NjUsNyBAQAogCXsKIAkgIC8qIHNldCBkZXN0aW5hdGlv
biBhZGRyZXNzIGZvciBVRFAgd3JpdGVzICovCiAJICBzb2NrLT53cml0ZXMuYWRkcl9kZWZpbmVk
ID0gdHJ1ZTsKLQkgIHNvY2stPndyaXRlcy5hZGRyID0gdG8tPmRlc3Quc2E7CisJICBzb2NrLT53
cml0ZXMuYWRkciA9IHRvLT5kZXN0LmFkZHIuaW40OwogCSAgc29jay0+d3JpdGVzLmFkZHJsZW4g
PSBzaXplb2YgKHNvY2stPndyaXRlcy5hZGRyKTsKIAogCSAgc3RhdHVzID0gV1NBU2VuZFRvKApA
QCAtMjUxNiwxMCArMjkyMSwxMCBAQAogCXsKIAkgIGlmIChpby0+YWRkcmxlbiAhPSBzaXplb2Yg
KGlvLT5hZGRyKSkKIAkgICAgYmFkX2FkZHJlc3NfbGVuZ3RoIChpby0+YWRkcmxlbiwgc2l6ZW9m
IChpby0+YWRkcikpOwotCSAgZnJvbS0+ZGVzdC5zYSA9IGlvLT5hZGRyOworCSAgZnJvbS0+ZGVz
dC5hZGRyLnNhID0gaW8tPmFkZHI7CiAJfQogICAgICAgZWxzZQotCUNMRUFSIChmcm9tLT5kZXN0
LnNhKTsKKwlDTEVBUiAoZnJvbS0+ZGVzdC5hZGRyLnNhKTsKICAgICB9CiAgIAogICBpZiAoYnVm
KQpkaWZmIC0tZ2l0IGEvb3B0aW9ucy5jIGIvb3B0aW9ucy5jCi0tLSBhL29wdGlvbnMuYworKysg
Yi9vcHRpb25zLmMKQEAgLTczLDYgKzczLDEyIEBACiAjaWZkZWYgRU5BQkxFX1BLQ1MxMQogICAi
IFtQS0NTMTFdIgogI2VuZGlmCisjaWZkZWYgRU5BQkxFX0lQX1BLVElORk8KKyAgIiBbTUhdIgor
I2VuZGlmCisjaWZkZWYgVVNFX1BGX0lORVQ2CisgICIgW1BGX0lORVQ2XSIKKyNlbmRpZgogICAi
IGJ1aWx0IG9uICIgX19EQVRFX18KIDsKIApAQCAtOTMsNiArOTksOSBAQAogICAiLS1tb2RlIG0g
ICAgICAgIDogTWFqb3IgbW9kZSwgbSA9ICdwMnAnIChkZWZhdWx0LCBwb2ludC10by1wb2ludCkg
b3IgJ3NlcnZlcicuXG4iCiAgICItLXByb3RvIHAgICAgICAgOiBVc2UgcHJvdG9jb2wgcCBmb3Ig
Y29tbXVuaWNhdGluZyB3aXRoIHBlZXIuXG4iCiAgICIgICAgICAgICAgICAgICAgICBwID0gdWRw
IChkZWZhdWx0KSwgdGNwLXNlcnZlciwgb3IgdGNwLWNsaWVudFxuIgorI2lmZGVmIFVTRV9QRl9J
TkVUNgorICAiICAgICAgICAgICAgICAgICAgcCA9IHVkcDYsIHRjcDYtc2VydmVyLCBvciB0Y3A2
LWNsaWVudCAoSVB2NilcbiIKKyNlbmRpZgogICAiLS1jb25uZWN0LXJldHJ5IG4gOiBGb3IgLS1w
cm90byB0Y3AtY2xpZW50LCBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0XG4iCiAgICIgICAgICAg
ICAgICAgICAgICAgIGJldHdlZW4gY29ubmVjdGlvbiByZXRyaWVzIChkZWZhdWx0PSVkKS5cbiIK
ICAgIi0tY29ubmVjdC10aW1lb3V0IG4gOiBGb3IgLS1wcm90byB0Y3AtY2xpZW50LCBjb25uZWN0
aW9uIHRpbWVvdXQgKGluIHNlY29uZHMpLlxuIgpAQCAtMTQ4OCwxMCArMTQ5NywxMCBAQAogICAg
KiBTYW5pdHkgY2hlY2sgb24gVENQIG1vZGUgb3B0aW9ucwogICAgKi8KIAotICBpZiAoY2UtPmNv
bm5lY3RfcmV0cnlfZGVmaW5lZCAmJiBjZS0+cHJvdG8gIT0gUFJPVE9fVENQdjRfQ0xJRU5UKQor
ICBpZiAoY2UtPmNvbm5lY3RfcmV0cnlfZGVmaW5lZCAmJiBjZS0+cHJvdG8gIT0gUFJPVE9fVENQ
djRfQ0xJRU5UICYmIGNlLT5wcm90byAhPSBQUk9UT19UQ1B2Nl9DTElFTlQpCiAgICAgbXNnIChN
X1VTQUdFLCAiLS1jb25uZWN0LXJldHJ5IGRvZXNuJ3QgbWFrZSBzZW5zZSB1bmxlc3MgYWxzbyB1
c2VkIHdpdGggLS1wcm90byB0Y3AtY2xpZW50Iik7CiAKLSAgaWYgKGNlLT5jb25uZWN0X3RpbWVv
dXRfZGVmaW5lZCAmJiBjZS0+cHJvdG8gIT0gUFJPVE9fVENQdjRfQ0xJRU5UKQorICBpZiAoY2Ut
PmNvbm5lY3RfdGltZW91dF9kZWZpbmVkICYmIGNlLT5wcm90byAhPSBQUk9UT19UQ1B2NF9DTElF
TlQgJiYgY2UtPnByb3RvICE9IFBST1RPX1RDUHY2X0NMSUVOVCkKICAgICBtc2cgKE1fVVNBR0Us
ICItLWNvbm5lY3QtdGltZW91dCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdW5sZXNzIGFsc28gdXNlZCB3
aXRoIC0tcHJvdG8gdGNwLWNsaWVudCIpOwogCiAgIC8qCkBAIC0xNTAxLDcgKzE1MTAsNyBAQAog
ICAgIG1zZyAoTV9VU0FHRSwgIm9ubHkgb25lIG9mIC0tdHVuLW10dSBvciAtLWxpbmstbXR1IG1h
eSBiZSBkZWZpbmVkIChub3RlIHRoYXQgLS1pZmNvbmZpZyBpbXBsaWVzIC0tbGluay1tdHUgJWQp
IiwgTElOS19NVFVfREVGQVVMVCk7CiAKICNpZmRlZiBFTkFCTEVfT0NDCi0gIGlmIChjZS0+cHJv
dG8gIT0gUFJPVE9fVURQdjQgJiYgb3B0aW9ucy0+bXR1X3Rlc3QpCisgIGlmICghcHJvdG9faXNf
dWRwKGNlLT5wcm90bykgJiYgb3B0aW9ucy0+bXR1X3Rlc3QpCiAgICAgbXNnIChNX1VTQUdFLCAi
LS1tdHUtdGVzdCBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1wcm90byB1ZHAiKTsKICNlbmRpZgog
CkBAIC0xNTE0LDcgKzE1MjMsOSBAQAogICAgKiBTYW5pdHkgY2hlY2sgb24gLS1sb2NhbCwgLS1y
ZW1vdGUsIGFuZCAtLWlmY29uZmlnCiAgICAqLwogCi0gIGlmIChzdHJpbmdfZGVmaW5lZF9lcXVh
bCAoY2UtPmxvY2FsLCBjZS0+cmVtb3RlKQorCisgIGlmIChwcm90b19pc19uZXQoY2UtPnByb3Rv
KQorICAgICAgJiYgc3RyaW5nX2RlZmluZWRfZXF1YWwgKGNlLT5sb2NhbCwgY2UtPnJlbW90ZSkK
ICAgICAgICYmIGNlLT5sb2NhbF9wb3J0ID09IGNlLT5yZW1vdGVfcG9ydCkKICAgICBtc2cgKE1f
VVNBR0UsICItLXJlbW90ZSBhbmQgLS1sb2NhbCBhZGRyZXNzZXMgYXJlIHRoZSBzYW1lIik7CiAg
IApAQCAtMTU3NSwxNiArMTU4NiwxNiBAQAogICAgKi8KIAogI2lmZGVmIEVOQUJMRV9GUkFHTUVO
VAotICBpZiAoY2UtPnByb3RvICE9IFBST1RPX1VEUHY0ICYmIG9wdGlvbnMtPmZyYWdtZW50KQor
ICBpZiAoIXByb3RvX2lzX3VkcChjZS0+cHJvdG8pICYmIG9wdGlvbnMtPmZyYWdtZW50KQogICAg
IG1zZyAoTV9VU0FHRSwgIi0tZnJhZ21lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tcHJvdG8g
dWRwIik7CiAjZW5kaWYKIAogI2lmZGVmIEVOQUJMRV9PQ0MKLSAgaWYgKGNlLT5wcm90byAhPSBQ
Uk9UT19VRFB2NCAmJiBvcHRpb25zLT5leHBsaWNpdF9leGl0X25vdGlmaWNhdGlvbikKKyAgaWYg
KCFwcm90b19pc191ZHAoY2UtPnByb3RvKSAmJiBvcHRpb25zLT5leHBsaWNpdF9leGl0X25vdGlm
aWNhdGlvbikKICAgICBtc2cgKE1fVVNBR0UsICItLWV4cGxpY2l0LWV4aXQtbm90aWZ5IGNhbiBv
bmx5IGJlIHVzZWQgd2l0aCAtLXByb3RvIHVkcCIpOwogI2VuZGlmCiAKLSAgaWYgKCFjZS0+cmVt
b3RlICYmIGNlLT5wcm90byA9PSBQUk9UT19UQ1B2NF9DTElFTlQpCisgIGlmICghY2UtPnJlbW90
ZSAmJiAoY2UtPnByb3RvID09IFBST1RPX1RDUHY0X0NMSUVOVHx8Y2UtPnByb3RvID09IFBST1RP
X1RDUHY2X0NMSUVOVCkpCiAgICAgbXNnIChNX1VTQUdFLCAiLS1yZW1vdGUgTVVTVCBiZSB1c2Vk
IGluIFRDUCBDbGllbnQgbW9kZSIpOwogCiAjaWZkZWYgRU5BQkxFX0hUVFBfUFJPWFkKQEAgLTE2
MDIsNyArMTYxMyw4IEBACiAgICAgbXNnIChNX1VTQUdFLCAiLS1zb2Nrcy1wcm94eSBjYW4gbm90
IGJlIHVzZWQgaW4gVENQIFNlcnZlciBtb2RlIik7CiAjZW5kaWYKIAotICBpZiAoY2UtPnByb3Rv
ID09IFBST1RPX1RDUHY0X1NFUlZFUiAmJiBjb25uZWN0aW9uX2xpc3RfZGVmaW5lZCAob3B0aW9u
cykpCisgIGlmICgoY2UtPnByb3RvID09IFBST1RPX1RDUHY0X1NFUlZFUnx8Y2UtPnByb3RvID09
IFBST1RPX1RDUHY2X1NFUlZFUikKKyAgICAgICAgICYmIGNvbm5lY3Rpb25fbGlzdF9kZWZpbmVk
IChvcHRpb25zKSkKICAgICBtc2cgKE1fVVNBR0UsICJUQ1Agc2VydmVyIG1vZGUgYWxsb3dzIGF0
IG1vc3Qgb25lIC0tcmVtb3RlIGFkZHJlc3MiKTsKIAogI2lmIFAyTVBfU0VSVkVSCkBAIC0xNjE2
LDcgKzE2MjgsNyBAQAogCW1zZyAoTV9VU0FHRSwgIi0tbW9kZSBzZXJ2ZXIgb25seSB3b3JrcyB3
aXRoIC0tZGV2IHR1biBvciAtLWRldiB0YXAiKTsKICAgICAgIGlmIChvcHRpb25zLT5wdWxsKQog
CW1zZyAoTV9VU0FHRSwgIi0tcHVsbCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbW9kZSBzZXJ2ZXIi
KTsKLSAgICAgIGlmICghKGNlLT5wcm90byA9PSBQUk9UT19VRFB2NCB8fCBjZS0+cHJvdG8gPT0g
UFJPVE9fVENQdjRfU0VSVkVSKSkKKyAgICAgIGlmICghKHByb3RvX2lzX3VkcChjZS0+cHJvdG8p
IHx8IGNlLT5wcm90byA9PSBQUk9UT19UQ1B2NF9TRVJWRVIgfHwgY2UtPnByb3RvID09IFBST1RP
X1RDUHY2X1NFUlZFUikpCiAJbXNnIChNX1VTQUdFLCAiLS1tb2RlIHNlcnZlciBjdXJyZW50bHkg
b25seSBzdXBwb3J0cyAtLXByb3RvIHVkcCBvciAtLXByb3RvIHRjcC1zZXJ2ZXIiKTsKICNpZiBQ
T1JUX1NIQVJFCiAgICAgICBpZiAoKG9wdGlvbnMtPnBvcnRfc2hhcmVfaG9zdCB8fCBvcHRpb25z
LT5wb3J0X3NoYXJlX3BvcnQpICYmIGNlLT5wcm90byAhPSBQUk9UT19UQ1B2NF9TRVJWRVIpCkBA
IC0xNjQ4LDkgKzE2NjAsOSBAQAogCW1zZyAoTV9VU0FHRSwgIi0taW5ldGQgY2Fubm90IGJlIHVz
ZWQgd2l0aCAtLW1vZGUgc2VydmVyIik7CiAgICAgICBpZiAob3B0aW9ucy0+aXBjaGFuZ2UpCiAJ
bXNnIChNX1VTQUdFLCAiLS1pcGNoYW5nZSBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbW9kZSBzZXJ2
ZXIgKHVzZSAtLWNsaWVudC1jb25uZWN0IGluc3RlYWQpIik7Ci0gICAgICBpZiAoIShjZS0+cHJv
dG8gPT0gUFJPVE9fVURQdjQgfHwgY2UtPnByb3RvID09IFBST1RPX1RDUHY0X1NFUlZFUikpCi0J
bXNnIChNX1VTQUdFLCAiLS1tb2RlIHNlcnZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAtLXBy
b3RvIHVkcCBvciAtLXByb3RvIHRjcC1zZXJ2ZXIiKTsKLSAgICAgIGlmIChjZS0+cHJvdG8gIT0g
UFJPVE9fVURQdjQgJiYgKG9wdGlvbnMtPmNmX21heCB8fCBvcHRpb25zLT5jZl9wZXIpKQorICAg
ICAgaWYgKCEocHJvdG9faXNfZGdyYW0oY2UtPnByb3RvKSB8fCBjZS0+cHJvdG8gPT0gUFJPVE9f
VENQdjRfU0VSVkVSIHx8IGNlLT5wcm90byA9PSBQUk9UT19UQ1B2Nl9TRVJWRVIgKSkKKyAgICAg
ICAgbXNnIChNX1VTQUdFLCAiLS1tb2RlIHNlcnZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAt
LXByb3RvIHVkcCBvciAtLXByb3RvIHRjcC1zZXJ2ZXIgKGFsc28gdWRwNi90Y3A2KSIpOworICAg
ICAgaWYgKCFwcm90b19pc191ZHAoY2UtPnByb3RvKSAmJiAob3B0aW9ucy0+Y2ZfbWF4IHx8IG9w
dGlvbnMtPmNmX3BlcikpCiAJbXNnIChNX1VTQUdFLCAiLS1jb25uZWN0LWZyZXEgb25seSB3b3Jr
cyB3aXRoIC0tbW9kZSBzZXJ2ZXIgLS1wcm90byB1ZHAuICBUcnkgLS1tYXgtY2xpZW50cyBpbnN0
ZWFkLiIpOwogICAgICAgaWYgKCEoZGV2ID09IERFVl9UWVBFX1RBUCB8fCAoZGV2ID09IERFVl9U
WVBFX1RVTiAmJiBvcHRpb25zLT50b3BvbG9neSA9PSBUT1BfU1VCTkVUKSkgJiYgb3B0aW9ucy0+
aWZjb25maWdfcG9vbF9uZXRtYXNrKQogCW1zZyAoTV9VU0FHRSwgIlRoZSB0aGlyZCBwYXJhbWV0
ZXIgdG8gLS1pZmNvbmZpZy1wb29sIChuZXRtYXNrKSBpcyBvbmx5IHZhbGlkIGluIC0tZGV2IHRh
cCBtb2RlIik7CkBAIC0xNzMwLDcgKzE3NDIsNyBAQAogICAvKgogICAgKiBDaGVjayBjb25zaXN0
ZW5jeSBvZiByZXBsYXkgb3B0aW9ucwogICAgKi8KLSAgaWYgKChjZS0+cHJvdG8gIT0gUFJPVE9f
VURQdjQpCisgIGlmICgoIXByb3RvX2lzX3VkcChjZS0+cHJvdG8pKQogICAgICAgJiYgKG9wdGlv
bnMtPnJlcGxheV93aW5kb3cgIT0gZGVmYXVsdHMucmVwbGF5X3dpbmRvdwogCSAgfHwgb3B0aW9u
cy0+cmVwbGF5X3RpbWUgIT0gZGVmYXVsdHMucmVwbGF5X3RpbWUpKQogICAgIG1zZyAoTV9VU0FH
RSwgIi0tcmVwbGF5LXdpbmRvdyBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1wcm90byB1ZHAiKTsK
QEAgLTE4OTIsNiArMTkwNCwxMCBAQAogICAgIHsKICAgICAgIGlmIChjZS0+cHJvdG8gPT0gUFJP
VE9fVENQdjQpCiAJY2UtPnByb3RvID0gUFJPVE9fVENQdjRfU0VSVkVSOworI2lmZGVmIFVTRV9Q
Rl9JTkVUNgorICAgICAgZWxzZSBpZiAoY2UtPnByb3RvID09IFBST1RPX1RDUHY2KQorICAgICAg
ICBjZS0+cHJvdG8gPSBQUk9UT19UQ1B2Nl9TRVJWRVI7CisjZW5kaWYKICAgICB9CiAjZW5kaWYK
ICNpZiBQMk1QCkBAIC0xODk5LDEwICsxOTE1LDE0IEBACiAgICAgewogICAgICAgaWYgKGNlLT5w
cm90byA9PSBQUk9UT19UQ1B2NCkKIAljZS0+cHJvdG8gPSBQUk9UT19UQ1B2NF9DTElFTlQ7Ci0g
ICAgfQorI2lmZGVmIFVTRV9QRl9JTkVUNgorICAgICAgZWxzZSBpZiAoY2UtPnByb3RvID09IFBS
T1RPX1RDUHY2KQorICAgICAgICBjZS0+cHJvdG8gPSBQUk9UT19UQ1B2Nl9DTElFTlQ7CisjZW5k
aWYKK30KICNlbmRpZgogCi0gIGlmIChjZS0+cHJvdG8gPT0gUFJPVE9fVENQdjRfQ0xJRU5UICYm
ICFjZS0+bG9jYWwgJiYgIWNlLT5sb2NhbF9wb3J0X2RlZmluZWQgJiYgIWNlLT5iaW5kX2RlZmlu
ZWQpCisgIGlmICgoY2UtPnByb3RvID09IFBST1RPX1RDUHY0X0NMSUVOVHx8Y2UtPnByb3RvID09
IFBST1RPX1RDUHY2X0NMSUVOVCkgJiYgIWNlLT5sb2NhbCAmJiAhY2UtPmxvY2FsX3BvcnRfZGVm
aW5lZCAmJiAhY2UtPmJpbmRfZGVmaW5lZCkKICAgICBjZS0+YmluZF9sb2NhbCA9IGZhbHNlOwog
CiAjaWZkZWYgRU5BQkxFX1NPQ0tTCg==
</data>        

          </attachment>
    </bug>

</bugzilla>