<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>209204</bug_id>
          
          <creation_ts>2020-03-17 16:27:02 -0700</creation_ts>
          <short_desc>Cherry pick usrsctp commit 790a7a2555aefb392a5a69923f1e9d17b4968467</short_desc>
          <delta_ts>2020-03-19 03:15:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1630948</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-17 16:27:02 -0700</bug_when>
    <thetext>Update usrsctp to 3212d5413a75d4d039e80874dffd2e44f8087ce4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630949</commentid>
    <comment_count>1</comment_count>
      <attachid>393801</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-17 16:29:28 -0700</bug_when>
    <thetext>Created attachment 393801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630950</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-17 16:29:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/59362671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631225</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-18 10:10:24 -0700</bug_when>
    <thetext>Were these two patches reapplied after updating the source?

$ grep -l usrsctp Source/ThirdParty/libwebrtc/WebKit/*
Source/ThirdParty/libwebrtc/WebKit/0002-Fixing-usrctp-library-compilation-errors.patch
Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp.diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631226</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-18 10:10:50 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #3)
&gt; Were these two patches reapplied after updating the source?
&gt; 
&gt; $ grep -l usrsctp Source/ThirdParty/libwebrtc/WebKit/*
&gt; Source/ThirdParty/libwebrtc/WebKit/0002-Fixing-usrctp-library-compilation-
&gt; errors.patch
&gt; Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp.diff

Or if the changes already exist in the updated source tree, can they be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631229</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-18 10:22:01 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #3)
&gt; &gt; Were these two patches reapplied after updating the source?
&gt; &gt; 
&gt; &gt; $ grep -l usrsctp Source/ThirdParty/libwebrtc/WebKit/*
&gt; &gt; Source/ThirdParty/libwebrtc/WebKit/0002-Fixing-usrctp-library-compilation-
&gt; &gt; errors.patch
&gt; &gt; Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp.diff
&gt; 
&gt; Or if the changes already exist in the updated source tree, can they be
&gt; removed?

I see part of this was removed:

Source/ThirdParty/libwebrtc/WebKit/0002-Fixing-usrctp-library-compilation-errors.patch

So maybe you already applied both of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631230</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 10:22:15 -0700</bug_when>
    <thetext>The first one was.  The second needs double checking.
Youenn and I talked and agreed to use a different revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631504</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 19:58:31 -0700</bug_when>
    <thetext>Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp.diff isn&apos;t applied in the current checkout, and to reduce change I think we should leave it like that.  Half of it doesn&apos;t apply any more.

My quest to find a different revision is going much slower than anticipated.  My home internet isn&apos;t as fast as my office internet...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631522</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-03-18 20:41:09 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp.diff isn&apos;t applied in the
&gt; current checkout, and to reduce change I think we should leave it like that.
&gt; Half of it doesn&apos;t apply any more.

It was originally added for Bug 186009, and I filed this upstream bug:

https://github.com/sctplab/usrsctp/issues/230

However, it sounds like Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp.diff can simply be removed since everything was fixed upstream already, was in commented out code, or was a false positive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631541</commentid>
    <comment_count>9</comment_count>
      <attachid>393949</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 21:50:28 -0700</bug_when>
    <thetext>Created attachment 393949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631588</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-19 03:15:07 -0700</bug_when>
    <thetext>Committed r258690: &lt;https://trac.webkit.org/changeset/258690&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 393949.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393801</attachid>
            <date>2020-03-17 16:29:28 -0700</date>
            <delta_ts>2020-03-18 21:49:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209204-20200317162925.patch</filename>
            <type>text/plain</type>
            <size>423401</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZwkocmV2aXNpb24gMjU4NjA5
KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDExIEBACisyMDIwLTAzLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIHVzcnNjdHAgdG8gMzIxMmQ1NDEz
YTc1ZDRkMDM5ZTgwODc0ZGZmZDJlNDRmODA4N2NlNAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjA0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
OTM2MjY3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAyMC0w
My0xMyAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAg
W0NNYWtlXSBFbGVtaW5hdGUgbWlzbWF0Y2hlcyBiZXR3ZWVuIEZpbmQqIG1vZHVsZSBuYW1lcyBh
bmQgdmFyaWFibGVzIHRoZXkgc2V0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3JlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliLy5naXRpZ25vcmUJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
Ly5naXRpZ25vcmUJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE3ICs1NSwyNSBAQCBNYWtlZmlsZS5p
bgogLmRpcnN0YW1wCiAKICMgYmluYXJpZXMKK3Byb2dyYW1zL2NoYXJnZW5fc2VydmVyX3VwY2Fs
bAogcHJvZ3JhbXMvY2xpZW50Citwcm9ncmFtcy9jbGllbnRfdXBjYWxsCiBwcm9ncmFtcy9kYXl0
aW1lX3NlcnZlcgorcHJvZ3JhbXMvZGF5dGltZV9zZXJ2ZXJfdXBjYWxsCiBwcm9ncmFtcy9kaXNj
YXJkX3NlcnZlcgorcHJvZ3JhbXMvZGlzY2FyZF9zZXJ2ZXJfdXBjYWxsCiBwcm9ncmFtcy9lY2hv
X3NlcnZlcgorcHJvZ3JhbXMvZWNob19zZXJ2ZXJfdXBjYWxsCiBwcm9ncmFtcy9la3JfY2xpZW50
CiBwcm9ncmFtcy9la3JfbG9vcAogcHJvZ3JhbXMvZWtyX2xvb3Bfb2ZmbG9hZAorcHJvZ3JhbXMv
ZWtyX2xvb3BfdXBjYWxsCiBwcm9ncmFtcy9la3JfcGVlcgogcHJvZ3JhbXMvZWtyX3NlcnZlcgog
cHJvZ3JhbXMvaHR0cF9jbGllbnQKK3Byb2dyYW1zL2h0dHBfY2xpZW50X3VwY2FsbAogcHJvZ3Jh
bXMvcnRjd2ViCitwcm9ncmFtcy9zdF9jbGllbnQKIHByb2dyYW1zL3RzY3RwCiBwcm9ncmFtcy90
ZXN0X2xpYm1nbXQKIHByb2dyYW1zL3Rlc3RfdGltZXIKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
NTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTUgT2xlZyBBbGV4ZWVua292Ci0j
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEZlbGl4IFdlaW5yYW5rCisjIENvcHlyaWdodCAoQykg
MjAxNS0yMDE5IEZlbGl4IFdlaW5yYW5rCiAjCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBA
IC0yOSw3ICsyOSw3IEBACiAjIFNVQ0ggREFNQUdFLgogIwogCi1wcm9qZWN0KHVzcnNjdHBsaWIp
Citwcm9qZWN0KHVzcnNjdHBsaWIgQykKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAz
LjApCiAKICMgRGVidWcgYnVpbGQgdHlwZSBhcyBkZWZhdWx0CkBAIC03Nyw2ICs3Nyw4IEBAIG9w
dGlvbihzY3RwX3Nhbml0aXplcl9hZGRyZXNzICJDb21waWxlIHcKIAogb3B0aW9uKHNjdHBfc2Fu
aXRpemVyX21lbW9yeSAiQ29tcGlsZSB3aXRoIG1lbW9yeSBzYW5pdGl6ZXIiIDApCiAKK29wdGlv
bihzY3RwX2J1aWxkX2Z1enplciAiQ29tcGlsZSBpbiBjbGFuZyBmdXp6aW5nIG1vZGUiIDApCisK
IGlmIChzY3RwX3Nhbml0aXplcl9hZGRyZXNzIEFORCBzY3RwX3Nhbml0aXplcl9tZW1vcnkpCiAJ
bWVzc2FnZShGQVRBTF9FUlJPUiAiQ2FuIG5vdCBjb21waWxlIHdpdGggYm90aCBzYW5pdGl6ZXIg
b3B0aW9ucyIpCiBlbmRpZiAoKQpAQCAtMTIyLDcgKzEyNCw3IEBAIGVuZGlmICgpCiAjIENIRUNL
IFNUUlVDVCBNRU1CRVJTCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCiAKLXNldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAiJHtDTUFLRV9TT1VSQ0Vf
RElSfS91c3JzY3RwbGliIikKK3NldChDTUFLRV9SRVFVSVJFRF9JTkNMVURFUyAiJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9L3VzcnNjdHBsaWIiKQogCiBjaGVja19pbmNsdWRlX2ZpbGUodXNy
c2N0cC5oIGhhdmVfdXNyc2N0cF9oKQogaWYgKE5PVCBoYXZlX3VzcnNjdHBfaCkKQEAgLTE1OCw5
NCArMTYwLDExMiBAQCBlbmRpZiAoKQogIyBDT01QSUxFUiBTRVRUSU5HUwogIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCisjIERldGVybWluZSBpZiBj
b21waWxlciBpcyBWaXN1YWwgU3R1ZGlvIGNvbXBpbGVyIG9yIENsYW5nIGluIE1TVkMgY29tcGF0
aWJsZSBtb2RlCitpZiAoQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJNU1ZDIiBPUiBDTUFL
RV9DX1NJTVVMQVRFX0lEIE1BVENIRVMgIk1TVkMiKQorICBzZXQoQ19DT01QSUxFUl9JU19NU1ZD
X0xJS0UgVFJVRSkKK2VuZGlmKCkKKworIyBTRVRUSU5HUyBGT1IgVklTVUFMIFNUVURJTyBDT01Q
SUxFUgoraWYgKENfQ09NUElMRVJfSVNfTVNWQ19MSUtFKQorCWlmIChDTUFLRV9DX0ZMQUdTIE1B
VENIRVMgIi9XWzAtNF0iKQorCQlzdHJpbmcoUkVHRVggUkVQTEFDRSAiL1dbMC00XSIgIi9XNCIg
Q01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSIpCisJZWxzZSAoKQorCQlzZXQoQ01BS0Vf
Q19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvVzQiKQorCWVuZGlmICgpCisKKwlzZXQoQ01BS0Vf
Q19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0MTAwIikgIyAnaWRlbnRpZmllcicgOiB1bnJl
ZmVyZW5jZWQgZm9ybWFsIHBhcmFtZXRlcgorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0Nf
RkxBR1N9IC93ZDQxMjciKSAjIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKKwlz
ZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0MjAwIikgIyBub25zdGFuZGFy
ZCBleHRlbnNpb24gdXNlZCA6IHplcm8tc2l6ZWQgYXJyYXkgaW4gc3RydWN0L3VuaW9uCisJc2V0
KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDIxNCIpICMgYml0IGZpZWxkIHR5
cGVzIG90aGVyIHRoYW4gaW50CisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30g
L3dkNDcwNiIpICMgYXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgorCXNl
dChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQyNDUiKSAjICdjb252ZXJzaW9u
JyA6IGNvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicsIHNpZ25lZC91bnNpZ25lZCBt
aXNtYXRjaAorCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC93ZDQzODkiKSAj
ICdvcGVyYXRvcicgOiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKKwlzZXQoQ01BS0VfQ19GTEFH
UyAiJHtDTUFLRV9DX0ZMQUdTfSAvd2Q0NzAyIikgIyB1bnJlYWNoYWJsZSBjb2RlCisJc2V0KENN
QUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDcwMSIpICMgUG90ZW50aWFsbHkgdW5p
bml0aWFsaXplZCBsb2NhbCB2YXJpYWJsZSAnbmFtZScgdXNlZAorCisJIyBUb0RvCisJc2V0KENN
QUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL3dkNDI0NCIpICMgJ2NvbnZlcnNpb24nIGNv
bnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQor
CisJaWYgKHNjdHBfd2Vycm9yKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdT
fSAvV1giKQorCisJCWlmIChDTUFLRV9DX0NPTVBJTEVSX0lEIE1BVENIRVMgIkNsYW5nIikKKwkJ
CSMgdGVtcG9yYXJ5IGRpc2FibGUgZXh0YSBjbGFuZyB3YXJuaW5ncyBwcmV2ZW50aW5nIGNvbXBp
bGF0aW9uCisJCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvY2xhbmc6LVdu
by11bnVzZWQtZnVuY3Rpb24iKQorCQkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFH
U30gL2NsYW5nOi1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiKQorCQkJc2V0KENNQUtF
X0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL2NsYW5nOi1Xbm8tc2lnbi1jb21wYXJlIikKKwkJ
CXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9jbGFuZzotV25vLWZvcm1hdCIp
CisJCWVuZGlmKCkKKwllbmRpZiAoKQogIyBTRVRUSU5HUyBGT1IgVU5JWCBDT01QSUxFUgotaWYg
KCIke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIgT1IgIiR7Q01BS0VfQ19D
T01QSUxFUl9JRH0iIE1BVENIRVMgIkFwcGxlQ2xhbmciIE9SICIke0NNQUtFX0NfQ09NUElMRVJf
SUR9IiBNQVRDSEVTICJHTlUiKQotCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFH
U30gICAtc3RkPWM5OSAtcGVkYW50aWMgLVdhbGwgLVdleHRyYSIpCi0Jc2V0KENNQUtFX0NYWF9G
TEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1zdGQ9Yzk5IC1wZWRhbnRpYyAtV2FsbCAtV2V4dHJh
IikKK2Vsc2VpZiAoQ01BS0VfQ19DT01QSUxFUl9JRCBNQVRDSEVTICJDbGFuZyIgT1IgQ01BS0Vf
Q19DT01QSUxFUl9JRCBNQVRDSEVTICJBcHBsZUNsYW5nIiBPUiBDTUFLRV9DX0NPTVBJTEVSX0lE
IE1BVENIRVMgIkdOVSIpCisJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLXN0
ZD1jOTkgLXBlZGFudGljIC1XYWxsIC1XZXh0cmEiKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFn
KC1XZmxvYXQtZXF1YWwgaGFzX3dmbG9hdF9lcXVhbCkKIAlpZiAoaGFzX3dmbG9hdF9lcXVhbCkK
LQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1XZmxvYXQtZXF1YWwi
KQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVdmbG9hdC1lcXVh
bCIpCisJCXNldChDTUFLRV9DX0ZMQUdTICAiJHtDTUFLRV9DX0ZMQUdTfSAtV2Zsb2F0LWVxdWFs
IikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1Xc2hhZG93IGhhc193c2hh
ZG93KQogCWlmIChoYXNfd3NoYWRvdykKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9D
X0ZMQUdTfSAgIC1Xc2hhZG93IikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhf
RkxBR1N9IC1Xc2hhZG93IikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30g
LVdzaGFkb3ciKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVdwb2ludGVy
LWFyaXRoIGhhc193cG9pbnRlcl9hcml0aWgpCiAJaWYgKGhhc193cG9pbnRlcl9hcml0aWgpCi0J
CXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV3BvaW50ZXItYXJpdGgi
KQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVdwb2ludGVyLWFy
aXRoIikKKwkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdwb2ludGVyLWFy
aXRoIikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1XdW5yZWFjaGFibGUt
Y29kZSBoYXNfd3VucmVhY2hhYmxlX2NvZGUpCiAJaWYgKGhhc193dW5yZWFjaGFibGVfY29kZSkK
LQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1XdW5yZWFjaGFibGUt
Y29kZSIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV3VucmVh
Y2hhYmxlLWNvZGUiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV3Vu
cmVhY2hhYmxlLWNvZGUiKQogCWVuZGlmICgpCiAKIAljaGVja19jX2NvbXBpbGVyX2ZsYWcoLVdp
bml0LXNlbGYgaGFzX3dpbml0X3NlbGYpCiAJaWYgKGhhc193aW5pdF9zZWxmKQotCQlzZXQoQ01B
S0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVdpbml0LXNlbGYiKQotCQlzZXQoQ01B
S0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVdpbml0LXNlbGYiKQorCQlzZXQoQ01B
S0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV2luaXQtc2VsZiIpCiAJZW5kaWYgKCkKIAog
CWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV25vLXVudXNlZC1mdW5jdGlvbiBoYXNfd25vX3VudXNl
ZF9mdW5jdGlvbikKIAlpZiAoaGFzX3dub191bnVzZWRfZnVuY3Rpb24pCi0JCXNldChDTUFLRV9D
X0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV25vLXVudXNlZC1mdW5jdGlvbiIpCi0JCXNl
dChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV25vLXVudXNlZC1mdW5jdGlv
biIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1Xbm8tdW51c2VkLWZ1
bmN0aW9uIikKIAllbmRpZiAoKQogCiAJY2hlY2tfY19jb21waWxlcl9mbGFnKC1Xbm8tdW51c2Vk
LXBhcmFtZXRlciBoYXNfd25vX3VudXNlZF9wYXJhbWV0ZXIpCiAJaWYgKGhhc193bm9fdW51c2Vk
X3BhcmFtZXRlcikKLQkJc2V0KENNQUtFX0NfRkxBR1MgICAiJHtDTUFLRV9DX0ZMQUdTfSAgIC1X
bm8tdW51c2VkLXBhcmFtZXRlciIpCi0JCXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hY
X0ZMQUdTfSAtV25vLXVudXNlZC1wYXJhbWV0ZXIiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtD
TUFLRV9DX0ZMQUdTfSAtV25vLXVudXNlZC1wYXJhbWV0ZXIiKQogCWVuZGlmICgpCiAKIAljaGVj
a19jX2NvbXBpbGVyX2ZsYWcoLVduby11bnJlYWNoYWJsZS1jb2RlIGhhc193bm9fdW5yZWFjaGFi
bGVfY29kZSkKIAlpZiAoaGFzX3dub191bnJlYWNoYWJsZV9jb2RlKQotCQlzZXQoQ01BS0VfQ19G
TEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVduby11bnJlYWNoYWJsZS1jb2RlIikKLQkJc2V0
KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tdW5yZWFjaGFibGUtY29k
ZSIpCisJCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1Xbm8tdW5yZWFjaGFi
bGUtY29kZSIpCiAJZW5kaWYgKCkKIAogCWNoZWNrX2NfY29tcGlsZXJfZmxhZygtV3N0cmljdC1w
cm90b3R5cGVzIGhhc193c3RyaWN0X3Byb3RvdHlwZXMpCiAJaWYgKGhhc193c3RyaWN0X3Byb3Rv
dHlwZXMpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAgIiR7Q01BS0VfQ19GTEFHU30gICAtV3N0cmlj
dC1wcm90b3R5cGVzIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9
IC1Xc3RyaWN0LXByb3RvdHlwZXMiKQorCQlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM
QUdTfSAtV3N0cmljdC1wcm90b3R5cGVzIikKIAllbmRpZiAoKQogCiAJaWYgKHNjdHBfd2Vycm9y
KQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NNQUtFX0NfRkxBR1N9ICAgLVdlcnJvciIpCi0J
CXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV2Vycm9yIikKKwkJc2V0
KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdlcnJvciIpCiAJZW5kaWYgKCkKIAog
CWlmIChzY3RwX3Nhbml0aXplcl9hZGRyZXNzKQotCQlzZXQoQ01BS0VfQ19GTEFHUyAgICIke0NN
QUtFX0NfRkxBR1N9ICAgLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVy
IC1nIikKLQkJc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1mc2FuaXRp
emU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZyIpCisJCXNldChDTUFLRV9DX0ZM
QUdTICIke0NNQUtFX0NfRkxBR1N9IC1mc2FuaXRpemU9YWRkcmVzcyx1bmRlZmluZWQsc2lnbmVk
LWludGVnZXItb3ZlcmZsb3cgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWZuby1zYW5pdGl6ZS1y
ZWNvdmVyPWFsbCAtZnNhbml0aXplLWFkZHJlc3MtdXNlLWFmdGVyLXNjb3BlICIpCiAJZW5kaWYg
KCkKIAogCWlmIChzY3RwX3Nhbml0aXplcl9tZW1vcnkpCi0JCXNldChDTUFLRV9DX0ZMQUdTICAg
IiR7Q01BS0VfQ19GTEFHU30gICAtZnNhbml0aXplPW1lbW9yeSAtZm5vLW9taXQtZnJhbWUtcG9p
bnRlciAtZyAtZnNhbml0aXplLW1lbW9yeS10cmFjay1vcmlnaW5zIikKLQkJc2V0KENNQUtFX0NY
WF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1mc2FuaXRpemU9bWVtb3J5IC1mbm8tb21pdC1m
cmFtZS1wb2ludGVyIC1nIC1mc2FuaXRpemUtbWVtb3J5LXRyYWNrLW9yaWdpbnMiKQorCQlzZXQo
Q01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnNhbml0aXplPW1lbW9yeSAtZm5vLW9t
aXQtZnJhbWUtcG9pbnRlciAtZnNhbml0aXplLW1lbW9yeS10cmFjay1vcmlnaW5zIC1mUElFIikK
IAllbmRpZiAoKQotZW5kaWYgKCkKIAotIyBTRVRUSU5HUyBGT1IgVklTVUFMIFNUVURJTyBDT01Q
SUxFUgotaWYgKCJ4JHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgInhNU1ZDIikKLQlp
ZiAoQ01BS0VfQ19GTEFHUyBNQVRDSEVTICIvV1swLTRdIikKLQkJc3RyaW5nKFJFR0VYIFJFUExB
Q0UgIi9XWzAtNF0iICIvVzMiIENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30iKQotCWVs
c2UgKCkKLQkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL1czIikKLQllbmRp
ZiAoKQotCi0JaWYgKFdFUlJPUikKLQkJc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFH
U30gL1dYIikKKwlpZiAoc2N0cF9idWlsZF9mdXp6ZXIpCisJCWFkZF9kZWZpbml0aW9ucygtREZV
WlpJTkdfQlVJTERfTU9ERV9VTlNBRkVfRk9SX1BST0RVQ1RJT04pCisJCXNldChDTUFLRV9DX0ZM
QUdTICIke0NNQUtFX0NfRkxBR1N9IC1mc2FuaXRpemU9ZnV6emVyLW5vLWxpbmsiKQogCWVuZGlm
ICgpCiBlbmRpZiAoKQogCittZXNzYWdlKFNUQVRVUyAiQ29tcGlsZXIgZmxhZ3MgKENNQUtFX0Nf
RkxBR1MpOiAke0NNQUtFX0NfRkxBR1N9IikKKwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIElOQ0xVREUgU1VCRElSUwpAQCAtMjU2LDMgKzI3
Niw3IEBAIGFkZF9zdWJkaXJlY3RvcnkodXNyc2N0cGxpYikKIGlmIChzY3RwX2J1aWxkX3Byb2dy
YW1zKQogCWFkZF9zdWJkaXJlY3RvcnkocHJvZ3JhbXMpCiBlbmRpZiAoKQorCitpZiAoc2N0cF9i
dWlsZF9mdXp6ZXIpCisJYWRkX3N1YmRpcmVjdG9yeShmdXp6ZXIpCitlbmRpZiAoKQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFrZWZpbGUuYW0J
KHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCwxMSBAQAogIyBTVUNIIERBTUFHRS4KICMKIAotU1VCRElSUyA9IHVzcnNj
dHBsaWIgcHJvZ3JhbXMKK2lmIENPTkRfUFJPR1JBTVMKK01BWUJFUFJPR1JBTVMgPSBwcm9ncmFt
cworZW5kaWYKKworU1VCRElSUyA9IHVzcnNjdHBsaWIgJChNQVlCRVBST0dSQU1TKQogRVhUUkFf
RElTVCA9IGJvb3RzdHJhcCBNYWtlZmlsZS5ubWFrZQogQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQK
ICMgcGtnY29uZmlnX0RBVEEgPSB1c3JzY3RwLnBjCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9NYW51YWwubWQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvTWFudWFsLm1kCShyZXZpc2lvbiAyNTg2MDgpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi9NYW51YWwubWQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFNDVFAgaXMg
YSBtZXNzYWdlIG9yaWVudGVkLCByZWxpYWJsZSB0cmEKIAogTGlrZSBUQ1AsIFNDVFAgcHJvdmlk
ZXMgcmVsaWFibGUsIGNvbm5lY3Rpb24gb3JpZW50ZWQgZGF0YSBkZWxpdmVyeSB3aXRoIGNvbmdl
c3Rpb24gY29udHJvbC4gVW5saWtlIFRDUCwgU0NUUCBhbHNvIHByb3ZpZGVzIG1lc3NhZ2UgYm91
bmRhcnkgcHJlc2VydmF0aW9uLCBvcmRlcmVkIGFuZCB1bm9yZGVyZWQgbWVzc2FnZSBkZWxpdmVy
eSwgbXVsdGktc3RyZWFtaW5nIGFuZCBtdWx0aS1ob21pbmcuIERldGVjdGlvbiBvZiBkYXRhIGNv
cnJ1cHRpb24sIGxvc3Mgb2YgZGF0YSBhbmQgZHVwbGljYXRpb24gb2YgZGF0YSBpcyBhY2hpZXZl
ZCBieSB1c2luZyBjaGVja3N1bXMgYW5kIHNlcXVlbmNlIG51bWJlcnMuIEEgc2VsZWN0aXZlIHJl
dHJhbnNtaXNzaW9uIG1lY2hhbmlzbSBpcyBhcHBsaWVkIHRvIGNvcnJlY3QgbG9zcyBvciBjb3Jy
dXB0aW9uIG9mIGRhdGEuCiAKLUluIHRoaXMgbWFudWFsIHRoZSBzb2NrZXQgQVBJIGZvciB0aGUg
U0NUUCBVc2VyLWxhbmQgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBkZXNjcmliZWQuICBJdCBpcyBi
YXNlZCBvbiBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBU
aGUgbWFpbiBmb2N1cyBvZiB0aGlzIGRvY3VtZW50IGlzIG9uIHBvaW50aW5nIG91dCB0aGUgZGlm
ZmVyZW5jZXMgdG8gdGhlIFNDVFAgU29ja2V0cyBBUEkuIEZvciBhbGwgYXNwZWN0cyBvZiB0aGUg
c29ja2V0cyBBUEkgdGhhdCBhcmUgbm90IG1lbnRpb25lZCBpbiB0aGlzIGRvY3VtZW50LCBwbGVh
c2UgcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4
KS4gUXVlc3Rpb25zIGFib3V0IFNDVFAgaXRzZWxmIGNhbiBob3BlZnVsbHkgYmUgYW5zd2VyZWQg
YnkgW1JGQyA0OTYwXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0OTYwKS4KK0luIHRo
aXMgbWFudWFsIHRoZSBzb2NrZXQgQVBJIGZvciB0aGUgU0NUUCBVc2VyLWxhbmQgaW1wbGVtZW50
YXRpb24gd2lsbCBiZSBkZXNjcmliZWQuICBJdCBpcyBiYXNlZCBvbiBbUkZDIDY0NThdKGh0dHBz
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KS4gVGhlIG1haW4gZm9jdXMgb2YgdGhpcyBk
b2N1bWVudCBpcyBvbiBwb2ludGluZyBvdXQgdGhlIGRpZmZlcmVuY2VzIHRvIHRoZSBTQ1RQIFNv
Y2tldHMgQVBJLiBGb3IgYWxsIGFzcGVjdHMgb2YgdGhlIHNvY2tldHMgQVBJIHRoYXQgYXJlIG5v
dCBtZW50aW9uZWQgaW4gdGhpcyBkb2N1bWVudCwgcGxlYXNlIHJlZmVyIHRvIFtSRkMgNjQ1OF0o
aHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBRdWVzdGlvbnMgYWJvdXQgU0NU
UCBpdHNlbGYgY2FuIGhvcGVmdWxseSBiZSBhbnN3ZXJlZCBieSBbUkZDIDQ5NjBdKGh0dHBzOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0OTYwKS4KIAogIyMgR2V0dGluZyBTdGFydGVkCiBUaGUg
dXNlci1sYW5kIHN0YWNrIGhhcyBiZWVuIHRlc3RlZCBvbiBGcmVlQlNEIDEwLjAsIFVidW50dSAx
MS4xMCwgV2luZG93cyA3LCBNYWMgT1MgWCAxMC42LCBhbmQgTWFjIE9TIFggMTAuNy4gVGhlIGN1
cnJlbnQgdmVyc2lvbiBvZiB0aGUgdXNlci1sYW5kIHN0YWNrIGlzIHByb3ZpZGVkIG9uIFtnaXRo
dWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHApLiBEb3dubG9hZCB0aGUgdGFy
YmFsbCBhbmQgdW50YXIgaXQgaW4gYSBmb2xkZXIgb2YgeW91ciBjaG9pY2UuIFRoZSB0YXJiYWxs
IGNvbnRhaW5zIGFsbCB0aGUgc291cmNlcyB0byBidWlsZCB0aGUgbGlidXNyc2N0cCwgd2hpY2gg
aGFzIHRvIGJlIGxpbmtlZCB0byB0aGUgb2JqZWN0IGZpbGUgb2YgYW4gZXhhbXBsZSBwcm9ncmFt
LiBJbiBhZGRpdGlvbiB0aGVyZSBhcmUgdHdvIGFwcGxpY2F0aW9ucyBpbiB0aGUgZm9sZGVyIGBw
cm9ncmFtc2AgdGhhdCBjYW4gYmUgYnVpbHQgYW5kIHJ1bi4KQEAgLTEzMywxMiArMTMzLDEyIEBA
IHVzcnNjdHBfc29ja2V0KGludCBkb21haW4sCiAgICAgICAgICAgICAgICB2b2lkICp1bHBfaW5m
bykKIGBgYAogCi1UaGUgYXJndW1lbnRzIHRha2VuIGZyb20gW1JGQyA2NDU4XShodHRwOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSBhcmU6CitUaGUgYXJndW1lbnRzIHRha2VuIGZyb20g
W1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkgYXJlOgogCiAq
IGRvbWFpbjogUEZfSU5FVCBvciBQRl9JTkVUNiBjYW4gYmUgdXNlZC4KICogdHlwZTogSW4gY2Fz
ZSBvZiBhIG9uZS10by1tYW55IHN0eWxlIHNvY2tldCBpdCBpcyBTT0NLX1NFUVBBQ0tFVCwgaW4g
Y2FzZSBvZiBhIG9uZS10by1vbmUgc3R5bGUKIHNvY2tldCBpdCBpcyBTT0NLX1NUUkVBTS4gRm9y
IGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzb2NrZXQgdHlw
ZXMgcGxlYXNlCi1yZWZlciB0byBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzY0NTgpLgorcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNjQ1OCkuCiAqIHByb3RvY29sOiBTZXQgSVBQUk9UT19TQ1RQLgogCiBJbiB1c3JzY3Rw
LCBhIGNhbGxiYWNrIEFQSSBjYW4gYmUgdXNlZC4KQEAgLTE2MSw3ICsxNjEsNyBAQCBUaHVzIHRo
ZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhlIGFic2VuY2UgCiAjIyBTYW1lIEZ1bmN0aW9uYWxpdHkg
YXMgUkZDIDY0NTgKIAogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGF2ZSB0aGUgc2FtZSBmdW5j
dGlvbmFsaXR5IGFzIHRoZWlyIGtlcm5lbCBwZW5kYW50cy4gVGhlcmUgcHJvdG90eXBlcwotYXJl
IGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zLiBGb3IgYSBkZXRhaWxlZCBk
ZXNjcmlwdGlvbiBwbGVhc2UgcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM2NDU4KS4KK2FyZSBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyBzdWJzZWN0
aW9ucy4gRm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gcGxlYXNlIHJlZmVyIHRvIFtSRkMgNjQ1
OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgogCiAjIyMgdXNyc2N0cF9i
aW5kKCkKIApAQCAtMjM3LDcgKzIzNyw3IEBAIHVzcnNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tl
dCAqc28sIGludCAKIGB1c3JzY3RwX3NodXRkb3duKClgIHJldHVybnMgMCBvbiBzdWNjZXNzIGFu
ZCAtMSBpbiBjYXNlIG9mIGFuIGVycm9yLgogCiAjIyBTZW5kaW5nIGFuZCBSZWNlaXZpbmcgRGF0
YQotU2luY2UgdGhlIHB1YmxpY2F0aW9uIG9mIFtSRkMgNjQ1OF0oaHR0cDovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNjQ1OCkgdGhlcmUgaXMgb25seSBvbmUgZnVuY3Rpb24gZm9yIHNlbmRpbmcg
YW5kIG9uZSBmb3IgcmVjZWl2aW5nCitTaW5jZSB0aGUgcHVibGljYXRpb24gb2YgW1JGQyA2NDU4
XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkgdGhlcmUgaXMgb25seSBvbmUg
ZnVuY3Rpb24gZm9yIHNlbmRpbmcgYW5kIG9uZSBmb3IgcmVjZWl2aW5nCiB0aGF0IGlzIG5vdCBk
ZXByZWNhdGVkLiBUaGVyZWZvcmUsIG9ubHkgdGhlc2UgdHdvIGFyZSBkZXNjcmliZWQgaGVyZS4K
IAogIyMjIHVzcnNjdHBfc2VuZHYoKQpAQCAtMjYwLDE0ICsyNjAsMTQgQEAgdXNyc2N0cF9zZW5k
dihzdHJ1Y3Qgc29ja2V0ICpzbywKICogbGVuOiBMZW5ndGggb2YgdGhlIGRhdGEuCiAqIGFkZHJz
OiBJbiB0aGlzIHZlcnNpb24gb2YgdXNyc2N0cCBhdCBtb3N0IG9uZSBkZXN0aW5hdGlvbiBhZGRy
ZXNzIGlzIHN1cHBvcnRlZC4gSW4gdGhlIGNhc2Ugb2YgYSBjb25uZWN0ZWQgc29ja2V0LCB0aGUg
cGFyYW1ldGVyIGBhZGRyc2AgY2FuIGJlIHNldCB0byBOVUxMLgogKiBhZGRyY250OiBOdW1iZXIg
b2YgYWRkcmVzc2VzLiBBcyBhdCBtb3N0IG9uZSBhZGRyZXNzIGlzIHN1cHBvcnRlZCwgYWRkcmNu
dCBpcyAwIGlmIGFkZHJzIGlzIE5VTEwgYW5kIDEgb3RoZXJ3aXNlLgotKiBpbmZvOiBBZGRpdGlv
bmFsIGluZm9ybWF0aW9uIGZvciBhIG1lc3NhZ2UgaXMgc3RvcmVkIGluIGB2b2lkICppbmZvYC4g
VGhlIGRhdGEgdHlwZXMgYHN0cnVjdCBzY3RwX3NuZGluZm9gLCBgc3RydWN0IHNjdHBfcHJpbmZv
YCwgYW5kIGBzdHJ1Y3Qgc2N0cF9zZW5kdl9zcGFgIGFyZSBzdXBwb3J0ZWQgYXMgZGVmaW5lZCBp
biBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBTdXBwb3J0
IGZvciBgc3RydWN0IHNjdHBfYXV0aGluZm9gIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQsIHRoZXJl
Zm9yZSwgZXJybm8gaXMgc2V0IEVJTlZBTCBhbmQgLTEgd2lsbCBiZSByZXR1cm5lZCwgaWYgaXQg
aXMgdXNlZC4KKyogaW5mbzogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgYSBtZXNzYWdlIGlz
IHN0b3JlZCBpbiBgdm9pZCAqaW5mb2AuIFRoZSBkYXRhIHR5cGVzIGBzdHJ1Y3Qgc2N0cF9zbmRp
bmZvYCwgYHN0cnVjdCBzY3RwX3ByaW5mb2AsIGFuZCBgc3RydWN0IHNjdHBfc2VuZHZfc3BhYCBh
cmUgc3VwcG9ydGVkIGFzIGRlZmluZWQgaW4gW1JGQyA2NDU4XShodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjNjQ1OCkuIFN1cHBvcnQgZm9yIGBzdHJ1Y3Qgc2N0cF9hdXRoaW5mb2AgaXMg
bm90IGltcGxlbWVudGVkIHlldCwgdGhlcmVmb3JlLCBlcnJubyBpcyBzZXQgRUlOVkFMIGFuZCAt
MSB3aWxsIGJlIHJldHVybmVkLCBpZiBpdCBpcyB1c2VkLgogKiBpbmZvbGVuOiBMZW5ndGggb2Yg
aW5mbyBpbiBieXRlcy4KICogaW5mb3R5cGU6IElkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIGlu
Zm9ybWF0aW9uIHByb3ZpZGVkIGluIGluZm8uIFBvc3NpYmxlIHZhbHVlcyBhcmUKICAgKiBTQ1RQ
X1NFTkRWX05PSU5GTwogICAqIFNDVFBfU0VORFZfU05ESU5GTwogICAqIFNDVFBfU0VORFZfUFJJ
TkZPCi0gICogU0NUUF9TRU5EVl9TUEEgKEZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHBsZWFz
ZSByZWZlciB0byBbUkZDIDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgp
LikKLSogZmxhZ3M6IEZsYWdzIGFzIGRlc2NyaWJlZCBpbiBbUkZDIDY0NThdKGh0dHA6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgorICAqIFNDVFBfU0VORFZfU1BBIChGb3IgYWRkaXRp
b25hbCBpbmZvcm1hdGlvbiBwbGVhc2UgcmVmZXIgdG8gW1JGQyA2NDU4XShodHRwczovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuKQorKiBmbGFnczogRmxhZ3MgYXMgZGVzY3JpYmVkIGlu
IFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgogCiBgdXNy
c2N0cF9zZW5kdigpYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCwgb3IgLTEgaWYg
YW4gZXJyb3Igb2NjdXJyZWQuICBUaGUgdmFyaWFibGUgZXJybm8gaXMgdGhlbiBzZXQgYXBwcm9w
cmlhdGVseS4KIApAQCAtMjkxLDIwICsyOTEsMjAgQEAgdXNyc2N0cF9yZWN2dihzdHJ1Y3Qgc29j
a2V0ICpzbywKICogbGVuOiBMZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiBieXRlcy4KICogZnJvbTog
QSBwb2ludGVyIHRvIGFuIGFkZHJlc3MgdG8gYmUgZmlsbGVkIHdpdGggdGhlIHNlbmRlciBvZiB0
aGUgcmVjZWl2ZWQgbWVzc2FnZSdzIGFkZHJlc3MuCiAqIGZyb21sZW46IEFuIGluL291dCBwYXJh
bWV0ZXIgZGVzY3JpYmluZyB0aGUgZnJvbSBsZW5ndGguCi0qIGluZm86IEEgcG9pbnRlciB0byB0
aGUgYnVmZmVyIHRvIGhvbGQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHJlY2VpdmVkIG1lc3NhZ2Uu
ICBUaGUgc3RydWN0dXJlIHR5cGUgb2YgaW5mbyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbmZvdHlw
ZSBwYXJhbWV0ZXIuIFRoZSBhdHRyaWJ1dGVzIHJldHVybmVkIGluIGBpbmZvYCBoYXZlIHRvIGJl
IGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHNwZWNpZmllZCBpbiBbUkZDIDY0NThdKGh0dHA6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLgorKiBpbmZvOiBBIHBvaW50ZXIgdG8gdGhl
IGJ1ZmZlciB0byBob2xkIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlLiAg
VGhlIHN0cnVjdHVyZSB0eXBlIG9mIGluZm8gaXMgZGV0ZXJtaW5lZCBieSB0aGUgaW5mb3R5cGUg
cGFyYW1ldGVyLiBUaGUgYXR0cmlidXRlcyByZXR1cm5lZCBpbiBgaW5mb2AgaGF2ZSB0byBiZSBo
YW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBzcGVjaWZpZWQgaW4gW1JGQyA2NDU4XShodHRwczov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuCiAqIGluZm9sZW46ICBBbiBpbi9vdXQgcGFy
YW1ldGVyIGRlc2NyaWJpbmcgdGhlIHNpemUgb2YgdGhlIGluZm8gYnVmZmVyLgogKiBpbmZvdHlw
ZTogIE9uIHJldHVybiwgYCppbmZvdHlwZWAgaXMgc2V0IHRvIHRoZSB0eXBlIG9mIHRoZSBpbmZv
IGJ1ZmZlci4gIFRoZSBjdXJyZW50IGRlZmluZWQgdmFsdWVzIGFyZQogICAqIFNDVFBfUkVDVlZf
Tk9JTkZPCiAgICogU0NUUF9SRUNWVl9SQ1ZJTkZPCiAgICogU0NUUF9SRUNWVl9OWFRJTkZPCi0g
ICogU0NUUF9SRUNWVl9STiAoQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBpcyBnaXZlbiBpbiBbUkZD
IDY0NThdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpKQorICAqIFNDVFBfUkVD
VlZfUk4gKEEgZGV0YWlsZWQgZGVzY3JpcHRpb24gaXMgZ2l2ZW4gaW4gW1JGQyA2NDU4XShodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkpCiAqIGZsYWdzOiBBIHBvaW50ZXIgdG8g
YW4gaW50ZWdlciB0byBiZSBmaWxsZWQgd2l0aCBhbnkgbWVzc2FnZSBmbGFncyAoZS5nLiwgYE1T
R19OT1RJRklDQVRJT05gKS4gIE5vdGUgdGhhdCB0aGlzIGZpZWxkIGlzIGFuIGluL291dCBwYXJh
bWV0ZXIuICBPcHRpb25zIGZvciB0aGUgcmVjZWl2ZSBtYXkgYWxzbyBiZSBwYXNzZWQgaW50byB0
aGUgdmFsdWUgKGUuZy4sIGBNU0dfRU9SYCkuICBSZXR1cm5pbmcgZnJvbSB0aGUgY2FsbCwgdGhl
IGZsYWdzJyB2YWx1ZSB3aWxsIGRpZmZlciBmcm9tIGl0cyBvcmlnaW5hbCB2YWx1ZS4KIAotYHVz
cnNjdHBfcmVjdnYoKWAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQsIG9yIC0xIGlm
IGFuIGVycm9yIG9jY3VycmVkLiAgVGhlIHZhcmlhYmxlIGVycm5vIGlzIHRoZW4gc2V0IGFwcHJv
cHJpYXRlbHkuCitgdXNyc2N0cF9yZWN2digpYCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMg
cmVjZWl2ZWQsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLiAgVGhlIHZhcmlhYmxlIGVycm5v
IGlzIHRoZW4gc2V0IGFwcHJvcHJpYXRlbHkuCiAKICMjIFNvY2tldCBPcHRpb25zCiBTb2NrZXQg
b3B0aW9ucyBhcmUgdXNlZCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc29ja2V0
IGNhbGxzLgotVGhlaXIgYmVoYXZpb3IgaXMgc3BlY2lmaWVkIGluIFtSRkMgNjQ1OF0oaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1OCkuIFRoZSBmdW5jdGlvbnMgdG8gZ2V0IG9yIHNl
dCB0aGVtIGFyZQorVGhlaXIgYmVoYXZpb3IgaXMgc3BlY2lmaWVkIGluIFtSRkMgNjQ1OF0oaHR0
cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLiBUaGUgZnVuY3Rpb25zIHRvIGdldCBv
ciBzZXQgdGhlbSBhcmUKIAogYGBgYwogaW50CkBAIC0zNzUsNyArMzc1LDcgQEAgU0NUUF9SRVNF
VF9TVFJFQU1TIHwgc3RydWN0IHNjdHBfcmVzZXRfcwogU0NUUF9SRVNFVF9BU1NPQyB8IHN0cnVj
dCBzY3RwX2Fzc29jX3QgfCB3CiBTQ1RQX0FERF9TVFJFQU1TIHwgc3RydWN0IHNjdHBfYWRkX3N0
cmVhbXMgfCB3CiAKLUZ1cnRoZXIgdXNhZ2UgZGV0YWlscyBhcmUgZGVzY3JpYmVkIGluIFtSRkMg
NjQ1OF0odG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSwgW1JGQyA2NTI1XSh0b29scy5pZXRm
Lm9yZy9odG1sL3JmYzY1MjUpLCBhbmQgW2RyYWZ0LWlldGYtdHN2d2ctc2N0cC11ZHAtZW5jYXBz
LTAzXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi10c3Z3Zy1zY3RwLXVk
cC1lbmNhcHMtMDMpICh3b3JrIGluIHByb2dyZXNzKS4KK0Z1cnRoZXIgdXNhZ2UgZGV0YWlscyBh
cmUgZGVzY3JpYmVkIGluIFtSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzY0NTgpLCBbUkZDIDY1MjVdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTI1KSwg
YW5kIFtkcmFmdC1pZXRmLXRzdndnLXNjdHAtdWRwLWVuY2Fwcy0wM10oaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtdHN2d2ctc2N0cC11ZHAtZW5jYXBzLTAzKSAod29yayBp
biBwcm9ncmVzcykuCiAKICMjIFN5c2N0bCB2YXJpYWJsZXMKIApAQCAtNTYzLDcgKzU2Myw3IEBA
IFRoZSBjb25nZXN0aW9uIGNvbnRyb2wgc2hvdWxkIHByb3RlY3QgdGgKIEV4cGxpY2l0IGNvbmdl
c3Rpb24gbm90aWZpY2F0aW9ucyBhcmUgdHVybmVkIG9uIGJ5IGRlZmF1bHQuCiAKICMjIyMgdXNy
c2N0cF9zeXNjdGxfc2V0X3NjdHBfZGVmYXVsdF9jY19tb2R1bGUoKQotVGhpcyBwYXJhbWV0ZXIg
c2V0cyB0aGUgZGVmYXVsdCBhbGdvcml0aG0gZm9yIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wuIERl
ZmF1bHQgaXMgMCwgaS5lLiB0aGUgb25lIHNwZWNpZmllZCBpbiBbUkZDIDQ5NjBdKGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzQ5NjApLgorVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgZGVm
YXVsdCBhbGdvcml0aG0gZm9yIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wuIERlZmF1bHQgaXMgMCwg
aS5lLiB0aGUgb25lIHNwZWNpZmllZCBpbiBbUkZDIDQ5NjBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5v
cmcvaHRtbC9yZmM0OTYwKS4KIAogIyMjIyB1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9pbml0aWFs
X2N3bmQoKQogU2V0IHRoZSBpbml0aWFsIGNvbmdlc3Rpb24gd2luZG93IGluIE1UVXMuIFRoZSBk
ZWZhdWx0IGlzIDMuCkBAIC01NzgsNyArNTc4LDcgQEAgSG93IG1hbnkgdGhlIHNhbWVzIGl0IHRh
a2VzIHRvIHRyeSBzdGVwIAogCiAKICMjIENvbmZpZ3VyZSBBVVRIIGFuZCBBREQtSVAKLUFuIGlt
cG9ydGFudCBleHRlbnNpb24gb2YgU0NUUCBpcyB0aGUgZHluYW1pYyBhZGRyZXNzIHJlY29uZmln
dXJhdGlvbiAoc2VlIFtSRkMgNTA2MV0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTA2
MSkpLCBhbHNvIGtub3duIGFzIEFERC1JUCwgd2hpY2ggYWxsb3dzIHRoZSBjaGFuZ2luZyBvZiBh
ZGRyZXNzZXMgZHVyaW5nIHRoZSBsaWZldGltZSBvZiBhbiBhc3NvY2lhdGlvbi4gRm9yIHRoaXMg
ZmVhdHVyZSB0aGUgQVVUSCBleHRlbnNpb24gKHNlZSBbUkZDIDQ4OTVdKGh0dHA6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzQ4OTUpKSBpcyBuZWNlc3NhcnkuCitBbiBpbXBvcnRhbnQgZXh0ZW5z
aW9uIG9mIFNDVFAgaXMgdGhlIGR5bmFtaWMgYWRkcmVzcyByZWNvbmZpZ3VyYXRpb24gKHNlZSBb
UkZDIDUwNjFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MDYxKSksIGFsc28ga25v
d24gYXMgQURELUlQLCB3aGljaCBhbGxvd3MgdGhlIGNoYW5naW5nIG9mIGFkZHJlc3NlcyBkdXJp
bmcgdGhlIGxpZmV0aW1lIG9mIGFuIGFzc29jaWF0aW9uLiBGb3IgdGhpcyBmZWF0dXJlIHRoZSBB
VVRIIGV4dGVuc2lvbiAoc2VlIFtSRkMgNDg5NV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzQ4OTUpKSBpcyBuZWNlc3NhcnkuCiAKICMjIyMgdXNyc2N0cF9zeXNjdGxfc2V0X3NjdHBf
YXV0b19hc2NvbmYoKQogSWYgU0NUUCBBdXRvLUFTQ09ORiBpcyBlbmFibGVkLCB0aGUgcGVlciBp
cyBpbmZvcm1lZCBhdXRvbWF0aWNhbGx5IHdoZW4gYSBuZXcgYWRkcmVzcwpAQCAtNTg3LDggKzU4
Nyw4IEBAIGlzIGFkZGVkIG9yIHJlbW92ZWQuIFRoaXMgZmVhdHVyZSBpcyBlbmEKICMjIyMgdXNy
c2N0cF9zeXNjdGxfc2V0X3NjdHBfbXVsdGlwbGVfYXNjb25mcygpCiBCeSBkZWZhdWx0IHRoZSBz
ZW5kaW5nIG9mIG11bHRpcGxlIEFTQ09ORnMgaXMgZGlzYWJsZWQuCiAKLSMjIyMgdXNyc2N0cF9z
eXNjdGxfc2V0X3NjdHBfYXV0aF9kaXNhYmxlKCkKLVRoZSB1c2Ugb2YgQVVUSCwgd2hpY2ggaXMg
bm9ybWFsbHkgdHVybmVkIG9uLCBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFt
ZXRlciB0byAxLgorIyMjIyB1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9hdXRoX2VuYWJsZSgpCitU
aGUgdXNlIG9mIEFVVEgsIHdoaWNoIGlzIG5vcm1hbGx5IHR1cm5lZCBvbiwgY2FuIGJlIGRpc2Fi
bGVkIGJ5IHNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gMC4KIAogIyMjIyB1c3JzY3RwX3N5c2N0
bF9zZXRfc2N0cF9hc2NvbmZfYXV0aF9ub2NoaygpCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRp
c2FibGUgdGhlIHJlcXVpcmVtZW50IHRvIHVzZSBBVVRIIGluIGNvbmp1bmN0aW9uIHdpdGggQURE
LUlQIGJ5IHNldHRpbmcgdGhpcyBwYXJhbWV0ZXIKQEAgLTc1MiwyNyArNzUyLDI3IEBAIFNlZSBo
dHRwczovL2dpdGh1Yi5jb20vc2N0cGxhYi91c3JzY3RwL3QKICMjIyMgU0NUUAogUi4gU3Rld2Fy
dDo8L2JyPgogYFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbGAuPC9icj4KLVtS
RkMgNDk2MF0oaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDk2MCksIFNlcHRlbWJlciAy
MDA3LgorW1JGQyA0OTYwXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDk2MCksIFNl
cHRlbWJlciAyMDA3LgogCiAjIyMjIGF1dGgKIE0uIFTDvHhlbiwgUi4gU3Rld2FydCwgUC4gTGVp
LCBhbmQgRS4gUmVzY29ybGE6PC9icj4KIGBBdXRoZW50aWNhdGVkIENodW5rcyBmb3IgdGhlIFN0
cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbCAoU0NUUClgLjwvYnI+Ci1bUkZDIDQ4
OTVdKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ4OTUpLCBBdWd1c3QgMjAwNy4KK1tS
RkMgNDg5NV0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ4OTUpLCBBdWd1c3QgMjAw
Ny4KIAogIyMjIyBhZGRpcAogUi4gU3Rld2FydCwgUS4gWGllLCBNLiBUw7x4ZW4sIFMuIE1hcnV5
YW1hLCBhbmQgTS4gS296dWthOjwvYnI+CiBgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFBy
b3RvY29sIChTQ1RQKSBEeW5hbWljIEFkZHJlc3MgUmVjb25maWd1cmF0aW9uYC48L2JyPgotW1JG
QyA1MDYxXShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MDYxKSwgU2VwdGVtYmVyIDIw
MDcuCitbUkZDIDUwNjFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MDYxKSwgU2Vw
dGVtYmVyIDIwMDcuCiAKICMjIyMgc29ja2V0QVBJCiBSLiBTdGV3YXJ0LCBNLiBUw7x4ZW4sIEsu
IFBvb24sIGFuZCBWLiBZYXNldmljaDo8L2JyPgogYFNvY2tldHMgQVBJIEV4dGVuc2lvbnMgZm9y
IHRoZSBTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wgKFNDVFApYC48L2JyPgot
W1JGQyA2NDU4XShodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU4KSwgRGV6ZW1iZXIg
MjAxMS4KK1tSRkMgNjQ1OF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTgpLCBE
ZXplbWJlciAyMDExLgogCiAjIyMjIHN0cmVhbVJlc2V0CiBSLiBTdGV3YXJ0LCBNLiBUw7x4ZW4s
IGFuZCBQLiBMZWk6PC9icj4KIGBTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wg
KFNDVFApIFN0cmVhbSBSZWNvbmZpZ3VyYXRpb25gLjwvYnI+Ci1bUkZDIDY1MjVdKGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzY1MjUpLCBGZWJydWFyeSAyMDEyLgorW1JGQyA2NTI1XSho
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjUyNSksIEZlYnJ1YXJ5IDIwMTIuCiAKICMj
IyMgdWRwZW5jYXBzCiBNLiBUw7x4ZW4gYW5kIFIuIFN0ZXdhcnQ8L2JyPgpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvUkVBRE1FLm1kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL1JFQURNRS5tZAkocmV2aXNpb24g
MjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvUkVBRE1FLm1kCSh3b3JraW5nIGNvcHkpCkBAIC01LDUgKzUs
NCBAQCBUaGlzIGlzIGEgdXNlcmxhbmQgU0NUUCBzdGFjayBzdXBwb3J0aW5nCiAKIFNlZSBbbWFu
dWFsXShNYW51YWwubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi1UaGUgc3RhdHVzIG9mIGNv
bnRpbnVvdXMgaW50ZWdyYXRpb24gdGVzdGluZyBpcyBhdmFpbGFibGUgZnJvbSBbZ3JpZF0oaHR0
cDovLzIxMi4yMDEuMTIxLjExMDoxODAxMC9ncmlkKSBhbmQgW3dhdGVyZmFsbF0oaHR0cDovLzIx
Mi4yMDEuMTIxLjExMDoxODAxMC93YXRlcmZhbGwpLgotSWYgeW91IGFyZSBvbmx5IGludGVyZXN0
ZWQgaW4gYSBzaW5nbGUgYnJhbmNoLCBqdXN0IGFwcGVuZCBgP2JyYW5jaD1CUkFOQ0hOQU1FYCB0
byB0aGUgVVJMLCBmb3IgZXhhbXBsZSBbd2F0ZXJmYWxsXShodHRwOi8vMjEyLjIwMS4xMjEuMTEw
OjE4MDEwL3dhdGVyZmFsbD9icmFuY2g9bWFzdGVyKS4KK1RoZSBzdGF0dXMgb2YgY29udGludW91
cyBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGlzIGF2YWlsYWJsZSBmcm9tIG91ciBbQnVpbGRib3RdKGh0
dHA6Ly9idWlsZGJvdC5ucGxhYi5kZToxODAxMC8jL2NvbnNvbGUpLgpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
Y29uZmlndXJlLmFjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2NvbmZpZ3VyZS5hYwkocmV2aXNp
b24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvY29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBAIGRubCBTVUNIIERBTUFHRS4KIGRubAogCiBBQ19JTklUKFtsaWJ1c3JzY3Rw
XSwgWzAuOS4zLjBdKQotQU1fSU5JVF9BVVRPTUFLRQorQU1fSU5JVF9BVVRPTUFLRShbZm9yZWln
bl0pCiAKIEFDX1BST0dfQ0MKIEFDX1BST0dfTElCVE9PTApAQCAtNjEsNyArNjEsNyBAQCBmcmVl
YnNkKikKICAgTElCQ0ZMQUdTPSIkTElCQ0ZMQUdTIC1VX19GcmVlQlNEX18gLURfX1VzZXJzcGFj
ZV9vc19GcmVlQlNEIgogICA7OwogbGludXgqKQotICBDRkxBR1M9IiRDRkxBR1MgLXN0ZD1jOTkg
LXB0aHJlYWQgLURfR05VX1NPVVJDRSIKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1zdGQ9Yzk5IC1wdGhy
ZWFkIC1EX0dOVV9TT1VSQ0UgLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiCiAgIExJQkNG
TEFHUz0iJExJQkNGTEFHUyAtRF9fVXNlcnNwYWNlX29zX0xpbnV4IgogICA7OwogbmV0YnNkKikK
QEAgLTEzNiw5ICsxMzYsNyBAQCBBQ19BUkdfRU5BQkxFKHByb2dyYW1zLAogICBBQ19IRUxQX1NU
UklORyggWy0tZW5hYmxlLXByb2dyYW1zXSwKICAgICAgICAgICAgICAgICAgIFtidWlsZCBleGFt
cGxlIHByb2dyYW1zIEA8OkBkZWZhdWx0PXllc0A6PkBdKSwKICAgICBlbmFibGVfcHJvZ3JhbXM9
JGVuYWJsZXZhbCxlbmFibGVfcHJvZ3JhbXM9eWVzKQotaWYgdGVzdCB4JGVuYWJsZV9wcm9ncmFt
cyA9IHh5ZXM7IHRoZW4KLSAgICAgICAgQUNfQ09ORklHX0ZJTEVTKHByb2dyYW1zL01ha2VmaWxl
KQotZmkKK0FNX0NPTkRJVElPTkFMKFtDT05EX1BST0dSQU1TXSwgW3Rlc3QgIiRlbmFibGVfcHJv
Z3JhbXMiID0geWVzXSkKIAogQUNfQ0hFQ0tfVFlQRShzaXplX3QpCiBBQ19DSEVDS19UWVBFKHNz
aXplX3QpCkBAIC0xOTIsNCArMTkwLDUgQEAgQUNfQ19CSUdFTkRJQU4KIEFDX1NVQlNUKFtMSUJD
RkxBR1NdKQogQUNfU1VCU1QoW0FQUENGTEFHU10pCiBkbmwgQUNfQ09ORklHX0ZJTEVTKFt1c3Jz
Y3RwLnBjXSkKLUFDX09VVFBVVChNYWtlZmlsZSB1c3JzY3RwbGliL01ha2VmaWxlKQorQUNfQ09O
RklHX0ZJTEVTKHVzcnNjdHBsaWIvTWFrZWZpbGUgcHJvZ3JhbXMvTWFrZWZpbGUgTWFrZWZpbGUp
CitBQ19PVVRQVVQKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTUgT2xlZyBB
bGV4ZWVua292Ci0jIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEZlbGl4IFdlaW5yYW5rCisjIENv
cHlyaWdodCAoQykgMjAxNS0yMDE5IEZlbGl4IFdlaW5yYW5rCiAjCiAjIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjCkBAIC01MywzNSArNTMsNDIgQEAgYWRkX2RlZmluaXRpb25zKC1EU0NUUF9QUk9D
RVNTX0xFVkVMX0xPQwogIyBPUyBERVBFTkRFTlQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENI
RVMgIkxpbnV4IikKK2NoZWNrX2NfY29tcGlsZXJfZmxhZygtV25vLWFkZHJlc3Mtb2YtcGFja2Vk
LW1lbWJlciBoYXNfd25vX2FkZHJlc3Nfb2ZfcGFja2V0X21lbWJlcikKK2lmIChoYXNfd25vX2Fk
ZHJlc3Nfb2ZfcGFja2V0X21lbWJlcikKKwlzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM
QUdTfSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIpCitlbmRpZiAoKQorCitpZiAoQ01B
S0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiTGludXgiKQogCWFkZF9kZWZpbml0aW9ucygtRF9HTlVf
U09VUkNFKQogZW5kaWYgKCkKIAotaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkZy
ZWVCU0QiKQoraWYgKENNQUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgIkZyZWVCU0QiKQogCWFkZF9k
ZWZpbml0aW9ucygtVV9fRnJlZUJTRF9fKQotCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0Nf
RkxBR1N9ICAgICAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIpCi0Jc2V0KENNQUtFX0NY
WF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVy
IikKIGVuZGlmICgpCiAKLWlmICgke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEYXJ3aW4i
KQoraWYgKENNQUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgIkRhcndpbiIpCiAJYWRkX2RlZmluaXRp
b25zKC1VX19BUFBMRV9fKQogCWFkZF9kZWZpbml0aW9ucygtRF9fQVBQTEVfVVNFX1JGQ18yMjky
KQotCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9ICAgICAtV25vLWFkZHJlc3Mt
b2YtcGFja2VkLW1lbWJlciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIikKLQlzZXQoQ01B
S0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVduby1hZGRyZXNzLW9mLXBhY2tlZC1t
ZW1iZXIgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIpCisJc2V0KENNQUtFX0NfRkxBR1Mg
IiR7Q01BS0VfQ19GTEFHU30gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIpCiBlbmRpZiAo
KQogCi1pZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiRHJhZ29uRmx5IikKK2lmIChD
TUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJEcmFnb25GbHkiKQogCWFkZF9kZWZpbml0aW9ucygt
VV9fRHJhZ29uRmx5X18pCiBlbmRpZiAoKQogCi1pZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFU
Q0hFUyAiTmV0QlNEIikKK2lmIChDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJOZXRCU0QiKQog
CWFkZF9kZWZpbml0aW9ucygtVV9fTmV0QlNEX18pCiBlbmRpZiAoKQogCi1pZiAoJHtDTUFLRV9T
WVNURU1fTkFNRX0gTUFUQ0hFUyAiT3BlbkJTRCIpCitpZiAoQ01BS0VfU1lTVEVNX05BTUUgTUFU
Q0hFUyAiT3BlbkJTRCIpCiAJYWRkX2RlZmluaXRpb25zKC1VX19PcGVuQlNEX18pCiBlbmRpZiAo
KQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
IE1JU0MKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
ICMgTElCUkFSWSBGSUxFUwpAQCAtMTcxLDEwICsxNzgsMTMgQEAgbGlzdChBUFBFTkQgdXNyc2N0
cF9zb3VyY2VzCiBhZGRfbGlicmFyeSh1c3JzY3RwIFNIQVJFRCAke3VzcnNjdHBfc291cmNlc30g
JHt1c3JzY3RwX2hlYWRlcnN9KQogYWRkX2xpYnJhcnkodXNyc2N0cC1zdGF0aWMgU1RBVElDICR7
dXNyc2N0cF9zb3VyY2VzfSAke3VzcnNjdHBfaGVhZGVyc30pCiAKK3RhcmdldF9pbmNsdWRlX2Rp
cmVjdG9yaWVzKHVzcnNjdHAgUFVCTElDICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfSkKK3Rh
cmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKHVzcnNjdHAtc3RhdGljIFBVQkxJQyAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0pCisKIGlmIChXSU4zMikKIAltZXNzYWdlKFNUQVRVUyAibGluayBs
aWJyYXJ5OiB3czJfMzIiKQotCXRhcmdldF9saW5rX2xpYnJhcmllcyh1c3JzY3RwIHdzMl8zMikK
LQl0YXJnZXRfbGlua19saWJyYXJpZXModXNyc2N0cC1zdGF0aWMgd3MyXzMyKQorCXRhcmdldF9s
aW5rX2xpYnJhcmllcyh1c3JzY3RwIHdzMl8zMiBpcGhscGFwaS5saWIpCisJdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKHVzcnNjdHAtc3RhdGljIHdzMl8zMiBpcGhscGFwaS5saWIpCiBlbmRpZiAoKQog
CiBzZXRfdGFyZ2V0X3Byb3BlcnRpZXModXNyc2N0cC1zdGF0aWMgUFJPUEVSVElFUyBPVVRQVVRf
TkFNRSAidXNyc2N0cCIpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1l
bnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQu
YwkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25t
ZW50LmMJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDE0IEBAIHVzZXJsYW5kX211dGV4X3Qg
YXRvbWljX210eDsKICAqIHByb3ZpZGUgX3NvbWVfIGtpbmQgb2YgcmFuZG9tbmVzcy4gVGhpcyBz
aG91bGQgb25seSBiZSB1c2VkCiAgKiBpbnNpZGUgb3RoZXIgUk5HJ3MsIGxpa2UgYXJjNHJhbmRv
bSg5KS4KICAqLworI2lmZGVmIEZVWlpJTkdfQlVJTERfTU9ERV9VTlNBRkVfRk9SX1BST0RVQ1RJ
T04KK3N0YXRpYyBpbnQKK3JlYWRfcmFuZG9tX3Bob255KHZvaWQgKmJ1ZiwgaW50IGNvdW50KQor
eworCW1lbXNldChidWYsICdBJywgY291bnQpOworCXJldHVybiAoY291bnQpOworfQorI2Vsc2UK
ICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0ZyZWVCU0QpIHx8IGRlZmluZWQoX19Vc2Vyc3Bh
Y2Vfb3NfRGFyd2luKQogc3RhdGljIGludAogcmVhZF9yYW5kb21fcGhvbnkodm9pZCAqYnVmLCBp
bnQgY291bnQpCkBAIC05Miw2ICsxMDAsNyBAQCByZWFkX3JhbmRvbV9waG9ueSh2b2lkICpidWYs
IGludCBjb3VudCkKIAlyZXR1cm4gKGNvdW50KTsKIH0KICNlbmRpZgorI2VuZGlmCiAKIHN0YXRp
YyBpbnQgKCpyZWFkX2Z1bmMpKHZvaWQgKiwgaW50KSA9IHJlYWRfcmFuZG9tX3Bob255OwogCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfZW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjU4NjA4
KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX2Vudmlyb25tZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDcgKzYyLDcgQEAgZXh0ZXJuIGludCBpcHBvcnRfZmlyc3RhdXRvLCBpcHBvcnRf
bGFzdAogICovCiBleHRlcm4gaW50IG5tYmNsdXN0ZXJzOwogCi0jaWYgIWRlZmluZWQgKF9fVXNl
cnNwYWNlX29zX1dpbmRvd3MpCisjaWYgIWRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9f
TUlOR1czMl9fKQogI2RlZmluZSBtaW4oYSxiKSAoKGEpPihiKT8oYik6KGEpKQogI2RlZmluZSBt
YXgoYSxiKSAoKGEpPihiKT8oYSk6KGIpKQogI2VuZGlmCkBAIC05Niw3ICs5Niw3IEBAIHRlcm1p
bmF0ZV9ub25fZ3JhY2VmdWwodm9pZCkgewogCiAjZGVmaW5lIHBhbmljKC4uLikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogCWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotCQlTQ1RQX1BSSU5URigiJXMoKTogIiwgX19GVU5DVElPTl9fKTtc
CisJCVNDVFBfUFJJTlRGKCIlcygpOiAiLCBfX2Z1bmNfXyk7ICAgIFwKIAkJU0NUUF9QUklOVEYo
X19WQV9BUkdTX18pOyAgICAgICAgICAgXAogCQlTQ1RQX1BSSU5URigiXG4iKTsgICAgICAgICAg
ICAgICAgICBcCiAJCXRlcm1pbmF0ZV9ub25fZ3JhY2VmdWwoKTsgICAgICAgICAgIFwKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9pbnBjYi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvdXNlcl9pbnBjYi5oCShyZXZpc2lvbiAyNTg2MDgpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL3VzZXJfaW5wY2IuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsNiBAQAog
CiAjaW5jbHVkZSA8dXNlcl9yb3V0ZS5oPiAvKiB3YXMgPG5ldC9yb3V0ZS5oPiAqLwogCi0jZGVm
aW5lCWluNnBjYgkJaW5wY2IJLyogZm9yIEtBTUUgc3JjIHN5bmMgb3ZlciBCU0QqJ3MgKi8KLSNk
ZWZpbmUJaW42cF9zcAkJaW5wX3NwCS8qIGZvciBLQU1FIHNyYyBzeW5jIG92ZXIgQlNEKidzICov
CiBzdHJ1Y3QgaW5wY2Jwb2xpY3k7CiAKIC8qCkBAIC0zMjYsNyArMzI0LDYgQEAgc3RydWN0IGlu
cGNiaW5mbyB7CiAKICNkZWZpbmUJSU5QTE9PS1VQX1dJTERDQVJECTEKICNkZWZpbmUJc290b2lu
cGNiKHNvKQkoKHN0cnVjdCBpbnBjYiAqKShzbyktPnNvX3BjYikKLSNkZWZpbmUJc290b2luNnBj
YihzbykJc290b2lucGNiKHNvKSAvKiBmb3IgS0FNRSBzcmMgc3luYyBvdmVyIEJTRConcyAqLwog
CiAjZGVmaW5lCUlOUF9TT0NLQUYoc28pIHNvLT5zb19wcm90by0+cHJfZG9tYWluLT5kb21fZmFt
aWx5CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWFsbG9jLmgJKHJldmlzaW9uIDI1ODYwOCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4K
ICNlbHNlCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTYwMAorI2lmIChk
ZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwKSB8fCAoZGVmaW5lZChfX01TVkNS
VF9WRVJTSU9OX18pICYmIF9fTVNWQ1JUX1ZFUlNJT05fXyA+PSAxNDAwKQogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2VsaWYgZGVmaW5lZChTQ1RQX1NURElOVF9JTkNMVURFKQogI2luY2x1ZGUgU0NU
UF9TVERJTlRfSU5DTFVERQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5jCShyZXZpc2lvbiAy
NTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5jCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTMsNyArMzEzLDcgQEAgbV9nZXRtMihzdHJ1Y3QgbWJ1ZiAqbSwgaW50IGxlbiwgaW50
IGhvdwogCQkJbWIgPSBtX2dldGhkcihob3csIHR5cGUpOwogCQkJTUNMR0VUKG1iLCBob3cpOwog
CQkJc2l6ZSA9IE1DTEJZVEVTOwotCQkJLy9TQ1RQX0JVRl9MRU4obWIpID0gTUNMQllURVM7CisJ
CQkvKiBTQ1RQX0JVRl9MRU4obWIpID0gTUNMQllURVM7ICovCiAJCX0gZWxzZSBpZiAoZmxhZ3Mg
JiBNX1BLVEhEUikgewogCQkJbWIgPSBtX2dldGhkcihob3csIHR5cGUpOwogCQkJaWYgKGxlbiA8
IE1ITEVOKSB7CkBAIC0zMzgsNyArMzM4LDcgQEAgbV9nZXRtMihzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGxlbiwgaW50IGhvdwogCQl9CiAKIAkJaWYgKGFsbG9uZWJ1ZiAhPSAwICYmIHNpemUgPCBzcGFj
ZV9uZWVkZWQpIHsKLQkJCW1fZnJlZW0obSk7CisJCQltX2ZyZWVtKG1iKTsKIAkJCXJldHVybiAo
TlVMTCk7CiAJCX0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFk
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3JlY3ZfdGhyZWFkLmMJ
KHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9yZWN2X3RocmVh
ZC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgcmVjdl9mdW5jdGlvbl9yb3V0
ZSh2b2lkICphcmcpCiAJCQl9CiAJCX0KIAkJaWYgKHJldCA8IDApIHsKLQkJCWlmIChlcnJubyA9
PSBFQUdBSU4pIHsKKwkJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpIHsK
IAkJCQljb250aW51ZTsKIAkJCX0gZWxzZSB7CiAJCQkJYnJlYWs7CkBAIC0yMTEsNyArMjExLDcg
QEAgcmVjdl9mdW5jdGlvbl9yb3V0ZSh2b2lkICphcmcpCiAJCWxlbiA9IHJlY3Ztc2coU0NUUF9C
QVNFX1ZBUih1c2Vyc3BhY2Vfcm91dGUpLCAmbXNnLCAwKTsKIAogCQlpZiAobGVuIDwgMCkgewot
CQkJaWYgKGVycm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFSU5UUikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAg
LTMyMywxMiArMzIzLDEwIEBAIHJlY3ZfZnVuY3Rpb25fcmF3KHZvaWQgKmFyZykKIAkJblJlc3Vs
dCA9IFdTQVJlY3ZGcm9tKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jhd3NjdHApLCByZWN2X2lv
dmVjLCBNQVhMRU5fTUJVRl9DSEFJTiwgJm5jb3VudGVyLCAmZmxhZ3MsIChzdHJ1Y3Qgc29ja2Fk
ZHIgKikmZnJvbSwgJmZyb21sZW4sIE5VTEwsIE5VTEwpOwogCQlpZiAoblJlc3VsdCAhPSAwKSB7
CiAJCQltX0Vycm9yQ29kZSA9IFdTQUdldExhc3RFcnJvcigpOwotCQkJaWYgKG1fRXJyb3JDb2Rl
ID09IFdTQUVUSU1FRE9VVCkgewotCQkJCWNvbnRpbnVlOwotCQkJfQogCQkJaWYgKChtX0Vycm9y
Q29kZSA9PSBXU0FFTk9UU09DSykgfHwgKG1fRXJyb3JDb2RlID09IFdTQUVJTlRSKSkgewogCQkJ
CWJyZWFrOwogCQkJfQorCQkJY29udGludWU7CiAJCX0KIAkJbiA9IG5jb3VudGVyOwogI2Vsc2UK
QEAgLTM0MSw3ICszMzksNyBAQCByZWN2X2Z1bmN0aW9uX3Jhdyh2b2lkICphcmcpCiAJCW1zZy5t
c2dfY29udHJvbGxlbiA9IDA7CiAJCW5jb3VudGVyID0gbiA9IHJlY3Ztc2coU0NUUF9CQVNFX1ZB
Uih1c2Vyc3BhY2VfcmF3c2N0cCksICZtc2csIDApOwogCQlpZiAobiA8IDApIHsKLQkJCWlmIChl
cnJubyA9PSBFQUdBSU4pIHsKKwkJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlO
VFIpIHsKIAkJCQljb250aW51ZTsKIAkJCX0gZWxzZSB7CiAJCQkJYnJlYWs7CkBAIC00MzIsNiAr
NDMwLDcgQEAgcmVjdl9mdW5jdGlvbl9yYXcodm9pZCAqYXJnKQogCX0KIAkvKiBmcmVlIHRoZSBh
cnJheSBpdHNlbGYgKi8KIAlmcmVlKHJlY3ZtYnVmKTsKKwlTQ1RQREJHKFNDVFBfREVCVUdfVVNS
LCAiJXM6IEV4aXRpbmcgU0NUUC9JUDQgcmN2IiwgX19mdW5jX18pOwogCXJldHVybiAoTlVMTCk7
CiB9CiAjZW5kaWYKQEAgLTQ1MCwxMCArNDQ5LDggQEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQg
KmFyZykKICNlbHNlCiAJV1NBQlVGIHJlY3ZfaW92ZWNbTUFYTEVOX01CVUZfQ0hBSU5dOwogCWlu
dCBuUmVzdWx0LCBtX0Vycm9yQ29kZTsKLQlEV09SRCBmbGFnczsKIAlEV09SRCBuY291bnRlciA9
IDA7CiAJc3RydWN0IHNvY2thZGRyX2luNiBmcm9tOwotCWludCBmcm9tbGVuOwogCUdVSUQgV1NB
UmVjdk1zZ19HVUlEID0gV1NBSURfV1NBUkVDVk1TRzsKIAlMUEZOX1dTQVJFQ1ZNU0cgV1NBUmVj
dk1zZzsKIAlXU0FDTVNHSERSICpjbXNncHRyOwpAQCAtNDk1LDkgKzQ5Miw3IEBAIHJlY3ZfZnVu
Y3Rpb25fcmF3Nih2b2lkICphcmcpCiAJCX0KIAkJdG9fZmlsbCA9IDA7CiAjaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQotCQlmbGFncyA9IDA7CiAJCW5jb3VudGVyID0gMDsKLQkJ
ZnJvbWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKIAkJbWVtc2V0KCZmcm9tLCAw
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwogCQluUmVzdWx0ID0gV1NBSW9jdGwoU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCBTSU9fR0VUX0VYVEVOU0lPTl9GVU5DVElP
Tl9QT0lOVEVSLAogCQkgICAgICAgICAgICAgICAgICAgJldTQVJlY3ZNc2dfR1VJRCwgc2l6ZW9m
IFdTQVJlY3ZNc2dfR1VJRCwKQEAgLTUxNSwxMCArNTEwLDEwIEBAIHJlY3ZfZnVuY3Rpb25fcmF3
Nih2b2lkICphcmcpCiAJCX0KIAkJaWYgKG5SZXN1bHQgIT0gMCkgewogCQkJbV9FcnJvckNvZGUg
PSBXU0FHZXRMYXN0RXJyb3IoKTsKLQkJCWlmIChtX0Vycm9yQ29kZSA9PSBXU0FFVElNRURPVVQp
Ci0JCQkJY29udGludWU7Ci0JCQlpZiAobV9FcnJvckNvZGUgPT0gV1NBRU5PVFNPQ0sgfHwgbV9F
cnJvckNvZGUgPT0gV1NBRUlOVFIpCisJCQlpZiAoKG1fRXJyb3JDb2RlID09IFdTQUVOT1RTT0NL
KSB8fCAobV9FcnJvckNvZGUgPT0gV1NBRUlOVFIpKSB7CiAJCQkJYnJlYWs7CisJCQl9CisJCQlj
b250aW51ZTsKIAkJfQogCQluID0gbmNvdW50ZXI7CiAjZWxzZQpAQCAtNTMxLDEyICs1MjYsMTIg
QEAgcmVjdl9mdW5jdGlvbl9yYXc2KHZvaWQgKmFyZykKIAkJbXNnLm1zZ19pb3YgPSByZWN2X2lv
dmVjOwogCQltc2cubXNnX2lvdmxlbiA9IE1BWExFTl9NQlVGX0NIQUlOOwogCQltc2cubXNnX2Nv
bnRyb2wgPSAodm9pZCAqKWNtc2didWY7Ci0JCW1zZy5tc2dfY29udHJvbGxlbiA9IChzb2NrbGVu
X3QpQ01TR19MRU4oc2l6ZW9mIChzdHJ1Y3QgaW42X3BrdGluZm8pKTsKKwkJbXNnLm1zZ19jb250
cm9sbGVuID0gKHNvY2tsZW5fdClDTVNHX1NQQUNFKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZv
KSk7CiAJCW1zZy5tc2dfZmxhZ3MgPSAwOwogCiAJCW5jb3VudGVyID0gbiA9IHJlY3Ztc2coU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfcmF3c2N0cDYpLCAmbXNnLCAwKTsKIAkJaWYgKG4gPCAwKSB7
Ci0JCQlpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisJCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVy
cm5vID09IEVJTlRSKSB7CiAJCQkJY29udGludWU7CiAJCQl9IGVsc2UgewogCQkJCWJyZWFrOwpA
QCAtNjIwLDYgKzYxNSw3IEBAIHJlY3ZfZnVuY3Rpb25fcmF3Nih2b2lkICphcmcpCiAJfQogCS8q
IGZyZWUgdGhlIGFycmF5IGl0c2VsZiAqLwogCWZyZWUocmVjdm1idWY2KTsKKwlTQ1RQREJHKFND
VFBfREVCVUdfVVNSLCAiJXM6IEV4aXRpbmcgU0NUUC9JUDYgcmN2IiwgX19mdW5jX18pOwogCXJl
dHVybiAoTlVMTCk7CiB9CiAjZW5kaWYKQEAgLTcwMyw3ICs2OTksNyBAQCByZWN2X2Z1bmN0aW9u
X3VkcCh2b2lkICphcmcpCiAKIAkJbmNvdW50ZXIgPSBuID0gcmVjdm1zZyhTQ1RQX0JBU0VfVkFS
KHVzZXJzcGFjZV91ZHBzY3RwKSwgJm1zZywgMCk7CiAJCWlmIChuIDwgMCkgewotCQkJaWYgKGVy
cm5vID09IEVBR0FJTikgeworCQkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5U
UikgewogCQkJCWNvbnRpbnVlOwogCQkJfSBlbHNlIHsKIAkJCQlicmVhazsKQEAgLTcyNiwxMiAr
NzIyLDEwIEBAIHJlY3ZfZnVuY3Rpb25fdWRwKHZvaWQgKmFyZykKIAkJfQogCQlpZiAoblJlc3Vs
dCAhPSAwKSB7CiAJCQltX0Vycm9yQ29kZSA9IFdTQUdldExhc3RFcnJvcigpOwotCQkJaWYgKG1f
RXJyb3JDb2RlID09IFdTQUVUSU1FRE9VVCkgewotCQkJCWNvbnRpbnVlOwotCQkJfQogCQkJaWYg
KChtX0Vycm9yQ29kZSA9PSBXU0FFTk9UU09DSykgfHwgKG1fRXJyb3JDb2RlID09IFdTQUVJTlRS
KSkgewogCQkJCWJyZWFrOwogCQkJfQorCQkJY29udGludWU7CiAJCX0KIAkJbiA9IG5jb3VudGVy
OwogI2VuZGlmCkBAIC04MjYsNiArODIwLDcgQEAgcmVjdl9mdW5jdGlvbl91ZHAodm9pZCAqYXJn
KQogCX0KIAkvKiBmcmVlIHRoZSBhcnJheSBpdHNlbGYgKi8KIAlmcmVlKHVkcHJlY3ZtYnVmKTsK
KwlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiJXM6IEV4aXRpbmcgU0NUUC9VRFAvSVA0IHJjdiIs
IF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwpOwogfQogI2VuZGlmCkBAIC04NTAsMTAgKzg0NSwx
MCBAQCByZWN2X2Z1bmN0aW9uX3VkcDYodm9pZCAqYXJnKQogCWNoYXIgY21zZ2J1ZltDTVNHX1NQ
QUNFKHNpemVvZiAoc3RydWN0IGluNl9wa3RpbmZvKSldOwogCWludCBjb21wdXRlX2NyYyA9IDE7
CiAjaWYgIWRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLQl1bnNpZ25lZCBpbnQgbmNv
dW50ZXI7CiAJc3RydWN0IGlvdmVjIGlvdltNQVhMRU5fTUJVRl9DSEFJTl07CiAJc3RydWN0IG1z
Z2hkciBtc2c7CiAJc3RydWN0IGNtc2doZHIgKmNtc2dwdHI7CisJdW5zaWduZWQgaW50IG5jb3Vu
dGVyOwogI2Vsc2UKIAlHVUlEIFdTQVJlY3ZNc2dfR1VJRCA9IFdTQUlEX1dTQVJFQ1ZNU0c7CiAJ
TFBGTl9XU0FSRUNWTVNHIFdTQVJlY3ZNc2c7CkBAIC04NjEsOCArODU2LDggQEAgcmVjdl9mdW5j
dGlvbl91ZHA2KHZvaWQgKmFyZykKIAlXU0FCVUYgaW92W01BWExFTl9NQlVGX0NIQUlOXTsKIAlX
U0FNU0cgbXNnOwogCWludCBuUmVzdWx0LCBtX0Vycm9yQ29kZTsKLQlEV09SRCBuY291bnRlcjsK
IAlXU0FDTVNHSERSICpjbXNncHRyOworCURXT1JEIG5jb3VudGVyOwogI2VuZGlmCiAKIAlzY3Rw
X3VzZXJzcGFjZV9zZXRfdGhyZWFkbmFtZSgiU0NUUC9VRFAvSVA2IHJjdiIpOwpAQCAtOTAwLDEy
ICs4OTUsMTIgQEAgcmVjdl9mdW5jdGlvbl91ZHA2KHZvaWQgKmFyZykKIAkJbXNnLm1zZ19pb3Yg
PSBpb3Y7CiAJCW1zZy5tc2dfaW92bGVuID0gTUFYTEVOX01CVUZfQ0hBSU47CiAJCW1zZy5tc2df
Y29udHJvbCA9ICh2b2lkICopY21zZ2J1ZjsKLQkJbXNnLm1zZ19jb250cm9sbGVuID0gKHNvY2ts
ZW5fdClDTVNHX0xFTihzaXplb2YgKHN0cnVjdCBpbjZfcGt0aW5mbykpOworCQltc2cubXNnX2Nv
bnRyb2xsZW4gPSAoc29ja2xlbl90KUNNU0dfU1BBQ0Uoc2l6ZW9mIChzdHJ1Y3QgaW42X3BrdGlu
Zm8pKTsKIAkJbXNnLm1zZ19mbGFncyA9IDA7CiAKIAkJbmNvdW50ZXIgPSBuID0gcmVjdm1zZyhT
Q1RQX0JBU0VfVkFSKHVzZXJzcGFjZV91ZHBzY3RwNiksICZtc2csIDApOwogCQlpZiAobiA8IDAp
IHsKLQkJCWlmIChlcnJubyA9PSBFQUdBSU4pIHsKKwkJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwg
ZXJybm8gPT0gRUlOVFIpIHsKIAkJCQljb250aW51ZTsKIAkJCX0gZWxzZSB7CiAJCQkJYnJlYWs7
CkBAIC05MzIsMTIgKzkyNywxMCBAQCByZWN2X2Z1bmN0aW9uX3VkcDYodm9pZCAqYXJnKQogCQl9
CiAJCWlmIChuUmVzdWx0ICE9IDApIHsKIAkJCW1fRXJyb3JDb2RlID0gV1NBR2V0TGFzdEVycm9y
KCk7Ci0JCQlpZiAobV9FcnJvckNvZGUgPT0gV1NBRVRJTUVET1VUKSB7Ci0JCQkJY29udGludWU7
Ci0JCQl9CiAJCQlpZiAoKG1fRXJyb3JDb2RlID09IFdTQUVOT1RTT0NLKSB8fCAobV9FcnJvckNv
ZGUgPT0gV1NBRUlOVFIpKSB7CiAJCQkJYnJlYWs7CiAJCQl9CisJCQljb250aW51ZTsKIAkJfQog
CQluID0gbmNvdW50ZXI7CiAjZW5kaWYKQEAgLTEwMTQsNiArMTAwNyw3IEBAIHJlY3ZfZnVuY3Rp
b25fdWRwNih2b2lkICphcmcpCiAJfQogCS8qIGZyZWUgdGhlIGFycmF5IGl0c2VsZiAqLwogCWZy
ZWUodWRwcmVjdm1idWY2KTsKKwlTQ1RQREJHKFNDVFBfREVCVUdfVVNSLCAiJXM6IEV4aXRpbmcg
U0NUUC9VRFAvSVA2IHJjdiIsIF9fZnVuY19fKTsKIAlyZXR1cm4gKE5VTEwpOwogfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0LmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldC5jCShyZXZpc2lvbiAyNTg2MDgpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL3VzZXJfc29ja2V0LmMJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfc3lzY3RsLmg+CiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX2lucHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BlZWxvZmYuaD4KKyNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfY2FsbG91dC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9j
cmMzMi5oPgogI2lmZGVmIElORVQ2CiAjaW5jbHVkZSA8bmV0aW5ldDYvc2N0cDZfdmFyLmg+CkBA
IC03NywxMSArNzgsNyBAQCBleHRlcm4gaW50IHNjdHBfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNv
CiBleHRlcm4gaW50IHNjdHBfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHVp
bnQzMl90IHZyZl9pZCk7CiBleHRlcm4gaW50IHNjdHBjb25uX2F0dGFjaChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IHByb3RvLCB1aW50MzJfdCB2cmZfaWQpOwogCi12b2lkCi11c3JzY3RwX2luaXQo
dWludDE2X3QgcG9ydCwKLSAgICAgICAgICAgICBpbnQgKCpjb25uX291dHB1dCkodm9pZCAqYWRk
ciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRf
ZGYpLAotICAgICAgICAgICAgIHZvaWQgKCpkZWJ1Z19wcmludGYpKGNvbnN0IGNoYXIgKmZvcm1h
dCwgLi4uKSkKLXsKK3N0YXRpYyB2b2lkIGluaXRfc3luYyh2b2lkKSB7CiAjaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKQogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVU
NikKIAlXU0FEQVRBIHdzYURhdGE7CkBAIC0xMDQsNyArMTAxLDI1IEBAIHVzcnNjdHBfaW5pdCh1
aW50MTZfdCBwb3J0LAogCXB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3koJm11dGV4X2F0dHIpOwog
CXB0aHJlYWRfY29uZF9pbml0KCZhY2NlcHRfY29uZCwgTlVMTCk7CiAjZW5kaWYKLQlzY3RwX2lu
aXQocG9ydCwgY29ubl9vdXRwdXQsIGRlYnVnX3ByaW50Zik7Cit9CisKK3ZvaWQKK3VzcnNjdHBf
aW5pdCh1aW50MTZfdCBwb3J0LAorICAgICAgICAgICAgIGludCAoKmNvbm5fb3V0cHV0KSh2b2lk
ICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50OF90
IHNldF9kZiksCisgICAgICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pKQoreworCWluaXRfc3luYygpOworCXNjdHBfaW5pdChwb3J0LCBjb25uX291
dHB1dCwgZGVidWdfcHJpbnRmLCAxKTsKK30KKworCit2b2lkCit1c3JzY3RwX2luaXRfbm90aHJl
YWRzKHVpbnQxNl90IHBvcnQsCisJCSAgICAgICBpbnQgKCpjb25uX291dHB1dCkodm9pZCAqYWRk
ciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRf
ZGYpLAorCQkgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pKQoreworCWluaXRfc3luYygpOworCXNjdHBfaW5pdChwb3J0LCBjb25uX291dHB1dCwgZGVi
dWdfcHJpbnRmLCAwKTsKIH0KIAogCkBAIC0zNDYsMjEgKzM2MSwyMSBAQCB2b2lkCiBzb2lzZGlz
Y29ubmVjdGluZyhzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAotICAgICAgICAvKgotICAgICAgICAg
KiBOb3RlOiBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IFNPQ0tfTE9DSyhzbykgYW5kCi0gICAgICAg
ICAqIFNPQ0tCVUZfTE9DSygmc28tPnNvX3JjdikgYXJlIHRoZSBzYW1lLgotICAgICAgICAgKi8K
LSAgICAgICAgU09DS0JVRl9MT0NLKCZzby0+c29fcmN2KTsKLSAgICAgICAgc28tPnNvX3N0YXRl
ICY9IH5TU19JU0NPTk5FQ1RJTkc7Ci0gICAgICAgIHNvLT5zb19zdGF0ZSB8PSBTU19JU0RJU0NP
Tk5FQ1RJTkc7Ci0gICAgICAgIHNvLT5zb19yY3Yuc2Jfc3RhdGUgfD0gU0JTX0NBTlRSQ1ZNT1JF
OwotICAgICAgICBzb3J3YWtldXBfbG9ja2VkKHNvKTsKLSAgICAgICAgU09DS0JVRl9MT0NLKCZz
by0+c29fc25kKTsKLSAgICAgICAgc28tPnNvX3NuZC5zYl9zdGF0ZSB8PSBTQlNfQ0FOVFNFTkRN
T1JFOwotICAgICAgICBzb3d3YWtldXBfbG9ja2VkKHNvKTsKLSAgICAgICAgd2FrZXVwKCJkdW1t
eSIsc28pOwotICAgICAgICAvKiByZXF1aXJlcyAyIGFyZ3MgYnV0IHRoaXMgd2FzIGluIG9yaWcg
Ki8KLSAgICAgICAgLyogd2FrZXVwKCZzby0+c29fdGltZW8pOyAqLworCS8qCisJICogTm90ZTog
VGhpcyBjb2RlIGFzc3VtZXMgdGhhdCBTT0NLX0xPQ0soc28pIGFuZAorCSAqIFNPQ0tCVUZfTE9D
Sygmc28tPnNvX3JjdikgYXJlIHRoZSBzYW1lLgorCSAqLworCVNPQ0tCVUZfTE9DSygmc28tPnNv
X3Jjdik7CisJc28tPnNvX3N0YXRlICY9IH5TU19JU0NPTk5FQ1RJTkc7CisJc28tPnNvX3N0YXRl
IHw9IFNTX0lTRElTQ09OTkVDVElORzsKKwlzby0+c29fcmN2LnNiX3N0YXRlIHw9IFNCU19DQU5U
UkNWTU9SRTsKKwlzb3J3YWtldXBfbG9ja2VkKHNvKTsKKwlTT0NLQlVGX0xPQ0soJnNvLT5zb19z
bmQpOworCXNvLT5zb19zbmQuc2Jfc3RhdGUgfD0gU0JTX0NBTlRTRU5ETU9SRTsKKwlzb3d3YWtl
dXBfbG9ja2VkKHNvKTsKKwl3YWtldXAoImR1bW15Iixzbyk7CisJLyogcmVxdWlyZXMgMiBhcmdz
IGJ1dCB0aGlzIHdhcyBpbiBvcmlnICovCisJLyogd2FrZXVwKCZzby0+c29fdGltZW8pOyAqLwog
fQogCiAKQEAgLTU2NSwxMyArNTgwLDEzIEBAIHN0cnVjdCBzY3RwX2dlbmVyaWNfc2VuZG1zZ19h
cmdzIHsKIH07CiAKIHN0cnVjdCBzY3RwX2dlbmVyaWNfcmVjdm1zZ19hcmdzIHsKLSAgICAgICAg
aW50IHNkOwotICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdjsKLSAgICAgICAgaW50IGlvdmxlbjsK
LSAgICAgICAgc3RydWN0IHNvY2thZGRyICpmcm9tOwotICAgICAgICBzb2NrbGVuX3QgKmZyb21s
ZW5hZGRyOyAvKiB3YXMgX19zb2NrbGVuX3QgKi8KLSAgICAgICAgc3RydWN0IHNjdHBfc25kcmN2
aW5mbyAqc2luZm87Ci0gICAgICAgIGludCAqbXNnX2ZsYWdzOworCWludCBzZDsKKwlzdHJ1Y3Qg
aW92ZWMgKmlvdjsKKwlpbnQgaW92bGVuOworCXN0cnVjdCBzb2NrYWRkciAqZnJvbTsKKwlzb2Nr
bGVuX3QgKmZyb21sZW5hZGRyOyAvKiB3YXMgX19zb2NrbGVuX3QgKi8KKwlzdHJ1Y3Qgc2N0cF9z
bmRyY3ZpbmZvICpzaW5mbzsKKwlpbnQgKm1zZ19mbGFnczsKIH07CiAKIApAQCAtOTUwLDUyICs5
NjUsNTEgQEAgdXNlcnNwYWNlX3NjdHBfc2VuZG1idWYoc3RydWN0IHNvY2tldCAqcwogICAgIHVf
aW50MzJfdCBjb250ZXh0KQogewogCi0gICAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyBzbmRyY3Zp
bmZvLCAqc2luZm8gPSAmc25kcmN2aW5mbzsKLSAgICAvKiAgICBzdHJ1Y3QgdWlvIGF1aW87Ci0g
ICAgICAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsgKi8KLSAgICBpbnQgZXJyb3IgPSAwOwotICAg
IGludCB1ZmxhZ3MgPSAwOwotICAgIHNzaXplX3QgcmV0dmFsOwotCi0gICAgc2luZm8tPnNpbmZv
X3BwaWQgPSBwcGlkOwotICAgIHNpbmZvLT5zaW5mb19mbGFncyA9IGZsYWdzOwotICAgIHNpbmZv
LT5zaW5mb19zdHJlYW0gPSBzdHJlYW1fbm87Ci0gICAgc2luZm8tPnNpbmZvX3RpbWV0b2xpdmUg
PSB0aW1ldG9saXZlOwotICAgIHNpbmZvLT5zaW5mb19jb250ZXh0ID0gY29udGV4dDsKLSAgICBz
aW5mby0+c2luZm9fYXNzb2NfaWQgPSAwOwotCi0gICAgLyogUGVyZm9ybSBlcnJvciBjaGVja3Mg
b24gZGVzdGluYXRpb24gKHRvKSAqLwotICAgIGlmICh0b2xlbiA+IFNPQ0tfTUFYQUREUkxFTil7
Ci0gICAgICAgIGVycm9yID0gKEVOQU1FVE9PTE9ORyk7Ci0gICAgICAgIGdvdG8gc2VuZG1zZ19y
ZXR1cm47Ci0gICAgfQotICAgIGlmICh0b2xlbiA8IChzb2NrbGVuX3Qpb2Zmc2V0b2Yoc3RydWN0
IHNvY2thZGRyLCBzYV9kYXRhKSl7Ci0gICAgICAgIGVycm9yID0gKEVJTlZBTCk7Ci0gICAgICAg
IGdvdG8gc2VuZG1zZ19yZXR1cm47Ci0gICAgfQotICAgIC8qIEFkZGluZyB0aGUgZm9sbG93aW5n
IGFzIHBhcnQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLCBpbiBjYXNlIHRoZSBhcHBsaWNhdGlv
bgotICAgICAgIGRvZXMgbm90IGRvIGl0IHdoZW4gcHJlcGFyaW5nIHRoZSBkZXN0aW5hdGlvbiBh
ZGRyZXNzLiovCisJc3RydWN0IHNjdHBfc25kcmN2aW5mbyBzbmRyY3ZpbmZvLCAqc2luZm8gPSAm
c25kcmN2aW5mbzsKKwkvKiAgICBzdHJ1Y3QgdWlvIGF1aW87CisJICAgICAgc3RydWN0IGlvdmVj
IGlvdlsxXTsgKi8KKwlpbnQgZXJyb3IgPSAwOworCWludCB1ZmxhZ3MgPSAwOworCXNzaXplX3Qg
cmV0dmFsOworCisJc2luZm8tPnNpbmZvX3BwaWQgPSBwcGlkOworCXNpbmZvLT5zaW5mb19mbGFn
cyA9IGZsYWdzOworCXNpbmZvLT5zaW5mb19zdHJlYW0gPSBzdHJlYW1fbm87CisJc2luZm8tPnNp
bmZvX3RpbWV0b2xpdmUgPSB0aW1ldG9saXZlOworCXNpbmZvLT5zaW5mb19jb250ZXh0ID0gY29u
dGV4dDsKKwlzaW5mby0+c2luZm9fYXNzb2NfaWQgPSAwOworCisJLyogUGVyZm9ybSBlcnJvciBj
aGVja3Mgb24gZGVzdGluYXRpb24gKHRvKSAqLworCWlmICh0b2xlbiA+IFNPQ0tfTUFYQUREUkxF
Til7CisJCWVycm9yID0gKEVOQU1FVE9PTE9ORyk7CisJCWdvdG8gc2VuZG1zZ19yZXR1cm47CisJ
fQorCWlmICh0b2xlbiA8IChzb2NrbGVuX3Qpb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyLCBzYV9k
YXRhKSl7CisJCWVycm9yID0gKEVJTlZBTCk7CisJCWdvdG8gc2VuZG1zZ19yZXR1cm47CisJfQor
CS8qIEFkZGluZyB0aGUgZm9sbG93aW5nIGFzIHBhcnQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5n
LCBpbiBjYXNlIHRoZSBhcHBsaWNhdGlvbgorCSAgIGRvZXMgbm90IGRvIGl0IHdoZW4gcHJlcGFy
aW5nIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiovCiAjaWZkZWYgSEFWRV9TQV9MRU4KLSAgICB0
by0+c2FfbGVuID0gdG9sZW47CisJdG8tPnNhX2xlbiA9IHRvbGVuOwogI2VuZGlmCiAKLSAgICBl
cnJvciA9IHNjdHBfbG93ZXJfc29zZW5kKHNvLCB0bywgTlVMTC8qdWlvKi8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3RydWN0IG1idWYgKiltYnVmZGF0YSwgKHN0cnVjdCBtYnVm
ICopTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVmbGFncywgc2luZm8pOwor
CWVycm9yID0gc2N0cF9sb3dlcl9zb3NlbmQoc28sIHRvLCBOVUxMLyp1aW8qLywKKwkgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN0cnVjdCBtYnVmICopbWJ1ZmRhdGEsIChzdHJ1Y3QgbWJ1ZiAq
KU5VTEwsCisJICAgICAgICAgICAgICAgICAgICAgICAgIHVmbGFncywgc2luZm8pOwogc2VuZG1z
Z19yZXR1cm46Ci0gICAgLyogVE9ETzogTmVlZHMgYSBjb25kaXRpb24gZm9yIG5vbi1ibG9ja2lu
ZyB3aGVuIGVycm9yIGlzIEVXT1VMREJMT0NLICovCi0gICAgaWYgKDAgPT0gZXJyb3IpCi0gICAg
ICAgIHJldHZhbCA9IGxlbjsKLSAgICBlbHNlIGlmIChlcnJvciA9PSBFV09VTERCTE9DSykgewot
ICAgICAgICBlcnJubyA9IEVXT1VMREJMT0NLOwotICAgICAgICByZXR2YWwgPSAtMTsKLSAgICB9
IGVsc2UgewotICAgICAgICBTQ1RQX1BSSU5URigiJXM6IGVycm9yID0gJWRcbiIsIF9fZnVuY19f
LCBlcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyb3I7Ci0gICAgICAgIHJldHZhbCA9IC0xOwot
ICAgIH0KLSAgICByZXR1cm4gKHJldHZhbCk7Ci0KKwkvKiBUT0RPOiBOZWVkcyBhIGNvbmRpdGlv
biBmb3Igbm9uLWJsb2NraW5nIHdoZW4gZXJyb3IgaXMgRVdPVUxEQkxPQ0sgKi8KKwlpZiAoMCA9
PSBlcnJvcikKKwkJcmV0dmFsID0gbGVuOworCWVsc2UgaWYgKGVycm9yID09IEVXT1VMREJMT0NL
KSB7CisJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCXJldHZhbCA9IC0xOworCX0gZWxzZSB7CisJ
CVNDVFBfUFJJTlRGKCIlczogZXJyb3IgPSAlZFxuIiwgX19mdW5jX18sIGVycm9yKTsKKwkJZXJy
bm8gPSBlcnJvcjsKKwkJcmV0dmFsID0gLTE7CisJfQorCXJldHVybiAocmV0dmFsKTsKIH0KIAog
CkBAIC0xMTU0LDYgKzExNjgsOSBAQCB1c3JzY3RwX3JlY3Z2KHN0cnVjdCBzb2NrZXQgKnNvLAog
CQkJZXJybm8gPSAwOwogCQl9CiAJfQorCWlmIChlcnJubyAhPSAwKSB7CisJCWdvdG8gb3V0Owor
CX0KIAlpZiAoKCptc2dfZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSA9PSAwKSB7CiAJCXN0cnVj
dCBzY3RwX2lucGNiICppbnA7CiAKQEAgLTEyMDUsNyArMTIyMiwxMCBAQCB1c3JzY3RwX3JlY3Z2
KHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJKmluZm9sZW4gPSAwOwogCQl9CiAJfQotCWlmICgoZnJv
bWxlbnAgIT0gTlVMTCkgJiYgKGZyb21sZW4gPiAwKSAmJiAoZnJvbSAhPSBOVUxMKSkgeworCWlm
ICgoZnJvbWxlbnAgIT0gTlVMTCkgJiYKKwkgICAgKGZyb21sZW4gPiAwKSAmJgorCSAgICAoZnJv
bSAhPSBOVUxMKSAmJgorCSAgICAodWxlbiA+IGF1aW8udWlvX3Jlc2lkKSkgewogCQlzd2l0Y2gg
KGZyb20tPnNhX2ZhbWlseSkgewogI2lmIGRlZmluZWQoSU5FVCkKIAkJY2FzZSBBRl9JTkVUOgpA
QCAtMTIyOCw2ICsxMjQ4LDcgQEAgdXNyc2N0cF9yZWN2dihzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJ
CSpmcm9tbGVucCA9IGZyb21sZW47CiAJCX0KIAl9CitvdXQ6CiAJaWYgKGVycm5vID09IDApIHsK
IAkJLyogcmVhZHkgcmV0dXJuIHZhbHVlICovCiAJCXJldHVybiAodWxlbiAtIGF1aW8udWlvX3Jl
c2lkKTsKQEAgLTE1NTcsOCArMTU3OCw2IEBAIHNvd2FrZXVwKHN0cnVjdCBzb2NrZXQgKnNvLCBz
dHJ1Y3Qgc29ja2IKICNlbmRpZgogCX0KIAlTT0NLQlVGX1VOTE9DSyhzYik7Ci0JLypfX1VzZXJz
cGFjZV9fIHdoYXQgdG9kbyBhYm91dCBzb191cGNhbGw/Ki8KLQogfQogI2Vsc2UgLyoga2VybmVs
IHZlcnNpb24gZm9yIHJlZmVyZW5jZSAqLwogLyoKQEAgLTIxMjksNyArMjE0OCw3IEBAIGRvbmUx
OgogCiBpbnQgdXNyc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2Fk
ZHIgKm5hbWUsIGludCBuYW1lbGVuKQogewotCXN0cnVjdCBzb2NrYWRkciAqc2E7CisJc3RydWN0
IHNvY2thZGRyICpzYSA9IE5VTEw7CiAKIAllcnJubyA9IGdldHNvY2thZGRyKCZzYSwgKGNhZGRy
X3QpbmFtZSwgbmFtZWxlbik7CiAJaWYgKGVycm5vKQpAQCAtMjM5OSw2ICsyNDE4LDIwIEBAIHVz
cnNjdHBfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW4KIAkJCQkqb3B0aW9uX2xlbiA9
IChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBsaW5nZXIpOwogCQkJCXJldHVybiAoMCk7CiAJCQl9
CisJCQlicmVhazsKKwkJY2FzZSBTT19FUlJPUjoKKwkJCWlmICgqb3B0aW9uX2xlbiA8IChzb2Nr
bGVuX3Qpc2l6ZW9mKGludCkpIHsKKwkJCQllcnJubyA9IEVJTlZBTDsKKwkJCQlyZXR1cm4gKC0x
KTsKKwkJCX0gZWxzZSB7CisJCQkJaW50ICppbnR2YWw7CisKKwkJCQlpbnR2YWwgPSAoaW50ICop
b3B0aW9uX3ZhbHVlOworCQkJCSppbnR2YWwgPSBzby0+c29fZXJyb3I7CisJCQkJKm9wdGlvbl9s
ZW4gPSAoc29ja2xlbl90KXNpemVvZihpbnQpOworCQkJCXJldHVybiAoMCk7CisJCQl9CisJCQli
cmVhazsKIAkJZGVmYXVsdDoKIAkJCWVycm5vID0gRUlOVkFMOwogCQkJcmV0dXJuICgtMSk7CkBA
IC0zMTMxLDE0ICszMTY0LDE0IEBAIHNjdHBfdXNlcnNwYWNlX2lwX291dHB1dChpbnQgKnJlc3Vs
dCwgc3QKIAlpZiAoKCF1c2VfdWRwX3R1bm5lbGluZykgJiYgKFNDVFBfQkFTRV9WQVIodXNlcnNw
YWNlX3Jhd3NjdHApICE9IC0xKSkgewogCQlpZiAoV1NBU2VuZFRvKFNDVFBfQkFTRV9WQVIodXNl
cnNwYWNlX3Jhd3NjdHApLCAoTFBXU0FCVUYpIHNlbmRfaW92ZWMsIGlvdmNudCwgJndpbl9zZW50
X2xlbiwgd2luX21zZ19oZHIuZHdGbGFncywgd2luX21zZ19oZHIubmFtZSwgKGludCkgd2luX21z
Z19oZHIubmFtZWxlbiwgTlVMTCwgTlVMTCkgIT0gMCkgewogCQkJKnJlc3VsdCA9IFdTQUdldExh
c3RFcnJvcigpOwotCQl9IGVsc2UgaWYgKHdpbl9zZW50X2xlbiAhPSBzZW5kX2xlbikgeworCQl9
IGVsc2UgaWYgKChpbnQpd2luX3NlbnRfbGVuICE9IHNlbmRfbGVuKSB7CiAJCQkqcmVzdWx0ID0g
V1NBR2V0TGFzdEVycm9yKCk7CiAJCX0KIAl9CiAJaWYgKCh1c2VfdWRwX3R1bm5lbGluZykgJiYg
KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApICE9IC0xKSkgewogCQlpZiAoV1NBU2Vu
ZFRvKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHApLCAoTFBXU0FCVUYpIHNlbmRfaW92
ZWMsIGlvdmNudCwgJndpbl9zZW50X2xlbiwgd2luX21zZ19oZHIuZHdGbGFncywgd2luX21zZ19o
ZHIubmFtZSwgKGludCkgd2luX21zZ19oZHIubmFtZWxlbiwgTlVMTCwgTlVMTCkgIT0gMCkgewog
CQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwotCQl9IGVsc2UgaWYgKHdpbl9zZW50X2xl
biAhPSBzZW5kX2xlbikgeworCQl9IGVsc2UgaWYgKChpbnQpd2luX3NlbnRfbGVuICE9IHNlbmRf
bGVuKSB7CiAJCQkqcmVzdWx0ID0gV1NBR2V0TGFzdEVycm9yKCk7CiAJCX0KIAl9CkBAIC0zMjg1
LDE0ICszMzE4LDE0IEBAIHZvaWQgc2N0cF91c2Vyc3BhY2VfaXA2X291dHB1dChpbnQgKnJlc3UK
IAlpZiAoKCF1c2VfdWRwX3R1bm5lbGluZykgJiYgKFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3Jh
d3NjdHA2KSAhPSAtMSkpIHsKIAkJaWYgKFdTQVNlbmRUbyhTQ1RQX0JBU0VfVkFSKHVzZXJzcGFj
ZV9yYXdzY3RwNiksIChMUFdTQUJVRikgc2VuZF9pb3ZlYywgaW92Y250LCAmd2luX3NlbnRfbGVu
LCB3aW5fbXNnX2hkci5kd0ZsYWdzLCB3aW5fbXNnX2hkci5uYW1lLCAoaW50KSB3aW5fbXNnX2hk
ci5uYW1lbGVuLCBOVUxMLCBOVUxMKSAhPSAwKSB7CiAJCQkqcmVzdWx0ID0gV1NBR2V0TGFzdEVy
cm9yKCk7Ci0JCX0gZWxzZSBpZiAod2luX3NlbnRfbGVuICE9IHNlbmRfbGVuKSB7CisJCX0gZWxz
ZSBpZiAoKGludCl3aW5fc2VudF9sZW4gIT0gc2VuZF9sZW4pIHsKIAkJCSpyZXN1bHQgPSBXU0FH
ZXRMYXN0RXJyb3IoKTsKIAkJfQogCX0KIAlpZiAoKHVzZV91ZHBfdHVubmVsaW5nKSAmJiAoU0NU
UF9CQVNFX1ZBUih1c2Vyc3BhY2VfdWRwc2N0cDYpICE9IC0xKSkgewogCQlpZiAoV1NBU2VuZFRv
KFNDVFBfQkFTRV9WQVIodXNlcnNwYWNlX3VkcHNjdHA2KSwgKExQV1NBQlVGKSBzZW5kX2lvdmVj
LCBpb3ZjbnQsICZ3aW5fc2VudF9sZW4sIHdpbl9tc2dfaGRyLmR3RmxhZ3MsIHdpbl9tc2dfaGRy
Lm5hbWUsIChpbnQpIHdpbl9tc2dfaGRyLm5hbWVsZW4sIE5VTEwsIE5VTEwpICE9IDApIHsKIAkJ
CSpyZXN1bHQgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLQkJfSBlbHNlIGlmICh3aW5fc2VudF9sZW4g
IT0gc2VuZF9sZW4pIHsKKwkJfSBlbHNlIGlmICgoaW50KXdpbl9zZW50X2xlbiAhPSBzZW5kX2xl
bikgewogCQkJKnJlc3VsdCA9IFdTQUdldExhc3RFcnJvcigpOwogCQl9CiAJfQpAQCAtMzM3MSw5
ICszNDA0LDE1IEBAIHVzcnNjdHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpidWYsIHNpemUKICNp
ZmRlZiBfV0lOMzIKIAlmdGltZSgmdGIpOwogCWxvY2FsdGltZV9zKCZ0LCAmdGIudGltZSk7Cisj
aWYgZGVmaW5lZChfX01JTkdXMzJfXykKKwlzbnByaW50ZihkdW1wX2J1ZiwgUFJFQU1CTEVfTEVO
R1RIICsgMSwgUFJFQU1CTEVfRk9STUFULAorCSAgICAgICAgICAgIG91dGJvdW5kID8gJ08nIDog
J0knLAorCSAgICAgICAgICAgIHQudG1faG91ciwgdC50bV9taW4sIHQudG1fc2VjLCAobG9uZyko
MTAwMCAqIHRiLm1pbGxpdG0pKTsKKyNlbHNlCiAJX3NucHJpbnRmX3MoZHVtcF9idWYsIFBSRUFN
QkxFX0xFTkdUSCArIDEsIFBSRUFNQkxFX0xFTkdUSCwgUFJFQU1CTEVfRk9STUFULAogCSAgICAg
ICAgICAgIG91dGJvdW5kID8gJ08nIDogJ0knLAogCSAgICAgICAgICAgIHQudG1faG91ciwgdC50
bV9taW4sIHQudG1fc2VjLCAobG9uZykoMTAwMCAqIHRiLm1pbGxpdG0pKTsKKyNlbmRpZgogI2Vs
c2UKIAlnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKIAlzZWMgPSAodGltZV90KXR2LnR2X3NlYzsK
QEAgLTMzODMsNyArMzQyMiw3IEBAIHVzcnNjdHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpidWYs
IHNpemUKIAkgICAgICAgICB0LnRtX2hvdXIsIHQudG1fbWluLCB0LnRtX3NlYywgKGxvbmcpdHYu
dHZfdXNlYyk7CiAjZW5kaWYKIAlwb3MgKz0gUFJFQU1CTEVfTEVOR1RIOwotI2lmZGVmIF9XSU4z
MgorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzdHJuY3B5
X3MoZHVtcF9idWYgKyBwb3MsIHN0cmxlbihIRUFERVIpICsgMSwgSEVBREVSLCBzdHJsZW4oSEVB
REVSKSk7CiAjZWxzZQogCXN0cmNweShkdW1wX2J1ZiArIHBvcywgSEVBREVSKTsKQEAgLTM0MDAs
NyArMzQzOSw3IEBAIHVzcnNjdHBfZHVtcHBhY2tldChjb25zdCB2b2lkICpidWYsIHNpemUKIAkJ
ZHVtcF9idWZbcG9zKytdID0gbG93IDwgMTAgPyAnMCcgKyBsb3cgOiAnYScgKyAobG93IC0gMTAp
OwogCQlkdW1wX2J1Zltwb3MrK10gPSAnICc7CiAJfQotI2lmZGVmIF9XSU4zMgorI2lmIGRlZmlu
ZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIAlzdHJuY3B5X3MoZHVtcF9idWYg
KyBwb3MsIHN0cmxlbihUUkFJTEVSKSArIDEsIFRSQUlMRVIsIHN0cmxlbihUUkFJTEVSKSk7CiAj
ZWxzZQogCXN0cmNweShkdW1wX2J1ZiArIHBvcywgVFJBSUxFUik7CkBAIC0zNDg4LDYgKzM1Mjcs
NTQgQEAgdXNyc2N0cF9jb25uaW5wdXQodm9pZCAqYWRkciwgY29uc3Qgdm9pZAogCXJldHVybjsK
IH0KIAordm9pZCB1c3JzY3RwX2hhbmRsZV90aW1lcnModWludDMyX3QgZGVsdGEpCit7CisJc2N0
cF9oYW5kbGVfdGljayhkZWx0YSk7Cit9CisKK2ludAordXNyc2N0cF9nZXRfZXZlbnRzKHN0cnVj
dCBzb2NrZXQgKnNvKQoreworCWludCBldmVudHMgPSAwOworCisJaWYgKHNvID09IE5VTEwpIHsK
KwkJZXJybm8gPSBFQkFERjsKKwkJcmV0dXJuIC0xOworCX0KKworCVNPQ0tfTE9DSyhzbyk7CisJ
aWYgKHNvcmVhZGFibGUoc28pKSB7CisJCWV2ZW50cyB8PSBTQ1RQX0VWRU5UX1JFQUQ7CisJfQor
CWlmIChzb3dyaXRlYWJsZShzbykpIHsKKwkJZXZlbnRzIHw9IFNDVFBfRVZFTlRfV1JJVEU7CisJ
fQorCWlmIChzby0+c29fZXJyb3IpIHsKKwkJZXZlbnRzIHw9IFNDVFBfRVZFTlRfRVJST1I7CisJ
fQorCVNPQ0tfVU5MT0NLKHNvKTsKKworCXJldHVybiBldmVudHM7Cit9CisKK2ludAordXNyc2N0
cF9zZXRfdXBjYWxsKHN0cnVjdCBzb2NrZXQgKnNvLCB2b2lkICgqdXBjYWxsKShzdHJ1Y3Qgc29j
a2V0ICosIHZvaWQgKiwgaW50KSwgdm9pZCAqYXJnKQoreworCWlmIChzbyA9PSBOVUxMKSB7CisJ
CWVycm5vID0gRUJBREY7CisJCXJldHVybiAoLTEpOworCX0KKworCVNPQ0tfTE9DSyhzbyk7CisJ
c28tPnNvX3VwY2FsbCA9IHVwY2FsbDsKKwlzby0+c29fdXBjYWxsYXJnID0gYXJnOworCXNvLT5z
b19zbmQuc2JfZmxhZ3MgfD0gU0JfVVBDQUxMOworCXNvLT5zb19yY3Yuc2JfZmxhZ3MgfD0gU0Jf
VVBDQUxMOworCVNPQ0tfVU5MT0NLKHNvKTsKKworCXJldHVybiAoMCk7Cit9CisKICNkZWZpbmUg
VVNSU0NUUF9UVU5BQkxFX1NFVF9ERUYoX19maWVsZCwgX19wcmVmaXgpICAgXAogaW50IHVzcnNj
dHBfdHVuYWJsZV9zZXRfICMjIF9fZmllbGQodWludDMyX3QgdmFsdWUpICBcCiB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTM1MTgsNyAr
MzYwNSw3IEBAIGludCB1c3JzY3RwX3N5c2N0bF9zZXRfICMjIF9fZmllbGQodWludDMKIAl9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKLSNpZiAhZGVm
aW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIF9fR05VQ19fID49IDUgfHwgKF9fR05V
Q19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNikgfHwgZGVmaW5lZChfX2NsYW5nX18pCiAj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVd0eXBlLWxpbWl0cyIKICNlbmRpZgpAQCAtMzU5MSw4ICszNjc4LDggQEAgVVNSU0NUUF9T
WVNDVExfU0VUX0RFRihzY3RwX2luaXRpYWxfY3duZAogI2lmZGVmIFNDVFBfREVCVUcKIFVTUlND
VFBfU1lTQ1RMX1NFVF9ERUYoc2N0cF9kZWJ1Z19vbiwgU0NUUENUTF9ERUJVRykKICNlbmRpZgot
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0jcHJhZ21hIEdDQyBkaWFnbm9z
dGljIHB1c2gKKyNpZiBfX0dOVUNfXyA+PSA1IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19N
SU5PUl9fID49IDYpIHx8IGRlZmluZWQoX19jbGFuZ19fKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBwb3AKICNlbmRpZgogCiAjZGVmaW5lIFVTUlNDVFBfU1lTQ1RMX0dFVF9ERUYoX19maWVsZCkg
XApJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldHZhci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXR2YXIuaAkocmV2aXNpb24gMjU4NjA4
KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tldHZhci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw3ICs3Miw3IEBAIGVudW0gdWlvX3NlZyB7CiAjZW5kaWYKIAogc3RydWN0IHByb2Mg
ewotICAgIGludCBzdHViOyAvKiBzdHJ1Y3QgcHJvYyBpcyBhIGR1bW15IGZvciBfX1VzZXJzcGFj
ZV9fICovCisJaW50IHN0dWI7IC8qIHN0cnVjdCBwcm9jIGlzIGEgZHVtbXkgZm9yIF9fVXNlcnNw
YWNlX18gKi8KIH07CiAKIE1BTExPQ19ERUNMQVJFKE1fQUNDRik7CkBAIC04MywxMiArODMsMTIg
QEAgTUFMTE9DX0RFQ0xBUkUoTV9TT05BTUUpOwogICogUmVtb3Zpbmcgc3RydWN0IHRocmVhZCAq
dWlvX3RkOyAgICBvd25lciBmaWVsZAogKi8KIHN0cnVjdCB1aW8gewotICAgIHN0cnVjdAlpb3Zl
YyAqdWlvX2lvdjsJCS8qIHNjYXR0ZXIvZ2F0aGVyIGxpc3QgKi8KLSAgICBpbnQJCXVpb19pb3Zj
bnQ7CQkvKiBsZW5ndGggb2Ygc2NhdHRlci9nYXRoZXIgbGlzdCAqLwotICAgIG9mZl90CXVpb19v
ZmZzZXQ7CQkvKiBvZmZzZXQgaW4gdGFyZ2V0IG9iamVjdCAqLwotICAgIHNzaXplX3QgCXVpb19y
ZXNpZDsJCS8qIHJlbWFpbmluZyBieXRlcyB0byBwcm9jZXNzICovCi0gICAgZW51bQl1aW9fc2Vn
IHVpb19zZWdmbGc7CS8qIGFkZHJlc3Mgc3BhY2UgKi8KLSAgICBlbnVtCXVpb19ydyB1aW9fcnc7
CQkvKiBvcGVyYXRpb24gKi8KKwlzdHJ1Y3QJaW92ZWMgKnVpb19pb3Y7CQkvKiBzY2F0dGVyL2dh
dGhlciBsaXN0ICovCisJaW50CQl1aW9faW92Y250OwkJLyogbGVuZ3RoIG9mIHNjYXR0ZXIvZ2F0
aGVyIGxpc3QgKi8KKwlvZmZfdAl1aW9fb2Zmc2V0OwkJLyogb2Zmc2V0IGluIHRhcmdldCBvYmpl
Y3QgKi8KKwlzc2l6ZV90IAl1aW9fcmVzaWQ7CQkvKiByZW1haW5pbmcgYnl0ZXMgdG8gcHJvY2Vz
cyAqLworCWVudW0JdWlvX3NlZyB1aW9fc2VnZmxnOwkvKiBhZGRyZXNzIHNwYWNlICovCisJZW51
bQl1aW9fcncgdWlvX3J3OwkJLyogb3BlcmF0aW9uICovCiB9OwogCiAKQEAgLTEwMiw3ICsxMDIs
OSBAQCBzdHJ1Y3QgdWlvIHsKICAqLwogI2lmIGRlZmluZWQgKF9fVXNlcnNwYWNlX29zX1dpbmRv
d3MpCiAjZGVmaW5lIEFGX1JPVVRFICAxNworI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogdHlw
ZWRlZiBfX2ludDMyIHBpZF90OworI2VuZGlmCiB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWlk
X3Q7CiBlbnVtIHNpZ1R5cGUgewogCVNJR05BTCA9IDAsCkBAIC0zNjUsNiArMzY3LDEzIEBAIGV4
dGVybiB1c2VybGFuZF9jb25kX3QgYWNjZXB0X2NvbmQ7CiAjZGVmaW5lCVNRX0NPTVAJCQkweDEw
MDAJLyogdW5hY2NlcHRlZCwgY29tcGxldGUgY29ubmVjdGlvbiAqLwogCiAvKgorICogU29ja2V0
IGV2ZW50IGZsYWdzCisgKi8KKyNkZWZpbmUgU0NUUF9FVkVOVF9SRUFECQkweDAwMDEJLyogc29j
a2V0IGlzIHJlYWRhYmxlICovCisjZGVmaW5lIFNDVFBfRVZFTlRfV1JJVEUJMHgwMDAyCS8qIHNv
Y2tldCBpcyB3cml0ZWFibGUgKi8KKyNkZWZpbmUgU0NUUF9FVkVOVF9FUlJPUgkweDAwMDQJLyog
c29ja2V0IGhhcyBhbiBlcnJvciBzdGF0ZSAqLworCisvKgogICogRXh0ZXJuYWxpemVkIGZvcm0g
b2Ygc3RydWN0IHNvY2tldCB1c2VkIGJ5IHRoZSBzeXNjdGwoMykgaW50ZXJmYWNlLgogICovCiBz
dHJ1Y3QgeHNvY2tldCB7CkBAIC03MTksNiArNzI4LDcgQEAgdm9pZAlzb2lzY29ubmVjdGVkKHN0
cnVjdCBzb2NrZXQgKnNvKTsKIHN0cnVjdCBzb2NrZXQgKiBzb25ld2Nvbm4oc3RydWN0IHNvY2tl
dCAqaGVhZCwgaW50IGNvbm5zdGF0dXMpOwogdm9pZAlzb2NhbnRyY3Ztb3JlKHN0cnVjdCBzb2Nr
ZXQgKnNvKTsKIHZvaWQJc29jYW50c2VuZG1vcmUoc3RydWN0IHNvY2tldCAqc28pOwordm9pZAlz
b2ZyZWUoc3RydWN0IHNvY2tldCAqc28pOwogCiAKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi91c2VyX3VtYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl91bWEu
aAkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3VtYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgdW1hX3pvbmUg
KiB1bWFfem9uZV90OwogdHlwZWRlZiBzdHJ1Y3QgdW1hX2tlZyAqIHVtYV9rZWdfdDsKIAogc3Ry
dWN0IHVtYV9jYWNoZSB7Ci0gICAgaW50IHN0dWI7IC8qIFRPRE8gX19Vc2Vyc3BhY2VfXyAqLwor
CWludCBzdHViOyAvKiBUT0RPIF9fVXNlcnNwYWNlX18gKi8KIH07CiAKIHN0cnVjdCB1bWFfa2Vn
IHsKLSAgICBpbnQgc3R1YjsgLyogVE9ETyBfX1VzZXJzcGFjZV9fICovCisJaW50IHN0dWI7IC8q
IFRPRE8gX19Vc2Vyc3BhY2VfXyAqLwogfTsKIAogc3RydWN0IHVtYV96b25lIHsKQEAgLTkwLDkg
KzkwLDcgQEAgdW1hX3pjcmVhdGUoY2hhciAqbmFtZSwgc2l6ZV90IHNpemUsIHVtYQogCiB1bWFf
em9uZV90CiB1bWFfemNyZWF0ZShjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwgdW1hX2N0b3IgY3Rv
ciwgdW1hX2R0b3IgZHRvciwKLQkgICAgdW1hX2luaXQgdW1pbml0LCB1bWFfZmluaSBmaW5pLCBp
bnQgYWxpZ24sIHVfaW50MzJfdCBmbGFncykKLXsKLSAgICByZXR1cm4gTlVMTDsgLyogc3R1YiBU
T0RPIF9fVXNlcnNwYWNlX18uIEFsc28gcGxhY2UgaW1wbGVtZW50YXRpb24gaW4gYSBzZXBhcmF0
ZSAuYyBmaWxlICovCi0KKwkgICAgdW1hX2luaXQgdW1pbml0LCB1bWFfZmluaSBmaW5pLCBpbnQg
YWxpZ24sIHVfaW50MzJfdCBmbGFncykgeworCXJldHVybiBOVUxMOyAvKiBzdHViIFRPRE8gX19V
c2Vyc3BhY2VfXy4gQWxzbyBwbGFjZSBpbXBsZW1lbnRhdGlvbiBpbiBhIHNlcGFyYXRlIC5jIGZp
bGUgKi8KIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmgJKHJldmlzaW9uIDI1ODYw
OCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNyc2N0cC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw3ICs3MiwxNiBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgaW50MzJfdCAgIF9faW50MzIKICNl
bmRpZgogCi0jZGVmaW5lIHNzaXplX3QgICBfX2ludDY0CisjaWZuZGVmIHNzaXplX3QKKyNpZmRl
ZiBfV0lONjQKKyNkZWZpbmUgc3NpemVfdCBfX2ludDY0CisjZWxpZiBkZWZpbmVkIF9XSU4zMgor
I2RlZmluZSBzc2l6ZV90IGludAorI2Vsc2UKKyNlcnJvciAiVW5rbm93biBwbGF0Zm9ybSEiCisj
ZW5kaWYKKyNlbmRpZgorCiAjZGVmaW5lIE1TR19FT1IgICAweDgKICNpZm5kZWYgRVdPVUxEQkxP
Q0sKICNkZWZpbmUgRVdPVUxEQkxPQ0sgIFdTQUVXT1VMREJMT0NLCkBAIC0xMjcsMTIgKzEzNiw4
IEBAIHN0cnVjdCBzb2NrYWRkcl9jb25uIHsKICNlbmRpZgogCiB1bmlvbiBzY3RwX3NvY2tzdG9y
ZSB7Ci0jaWYgZGVmaW5lZChJTkVUKQogCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47Ci0jZW5kaWYK
LSNpZiBkZWZpbmVkKElORVQ2KQogCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2luNjsKLSNlbmRpZgog
CXN0cnVjdCBzb2NrYWRkcl9jb25uIHNjb25uOwogCXN0cnVjdCBzb2NrYWRkciBzYTsKIH07CkBA
IC0xNDEsNiArMTQ2LDEwIEBAIHVuaW9uIHNjdHBfc29ja3N0b3JlIHsKICNkZWZpbmUgU0NUUF9D
VVJSRU5UX0FTU09DIDEKICNkZWZpbmUgU0NUUF9BTExfQVNTT0MgICAgIDIKIAorI2RlZmluZSBT
Q1RQX0VWRU5UX1JFQUQgICAgMHgwMDAxCisjZGVmaW5lIFNDVFBfRVZFTlRfV1JJVEUgICAweDAw
MDIKKyNkZWZpbmUgU0NUUF9FVkVOVF9FUlJPUiAgIDB4MDAwNAorCiAvKioqICBTdHJ1Y3R1cmVz
IGFuZCBkZWZpbml0aW9ucyB0byB1c2UgdGhlIHNvY2tldCBBUEkgICoqKi8KIAogI2RlZmluZSBT
Q1RQX0FMSUdOX1JFU1ZfUEFEIDkyCkBAIC0zMDYsNyArMzE1LDcgQEAgc3RydWN0IHNjdHBfcmVt
b3RlX2Vycm9yIHsKIAl1aW50MzJfdCBzcmVfbGVuZ3RoOwogCXVpbnQxNl90IHNyZV9lcnJvcjsK
IAlzY3RwX2Fzc29jX3Qgc3JlX2Fzc29jX2lkOwotCXVpbnQ4X3Qgc3JlX2RhdGFbNF07CisJdWlu
dDhfdCBzcmVfZGF0YVtdOwogfTsKIAogLyogc2h1dGRvd24gZXZlbnQgKi8KQEAgLTQ3MSw2ICs0
ODAsOCBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgewogCiAKIC8qIEZsYWdzIHRoYXQg
Z28gaW50byB0aGUgc2luZm8tPnNpbmZvX2ZsYWdzIGZpZWxkICovCisjZGVmaW5lIFNDVFBfREFU
QV9MQVNUX0ZSQUcgICAweDAwMDEgLyogdGFpbCBwYXJ0IG9mIHRoZSBtZXNzYWdlIGNvdWxkIG5v
dCBiZSBzZW50ICovCisjZGVmaW5lIFNDVFBfREFUQV9OT1RfRlJBRyAgICAweDAwMDMgLyogY29t
cGxldGUgbWVzc2FnZSBjb3VsZCBub3QgYmUgc2VudCAqLwogI2RlZmluZSBTQ1RQX05PVElGSUNB
VElPTiAgICAgMHgwMDEwIC8qIG5leHQgbWVzc2FnZSBpcyBhIG5vdGlmaWNhdGlvbiAqLwogI2Rl
ZmluZSBTQ1RQX0NPTVBMRVRFICAgICAgICAgMHgwMDIwIC8qIG5leHQgbWVzc2FnZSBpcyBjb21w
bGV0ZSAqLwogI2RlZmluZSBTQ1RQX0VPRiAgICAgICAgICAgICAgMHgwMTAwIC8qIFN0YXJ0IHNo
dXRkb3duIHByb2NlZHVyZXMgKi8KQEAgLTU0MCw2ICs1NTEsMTQgQEAgc3RydWN0IHNjdHBfZXZl
bnRfc3Vic2NyaWJlIHsKICNkZWZpbmUgU0NUUF9ERUZBVUxUX1NORElORk8gICAgICAgICAgICAw
eDAwMDAwMDIxCiAjZGVmaW5lIFNDVFBfREVGQVVMVF9QUklORk8gICAgICAgICAgICAgMHgwMDAw
MDAyMgogI2RlZmluZSBTQ1RQX1JFTU9URV9VRFBfRU5DQVBTX1BPUlQgICAgIDB4MDAwMDAwMjQK
KyNkZWZpbmUgU0NUUF9FQ05fU1VQUE9SVEVEICAgICAgICAgICAgICAweDAwMDAwMDI1CisjZGVm
aW5lIFNDVFBfUFJfU1VQUE9SVEVEICAgICAgICAgICAgICAgMHgwMDAwMDAyNgorI2RlZmluZSBT
Q1RQX0FVVEhfU1VQUE9SVEVEICAgICAgICAgICAgIDB4MDAwMDAwMjcKKyNkZWZpbmUgU0NUUF9B
U0NPTkZfU1VQUE9SVEVEICAgICAgICAgICAweDAwMDAwMDI4CisjZGVmaW5lIFNDVFBfUkVDT05G
SUdfU1VQUE9SVEVEICAgICAgICAgMHgwMDAwMDAyOQorI2RlZmluZSBTQ1RQX05SU0FDS19TVVBQ
T1JURUQgICAgICAgICAgIDB4MDAwMDAwMzAKKyNkZWZpbmUgU0NUUF9QS1REUk9QX1NVUFBPUlRF
RCAgICAgICAgICAweDAwMDAwMDMxCisjZGVmaW5lIFNDVFBfTUFYX0NXTkQgICAgICAgICAgICAg
ICAgICAgMHgwMDAwMDAzMgogCiAjZGVmaW5lIFNDVFBfRU5BQkxFX1NUUkVBTV9SRVNFVCAgICAg
ICAgMHgwMDAwMDkwMCAvKiBzdHJ1Y3Qgc2N0cF9hc3NvY192YWx1ZSAqLwogCkBAIC04NzUsNiAr
ODk0LDExIEBAIHVzcnNjdHBfaW5pdCh1aW50MTZfdCwKICAgICAgICAgICAgICBpbnQgKCopKHZv
aWQgKmFkZHIsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4
X3Qgc2V0X2RmKSwKICAgICAgICAgICAgICB2b2lkICgqKShjb25zdCBjaGFyICpmb3JtYXQsIC4u
LikpOwogCit2b2lkCit1c3JzY3RwX2luaXRfbm90aHJlYWRzKHVpbnQxNl90LAorCQkgICAgICAg
aW50ICgqKSh2b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3Qg
dG9zLCB1aW50OF90IHNldF9kZiksCisJCSAgICAgICB2b2lkICgqKShjb25zdCBjaGFyICpmb3Jt
YXQsIC4uLikpOworCiBzdHJ1Y3Qgc29ja2V0ICoKIHVzcnNjdHBfc29ja2V0KGludCBkb21haW4s
IGludCB0eXBlLCBpbnQgcHJvdG9jb2wsCiAgICAgICAgICAgICAgICBpbnQgKCpyZWNlaXZlX2Ni
KShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bmlvbiBzY3RwX3NvY2tzdG9yZSBhZGRyLCB2b2lkICpk
YXRhLApAQCAtMTAwOCw2ICsxMDMyLDE4IEBAIHVzcnNjdHBfZGVyZWdpc3Rlcl9hZGRyZXNzKHZv
aWQgKik7CiBpbnQKIHVzcnNjdHBfc2V0X3VscGluZm8oc3RydWN0IHNvY2tldCAqLCB2b2lkICop
OwogCitpbnQKK3VzcnNjdHBfc2V0X3VwY2FsbChzdHJ1Y3Qgc29ja2V0ICpzbywKKyAgICAgICAg
ICAgICAgICAgICB2b2lkICgqdXBjYWxsKShzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgaW50KSwK
KyAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCitpbnQKK3VzcnNjdHBfZ2V0X2V2ZW50
cyhzdHJ1Y3Qgc29ja2V0ICpzbyk7CisKKwordm9pZAordXNyc2N0cF9oYW5kbGVfdGltZXJzKHVp
bnQzMl90IGRlbHRhKTsKKwogI2RlZmluZSBTQ1RQX0RVTVBfT1VUQk9VTkQgMQogI2RlZmluZSBT
Q1RQX0RVTVBfSU5CT1VORCAgMAogCkBAIC0xMDk0LDYgKzExMzAsNyBAQCBVU1JTQ1RQX1NZU0NU
TF9ERUNMKHNjdHBfdWRwX3R1bm5lbGluZ19wCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfZW5h
YmxlX3NhY2tfaW1tZWRpYXRlbHkpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfdnRhZ190aW1l
X3dhaXQpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfYmxhY2tob2xlKQorVVNSU0NUUF9TWVND
VExfREVDTChzY3RwX3NlbmRhbGxfbGltaXQpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfZGlh
Z19pbmZvX2NvZGUpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfZnJfbWF4X2J1cnN0X2RlZmF1
bHQpCiBVU1JTQ1RQX1NZU0NUTF9ERUNMKHNjdHBfcGF0aF9wZl90aHJlc2hvbGQpCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3VzcnJlcS5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMJKHJldmlzaW9uIDI1
ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQ2
L3NjdHA2X3VzcnJlcS5jIDMzMjI3MyAyMDE4LTA0LTA4IDEyOjA4OjIwWiB0dWV4ZW4gJCIpOwor
X19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0Ni9zY3RwNl91c3JyZXEuYyAzNTgw
ODMgMjAyMC0wMi0xOCAyMToyNToxN1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8
bmV0aW5ldC9zY3RwX29zLmg+CkBAIC02MiwxMyArNjIsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6
IGhlYWQvc3lzL25ldGluZXQ2L3NjCiAjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgogI2luY2x1
ZGUgPG5ldGluZXQvdWRwLmg+CiAjZW5kaWYKLQogI2lmIGRlZmluZWQoX19BUFBMRV9fKQogI2Rl
ZmluZSBBUFBMRV9GSUxFX05PIDkKICNlbmRpZgotI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18p
Ci1leHRlcm4gc3RydWN0IHByb3Rvc3cgaW5ldHN3W107Ci0jZW5kaWYKICNpZiBkZWZpbmVkKF9f
UGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50IGlwNl92Nm9ubHk9MDsKICNl
bmRpZgpAQCAtMTA5LDcgKzEwNSw3IEBAIGluNl9zaW42XzJfc2luX2luX3NvY2soc3RydWN0IHNv
Y2thZGRyICoKIH0KIAogdm9pZAotaW42X3Npbl8yX3Y0bWFwc2luNihzdHJ1Y3Qgc29ja2FkZHJf
aW4gKnNpbiwgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNikKK2luNl9zaW5fMl92NG1hcHNpbjYo
Y29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpzaW4sIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYp
CiB7CiAJbWVtc2V0KHNpbjYsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAgCXNp
bjYtPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CkBAIC0yMzIsMTMgKzIyOCwxNSBAQCBzY3RwNl9p
bnB1dChzdHJ1Y3QgbWJ1ZiAqKmlfcGFrLCBpbnQgKm9mCiAJU0NUUF9TVEFUX0lOQ1JfQ09VTlRF
UjY0KHNjdHBzX2lucGFja2V0cyk7CiAJLyogR2V0IElQLCBTQ1RQLCBhbmQgZmlyc3QgY2h1bmsg
aGVhZGVyIHRvZ2V0aGVyIGluIHRoZSBmaXJzdCBtYnVmLiAqLwogCW9mZnNldCA9IGlwaGxlbiAr
IHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpOwot
CWlwNiA9IG10b2QobSwgc3RydWN0IGlwNl9oZHIgKik7Ci0JSVA2X0VYVEhEUl9HRVQoc2gsIHN0
cnVjdCBzY3RwaGRyICosIG0sIGlwaGxlbiwKLQkJICAgICAgIChpbnQpKHNpemVvZihzdHJ1Y3Qg
c2N0cGhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpKSk7Ci0JaWYgKHNoID09IE5V
TEwpIHsKLQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfaGRyb3BzKTsKLQkJcmV0dXJuIChJUFBST1RP
X0RPTkUpOworCWlmIChtLT5tX2xlbiA8IG9mZnNldCkgeworCQltID0gbV9wdWxsdXAobSwgb2Zm
c2V0KTsKKwkJaWYgKG0gPT0gTlVMTCkgeworCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfaGRyb3Bz
KTsKKwkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKKwkJfQogCX0KKwlpcDYgPSBtdG9kKG0sIHN0
cnVjdCBpcDZfaGRyICopOworCXNoID0gKHN0cnVjdCBzY3RwaGRyICopKG10b2QobSwgY2FkZHJf
dCkgKyBpcGhsZW4pOwogCWNoID0gKHN0cnVjdCBzY3RwX2NodW5raGRyICopKChjYWRkcl90KXNo
ICsgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJb2Zmc2V0IC09IHNpemVvZihzdHJ1Y3Qgc2N0
cF9jaHVua2hkcik7CiAJbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42
KSk7CkBAIC00MDcsNiArNDA1LDEzIEBAIHNjdHA2X25vdGlmeShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLAogCQl9CiAJCWlmIChuZXQtPm10dSA+IG5leHRfbXR1KSB7CiAJCQluZXQtPm10dSA9IG5l
eHRfbXR1OworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQlpZiAobmV0LT5wb3J0KSB7CisJ
CQkJc2N0cF9oY19zZXRfbXR1KCZuZXQtPnJvLl9sX2FkZHIsIGlucC0+ZmlibnVtLCBuZXh0X210
dSArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7CisJCQl9IGVsc2UgeworCQkJCXNjdHBfaGNfc2V0
X210dSgmbmV0LT5yby5fbF9hZGRyLCBpbnAtPmZpYm51bSwgbmV4dF9tdHUpOworCQkJfQorI2Vu
ZGlmCiAJCX0KIAkJLyogVXBkYXRlIHRoZSBhc3NvY2lhdGlvbiBNVFUgKi8KIAkJaWYgKHN0Y2It
PmFzb2Muc21hbGxlc3RfbXR1ID4gbmV4dF9tdHUpIHsKQEAgLTU3MSwxMSArNTc2LDI4IEBAIHNj
dHA2X2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAKIAkJCSAgICAgICAgICAgICBp
cDZjcC0+aXA2Y19pY21wNi0+aWNtcDZfdHlwZSwKIAkJCSAgICAgICAgICAgICBpcDZjcC0+aXA2
Y19pY21wNi0+aWNtcDZfY29kZSwKIAkJCSAgICAgICAgICAgICBudG9obChpcDZjcC0+aXA2Y19p
Y21wNi0+aWNtcDZfbXR1KSk7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJaWYgKCEo
c3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9HT05FKSAm
JgorCQkJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxMKSB7CisJCQkJc3RydWN0IHNvY2tl
dCAqdXBjYWxsX3NvY2tldDsKKworCQkJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tl
dDsKKwkJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQkJc29yZWYodXBjYWxsX3NvY2tl
dCk7CisJCQkJU09DS19VTkxPQ0sodXBjYWxsX3NvY2tldCk7CisJCQkJaWYgKCh1cGNhbGxfc29j
a2V0LT5zb191cGNhbGwgIT0gTlVMTCkgJiYKKwkJCQkgICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vy
cm9yICE9IDApKSB7CisJCQkJCSgqdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29j
a2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCQl9CisJCQkJ
QUNDRVBUX0xPQ0soKTsKKwkJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQkJc29yZWxl
KHVwY2FsbF9zb2NrZXQpOworCQkJfQorI2VuZGlmCiAJCX0gZWxzZSB7CiAjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKIAkJCWlmIChQUkNfSVNf
UkVESVJFQ1QoY21kKSAmJiAoaW5wICE9IE5VTEwpKSB7Ci0JCQkJaW42X3J0Y2hhbmdlKChzdHJ1
Y3QgaW42cGNiICopaW5wLAotCQkJCSAgICBpbmV0NmN0bGVycm1hcFtjbWRdKTsKKwkJCQlpbjZf
cnRjaGFuZ2UoaW5wLCBpbmV0NmN0bGVycm1hcFtjbWRdKTsKIAkJCX0KICNlbmRpZgogCQkJaWYg
KChzdGNiID09IE5VTEwpICYmIChpbnAgIT0gTlVMTCkpIHsKQEAgLTY4OCw2ICs3MTAsOSBAQCBz
dGF0aWMgaW50CiAjZW5kaWYKIHNjdHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQogeworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYK
IAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwogCXVpbnQzMl90IGZsYWdzOwogCkBAIC03MDAsNiAr
NzI1LDkgQEAgc2N0cDZfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJCXJldHVybiAoRUlOVkFM
KTsKICNlbmRpZgogCX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCU5FVF9FUE9DSF9FTlRF
UihldCk7CisjZW5kaWYKICBzY3RwX211c3RfdHJ5X2FnYWluOgogCWZsYWdzID0gaW5wLT5zY3Rw
X2ZsYWdzOwogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKQEAgLTczMiw2ICs3NjAsNyBAQCBzY3Rw
Nl9hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJfQogCX0KICNpZiAoZGVmaW5lZChfX0ZyZWVC
U0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPiA2OTAwMDApIHx8IGRlZmluZWQoX19XaW5kb3dz
X18pCisJTkVUX0VQT0NIX0VYSVQoZXQpOwogCXJldHVybjsKICNlbHNlCiAJcmV0dXJuICgwKTsK
QEAgLTc1Miw3ICs3ODEsNiBAQCBzdGF0aWMgaW50CiBzY3RwNl9hdHRhY2goc3RydWN0IHNvY2tl
dCAqc28sIGludCBwcm90byBTQ1RQX1VOVVNFRCwgc3RydWN0IHByb2MgKnAgU0NUUF9VTlVTRUQp
CiAjZW5kaWYKIHsKLQlzdHJ1Y3QgaW42cGNiICppbnA2OwogCWludCBlcnJvcjsKIAlzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wOwogI2lmICFkZWZpbmVkKF9fUGFuZGFfXykgJiYgIWRlZmluZWQoX19V
c2Vyc3BhY2VfXykKQEAgLTc3NiwxNiArODA0LDE1IEBAIHNjdHA2X2F0dGFjaChzdHJ1Y3Qgc29j
a2V0ICpzbywgaW50IHByb3QKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2IgKilzby0+c29fcGNi
OwogCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJaW5wLT5zY3RwX2ZsYWdzIHw9IFNDVFBfUENCX0ZM
QUdTX0JPVU5EX1Y2OwkvKiBJJ20gdjYhICovCi0JaW5wNiA9IChzdHJ1Y3QgaW42cGNiICopaW5w
OwogCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRl
ZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQlpbnA2LT5pbnBf
dmZsYWcgfD0gSU5QX0lQVjY7CisJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBW
NjsKICNlbHNlCiAJaW5wLT5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7CiAjZW5kaWYKICNpZiAhZGVm
aW5lZChfX1BhbmRhX18pCi0JaW5wNi0+aW42cF9ob3BzID0gLTE7CS8qIHVzZSBrZXJuZWwgZGVm
YXVsdCAqLwotCWlucDYtPmluNnBfY2tzdW0gPSAtMTsJLyoganVzdCB0byBiZSBzdXJlICovCisJ
aW5wLT5pcF9pbnAuaW5wLmluNnBfaG9wcyA9IC0xOwkvKiB1c2Uga2VybmVsIGRlZmF1bHQgKi8K
KwlpbnAtPmlwX2lucC5pbnAuaW42cF9ja3N1bSA9IC0xOwkvKiBqdXN0IHRvIGJlIHN1cmUgKi8K
ICNlbmRpZgogI2lmZGVmIElORVQKIAkvKgpAQCAtNzkzLDcgKzgyMCw3IEBAIHNjdHA2X2F0dGFj
aChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3QKIAkgKiBzb2NrZXQgYXMgd2VsbCwgYmVjYXVz
ZSB0aGUgc29ja2V0IG1heSBiZSBib3VuZCB0byBhbiBJUHY2CiAJICogd2lsZGNhcmQgYWRkcmVz
cywgd2hpY2ggbWF5IG1hdGNoIGFuIElQdjQtbWFwcGVkIElQdjYgYWRkcmVzcy4KIAkgKi8KLQlp
bnA2LT5pbnBfaXBfdHRsID0gTU9EVUxFX0dMT0JBTChpcF9kZWZ0dGwpOworCWlucC0+aXBfaW5w
LmlucC5pbnBfaXBfdHRsID0gTU9EVUxFX0dMT0JBTChpcF9kZWZ0dGwpOwogI2VuZGlmCiAJU0NU
UF9JTlBfV1VOTE9DSyhpbnApOwogCXJldHVybiAoMCk7CkBAIC04MjMsOCArODUwLDggQEAgc2N0
cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idQogCiAjZW5kaWYKIAlzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wOwotCXN0cnVjdCBpbjZwY2IgKmlucDY7CiAJaW50IGVycm9yOworCXVf
Y2hhciB2ZmxhZ3NhdjsKIAogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7
CiAJaWYgKGlucCA9PSBOVUxMKSB7CkBAIC04NjEsMjIgKzg4OCwyMyBAQCBzY3RwNl9iaW5kKHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1CiAJCX0KIAl9CiAjZW5kaWYKLQlpbnA2ID0gKHN0
cnVjdCBpbjZwY2IgKilpbnA7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChf
X0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2Vf
XykKLQlpbnA2LT5pbnBfdmZsYWcgJj0gfklOUF9JUFY0OwotCWlucDYtPmlucF92ZmxhZyB8PSBJ
TlBfSVBWNjsKKwl2ZmxhZ3NhdiA9IGlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWc7CisJaW5wLT5p
cF9pbnAuaW5wLmlucF92ZmxhZyAmPSB+SU5QX0lQVjQ7CisJaW5wLT5pcF9pbnAuaW5wLmlucF92
ZmxhZyB8PSBJTlBfSVBWNjsKICNlbHNlCisJdmZsYWdzYXYgPSBpbnAtPmlucF92ZmxhZzsKIAlp
bnAtPmlucF92ZmxhZyAmPSB+SU5QX0lQVjQ7CiAJaW5wLT5pbnBfdmZsYWcgfD0gSU5QX0lQVjY7
CiAjZW5kaWYKLQlpZiAoKGFkZHIgIT0gTlVMTCkgJiYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wNikg
PT0gMCkpIHsKKwlpZiAoKGFkZHIgIT0gTlVMTCkgJiYgKFNDVFBfSVBWNl9WNk9OTFkoaW5wKSA9
PSAwKSkgewogCQlzd2l0Y2ggKGFkZHItPnNhX2ZhbWlseSkgewogI2lmZGVmIElORVQKIAkJY2Fz
ZSBBRl9JTkVUOgogCQkJLyogYmluZGluZyB2NCBhZGRyIHRvIHY2IHNvY2tldCwgc28gcmVzZXQg
ZmxhZ3MgKi8KICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykg
fHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQkJaW5w
Ni0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwotCQkJaW5wNi0+aW5wX3ZmbGFnICY9IH5JTlBfSVBW
NjsKKwkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CisJCQlpbnAtPmlw
X2lucC5pbnAuaW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKICNlbHNlCiAJCQlpbnAtPmlucF92Zmxh
ZyB8PSBJTlBfSVBWNDsKIAkJCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKQEAgLTg5Miw3
ICs5MjAsNyBAQCBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1CiAKIAkJ
CWlmIChJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmc2luNl9wLT5zaW42X2FkZHIpKSB7CiAjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19X
aW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLQkJCQlpbnA2LT5pbnBfdmZsYWcg
fD0gSU5QX0lQVjQ7CisJCQkJaW5wLT5pcF9pbnAuaW5wLmlucF92ZmxhZyB8PSBJTlBfSVBWNDsK
ICNlbHNlCiAJCQkJaW5wLT5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7CiAjZW5kaWYKQEAgLTkwMywx
NCArOTMxLDE0IEBAIHNjdHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnUKIAog
CQkJCWluNl9zaW42XzJfc2luKCZzaW4sIHNpbjZfcCk7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKLQkJCQlpbnA2LT5pbnBfdmZsYWcgfD0gSU5QX0lQVjQ7Ci0JCQkJ
aW5wNi0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNjsKKwkJCQlpbnAtPmlwX2lucC5pbnAuaW5wX3Zm
bGFnIHw9IElOUF9JUFY0OworCQkJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcgJj0gfklOUF9J
UFY2OwogI2Vsc2UKIAkJCQlpbnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNDsKIAkJCQlpbnAtPmlu
cF92ZmxhZyAmPSB+SU5QX0lQVjY7CiAjZW5kaWYKIAkJCQllcnJvciA9IHNjdHBfaW5wY2JfYmlu
ZChzbywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIE5VTEwsIHApOwotCQkJCXJldHVybiAoZXJy
b3IpOworCQkJCWdvdG8gb3V0OwogCQkJfQogI2VuZGlmCiAJCQlicmVhazsKQEAgLTkyNyw3ICs5
NTUsOCBAQCBzY3RwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1CiAJCWlmIChh
ZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgewogCQkJLyogY2FuJ3QgYmluZCB2NCBhZGRyIHRv
IHY2IG9ubHkgc29ja2V0ISAqLwogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5V
TEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7Ci0JCQlyZXR1cm4gKEVJTlZBTCk7
CisJCQllcnJvciA9IEVJTlZBTDsKKwkJCWdvdG8gb3V0OwogCQl9CiAjZW5kaWYKIAkJc2luNl9w
ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRyOwpAQCAtOTM2LDEwICs5NjUsMTggQEAgc2N0
cDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idQogCQkJLyogY2FuJ3QgYmluZCB2
NC1tYXBwZWQgYWRkcnMgZWl0aGVyISAqLwogCQkJLyogTk9URTogd2UgZG9uJ3Qgc3VwcG9ydCBT
SUlUICovCiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFA2X1VTUlJFUSwgRUlOVkFMKTsKLQkJCXJldHVybiAoRUlOVkFMKTsKKwkJCWVycm9yID0g
RUlOVkFMOworCQkJZ290byBvdXQ7CiAJCX0KIAl9CiAJZXJyb3IgPSBzY3RwX2lucGNiX2JpbmQo
c28sIGFkZHIsIE5VTEwsIHApOworb3V0OgorCWlmIChlcnJvciAhPSAwKQorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19f
KSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlucC0+aXBfaW5wLmlucC5pbnBfdmZsYWcg
PSB2ZmxhZ3NhdjsKKyNlbHNlCisJCWlucC0+aW5wX3ZmbGFnID0gdmZsYWdzYXY7CisjZW5kaWYK
IAlyZXR1cm4gKGVycm9yKTsKIH0KIApAQCAtMTAxNCw3ICsxMDUxLDYgQEAgc2N0cDZfc2VuZChz
dHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZsYWdzLAogCXN0cnVjdCBzb2NrYWRkciAqYWRkciA9IG5h
bSA/IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik6IE5VTEw7CiAjZW5kaWYKIAlzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wOwotCXN0cnVjdCBpbjZwY2IgKmlucDY7CiAKICNpZmRlZiBJTkVUCiAJ
c3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKQEAgLTEwMzEsNyArMTA2Nyw2IEBAIHNjdHA2X3Nl
bmQoc3RydWN0IHNvY2tldCAqc28sIGludCBmbGFncywKIAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChp
bnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVy
biAoRUlOVkFMKTsKIAl9Ci0JaW5wNiA9IChzdHJ1Y3QgaW42cGNiICopaW5wOwogCS8qCiAJICog
Rm9yIHRoZSBUQ1AgbW9kZWwgd2UgbWF5IGdldCBhIE5VTEwgYWRkciwgaWYgd2UgYXJlIGEgY29u
bmVjdGVkCiAJICogc29ja2V0IHRoYXRzIG9rLgpAQCAtMTA1MSw3ICsxMDg2LDcgQEAgc2N0cDZf
c2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IGZsYWdzLAogCX0KICNpZmRlZiBJTkVUCiAJc2lu
NiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKLQlpZiAoU0NUUF9JUFY2X1Y2T05MWShp
bnA2KSkgeworCWlmIChTQ1RQX0lQVjZfVjZPTkxZKGlucCkpIHsKIAkJLyoKIAkJICogaWYgSVBW
Nl9WNk9OTFkgZmxhZywgd2UgZGlzY2FyZCBkYXRhZ3JhbXMgZGVzdGluZWQgdG8gYQogCQkgKiB2
NCBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0xMTA2LDkgKzExNDEsMTggQEAgY29ubmVjdGVk
X3R5cGU6CiAJCSAqIG9wdGlvbmFseSBzd2l0Y2ggYmFjayB0byB0aGlzIGNvZGUgKGJ5IGNoYW5n
aW5nIGJhY2sgdGhlCiAJCSAqIGRlZmluaW5pdGlvbnMgYnV0IHRoaXMgaXMgbm90IGFkdmlzYWJs
ZS4KIAkJICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJc3RydWN0IGVwb2NoX3RyYWNr
ZXIgZXQ7CisjZW5kaWYKIAkJaW50IHJldDsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJ
TkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQlyZXQgPSBzY3RwX291dHB1dChpbnAsIGlu
cC0+cGt0LCBhZGRyLCBpbnAtPmNvbnRyb2wsIHAsIGZsYWdzKTsKKyNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQorCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQlpbnAtPnBrdCA9IE5VTEw7
CiAJCWlucC0+Y29udHJvbCA9IE5VTEw7CiAJCXJldHVybiAocmV0KTsKQEAgLTExNDUsMTkgKzEx
ODksMTggQEAgc2N0cDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IAogewogCXN0
cnVjdCBzb2NrYWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CiAjZW5k
aWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCXN0cnVjdCBlcG9jaF90cmFja2VyIGV0Owor
I2VuZGlmCiAJdWludDMyX3QgdnJmX2lkOwogCWludCBlcnJvciA9IDA7CiAJc3RydWN0IHNjdHBf
aW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAjaWZkZWYgSU5FVAotCXN0cnVj
dCBpbjZwY2IgKmlucDY7CiAJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKIAl1bmlvbiBzY3Rw
X3NvY2tzdG9yZSBzdG9yZTsKICNlbmRpZgogCi0jaWZkZWYgSU5FVAotCWlucDYgPSAoc3RydWN0
IGluNnBjYiAqKXNvLT5zb19wY2I7Ci0jZW5kaWYKIAlpbnAgPSAoc3RydWN0IHNjdHBfaW5wY2Ig
Kilzby0+c29fcGNiOwogCWlmIChpbnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVU
KGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJFUSwgRUNPTk5SRVNFVCk7CkBA
IC0xMjIxLDcgKzEyNjQsNyBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgCiAJfQogI2lmZGVmIElORVQKIAlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhZGRy
OwotCWlmIChTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJaWYgKFNDVFBfSVBWNl9WNk9OTFko
aW5wKSkgewogCQkvKgogCQkgKiBpZiBJUFY2X1Y2T05MWSBmbGFnLCBpZ25vcmUgY29ubmVjdGlv
bnMgZGVzdGluZWQgdG8gYSB2NAogCQkgKiBhZGRyIG9yIHY0LW1hcHBlZCBhZGRyCkBAIC0xMjc1
LDcgKzEzMTgsOCBAQCBzY3RwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgCiAJ
LyogV2UgYXJlIEdPT0QgdG8gZ28gKi8KIAlzdGNiID0gc2N0cF9hbG9jX2Fzc29jKGlucCwgYWRk
ciwgJmVycm9yLCAwLCB2cmZfaWQsCiAJICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBf
ZXAucHJlX29wZW5fc3RyZWFtX2NvdW50LAotCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2VwLnBvcnQsIHApOworCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnBv
cnQsIHAsCisJICAgICAgICAgICAgICAgICAgICAgICBTQ1RQX0lOSVRJQUxJWkVfQVVUSF9QQVJB
TVMpOwogCVNDVFBfQVNPQ19DUkVBVEVfVU5MT0NLKGlucCk7CiAJaWYgKHN0Y2IgPT0gTlVMTCkg
ewogCQkvKiBHYWshIG5vIG1lbW9yeSAqLwpAQCAtMTI4NiwxNCArMTMzMCwxNiBAQCBzY3RwNl9j
b25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgCiAJCS8qIFNldCB0aGUgY29ubmVjdGVk
IGZsYWcgc28gd2UgY2FuIHF1ZXVlIGRhdGEgKi8KIAkJc29pc2Nvbm5lY3Rpbmcoc28pOwogCX0K
LQlzdGNiLT5hc29jLnN0YXRlID0gU0NUUF9TVEFURV9DT09LSUVfV0FJVDsKKwlTQ1RQX1NFVF9T
VEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkodm9pZClTQ1RQX0dFVFRJTUVf
VElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQpOwotCi0JLyogaW5pdGlhbGl6ZSBhdXRo
ZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNzb2MgKi8KLQlzY3RwX2luaXRpYWxpemVf
YXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJTkVU
X0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCXNjdHBfc2VuZF9pbml0aWF0ZShpbnAsIHN0Y2Is
IFNDVFBfU09fTE9DS0VEKTsKIAlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAlyZXR1cm4gKGVycm9y
KTsKIH0KIApAQCAtMTU2NCwxMCArMTYxMCwxMCBAQCBzY3RwNl9pbjZnZXRhZGRyKHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1CiAJc3RydWN0IHNvY2thZGRyICphZGRyID0gbXRvZChuYW0sIHN0cnVj
dCBzb2NrYWRkciAqKTsKICNlbmRpZgogI2VuZGlmCi0Jc3RydWN0IGluNnBjYiAqaW5wNiA9IHNv
dG9pbjZwY2Ioc28pOworCXN0cnVjdCBpbnBjYiAqaW5wID0gc290b2lucGNiKHNvKTsKIAlpbnQg
ZXJyb3I7CiAKLQlpZiAoaW5wNiA9PSBOVUxMKSB7CisJaWYgKGlucCA9PSBOVUxMKSB7CiAJCVND
VFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFA2X1VTUlJF
USwgRUlOVkFMKTsKIAkJcmV0dXJuIChFSU5WQUwpOwogCX0KQEAgLTE2MzYsMTAgKzE2ODIsMTAg
QEAgc2N0cDZfZ2V0cGVlcmFkZHIoc3RydWN0IHNvY2tldCAqc28sIHN0cgogI2VuZGlmCiAKICNl
bmRpZgotCXN0cnVjdCBpbjZwY2IgKmlucDYgPSBzb3RvaW42cGNiKHNvKTsKKwlzdHJ1Y3QgaW5w
Y2IgKmlucCA9IHNvdG9pbnBjYihzbyk7CiAJaW50IGVycm9yOwogCi0JaWYgKGlucDYgPT0gTlVM
TCkgeworCWlmIChpbnAgPT0gTlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5V
TEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQNl9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUlO
VkFMKTsKIAl9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3NjdHA2X3Zhci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdmFyLmgJ
KHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZf
dmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0Ni9zYwogI2lmZGVmIElORVQKIGV4dGVybiB2b2lkIGluNl9zaW42
XzJfc2luKHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qgc29ja2FkZHJfaW42ICopOwogZXh0
ZXJuIHZvaWQgaW42X3NpbjZfMl9zaW5faW5fc29jayhzdHJ1Y3Qgc29ja2FkZHIgKik7Ci1leHRl
cm4gdm9pZCBpbjZfc2luXzJfdjRtYXBzaW42KHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBzdHJ1Y3Qg
c29ja2FkZHJfaW42ICopOworZXh0ZXJuIHZvaWQgaW42X3Npbl8yX3Y0bWFwc2luNihjb25zdCBz
dHJ1Y3Qgc29ja2FkZHJfaW4gKiwgc3RydWN0IHNvY2thZGRyX2luNiAqKTsKICNlbmRpZgogI2Vu
ZGlmCiAjaWYgZGVmaW5lZChfS0VSTkVMKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cC5oCShyZXZpc2lvbiAyNTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0Rf
XwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHAuaCAzMjM2NTcgMjAxNy0wOS0xNiAyMToyNjowNlogdHVleGVuICQiKTsKK19f
RkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwLmggMzU2MzU3IDIwMjAtMDEt
MDQgMjA6MzM6MTJaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQ
X0hfCkBAIC01MzAsNiArNTMwLDcgQEAgc3RydWN0IHNjdHBfZXJyb3JfYXV0aF9pbnZhbGlkX2ht
YWMgewogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19CT1VOREFMTAkJMHgwMDAwMDAwNAogI2RlZmlu
ZSBTQ1RQX1BDQl9GTEFHU19BQ0NFUFRJTkcJMHgwMDAwMDAwOAogI2RlZmluZSBTQ1RQX1BDQl9G
TEFHU19VTkJPVU5ECQkweDAwMDAwMDEwCisjZGVmaW5lIFNDVFBfUENCX0ZMQUdTX1NORF9JVEVS
QVRPUl9VUCAgMHgwMDAwMDAyMAogI2RlZmluZSBTQ1RQX1BDQl9GTEFHU19DTE9TRV9JUCAgICAg
ICAgIDB4MDAwNDAwMDAKICNkZWZpbmUgU0NUUF9QQ0JfRkxBR1NfV0FTX0NPTk5FQ1RFRCAgICAw
eDAwMDgwMDAwCiAjZGVmaW5lIFNDVFBfUENCX0ZMQUdTX1dBU19BQk9SVEVEICAgICAgMHgwMDEw
MDAwMApAQCAtNjA3LDcgKzYwOCwxMCBAQCBzdHJ1Y3Qgc2N0cF9lcnJvcl9hdXRoX2ludmFsaWRf
aG1hYyB7CiAjZGVmaW5lIFNDVFBfTU9CSUxJVFlfUFJJTV9ERUxFVEVEICAgICAgIDB4MDAwMDAw
MDQKIAogCi0jZGVmaW5lIFNDVFBfU01BTExFU1RfUE1UVSA1MTIJIC8qIHNtYWxsZXN0IHBtdHUg
YWxsb3dlZCB3aGVuIGRpc2FibGluZyBQTVRVIGRpc2NvdmVyeSAqLworLyogU21hbGxlc3QgUE1U
VSBhbGxvd2VkIHdoZW4gZGlzYWJsaW5nIFBNVFUgZGlzY292ZXJ5ICovCisjZGVmaW5lIFNDVFBf
U01BTExFU1RfUE1UVSA1MTIKKy8qIExhcmdlc3QgUE1UVSBhbGxvd2VkIHdoZW4gZGlzYWJsaW5n
IFBNVFUgZGlzY292ZXJ5ICovCisjZGVmaW5lIFNDVFBfTEFSR0VTVF9QTVRVICA2NTUzNgogCiAj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQogI3ByYWdtYSBwYWNrKHBvcCkKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5jCShyZXZpc2lvbiAy
NTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYwkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNs
dWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX2FzY29uZi5jIDMyNDA1NiAyMDE3LTA5LTI3IDEzOjA1OjIzWiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmMgMzU3MTk3IDIw
MjAtMDEtMjggMTA6MDk6MDVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9vcy5oPgpAQCAtMTA1LDQ3ICsxMDUsNTIgQEAgc2N0cF9hc2NvbmZfc3VjY2Vzc19y
ZXNwb25zZSh1aW50MzJfdCBpZAogCiBzdGF0aWMgc3RydWN0IG1idWYgKgogc2N0cF9hc2NvbmZf
ZXJyb3JfcmVzcG9uc2UodWludDMyX3QgaWQsIHVpbnQxNl90IGNhdXNlLCB1aW50OF90ICplcnJv
cl90bHYsCi0JCQkgICB1aW50MTZfdCB0bHZfbGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDE2X3QgdGx2X2xlbmd0aCkKIHsKIAlzdHJ1Y3QgbWJ1ZiAqbV9yZXBseSA9IE5V
TEw7CiAJc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyICphcGg7CiAJc3RydWN0IHNjdHBfZXJy
b3JfY2F1c2UgKmVycm9yOworCXVpbnQzMl90IGJ1Zl9sZW47CisJdWludDE2X3QgaSwgcGFyYW1f
bGVuZ3RoLCBjYXVzZV9sZW5ndGgsIHBhZGRpbmdfbGVuZ3RoOwogCXVpbnQ4X3QgKnRsdjsKIAot
CW1fcmVwbHkgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coKHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2Nv
bmZfcGFyYW1oZHIpICsKLQkJCQkJIHRsdl9sZW5ndGggKwotCQkJCQkgc2l6ZW9mKHN0cnVjdCBz
Y3RwX2Vycm9yX2NhdXNlKSksCi0JCQkJCTAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKKwlpZiAo
ZXJyb3JfdGx2ID09IE5VTEwpIHsKKwkJdGx2X2xlbmd0aCA9IDA7CisJfQorCWNhdXNlX2xlbmd0
aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9lcnJvcl9jYXVzZSkgKyB0bHZfbGVuZ3RoOworCXBhcmFt
X2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIpICsgY2F1c2VfbGVu
Z3RoOworCXBhZGRpbmdfbGVuZ3RoID0gdGx2X2xlbmd0aCAlIDQ7CisJaWYgKHBhZGRpbmdfbGVu
Z3RoICE9IDApIHsKKwkJcGFkZGluZ19sZW5ndGggPSA0IC0gcGFkZGluZ19sZW5ndGg7CisJfQor
CWJ1Zl9sZW4gPSBwYXJhbV9sZW5ndGggKyBwYWRkaW5nX2xlbmd0aDsKKwlpZiAoYnVmX2xlbiA+
IE1MRU4pIHsKKwkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCisJCQkiYXNjb25mX2Vycm9y
X3Jlc3BvbnNlOiB0bHZfbGVuZ3RoICgleGgpIHRvbyBiaWdcbiIsCisJCQl0bHZfbGVuZ3RoKTsK
KwkJcmV0dXJuIChOVUxMKTsKKwl9CisJbV9yZXBseSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhi
dWZfbGVuLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CiAJaWYgKG1fcmVwbHkgPT0gTlVMTCkg
ewogCQlTQ1RQREJHKFNDVFBfREVCVUdfQVNDT05GMSwKIAkJCSJhc2NvbmZfZXJyb3JfcmVzcG9u
c2U6IGNvdWxkbid0IGdldCBtYnVmIVxuIik7CiAJCXJldHVybiAoTlVMTCk7CiAJfQogCWFwaCA9
IG10b2QobV9yZXBseSwgc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyICopOwotCWVycm9yID0g
KHN0cnVjdCBzY3RwX2Vycm9yX2NhdXNlICopKGFwaCArIDEpOwotCi0JYXBoLT5jb3JyZWxhdGlv
bl9pZCA9IGlkOwogCWFwaC0+cGgucGFyYW1fdHlwZSA9IGh0b25zKFNDVFBfRVJST1JfQ0FVU0Vf
SU5EKTsKKwlhcGgtPnBoLnBhcmFtX2xlbmd0aCA9IGh0b25zKHBhcmFtX2xlbmd0aCk7CisJYXBo
LT5jb3JyZWxhdGlvbl9pZCA9IGlkOworCWVycm9yID0gKHN0cnVjdCBzY3RwX2Vycm9yX2NhdXNl
ICopKGFwaCArIDEpOwogCWVycm9yLT5jb2RlID0gaHRvbnMoY2F1c2UpOwotCWVycm9yLT5sZW5n
dGggPSB0bHZfbGVuZ3RoICsgc2l6ZW9mKHN0cnVjdCBzY3RwX2Vycm9yX2NhdXNlKTsKLQlhcGgt
PnBoLnBhcmFtX2xlbmd0aCA9IGVycm9yLT5sZW5ndGggKwotCSAgICBzaXplb2Yoc3RydWN0IHNj
dHBfYXNjb25mX3BhcmFtaGRyKTsKLQotCWlmIChhcGgtPnBoLnBhcmFtX2xlbmd0aCA+IE1MRU4p
IHsKLQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCi0JCQkiYXNjb25mX2Vycm9yX3Jlc3Bv
bnNlOiB0bHZfbGVuZ3RoICgleGgpIHRvbyBiaWdcbiIsCi0JCQl0bHZfbGVuZ3RoKTsKLQkJc2N0
cF9tX2ZyZWVtKG1fcmVwbHkpOwkvKiBkaXNjYXJkICovCi0JCXJldHVybiAoTlVMTCk7Ci0JfQor
CWVycm9yLT5sZW5ndGggPSBodG9ucyhjYXVzZV9sZW5ndGgpOwogCWlmIChlcnJvcl90bHYgIT0g
TlVMTCkgewogCQl0bHYgPSAodWludDhfdCAqKSAoZXJyb3IgKyAxKTsKIAkJbWVtY3B5KHRsdiwg
ZXJyb3JfdGx2LCB0bHZfbGVuZ3RoKTsKKwkJZm9yIChpID0gMDsgaSA8IHBhZGRpbmdfbGVuZ3Ro
OyBpKyspIHsKKwkJCXRsdlt0bHZfbGVuZ3RoICsgaV0gPSAwOworCQl9CiAJfQotCVNDVFBfQlVG
X0xFTihtX3JlcGx5KSA9IGFwaC0+cGgucGFyYW1fbGVuZ3RoOwotCWVycm9yLT5sZW5ndGggPSBo
dG9ucyhlcnJvci0+bGVuZ3RoKTsKLQlhcGgtPnBoLnBhcmFtX2xlbmd0aCA9IGh0b25zKGFwaC0+
cGgucGFyYW1fbGVuZ3RoKTsKLQorCVNDVFBfQlVGX0xFTihtX3JlcGx5KSA9IGJ1Zl9sZW47CiAJ
cmV0dXJuIChtX3JlcGx5KTsKIH0KIApAQCAtMTc0LDEwICsxNzksMTYgQEAgc2N0cF9wcm9jZXNz
X2FzY29uZl9hZGRfaXAoc3RydWN0IHNvY2thZAogI2VuZGlmCiAKIAlhcGFyYW1fbGVuZ3RoID0g
bnRvaHMoYXBoLT5waC5wYXJhbV9sZW5ndGgpOworCWlmIChhcGFyYW1fbGVuZ3RoIDwgc2l6ZW9m
KHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1o
ZHIpKSB7CisJCXJldHVybiAoTlVMTCk7CisJfQogCXBoID0gKHN0cnVjdCBzY3RwX3BhcmFtaGRy
ICopKGFwaCArIDEpOwogCXBhcmFtX3R5cGUgPSBudG9ocyhwaC0+cGFyYW1fdHlwZSk7CiAjaWYg
ZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogCXBhcmFtX2xlbmd0aCA9IG50b2hzKHBo
LT5wYXJhbV9sZW5ndGgpOworCWlmIChwYXJhbV9sZW5ndGggKyBzaXplb2Yoc3RydWN0IHNjdHBf
YXNjb25mX3BhcmFtaGRyKSAhPSBhcGFyYW1fbGVuZ3RoKSB7CisJCXJldHVybiAoTlVMTCk7CisJ
fQogI2VuZGlmCiAJc2EgPSAmc3RvcmUuc2E7CiAJc3dpdGNoIChwYXJhbV90eXBlKSB7CkBAIC0y
NDUsNiArMjU2LDcgQEAgc2N0cF9wcm9jZXNzX2FzY29uZl9hZGRfaXAoc3RydWN0IHNvY2thZAog
CQkgICAgICAgICJwcm9jZXNzX2FzY29uZl9hZGRfaXA6IHVzaW5nIHNvdXJjZSBhZGRyICIpOwog
CQlTQ1RQREJHX0FERFIoU0NUUF9ERUJVR19BU0NPTkYxLCBzcmMpOwogCX0KKwluZXQgPSBOVUxM
OwogCS8qIGFkZCB0aGUgYWRkcmVzcyAqLwogCWlmIChiYWRfYWRkcmVzcykgewogCQltX3JlcGx5
ID0gc2N0cF9hc2NvbmZfZXJyb3JfcmVzcG9uc2UoYXBoLT5jb3JyZWxhdGlvbl9pZCwKQEAgLTI1
OSwxNyArMjcxLDE5IEBAIHNjdHBfcHJvY2Vzc19hc2NvbmZfYWRkX2lwKHN0cnVjdCBzb2NrYWQK
IAkJICAgIFNDVFBfQ0FVU0VfUkVTT1VSQ0VfU0hPUlRBR0UsICh1aW50OF90ICopIGFwaCwKIAkJ
ICAgIGFwYXJhbV9sZW5ndGgpOwogCX0gZWxzZSB7Ci0JCS8qIG5vdGlmeSB1cHBlciBsYXllciAq
LwotCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfQVNDT05GX0FERF9JUCwgc3RjYiwgMCwg
c2EsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCWlmIChyZXNwb25zZV9yZXF1aXJlZCkgewogCQkJ
bV9yZXBseSA9CiAJCQkgICAgc2N0cF9hc2NvbmZfc3VjY2Vzc19yZXNwb25zZShhcGgtPmNvcnJl
bGF0aW9uX2lkKTsKIAkJfQotCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9QQVRI
TVRVUkFJU0UsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldCk7Ci0JCXNjdHBfdGltZXJfc3RhcnQo
U0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgc3RjYi0+c2N0cF9lcCwKLQkJICAgICAgICAgICAg
ICAgICBzdGNiLCBuZXQpOwotCQlpZiAoc2VuZF9oYikgewotCQkJc2N0cF9zZW5kX2hiKHN0Y2Is
IG5ldCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJaWYgKG5ldCAhPSBOVUxMKSB7CisJCQkvKiBu
b3RpZnkgdXBwZXIgbGF5ZXIgKi8KKwkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU0NP
TkZfQUREX0lQLCBzdGNiLCAwLCBzYSwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkJCXNjdHBfdGlt
ZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1BBVEhNVFVSQUlTRSwgc3RjYi0+c2N0cF9lcCwgc3Rj
YiwgbmV0KTsKKwkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwg
c3RjYi0+c2N0cF9lcCwKKwkJCQkJIHN0Y2IsIG5ldCk7CisJCQlpZiAoc2VuZF9oYikgeworCQkJ
CXNjdHBfc2VuZF9oYihzdGNiLCBuZXQsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CisJCQl9CiAJCX0K
IAl9CiAJcmV0dXJuIChtX3JlcGx5KTsKQEAgLTI3OCw3ICsyOTIsNyBAQCBzY3RwX3Byb2Nlc3Nf
YXNjb25mX2FkZF9pcChzdHJ1Y3Qgc29ja2FkCiBzdGF0aWMgaW50CiBzY3RwX2FzY29uZl9kZWxf
cmVtb3RlX2FkZHJzX2V4Y2VwdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRk
ciAqc3JjKQogewotCXN0cnVjdCBzY3RwX25ldHMgKnNyY19uZXQsICpuZXQ7CisJc3RydWN0IHNj
dHBfbmV0cyAqc3JjX25ldCwgKm5ldCwgKm5uZXQ7CiAKIAkvKiBtYWtlIHN1cmUgdGhlIHNvdXJj
ZSBhZGRyZXNzIGV4aXN0cyBhcyBhIGRlc3RpbmF0aW9uIG5ldCAqLwogCXNyY19uZXQgPSBzY3Rw
X2ZpbmRuZXQoc3RjYiwgc3JjKTsKQEAgLTI4OCwxMCArMzAyLDkgQEAgc2N0cF9hc2NvbmZfZGVs
X3JlbW90ZV9hZGRyc19leGNlcHQoc3RydQogCX0KIAogCS8qIGRlbGV0ZSBhbGwgZGVzdGluYXRp
b24gYWRkcmVzc2VzIGV4Y2VwdCB0aGUgc291cmNlICovCi0JVEFJTFFfRk9SRUFDSChuZXQsICZz
dGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgeworCVRBSUxRX0ZPUkVBQ0hfU0FGRShuZXQsICZz
dGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCwgbm5ldCkgewogCQlpZiAobmV0ICE9IHNyY19uZXQp
IHsKIAkJCS8qIGRlbGV0ZSB0aGlzIGFkZHJlc3MgKi8KLQkJCXNjdHBfcmVtb3ZlX25ldChzdGNi
LCBuZXQpOwogCQkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCiAJCQkJImFzY29uZl9kZWxf
cmVtb3RlX2FkZHJzX2V4Y2VwdDogZGVsZXRpbmcgIik7CiAJCQlTQ1RQREJHX0FERFIoU0NUUF9E
RUJVR19BU0NPTkYxLApAQCAtMjk5LDYgKzMxMiw3IEBAIHNjdHBfYXNjb25mX2RlbF9yZW1vdGVf
YWRkcnNfZXhjZXB0KHN0cnUKIAkJCS8qIG5vdGlmeSB1cHBlciBsYXllciAqLwogCQkJc2N0cF91
bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTQ09ORl9ERUxFVEVfSVAsIHN0Y2IsIDAsCiAJCQkgICAg
KHN0cnVjdCBzb2NrYWRkciAqKSZuZXQtPnJvLl9sX2FkZHIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7
CisJCQlzY3RwX3JlbW92ZV9uZXQoc3RjYiwgbmV0KTsKIAkJfQogCX0KIAlyZXR1cm4gKDApOwpA
QCAtMzI5LDEwICszNDMsMTYgQEAgc2N0cF9wcm9jZXNzX2FzY29uZl9kZWxldGVfaXAoc3RydWN0
IHNvYwogI2VuZGlmCiAKIAlhcGFyYW1fbGVuZ3RoID0gbnRvaHMoYXBoLT5waC5wYXJhbV9sZW5n
dGgpOworCWlmIChhcGFyYW1fbGVuZ3RoIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJh
bWhkcikgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSB7CisJCXJldHVybiAoTlVMTCk7
CisJfQogCXBoID0gKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopKGFwaCArIDEpOwogCXBhcmFtX3R5
cGUgPSBudG9ocyhwaC0+cGFyYW1fdHlwZSk7CiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVk
KElORVQ2KQogCXBhcmFtX2xlbmd0aCA9IG50b2hzKHBoLT5wYXJhbV9sZW5ndGgpOworCWlmIChw
YXJhbV9sZW5ndGggKyBzaXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyKSAhPSBhcGFy
YW1fbGVuZ3RoKSB7CisJCXJldHVybiAoTlVMTCk7CisJfQogI2VuZGlmCiAJc2EgPSAmc3RvcmUu
c2E7CiAJc3dpdGNoIChwYXJhbV90eXBlKSB7CkBAIC00NjQsMTAgKzQ4NCwxNiBAQCBzY3RwX3By
b2Nlc3NfYXNjb25mX3NldF9wcmltYXJ5KHN0cnVjdCBzCiAjZW5kaWYKIAogCWFwYXJhbV9sZW5n
dGggPSBudG9ocyhhcGgtPnBoLnBhcmFtX2xlbmd0aCk7CisJaWYgKGFwYXJhbV9sZW5ndGggPCBz
aXplb2Yoc3RydWN0IHNjdHBfYXNjb25mX3BhcmFtaGRyKSArIHNpemVvZihzdHJ1Y3Qgc2N0cF9w
YXJhbWhkcikpIHsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CiAJcGggPSAoc3RydWN0IHNjdHBfcGFy
YW1oZHIgKikoYXBoICsgMSk7CiAJcGFyYW1fdHlwZSA9IG50b2hzKHBoLT5wYXJhbV90eXBlKTsK
ICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiAJcGFyYW1fbGVuZ3RoID0gbnRv
aHMocGgtPnBhcmFtX2xlbmd0aCk7CisJaWYgKHBhcmFtX2xlbmd0aCArIHNpemVvZihzdHJ1Y3Qg
c2N0cF9hc2NvbmZfcGFyYW1oZHIpICE9IGFwYXJhbV9sZW5ndGgpIHsKKwkJcmV0dXJuIChOVUxM
KTsKKwl9CiAjZW5kaWYKIAlzYSA9ICZzdG9yZS5zYTsKIAlzd2l0Y2ggKHBhcmFtX3R5cGUpIHsK
QEAgLTY4NywxMCArNzEzLDExIEBAIHNjdHBfaGFuZGxlX2FzY29uZihzdHJ1Y3QgbWJ1ZiAqbSwg
dW5zaWcKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0FTQ09ORjEsCiAJCQkiaGFuZGxlX2FzY29uZjog
Y291bGRuJ3QgZ2V0IGxvb2t1cCBhZGRyIVxuIik7CiAJCS8qIHJlc3BvbmQgd2l0aCBhIG1pc3Np
bmcvaW52YWxpZCBtYW5kYXRvcnkgcGFyYW1ldGVyIGVycm9yICovCisJCXNjdHBfbV9mcmVlbSht
X2Fjayk7CiAJCXJldHVybjsKIAl9Ci0JLyogcGFyYW1fbGVuZ3RoIGlzIGFscmVhZHkgdmFsaWRh
dGVkIGluIHByb2Nlc3NfY29udHJvbC4uLiAqLwotCW9mZnNldCArPSBudG9ocyhwX2FkZHItPnBo
LnBhcmFtX2xlbmd0aCk7CS8qIHNraXAgbG9va3VwIGFkZHIgKi8KKwkvKiBza2lwIGxvb2t1cCBh
ZGRyICovCisJb2Zmc2V0ICs9IFNDVFBfU0laRTMyKG50b2hzKHBfYWRkci0+cGgucGFyYW1fbGVu
Z3RoKSk7CiAJLyogZ2V0IHBvaW50ZXIgdG8gZmlyc3QgYXNjb25mIHBhcmFtIGluIEFTQ09ORiAq
LwogCWFwaCA9IChzdHJ1Y3Qgc2N0cF9hc2NvbmZfcGFyYW1oZHIgKilzY3RwX21fZ2V0cHRyKG0s
IG9mZnNldCwgc2l6ZW9mKHN0cnVjdCBzY3RwX2FzY29uZl9wYXJhbWhkciksICh1aW50OF90ICop
JmFwYXJhbV9idWYpOwogCWlmIChhcGggPT0gTlVMTCkgewpAQCAtNzE5LDYgKzc0Niw3IEBAIHNj
dHBfaGFuZGxlX2FzY29uZihzdHJ1Y3QgbWJ1ZiAqbSwgdW5zaWcKIAkJaWYgKHBhcmFtX2xlbmd0
aCA8PSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSB7CiAJCQlTQ1RQREJHKFNDVFBfREVC
VUdfQVNDT05GMSwgImhhbmRsZV9hc2NvbmY6IHBhcmFtIGxlbmd0aCAoJXUpIHRvbyBzaG9ydFxu
IiwgcGFyYW1fbGVuZ3RoKTsKIAkJCXNjdHBfbV9mcmVlbShtX2Fjayk7CisJCQlyZXR1cm47CiAJ
CX0KIAkJLyogZ2V0IHRoZSBlbnRpcmUgcGFyYW1ldGVyICovCiAJCWFwaCA9IChzdHJ1Y3Qgc2N0
cF9hc2NvbmZfcGFyYW1oZHIgKilzY3RwX21fZ2V0cHRyKG0sIG9mZnNldCwgcGFyYW1fbGVuZ3Ro
LCBhcGFyYW1fYnVmKTsKQEAgLTc3NCw4ICs4MDIsNiBAQCBzY3RwX2hhbmRsZV9hc2NvbmYoc3Ry
dWN0IG1idWYgKm0sIHVuc2lnCiAJCWlmIChtX3Jlc3VsdCAhPSBOVUxMKSB7CiAJCQlTQ1RQX0JV
Rl9ORVhUKG1fdGFpbCkgPSBtX3Jlc3VsdDsKIAkJCW1fdGFpbCA9IG1fcmVzdWx0OwotCQkJLyog
dXBkYXRlIGxlbmd0aHMsIG1ha2Ugc3VyZSBpdCdzIGFsaWduZWQgdG9vICovCi0JCQlTQ1RQX0JV
Rl9MRU4obV9yZXN1bHQpID0gU0NUUF9TSVpFMzIoU0NUUF9CVUZfTEVOKG1fcmVzdWx0KSk7CiAJ
CQlhY2tfY3AtPmNoLmNodW5rX2xlbmd0aCArPSBTQ1RQX0JVRl9MRU4obV9yZXN1bHQpOwogCQkJ
Lyogc2V0IGZsYWcgdG8gZm9yY2Ugc3VjY2VzcyByZXBvcnRzICovCiAJCQllcnJvciA9IDE7CkBA
IC0xMzgwLDcgKzE0MDYsNyBAQCBzY3RwX2FzY29uZl9xdWV1ZV9hZGQoc3RydWN0IHNjdHBfdGNi
ICpzCiAJCWlmIChzY3RwX2FzY29uZl9xdWV1ZV9tZ210KHN0Y2IsCiAJCQkJCSAgIHN0Y2ItPmFz
b2MuYXNjb25mX2FkZHJfZGVsX3BlbmRpbmcsCiAJCQkJCSAgIFNDVFBfREVMX0lQX0FERFJFU1Mp
ID09IDApIHsKLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NPTkYyLCAiYXNjb25mX3F1ZXVlX2Fk
ZDogcXVlaW5nIHBlbmRpbmcgZGVsZXRlXG4iKTsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19BU0NP
TkYyLCAiYXNjb25mX3F1ZXVlX2FkZDogcXVldWluZyBwZW5kaW5nIGRlbGV0ZVxuIik7CiAJCQlw
ZW5kaW5nX2RlbGV0ZV9xdWV1ZWQgPSAxOwogCQkJLyogY2xlYXIgb3V0IHRoZSBwZW5kaW5nIGRl
bGV0ZSBpbmZvICovCiAJCQlzdGNiLT5hc29jLmFzY29uZl9kZWxfcGVuZGluZyA9IDA7CkBAIC0x
OTcxLDEyICsxOTk3LDEwIEBAIHNjdHBfYWRkcl9tZ210X2Fzc29jKHN0cnVjdCBzY3RwX2lucGNi
ICoKIAljYXNlIEFGX0lORVQ6CiAJewogCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKLQkJc3Ry
dWN0IGluNnBjYiAqaW5wNjsKIAotCQlpbnA2ID0gKHN0cnVjdCBpbjZwY2IgKikmaW5wLT5pcF9p
bnAuaW5wOwogCQkvKiBpbnZhbGlkIGlmIHdlIGFyZSBhIHY2IG9ubHkgZW5kcG9pbnQgKi8KIAkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19CT1VORF9WNikgJiYKLQkJICAg
IFNDVFBfSVBWNl9WNk9OTFkoaW5wNikpCisJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucCkpCiAJ
CQlyZXR1cm47CiAKIAkJc2luID0gJmlmYS0+YWRkcmVzcy5zaW47CkBAIC0yMDA5LDggKzIwMzMs
OCBAQCBzY3RwX2FkZHJfbWdtdF9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqCiAJCQkgKiBzZW50
IHdoZW4gdGhlIHN0YXRlIGdvZXMgb3Blbi4KIAkJCSAqLwogCQkJaWYgKHN0YXR1cyA9PSAwICYm
Ci0JCQkgICAgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVO
KSB8fAotCQkJICAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpKSkgeworCQkJICAgICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0g
U0NUUF9TVEFURV9PUEVOKSB8fAorCQkJICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpKSB7CiAjaWZkZWYgU0NUUF9USU1FUl9CQVNFRF9B
U0NPTkYKIAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIGlucCwK
IAkJCQkgICAgc3RjYiwgc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uKTsKQEAgLTIwNDks
MTAgKzIwNzMsOCBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9lcChzdHJ1Y3Qgc2N0cF9pbnBjCiAJ
CWNhc2UgQUZfSU5FVDoKIAkJewogCQkJLyogaW52YWxpZCBpZiB3ZSBhcmUgYSB2NiBvbmx5IGVu
ZHBvaW50ICovCi0JCQlzdHJ1Y3QgaW42cGNiICppbnA2OwotCQkJaW5wNiA9IChzdHJ1Y3QgaW42
cGNiICopJmlucC0+aXBfaW5wLmlucDsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfQk9VTkRfVjYpICYmCi0JCQkgICAgU0NUUF9JUFY2X1Y2T05MWShpbnA2KSkgewor
CQkJICAgIFNDVFBfSVBWNl9WNk9OTFkoaW5wKSkgewogCQkJCWNudF9pbnZhbGlkKys7CiAJCQkJ
aWYgKGFzYy0+Y250ID09IGNudF9pbnZhbGlkKQogCQkJCQlyZXR1cm4gKDEpOwpAQCAtMjE2NSwx
MyArMjE4NywxMSBAQCBzY3RwX2FzY29uZl9pdGVyYXRvcl9zdGNiKHN0cnVjdCBzY3RwX2luCiAJ
CWNhc2UgQUZfSU5FVDoKIAkJewogCQkJLyogaW52YWxpZCBpZiB3ZSBhcmUgYSB2NiBvbmx5IGVu
ZHBvaW50ICovCi0JCQlzdHJ1Y3QgaW42cGNiICppbnA2OwogCQkJc3RydWN0IHNvY2thZGRyX2lu
ICpzaW47CiAKLQkJCWlucDYgPSAoc3RydWN0IGluNnBjYiAqKSZpbnAtPmlwX2lucC5pbnA7CiAJ
CQkvKiBpbnZhbGlkIGlmIHdlIGFyZSBhIHY2IG9ubHkgZW5kcG9pbnQgKi8KIAkJCWlmICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfQk9VTkRfVjYpICYmCi0JCQkgICAgU0NUUF9J
UFY2X1Y2T05MWShpbnA2KSkKKwkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucCkpCiAJCQkJY29u
dGludWU7CiAKIAkJCXNpbiA9ICZpZmEtPmFkZHJlc3Muc2luOwpAQCAtMjE5MCw3ICsyMjEwLDcg
QEAgc2N0cF9hc2NvbmZfaXRlcmF0b3Jfc3RjYihzdHJ1Y3Qgc2N0cF9pbgogCQkJCWNvbnRpbnVl
OwogCQkJfQogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19CT1VORF9W
NikgJiYKLQkJCSAgICBTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJCQkgICAgU0NUUF9JUFY2
X1Y2T05MWShpbnApKSB7CiAJCQkJY250X2ludmFsaWQrKzsKIAkJCQlpZiAoYXNjLT5jbnQgPT0g
Y250X2ludmFsaWQpCiAJCQkJCXJldHVybjsKQEAgLTIyNjIsOCArMjI4Miw4IEBAIHNjdHBfYXNj
b25mX2l0ZXJhdG9yX3N0Y2Ioc3RydWN0IHNjdHBfaW4KIAkJCSAqIGNvdW50IG9mIHF1ZXVlZCBw
YXJhbXMuICBJZiBpbiB0aGUgbm9uLW9wZW4gc3RhdGUsCiAJCQkgKiB0aGVzZSBnZXQgc2VudCB3
aGVuIHRoZSBhc3NvYyBnb2VzIG9wZW4uCiAJCQkgKi8KLQkJCWlmICgoU0NUUF9HRVRfU1RBVEUo
JnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCSAgICAoU0NUUF9HRVRfU1RB
VEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQlp
ZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCSAgICAo
U0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsK
IAkJCQlpZiAoc3RhdHVzID49IDApIHsKIAkJCQkJbnVtX3F1ZXVlZCsrOwogCQkJCX0KQEAgLTIz
MjQsOCArMjM0NCw4IEBAIHNjdHBfc2V0X3ByaW1hcnlfaXBfYWRkcmVzc19zYShzdHJ1Y3Qgc2MK
IAkJCSJzZXRfcHJpbWFyeV9pcF9hZGRyZXNzX3NhOiBxdWV1ZWQgb24gdGNiPSVwLCAiLAogCQkJ
KHZvaWQgKilzdGNiKTsKIAkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfQVNDT05GMSwgc2EpOwot
CQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8
Ci0JCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9PUEVOKSB8fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hV
VERPV05fUkVDRUlWRUQpKSB7CiAjaWZkZWYgU0NUUF9USU1FUl9CQVNFRF9BU0NPTkYKIAkJCXNj
dHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0FTQ09ORiwKIAkJCQkJIHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsCkBAIC0yODYwLDggKzI4ODAsNyBAQCBzY3RwX3Byb2Nlc3NfaW5pdGFja19hZGRy
ZXNzZXMoc3RydWN0IHNjCiAJCQkJICogb3V0IHRoZSBBU0NPTkYuCiAJCQkJICovCiAJCQkJaWYg
KHN0YXR1cyA9PSAwICYmCi0JCQkJICAgIFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PQot
CQkJCSAgICBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCQkgICAgU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9PUEVOKSB7CiAjaWZkZWYgU0NUUF9USU1FUl9CQVNFRF9BU0NPTkYKIAkJ
CQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfQVNDT05GLAogCQkJCQkJCSBzdGNi
LT5zY3RwX2VwLCBzdGNiLApJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
YXV0aC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1
dGguYwkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfYXV0aC5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0Zy
ZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5jIDMzNDUzMiAyMDE4LTA2LTAyIDE2OjI4OjEwWiB0dWV4
ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5j
IDM1NTkzMSAyMDE5LTEyLTIwIDE1OjI1OjA4WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNs
dWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTUyNSw3ICs1MjUsNyBAQCBzY3RwX2luc2VydF9z
aGFyZWRrZXkoc3RydWN0IHNjdHBfa2V5aGVhCiAJCX0gZWxzZSBpZiAobmV3X3NrZXktPmtleWlk
ID09IHNrZXktPmtleWlkKSB7CiAJCQkvKiByZXBsYWNlIHRoZSBleGlzdGluZyBrZXkgKi8KIAkJ
CS8qIHZlcmlmeSB0aGlzIGtleSAqY2FuKiBiZSByZXBsYWNlZCAqLwotCQkJaWYgKChza2V5LT5k
ZWFjdGl2YXRlZCkgJiYgKHNrZXktPnJlZmNvdW50ID4gMSkpIHsKKwkJCWlmICgoc2tleS0+ZGVh
Y3RpdmF0ZWQpIHx8IChza2V5LT5yZWZjb3VudCA+IDEpKSB7CiAJCQkJU0NUUERCRyhTQ1RQX0RF
QlVHX0FVVEgxLAogCQkJCQkiY2FuJ3QgcmVwbGFjZSBzaGFyZWQga2V5IGlkICV1XG4iLAogCQkJ
CQluZXdfc2tleS0+a2V5aWQpOwpAQCAtMTA4NCw0MCArMTA4NCw2IEBAIHNjdHBfaG1hY19tKHVp
bnQxNl90IGhtYWNfYWxnbywgdWludDhfdCAKIAlyZXR1cm4gKGRpZ2VzdGxlbik7CiB9CiAKLS8q
LQotICogdmVyaWZ5IHRoZSBITUFDIGRpZ2VzdCB1c2luZyB0aGUgZGVzaXJlZCBoYXNoIGtleSwg
dGV4dCwgYW5kIEhNQUMKLSAqIGFsZ29yaXRobS4KLSAqIFJldHVybnMgLTEgb24gZXJyb3IsIDAg
b24gc3VjY2Vzcy4KLSAqLwotaW50Ci1zY3RwX3ZlcmlmeV9obWFjKHVpbnQxNl90IGhtYWNfYWxn
bywgdWludDhfdCAqa2V5LCB1aW50MzJfdCBrZXlsZW4sCi0gICAgdWludDhfdCAqdGV4dCwgdWlu
dDMyX3QgdGV4dGxlbiwKLSAgICB1aW50OF90ICpkaWdlc3QsIHVpbnQzMl90IGRpZ2VzdGxlbikK
LXsKLQl1aW50MzJfdCBsZW47Ci0JdWludDhfdCB0ZW1wW1NDVFBfQVVUSF9ESUdFU1RfTEVOX01B
WF07Ci0KLQkvKiBzYW5pdHkgY2hlY2sgdGhlIG1hdGVyaWFsIGFuZCBsZW5ndGggKi8KLQlpZiAo
KGtleSA9PSBOVUxMKSB8fCAoa2V5bGVuID09IDApIHx8Ci0JICAgICh0ZXh0ID09IE5VTEwpIHx8
ICh0ZXh0bGVuID09IDApIHx8IChkaWdlc3QgPT0gTlVMTCkpIHsKLQkJLyogY2FuJ3QgZG8gSE1B
QyB3aXRoIGVtcHR5IGtleSBvciB0ZXh0IG9yIGRpZ2VzdCAqLwotCQlyZXR1cm4gKC0xKTsKLQl9
Ci0JbGVuID0gc2N0cF9nZXRfaG1hY19kaWdlc3RfbGVuKGhtYWNfYWxnbyk7Ci0JaWYgKChsZW4g
PT0gMCkgfHwgKGRpZ2VzdGxlbiAhPSBsZW4pKQotCQlyZXR1cm4gKC0xKTsKLQotCS8qIGNvbXB1
dGUgdGhlIGV4cGVjdGVkIGhhc2ggKi8KLQlpZiAoc2N0cF9obWFjKGhtYWNfYWxnbywga2V5LCBr
ZXlsZW4sIHRleHQsIHRleHRsZW4sIHRlbXApICE9IGxlbikKLQkJcmV0dXJuICgtMSk7Ci0KLQlp
ZiAobWVtY21wKGRpZ2VzdCwgdGVtcCwgZGlnZXN0bGVuKSAhPSAwKQotCQlyZXR1cm4gKC0xKTsK
LQllbHNlCi0JCXJldHVybiAoMCk7Ci19Ci0KLQogLyoKICAqIGNvbXB1dGVzIHRoZSByZXF1ZXN0
ZWQgSE1BQyB1c2luZyBhIGtleSBzdHJ1Y3QgKHdoaWNoIG1heSBiZSBtb2RpZmllZCBpZgogICog
dGhlIGtleWxlbiBleGNlZWRzIHRoZSBITUFDIGJsb2NrIGxlbikuCkBAIC0xNDU1LDcgKzE0MjEs
OCBAQCBzY3RwX2F1dGhfZ2V0X2Nvb2tpZV9wYXJhbXMoc3RydWN0IHNjdHBfCiAJCXB0eXBlID0g
bnRvaHMocGhkci0+cGFyYW1fdHlwZSk7CiAJCXBsZW4gPSBudG9ocyhwaGRyLT5wYXJhbV9sZW5n
dGgpOwogCi0JCWlmICgocGxlbiA9PSAwKSB8fCAob2Zmc2V0ICsgcGxlbiA+IGxlbmd0aCkpCisJ
CWlmICgocGxlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIHx8CisJCSAgICAob2Zm
c2V0ICsgcGxlbiA+IGxlbmd0aCkpCiAJCQlicmVhazsKIAogCQlpZiAocHR5cGUgPT0gU0NUUF9S
QU5ET00pIHsKQEAgLTE2ODMsNiArMTY1MCwxMSBAQCBzY3RwX2hhbmRsZV9hdXRoKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgCiAJCSJTQ1RQIEFVVEggQ2h1bms6IHNoYXJlZCBrZXkgJXUsIEhNQUMg
aWQgJXVcbiIsCiAJCXNoYXJlZF9rZXlfaWQsIGhtYWNfaWQpOwogCisjaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorI2lmZGVmIEZVWlpJTkdfQlVJTERfTU9ERV9VTlNBRkVfRk9SX1BST0RVQ1RJ
T04KKwlyZXR1cm4gKDApOworI2VuZGlmCisjZW5kaWYKIAkvKiBpcyB0aGUgaW5kaWNhdGVkIEhN
QUMgc3VwcG9ydGVkPyAqLwogCWlmICghc2N0cF9hdXRoX2lzX3N1cHBvcnRlZF9obWFjKHN0Y2It
PmFzb2MubG9jYWxfaG1hY3MsIGhtYWNfaWQpKSB7CiAJCXN0cnVjdCBtYnVmICpvcF9lcnI7CkBA
IC0xNzY0LDcgKzE3MzYsNyBAQCBzY3RwX2hhbmRsZV9hdXRoKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwgCiAJICAgIG0sIG9mZnNldCwgY29tcHV0ZWRfZGlnZXN0KTsKIAogCS8qIGNvbXBhcmUgdGhl
IGNvbXB1dGVkIGRpZ2VzdCB3aXRoIHRoZSBvbmUgaW4gdGhlIEFVVEggY2h1bmsgKi8KLQlpZiAo
bWVtY21wKGRpZ2VzdCwgY29tcHV0ZWRfZGlnZXN0LCBkaWdlc3RsZW4pICE9IDApIHsKKwlpZiAo
dGltaW5nc2FmZV9iY21wKGRpZ2VzdCwgY29tcHV0ZWRfZGlnZXN0LCBkaWdlc3RsZW4pICE9IDAp
IHsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmF1dGhmYWlsZWQpOwogCQlTQ1RQREJHKFND
VFBfREVCVUdfQVVUSDEsCiAJCQkiU0NUUCBBdXRoOiBITUFDIGRpZ2VzdCBjaGVjayBmYWlsZWRc
biIpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguaAkocmV2aXNp
b24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2lu
Y2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0
L3NjdHBfYXV0aC5oIDMxMDU5MCAyMDE2LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5oIDMzODc0OSAyMDE4
LTA5LTE4IDEwOjUzOjA3WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRf
U0NUUF9BVVRIX0hfCkBAIC0xNzAsOCArMTcwLDYgQEAgZXh0ZXJuIHVpbnQzMl90IHNjdHBfZ2V0
X2F1dGhfY2h1bmtfbGVuKAogZXh0ZXJuIHVpbnQzMl90IHNjdHBfZ2V0X2htYWNfZGlnZXN0X2xl
bih1aW50MTZfdCBobWFjX2FsZ28pOwogZXh0ZXJuIHVpbnQzMl90IHNjdHBfaG1hYyh1aW50MTZf
dCBobWFjX2FsZ28sIHVpbnQ4X3QgKmtleSwgdWludDMyX3Qga2V5bGVuLAogICAgIHVpbnQ4X3Qg
KnRleHQsIHVpbnQzMl90IHRleHRsZW4sIHVpbnQ4X3QgKmRpZ2VzdCk7Ci1leHRlcm4gaW50IHNj
dHBfdmVyaWZ5X2htYWModWludDE2X3QgaG1hY19hbGdvLCB1aW50OF90ICprZXksIHVpbnQzMl90
IGtleWxlbiwKLSAgICB1aW50OF90ICp0ZXh0LCB1aW50MzJfdCB0ZXh0bGVuLCB1aW50OF90ICpk
aWdlc3QsIHVpbnQzMl90IGRpZ2VzdGxlbik7CiBleHRlcm4gdWludDMyX3Qgc2N0cF9jb21wdXRl
X2htYWModWludDE2X3QgaG1hY19hbGdvLCBzY3RwX2tleV90ICprZXksCiAgICAgdWludDhfdCAq
dGV4dCwgdWludDMyX3QgdGV4dGxlbiwgdWludDhfdCAqZGlnZXN0KTsKIGV4dGVybiBpbnQgc2N0
cF9hdXRoX2lzX3N1cHBvcnRlZF9obWFjKHNjdHBfaG1hY2xpc3RfdCAqbGlzdCwgdWludDE2X3Qg
aWQpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5j
CShyZXZpc2lvbiAyNTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9i
c2RfYWRkci5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0Zy
ZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYyAzMzM4MTMgMjAxOC0wNS0xOCAyMDoxMzozNFog
bW1hY3kgJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYnNk
X2FkZHIuYyAzNTgwODAgMjAyMC0wMi0xOCAxOTo0MTo1NVogdHVleGVuICQiKTsKICNlbmRpZgog
CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC0yMDMsNiArMjAzLDggQEAgc2N0cF9z
dGFydHVwX2l0ZXJhdG9yKHZvaWQpCiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJaWYg
KHNjdHBfdXNlcnNwYWNlX3RocmVhZF9jcmVhdGUoJnNjdHBfaXRfY3RsLnRocmVhZF9wcm9jLCAm
c2N0cF9pdGVyYXRvcl90aHJlYWQpKSB7CiAJCVNDVFBfUFJJTlRGKCJFUlJPUjogQ3JlYXRpbmcg
c2N0cF9pdGVyYXRvcl90aHJlYWQgZmFpbGVkLlxuIik7CisJfSBlbHNlIHsKKwkJU0NUUF9CQVNF
X1ZBUihpdGVyYXRvcl90aHJlYWRfc3RhcnRlZCkgPSAxOwogCX0KICNlbmRpZgogfQpAQCAtNTY5
LDYgKzU3MSw3IEBAIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlkKQogCSAqIGFueSBJ
RkEgdGhhdCBleGlzdHMgYXMgd2UgZmxvYXQgdGhyb3VnaCB0aGUKIAkgKiBsaXN0IG9mIElGQSdz
CiAJICovCisJc3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CiAJc3RydWN0IGlmbmV0ICppZm47CiAJ
c3RydWN0IGlmYWRkciAqaWZhOwogCXN0cnVjdCBzY3RwX2lmYSAqc2N0cF9pZmE7CkBAIC01Nzgs
MTIgKzU4MSwxMiBAQCBzY3RwX2luaXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKICNlbmRpZgog
CiAJSUZORVRfUkxPQ0soKTsKLQlUQUlMUV9GT1JFQUNIKGlmbiwgJk1PRFVMRV9HTE9CQUwoaWZu
ZXQpLCBpZl9saW5rKSB7CisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKwlDS19TVEFJTFFfRk9SRUFD
SChpZm4sICZNT0RVTEVfR0xPQkFMKGlmbmV0KSwgaWZfbGluaykgewogCQlpZiAoc2N0cF9pc19k
ZXNpcmVkX2ludGVyZmFjZV90eXBlKGlmbikgPT0gMCkgewogCQkJLyogbm9uIGRlc2lyZWQgdHlw
ZSAqLwogCQkJY29udGludWU7CiAJCX0KLQkJSUZfQUREUl9STE9DSyhpZm4pOwogCQlDS19TVEFJ
TFFfRk9SRUFDSChpZmEsICZpZm4tPmlmX2FkZHJoZWFkLCBpZmFfbGluaykgewogCQkJaWYgKGlm
YS0+aWZhX2FkZHIgPT0gTlVMTCkgewogCQkJCWNvbnRpbnVlOwpAQCAtNjM2LDggKzYzOSw4IEBA
IHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlkKQogCQkJCXNjdHBfaWZhLT5sb2NhbGlm
YV9mbGFncyAmPSB+U0NUUF9BRERSX0RFRkVSX1VTRTsKIAkJCX0KIAkJfQotCQlJRl9BRERSX1JV
TkxPQ0soaWZuKTsKIAl9CisJTkVUX0VQT0NIX0VYSVQoZXQpOwogCUlGTkVUX1JVTkxPQ0soKTsK
IH0KICNlbmRpZgpAQCAtNzQxLDIxICs3NDQsOCBAQCBzY3RwX2FkZHJfY2hhbmdlKHN0cnVjdCBp
ZmFkZHIgKmlmYSwgaW50CiAKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQogdm9pZAotc2N0cF9h
ZGRfb3JfZGVsX2ludGVyZmFjZXMoaW50ICgqcHJlZCkoc3RydWN0IGlmbmV0ICopLCBpbnQgYWRk
KQotewotCXN0cnVjdCBpZm5ldCAqaWZuOwotCXN0cnVjdCBpZmFkZHIgKmlmYTsKLQotCUlGTkVU
X1JMT0NLKCk7Ci0JVEFJTFFfRk9SRUFDSChpZm4sICZNT0RVTEVfR0xPQkFMKGlmbmV0KSwgaWZf
bGluaykgewotCQlpZiAoISgqcHJlZCkoaWZuKSkgewotCQkJY29udGludWU7Ci0JCX0KLQkJQ0tf
U1RBSUxRX0ZPUkVBQ0goaWZhLCAmaWZuLT5pZl9hZGRyaGVhZCwgaWZhX2xpbmspIHsKLQkJCXNj
dHBfYWRkcl9jaGFuZ2UoaWZhLCBhZGQgPyBSVE1fQUREIDogUlRNX0RFTEVURSk7Ci0JCX0KLQl9
Ci0JSUZORVRfUlVOTE9DSygpOworc2N0cF9hZGRyX2NoYW5nZV9ldmVudF9oYW5kbGVyKHZvaWQg
KmFyZyBfX3VudXNlZCwgc3RydWN0IGlmYWRkciAqaWZhLCBpbnQgY21kKSB7CisJc2N0cF9hZGRy
X2NoYW5nZShpZmEsIGNtZCk7CiB9CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuaAkocmV2aXNp
b24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18K
ICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0
aW5ldC9zY3RwX2JzZF9hZGRyLmggMzEwNTkwIDIwMTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAk
Iik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2RfYWRkci5o
IDM1MzQ4MCAyMDE5LTEwLTEzIDE4OjE3OjA4WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5k
ZWYgX05FVElORVRfU0NUUF9CU0RfQUREUl9IXwpAQCAtNjQsNiArNjQsMTAgQEAgaW50IHNjdHBf
Y29weV9vdXRfcGFja2V0X2xvZyh1aW50OF90ICp0YQogI2lmICFkZWZpbmVkKF9fUGFuZGFfXykK
IHZvaWQgc2N0cF9hZGRyX2NoYW5nZShzdHJ1Y3QgaWZhZGRyICppZmEsIGludCBjbWQpOwogI2Vu
ZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwordm9pZCBzY3RwX2FkZHJfY2hhbmdlX2V2
ZW50X2hhbmRsZXIodm9pZCAqLCBzdHJ1Y3QgaWZhZGRyICosIGludCk7CisjZW5kaWYKIAogdm9p
ZCBzY3RwX2FkZF9vcl9kZWxfaW50ZXJmYWNlcyhpbnQgKCpwcmVkKShzdHJ1Y3QgaWZuZXQgKiks
IGludCBhZGQpOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxs
b3V0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2Fs
bG91dC5jCShyZXZpc2lvbiAyNTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9jYWxsb3V0LmMJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxMyBAQAogICogQ2Fs
bG91dC9UaW1lciByb3V0aW5lcyBmb3IgT1MgdGhhdCBkb2Vzbid0IGhhdmUgdGhlbQogICovCiAj
aWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLXN0YXRpYyBp
bnQgdGlja3MgPSAwOworc3RhdGljIHVpbnQzMl90IHRpY2tzID0gMDsKICNlbHNlCiBleHRlcm4g
aW50IHRpY2tzOwogI2VuZGlmCiAKLWludCBzY3RwX2dldF90aWNrX2NvdW50KHZvaWQpIHsKLQlp
bnQgcmV0OwordWludDMyX3Qgc2N0cF9nZXRfdGlja19jb3VudCh2b2lkKSB7CisJdWludDMyX3Qg
cmV0OwogCiAJU0NUUF9USU1FUlFfTE9DSygpOwogCXJldCA9IHRpY2tzOwpAQCAtODYsMTcgKzg2
LDIwIEBAIHNjdHBfb3NfdGltZXJfaW5pdChzY3RwX29zX3RpbWVyX3QgKmMpCiAJbWVtc2V0KGMs
IDAsIHNpemVvZigqYykpOwogfQogCi12b2lkCi1zY3RwX29zX3RpbWVyX3N0YXJ0KHNjdHBfb3Nf
dGltZXJfdCAqYywgaW50IHRvX3RpY2tzLCB2b2lkICgqZnRuKSAodm9pZCAqKSwKK2ludAorc2N0
cF9vc190aW1lcl9zdGFydChzY3RwX29zX3RpbWVyX3QgKmMsIHVpbnQzMl90IHRvX3RpY2tzLCB2
b2lkICgqZnRuKSAodm9pZCAqKSwKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKQogewor
CWludCByZXQgPSAwOworCiAJLyogcGFyYW5vaWEgKi8KIAlpZiAoKGMgPT0gTlVMTCkgfHwgKGZ0
biA9PSBOVUxMKSkKLQkgICAgcmV0dXJuOworCQlyZXR1cm4gKHJldCk7CiAKIAlTQ1RQX1RJTUVS
UV9MT0NLKCk7CiAJLyogY2hlY2sgdG8gc2VlIGlmIHdlJ3JlIHJlc2NoZWR1bGluZyBhIHRpbWVy
ICovCiAJaWYgKGMtPmNfZmxhZ3MgJiBTQ1RQX0NBTExPVVRfUEVORElORykgeworCQlyZXQgPSAx
OwogCQlpZiAoYyA9PSBzY3RwX29zX3RpbWVyX25leHQpIHsKIAkJCXNjdHBfb3NfdGltZXJfbmV4
dCA9IFRBSUxRX05FWFQoYywgdHFlKTsKIAkJfQpAQCAtMTEzLDcgKzExNiw3IEBAIHNjdHBfb3Nf
dGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICpjLCAKIAkgKiBXZSBjb3VsZCB1bmxvY2svc3Bs
eCBoZXJlIGFuZCBsb2NrL3NwbCBhdCB0aGUgVEFJTFFfSU5TRVJUX1RBSUwsCiAJICogYnV0IHRo
ZXJlJ3Mgbm8gcG9pbnQgc2luY2UgZG9pbmcgdGhpcyBzZXR1cCBkb2Vzbid0IHRha2UgbXVjaCB0
aW1lLgogCSAqLwotCWlmICh0b190aWNrcyA8PSAwKQorCWlmICh0b190aWNrcyA9PSAwKQogCQl0
b190aWNrcyA9IDE7CiAKIAljLT5jX2FyZyA9IGFyZzsKQEAgLTEyMiw2ICsxMjUsNyBAQCBzY3Rw
X29zX3RpbWVyX3N0YXJ0KHNjdHBfb3NfdGltZXJfdCAqYywgCiAJYy0+Y190aW1lID0gdGlja3Mg
KyB0b190aWNrczsKIAlUQUlMUV9JTlNFUlRfVEFJTCgmU0NUUF9CQVNFX0lORk8oY2FsbHF1ZXVl
KSwgYywgdHFlKTsKIAlTQ1RQX1RJTUVSUV9VTkxPQ0soKTsKKwlyZXR1cm4gKHJldCk7CiB9CiAK
IGludApAQCAtMTQ1LDggKzE0OSw4IEBAIHNjdHBfb3NfdGltZXJfc3RvcChzY3RwX29zX3RpbWVy
X3QgKmMpCiAJcmV0dXJuICgxKTsKIH0KIAotc3RhdGljIHZvaWQKLXNjdHBfaGFuZGxlX3RpY2so
aW50IGRlbHRhKQordm9pZAorc2N0cF9oYW5kbGVfdGljayh1aW50MzJfdCBlbGFwc2VkX3RpY2tz
KQogewogCXNjdHBfb3NfdGltZXJfdCAqYzsKIAl2b2lkICgqY19mdW5jKSh2b2lkICopOwpAQCAt
MTU0LDEwICsxNTgsMTAgQEAgc2N0cF9oYW5kbGVfdGljayhpbnQgZGVsdGEpCiAKIAlTQ1RQX1RJ
TUVSUV9MT0NLKCk7CiAJLyogdXBkYXRlIG91ciB0aWNrIGNvdW50ICovCi0JdGlja3MgKz0gZGVs
dGE7CisJdGlja3MgKz0gZWxhcHNlZF90aWNrczsKIAljID0gVEFJTFFfRklSU1QoJlNDVFBfQkFT
RV9JTkZPKGNhbGxxdWV1ZSkpOwogCXdoaWxlIChjKSB7Ci0JCWlmIChjLT5jX3RpbWUgPD0gdGlj
a3MpIHsKKwkJaWYgKFNDVFBfVUlOVDMyX0dFKHRpY2tzLCBjLT5jX3RpbWUpKSB7CiAJCQlzY3Rw
X29zX3RpbWVyX25leHQgPSBUQUlMUV9ORVhUKGMsIHRxZSk7CiAJCQlUQUlMUV9SRU1PVkUoJlND
VFBfQkFTRV9JTkZPKGNhbGxxdWV1ZSksIGMsIHRxZSk7CiAJCQljX2Z1bmMgPSBjLT5jX2Z1bmM7
CkBAIC0xOTUsMTEgKzE5OSwxMyBAQCB1c2VyX3NjdHBfdGltZXJfaXRlcmF0ZSh2b2lkICphcmcp
CiAjaWYgZGVmaW5lZCAoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKIAkJU2xlZXAoVElNRU9VVF9J
TlRFUlZBTCk7CiAjZWxzZQotCQlzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworCQlzdHJ1Y3QgdGlt
ZXNwZWMgYW1vdW50LCByZW1haW5pbmc7CiAKLQkJdGltZW91dC50dl9zZWMgID0gMDsKLQkJdGlt
ZW91dC50dl91c2VjID0gMTAwMCAqIFRJTUVPVVRfSU5URVJWQUw7Ci0JCXNlbGVjdCgwLCBOVUxM
LCBOVUxMLCBOVUxMLCAmdGltZW91dCk7CisJCXJlbWFpbmluZy50dl9zZWMgPSAwOworCQlyZW1h
aW5pbmcudHZfbnNlYyA9IFRJTUVPVVRfSU5URVJWQUwgKiAxMDAwICogMTAwMDsKKwkJZG8gewor
CQkJYW1vdW50ID0gcmVtYWluaW5nOworCQl9IHdoaWxlIChuYW5vc2xlZXAoJmFtb3VudCwgJnJl
bWFpbmluZykgPT0gLTEpOwogI2VuZGlmCiAJCWlmIChhdG9taWNfY21wc2V0X2ludCgmU0NUUF9C
QVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQpLCAxLCAxKSkgewogCQkJYnJlYWs7CkBA
IC0yMjEsNiArMjI3LDggQEAgc2N0cF9zdGFydF90aW1lcih2b2lkKQogCXJjID0gc2N0cF91c2Vy
c3BhY2VfdGhyZWFkX2NyZWF0ZSgmU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCB1c2VyX3Nj
dHBfdGltZXJfaXRlcmF0ZSk7CiAJaWYgKHJjKSB7CiAJCVNDVFBfUFJJTlRGKCJFUlJPUjsgcmV0
dXJuIGNvZGUgZnJvbSBzY3RwX3RocmVhZF9jcmVhdGUoKSBpcyAlZFxuIiwgcmMpOworCX0gZWxz
ZSB7CisJCVNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkX3N0YXJ0ZWQpID0gMTsKIAl9CiB9CiAK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxvdXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jYWxsb3V0LmgJKHJldmlz
aW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NhbGxvdXQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTMgKzcxLDEzIEBAIF9fRkJTRElEKCIkRnJlZUJTRCQi
KTsKICNlbmRpZgogI2VuZGlmCiAKLWludCBzY3RwX2dldF90aWNrX2NvdW50KHZvaWQpOwordWlu
dDMyX3Qgc2N0cF9nZXRfdGlja19jb3VudCh2b2lkKTsKIAogVEFJTFFfSEVBRChjYWxsb3V0bGlz
dCwgc2N0cF9jYWxsb3V0KTsKIAogc3RydWN0IHNjdHBfY2FsbG91dCB7CiAJVEFJTFFfRU5UUlko
c2N0cF9jYWxsb3V0KSB0cWU7Ci0JaW50IGNfdGltZTsJCS8qIHRpY2tzIHRvIHRoZSBldmVudCAq
LworCXVpbnQzMl90IGNfdGltZTsJCS8qIHRpY2tzIHRvIHRoZSBldmVudCAqLwogCXZvaWQgKmNf
YXJnOwkJLyogZnVuY3Rpb24gYXJndW1lbnQgKi8KIAl2b2lkICgqY19mdW5jKSh2b2lkICopOwkv
KiBmdW5jdGlvbiB0byBjYWxsICovCiAJaW50IGNfZmxhZ3M7CQkvKiBzdGF0ZSBvZiB0aGlzIGVu
dHJ5ICovCkBAIC04OCw4ICs4OCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBzY3RwX2NhbGxvdXQgc2N0
cF9vc190aW1lCiAjZGVmaW5lCVNDVFBfQ0FMTE9VVF9QRU5ESU5HCTB4MDAwNAkvKiBjYWxsb3V0
IGlzIHdhaXRpbmcgZm9yIHRpbWVvdXQgKi8KIAogdm9pZCBzY3RwX29zX3RpbWVyX2luaXQoc2N0
cF9vc190aW1lcl90ICp0bXIpOwotdm9pZCBzY3RwX29zX3RpbWVyX3N0YXJ0KHNjdHBfb3NfdGlt
ZXJfdCAqLCBpbnQsIHZvaWQgKCopKHZvaWQgKiksIHZvaWQgKik7CisvKiBSZXR1cm5zIDEgaWYg
cGVuZGluZyB0aW1lciB3YXMgcmVzY2hlZHVsZWQsIDAgb3RoZXJ3aXNlLiAqLworaW50IHNjdHBf
b3NfdGltZXJfc3RhcnQoc2N0cF9vc190aW1lcl90ICosIHVpbnQzMl90LCB2b2lkICgqKSh2b2lk
ICopLCB2b2lkICopOworLyogUmV0dXJucyAxIGlmIHBlbmRpbmcgdGltZXIgd2FzIHN0b3BwZWQs
IDAgb3RoZXJ3aXNlLiAqLwogaW50IHNjdHBfb3NfdGltZXJfc3RvcChzY3RwX29zX3RpbWVyX3Qg
Kik7Cit2b2lkIHNjdHBfaGFuZGxlX3RpY2sodWludDMyX3QpOwogCiAjZGVmaW5lIFNDVFBfT1Nf
VElNRVJfSU5JVAlzY3RwX29zX3RpbWVyX2luaXQKICNkZWZpbmUgU0NUUF9PU19USU1FUl9TVEFS
VAlzY3RwX29zX3RpbWVyX3N0YXJ0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9jY19mdW5jdGlvbnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9jY19mdW5jdGlvbnMuYwkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY2NfZnVuY3Rpb25zLmMJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZz
Lmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jY19mdW5jdGlv
bnMuYyAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jIDM1NjY2MCAyMDIw
LTAxLTEyIDE1OjQ1OjI3WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0
L3NjdHBfb3MuaD4KQEAgLTUwLDggKzUwLDggQEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5
cy9uZXRpbmV0L3NjdAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF90aW1lci5oPgogI2luY2x1ZGUg
PG5ldGluZXQvc2N0cF9hdXRoLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2FzY29uZi5oPgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMzAwMAot
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9kdHJhY2VfZGVjbGFyZS5oPgorI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2tkdHJhY2UuaD4KICNlbmRpZgogCiAj
ZGVmaW5lIFNISUZUX01QVENQX01VTFRJX04gNDAKQEAgLTE5NjIsNyArMTk2Miw3IEBAIGh0Y3Bf
Y29uZ190aW1lKHN0cnVjdCBodGNwICpjYSkKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QKIGh0Y3Bf
Y2NvdW50KHN0cnVjdCBodGNwICpjYSkKIHsKLQlyZXR1cm4gKGh0Y3BfY29uZ190aW1lKGNhKS9j
YS0+bWluUlRUKTsKKwlyZXR1cm4gKGNhLT5taW5SVFQgPT0gMCA/IGh0Y3BfY29uZ190aW1lKGNh
KSA6IGh0Y3BfY29uZ190aW1lKGNhKS9jYS0+bWluUlRUKTsKIH0KIAogc3RhdGljIGlubGluZSB2
b2lkCkBAIC0yNDEwLDcgKzI0MTAsNyBAQCBzY3RwX2h0Y3BfY3duZF91cGRhdGVfYWZ0ZXJfZWNu
X2VjaG8oc3RyCiAKIGNvbnN0IHN0cnVjdCBzY3RwX2NjX2Z1bmN0aW9ucyBzY3RwX2NjX2Z1bmN0
aW9uc1tdID0gewogewotI2lmIGRlZmluZWQoX19XaW5kb3dzX18pIHx8IGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCAoZGVmaW5lZChf
X1VzZXJzcGFjZV9vc19XaW5kb3dzKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykpCiAJc2N0cF9z
ZXRfaW5pdGlhbF9jY19wYXJhbSwKIAlzY3RwX2N3bmRfdXBkYXRlX2FmdGVyX3NhY2ssCiAJc2N0
cF9jd25kX3VwZGF0ZV9leGl0X3BmX2NvbW1vbiwKQEAgLTI0MzEsNyArMjQzMSw3IEBAIGNvbnN0
IHN0cnVjdCBzY3RwX2NjX2Z1bmN0aW9ucyBzY3RwX2NjX2YKICNlbmRpZgogfSwKIHsKLSNpZiBk
ZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisj
aWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgKGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93
cykgJiYgIWRlZmluZWQoX19NSU5HVzMyX18pKQogCXNjdHBfc2V0X2luaXRpYWxfY2NfcGFyYW0s
CiAJc2N0cF9oc19jd25kX3VwZGF0ZV9hZnRlcl9zYWNrLAogCXNjdHBfY3duZF91cGRhdGVfZXhp
dF9wZl9jb21tb24sCkBAIC0yNDUyLDcgKzI0NTIsNyBAQCBjb25zdCBzdHJ1Y3Qgc2N0cF9jY19m
dW5jdGlvbnMgc2N0cF9jY19mCiAjZW5kaWYKIH0sCiB7Ci0jaWYgZGVmaW5lZChfX1dpbmRvd3Nf
XykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX19XaW5k
b3dzX18pIHx8IChkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpICYmICFkZWZpbmVkKF9f
TUlOR1czMl9fKSkKIAlzY3RwX2h0Y3Bfc2V0X2luaXRpYWxfY2NfcGFyYW0sCiAJc2N0cF9odGNw
X2N3bmRfdXBkYXRlX2FmdGVyX3NhY2ssCiAJc2N0cF9jd25kX3VwZGF0ZV9leGl0X3BmX2NvbW1v
biwKQEAgLTI0NzMsNyArMjQ3Myw3IEBAIGNvbnN0IHN0cnVjdCBzY3RwX2NjX2Z1bmN0aW9ucyBz
Y3RwX2NjX2YKICNlbmRpZgogfSwKIHsKLSNpZiBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWYgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwg
KGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykgJiYgIWRlZmluZWQoX19NSU5HVzMyX18p
KQogCXNjdHBfc2V0X3J0Y2NfaW5pdGlhbF9jY19wYXJhbSwKIAlzY3RwX2N3bmRfdXBkYXRlX3J0
Y2NfYWZ0ZXJfc2FjaywKIAlzY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGZfY29tbW9uLApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY29uc3RhbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY29uc3RhbnRzLmgJKHJldmlzaW9u
IDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NvbnN0YW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfY29uc3RhbnRzLmggMzI4NDc4IDIwMTgtMDEtMjcgMTM6NDY6NTVaIHR1ZXhlbiAk
Iik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jb25zdGFudHMu
aCAzNTgxNjkgMjAyMC0wMi0yMCAxNTozNzo0NFogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZu
ZGVmIF9ORVRJTkVUX1NDVFBfQ09OU1RBTlRTX0hfCkBAIC00NzgsMTAgKzQ3OCwxNCBAQCBleHRl
cm4gdm9pZCBnZXR3aW50aW1lb2ZkYXkoc3RydWN0IHRpbWV2CiAjZGVmaW5lIFNDVFBfU1RBVEVf
SU5fQUNDRVBUX1FVRVVFICAgICAgMHgxMDAwCiAjZGVmaW5lIFNDVFBfU1RBVEVfTUFTSwkJCTB4
MDA3ZgogCi0jZGVmaW5lIFNDVFBfR0VUX1NUQVRFKGFzb2MpCSgoYXNvYyktPnN0YXRlICYgU0NU
UF9TVEFURV9NQVNLKQotI2RlZmluZSBTQ1RQX1NFVF9TVEFURShhc29jLCBuZXdzdGF0ZSkgICgo
YXNvYyktPnN0YXRlID0gKChhc29jKS0+c3RhdGUgJiB+U0NUUF9TVEFURV9NQVNLKSB8ICBuZXdz
dGF0ZSkKLSNkZWZpbmUgU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBzdWJzdGF0ZSkgKChhc29j
KS0+c3RhdGUgJj0gfnN1YnN0YXRlKQotI2RlZmluZSBTQ1RQX0FERF9TVUJTVEFURShhc29jLCBz
dWJzdGF0ZSkgKChhc29jKS0+c3RhdGUgfD0gc3Vic3RhdGUpCisjZGVmaW5lIFNDVFBfR0VUX1NU
QVRFKF9zdGNiKSBcCisJKChfc3RjYiktPmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX01BU0spCisj
ZGVmaW5lIFNDVFBfU0VUX1NUQVRFKF9zdGNiLCBfc3RhdGUpIFwKKwlzY3RwX3NldF9zdGF0ZShf
c3RjYiwgX3N0YXRlKQorI2RlZmluZSBTQ1RQX0NMRUFSX1NVQlNUQVRFKF9zdGNiLCBfc3Vic3Rh
dGUpIFwKKwkoX3N0Y2IpLT5hc29jLnN0YXRlICY9IH4oX3N1YnN0YXRlKQorI2RlZmluZSBTQ1RQ
X0FERF9TVUJTVEFURShfc3RjYiwgX3N1YnN0YXRlKSBcCisJc2N0cF9hZGRfc3Vic3RhdGUoX3N0
Y2IsIF9zdWJzdGF0ZSkKIAogLyogU0NUUCByZWFjaGFiaWxpdHkgc3RhdGUgZm9yIGVhY2ggYWRk
cmVzcyAqLwogI2RlZmluZSBTQ1RQX0FERFJfUkVBQ0hBQkxFCQkweDAwMQpAQCAtNTQ3LDE0ICs1
NTEsMTMgQEAgZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldgogI2RlZmlu
ZSBTQ1RQX1RJTUVSX1RZUEVfQVNDT05GCQkxMAogI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfU0hV
VERPV05HVUFSRAkxMQogI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFCTEyCi0jZGVm
aW5lIFNDVFBfVElNRVJfVFlQRV9FVkVOVFdBS0UJMTMKLSNkZWZpbmUgU0NUUF9USU1FUl9UWVBF
X1NUUlJFU0VUICAgICAgICAxNAotI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTCAgICAg
ICAgIDE1Ci0jZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9BU09DS0lMTCAgICAgICAgMTYKLSNkZWZp
bmUgU0NUUF9USU1FUl9UWVBFX0FERFJfV1EgICAgICAgICAxNwotI2RlZmluZSBTQ1RQX1RJTUVS
X1RZUEVfUFJJTV9ERUxFVEVEICAgIDE4CisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9TVFJSRVNF
VAkxMworI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfSU5QS0lMTAkJMTQKKyNkZWZpbmUgU0NUUF9U
SU1FUl9UWVBFX0FTT0NLSUxMCTE1CisjZGVmaW5lIFNDVFBfVElNRVJfVFlQRV9BRERSX1dRCQkx
NgorI2RlZmluZSBTQ1RQX1RJTUVSX1RZUEVfUFJJTV9ERUxFVEVECTE3CiAvKiBhZGQgbmV3IHRp
bWVycyBoZXJlIC0gYW5kIGluY3JlbWVudCBMQVNUICovCi0jZGVmaW5lIFNDVFBfVElNRVJfVFlQ
RV9MQVNUICAgICAgICAgICAgMTkKKyNkZWZpbmUgU0NUUF9USU1FUl9UWVBFX0xBU1QJCTE4CiAK
ICNkZWZpbmUgU0NUUF9JU19USU1FUl9UWVBFX1ZBTElEKHQpCSgoKHQpID4gU0NUUF9USU1FUl9U
WVBFX05PTkUpICYmIFwKIAkJCQkJICgodCkgPCBTQ1RQX1RJTUVSX1RZUEVfTEFTVCkpCkBAIC04
MjMsNyArODI2LDcgQEAgZXh0ZXJuIHZvaWQgZ2V0d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldgog
I2RlZmluZSBTQ1RQX0xPQ18zMyAweDAwMDAwMDIxCiAjZGVmaW5lIFNDVFBfTE9DXzM0IDB4MDAw
MDAwMjIKICNkZWZpbmUgU0NUUF9MT0NfMzUgMHgwMDAwMDAyMwotCisjZGVmaW5lIFNDVFBfTE9D
XzM2IDB4MDAwMDAwMjQKIAogLyogRnJlZSBhc3NvYyBjb2RlcyAqLwogI2RlZmluZSBTQ1RQX05P
Uk1BTF9QUk9DICAgICAgMApAQCAtMTAwNCw2ICsxMDA3LDkgQEAgZXh0ZXJuIHZvaWQgZ2V0d2lu
dGltZW9mZGF5KHN0cnVjdCB0aW1ldgogICAgICgoKCh1aW50OF90ICopJihhKS0+c19hZGRyKVsw
XSA9PSAxNjkpICYmIFwKICAgICAgKCgodWludDhfdCAqKSYoYSktPnNfYWRkcilbMV0gPT0gMjU0
KSkKIAorLyogTWF4aW11bSBzaXplIG9mIG9wdHZhbCBmb3IgSVBQUk9UT19TQ1RQIGxldmVsIHNv
Y2tldCBvcHRpb25zLiAqLworI2RlZmluZSBTQ1RQX1NPQ0tFVF9PUFRJT05fTElNSVQgKDY0ICog
MTAyNCkKKwogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX1dpbmRvd3MpCiAjZGVmaW5lIFNDVFBfR0VUVElNRV9USU1FVkFMKHgpCWdldHdpbnRp
bWVvZmRheSh4KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5j
CShyZXZpc2lvbiAyNTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9j
cmMzMi5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTMgQEAKIAogI2lmZGVmIF9fRnJl
ZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9jcmMzMi5jIDMyNzIwMCAyMDE3LTEyLTI2IDEyOjM1OjAyWiB0dWV4
ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIu
YyAzNTIzNjEgMjAxOS0wOS0xNSAxODoyOTo0NVogdHVleGVuICQiKTsKIAogI2luY2x1ZGUgIm9w
dF9zY3RwLmgiCiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2luY2x1ZGUgPHN5cy9nc2Jf
Y3JjMzIuaD4KKyNlbmRpZgogI2lmZGVmIFNDVFAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3Mu
aD4KICNpbmNsdWRlIDxuZXRpbmV0L3NjdHAuaD4KQEAgLTgxMiwxNyArODE1LDE3IEBAIHNjdHBf
ZGVsYXllZF9ja3N1bShzdHJ1Y3QgbWJ1ZiAqbSwgdWludDMKIAlTQ1RQX1NUQVRfSU5DUihzY3Rw
c19zZW5kc3djcmMpOwogCW9mZnNldCArPSBvZmZzZXRvZihzdHJ1Y3Qgc2N0cGhkciwgY2hlY2tz
dW0pOwogCi0JaWYgKG9mZnNldCArIHNpemVvZih1aW50MzJfdCkgPiAodWludDMyX3QpKG0tPm1f
bGVuKSkgeworCWlmIChvZmZzZXQgKyBzaXplb2YodWludDMyX3QpID4gKHVpbnQzMl90KShtLT5t
X3BrdGhkci5sZW4pKSB7CiAjaWZkZWYgSU5WQVJJQU5UUwotCQlwYW5pYygic2N0cF9kZWxheWVk
X2Nrc3VtKCk6IG0tPm1fbGVuOiAlZCwgb2Zmc2V0OiAldS4iLAotCQkgICAgICBtLT5tX2xlbiwg
b2Zmc2V0KTsKKwkJcGFuaWMoInNjdHBfZGVsYXllZF9ja3N1bSgpOiBtLT5tX3BrdGhkci5sZW46
ICVkLCBvZmZzZXQ6ICV1LiIsCisJCSAgICAgIG0tPm1fcGt0aGRyLmxlbiwgb2Zmc2V0KTsKICNl
bHNlCi0JCVNDVFBfUFJJTlRGKCJzY3RwX2RlbGF5ZWRfY2tzdW0oKTogbS0+bV9sZW46ICVkLCBv
ZmZzZXQ6ICV1LlxuIiwKLQkJICAgICAgICAgICAgbS0+bV9sZW4sIG9mZnNldCk7CisJCVNDVFBf
UFJJTlRGKCJzY3RwX2RlbGF5ZWRfY2tzdW0oKTogbS0+bV9wa3RoZHIubGVuOiAlZCwgb2Zmc2V0
OiAldS5cbiIsCisJCSAgICAgICAgICAgIG0tPm1fcGt0aGRyLmxlbiwgb2Zmc2V0KTsKICNlbmRp
ZgogCQlyZXR1cm47CiAJfQotCSoodWludDMyX3QgKikobS0+bV9kYXRhICsgb2Zmc2V0KSA9IGNo
ZWNrc3VtOworCW1fY29weWJhY2sobSwgKGludClvZmZzZXQsIChpbnQpc2l6ZW9mKHVpbnQzMl90
KSwgKGNhZGRyX3QpJmNoZWNrc3VtKTsKIH0KICNlbmRpZgogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuYwkocmV2aXNpb24gMjU4NjA4KQorKysg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmMJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2Nk
ZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbmRhdGEu
YyAzMzM5NzkgMjAxOC0wNS0yMSAxNDo1MToyMFogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJl
ZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2luZGF0YS5jIDM1NzcwNSAyMDIwLTAyLTA5IDIy
OjA1OjQxWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3Mu
aD4KQEAgLTQ3Niw3ICs0NzYsNyBAQCBzY3RwX2Fib3J0X2luX3JlYXNtKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjCiBzdGF0aWMgdm9pZAogc2N0cF9jbGVhbl91cF9jb250cm9sKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wpCiB7Ci0JLyogCisJ
LyoKIAkgKiBUaGUgY29udHJvbCBjb3VsZCBub3QgYmUgcGxhY2VkIGFuZCBtdXN0IGJlIGNsZWFu
ZWQuCiAJICovCiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrLCAqbmNoazsKQEAgLTQ4Nyw3
ICs0ODcsMTIgQEAgc2N0cF9jbGVhbl91cF9jb250cm9sKHN0cnVjdCBzY3RwX3RjYiAqcwogCQlj
aGstPmRhdGEgPSBOVUxMOwogCQlzY3RwX2ZyZWVfYV9jaHVuayhzdGNiLCBjaGssIFNDVFBfU09f
Tk9UX0xPQ0tFRCk7CiAJfQotCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2IsIGNvbnRyb2wpOwkKKwlz
Y3RwX2ZyZWVfcmVtb3RlX2FkZHIoY29udHJvbC0+d2hvRnJvbSk7CisJaWYgKGNvbnRyb2wtPmRh
dGEpIHsKKwkJc2N0cF9tX2ZyZWVtKGNvbnRyb2wtPmRhdGEpOworCQljb250cm9sLT5kYXRhID0g
TlVMTDsKKwl9CisJc2N0cF9mcmVlX2FfcmVhZHEoc3RjYiwgY29udHJvbCk7CiB9CiAKIC8qCkBA
IC03MjYsNiArNzMxLDcgQEAgc2N0cF9hZGRfdG9fdGFpbF9wb2ludGVyKHN0cnVjdCBzY3RwX3F1
ZQogCX0KIAlpZiAoY29udHJvbC0+dGFpbF9tYnVmID09IE5VTEwpIHsKIAkJLyogVFNOSCAqLwor
CQlzY3RwX21fZnJlZW0oY29udHJvbC0+ZGF0YSk7CiAJCWNvbnRyb2wtPmRhdGEgPSBtOwogCQlz
Y3RwX3NldHVwX3RhaWxfcG9pbnRlcihjb250cm9sKTsKIAkJcmV0dXJuOwpAQCAtNzY0LDcgKzc3
MCw3IEBAIHNjdHBfYWRkX3RvX3RhaWxfcG9pbnRlcihzdHJ1Y3Qgc2N0cF9xdWUKIAl9CiB9CiAK
LXN0YXRpYyB2b2lkIAorc3RhdGljIHZvaWQKIHNjdHBfYnVpbGRfcmVhZHFfZW50cnlfZnJvbV9j
dGwoc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKm5jLCBzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9f
cmVhZCAqY29udHJvbCkKIHsKIAltZW1zZXQobmMsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0cF9xdWV1
ZWRfdG9fcmVhZCkpOwpAQCAtNzg2LDEzICs3OTIsMTMgQEAgc2N0cF9idWlsZF9yZWFkcV9lbnRy
eV9mcm9tX2N0bChzdHJ1Y3QgcwogCW5jLT5wb3J0X2Zyb20gPSBjb250cm9sLT5wb3J0X2Zyb207
CiB9CiAKLXN0YXRpYyB2b2lkIAorc3RhdGljIHZvaWQKIHNjdHBfcmVzZXRfYV9jb250cm9sKHN0
cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sLAogICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdWludDMyX3QgdHNuKQogewogCWNvbnRyb2wtPmZzbl9p
bmNsdWRlZCA9IHRzbjsKIAlpZiAoY29udHJvbC0+b25fcmVhZF9xKSB7Ci0JCS8qIAorCQkvKgog
CQkgKiBXZSBoYXZlIHRvIHB1cmdlIGl0IGZyb20gdGhlcmUsCiAJCSAqIGhvcGVmdWxseSB0aGlz
IHdpbGwgd29yayA6LSkKIAkJICovCkBAIC04NDgsNyArODU0LDcgQEAgcmVzdGFydDoKIAkJCWlm
IChjb250cm9sLT5lbmRfYWRkZWQpIHsKIAkJCQkvKiBXZSBhcmUgZG9uZSAqLwogCQkJCWlmICgh
VEFJTFFfRU1QVFkoJmNvbnRyb2wtPnJlYXNtKSkgewotCQkJCQkvKiAKKwkJCQkJLyoKIAkJCQkJ
ICogT2sgd2UgaGF2ZSB0byBtb3ZlIGFueXRoaW5nIGxlZnQgb24KIAkJCQkJICogdGhlIGNvbnRy
b2wgcXVldWUgdG8gYSBuZXcgY29udHJvbC4KIAkJCQkJICovCkBAIC05MjgsNiArOTM0LDEyIEBA
IHJlc3RhcnQ6CiAJCQlicmVhazsKIAkJfQogCX0KKwlpZiAoY250X2FkZGVkICYmIHN0cm0tPnBk
X2FwaV9zdGFydGVkKSB7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlzY3RwX2ludm9r
ZV9yZWN2X2NhbGxiYWNrKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGNvbnRyb2wsIFNDVFBfUkVBRF9M
T0NLX05PVF9IRUxEKTsKKyNlbmRpZgorCQlzY3RwX3dha2V1cF90aGVfcmVhZF9zb2NrZXQoc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwl9CiAJaWYgKChjb250cm9s
LT5sZW5ndGggPiBwZF9wb2ludCkgJiYgKHN0cm0tPnBkX2FwaV9zdGFydGVkID09IDApKSB7CiAJ
CXN0cm0tPnBkX2FwaV9zdGFydGVkID0gMTsKIAkJY29udHJvbC0+cGRhcGlfc3RhcnRlZCA9IDE7
CkBAIC05NTksNiArOTcxLDE2IEBAIHNjdHBfaW5qZWN0X29sZF91bm9yZGVyZWRfZGF0YShzdHJ1
Y3Qgc2MKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCSJjaHVuayBpcyBhIGZpcnN0IGZz
bjogJXUgYmVjb21lcyBmc25faW5jbHVkZWRcbiIsCiAJCQljaGstPnJlYy5kYXRhLmZzbik7CisJ
CWF0ID0gVEFJTFFfRklSU1QoJmNvbnRyb2wtPnJlYXNtKTsKKwkJaWYgKGF0ICYmIFNDVFBfVFNO
X0dUKGNoay0+cmVjLmRhdGEuZnNuLCBhdC0+cmVjLmRhdGEuZnNuKSkgeworCQkJLyoKKwkJCSAq
IFRoZSBmaXJzdCBjaHVuayBpbiB0aGUgcmVhc3NlbWJseSBpcworCQkJICogYSBzbWFsbGVyIFRT
TiB0aGFuIHRoaXMgb25lLCBldmVuIHRob3VnaAorCQkJICogdGhpcyBoYXMgYSBmaXJzdCwgaXQg
bXVzdCBiZSBmcm9tIGEgc3Vic2VxdWVudAorCQkJICogbXNnLgorCQkJICovCisJCQlnb3RvIHBs
YWNlX2NodW5rOworCQl9CiAJCWlmIChjb250cm9sLT5maXJzdF9mcmFnX3NlZW4pIHsKIAkJCS8q
CiAJCQkgKiBJbiBvbGQgdW4tb3JkZXJlZCB3ZSBjYW4gcmVhc3NlbWJseSBvbgpAQCAtOTc1LDcg
Kzk5Nyw3IEBAIHNjdHBfaW5qZWN0X29sZF91bm9yZGVyZWRfZGF0YShzdHJ1Y3Qgc2MKIAkJCX0K
IAkJCWlmICgoY2hrLT5yZWMuZGF0YS5mc24gPT0gY29udHJvbC0+ZnNuX2luY2x1ZGVkKSB8fAog
CQkJICAgIChjb250cm9sLT5wZGFwaV9zdGFydGVkKSkgewotCQkJCS8qIAorCQkJCS8qCiAJCQkJ
ICogT2sgdGhpcyBzaG91bGQgbm90IGhhcHBlbiwgaWYgaXQgZG9lcwogCQkJCSAqIHdlIHN0YXJ0
ZWQgdGhlIHBkLWFwaSBvbiB0aGUgaGlnaGVyIFRTTiAoc2luY2UKIAkJCQkgKiB0aGUgZXF1YWxz
IHBhcnQgaXMgYSBUU04gZmFpbHVyZSBpdCBtdXN0IGJlIHRoYXQpLgpAQCAtMTA0NCw3ICsxMDY2
LDcgQEAgcGxhY2VfY2h1bms6CiAJCQlUQUlMUV9JTlNFUlRfQkVGT1JFKGF0LCBjaGssIHNjdHBf
bmV4dCk7CiAJCQlicmVhazsKIAkJfSBlbHNlIGlmIChhdC0+cmVjLmRhdGEuZnNuID09IGNoay0+
cmVjLmRhdGEuZnNuKSB7Ci0JCQkvKiAKKwkJCS8qCiAJCQkgKiBUaGV5IHNlbnQgYSBkdXBsaWNh
dGUgZnNuIG51bWJlci4gVGhpcwogCQkJICogcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuIHNpbmNl
IHRoZSBGU04gaXMKIAkJCSAqIGEgVFNOIGFuZCBpdCBzaG91bGQgaGF2ZSBiZWVuIGRyb3BwZWQg
ZWFybGllci4KQEAgLTE0NjMsOSArMTQ4NSwxOSBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNt
KHN0cnVjdCBzY3RwX3RjCiAJCQkJCSJUaGUgbGFzdCBmc24gaXMgbm93IGluIHBsYWNlIGZzbjog
JXVcbiIsCiAJCQkJCWNoay0+cmVjLmRhdGEuZnNuKTsKIAkJCQljb250cm9sLT5sYXN0X2ZyYWdf
c2VlbiA9IDE7CisJCQkJaWYgKFNDVFBfVFNOX0dUKGNvbnRyb2wtPnRvcF9mc24sIGNoay0+cmVj
LmRhdGEuZnNuKSkgeworCQkJCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLAorCQkJCQkJIk5ldyBm
c246ICV1IGlzIG5vdCBhdCB0b3BfZnNuOiAldSAtLSBhYm9ydFxuIiwKKwkJCQkJCWNoay0+cmVj
LmRhdGEuZnNuLAorCQkJCQkJY29udHJvbC0+dG9wX2Zzbik7CisJCQkJCXNjdHBfYWJvcnRfaW5f
cmVhc20oc3RjYiwgY29udHJvbCwgY2hrLAorCQkJCQkJCSAgICBhYm9ydF9mbGFnLAorCQkJCQkJ
CSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ185KTsKKwkJCQkJcmV0dXJuOwor
CQkJCX0KIAkJCX0KIAkJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQgfHwgY29udHJvbC0+Zmly
c3RfZnJhZ19zZWVuKSB7Ci0JCQkJLyogCisJCQkJLyoKIAkJCQkgKiBGb3IgSURBVEEgd2UgYWx3
YXlzIGNoZWNrIHNpbmNlIHdlIGtub3cgdGhhdAogCQkJCSAqIHRoZSBmaXJzdCBmcmFnbWVudCBp
cyAwLiBGb3Igb2xkIERBVEEgd2UgaGF2ZQogCQkJCSAqIHRvIHJlY2VpdmUgdGhlIGZpcnN0IGJl
Zm9yZSB3ZSBrbm93IHRoZSBmaXJzdCBGU04KQEAgLTE0NzUsNyArMTUwNyw3IEBAIHNjdHBfcXVl
dWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGMKIAkJCQkJLyogV2UgaGF2ZSBhbHJlYWR5
IGRlbGl2ZXJlZCB1cCB0byB0aGlzIHNvIGl0cyBhIGR1cCAqLwogCQkJCQlzY3RwX2Fib3J0X2lu
X3JlYXNtKHN0Y2IsIGNvbnRyb2wsIGNoaywKIAkJCQkJCQkgICAgYWJvcnRfZmxhZywKLQkJCQkJ
CQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfOSk7CisJCQkJCQkJICAgIFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzEwKTsKIAkJCQkJcmV0dXJuOwogCQkJCX0K
IAkJCX0KQEAgLTE0ODcsMTEgKzE1MTksMTEgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShz
dHJ1Y3Qgc2N0cF90YwogCQkJCQljaGstPnJlYy5kYXRhLmZzbiwgY29udHJvbC0+dG9wX2Zzbik7
CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNiLCBjb250cm9sLAogCQkJCQkJICAgIGNoaywg
YWJvcnRfZmxhZywKLQkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18x
MCk7CisJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTEpOwogCQkJ
CXJldHVybjsKIAkJCX0KIAkJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQgfHwgY29udHJvbC0+
Zmlyc3RfZnJhZ19zZWVuKSB7Ci0JCQkJLyogCisJCQkJLyoKIAkJCQkgKiBGb3IgSURBVEEgd2Ug
YWx3YXlzIGNoZWNrIHNpbmNlIHdlIGtub3cgdGhhdAogCQkJCSAqIHRoZSBmaXJzdCBmcmFnbWVu
dCBpcyAwLiBGb3Igb2xkIERBVEEgd2UgaGF2ZQogCQkJCSAqIHRvIHJlY2VpdmUgdGhlIGZpcnN0
IGJlZm9yZSB3ZSBrbm93IHRoZSBmaXJzdCBGU04KQEAgLTE1MDUsNyArMTUzNyw3IEBAIHNjdHBf
cXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGMKIAkJCQkJCWNoay0+cmVjLmRhdGEu
ZnNuLCBjb250cm9sLT5mc25faW5jbHVkZWQpOwogCQkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0
Y2IsIGNvbnRyb2wsIGNoaywKIAkJCQkJCQkgICAgYWJvcnRfZmxhZywKLQkJCQkJCQkgICAgU0NU
UF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTEpOworCQkJCQkJCSAgICBTQ1RQX0ZST01f
U0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMik7CiAJCQkJCXJldHVybjsKIAkJCQl9CiAJCQl9CkBA
IC0xNTE3LDEzICsxNTQ5LDEzIEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20oc3RydWN0IHNj
dHBfdGMKIAkJCQkJY29udHJvbC0+dG9wX2Zzbik7CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShz
dGNiLCBjb250cm9sLCBjaGssCiAJCQkJCQkgICAgYWJvcnRfZmxhZywKLQkJCQkJCSAgICBTQ1RQ
X0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMik7CisJCQkJCQkgICAgU0NUUF9GUk9NX1ND
VFBfSU5EQVRBICsgU0NUUF9MT0NfMTMpOwogCQkJCXJldHVybjsKIAkJCX0KIAkJfQogCQkvKgog
CQkgKiBJZiB3ZSByZWFjaCBoZXJlLCB3ZSBuZWVkIHRvIHBsYWNlIHRoZQotCQkgKiBuZXcgY2h1
bmsgaW4gdGhlIHJlYXNzZW1ibHkgZm9yIHRoaXMgCisJCSAqIG5ldyBjaHVuayBpbiB0aGUgcmVh
c3NlbWJseSBmb3IgdGhpcwogCQkgKiBjb250cm9sLgogCQkgKi8KIAkJU0NUUERCRyhTQ1RQX0RF
QlVHX1hYWCwKQEAgLTE1NTcsNyArMTU4OSw3IEBAIHNjdHBfcXVldWVfZGF0YV9mb3JfcmVhc20o
c3RydWN0IHNjdHBfdGMKIAkJCQkJYXQtPnJlYy5kYXRhLmZzbik7CiAJCQkJc2N0cF9hYm9ydF9p
bl9yZWFzbShzdGNiLCBjb250cm9sLAogCQkJCQkJICAgIGNoaywgYWJvcnRfZmxhZywKLQkJCQkJ
CSAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xMyk7CisJCQkJCQkgICAgU0NU
UF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTQpOwogCQkJCXJldHVybjsKIAkJCX0KIAkJ
fQpAQCAtMTcxMyw3ICsxNzQ1LDcgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qg
c2N0cF90YwogCQkgKiBlbXB0eSBkYXRhIGNodW5rLgogCQkgKi8KIAkJb3BfZXJyID0gc2N0cF9n
ZW5lcmF0ZV9ub191c2VyX2RhdGFfY2F1c2UodHNuKTsKLQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9h
Ym9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTQ7CisJCXN0Y2It
PnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzE1OwogCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJKmFib3J0X2ZsYWcgPSAxOwogCQlyZXR1
cm4gKDApOwpAQCAtMTgzMSw4ICsxODYzLDggQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhz
dHJ1Y3Qgc2N0cF90YwogCWlmICgoY2hrX3R5cGUgPT0gU0NUUF9JREFUQSkgJiYKIAkgICAgKChj
aGtfZmxhZ3MgJiBTQ1RQX0RBVEFfRklSU1RfRlJBRykgPT0gMCkgJiYKIAkgICAgKGZzbiA9PSAw
KSkgewotCQkvKiAKLQkJICogIFRoZSBmaXJzdCAqbXVzdCogYmUgZnNuIDAsIGFuZCBvdGhlciAK
KwkJLyoKKwkJICogIFRoZSBmaXJzdCAqbXVzdCogYmUgZnNuIDAsIGFuZCBvdGhlcgogCQkgKiAg
KG1pZGRsZS9lbmQpIHBpZWNlcyBjYW4gKm5vdCogYmUgZnNuIDAuCiAJCSAqIFhYWDogVGhpcyBj
YW4gaGFwcGVuIGluIGNhc2Ugb2YgYSB3cmFwIGFyb3VuZC4KIAkJICogICAgICBJZ25vcmUgaXMg
Zm9yIG5vdy4KQEAgLTE4NTIsNyArMTg4NCw3IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmso
c3RydWN0IHNjdHBfdGMKIAkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiUmVhc3NlbWJs
eSBwcm9ibGVtIChNSUQ9JTguOHgpIiwgbWlkKTsKIAkJCWVycl9vdXQ6CiAJCQkJb3BfZXJyID0g
c2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xBVElPTiwgbXNnKTsK
LQkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRB
VEEgKyBTQ1RQX0xPQ18xNTsKKwkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBT
Q1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNjsKIAkJCQlzY3RwX2Fib3J0X2FuX2Fz
c29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VE
KTsKIAkJCQkqYWJvcnRfZmxhZyA9IDE7CiAJCQkJcmV0dXJuICgwKTsKQEAgLTE5OTUsNyArMjAy
Nyw3IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGMKIAkJCSAgICAg
ICAgICh1aW50MTZfdCltaWQpOwogCQl9CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2Uo
U0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7Ci0JCXN0Y2ItPnNjdHBfZXAtPmxh
c3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE2OworCQlz
dGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBT
Q1RQX0xPQ18xNzsKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBz
dGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCSphYm9ydF9mbGFnID0gMTsKIAkJ
cmV0dXJuICgwKTsKQEAgLTIwNzIsMTAgKzIxMDQsMTMgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9j
aHVuayhzdHJ1Y3Qgc2N0cF90YwogCQkJc3RydWN0IG1idWYgKm1tOwogCiAJCQljb250cm9sLT5k
YXRhID0gZG1idWY7CisJCQljb250cm9sLT50YWlsX21idWYgPSBOVUxMOwogCQkJZm9yIChtbSA9
IGNvbnRyb2wtPmRhdGE7IG1tOyBtbSA9IG1tLT5tX25leHQpIHsKIAkJCQljb250cm9sLT5sZW5n
dGggKz0gU0NUUF9CVUZfTEVOKG1tKTsKKwkJCQlpZiAoU0NUUF9CVUZfTkVYVChtbSkgPT0gTlVM
TCkgeworCQkJCQljb250cm9sLT50YWlsX21idWYgPSBtbTsKKwkJCQl9CiAJCQl9Ci0JCQljb250
cm9sLT50YWlsX21idWYgPSBOVUxMOwogCQkJY29udHJvbC0+ZW5kX2FkZGVkID0gMTsKIAkJCWNv
bnRyb2wtPmxhc3RfZnJhZ19zZWVuID0gMTsKIAkJCWNvbnRyb2wtPmZpcnN0X2ZyYWdfc2VlbiA9
IDE7CkBAIC0yNTU0LDcgKzI1ODksNyBAQCBzY3RwX3NhY2tfY2hlY2soc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBpCiAJICogTm93IHdlIG5lZWQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gcXVldWUgYSBz
YWNrIG9yIGp1c3Qgc3RhcnQgdGhlCiAJICogdGltZXIgKGlmIGFsbG93ZWQpLgogCSAqLwotCWlm
IChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKKwlp
ZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CiAJ
CS8qCiAJCSAqIE9rIHNwZWNpYWwgY2FzZSwgaW4gU0hVVERPV04tU0VOVCBjYXNlLiBoZXJlIHdl
CiAJCSAqIG1ha2VyIHN1cmUgU0FDSyB0aW1lciBpcyBvZmYgYW5kIGluc3RlYWQgc2VuZCBhCkBA
IC0yNTYzLDcgKzI1OTgsNyBAQCBzY3RwX3NhY2tfY2hlY2soc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBpCiAJCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJnN0Y2ItPmFzb2MuZGFja190aW1lci50
aW1lcikpIHsKIAkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwKIAkJCSAg
ICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAotCQkJICAgICAgICAgICAg
ICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzE3KTsKKwkJCSAgICAgICAgICAg
ICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xOCk7CiAJCX0KIAkJc2N0cF9z
ZW5kX3NodXRkb3duKHN0Y2IsCiAJCSAgICAgICAgICAgICAgICAgICAoKHN0Y2ItPmFzb2MuYWx0
ZXJuYXRlKSA/IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlIDogc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3Rp
bmF0aW9uKSk7CkBAIC0yNjE0LDcgKzI2NDksOCBAQCBzY3RwX3NhY2tfY2hlY2soc3RydWN0IHNj
dHBfdGNiICpzdGNiLCBpCiAJCQkJICogZmlyc3QgcGFja2V0IE9SIHRoZXJlIGFyZSBnYXBzIG9y
CiAJCQkJICogZHVwbGljYXRlcy4KIAkJCQkgKi8KLQkJCQkodm9pZClTQ1RQX09TX1RJTUVSX1NU
T1AoJnN0Y2ItPmFzb2MuZGFja190aW1lci50aW1lcik7CisJCQkJc2N0cF90aW1lcl9zdG9wKFND
VFBfVElNRVJfVFlQRV9SRUNWLCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBOVUxMLAorCQkJCSAgICAg
ICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xOSk7CiAJCQkJc2N0
cF9zZW5kX3NhY2soc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCX0KIAkJfSBlbHNlIHsK
QEAgLTI3MTgsNyArMjc1NCw3IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoqbW0s
IGludCAKIAogCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIiVzIiwgIkktREFUQSBjaHVu
ayByZWNlaXZlZCB3aGVuIERBVEEgd2FzIG5lZ290aWF0ZWQiKTsKIAkJCW9wX2VyciA9IHNjdHBf
Z2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7Ci0JCQlz
dGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBT
Q1RQX0xPQ18xODsKKwkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJP
TV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIwOwogCQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlv
bihpbnAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCXJldHVybiAoMik7
CiAJCX0KQEAgLTI3MjksNyArMjc2NSw3IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVm
ICoqbW0sIGludCAKIAogCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIiVzIiwgIkRBVEEg
Y2h1bmsgcmVjZWl2ZWQgd2hlbiBJLURBVEEgd2FzIG5lZ290aWF0ZWQiKTsKIAkJCW9wX2VyciA9
IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7
Ci0JCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRB
VEEgKyBTQ1RQX0xPQ18xOTsKKwkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIxOwogCQkJc2N0cF9hYm9ydF9hbl9hc3Nv
Y2lhdGlvbihpbnAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCXJldHVy
biAoMik7CiAJCX0KQEAgLTI3NTQsNyArMjc5MCw3IEBAIHNjdHBfcHJvY2Vzc19kYXRhKHN0cnVj
dCBtYnVmICoqbW0sIGludCAKIAkJCQkgICAgICAgICBjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX0RB
VEEgPyAiREFUQSIgOiAiSS1EQVRBIiwKIAkJCQkgICAgICAgICBjaGtfbGVuZ3RoKTsKIAkJCQlv
cF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9O
LCBtc2cpOwotCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9T
Q1RQX0lOREFUQSArIFNDVFBfTE9DXzIwOworCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRf
Y29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIyOwogCQkJCXNjdHBfYWJv
cnRfYW5fYXNzb2NpYXRpb24oaW5wLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7
CiAJCQkJcmV0dXJuICgyKTsKIAkJCX0KQEAgLTI3NjYsNyArMjgwMiw3IEBAIHNjdHBfcHJvY2Vz
c19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCAKIAkJCX0gZWxzZSB7CiAJCQkJbGFzdF9jaHVu
ayA9IDA7CiAJCQl9Ci0JCQlpZiAoc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdGNiLCBhc29j
LCBtbSwgKm9mZnNldCwgCisJCQlpZiAoc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdGNiLCBh
c29jLCBtbSwgKm9mZnNldCwKIAkJCQkJCSAgICAgIGNoa19sZW5ndGgsIG5ldCwgaGlnaF90c24s
ICZhYm9ydF9mbGFnLCAmYnJlYWtfZmxhZywKIAkJCQkJCSAgICAgIGxhc3RfY2h1bmssIGNoLT5j
aHVua190eXBlKSkgewogCQkJCW51bV9jaHVua3MrKzsKQEAgLTI4NDEsNyArMjg3Nyw3IEBAIHNj
dHBfcHJvY2Vzc19kYXRhKHN0cnVjdCBtYnVmICoqbW0sIGludCAKIAkJCQkJc25wcmludGYobXNn
LCBzaXplb2YobXNnKSwgIkNodW5rIG9mIGxlbmd0aCAldSIsCiAJCQkJCQkgY2hrX2xlbmd0aCk7
CiAJCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9W
SU9MQVRJT04sIG1zZyk7Ci0JCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIwOworCQkJCQlzdGNiLT5zY3RwX2VwLT5s
YXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yMzsKIAkJ
CQkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihpbnAsIHN0Y2IsIG9wX2VyciwgU0NUUF9TT19O
T1RfTE9DS0VEKTsKIAkJCQkJcmV0dXJuICgyKTsKIAkJCQl9CkBAIC0yOTExLDcgKzI5NDcsNyBA
QCBzY3RwX3Byb2Nlc3NfZGF0YShzdHJ1Y3QgbWJ1ZiAqKm1tLCBpbnQgCiAJCSh2b2lkKVNDVFBf
R0VUVElNRV9USU1FVkFMKCZzdGNiLT5hc29jLnRpbWVfbGFzdF9yY3ZkKTsKIAl9CiAJLyogbm93
IHNlcnZpY2UgYWxsIG9mIHRoZSByZWFzc20gcXVldWUgaWYgbmVlZGVkICovCi0JaWYgKFNDVFBf
R0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgeworCWlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJLyogQXNz
dXJlIHRoYXQgd2UgYWNrIHJpZ2h0IGF3YXkgKi8KIAkJc3RjYi0+YXNvYy5zZW5kX3NhY2sgPSAx
OwogCX0KQEAgLTMwNTksNyArMzA5NSw3IEBAIHNjdHBfcHJvY2Vzc19zZWdtZW50X3JhbmdlKHN0
cnVjdCBzY3RwX3QKIAkJCQkJCXRwMS0+d2hvVG8tPm5ldF9hY2sgKz0gdHAxLT5zZW5kX3NpemU7
CiAJCQkJCQlpZiAodHAxLT5zbmRfY291bnQgPCAyKSB7CiAJCQkJCQkJLyotCi0JCQkJCQkJICog
VHJ1ZSBub24tcmV0cmFuc21pdGVkIGNodW5rCisJCQkJCQkJICogVHJ1ZSBub24tcmV0cmFuc21p
dHRlZCBjaHVuawogCQkJCQkJCSAqLwogCQkJCQkJCXRwMS0+d2hvVG8tPm5ldF9hY2syICs9IHRw
MS0+c2VuZF9zaXplOwogCkBAIC0zMDY3LDEzICszMTAzLDEyIEBAIHNjdHBfcHJvY2Vzc19zZWdt
ZW50X3JhbmdlKHN0cnVjdCBzY3RwX3QKIAkJCQkJCQkgKiB1cGRhdGUgUlRPIHRvbyA/CiAJCQkJ
CQkJICovCiAJCQkJCQkJaWYgKHRwMS0+ZG9fcnR0KSB7Ci0JCQkJCQkJCWlmICgqcnRvX29rKSB7
Ci0JCQkJCQkJCQl0cDEtPndob1RvLT5SVE8gPQotCQkJCQkJCQkJCXNjdHBfY2FsY3VsYXRlX3J0
byhzdGNiLAotCQkJCQkJCQkJCQkJICAgJnN0Y2ItPmFzb2MsCi0JCQkJCQkJCQkJCQkgICB0cDEt
Pndob1RvLAotCQkJCQkJCQkJCQkJICAgJnRwMS0+c2VudF9yY3ZfdGltZSwKLQkJCQkJCQkJCQkJ
CSAgIFNDVFBfUlRUX0ZST01fREFUQSk7CisJCQkJCQkJCWlmICgqcnRvX29rICYmCisJCQkJCQkJ
CSAgICBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwKKwkJCQkJCQkJICAgICAgICAgICAgICAgICAg
ICAgICAmc3RjYi0+YXNvYywKKwkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICB0cDEtPndo
b1RvLAorCQkJCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICZ0cDEtPnNlbnRfcmN2X3RpbWUs
CisJCQkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9EQVRBKSkgewog
CQkJCQkJCQkJKnJ0b19vayA9IDA7CiAJCQkJCQkJCX0KIAkJCQkJCQkJaWYgKHRwMS0+d2hvVG8t
PnJ0b19uZWVkZWQgPT0gMCkgewpAQCAtMzk3NCw3ICs0MDA5LDcgQEAgc2N0cF9leHByZXNzX2hh
bmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYgogCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAi
Q3VtIGFjayAlOC44eCBncmVhdGVyIG9yIGVxdWFsIHRoYW4gVFNOICU4Ljh4IiwKIAkJCSBjdW1h
Y2ssIHNlbmRfcyk7CiAJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9Q
Uk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7Ci0JCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29k
ZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzIxOworCQlzdGNiLT5zY3RwX2Vw
LT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNDsK
IAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIs
IFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCXJldHVybjsKIAl9CkBAIC00MDE5LDcgKzQwNTQsNyBA
QCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3RydWN0IHNjdHBfdGNiCiAJCQkJCXRwMS0+d2hv
VG8tPm5ldF9hY2sgKz0gdHAxLT5zZW5kX3NpemU7CiAJCQkJCWlmICh0cDEtPnNuZF9jb3VudCA8
IDIpIHsKIAkJCQkJCS8qCi0JCQkJCQkgKiBUcnVlIG5vbi1yZXRyYW5zbWl0ZWQKKwkJCQkJCSAq
IFRydWUgbm9uLXJldHJhbnNtaXR0ZWQKIAkJCQkJCSAqIGNodW5rCiAJCQkJCQkgKi8KIAkJCQkJ
CXRwMS0+d2hvVG8tPm5ldF9hY2syICs9CkBAIC00MDI3LDE2ICs0MDYyLDEyIEBAIHNjdHBfZXhw
cmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IKIAogCQkJCQkJLyogdXBkYXRlIFJUTyB0
b28/ICovCiAJCQkJCQlpZiAodHAxLT5kb19ydHQpIHsKLQkJCQkJCQlpZiAocnRvX29rKSB7Ci0J
CQkJCQkJCXRwMS0+d2hvVG8tPlJUTyA9Ci0JCQkJCQkJCQkvKgotCQkJCQkJCQkJICogc2FfaWdu
b3JlCi0JCQkJCQkJCQkgKiBOT19OVUxMX0NISwotCQkJCQkJCQkJICovCi0JCQkJCQkJCQlzY3Rw
X2NhbGN1bGF0ZV9ydG8oc3RjYiwKLQkJCQkJCQkJCQkJICAgYXNvYywgdHAxLT53aG9UbywKLQkJ
CQkJCQkJCQkJICAgJnRwMS0+c2VudF9yY3ZfdGltZSwKLQkJCQkJCQkJCQkJICAgU0NUUF9SVFRf
RlJPTV9EQVRBKTsKKwkJCQkJCQlpZiAocnRvX29rICYmCisJCQkJCQkJICAgIHNjdHBfY2FsY3Vs
YXRlX3J0byhzdGNiLAorCQkJCQkJCQkJICAgICAgICZzdGNiLT5hc29jLAorCQkJCQkJCQkJICAg
ICAgIHRwMS0+d2hvVG8sCisJCQkJCQkJCQkgICAgICAgJnRwMS0+c2VudF9yY3ZfdGltZSwKKwkJ
CQkJCQkJCSAgICAgICBTQ1RQX1JUVF9GUk9NX0RBVEEpKSB7CiAJCQkJCQkJCXJ0b19vayA9IDA7
CiAJCQkJCQkJfQogCQkJCQkJCWlmICh0cDEtPndob1RvLT5ydG9fbmVlZGVkID09IDApIHsKQEAg
LTQxOTcsNyArNDIyOCw3IEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90
Y2IKIAkJCQkJbmV0LT5kZXN0X3N0YXRlICY9IH5TQ1RQX0FERFJfUEY7CiAJCQkJCXNjdHBfdGlt
ZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfSEVBUlRCRUFULAogCQkJCQkgICAgICAgICAgICAgICAg
c3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0LAotCQkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjIpOworCQkJCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjUpOwogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFND
VFBfVElNRVJfVFlQRV9IRUFSVEJFQVQsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldCk7CiAJCQkJ
CWFzb2MtPmNjX2Z1bmN0aW9ucy5zY3RwX2N3bmRfdXBkYXRlX2V4aXRfcGYoc3RjYiwgbmV0KTsK
IAkJCQkJLyogRG9uZSB3aXRoIHRoaXMgbmV0ICovCkBAIC00MjcyLDcgKzQzMDMsNyBAQCBhZ2Fp
bjoKIAkJCX0gZWxzZSBpZiAoU0NUUF9PU19USU1FUl9QRU5ESU5HKCZuZXQtPnJ4dF90aW1lci50
aW1lcikpIHsKIAkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2It
PnNjdHBfZXAsCiAJCQkJICAgICAgICAgICAgICAgIHN0Y2IsIG5ldCwKLQkJCQkgICAgICAgICAg
ICAgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjMpOworCQkJCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNik7CiAJCQl9CiAJCX0K
IAl9CkBAIC00MzExLDEyICs0MzQyLDEyIEBAIGFnYWluOgogCQkvKiBjbGVhbiB1cCAqLwogCQlp
ZiAoKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0gMSkgJiYKIAkJICAgICgoYXNvYy0+c3RhdGUg
JiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHx8Ci0JCSAgICAgKGFzb2MtPnN0YXRlICYg
U0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCisJCSAgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgKCgqYXNv
Yy0+c3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2IsIGFz
b2MpKSkgewotCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUOwor
CQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsK
IAkJfQogCQlpZiAoKChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykg
fHwKLQkJICAgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSAmJgorCQkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKIAkJICAgIChhc29jLT5zdHJlYW1fcXVldWVfY250ID09
IDEpICYmCiAJCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQp
KSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwpAQCAtNDMyNCw3ICs0MzU1LDcgQEAgYWdhaW46
CiAJCQkqYWJvcnRfbm93ID0gMTsKIAkJCS8qIFhYWCAqLwogCQkJb3BfZXJyID0gc2N0cF9nZW5l
cmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1VTRVJfSU5JVElBVEVEX0FCVCwgIiIpOwotCQkJc3RjYi0+
c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9M
T0NfMjQ7CisJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9JTkRBVEEgKyBTQ1RQX0xPQ18yNzsKIAkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3Rj
Yi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJcmV0dXJu
OwogCQl9CkBAIC00MzMyLDEyICs0MzYzLDExIEBAIGFnYWluOgogCQkgICAgKGFzb2MtPnN0cmVh
bV9xdWV1ZV9jbnQgPT0gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7CiAKLQkJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewor
CQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
KSB7CiAJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJfQot
CQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJCVND
VFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJ
CVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQlzY3Rw
X3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCWlmIChhc29jLT5hbHRlcm5hdGUp
IHsKIAkJCQluZXRwID0gYXNvYy0+YWx0ZXJuYXRlOwpAQCAtNDM0OSwxMyArNDM3OSwxMiBAQCBh
Z2FpbjoKIAkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG5ldHApOwogCQkJc2N0cF90aW1lcl9z
dGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwKIAkJCQkJIHN0Y2ItPnNjdHBfZXAs
IHN0Y2IsIG5ldHApOwotCQl9IGVsc2UgaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgorCQl9IGVsc2UgaWYgKChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgogCQkJICAgKGFzb2Mt
PnN0cmVhbV9xdWV1ZV9jbnQgPT0gMCkpIHsKIAkJCXN0cnVjdCBzY3RwX25ldHMgKm5ldHA7CiAK
IAkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKLQkJCVNDVFBfU0VU
X1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpOwotCQkJU0NUUF9DTEVB
Ul9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJU0NUUF9T
RVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCk7CiAJCQlzY3RwX3N0
b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCWlmIChhc29jLT5hbHRlcm5hdGUpIHsK
IAkJCQluZXRwID0gYXNvYy0+YWx0ZXJuYXRlOwpAQCAtNDUzNSw3ICs0NTY0LDcgQEAgc2N0cF9o
YW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZgogCQlzbnByaW50Zihtc2csIHNpemVv
Zihtc2cpLCAiQ3VtIGFjayAlOC44eCBncmVhdGVyIG9yIGVxdWFsIHRoYW4gVFNOICU4Ljh4IiwK
IAkJCSBjdW1fYWNrLCBzZW5kX3MpOwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFND
VFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQlzdGNiLT5zY3RwX2VwLT5sYXN0
X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18yNTsKKwkJc3Rj
Yi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NU
UF9MT0NfMjg7CiAJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3Rj
Yiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm47CiAJfQpAQCAtNDU2Nyw3
ICs0NTk2LDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZgogCQkv
KiBzdG9wIGFueSB0aW1lcnMgKi8KIAkJVEFJTFFfRk9SRUFDSChuZXQsICZhc29jLT5uZXRzLCBz
Y3RwX25leHQpIHsKIAkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwgc3Rj
Yi0+c2N0cF9lcCwKLQkJCSAgICAgICAgICAgICAgICBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQ
X0lOREFUQSArIFNDVFBfTE9DXzI2KTsKKwkJCSAgICAgICAgICAgICAgICBzdGNiLCBuZXQsIFND
VFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI5KTsKIAkJCW5ldC0+cGFydGlhbF9ieXRl
c19hY2tlZCA9IDA7CiAJCQluZXQtPmZsaWdodF9zaXplID0gMDsKIAkJfQpAQCAtNDY1Nyw3ICs0
Njg2LDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZgogCiAJCQkJ
CWlmICh0cDEtPnNuZF9jb3VudCA8IDIpIHsKIAkJCQkJCS8qCi0JCQkJCQkgKiBUcnVlIG5vbi1y
ZXRyYW5zbWl0ZWQKKwkJCQkJCSAqIFRydWUgbm9uLXJldHJhbnNtaXR0ZWQKIAkJCQkJCSAqIGNo
dW5rCiAJCQkJCQkgKi8KIAkJCQkJCXRwMS0+d2hvVG8tPm5ldF9hY2syICs9CkBAIC00NjY1LDEy
ICs0Njk0LDEyIEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmYKIAog
CQkJCQkJLyogdXBkYXRlIFJUTyB0b28/ICovCiAJCQkJCQlpZiAodHAxLT5kb19ydHQpIHsKLQkJ
CQkJCQlpZiAocnRvX29rKSB7Ci0JCQkJCQkJCXRwMS0+d2hvVG8tPlJUTyA9Ci0JCQkJCQkJCQlz
Y3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwKLQkJCQkJCQkJCQkJICAgYXNvYywgdHAxLT53aG9UbywK
LQkJCQkJCQkJCQkJICAgJnRwMS0+c2VudF9yY3ZfdGltZSwKLQkJCQkJCQkJCQkJICAgU0NUUF9S
VFRfRlJPTV9EQVRBKTsKKwkJCQkJCQlpZiAocnRvX29rICYmCisJCQkJCQkJICAgIHNjdHBfY2Fs
Y3VsYXRlX3J0byhzdGNiLAorCQkJCQkJCQkJICAgICAgICZzdGNiLT5hc29jLAorCQkJCQkJCQkJ
ICAgICAgIHRwMS0+d2hvVG8sCisJCQkJCQkJCQkgICAgICAgJnRwMS0+c2VudF9yY3ZfdGltZSwK
KwkJCQkJCQkJCSAgICAgICBTQ1RQX1JUVF9GUk9NX0RBVEEpKSB7CiAJCQkJCQkJCXJ0b19vayA9
IDA7CiAJCQkJCQkJfQogCQkJCQkJCWlmICh0cDEtPndob1RvLT5ydG9fbmVlZGVkID09IDApIHsK
QEAgLTQ3NjcsMTQgKzQ3OTYsMTQgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwg
aW50IG9mZgogCQkJaWYgKG5ldC0+bmV3X3BzZXVkb19jdW1hY2spCiAJCQkJc2N0cF90aW1lcl9z
dG9wKFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLAogCQkJCSAgICAgICAgICAg
ICAgICBzdGNiLCBuZXQsCi0JCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFU
QSArIFNDVFBfTE9DXzI3KTsKKwkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5E
QVRBICsgU0NUUF9MT0NfMzApOwogCiAJCX0KIAl9IGVsc2UgewogCQlpZiAoYWNjdW1fbW92ZWQp
IHsKIAkJCVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0cywgc2N0cF9uZXh0KSB7CiAJCQkJ
c2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9TRU5ELCBzdGNiLT5zY3RwX2VwLAotCQkJ
CSAgICAgICAgICAgICAgICBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBf
TE9DXzI4KTsKKwkJCQkgICAgICAgICAgICAgICAgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9J
TkRBVEEgKyBTQ1RQX0xPQ18zMSk7CiAJCQl9CiAJCX0KIAl9CkBAIC00OTc5LDcgKzUwMDgsNyBA
QCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmCiAJCQkJCW5ldC0+ZGVz
dF9zdGF0ZSAmPSB+U0NUUF9BRERSX1BGOwogCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1F
Ul9UWVBFX0hFQVJUQkVBVCwKIAkJCQkJICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0
Y2IsIG5ldCwKLQkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFND
VFBfTE9DXzI5KTsKKwkJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSAr
IFNDVFBfTE9DXzMyKTsKIAkJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfSEVB
UlRCRUFULCBzdGNiLT5zY3RwX2VwLCBzdGNiLCBuZXQpOwogCQkJCQlhc29jLT5jY19mdW5jdGlv
bnMuc2N0cF9jd25kX3VwZGF0ZV9leGl0X3BmKHN0Y2IsIG5ldCk7CiAJCQkJCS8qIERvbmUgd2l0
aCB0aGlzIG5ldCAqLwpAQCAtNTAwNCw3ICs1MDMzLDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IG9mZgogCQkJLyogc3RvcCBhbGwgdGltZXJzICovCiAJCQlzY3RwX3Rp
bWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIHN0Y2ItPnNjdHBfZXAsCiAJCQkgICAgICAg
ICAgICAgICAgc3RjYiwgbmV0LAotCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lO
REFUQSArIFNDVFBfTE9DXzMwKTsKKwkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9J
TkRBVEEgKyBTQ1RQX0xPQ18zMyk7CiAJCQluZXQtPmZsaWdodF9zaXplID0gMDsKIAkJCW5ldC0+
cGFydGlhbF9ieXRlc19hY2tlZCA9IDA7CiAJCX0KQEAgLTUwMjksMTIgKzUwNTgsMTIgQEAgc2N0
cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZgogCQkvKiBjbGVhbiB1cCAqLwog
CQlpZiAoKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0gMSkgJiYKIAkJICAgICgoYXNvYy0+c3Rh
dGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpIHx8Ci0JCSAgICAgKGFzb2MtPnN0YXRl
ICYgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpICYmCisJCSAgICAgKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgKCgq
YXNvYy0+c3NfZnVuY3Rpb25zLnNjdHBfc3NfaXNfdXNlcl9tc2dzX2luY29tcGxldGUpKHN0Y2Is
IGFzb2MpKSkgewotCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZU
OworCQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZU
KTsKIAkJfQogCQlpZiAoKChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElO
RykgfHwKLQkJICAgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERP
V05fUkVDRUlWRUQpKSAmJgorCQkgICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NU
QVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgJiYKIAkJICAgIChhc29jLT5zdHJlYW1fcXVldWVfY250
ID09IDEpICYmCiAJCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xF
RlQpKSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwpAQCAtNTA0Miw3ICs1MDcxLDcgQEAgc2N0
cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZgogCQkJKmFib3J0X25vdyA9IDE7
CiAJCQkvKiBYWFggKi8KIAkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVT
RV9VU0VSX0lOSVRJQVRFRF9BQlQsICIiKTsKLQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRf
Y29kZSA9IFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFNDVFBfTE9DXzI0OworCQkJc3RjYi0+c2N0
cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0Nf
MzQ7CiAJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIG9w
X2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCXJldHVybjsKIAkJfQpAQCAtNTA1MCwxMiAr
NTA3OSwxMSBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmCiAJCSAg
ICAoYXNvYy0+c3RyZWFtX3F1ZXVlX2NudCA9PSAwKSkgewogCQkJc3RydWN0IHNjdHBfbmV0cyAq
bmV0cDsKIAotCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4p
IHx8Ci0JCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSB7CisJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
T1BFTikgfHwKKwkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVU
RE9XTl9SRUNFSVZFRCkpIHsKIAkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJl
c3RhYik7CiAJCQl9Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dO
X1NFTlQpOwotCQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dO
X1BFTkRJTkcpOworCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKTsKIAkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJaWYgKGFz
b2MtPmFsdGVybmF0ZSkgewogCQkJCW5ldHAgPSBhc29jLT5hbHRlcm5hdGU7CkBAIC01MDY4LDEz
ICs1MDk2LDEyIEBAIHNjdHBfaGFuZGxlX3NhY2soc3RydWN0IG1idWYgKm0sIGludCBvZmYKIAkJ
CXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsCiAJCQkJCSBz
dGNiLT5zY3RwX2VwLCBzdGNiLCBuZXRwKTsKIAkJCXJldHVybjsKLQkJfSBlbHNlIGlmICgoU0NU
UF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJ
fSBlbHNlIGlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9S
RUNFSVZFRCkgJiYKIAkJCSAgIChhc29jLT5zdHJlYW1fcXVldWVfY250ID09IDApKSB7CiAJCQlz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwogCiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBz
X2N1cnJlc3RhYik7Ci0JCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dO
X0FDS19TRU5UKTsKLQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVU
RE9XTl9QRU5ESU5HKTsKKwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERP
V05fQUNLX1NFTlQpOwogCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJ
CQlpZiAoYXNvYy0+YWx0ZXJuYXRlKSB7CiAJCQkJbmV0cCA9IGFzb2MtPmFsdGVybmF0ZTsKQEAg
LTUxOTAsNyArNTIxNyw3IEBAIGFnYWluOgogCQkJfSBlbHNlIGlmIChTQ1RQX09TX1RJTUVSX1BF
TkRJTkcoJm5ldC0+cnh0X3RpbWVyLnRpbWVyKSkgewogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQ
X1RJTUVSX1RZUEVfU0VORCwgc3RjYi0+c2N0cF9lcCwKIAkJCQkgICAgICAgICAgICAgICAgc3Rj
YiwgbmV0LAotCQkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18zMik7CisJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX0lOREFUQSArIFND
VFBfTE9DXzM1KTsKIAkJCX0KIAkJfQogCX0KQEAgLTU1NDAsMTAgKzU1NjcsMTAgQEAgc2N0cF9o
YW5kbGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiIAogCSAqCiAJICogQXNzdW1lIHdlIGdl
dCBGd2RUU04oeCk6CiAJICoKLQkgKiAxKSB1cGRhdGUgbG9jYWwgY3VtVFNOIHRvIHggCi0JICog
MikgdHJ5IHRvIGZ1cnRoZXIgYWR2YW5jZSBjdW1UU04gdG8geCArIG90aGVycyB3ZSBoYXZlIAot
CSAqIDMpIGV4YW1pbmUgYW5kIHVwZGF0ZSByZS1vcmRlcmluZyBxdWV1ZSBvbiBwci1pbi1zdHJl
YW1zIAotCSAqIDQpIGNsZWFuIHVwIHJlLWFzc2VtYmx5IHF1ZXVlIAorCSAqIDEpIHVwZGF0ZSBs
b2NhbCBjdW1UU04gdG8geAorCSAqIDIpIHRyeSB0byBmdXJ0aGVyIGFkdmFuY2UgY3VtVFNOIHRv
IHggKyBvdGhlcnMgd2UgaGF2ZQorCSAqIDMpIGV4YW1pbmUgYW5kIHVwZGF0ZSByZS1vcmRlcmlu
ZyBxdWV1ZSBvbiBwci1pbi1zdHJlYW1zCisJICogNCkgY2xlYW4gdXAgcmUtYXNzZW1ibHkgcXVl
dWUKIAkgKiA1KSBTZW5kIGEgc2FjayB0byByZXBvcnQgd2hlcmUgd2UgYXJlLgogCSAqLwogCXN0
cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jOwpAQCAtNTU4OSw3ICs1NjE2LDcgQEAgc2N0cF9o
YW5kbGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiIAogCQkJICAgICAgICAgIk5ldyBjdW0g
YWNrICU4Ljh4IHRvbyBoaWdoLCBoaWdoZXN0IFRTTiAlOC44eCIsCiAJCQkgICAgICAgICBuZXdf
Y3VtX3RzbiwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21hcCk7CiAJCQlvcF9lcnIgPSBzY3Rw
X2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwotCQkJ
c3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsg
U0NUUF9MT0NfMzM7CisJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZS
T01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18zNjsKIAkJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRp
b24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgb3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJ
cmV0dXJuOwogCQl9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRh
dGEuaAkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfaW5kYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9f
RnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhl
YWQvc3lzL25ldGluZXQvc2N0cF9pbmRhdGEuaCAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVog
dHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2lu
ZGF0YS5oIDM1MTY1NSAyMDE5LTA5LTAxIDEwOjM5OjE2WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAK
ICNpZm5kZWYgX05FVElORVRfU0NUUF9JTkRBVEFfSF8KQEAgLTYzLDcgKzYzLDYgQEAgc2N0cF9i
dWlsZF9yZWFkcV9lbnRyeShzdHJ1Y3Qgc2N0cF90Y2IgKgogCQkoX2N0bCktPnNpbmZvX3BwaWQg
PSBwcGlkOyBcCiAJCShfY3RsKS0+c2luZm9fY29udGV4dCA9IGNvbnRleHQ7IFwKIAkJKF9jdGwp
LT5mc25faW5jbHVkZWQgPSAweGZmZmZmZmZmOyBcCi0JCShfY3RsKS0+dG9wX2ZzbiA9IDB4ZmZm
ZmZmZmY7IFwKIAkJKF9jdGwpLT5zaW5mb190c24gPSB0c247IFwKIAkJKF9jdGwpLT5zaW5mb19j
dW10c24gPSB0c247IFwKIAkJKF9jdGwpLT5zaW5mb19hc3NvY19pZCA9IHNjdHBfZ2V0X2Fzc29j
aWQoKGluX2l0KSk7IFwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lu
cHV0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5w
dXQuYwkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfaW5wdXQuYwkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWZkZWYgX19G
cmVlQlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwX2lucHV0LmMgMzM0NzI1IDIwMTgtMDYtMDYgMTk6Mjc6MDZaIHR1
ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbnB1
dC5jIDM1NTEzNSAyMDE5LTExLTI3IDE5OjMyOjI5WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNp
bmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTUxLDYgKzUxLDkgQEAgX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9ic2Rf
YWRkci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF90aW1lci5oPgogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9jcmMzMi5oPgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX2tkdHJhY2UuaD4KKyNlbmRpZgogI2lmIGRlZmluZWQoSU5FVCkgfHwgZGVmaW5l
ZChJTkVUNikKICNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQogI2luY2x1ZGUg
PG5ldGluZXQvdWRwLmg+CkBAIC0yMTUsNyArMjE4LDcgQEAgc2N0cF9oYW5kbGVfaW5pdChzdHJ1
Y3QgbWJ1ZiAqbSwgaW50IGlwaAogCQlnb3RvIG91dG5vdzsKIAl9CiAJaWYgKChzdGNiICE9IE5V
TEwpICYmCi0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9BQ0tfU0VOVCkpIHsKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJCVNDVFBEQkcoU0NUUF9ERUJVR19JTlBVVDMs
ICJzY3RwX2hhbmRsZV9pbml0OiBzZW5kaW5nIFNIVVRET1dOLUFDS1xuIik7CiAJCXNjdHBfc2Vu
ZF9zaHV0ZG93bl9hY2soc3RjYiwgTlVMTCk7CiAJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3Rj
YiwgU0NUUF9PVVRQVVRfRlJPTV9DT05UUk9MX1BST0MsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CkBA
IC00NzAsMjcgKzQ3Myw2MiBAQCBzY3RwX3Byb2Nlc3NfaW5pdF9hY2soc3RydWN0IG1idWYgKm0s
IGluCiB7CiAJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJc3RydWN0IG1idWYgKm9w
X2VycjsKLQlpbnQgcmV0dmFsLCBhYm9ydF9mbGFnOwotCXVpbnQzMl90IGluaXRhY2tfbGltaXQ7
CisJaW50IHJldHZhbCwgYWJvcnRfZmxhZywgY29va2llX2ZvdW5kOworCWludCBpbml0YWNrX2xp
bWl0OwogCWludCBuYXRfZnJpZW5kbHkgPSAwOwogCiAJLyogRmlyc3QgdmVyaWZ5IHRoYXQgd2Ug
aGF2ZSBubyBpbGxlZ2FsIHBhcmFtJ3MgKi8KIAlhYm9ydF9mbGFnID0gMDsKKwljb29raWVfZm91
bmQgPSAwOwogCiAJb3BfZXJyID0gc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVy
cyhtLAogCQkJCQkJICAgICAgIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVu
aykpLAotCQkJCQkJICAgICAgICZhYm9ydF9mbGFnLCAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKilj
cCwgJm5hdF9mcmllbmRseSk7CisJCQkJCQkgICAgICAgJmFib3J0X2ZsYWcsIChzdHJ1Y3Qgc2N0
cF9jaHVua2hkciAqKWNwLAorCQkJCQkJICAgICAgICZuYXRfZnJpZW5kbHksICZjb29raWVfZm91
bmQpOwogCWlmIChhYm9ydF9mbGFnKSB7CiAJCS8qIFNlbmQgYW4gYWJvcnQgYW5kIG5vdGlmeSBw
ZWVyICovCiAJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwg
b3BfZXJyLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkqYWJvcnRfbm9fdW5sb2NrID0gMTsKIAkJ
cmV0dXJuICgtMSk7CiAJfQorCWlmICghY29va2llX2ZvdW5kKSB7CisJCXVpbnQxNl90IGxlbjsK
KworCQkvKiBPbmx5IHJlcG9ydCB0aGUgbWlzc2luZyBjb29raWUgcGFyYW1ldGVyICovCisJCWlm
IChvcF9lcnIgIT0gTlVMTCkgeworCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCX0KKwkJbGVu
ID0gKHVpbnQxNl90KShzaXplb2Yoc3RydWN0IHNjdHBfZXJyb3JfbWlzc2luZ19wYXJhbSkgKyBz
aXplb2YodWludDE2X3QpKTsKKwkJLyogV2UgYWJvcnQgd2l0aCBhbiBlcnJvciBvZiBtaXNzaW5n
IG1hbmRhdG9yeSBwYXJhbSAqLworCQlvcF9lcnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobGVu
LCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CisJCWlmIChvcF9lcnIgIT0gTlVMTCkgeworCQkJ
c3RydWN0IHNjdHBfZXJyb3JfbWlzc2luZ19wYXJhbSAqY2F1c2U7CisKKwkJCVNDVFBfQlVGX0xF
TihvcF9lcnIpID0gbGVuOworCQkJY2F1c2UgPSBtdG9kKG9wX2Vyciwgc3RydWN0IHNjdHBfZXJy
b3JfbWlzc2luZ19wYXJhbSAqKTsKKwkJCS8qIFN1YnRyYWN0IHRoZSByZXNlcnZlZCBwYXJhbSAq
LworCQkJY2F1c2UtPmNhdXNlLmNvZGUgPSBodG9ucyhTQ1RQX0NBVVNFX01JU1NJTkdfUEFSQU0p
OworCQkJY2F1c2UtPmNhdXNlLmxlbmd0aCA9IGh0b25zKGxlbik7CisJCQljYXVzZS0+bnVtX21p
c3NpbmdfcGFyYW1zID0gaHRvbmwoMSk7CisJCQljYXVzZS0+dHlwZVswXSA9IGh0b25zKFNDVFBf
U1RBVEVfQ09PS0lFKTsKKwkJfQorCQlzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsIG0sIGlwaGxlbiwKKwkJCQkgICAgICAgc3JjLCBkc3QsIHNoLCBvcF9lcnIsCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCQkgICAgICAgbWZsb3d0eXBlLCBtZmxvd2lkLAor
I2VuZGlmCisJCQkJICAgICAgIHZyZl9pZCwgbmV0LT5wb3J0KTsKKwkJKmFib3J0X25vX3VubG9j
ayA9IDE7CisJCXJldHVybiAoLTMpOworCX0KIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJYXNvYy0+
cGVlcl9zdXBwb3J0c19uYXQgPSAodWludDhfdCluYXRfZnJpZW5kbHk7CiAJLyogcHJvY2VzcyB0
aGUgcGVlcidzIHBhcmFtZXRlcnMgaW4gdGhlIElOSVQtQUNLICovCiAJcmV0dmFsID0gc2N0cF9w
cm9jZXNzX2luaXQoKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKiljcCwgc3RjYik7CiAJaWYgKHJl
dHZhbCA8IDApIHsKKwkJaWYgKG9wX2VyciAhPSBOVUxMKSB7CisJCQlzY3RwX21fZnJlZW0ob3Bf
ZXJyKTsKKwkJfQogCQlyZXR1cm4gKHJldHZhbCk7CiAJfQogCWluaXRhY2tfbGltaXQgPSBvZmZz
ZXQgKyBudG9ocyhjcC0+Y2guY2h1bmtfbGVuZ3RoKTsKQEAgLTQ5OCw2ICs1MzYsOSBAQCBzY3Rw
X3Byb2Nlc3NfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGluCiAJaWYgKChyZXR2YWwgPSBzY3Rw
X2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChzdGNiLCBtLAogCSAgICAob2Zmc2V0ICsgc2l6ZW9m
KHN0cnVjdCBzY3RwX2luaXRfY2h1bmspKSwgaW5pdGFja19saW1pdCwKIAkgICAgc3JjLCBkc3Qs
IE5VTEwsIHN0Y2ItPmFzb2MucG9ydCkpKSB7CisJCWlmIChvcF9lcnIgIT0gTlVMTCkgeworCQkJ
c2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCX0KIAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVz
ZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAogCQkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJQcm9ibGVtIHdpdGggYWRkcmVzcyBwYXJhbWV0ZXJzIik7CiAJCVND
VFBEQkcoU0NUUF9ERUJVR19JTlBVVDEsCkBAIC01NTAsOCArNTkxLDggQEAgc2N0cF9wcm9jZXNz
X2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBpbgogCSAgICBhc29jLT5wcmltYXJ5X2Rlc3RpbmF0
aW9uLCBTQ1RQX0ZST01fU0NUUF9JTlBVVCArIFNDVFBfTE9DXzMpOwogCiAJLyogY2FsY3VsYXRl
IHRoZSBSVE8gKi8KLQluZXQtPlJUTyA9IHNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLCBhc29jLCBu
ZXQsICZhc29jLT50aW1lX2VudGVyZWQsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CisJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2Ms
IG5ldCwgJmFzb2MtPnRpbWVfZW50ZXJlZCwKKwkgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRf
RlJPTV9OT05fREFUQSk7CiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogCWlmIChzdGNiLT5z
Y3RwX2VwLT5yZWN2X2NhbGxiYWNrKSB7CiAJCWlmIChzdGNiLT5zY3RwX3NvY2tldCkgewpAQCAt
NTc3LDQyICs2MTgsOCBAQCBzY3RwX3Byb2Nlc3NfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGlu
CiAJCX0KIAl9CiAjZW5kaWYKLQlyZXR2YWwgPSBzY3RwX3NlbmRfY29va2llX2VjaG8obSwgb2Zm
c2V0LCBzdGNiLCBuZXQpOwotCWlmIChyZXR2YWwgPCAwKSB7Ci0JCS8qCi0JCSAqIE5vIGNvb2tp
ZSwgd2UgcHJvYmFibHkgc2hvdWxkIHNlbmQgYSBvcCBlcnJvci4gQnV0IGluIGFueQotCQkgKiBj
YXNlIGlmIHRoZXJlIGlzIG5vIGNvb2tpZSBpbiB0aGUgSU5JVC1BQ0ssIHdlIGNhbgotCQkgKiBh
YmFuZG9uIHRoZSBwZWVyLCBpdHMgYnJva2UuCi0JCSAqLwotCQlpZiAocmV0dmFsID09IC0zKSB7
Ci0JCQl1aW50MTZfdCBsZW47Ci0KLQkJCWxlbiA9ICh1aW50MTZfdCkoc2l6ZW9mKHN0cnVjdCBz
Y3RwX2Vycm9yX21pc3NpbmdfcGFyYW0pICsgc2l6ZW9mKHVpbnQxNl90KSk7Ci0JCQkvKiBXZSBh
Ym9ydCB3aXRoIGFuIGVycm9yIG9mIG1pc3NpbmcgbWFuZGF0b3J5IHBhcmFtICovCi0JCQlvcF9l
cnIgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2cobGVuLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7
Ci0JCQlpZiAob3BfZXJyICE9IE5VTEwpIHsKLQkJCQlzdHJ1Y3Qgc2N0cF9lcnJvcl9taXNzaW5n
X3BhcmFtICpjYXVzZTsKLQotCQkJCVNDVFBfQlVGX0xFTihvcF9lcnIpID0gbGVuOwotCQkJCWNh
dXNlID0gbXRvZChvcF9lcnIsIHN0cnVjdCBzY3RwX2Vycm9yX21pc3NpbmdfcGFyYW0gKik7Ci0J
CQkJLyogU3VidHJhY3QgdGhlIHJlc2VydmVkIHBhcmFtICovCi0JCQkJY2F1c2UtPmNhdXNlLmNv
ZGUgPSBodG9ucyhTQ1RQX0NBVVNFX01JU1NJTkdfUEFSQU0pOwotCQkJCWNhdXNlLT5jYXVzZS5s
ZW5ndGggPSBodG9ucyhsZW4pOwotCQkJCWNhdXNlLT5udW1fbWlzc2luZ19wYXJhbXMgPSBodG9u
bCgxKTsKLQkJCQljYXVzZS0+dHlwZVswXSA9IGh0b25zKFNDVFBfU1RBVEVfQ09PS0lFKTsKLQkJ
CX0KLQkJCXNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3RjYiwgbSwgaXBo
bGVuLAotCQkJICAgICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCwgc2gsIG9wX2VyciwKLSNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQotCQkJICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5
cGUsIG1mbG93aWQsCi0jZW5kaWYKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgdnJmX2lkLCBu
ZXQtPnBvcnQpOwotCQkJKmFib3J0X25vX3VubG9jayA9IDE7Ci0JCX0KLQkJcmV0dXJuIChyZXR2
YWwpOwotCX0KLQotCXJldHVybiAoMCk7CisJcmV0dmFsID0gc2N0cF9zZW5kX2Nvb2tpZV9lY2hv
KG0sIG9mZnNldCwgaW5pdGFja19saW1pdCwgc3RjYiwgbmV0KTsKKwlyZXR1cm4gKHJldHZhbCk7
CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC03MjYsOCArNzMzLDggQEAgc2N0cF9oYW5kbGVfaGVhcnRi
ZWF0X2FjayhzdHJ1Y3Qgc2N0cF9oZQogCXR2LnR2X3NlYyA9IGNwLT5oZWFydGJlYXQuaGJfaW5m
by50aW1lX3ZhbHVlXzE7CiAJdHYudHZfdXNlYyA9IGNwLT5oZWFydGJlYXQuaGJfaW5mby50aW1l
X3ZhbHVlXzI7CiAJLyogTm93IGxldHMgZG8gYSBSVE8gd2l0aCB0aGlzICovCi0Jcl9uZXQtPlJU
TyA9IHNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLCAmc3RjYi0+YXNvYywgcl9uZXQsICZ0diwKLQkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOwor
CXNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLCAmc3RjYi0+YXNvYywgcl9uZXQsICZ0diwKKwkgICAg
ICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CiAJaWYgKCEocl9uZXQtPmRl
c3Rfc3RhdGUgJiBTQ1RQX0FERFJfUkVBQ0hBQkxFKSkgewogCQlyX25ldC0+ZGVzdF9zdGF0ZSB8
PSBTQ1RQX0FERFJfUkVBQ0hBQkxFOwogCQlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllfSU5U
RVJGQUNFX1VQLCBzdGNiLApAQCAtNzgwLDMxICs3ODcsMzUgQEAgc2N0cF9oYW5kbGVfaGVhcnRi
ZWF0X2FjayhzdHJ1Y3Qgc2N0cF9oZQogc3RhdGljIGludAogc2N0cF9oYW5kbGVfbmF0X2NvbGxp
ZGluZ19zdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IpCiB7Ci0JLyogcmV0dXJuIDAgbWVhbnMg
d2Ugd2FudCB5b3UgdG8gcHJvY2VlZCB3aXRoIHRoZSBhYm9ydAotCSAqIG5vbi16ZXJvIG1lYW5z
IG5vIGFib3J0IHByb2Nlc3NpbmcKLQkqLworCS8qCisJICogUmV0dXJuIDAgbWVhbnMgd2Ugd2Fu
dCB5b3UgdG8gcHJvY2VlZCB3aXRoIHRoZSBhYm9ydAorCSAqIG5vbi16ZXJvIG1lYW5zIG5vIGFi
b3J0IHByb2Nlc3NpbmcuCisJICovCisJdWludDMyX3QgbmV3X3Z0YWc7CiAJc3RydWN0IHNjdHBh
c29jaGVhZCAqaGVhZDsKIAotCWlmICgoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFND
VFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNv
YykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCWlmICgoU0NUUF9HRVRfU1RBVEUo
c3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJbmV3X3Z0YWcgPSBzY3Rw
X3NlbGVjdF9hX3RhZyhzdGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0LCBz
dGNiLT5ycG9ydCwgMSk7CiAJCWF0b21pY19hZGRfaW50KCZzdGNiLT5hc29jLnJlZmNudCwgMSk7
CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJU0NUUF9JTlBfSU5GT19XTE9DSygpOwogCQlT
Q1RQX1RDQl9MT0NLKHN0Y2IpOwogCQlhdG9taWNfc3VidHJhY3RfaW50KCZzdGNiLT5hc29jLnJl
ZmNudCwgMSk7CisJfSBlbHNlIHsKKwkJcmV0dXJuICgwKTsKIAl9Ci0JaWYgKFNDVFBfR0VUX1NU
QVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CisJaWYgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHsKIAkJLyogZ2VuZXJh
dGUgYSBuZXcgdnRhZyBhbmQgc2VuZCBpbml0ICovCiAJCUxJU1RfUkVNT1ZFKHN0Y2IsIHNjdHBf
YXNvY3MpOwotCQlzdGNiLT5hc29jLm15X3Z0YWcgPSBzY3RwX3NlbGVjdF9hX3RhZyhzdGNiLT5z
Y3RwX2VwLCBzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgMSk7CisJCXN0
Y2ItPmFzb2MubXlfdnRhZyA9IG5ld192dGFnOwogCQloZWFkID0gJlNDVFBfQkFTRV9JTkZPKHNj
dHBfYXNvY2hhc2gpW1NDVFBfUENCSEFTSF9BU09DKHN0Y2ItPmFzb2MubXlfdnRhZywgU0NUUF9C
QVNFX0lORk8oaGFzaGFzb2NtYXJrKSldOwogCQkvKiBwdXQgaXQgaW4gdGhlIGJ1Y2tldCBpbiB0
aGUgdnRhZyBoYXNoIG9mIGFzc29jJ3MgZm9yIHRoZSBzeXN0ZW0gKi8KIAkJTElTVF9JTlNFUlRf
SEVBRChoZWFkLCBzdGNiLCBzY3RwX2Fzb2NzKTsKLQkJc2N0cF9zZW5kX2luaXRpYXRlKHN0Y2It
PnNjdHBfZXAsIHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCVNDVFBfSU5QX0lORk9fV1VO
TE9DSygpOworCQlzY3RwX3NlbmRfaW5pdGlhdGUoc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9T
T19OT1RfTE9DS0VEKTsKIAkJcmV0dXJuICgxKTsKLQl9Ci0JaWYgKFNDVFBfR0VUX1NUQVRFKCZz
dGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpIHsKKwl9IGVsc2UgewogCQkv
KiB0cmVhdCBsaWtlIGEgY2FzZSB3aGVyZSB0aGUgY29va2llIGV4cGlyZWQgaS5lLjoKIAkJKiAt
IGR1bXAgY3VycmVudCBjb29raWUuCiAJCSogLSBnZW5lcmF0ZSBhIG5ldyB2dGFnLgpAQCAtODEy
LDE2ICs4MjMsMTUgQEAgc2N0cF9oYW5kbGVfbmF0X2NvbGxpZGluZ19zdGF0ZShzdHJ1Y3Qgcwog
CQkqLwogCQkvKiBnZW5lcmF0ZSBhIG5ldyB2dGFnIGFuZCBzZW5kIGluaXQgKi8KIAkJTElTVF9S
RU1PVkUoc3RjYiwgc2N0cF9hc29jcyk7Ci0JCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRDsKLQkJc3RjYi0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX0NPT0tJ
RV9XQUlUOworCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsK
IAkJc2N0cF9zdG9wX2FsbF9jb29raWVfdGltZXJzKHN0Y2IpOwogCQlzY3RwX3Rvc3Nfb2xkX2Nv
b2tpZXMoc3RjYiwgJnN0Y2ItPmFzb2MpOwotCQlzdGNiLT5hc29jLm15X3Z0YWcgPSBzY3RwX3Nl
bGVjdF9hX3RhZyhzdGNiLT5zY3RwX2VwLCBzdGNiLT5zY3RwX2VwLT5zY3RwX2xwb3J0LCBzdGNi
LT5ycG9ydCwgIDEpOworCQlzdGNiLT5hc29jLm15X3Z0YWcgPSBuZXdfdnRhZzsKIAkJaGVhZCA9
ICZTQ1RQX0JBU0VfSU5GTyhzY3RwX2Fzb2NoYXNoKVtTQ1RQX1BDQkhBU0hfQVNPQyhzdGNiLT5h
c29jLm15X3Z0YWcsIFNDVFBfQkFTRV9JTkZPKGhhc2hhc29jbWFyaykpXTsKIAkJLyogcHV0IGl0
IGluIHRoZSBidWNrZXQgaW4gdGhlIHZ0YWcgaGFzaCBvZiBhc3NvYydzIGZvciB0aGUgc3lzdGVt
ICovCiAJCUxJU1RfSU5TRVJUX0hFQUQoaGVhZCwgc3RjYiwgc2N0cF9hc29jcyk7Ci0JCXNjdHBf
c2VuZF9pbml0aWF0ZShzdGNiLT5zY3RwX2VwLCBzdGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwog
CQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKKwkJc2N0cF9zZW5kX2luaXRpYXRlKHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCXJldHVybiAoMSk7CiAJfQogCXJl
dHVybiAoMCk7CkBAIC04OTEsOCArOTAxLDggQEAgc2N0cF9oYW5kbGVfYWJvcnQoc3RydWN0IHNj
dHBfYWJvcnRfY2h1bgogCXNjdHBfYWJvcnRfbm90aWZpY2F0aW9uKHN0Y2IsIDEsIGVycm9yLCBh
Ym9ydCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkvKiBmcmVlIHRoZSB0Y2IgKi8KIAlTQ1RQX1NU
QVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRlZCk7Ci0JaWYgKChTQ1RQX0dFVF9TVEFURSgm
c3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCSAgICAoU0NUUF9HRVRfU1RBVEUo
JnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJaWYgKChT
Q1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQlTQ1RQ
X1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJfQogI2lmZGVmIFNDVFBfQVNP
Q0xPR19PRl9UU05TCkBAIC05MDYsNyArOTE2LDcgQEAgc2N0cF9oYW5kbGVfYWJvcnQoc3RydWN0
IHNjdHBfYWJvcnRfY2h1bgogCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJYXRvbWljX3N1YnRyYWN0
X2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogI2VuZGlmCi0Jc3RjYi0+YXNvYy5zdGF0ZSB8
PSBTQ1RQX1NUQVRFX1dBU19BQk9SVEVEOworCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBf
U1RBVEVfV0FTX0FCT1JURUQpOwogCSh2b2lkKXNjdHBfZnJlZV9hc3NvYyhzdGNiLT5zY3RwX2Vw
LCBzdGNiLCBTQ1RQX05PUk1BTF9QUk9DLAogCQkJICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQg
KyBTQ1RQX0xPQ184KTsKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKQEAgLTk2MywxNSArOTczLDE1IEBAIHNjdHBfaGFuZGxlX3NodXRkb3du
KHN0cnVjdCBzY3RwX3NodXRkb3cKIAlpZiAoc3RjYiA9PSBOVUxMKQogCQlyZXR1cm47CiAJYXNv
YyA9ICZzdGNiLT5hc29jOwotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFU
RV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBf
U1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCXJldHVybjsKIAl9CiAJaWYgKG50b2hzKGNwLT5j
aC5jaHVua19sZW5ndGgpICE9IHNpemVvZihzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuaykpIHsK
IAkJLyogU2h1dGRvd24gTk9UIHRoZSBleHBlY3RlZCBzaXplICovCiAJCXJldHVybjsKIAl9Ci0J
b2xkX3N0YXRlID0gU0NUUF9HRVRfU1RBVEUoYXNvYyk7CisJb2xkX3N0YXRlID0gU0NUUF9HRVRf
U1RBVEUoc3RjYik7CiAJc2N0cF91cGRhdGVfYWNrZWQoc3RjYiwgY3AsIGFib3J0X2ZsYWcpOwog
CWlmICgqYWJvcnRfZmxhZykgewogCQlyZXR1cm47CkBAIC0xMDI3LDExICsxMDM3LDEwIEBAIHNj
dHBfaGFuZGxlX3NodXRkb3duKHN0cnVjdCBzY3RwX3NodXRkb3cKIAl9CiAJLyogZ290byBTSFVU
RE9XTl9SRUNFSVZFRCBzdGF0ZSB0byBibG9jayBuZXcgcmVxdWVzdHMgKi8KIAlpZiAoc3RjYi0+
c2N0cF9zb2NrZXQpIHsKLQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRF
X1NIVVRET1dOX1JFQ0VJVkVEKSAmJgotCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFND
VFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpICYmCi0JCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNv
YykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSkgewotCQkJU0NUUF9TRVRfU1RBVEUoYXNv
YywgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCk7Ci0JCQlTQ1RQX0NMRUFSX1NVQlNUQVRF
KGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CisJCWlmICgoU0NUUF9HRVRfU1RB
VEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJICAgIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSAmJgorCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkpIHsK
KwkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpOwog
CQkJLyogbm90aWZ5IHVwcGVyIGxheWVyIHRoYXQgcGVlciBoYXMgaW5pdGlhdGVkIGEgc2h1dGRv
d24gKi8KIAkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9QRUVSX1NIVVRET1dOLCBzdGNi
LCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCkBAIC0xMDM5LDcgKzEwNDgsNyBAQCBz
Y3RwX2hhbmRsZV9zaHV0ZG93bihzdHJ1Y3Qgc2N0cF9zaHV0ZG93CiAJCQkodm9pZClTQ1RQX0dF
VFRJTUVfVElNRVZBTCgmYXNvYy0+dGltZV9lbnRlcmVkKTsKIAkJfQogCX0KLQlpZiAoU0NUUF9H
RVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7CisJaWYgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgewogCQkvKgogCQkg
KiBzdG9wIHRoZSBzaHV0ZG93biB0aW1lciwgc2luY2Ugd2UgV0lMTCBtb3ZlIHRvCiAJCSAqIFNI
VVRET1dOLUFDSy1TRU5ULgpAQCAtMTA1OSwxMyArMTA2OCwxMiBAQCBzY3RwX2hhbmRsZV9zaHV0
ZG93bihzdHJ1Y3Qgc2N0cF9zaHV0ZG93CiAJCS8qIG5vIG91dHN0YW5kaW5nIGRhdGEgdG8gc2Vu
ZCwgc28gbW92ZSBvbi4uLiAqLwogCQkvKiBzZW5kIFNIVVRET1dOLUFDSyAqLwogCQkvKiBtb3Zl
IHRvIFNIVVRET1dOLUFDSy1TRU5UIHN0YXRlICovCi0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNv
YykgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUo
c3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQlTQ1RQX1NUQVRfREVDUl9H
QVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCX0KLQkJU0NUUF9DTEVBUl9TVUJTVEFURShhc29j
LCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOwotCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNv
YykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgewotCQkJU0NUUF9TRVRfU1RBVEUo
YXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCk7CisJCWlmIChTQ1RQX0dFVF9TVEFU
RShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7CisJCQlTQ1RQX1NFVF9T
VEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKTsKIAkJCXNjdHBfc3RvcF90
aW1lcnNfZm9yX3NodXRkb3duKHN0Y2IpOwogCQkJc2N0cF9zZW5kX3NodXRkb3duX2FjayhzdGNi
LCBuZXQpOwogCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05BQ0ss
CkBAIC0xMDk0LDE1ICsxMTAyLDE1IEBAIHNjdHBfaGFuZGxlX3NodXRkb3duX2FjayhzdHJ1Y3Qg
c2N0cF9zaHUKIAogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAkvKiBwcm9jZXNzIGFjY29yZGluZyB0
byBhc3NvY2lhdGlvbiBzdGF0ZSAqLwotCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NU
UF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFND
VFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCS8qIHVuZXhwZWN0ZWQgU0hVVERPV04t
QUNLLi4uIGRvIE9PVEIgaGFuZGxpbmcuLi4gKi8KIAkJc2N0cF9zZW5kX3NodXRkb3duX2NvbXBs
ZXRlKHN0Y2IsIG5ldCwgMSk7CiAJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJcmV0dXJuOwog
CX0KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgJiYKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05f
QUNLX1NFTlQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1NFTlQpICYmCisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRF
X1NIVVRET1dOX0FDS19TRU5UKSkgewogCQkvKiB1bmV4cGVjdGVkIFNIVVRET1dOLUFDSy4uLiBz
byBpZ25vcmUuLi4gKi8KIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQlyZXR1cm47CkBAIC0x
Mjk4LDcgKzEzMDYsNyBAQCBzY3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAq
CiAJCQkgKiB3YWl0aW5nLgogCQkJICovCiAJCQlpZiAoKGNhdXNlX2xlbmd0aCA+PSBzaXplb2Yo
c3RydWN0IHNjdHBfZXJyb3Jfc3RhbGVfY29va2llKSkgJiYKLQkJCSAgICAoU0NUUF9HRVRfU1RB
VEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCQkJICAgIChTQ1RQX0dF
VF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCQkJc3RydWN0
IHNjdHBfZXJyb3Jfc3RhbGVfY29va2llICpzdGFsZV9jb29raWU7CiAKIAkJCQlzdGFsZV9jb29r
aWUgPSAoc3RydWN0IHNjdHBfZXJyb3Jfc3RhbGVfY29va2llICopY2F1c2U7CkBAIC0xMzMxLDgg
KzEzMzksNyBAQCBzY3RwX2hhbmRsZV9lcnJvcihzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqCiAJCQkJ
fQogCQkJCS8qIGJsYXN0IGJhY2sgdG8gSU5JVCBzdGF0ZSAqLwogCQkJCXNjdHBfdG9zc19vbGRf
Y29va2llcyhzdGNiLCAmc3RjYi0+YXNvYyk7Ci0JCQkJYXNvYy0+c3RhdGUgJj0gflNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRDsKLQkJCQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRFX0NPT0tJRV9X
QUlUOworCQkJCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOwog
CQkJCXNjdHBfc3RvcF9hbGxfY29va2llX3RpbWVycyhzdGNiKTsKIAkJCQlzY3RwX3NlbmRfaW5p
dGlhdGUoc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJCX0KQEAg
LTE0OTUsNyArMTUwMiw3IEBAIHNjdHBfaGFuZGxlX2luaXRfYWNrKHN0cnVjdCBtYnVmICptLCBp
bnQKIAkJcmV0dXJuICgtMSk7CiAJfQogCS8qIHByb2Nlc3MgYWNjb3JkaW5nIHRvIGFzc29jaWF0
aW9uIHN0YXRlLi4uICovCi0Jc3dpdGNoIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9N
QVNLKSB7CisJc3dpdGNoIChTQ1RQX0dFVF9TVEFURShzdGNiKSkgewogCWNhc2UgU0NUUF9TVEFU
RV9DT09LSUVfV0FJVDoKIAkJLyogdGhpcyBpcyB0aGUgZXhwZWN0ZWQgc3RhdGUgZm9yIHRoaXMg
Y2h1bmsgKi8KIAkJLyogcHJvY2VzcyB0aGUgSU5JVC1BQ0sgcGFyYW1ldGVycyAqLwpAQCAtMTUy
Myw3ICsxNTMwLDcgQEAgc2N0cF9oYW5kbGVfaW5pdF9hY2soc3RydWN0IG1idWYgKm0sIGludAog
CQl9CiAJCS8qIHVwZGF0ZSBvdXIgc3RhdGUgKi8KIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVU
MiwgIm1vdmluZyB0byBDT09LSUUtRUNIT0VEIHN0YXRlXG4iKTsKLQkJU0NUUF9TRVRfU1RBVEUo
JnN0Y2ItPmFzb2MsIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCk7CisJCVNDVFBfU0VUX1NUQVRF
KHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCk7CiAKIAkJLyogcmVzZXQgdGhlIFJUTyBj
YWxjICovCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQ
X1RIUkVTSE9MRF9MT0dHSU5HKSB7CkBAIC0xNjIxLDcgKzE2MjgsNyBAQCBzY3RwX3Byb2Nlc3Nf
Y29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmCiAJaWYgKGhvd19pbmR4IDwgc2l6ZW9mKGFzb2Mt
PmNvb2tpZV9ob3cpKSB7CiAJCWFzb2MtPmNvb2tpZV9ob3dbaG93X2luZHhdID0gMTsKIAl9Ci0J
aWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQp
IHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tf
U0VOVCkgewogCQkvKiBTSFVURE9XTiBjYW1lIGluIGFmdGVyIHNlbmRpbmcgSU5JVC1BQ0sgKi8K
IAkJc2N0cF9zZW5kX3NodXRkb3duX2FjayhzdGNiLCBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGlu
YXRpb24pOwogCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfQ09PS0lF
X0lOX1NIVVRET1dOLCAiIik7CkBAIC0xNjkyLDcgKzE2OTksNyBAQCBzY3RwX3Byb2Nlc3NfY29v
a2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmCiAJCQlyZXR1cm4gKE5VTEwpOwogCiAJCX0KLQkJc3dp
dGNoIChTQ1RQX0dFVF9TVEFURShhc29jKSkgeworCQlzd2l0Y2ggKFNDVFBfR0VUX1NUQVRFKHN0
Y2IpKSB7CiAJCQljYXNlIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQ6CiAJCQljYXNlIFNDVFBfU1RB
VEVfQ09PS0lFX0VDSE9FRDoKIAkJCQkvKgpAQCAtMTcxNiwxMiArMTcyMywxMiBAQCBzY3RwX3By
b2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmCiAJCQkJICAgICAgICAgICAgICAgIHN0
Y2IsIG5ldCwKIAkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfSU5QVVQgKyBTQ1RQ
X0xPQ18xNCk7CiAJCQkJLyogdXBkYXRlIGN1cnJlbnQgc3RhdGUgKi8KLQkJCQlpZiAoU0NUUF9H
RVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKQorCQkJCWlmIChTQ1RQ
X0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpCiAJCQkJCVNDVFBf
U1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hY3RpdmVlc3RhYik7CiAJCQkJZWxzZQogCQkJCQlT
Q1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfY29sbGlzaW9uZXN0YWIpOwogCi0JCQkJU0NU
UF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwkJCQlTQ1RQX1NFVF9TVEFURShz
dGNiLCBTQ1RQX1NUQVRFX09QRU4pOwogCQkJCWlmIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVf
U0hVVERPV05fUEVORElORykgewogCQkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQ
RV9TSFVURE9XTkdVQVJELAogCQkJCQkJCSBzdGNiLT5zY3RwX2VwLCBzdGNiLCBhc29jLT5wcmlt
YXJ5X2Rlc3RpbmF0aW9uKTsKQEAgLTE3NjgsOSArMTc3NSw4IEBAIHNjdHBfcHJvY2Vzc19jb29r
aWVfZXhpc3Rpbmcoc3RydWN0IG1idWYKIAkJCQlvbGQudHZfc2VjID0gY29va2llLT50aW1lX2Vu
dGVyZWQudHZfc2VjOwogCQkJCW9sZC50dl91c2VjID0gY29va2llLT50aW1lX2VudGVyZWQudHZf
dXNlYzsKIAkJCQluZXQtPmhiX3Jlc3BvbmRlZCA9IDE7Ci0JCQkJbmV0LT5SVE8gPSBzY3RwX2Nh
bGN1bGF0ZV9ydG8oc3RjYiwgYXNvYywgbmV0LAotCQkJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZvbGQsCi0JCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRf
RlJPTV9OT05fREFUQSk7CisJCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsIG5ldCwg
Jm9sZCwKKwkJCQkgICAgICAgICAgICAgICAgICAgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7CiAK
IAkJCQlpZiAoc3RjYi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90aWNrcyAmJgogCQkJCSAgICAoc2N0
cF9pc19mZWF0dXJlX29uKGlucCwgU0NUUF9QQ0JfRkxBR1NfQVVUT0NMT1NFKSkpIHsKQEAgLTE4
MjAsNyArMTgyNiw3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0IG1idWYK
IAkvKiBJZiBuYXQgc3VwcG9ydCwgYW5kIHRoZSBiZWxvdyBhbmQgc3RjYiBpcyBlc3RhYmxpc2hl
ZCwKIAkgKiBzZW5kIGJhY2sgYSBBQk9SVChjb2xsaWRpbmcgc3RhdGUpIGlmIHdlIGFyZSBlc3Rh
Ymxpc2hlZC4KIAkgKi8KLQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVf
T1BFTikgICYmCisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4p
ICAmJgogCSAgICAoYXNvYy0+cGVlcl9zdXBwb3J0c19uYXQpICYmCiAJICAgICgobnRvaGwoaW5p
dGFja19jcC0+aW5pdC5pbml0aWF0ZV90YWcpID09IGFzb2MtPm15X3Z0YWcpICYmCiAJICAgICgo
bnRvaGwoaW5pdF9jcC0+aW5pdC5pbml0aWF0ZV90YWcpICE9IGFzb2MtPnBlZXJfdnRhZykgfHwK
QEAgLTE5MjMsOCArMTkyOSw4IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0
IG1idWYKIAkJCQlhc29jLT5jb29raWVfaG93W2hvd19pbmR4XSA9IDEwOwogCQkJcmV0dXJuIChO
VUxMKTsKIAkJfQotCQlpZiAoKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9DT09LSUVfV0FJVCkg
fHwKLQkJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKKwkJ
aWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAor
CQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkp
IHsKIAkJCSpub3RpZmljYXRpb24gPSBTQ1RQX05PVElGWV9BU1NPQ19VUDsKIAogCQkJaWYgKCgo
c3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CkBA
IC0xOTUyLDE3ICsxOTU4LDE3IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmcoc3RydWN0
IG1idWYKIAkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDEpOwogI2VuZGlmCiAJCQl9Ci0JCQlp
ZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKQorCQkJ
aWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkKIAkJ
CQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWN0aXZlZXN0YWIpOwogCQkJZWxzZQog
CQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19jb2xsaXNpb25lc3RhYik7CiAJCQlT
Q1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7Ci0JCX0gZWxzZSBpZiAoU0NU
UF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCX0gZWxzZSBpZiAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB7CiAJCQlTQ1RQX1NUQVRfSU5D
Ul9DT1VOVEVSMzIoc2N0cHNfcmVzdGFydGVzdGFiKTsKIAkJfSBlbHNlIHsKIAkJCVNDVFBfU1RB
VF9JTkNSX0NPVU5URVIzMihzY3Rwc19jb2xsaXNpb25lc3RhYik7CiAJCX0KLQkJU0NUUF9TRVRf
U1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9PUEVOKTsKIAkJaWYgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9Q
RU5ESU5HKSB7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTkdV
QVJELAogCQkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgYXNvYy0+cHJpbWFyeV9kZXN0aW5hdGlv
bik7CkBAIC0yMDIzLDI0ICsyMDI5LDI0IEBAIHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rpbmco
c3RydWN0IG1idWYKIAkJLyogbm90aWZ5IHVwcGVyIGxheWVyICovCiAJCSpub3RpZmljYXRpb24g
PSBTQ1RQX05PVElGWV9BU1NPQ19SRVNUQVJUOwogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNv
Yy5yZWZjbnQsIDEpOwotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVf
T1BFTikgJiYKLQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1JFQ0VJVkVEKSAmJgotCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RB
VEVfU0hVVERPV05fU0VOVCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQ
X1NUQVRFX09QRU4pICYmCisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpKSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNj
dHBzX2N1cnJlc3RhYik7CiAJCX0KLQkJaWYgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBf
U1RBVEVfT1BFTikgeworCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9P
UEVOKSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX3Jlc3RhcnRlc3RhYik7Ci0J
CX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9T
RU5UKSB7CisJCX0gZWxzZSBpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKSB7CiAJCQlTQ1RQX1NUQVRfSU5DUl9HQVVHRTMyKHNjdHBzX2NvbGxpc2lv
bmVzdGFiKTsKIAkJfQogCQlpZiAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BF
TkRJTkcpIHsKLQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJCQlT
Q1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX09QRU4pOwogCQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwKIAkJCQkJIHN0Y2ItPnNjdHBfZXAsIHN0
Y2IsIGFzb2MtPnByaW1hcnlfZGVzdGluYXRpb24pOwogCi0JCX0gZWxzZSBpZiAoIShhc29jLT5z
dGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkpIHsKKwkJfSBlbHNlIGlmIChTQ1RQX0dF
VF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHsKIAkJCS8qIG1vdmUg
dG8gT1BFTiBzdGF0ZSwgaWYgbm90IGluIFNIVVRET1dOX1NFTlQgKi8KLQkJCVNDVFBfU0VUX1NU
QVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQ
X1NUQVRFX09QRU4pOwogCQl9CiAJCWFzb2MtPnByZV9vcGVuX3N0cmVhbXMgPQogCQkJbnRvaHMo
aW5pdGFja19jcC0+aW5pdC5udW1fb3V0Ym91bmRfc3RyZWFtcyk7CkBAIC0yMjQ0LDEzICsyMjUw
LDEzIEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBtYnVmICptLCAKIAkgICAgICAg
ICAgICAgICAgICAgICAgIG50b2hzKGluaXRhY2tfY3AtPmluaXQubnVtX291dGJvdW5kX3N0cmVh
bXMpLAogCSAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKICNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMDAKLQkgICAgICAgICAgICAgICAgICAg
ICAgIChzdHJ1Y3QgdGhyZWFkICopTlVMTAorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVj
dCB0aHJlYWQgKilOVUxMLAogI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKLQkgICAgICAgICAg
ICAgICAgICAgICAgIChQS1RIUkVBRClOVUxMCisJICAgICAgICAgICAgICAgICAgICAgICAoUEtU
SFJFQUQpTlVMTCwKICNlbHNlCi0JICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2Mg
KilOVUxMCisJICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2MgKilOVUxMLAogI2Vu
ZGlmCi0JICAgICAgICAgICAgICAgICAgICAgICApOworCSAgICAgICAgICAgICAgICAgICAgICAg
U0NUUF9ET05UX0lOSVRJQUxJWkVfQVVUSF9QQVJBTVMpOwogCWlmIChzdGNiID09IE5VTEwpIHsK
IAkJc3RydWN0IG1idWYgKm9wX2VycjsKIApAQCAtMjQ2Miw3ICsyNDY4LDcgQEAgc2N0cF9wcm9j
ZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIAogCiAJLyogdXBkYXRlIGN1cnJlbnQgc3Rh
dGUgKi8KIAlTQ1RQREJHKFNDVFBfREVCVUdfSU5QVVQyLCAibW92aW5nIHRvIE9QRU4gc3RhdGVc
biIpOwotCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfT1BFTik7CisJU0NUUF9TRVRf
U1RBVEUoc3RjYiwgU0NUUF9TVEFURV9PUEVOKTsKIAlpZiAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NU
QVRFX1NIVVRET1dOX1BFTkRJTkcpIHsKIAkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZ
UEVfU0hVVERPV05HVUFSRCwKIAkJCQkgc3RjYi0+c2N0cF9lcCwgc3RjYiwgYXNvYy0+cHJpbWFy
eV9kZXN0aW5hdGlvbik7CkBAIC0yNTI0LDggKzI1MzAsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2ll
X25ldyhzdHJ1Y3QgbWJ1ZiAqbSwgCiAJCS8qIGNhbGN1bGF0ZSB0aGUgUlRUIGFuZCBzZXQgdGhl
IGVuY2FwcyBwb3J0ICovCiAJCW9sZC50dl9zZWMgPSBjb29raWUtPnRpbWVfZW50ZXJlZC50dl9z
ZWM7CiAJCW9sZC50dl91c2VjID0gY29va2llLT50aW1lX2VudGVyZWQudHZfdXNlYzsKLQkJKCpu
ZXRwKS0+UlRPID0gc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2MsICpuZXRwLAotCQkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9sZCwgU0NUUF9SVFRfRlJPTV9OT05fREFU
QSk7CisJCXNjdHBfY2FsY3VsYXRlX3J0byhzdGNiLCBhc29jLCAqbmV0cCwgJm9sZCwgU0NUUF9S
VFRfRlJPTV9OT05fREFUQSk7CiAJfQogCS8qIHJlc3BvbmQgd2l0aCBhIENPT0tJRS1BQ0sgKi8K
IAlzY3RwX3NlbmRfY29va2llX2FjayhzdGNiKTsKQEAgLTI2NzgsNyArMjY4Myw3IEBAIHNjdHBf
aGFuZGxlX2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLCAKIAkJcmV0dXJuIChOVUxMKTsKIAl9
CiAJLyogY29tcGFyZSB0aGUgcmVjZWl2ZWQgZGlnZXN0IHdpdGggdGhlIGNvbXB1dGVkIGRpZ2Vz
dCAqLwotCWlmIChtZW1jbXAoY2FsY19zaWcsIHNpZywgU0NUUF9TSUdOQVRVUkVfU0laRSkgIT0g
MCkgeworCWlmICh0aW1pbmdzYWZlX2JjbXAoY2FsY19zaWcsIHNpZywgU0NUUF9TSUdOQVRVUkVf
U0laRSkgIT0gMCkgewogCQkvKiB0cnkgdGhlIG9sZCBjb29raWU/ICovCiAJCWlmICgoY29va2ll
LT50aW1lX2VudGVyZWQudHZfc2VjID09IChsb25nKWVwLT50aW1lX29mX3NlY3JldF9jaGFuZ2Up
ICYmCiAJCSAgICAoZXAtPmN1cnJlbnRfc2VjcmV0X251bWJlciAhPSBlcC0+bGFzdF9zZWNyZXRf
bnVtYmVyKSkgewpAQCAtMjY4Nyw3ICsyNjkyLDcgQEAgc2N0cF9oYW5kbGVfY29va2llX2VjaG8o
c3RydWN0IG1idWYgKm0sIAogCQkJICAgICh1aW50OF90ICopZXAtPnNlY3JldF9rZXlbKGludCll
cC0+bGFzdF9zZWNyZXRfbnVtYmVyXSwKIAkJCSAgICBTQ1RQX1NFQ1JFVF9TSVpFLCBtLCBjb29r
aWVfb2Zmc2V0LCBjYWxjX3NpZywgMCk7CiAJCQkvKiBjb21wYXJlICovCi0JCQlpZiAobWVtY21w
KGNhbGNfc2lnLCBzaWcsIFNDVFBfU0lHTkFUVVJFX1NJWkUpID09IDApCisJCQlpZiAodGltaW5n
c2FmZV9iY21wKGNhbGNfc2lnLCBzaWcsIFNDVFBfU0lHTkFUVVJFX1NJWkUpID09IDApCiAJCQkJ
Y29va2llX29rID0gMTsKIAkJfQogCX0gZWxzZSB7CkBAIC0zMDY3LDcgKzMwNzIsNyBAQCBzY3Rw
X2hhbmRsZV9jb29raWVfZWNobyhzdHJ1Y3QgbWJ1ZiAqbSwgCiAJCQkgKiB0aGUgYWNjZXB0IHN0
YXRlIHdhaXRpbmcgZm9yIHRoZSBhY2NlcHQhCiAJCQkgKi8KIAkJCWlmICgqc3RjYikgewotCQkJ
CSgqc3RjYiktPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7CisJCQkJ
U0NUUF9BRERfU1VCU1RBVEUoKnN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKIAkJ
CX0KIAkJCXNjdHBfbW92ZV9wY2JfYW5kX2Fzc29jKCppbnBfcCwgaW5wLCAqc3RjYik7CiAKQEAg
LTMxNTQsMTAgKzMxNTksMTAgQEAgc2N0cF9oYW5kbGVfY29va2llX2FjayhzdHJ1Y3Qgc2N0cF9j
b29raQogCWFzb2MtPm92ZXJhbGxfZXJyb3JfY291bnQgPSAwOwogCXNjdHBfc3RvcF9hbGxfY29v
a2llX3RpbWVycyhzdGNiKTsKIAkvKiBwcm9jZXNzIGFjY29yZGluZyB0byBhc3NvY2lhdGlvbiBz
dGF0ZSAqLwotCWlmIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9F
Q0hPRUQpIHsKKwlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSB7CiAJCS8qIHN0YXRlIGNoYW5nZSBvbmx5IG5lZWRlZCB3aGVuIEkgYW0gaW4gcmln
aHQgc3RhdGUgKi8KIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMiwgIm1vdmluZyB0byBPUEVO
IHN0YXRlXG4iKTsKLQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9PUEVOKTsKKwkJ
U0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9PUEVOKTsKIAkJc2N0cF9zdGFydF9uZXRf
dGltZXJzKHN0Y2IpOwogCQlpZiAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BF
TkRJTkcpIHsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VB
UkQsCkBAIC0zMTY4LDkgKzMxNzMsOCBAQCBzY3RwX2hhbmRsZV9jb29raWVfYWNrKHN0cnVjdCBz
Y3RwX2Nvb2tpCiAJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hY3RpdmVlc3RhYik7
CiAJCVNDVFBfU1RBVF9JTkNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAkJaWYgKGFzb2Mt
Pm92ZXJhbGxfZXJyb3JfY291bnQgPT0gMCkgewotCQkJbmV0LT5SVE8gPSBzY3RwX2NhbGN1bGF0
ZV9ydG8oc3RjYiwgYXNvYywgbmV0LAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmFzb2MtPnRpbWVfZW50ZXJlZCwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFND
VFBfUlRUX0ZST01fTk9OX0RBVEEpOworCQkJc2N0cF9jYWxjdWxhdGVfcnRvKHN0Y2IsIGFzb2Ms
IG5ldCwgJmFzb2MtPnRpbWVfZW50ZXJlZCwKKwkJCSAgICAgICAgICAgICAgICAgICBTQ1RQX1JU
VF9GUk9NX05PTl9EQVRBKTsKIAkJfQogCQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmYXNv
Yy0+dGltZV9lbnRlcmVkKTsKIAkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTU09DX1VQ
LCBzdGNiLCAwLCBOVUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwpAQCAtMzQxMSw3ICszNDE1LDYg
QEAgc3RhdGljIHZvaWQKIHNjdHBfaGFuZGxlX3NodXRkb3duX2NvbXBsZXRlKHN0cnVjdCBzY3Rw
X3NodXRkb3duX2NvbXBsZXRlX2NodW5rICpjcCBTQ1RQX1VOVVNFRCwKICAgICBzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIHsKLQlzdHJ1Y3Qgc2N0cF9hc3Nv
Y2lhdGlvbiAqYXNvYzsKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NP
X0xPQ0tfVEVTVElORykKIAlzdHJ1Y3Qgc29ja2V0ICpzbzsKICNlbmRpZgpAQCAtMzQyMSw5ICsz
NDI0LDggQEAgc2N0cF9oYW5kbGVfc2h1dGRvd25fY29tcGxldGUoc3RydWN0IHNjdAogCWlmIChz
dGNiID09IE5VTEwpCiAJCXJldHVybjsKIAotCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAkvKiBwcm9j
ZXNzIGFjY29yZGluZyB0byBhc3NvY2lhdGlvbiBzdGF0ZSAqLwotCWlmIChTQ1RQX0dFVF9TVEFU
RShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7CisJaWYgKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHsKIAkJLyogdW5l
eHBlY3RlZCBTSFVURE9XTi1DT01QTEVURS4uLiBzbyBpZ25vcmUuLi4gKi8KIAkJU0NUUERCRyhT
Q1RQX0RFQlVHX0lOUFVUMiwKIAkJCSJzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0ZTogbm90
IGluIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQgLS0tIGlnbm9yZVxuIik7CkBAIC0zNDM1
LDggKzM0MzcsOCBAQCBzY3RwX2hhbmRsZV9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0CiAJ
CXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9BU1NPQ19ET1dOLCBzdGNiLCAwLCBOVUxMLCBT
Q1RQX1NPX05PVF9MT0NLRUQpOwogCX0KICNpZmRlZiBJTlZBUklBTlRTCi0JaWYgKCFUQUlMUV9F
TVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgfHwKLQkgICAgIVRBSUxRX0VNUFRZKCZhc29jLT5zZW50
X3F1ZXVlKSB8fAorCWlmICghVEFJTFFfRU1QVFkoJnN0Y2ItPmFzb2Muc2VuZF9xdWV1ZSkgfHwK
KwkgICAgIVRBSUxRX0VNUFRZKCZzdGNiLT5hc29jLnNlbnRfcXVldWUpIHx8CiAJICAgIHNjdHBf
aXNfdGhlcmVfdW5zZW50X2RhdGEoc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKSkgewogCQlwYW5p
YygiUXVldWVzIGFyZSBub3QgZW1wdHkgd2hlbiBoYW5kbGluZyBTSFVURE9XTi1DT01QTEVURSIp
OwogCX0KQEAgLTQ5NDAsNyArNDk0Miw3IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBt
YnVmICptLCBpbnQKIAlpZiAoKChjaC0+Y2h1bmtfdHlwZSA9PSBTQ1RQX1NFTEVDVElWRV9BQ0sp
IHx8CiAJICAgICAoY2gtPmNodW5rX3R5cGUgPT0gU0NUUF9OUl9TRUxFQ1RJVkVfQUNLKSB8fAog
CSAgICAgKGNoLT5jaHVua190eXBlID09IFNDVFBfSEVBUlRCRUFUX1JFUVVFU1QpKSAmJgotCSAg
ICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9F
RCkpIHsKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VD
SE9FRCkpIHsKIAkJLyogaW1wbGllZCBjb29raWUtYWNrLi4gd2UgbXVzdCBoYXZlIGxvc3QgdGhl
IGFjayAqLwogCQlzY3RwX2hhbmRsZV9jb29raWVfYWNrKChzdHJ1Y3Qgc2N0cF9jb29raWVfYWNr
X2NodW5rICopY2gsIHN0Y2IsCiAJCQkJICAgICAgICpuZXRwKTsKQEAgLTUxNDAsNyArNTE0Miw3
IEBAIHNjdHBfcHJvY2Vzc19jb250cm9sKHN0cnVjdCBtYnVmICptLCBpbnQKIAkJCQkJYnJlYWs7
CiAJCQkJfQogCQkJfQotCQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQ
X1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB7CisJCQlpZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikg
PT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgewogCQkJCS8qLQogCQkJCSAqIElmIHdl
IGhhdmUgc2VudCBhIHNodXRkb3duLWFjaywgd2Ugd2lsbCBwYXkgbm8KIAkJCQkgKiBhdHRlbnRp
b24gdG8gYSBzYWNrIHNlbnQgaW4gdG8gdXMgc2luY2UKQEAgLTU3MzEsNiArNTczMyw5IEBAIHNj
dHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYKIAlzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wID0gTlVMTCwgKmlucF9kZWNyID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Ig
PSBOVUxMOwogCXN0cnVjdCBzY3RwX25ldHMgKm5ldCA9IE5VTEw7CisjaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQorCXN0cnVjdCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQgPSBOVUxMOworI2VuZGlm
CiAKIAlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2ZGF0YWdyYW1zKTsKICNpZmRlZiBTQ1RQX0FV
RElUSU5HX0VOQUJMRUQKQEAgLTU3NzEsNiArNTc3Niw3IEBAIHNjdHBfY29tbW9uX2lucHV0X3By
b2Nlc3Npbmcoc3RydWN0IG1idWYKIAkJCQluZXQtPmZsb3d0eXBlID0gbWZsb3d0eXBlOwogCQkJ
CW5ldC0+Zmxvd2lkID0gbWZsb3dpZDsKIAkJCX0KKwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5V
TEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKICNlbmRpZgogCQkJaWYgKChpbnAgIT0gTlVMTCkgJiYg
KHN0Y2IgIT0gTlVMTCkpIHsKIAkJCQlzY3RwX3NlbmRfcGFja2V0X2Ryb3BwZWQoc3RjYiwgbmV0
LCBtLCBsZW5ndGgsIGlwaGxlbiwgMSk7CkBAIC01ODE0LDYgKzU4MjAsOSBAQCBzY3RwX2NvbW1v
bl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmCiAJfQogI2VuZGlmCiAJaWYgKGlucCA9PSBO
VUxMKSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJU0NUUF9QUk9CRTUocmVjZWl2ZSwg
TlVMTCwgc3RjYiwgbSwgc3RjYiwgc2gpOworI2VuZGlmCiAJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X25vcG9ydCk7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKCgoX19GcmVlQlNEX3ZlcnNp
b24gPCA5MDAwMDApICYmIChfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDQwMDApKSB8fCAoX19GcmVl
QlNEX3ZlcnNpb24gPiA5MDAwMDApKQogCQlpZiAoYmFkcG9ydF9iYW5kbGltKEJBTkRMSU1fU0NU
UF9PT1RCKSA8IDApIHsKQEAgLTU4NjgsNiArNTg3Nyw5IEBAIHNjdHBfY29tbW9uX2lucHV0X3By
b2Nlc3Npbmcoc3RydWN0IG1idWYKIAkJCSAqLwogCQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwog
CQkJc3RjYiA9IE5VTEw7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCVNDVFBfUFJPQkU1
KHJlY2VpdmUsIE5VTEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKKyNlbmRpZgogCQkJc25wcmludGYo
bXNnLCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9f
LCBfX2Z1bmNfXyk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQkFTRV9T
WVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1zZyk7CkBAIC01ODc4LDggKzU4OTAsMjEgQEAgc2N0cF9jb21tb25faW5wdXRfcHJvY2Vz
c2luZyhzdHJ1Y3QgbWJ1ZgogCQkJICAgICAgICAgICAgICAgICB2cmZfaWQsIHBvcnQpOwogCQkJ
Z290byBvdXQ7CiAJCX0KLQogCX0KKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKChz
dGNiICE9IE5VTEwpICYmCisJICAgICEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1NPQ0tFVF9HT05FKSAmJgorCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVM
TCkpIHsKKwkJaWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19oZWFkICE9IE5VTEwpIHsKKwkJCXVw
Y2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tldC0+c29faGVhZDsKKwkJfSBlbHNlIHsKKwkJ
CXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJfQorCQlTT0NLX0xPQ0sodXBj
YWxsX3NvY2tldCk7CisJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQlTT0NLX1VOTE9DSyh1cGNh
bGxfc29ja2V0KTsKKwl9CisjZW5kaWYKIAlpZiAoSVNfU0NUUF9DT05UUk9MKGNoKSkgewogCQkv
KiBwcm9jZXNzIHRoZSBjb250cm9sIHBvcnRpb24gb2YgdGhlIFNDVFAgcGFja2V0ICovCiAJCS8q
IHNhX2lnbm9yZSBOT19OVUxMX0NISyAqLwpAQCAtNTkyNywxMSArNTk1MiwxNyBAQCBzY3RwX2Nv
bW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmCiAJCWlmICgoc3RjYiAhPSBOVUxMKSAm
JgogCQkgICAgc2N0cF9hdXRoX2lzX3JlcXVpcmVkX2NodW5rKFNDVFBfREFUQSwgc3RjYi0+YXNv
Yy5sb2NhbF9hdXRoX2NodW5rcykpIHsKIAkJCS8qICJzaWxlbnRseSIgaWdub3JlICovCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIHN0Y2Is
IG0sIHN0Y2IsIHNoKTsKKyNlbmRpZgogCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmF1dGht
aXNzaW5nKTsKIAkJCWdvdG8gb3V0OwogCQl9CiAJCWlmIChzdGNiID09IE5VTEwpIHsKIAkJCS8q
IG91dCBvZiB0aGUgYmx1ZSBEQVRBIGNodW5rICovCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KwkJCVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIE5VTEwsIG0sIE5VTEwsIHNoKTsKKyNlbmRp
ZgogCQkJc25wcmludGYobXNnLCBzaXplb2YobXNnKSwgIk9PVEIsICVzOiVkIGF0ICVzIiwgX19G
SUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXyk7CiAJCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX2Nh
dXNlKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9fY29kZSksCiAJCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZyk7CkBAIC01OTQ0LDExICs1OTc1LDE3IEBAIHNjdHBfY29t
bW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYKIAkJfQogCQlpZiAoc3RjYi0+YXNvYy5t
eV92dGFnICE9IG50b2hsKHNoLT52X3RhZykpIHsKIAkJCS8qIHZfdGFnIG1pc21hdGNoISAqLwor
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQlTQ1RQX1BST0JFNShyZWNlaXZlLCBOVUxMLCBz
dGNiLCBtLCBzdGNiLCBzaCk7CisjZW5kaWYKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX2JhZHZ0
YWcpOwogCQkJZ290byBvdXQ7CiAJCX0KIAl9CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
CVNDVFBfUFJPQkU1KHJlY2VpdmUsIE5VTEwsIHN0Y2IsIG0sIHN0Y2IsIHNoKTsKKyNlbmRpZgog
CWlmIChzdGNiID09IE5VTEwpIHsKIAkJLyoKIAkJICogbm8gdmFsaWQgVENCIGZvciB0aGlzIHBh
Y2tldCwgb3Igd2UgZm91bmQgaXQncyBhIGJhZApAQCAtNTk1Nyw2ICs1OTk0LDIwIEBAIHNjdHBf
Y29tbW9uX2lucHV0X3Byb2Nlc3Npbmcoc3RydWN0IG1idWYKIAkJICovCiAJCWdvdG8gb3V0Owog
CX0KKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJaWYgKCh1cGNhbGxfc29ja2V0ID09IE5V
TEwpICYmCisJICAgICEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1NPQ0tFVF9HT05FKSAmJgorCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJ
aWYgKHN0Y2ItPnNjdHBfc29ja2V0LT5zb19oZWFkICE9IE5VTEwpIHsKKwkJCXVwY2FsbF9zb2Nr
ZXQgPSBzdGNiLT5zY3RwX3NvY2tldC0+c29faGVhZDsKKwkJfSBlbHNlIHsKKwkJCXVwY2FsbF9z
b2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJfQorCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tl
dCk7CisJCXNvcmVmKHVwY2FsbF9zb2NrZXQpOworCQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0
KTsKKwl9CisjZW5kaWYKIAogCS8qCiAJICogREFUQSBjaHVuayBwcm9jZXNzaW5nCkBAIC01OTg1
LDcgKzYwMzYsNyBAQCBzY3RwX2NvbW1vbl9pbnB1dF9wcm9jZXNzaW5nKHN0cnVjdCBtYnVmCiAJ
CSAqIG5vdCBnZXQgaGVyZSB1bmxlc3Mgd2UgcmVhbGx5IGRpZCBoYXZlIGEgdGFnLCBzbyB3ZSBk
b24ndAogCQkgKiBhYm9ydCBpZiB0aGlzIGhhcHBlbnMsIGp1c3QgZHVtcCB0aGUgY2h1bmsgc2ls
ZW50bHkuCiAJCSAqLwotCQlzd2l0Y2ggKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSkgewor
CQlzd2l0Y2ggKFNDVFBfR0VUX1NUQVRFKHN0Y2IpKSB7CiAJCWNhc2UgU0NUUF9TVEFURV9DT09L
SUVfRUNIT0VEOgogCQkJLyoKIAkJCSAqIHdlIGNvbnNpZGVyIGRhdGEgd2l0aCB2YWxpZCB0YWdz
IGluIHRoaXMgc3RhdGUKQEAgLTYwOTUsNiArNjE0NiwyMCBAQCB0cmlnZ2VyX3NlbmQ6CiAJaWYg
KHN0Y2IgIT0gTlVMTCkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJfQorI2lmIGRlZmlu
ZWQoX19Vc2Vyc3BhY2VfXykKKwlpZiAodXBjYWxsX3NvY2tldCAhPSBOVUxMKSB7CisJCWlmICh1
cGNhbGxfc29ja2V0LT5zb191cGNhbGwgIT0gTlVMTCkgeworCQkJaWYgKHNvcmVhZGFibGUodXBj
YWxsX3NvY2tldCkgfHwKKwkJCSAgICBzb3dyaXRlYWJsZSh1cGNhbGxfc29ja2V0KSB8fAorCQkJ
ICAgIHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yKSB7CisJCQkJKCp1cGNhbGxfc29ja2V0LT5zb191
cGNhbGwpKHVwY2FsbF9zb2NrZXQsIHVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbGFyZywgTV9OT1dB
SVQpOworCQkJfQorCQl9CisJCUFDQ0VQVF9MT0NLKCk7CisJCVNPQ0tfTE9DSyh1cGNhbGxfc29j
a2V0KTsKKwkJc29yZWxlKHVwY2FsbF9zb2NrZXQpOworCX0KKyNlbmRpZgogCWlmIChpbnBfZGVj
ciAhPSBOVUxMKSB7CiAJCS8qIHJlZHVjZSByZWYtY291bnQgKi8KIAkJU0NUUF9JTlBfV0xPQ0so
aW5wX2RlY3IpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3NfdXNl
cnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
b3NfdXNlcnNwYWNlLmgJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX29zX3VzZXJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4
IEBACiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgogI2luY2x1
ZGUgPGlwaGxwYXBpLmg+Ci0jaW5jbHVkZSA8TXN3c29jay5oPgotI2luY2x1ZGUgPFdpbmRvd3Mu
aD4KKyNpbmNsdWRlIDxtc3dzb2NrLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUg
InVzZXJfZW52aXJvbm1lbnQuaCIKIHR5cGVkZWYgQ1JJVElDQUxfU0VDVElPTiB1c2VybGFuZF9t
dXRleF90OwogI2lmIFdJTlZFUiA8IDB4MDYwMApAQCAtODAsNyArODAsNyBAQCB0eXBlZGVmIEhB
TkRMRSB1c2VybGFuZF90aHJlYWRfdDsKICNkZWZpbmUgSVBWRVJTSU9OICA0CiAjZGVmaW5lIE1B
WFRUTCAgICAgMjU1CiAvKiBWUzIwMTAgY29tZXMgd2l0aCBzdGRpbnQuaCAqLwotI2lmIF9NU0Nf
VkVSID49IDE2MDAKKyNpZiAhZGVmaW5lZChfTVNDX1ZFUikgfHwgKF9NU0NfVkVSID49IDE2MDAp
CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZWxzZQogI2RlZmluZSB1aW50NjRfdCAgIHVuc2lnbmVk
IF9faW50NjQKQEAgLTEwNSw4ICsxMDUsOSBAQCB0eXBlZGVmIEhBTkRMRSB1c2VybGFuZF90aHJl
YWRfdDsKICNkZWZpbmUgbl90aW1lICAgICB1bnNpZ25lZCBfX2ludDMyCiAjZGVmaW5lIHNhX2Zh
bWlseV90IHVuc2lnbmVkIF9faW50OAogI2RlZmluZSBzc2l6ZV90ICAgIF9faW50NjQKKyNpZiAh
ZGVmaW5lZChfX01JTkdXMzJfXykKICNkZWZpbmUgX19mdW5jX18JX19GVU5DVElPTl9fCi0KKyNl
bmRpZgogI2lmbmRlZiBFV09VTERCTE9DSwogI2RlZmluZSBFV09VTERCTE9DSyAgICAgICAgICAg
ICBXU0FFV09VTERCTE9DSwogI2VuZGlmCkBAIC0yMjAsNyArMjIxLDcgQEAgdHlwZWRlZiBjaGFy
KiBjYWRkcl90OwogCiAjZGVmaW5lIGJ6ZXJvKGJ1ZiwgbGVuKSBtZW1zZXQoYnVmLCAwLCBsZW4p
CiAjZGVmaW5lIGJjb3B5KHNyY0tleSwgZHN0S2V5LCBsZW4pIG1lbWNweShkc3RLZXksIHNyY0tl
eSwgbGVuKQotI2lmIF9NU0NfVkVSIDwgMTkwMAorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChf
TVNDX1ZFUiA8IDE5MDApICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogI2RlZmluZSBzbnByaW50
ZihkYXRhLCBzaXplLCBmb3JtYXQsIC4uLikgX3NucHJpbnRmX3MoZGF0YSwgc2l6ZSwgX1RSVU5D
QVRFLCBmb3JtYXQsIF9fVkFfQVJHU19fKQogI2VuZGlmCiAjZGVmaW5lIGlubGluZSBfX2lubGlu
ZQpAQCAtNDM1LDYgKzQzNiw3IEBAIHN0cnVjdCBzeCB7aW50IGR1bW15O307CiAKICNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KIC8q
ICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4gIGluIEZyZWVCU0QgZGVmaW5lcyBNU0laRSAqLwogLyog
I2luY2x1ZGUgPHN5cy9rdHIuaD4gKi8KIC8qICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4gKi8KQEAg
LTU2MiwxMSArNTY0LDYgQEAgc3RydWN0IHN4IHtpbnQgZHVtbXk7fTsKIAkJU0NUUF9CQVNFX1ZB
UihkZWJ1Z19wcmludGYpKF9fVkFfQVJHU19fKTsgXAogCX0KIAotI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pCi0jaWZuZGVmIGluNnBjYgotI2RlZmluZSBpbjZwY2IJCWlucGNiCi0jZW5kaWYKLSNl
bmRpZgogLyogRGVjbGFyZSBhbGwgdGhlIG1hbGxvYyBuYW1lcyBmb3IgYWxsIHRoZSB2YXJpb3Vz
IG1hbGxvY3MgKi8KIE1BTExPQ19ERUNMQVJFKFNDVFBfTV9NQVApOwogTUFMTE9DX0RFQ0xBUkUo
U0NUUF9NX1NUUk1JKTsKQEAgLTk2OSw3ICs5NjYsNyBAQCBpbnQgc2N0cF91c2Vyc3BhY2VfZ2V0
X210dV9mcm9tX2lmbih1aW50CiAjZGVmaW5lIElQdjZfSE9QX0xJTUlUIDEyOAogCiAvKiBpcyB0
aGUgZW5kcG9pbnQgdjZvbmx5PyAqLwotI2RlZmluZSBTQ1RQX0lQVjZfVjZPTkxZKGlucCkJKCgo
c3RydWN0IGlucGNiICopaW5wKS0+aW5wX2ZsYWdzICYgSU42UF9JUFY2X1Y2T05MWSkKKyNkZWZp
bmUgU0NUUF9JUFY2X1Y2T05MWShzY3RwX2lucGNiKQkoKHNjdHBfaW5wY2IpLT5pcF9pbnAuaW5w
LmlucF9mbGFncyAmIElONlBfSVBWNl9WNk9OTFkpCiAvKiBpcyB0aGUgc29ja2V0IG5vbi1ibG9j
a2luZz8gKi8KICNkZWZpbmUgU0NUUF9TT19JU19OQklPKHNvKQkoKHNvKS0+c29fc3RhdGUgJiBT
U19OQklPKQogI2RlZmluZSBTQ1RQX1NFVF9TT19OQklPKHNvKQkoKHNvKS0+c29fc3RhdGUgfD0g
U1NfTkJJTykKQEAgLTEwNzcsNyArMTA3NCw3IEBAIGV4dGVybiB2b2lkIHNjdHBfdXNlcnNwYWNl
X2lwNl9vdXRwdXQoaW4KIHsgXAogCWlmIChzdGNiICYmIHN0Y2ItPnNjdHBfZXApIFwKIAkJcmVz
dWx0ID0gaXA2X291dHB1dChvX3BhaywgXAotCQkJCSAgICAoKHN0cnVjdCBpbjZwY2IgKikoc3Rj
Yi0+c2N0cF9lcCkpLT5pbjZwX291dHB1dG9wdHMsIFwKKwkJCQkgICAgKChzdHJ1Y3QgaW5wY2Ig
Kikoc3RjYi0+c2N0cF9lcCkpLT5pbjZwX291dHB1dG9wdHMsIFwKIAkJCQkgICAgKHJvKSwgMCwg
MCwgaWZwLCBOVUxMKTsgXAogCWVsc2UgXAogCQlyZXN1bHQgPSBpcDZfb3V0cHV0KG9fcGFrLCBO
VUxMLCAocm8pLCAwLCAwLCBpZnAsIE5VTEwpOyBcCkBAIC0xMTU5LDQgKzExNTYsOSBAQCBzY3Rw
X2dldF9tYnVmX2Zvcl9tc2codW5zaWduZWQgaW50IHNwYWNlCiAKICNkZWZpbmUgU0NUUF9JU19M
SVNURU5JTkcoaW5wKSAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0FDQ0VQVElO
RykgIT0gMCkKIAorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX0RyYWdvbkZseSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51
eCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OYUNsKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNl
X29zX05ldEJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX0Z1Y2hzaWEpCitpbnQKK3RpbWluZ3NhZmVfYmNtcChjb25zdCB2b2lk
ICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKKyNlbmRpZgorCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5jCShyZXZpc2lvbiAyNTg2MDgpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYwkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNsdWRlIDxzeXMv
Y2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1
dC5jIDMzNTE3OSAyMDE4LTA2LTE0IDIxOjMwOjUyWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmMgMzU4MDgzIDIwMjAtMDItMTgg
MjE6MjU6MTdaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9v
cy5oPgpAQCAtNTYsNiArNTYsOSBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGlu
ZXQvc2N0CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2JzZF9hZGRyLmg+CiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX2lucHV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NyYzMyLmg+CisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfa2R0cmFjZS5oPgor
I2VuZGlmCiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19MaW51eCkKICNkZWZpbmUgX19GQVZP
Ul9CU0QgICAgLyogKG9uIFVidW50dSBhdCBsZWFzdCkgZW5hYmxlcyBVRFAgaGVhZGVyIGZpZWxk
IG5hbWVzIGxpa2UgQlNEIGluIFJGQyA3NjggKi8KICNlbmRpZgpAQCAtMzY3Myw3ICszNjc2LDYg
QEAgc2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwXwogI2Vsc2UKIAlzdHJ1
Y3QgY21zZ2hkciBjbWg7CiAjZW5kaWYKLQlpbnQgdGxlbiwgYXQ7CiAJc3RydWN0IHNjdHBfaW5p
dG1zZyBpbml0bXNnOwogI2lmZGVmIElORVQKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2luOwpAQCAt
MzY4MSwzNCArMzY4MywzNyBAQCBzY3RwX3Byb2Nlc3NfY21zZ3NfZm9yX2luaXQoc3RydWN0IHNj
dHBfCiAjaWZkZWYgSU5FVDYKIAlzdHJ1Y3Qgc29ja2FkZHJfaW42IHNpbjY7CiAjZW5kaWYKKwlp
bnQgdG90X2xlbiwgcmVtX2xlbiwgY21zZ19kYXRhX2xlbiwgY21zZ19kYXRhX29mZiwgb2ZmOwog
Ci0JdGxlbiA9IFNDVFBfQlVGX0xFTihjb250cm9sKTsKLQlhdCA9IDA7Ci0Jd2hpbGUgKGF0IDwg
dGxlbikgewotCQlpZiAoKHRsZW4gLSBhdCkgPCAoaW50KUNNU0dfQUxJR04oc2l6ZW9mKGNtaCkp
KSB7CisJdG90X2xlbiA9IFNDVFBfQlVGX0xFTihjb250cm9sKTsKKwlmb3IgKG9mZiA9IDA7IG9m
ZiA8IHRvdF9sZW47IG9mZiArPSBDTVNHX0FMSUdOKGNtaC5jbXNnX2xlbikpIHsKKwkJcmVtX2xl
biA9IHRvdF9sZW4gLSBvZmY7CisJCWlmIChyZW1fbGVuIDwgKGludClDTVNHX0FMSUdOKHNpemVv
ZihjbWgpKSkgewogCQkJLyogVGhlcmUgaXMgbm90IGVub3VnaCByb29tIGZvciBvbmUgbW9yZS4g
Ki8KIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybiAoMSk7CiAJCX0KLQkJbV9jb3B5ZGF0
YShjb250cm9sLCBhdCwgc2l6ZW9mKGNtaCksIChjYWRkcl90KSZjbWgpOworCQltX2NvcHlkYXRh
KGNvbnRyb2wsIG9mZiwgc2l6ZW9mKGNtaCksIChjYWRkcl90KSZjbWgpOwogCQlpZiAoY21oLmNt
c2dfbGVuIDwgQ01TR19BTElHTihzaXplb2YoY21oKSkpIHsKIAkJCS8qIFdlIGRvbnQndCBoYXZl
IGEgY29tcGxldGUgQ01TRyBoZWFkZXIuICovCiAJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQlyZXR1
cm4gKDEpOwogCQl9Ci0JCWlmICgoKGludCljbWguY21zZ19sZW4gKyBhdCkgPiB0bGVuKSB7CisJ
CWlmICgoY21oLmNtc2dfbGVuID4gSU5UX01BWCkgfHwgKChpbnQpY21oLmNtc2dfbGVuID4gcmVt
X2xlbikpIHsKIAkJCS8qIFdlIGRvbid0IGhhdmUgdGhlIGNvbXBsZXRlIENNU0cuICovCiAJCQkq
ZXJyb3IgPSBFSU5WQUw7CiAJCQlyZXR1cm4gKDEpOwogCQl9CisJCWNtc2dfZGF0YV9sZW4gPSAo
aW50KWNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpOworCQljbXNnX2RhdGFf
b2ZmID0gb2ZmICsgQ01TR19BTElHTihzaXplb2YoY21oKSk7CiAJCWlmIChjbWguY21zZ19sZXZl
bCA9PSBJUFBST1RPX1NDVFApIHsKIAkJCXN3aXRjaCAoY21oLmNtc2dfdHlwZSkgewogCQkJY2Fz
ZSBTQ1RQX0lOSVQ6Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xlbiAtIENNU0dfQUxJR04o
c2l6ZW9mKGNtaCkpKSA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0bXNnKSkgeworCQkJCWlmIChj
bXNnX2RhdGFfbGVuIDwgKGludClzaXplb2Yoc3RydWN0IHNjdHBfaW5pdG1zZykpIHsKIAkJCQkJ
KmVycm9yID0gRUlOVkFMOwogCQkJCQlyZXR1cm4gKDEpOwogCQkJCX0KLQkJCQltX2NvcHlkYXRh
KGNvbnRyb2wsIGF0ICsgQ01TR19BTElHTihzaXplb2YoY21oKSksIHNpemVvZihzdHJ1Y3Qgc2N0
cF9pbml0bXNnKSwgKGNhZGRyX3QpJmluaXRtc2cpOworCQkJCW1fY29weWRhdGEoY29udHJvbCwg
Y21zZ19kYXRhX29mZiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2luaXRtc2cpLCAoY2FkZHJfdCkmaW5p
dG1zZyk7CiAJCQkJaWYgKGluaXRtc2cuc2luaXRfbWF4X2F0dGVtcHRzKQogCQkJCQlzdGNiLT5h
c29jLm1heF9pbml0X3RpbWVzID0gaW5pdG1zZy5zaW5pdF9tYXhfYXR0ZW1wdHM7CiAJCQkJaWYg
KGluaXRtc2cuc2luaXRfbnVtX29zdHJlYW1zKQpAQCAtMzc2Myw3ICszNzY4LDcgQEAgc2N0cF9w
cm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwXwogCQkJCWJyZWFrOwogI2lmZGVmIElO
RVQKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjQ6Ci0JCQkJaWYgKChzaXplX3QpKGNtaC5jbXNnX2xl
biAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSA8IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsK
KwkJCQlpZiAoY21zZ19kYXRhX2xlbiA8IChpbnQpc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewog
CQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJCXJldHVybiAoMSk7CiAJCQkJfQpAQCAtMzc3Myw3
ICszNzc4LDcgQEAgc2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwXwogCQkJ
CXNpbi5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAjZW5kaWYKIAkJCQlz
aW4uc2luX3BvcnQgPSBzdGNiLT5ycG9ydDsKLQkJCQltX2NvcHlkYXRhKGNvbnRyb2wsIGF0ICsg
Q01TR19BTElHTihzaXplb2YoY21oKSksIHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIChjYWRkcl90
KSZzaW4uc2luX2FkZHIpOworCQkJCW1fY29weWRhdGEoY29udHJvbCwgY21zZ19kYXRhX29mZiwg
c2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgKGNhZGRyX3QpJnNpbi5zaW5fYWRkcik7CiAJCQkJaWYg
KChzaW4uc2luX2FkZHIuc19hZGRyID09IElOQUREUl9BTlkpIHx8CiAJCQkJICAgIChzaW4uc2lu
X2FkZHIuc19hZGRyID09IElOQUREUl9CUk9BRENBU1QpIHx8CiAJCQkJICAgIElOX01VTFRJQ0FT
VChudG9obChzaW4uc2luX2FkZHIuc19hZGRyKSkpIHsKQEAgLTM3ODksNyArMzc5NCw3IEBAIHNj
dHBfcHJvY2Vzc19jbXNnc19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF8KICNlbmRpZgogI2lmZGVmIElO
RVQ2CiAJCQljYXNlIFNDVFBfRFNUQUREUlY2OgotCQkJCWlmICgoc2l6ZV90KShjbWguY21zZ19s
ZW4gLSBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgPCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkg
eworCQkJCWlmIChjbXNnX2RhdGFfbGVuIDwgKGludClzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkg
ewogCQkJCQkqZXJyb3IgPSBFSU5WQUw7CiAJCQkJCXJldHVybiAoMSk7CiAJCQkJfQpAQCAtMzc5
OSw3ICszODA0LDcgQEAgc2N0cF9wcm9jZXNzX2Ntc2dzX2Zvcl9pbml0KHN0cnVjdCBzY3RwXwog
CQkJCXNpbjYuc2luNl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjZW5kaWYK
IAkJCQlzaW42LnNpbjZfcG9ydCA9IHN0Y2ItPnJwb3J0OwotCQkJCW1fY29weWRhdGEoY29udHJv
bCwgYXQgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciks
IChjYWRkcl90KSZzaW42LnNpbjZfYWRkcik7CisJCQkJbV9jb3B5ZGF0YShjb250cm9sLCBjbXNn
X2RhdGFfb2ZmLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSwgKGNhZGRyX3QpJnNpbjYuc2luNl9h
ZGRyKTsKIAkJCQlpZiAoSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoJnNpbjYuc2luNl9hZGRyKSB8
fAogCQkJCSAgICBJTjZfSVNfQUREUl9NVUxUSUNBU1QoJnNpbjYuc2luNl9hZGRyKSkgewogCQkJ
CQkqZXJyb3IgPSBFSU5WQUw7CkBAIC0zODMyLDExICszODM3LDExIEBAIHNjdHBfcHJvY2Vzc19j
bXNnc19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF8KIAkJCQlicmVhazsKIAkJCX0KIAkJfQotCQlhdCAr
PSBDTVNHX0FMSUdOKGNtaC5jbXNnX2xlbik7CiAJfQogCXJldHVybiAoMCk7CiB9CiAKKyNpZiBk
ZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCiBzdGF0aWMgc3RydWN0IHNjdHBfdGNiICoK
IHNjdHBfZmluZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVjdCBzY3RwX2lucGNiICoqaW5wX3AsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBwb3J0LApAQCAtMzg0OSw3ICszODU0
LDYgQEAgc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3RydWN0IHNjdHBfaQogI2Vsc2UKIAlz
dHJ1Y3QgY21zZ2hkciBjbWg7CiAjZW5kaWYKLQlpbnQgdGxlbiwgYXQ7CiAJc3RydWN0IHNjdHBf
dGNiICpzdGNiOwogCXN0cnVjdCBzb2NrYWRkciAqYWRkcjsKICNpZmRlZiBJTkVUCkBAIC0zODU4
LDMxICszODYyLDM0IEBAIHNjdHBfZmluZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVjdCBzY3RwX2kK
ICNpZmRlZiBJTkVUNgogCXN0cnVjdCBzb2NrYWRkcl9pbjYgc2luNjsKICNlbmRpZgorCWludCB0
b3RfbGVuLCByZW1fbGVuLCBjbXNnX2RhdGFfbGVuLCBjbXNnX2RhdGFfb2ZmLCBvZmY7CiAKLQl0
bGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wpOwotCWF0ID0gMDsKLQl3aGlsZSAoYXQgPCB0bGVu
KSB7Ci0JCWlmICgodGxlbiAtIGF0KSA8IChpbnQpQ01TR19BTElHTihzaXplb2YoY21oKSkpIHsK
Kwl0b3RfbGVuID0gU0NUUF9CVUZfTEVOKGNvbnRyb2wpOworCWZvciAob2ZmID0gMDsgb2ZmIDwg
dG90X2xlbjsgb2ZmICs9IENNU0dfQUxJR04oY21oLmNtc2dfbGVuKSkgeworCQlyZW1fbGVuID0g
dG90X2xlbiAtIG9mZjsKKwkJaWYgKHJlbV9sZW4gPCAoaW50KUNNU0dfQUxJR04oc2l6ZW9mKGNt
aCkpKSB7CiAJCQkvKiBUaGVyZSBpcyBub3QgZW5vdWdoIHJvb20gZm9yIG9uZSBtb3JlLiAqLwog
CQkJKmVycm9yID0gRUlOVkFMOwogCQkJcmV0dXJuIChOVUxMKTsKIAkJfQotCQltX2NvcHlkYXRh
KGNvbnRyb2wsIGF0LCBzaXplb2YoY21oKSwgKGNhZGRyX3QpJmNtaCk7CisJCW1fY29weWRhdGEo
Y29udHJvbCwgb2ZmLCBzaXplb2YoY21oKSwgKGNhZGRyX3QpJmNtaCk7CiAJCWlmIChjbWguY21z
Z19sZW4gPCBDTVNHX0FMSUdOKHNpemVvZihjbWgpKSkgewogCQkJLyogV2UgZG9udCd0IGhhdmUg
YSBjb21wbGV0ZSBDTVNHIGhlYWRlci4gKi8KIAkJCSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVy
biAoTlVMTCk7CiAJCX0KLQkJaWYgKCgoaW50KWNtaC5jbXNnX2xlbiArIGF0KSA+IHRsZW4pIHsK
KwkJaWYgKChjbWguY21zZ19sZW4gPiBJTlRfTUFYKSB8fCAoKGludCljbWguY21zZ19sZW4gPiBy
ZW1fbGVuKSkgewogCQkJLyogV2UgZG9uJ3QgaGF2ZSB0aGUgY29tcGxldGUgQ01TRy4gKi8KIAkJ
CSplcnJvciA9IEVJTlZBTDsKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0KKwkJY21zZ19kYXRhX2xl
biA9IChpbnQpY21oLmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSk7CisJCWNtc2df
ZGF0YV9vZmYgPSBvZmYgKyBDTVNHX0FMSUdOKHNpemVvZihjbWgpKTsKIAkJaWYgKGNtaC5jbXNn
X2xldmVsID09IElQUFJPVE9fU0NUUCkgewogCQkJc3dpdGNoIChjbWguY21zZ190eXBlKSB7CiAj
aWZkZWYgSU5FVAogCQkJY2FzZSBTQ1RQX0RTVEFERFJWNDoKLQkJCQlpZiAoKHNpemVfdCkoY21o
LmNtc2dfbGVuIC0gQ01TR19BTElHTihzaXplb2YoY21oKSkpIDwgc2l6ZW9mKHN0cnVjdCBpbl9h
ZGRyKSkgeworCQkJCWlmIChjbXNnX2RhdGFfbGVuIDwgKGludClzaXplb2Yoc3RydWN0IGluX2Fk
ZHIpKSB7CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJcmV0dXJuIChOVUxMKTsKIAkJCQl9
CkBAIC0zODkyLDEzICszODk5LDEzIEBAIHNjdHBfZmluZGFzc29jaWF0aW9uX2Ntc2dzKHN0cnVj
dCBzY3RwX2kKIAkJCQlzaW4uc2luX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwog
I2VuZGlmCiAJCQkJc2luLnNpbl9wb3J0ID0gcG9ydDsKLQkJCQltX2NvcHlkYXRhKGNvbnRyb2ws
IGF0ICsgQ01TR19BTElHTihzaXplb2YoY21oKSksIHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIChj
YWRkcl90KSZzaW4uc2luX2FkZHIpOworCQkJCW1fY29weWRhdGEoY29udHJvbCwgY21zZ19kYXRh
X29mZiwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgKGNhZGRyX3QpJnNpbi5zaW5fYWRkcik7CiAJ
CQkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luOwogCQkJCWJyZWFrOwogI2VuZGlmCiAj
aWZkZWYgSU5FVDYKIAkJCWNhc2UgU0NUUF9EU1RBRERSVjY6Ci0JCQkJaWYgKChzaXplX3QpKGNt
aC5jbXNnX2xlbiAtIENNU0dfQUxJR04oc2l6ZW9mKGNtaCkpKSA8IHNpemVvZihzdHJ1Y3QgaW42
X2FkZHIpKSB7CisJCQkJaWYgKGNtc2dfZGF0YV9sZW4gPCAoaW50KXNpemVvZihzdHJ1Y3QgaW42
X2FkZHIpKSB7CiAJCQkJCSplcnJvciA9IEVJTlZBTDsKIAkJCQkJcmV0dXJuIChOVUxMKTsKIAkJ
CQl9CkBAIC0zOTA4LDcgKzM5MTUsNyBAQCBzY3RwX2ZpbmRhc3NvY2lhdGlvbl9jbXNncyhzdHJ1
Y3Qgc2N0cF9pCiAJCQkJc2luNi5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42
KTsKICNlbmRpZgogCQkJCXNpbjYuc2luNl9wb3J0ID0gcG9ydDsKLQkJCQltX2NvcHlkYXRhKGNv
bnRyb2wsIGF0ICsgQ01TR19BTElHTihzaXplb2YoY21oKSksIHNpemVvZihzdHJ1Y3QgaW42X2Fk
ZHIpLCAoY2FkZHJfdCkmc2luNi5zaW42X2FkZHIpOworCQkJCW1fY29weWRhdGEoY29udHJvbCwg
Y21zZ19kYXRhX29mZiwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkciksIChjYWRkcl90KSZzaW42LnNp
bjZfYWRkcik7CiAjaWZkZWYgSU5FVAogCQkJCWlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgmc2lu
Ni5zaW42X2FkZHIpKSB7CiAJCQkJCWluNl9zaW42XzJfc2luKCZzaW4sICZzaW42KTsKQEAgLTM5
MjksMTAgKzM5MzYsMTAgQEAgc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3Moc3RydWN0IHNjdHBf
aQogCQkJCX0KIAkJCX0KIAkJfQotCQlhdCArPSBDTVNHX0FMSUdOKGNtaC5jbXNnX2xlbik7CiAJ
fQogCXJldHVybiAoTlVMTCk7CiB9CisjZW5kaWYKIAogc3RhdGljIHN0cnVjdCBtYnVmICoKIHNj
dHBfYWRkX2Nvb2tpZShzdHJ1Y3QgbWJ1ZiAqaW5pdCwgaW50IGluaXRfb2Zmc2V0LApAQCAtNDQ0
Nyw2ICs0NDU0LDkgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaQog
CQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAwKTsKIAkJfQogI2VuZGlmCisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKwkJU0NUUF9QUk9CRTUoc2VuZCwgTlVMTCwgc3RjYiwgaXAsIHN0Y2IsIHNj
dHBoZHIpOworI2VuZGlmCiAJCVNDVFBfSVBfT1VUUFVUKHJldCwgb19wYWssIHJvLCBzdGNiLCB2
cmZfaWQpOwogI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19U
RVNUSU5HKQogCQlpZiAoKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9vdXRwdXRfdW5sb2NrZWQpKSAm
JiAoc29fbG9ja2VkKSkgewpAQCAtNDQ1Nyw2ICs0NDY3LDExIEBAIHNjdHBfbG93bGV2ZWxfY2h1
bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2kKIAkJCWF0b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFz
b2MucmVmY250LCAxKTsKIAkJfQogI2VuZGlmCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJ
aWYgKHBvcnQpIHsKKwkJCVVEUFNUQVRfSU5DKHVkcHNfb3BhY2tldHMpOworCQl9CisjZW5kaWYK
IAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHBhY2tldHMpOwogCQlTQ1RQX1NUQVRfSU5DUl9D
T1VOVEVSNjQoc2N0cHNfb3V0cGFja2V0cyk7CiAJCWlmIChyZXQpCkBAIC00NDgzLDEwICs0NDk4
LDEyIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2kKIAkJCQkJaWYg
KG5ldC0+cG9ydCkgewogCQkJCQkJbXR1IC09IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKIAkJCQkJ
fQotCQkJCQlpZiAoKHN0Y2IgIT0gTlVMTCkgJiYgKHN0Y2ItPmFzb2Muc21hbGxlc3RfbXR1ID4g
bXR1KSkgewotCQkJCQkJc2N0cF9tdHVfc2l6ZV9yZXNldChpbnAsICZzdGNiLT5hc29jLCBtdHUp
OworCQkJCQlpZiAobXR1IDwgbmV0LT5tdHUpIHsKKwkJCQkJCWlmICgoc3RjYiAhPSBOVUxMKSAm
JiAoc3RjYi0+YXNvYy5zbWFsbGVzdF9tdHUgPiBtdHUpKSB7CisJCQkJCQkJc2N0cF9tdHVfc2l6
ZV9yZXNldChpbnAsICZzdGNiLT5hc29jLCBtdHUpOworCQkJCQkJfQorCQkJCQkJbmV0LT5tdHUg
PSBtdHU7CiAJCQkJCX0KLQkJCQkJbmV0LT5tdHUgPSBtdHU7CiAJCQkJfQogCQkJfSBlbHNlIGlm
IChyby0+cm9fcnQgPT0gTlVMTCkgewogCQkJCS8qIHJvdXRlIHdhcyBmcmVlZCAqLwpAQCAtNDUz
NCw3ICs0NTUxLDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaQog
I2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAoIWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRl
ZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZp
bmVkKEFQUExFX01PVU5UQUlOTElPTikpCiAJCQlmbG93bGFiZWwgPSBudG9obChpbnAtPmlwX2lu
cC5pbnAuaW5wX2Zsb3cpOwogI2Vsc2UKLQkJCWZsb3dsYWJlbCA9IG50b2hsKCgoc3RydWN0IGlu
NnBjYiAqKWlucCktPmluNnBfZmxvd2luZm8pOworCQkJZmxvd2xhYmVsID0gbnRvaGwoKChzdHJ1
Y3QgaW5wY2IgKilpbnApLT5pbnBfZmxvdyk7CiAjZW5kaWYKIAkJfQogCQlmbG93bGFiZWwgJj0g
MHgwMDBmZmZmZjsKQEAgLTQ1ODQsNiArNDYwMSw3IEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0
cHV0KHN0cnVjdCBzY3RwX2kKICNlbmRpZgogCQl7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUX1BL
VChtLCBpbnAsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFSU5WQUwpOworCQkJ
c2N0cF9tX2ZyZWVtKG0pOwogCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9CiAjZW5kaWYgLyogU0NU
UF9FTUJFRERFRF9WNl9TQ09QRSAqLwpAQCAtNDYxMSw3ICs0NjI5LDcgQEAgc2N0cF9sb3dsZXZl
bF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaQogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAo
IWRlZmluZWQoQVBQTEVfTEVPUEFSRCkgJiYgIWRlZmluZWQoQVBQTEVfU05PV0xFT1BBUkQpICYm
ICFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElPTikpCiAJ
CQl0b3NfdmFsdWUgPSAobnRvaGwoaW5wLT5pcF9pbnAuaW5wLmlucF9mbG93KSA+PiAyMCkgJiAw
eGZmOwogI2Vsc2UKLQkJCXRvc192YWx1ZSA9IChudG9obCgoKHN0cnVjdCBpbjZwY2IgKilpbnAp
LT5pbjZwX2Zsb3dpbmZvKSA+PiAyMCkgJiAweGZmOworCQkJdG9zX3ZhbHVlID0gKG50b2hsKCgo
c3RydWN0IGlucGNiICopaW5wKS0+aW5wX2Zsb3cpID4+IDIwKSAmIDB4ZmY7CiAjZW5kaWYKICNl
bmRpZgogCQl9CkBAIC00NjMwLDcgKzQ2NDgsNyBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291dHB1
dChzdHJ1Y3Qgc2N0cF9pCiAJCX0gZWxzZSB7CiAJCQlpcDZoLT5pcDZfbnh0ID0gSVBQUk9UT19T
Q1RQOwogCQl9Ci0JCWlwNmgtPmlwNl9wbGVuID0gaHRvbnMocGFja2V0X2xlbmd0aCAtIHNpemVv
ZihzdHJ1Y3QgaXA2X2hkcikpOworCQlpcDZoLT5pcDZfcGxlbiA9IGh0b25zKCh1aW50MTZfdCko
cGFja2V0X2xlbmd0aCAtIHNpemVvZihzdHJ1Y3QgaXA2X2hkcikpKTsKIAkJaXA2aC0+aXA2X2Rz
dCA9IHNpbjYtPnNpbjZfYWRkcjsKIAogCQkvKgpAQCAtNDY3MSw2ICs0Njg5LDcgQEAgc2N0cF9s
b3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaQogI2VuZGlmCiAJCQkJewogCQkJCQlT
Q1RQX0xUUkFDRV9FUlJfUkVUX1BLVChtLCBpbnAsIHN0Y2IsIG5ldCwgU0NUUF9GUk9NX1NDVFBf
T1VUUFVULCBFSU5WQUwpOworCQkJCQlzY3RwX21fZnJlZW0obSk7CiAJCQkJCXJldHVybiAoRUlO
VkFMKTsKIAkJCQl9CiAjZW5kaWYgLyogU0NUUF9FTUJFRERFRF9WNl9TQ09QRSAqLwpAQCAtNDcx
Niw2ICs0NzM1LDcgQEAgc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaQog
I2VuZGlmCiAJCQkgIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUX1BLVChtLCBpbnAsIHN0Y2Is
IG5ldCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFSU5WQUwpOworCQkJCXNjdHBfbV9mcmVlbSht
KTsKIAkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQkgIH0KICNlbmRpZiAvKiBTQ1RQX0VNQkVEREVE
X1Y2X1NDT1BFICovCkBAIC00ODkxLDYgKzQ5MTEsOSBAQCBzY3RwX2xvd2xldmVsX2NodW5rX291
dHB1dChzdHJ1Y3Qgc2N0cF9pCiAJCQlzY3RwX3BhY2tldF9sb2cob19wYWspOwogI2VuZGlmCiAj
aWYgIShkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKSkKKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlTQ1RQX1BST0JFNShzZW5kLCBOVUxMLCBzdGNiLCBpcDZo
LCBzdGNiLCBzY3RwaGRyKTsKKyNlbmRpZgogCQlTQ1RQX0lQNl9PVVRQVVQocmV0LCBvX3Bhaywg
KHN0cnVjdCByb3V0ZV9pbjYgKilybywgJmlmcCwgc3RjYiwgdnJmX2lkKTsKICNlbHNlCiAJCVND
VFBfSVA2X09VVFBVVChyZXQsIG9fcGFrLCAoc3RydWN0IHJvdXRlX2luNiAqKXJvLCBOVUxMLCBz
dGNiLCB2cmZfaWQpOwpAQCAtNDkxMCw2ICs0OTMzLDExIEBAIHNjdHBfbG93bGV2ZWxfY2h1bmtf
b3V0cHV0KHN0cnVjdCBzY3RwX2kKIAkJCXNpbjYtPnNpbjZfcG9ydCA9IHByZXZfcG9ydDsKIAkJ
fQogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMywgInJldHVybiBmcm9tIHNlbmQgaXMgJWRc
biIsIHJldCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJaWYgKHBvcnQpIHsKKwkJCVVE
UFNUQVRfSU5DKHVkcHNfb3BhY2tldHMpOworCQl9CisjZW5kaWYKIAkJU0NUUF9TVEFUX0lOQ1Io
c2N0cHNfc2VuZHBhY2tldHMpOwogCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSNjQoc2N0cHNfb3V0
cGFja2V0cyk7CiAJCWlmIChyZXQpIHsKQEAgLTQ5NDUsMTAgKzQ5NzMsMTIgQEAgc2N0cF9sb3ds
ZXZlbF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaQogCQkJCQlpZiAobmV0LT5wb3J0KSB7CiAJ
CQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwogCQkJCQl9Ci0JCQkJCWlmICgoc3Rj
YiAhPSBOVUxMKSAmJiAoc3RjYi0+YXNvYy5zbWFsbGVzdF9tdHUgPiBtdHUpKSB7Ci0JCQkJCQlz
Y3RwX210dV9zaXplX3Jlc2V0KGlucCwgJnN0Y2ItPmFzb2MsIG10dSk7CisJCQkJCWlmIChtdHUg
PCBuZXQtPm10dSkgeworCQkJCQkJaWYgKChzdGNiICE9IE5VTEwpICYmIChzdGNiLT5hc29jLnNt
YWxsZXN0X210dSA+IG10dSkpIHsKKwkJCQkJCQlzY3RwX210dV9zaXplX3Jlc2V0KGlucCwgJnN0
Y2ItPmFzb2MsIG10dSk7CisJCQkJCQl9CisJCQkJCQluZXQtPm10dSA9IG10dTsKIAkJCQkJfQot
CQkJCQluZXQtPm10dSA9IG10dTsKIAkJCQl9CiAJCQl9CiAjaWYgIWRlZmluZWQoX19QYW5kYV9f
KSAmJiAhZGVmaW5lZChfX1VzZXJzcGFjZV9fKQpAQCAtNTMzMCw3ICs1MzYwLDEwIEBAIHNjdHBf
c2VuZF9pbml0aWF0ZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW4KIAogc3RydWN0IG1idWYgKgogc2N0
cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdHJ1Y3QgbWJ1ZiAqaW5faW5pdHBr
dCwKLQlpbnQgcGFyYW1fb2Zmc2V0LCBpbnQgKmFib3J0X3Byb2Nlc3NpbmcsIHN0cnVjdCBzY3Rw
X2NodW5raGRyICpjcCwgaW50ICpuYXRfZnJpZW5kbHkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBwYXJhbV9vZmZzZXQsIGludCAqYWJvcnRfcHJvY2Vzc2luZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjdHBfY2h1bmto
ZHIgKmNwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm5hdF9m
cmllbmRseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjb29r
aWVfZm91bmQpCiB7CiAJLyoKIAkgKiBHaXZlbiBhIG1idWYgY29udGFpbmluZyBhbiBJTklUIG9y
IElOSVQtQUNLIHdpdGggdGhlIHBhcmFtX29mZnNldApAQCAtNTM0OCwxOCArNTM4MSwyMCBAQCBz
Y3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0CiAJICovCiAJc3RydWN0IHNj
dHBfcGFyYW1oZHIgKnBoZHIsIHBhcmFtczsKIAotCXN0cnVjdCBtYnVmICptYXQsICpvcF9lcnI7
Ci0JY2hhciB0ZW1wYnVmW1NDVFBfUEFSQU1fQlVGRkVSX1NJWkVdOworCXN0cnVjdCBtYnVmICpt
YXQsICptX3RtcCwgKm9wX2VyciwgKm9wX2Vycl9sYXN0OwogCWludCBhdCwgbGltaXQsIHBhZF9u
ZWVkZWQ7CiAJdWludDE2X3QgcHR5cGUsIHBsZW4sIHBhZGRlZF9zaXplOwotCWludCBlcnJfYXQ7
CiAKIAkqYWJvcnRfcHJvY2Vzc2luZyA9IDA7CisJaWYgKGNvb2tpZV9mb3VuZCAhPSBOVUxMKSB7
CisJCSpjb29raWVfZm91bmQgPSAwOworCX0KIAltYXQgPSBpbl9pbml0cGt0OwotCWVycl9hdCA9
IDA7CiAJbGltaXQgPSBudG9ocyhjcC0+Y2h1bmtfbGVuZ3RoKSAtIHNpemVvZihzdHJ1Y3Qgc2N0
cF9pbml0X2NodW5rKTsKIAlhdCA9IHBhcmFtX29mZnNldDsKIAlvcF9lcnIgPSBOVUxMOworCW9w
X2Vycl9sYXN0ID0gTlVMTDsKKwlwYWRfbmVlZGVkID0gMDsKIAlTQ1RQREJHKFNDVFBfREVCVUdf
T1VUUFVUMSwgIkNoZWNrIGZvciB1bnJlY29nbml6ZWQgcGFyYW0nc1xuIik7CiAJcGhkciA9IHNj
dHBfZ2V0X25leHRfcGFyYW0obWF0LCBhdCwgJnBhcmFtcywgc2l6ZW9mKHBhcmFtcykpOwogCXdo
aWxlICgocGhkciAhPSBOVUxMKSAmJiAoKHNpemVfdClsaW1pdCA+PSBzaXplb2Yoc3RydWN0IHNj
dHBfcGFyYW1oZHIpKSkgewpAQCAtNTM4MiwxMiArNTQxNywxNyBAQCBzY3RwX2FyZXRoZXJlX3Vu
cmVjb2duaXplZF9wYXJhbWV0ZXJzKHN0CiAJCXN3aXRjaCAocHR5cGUpIHsKIAkJCS8qIFBhcmFt
J3Mgd2l0aCB2YXJpYWJsZSBzaXplICovCiAJCWNhc2UgU0NUUF9IRUFSVEJFQVRfSU5GTzoKLQkJ
Y2FzZSBTQ1RQX1NUQVRFX0NPT0tJRToKIAkJY2FzZSBTQ1RQX1VOUkVDT0dfUEFSQU06CiAJCWNh
c2UgU0NUUF9FUlJPUl9DQVVTRV9JTkQ6CiAJCQkvKiBvayBza2lwIGZ3ZCAqLwogCQkJYXQgKz0g
cGFkZGVkX3NpemU7CiAJCQlicmVhazsKKwkJY2FzZSBTQ1RQX1NUQVRFX0NPT0tJRToKKwkJCWlm
IChjb29raWVfZm91bmQgIT0gTlVMTCkgeworCQkJCSpjb29raWVfZm91bmQgPSAxOworCQkJfQor
CQkJYXQgKz0gcGFkZGVkX3NpemU7CisJCQlicmVhazsKIAkJCS8qIFBhcmFtJ3Mgd2l0aCB2YXJp
YWJsZSBzaXplIHdpdGhpbiBhIHJhbmdlICovCiAJCWNhc2UgU0NUUF9DSFVOS19MSVNUOgogCQlj
YXNlIFNDVFBfU1VQUE9SVEVEX0NIVU5LX0VYVDoKQEAgLTU0NzYsNjcgKzU1MTYsNDUgQEAgc2N0
cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdAogCQkJYnJlYWs7CiAJCWNhc2Ug
U0NUUF9IT1NUTkFNRV9BRERSRVNTOgogCQl7Ci0JCQkvKiBXZSBjYW4gTk9UIGhhbmRsZSBIT1NU
IE5BTUUgYWRkcmVzc2VzISEgKi8KKwkJCS8qIEhvc3RuYW1lIHBhcmFtZXRlcnMgYXJlIGRlcHJl
Y2F0ZWQuICovCisJCQlzdHJ1Y3Qgc2N0cF9nZW5fZXJyb3JfY2F1c2UgKmNhdXNlOwogCQkJaW50
IGxfbGVuOwogCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgIkNhbid0IGhhbmRsZSBo
b3N0bmFtZSBhZGRyZXNzZXMuLiBhYm9ydCBwcm9jZXNzaW5nXG4iKTsKIAkJCSphYm9ydF9wcm9j
ZXNzaW5nID0gMTsKLQkJCWlmIChvcF9lcnIgPT0gTlVMTCkgewotCQkJCS8qIE9rIG5lZWQgdG8g
dHJ5IHRvIGdldCBhIG1idWYgKi8KKwkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCQkJb3BfZXJy
ID0gTlVMTDsKKwkJCW9wX2Vycl9sYXN0ID0gTlVMTDsKICNpZmRlZiBJTkVUNgotCQkJCWxfbGVu
ID0gU0NUUF9NSU5fT1ZFUkhFQUQ7CisJCQlsX2xlbiA9IFNDVFBfTUlOX09WRVJIRUFEOwogI2Vs
c2UKLQkJCQlsX2xlbiA9IFNDVFBfTUlOX1Y0X09WRVJIRUFEOworCQkJbF9sZW4gPSBTQ1RQX01J
Tl9WNF9PVkVSSEVBRDsKICNlbmRpZgotCQkJCWxfbGVuICs9IHNpemVvZihzdHJ1Y3Qgc2N0cF9j
aHVua2hkcik7Ci0JCQkJbF9sZW4gKz0gcGxlbjsKLQkJCQlsX2xlbiArPSBzaXplb2Yoc3RydWN0
IHNjdHBfcGFyYW1oZHIpOwotCQkJCW9wX2VyciA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhsX2xl
biwgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwotCQkJCWlmIChvcF9lcnIpIHsKLQkJCQkJU0NU
UF9CVUZfTEVOKG9wX2VycikgPSAwOwotCQkJCQkvKgotCQkJCQkgKiBwcmUtcmVzZXJ2ZSBzcGFj
ZSBmb3IgaXAgYW5kIHNjdHAKLQkJCQkJICogaGVhZGVyICBhbmQgY2h1bmsgaGRyCi0JCQkJCSAq
LworCQkJbF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKKwkJCWxfbGVuICs9
IHNpemVvZihzdHJ1Y3Qgc2N0cF9nZW5fZXJyb3JfY2F1c2UpOworCQkJb3BfZXJyID0gc2N0cF9n
ZXRfbWJ1Zl9mb3JfbXNnKGxfbGVuLCAwLCBNX05PV0FJVCwgMSwgTVRfREFUQSk7CisJCQlpZiAo
b3BfZXJyICE9IE5VTEwpIHsKKwkJCQkvKgorCQkJCSAqIFByZS1yZXNlcnZlIHNwYWNlIGZvciBJ
UCwgU0NUUCwgYW5kCisJCQkJICogY2h1bmsgaGVhZGVyLgorCQkJCSAqLwogI2lmZGVmIElORVQ2
Ci0JCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IGlwNl9oZHIpKTsK
KwkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSk7CiAj
ZWxzZQotCQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBpcCkpOwor
CQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yoc3RydWN0IGlwKSk7CiAjZW5kaWYK
LQkJCQkJU0NUUF9CVUZfUkVTVl9VRihvcF9lcnIsIHNpemVvZihzdHJ1Y3Qgc2N0cGhkcikpOwot
CQkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRy
KSk7Ci0JCQkJfQotCQkJfQotCQkJaWYgKG9wX2VycikgewotCQkJCS8qIElmIHdlIGhhdmUgc3Bh
Y2UgKi8KLQkJCQlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciBzOwotCi0JCQkJaWYgKGVycl9hdCAlIDQp
IHsKLQkJCQkJdWludDMyX3QgY3B0aGlzID0gMDsKLQotCQkJCQlwYWRfbmVlZGVkID0gNCAtIChl
cnJfYXQgJSA0KTsKLQkJCQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgcGFkX25lZWRlZCwg
KGNhZGRyX3QpJmNwdGhpcyk7Ci0JCQkJCWVycl9hdCArPSBwYWRfbmVlZGVkOwotCQkJCX0KLQkJ
CQlzLnBhcmFtX3R5cGUgPSBodG9ucyhTQ1RQX0NBVVNFX1VOUkVTT0xWQUJMRV9BRERSKTsKLQkJ
CQlzLnBhcmFtX2xlbmd0aCA9IGh0b25zKHNpemVvZihzKSArIHBsZW4pOwotCQkJCW1fY29weWJh
Y2sob3BfZXJyLCBlcnJfYXQsIHNpemVvZihzKSwgKGNhZGRyX3QpJnMpOwotCQkJCWVycl9hdCAr
PSBzaXplb2Yocyk7Ci0JCQkJaWYgKHBsZW4gPiBzaXplb2YodGVtcGJ1ZikpIHsKLQkJCQkJcGxl
biA9IHNpemVvZih0ZW1wYnVmKTsKLQkJCQl9Ci0JCQkJcGhkciA9IHNjdHBfZ2V0X25leHRfcGFy
YW0obWF0LCBhdCwgKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopdGVtcGJ1ZiwgcGxlbik7Ci0JCQkJ
aWYgKHBoZHIgPT0gTlVMTCkgeworCQkJCVNDVFBfQlVGX1JFU1ZfVUYob3BfZXJyLCBzaXplb2Yo
c3RydWN0IHNjdHBoZHIpKTsKKwkJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0
cnVjdCBzY3RwX2NodW5raGRyKSk7CisJCQkJU0NUUF9CVUZfTEVOKG9wX2VycikgPSBzaXplb2Yo
c3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlKTsKKwkJCQljYXVzZSA9IG10b2Qob3BfZXJyLCBz
dHJ1Y3Qgc2N0cF9nZW5fZXJyb3JfY2F1c2UgKik7CisJCQkJY2F1c2UtPmNvZGUgPSBodG9ucyhT
Q1RQX0NBVVNFX1VOUkVTT0xWQUJMRV9BRERSKTsKKwkJCQljYXVzZS0+bGVuZ3RoID0gaHRvbnMo
KHVpbnQxNl90KShzaXplb2Yoc3RydWN0IHNjdHBfZ2VuX2Vycm9yX2NhdXNlKSArIHBsZW4pKTsK
KwkJCQlTQ1RQX0JVRl9ORVhUKG9wX2VycikgPSBTQ1RQX01fQ09QWU0obWF0LCBhdCwgcGxlbiwg
TV9OT1dBSVQpOworCQkJCWlmIChTQ1RQX0JVRl9ORVhUKG9wX2VycikgPT0gTlVMTCkgewogCQkJ
CQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKLQkJCQkJLyoKLQkJCQkJICogd2UgYXJlIG91dCBvZiBt
ZW1vcnkgYnV0IHdlIHN0aWxsCi0JCQkJCSAqIG5lZWQgdG8gaGF2ZSBhIGxvb2sgYXQgd2hhdCB0
byBkbwotCQkJCQkgKiAodGhlIHN5c3RlbSBpcyBpbiB0cm91YmxlCi0JCQkJCSAqIHRob3VnaCku
Ci0JCQkJCSAqLwotCQkJCQlyZXR1cm4gKE5VTEwpOworCQkJCQlvcF9lcnIgPSBOVUxMOworCQkJ
CQlvcF9lcnJfbGFzdCA9IE5VTEw7CiAJCQkJfQotCQkJCW1fY29weWJhY2sob3BfZXJyLCBlcnJf
YXQsIHBsZW4sIChjYWRkcl90KXBoZHIpOwogCQkJfQogCQkJcmV0dXJuIChvcF9lcnIpOwogCQkJ
YnJlYWs7CkBAIC01NTU5LDcgKzU1NzcsNiBAQCBzY3RwX2FyZXRoZXJlX3VucmVjb2duaXplZF9w
YXJhbWV0ZXJzKHN0CiAJCQkJCWxfbGVuID0gU0NUUF9NSU5fVjRfT1ZFUkhFQUQ7CiAjZW5kaWYK
IAkJCQkJbF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKLQkJCQkJbF9sZW4g
Kz0gcGxlbjsKIAkJCQkJbF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKTsKIAkJ
CQkJb3BfZXJyID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKGxfbGVuLCAwLCBNX05PV0FJVCwgMSwg
TVRfREFUQSk7CiAJCQkJCWlmIChvcF9lcnIpIHsKQEAgLTU1NzEsNDEgKzU1ODgsNTUgQEAgc2N0
cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdAogI2VuZGlmCiAJCQkJCQlTQ1RQ
X0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJCQkJCQlTQ1RQ
X0JVRl9SRVNWX1VGKG9wX2Vyciwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7CisJCQkJ
CQlvcF9lcnJfbGFzdCA9IG9wX2VycjsKIAkJCQkJfQogCQkJCX0KLQkJCQlpZiAob3BfZXJyKSB7
CisJCQkJaWYgKG9wX2VyciAhPSBOVUxMKSB7CiAJCQkJCS8qIElmIHdlIGhhdmUgc3BhY2UgKi8K
LQkJCQkJc3RydWN0IHNjdHBfcGFyYW1oZHIgczsKLQotCQkJCQlpZiAoZXJyX2F0ICUgNCkgewot
CQkJCQkJdWludDMyX3QgY3B0aGlzID0gMDsKKwkJCQkJc3RydWN0IHNjdHBfcGFyYW1oZHIgKnBh
cmFtOwogCi0JCQkJCQlwYWRfbmVlZGVkID0gNCAtIChlcnJfYXQgJSA0KTsKLQkJCQkJCW1fY29w
eWJhY2sob3BfZXJyLCBlcnJfYXQsIHBhZF9uZWVkZWQsIChjYWRkcl90KSZjcHRoaXMpOwotCQkJ
CQkJZXJyX2F0ICs9IHBhZF9uZWVkZWQ7Ci0JCQkJCX0KLQkJCQkJcy5wYXJhbV90eXBlID0gaHRv
bnMoU0NUUF9VTlJFQ09HX1BBUkFNKTsKLQkJCQkJcy5wYXJhbV9sZW5ndGggPSBodG9ucyhzaXpl
b2YocykgKyBwbGVuKTsKLQkJCQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9mKHMp
LCAoY2FkZHJfdCkmcyk7Ci0JCQkJCWVycl9hdCArPSBzaXplb2Yocyk7Ci0JCQkJCWlmIChwbGVu
ID4gc2l6ZW9mKHRlbXBidWYpKSB7Ci0JCQkJCQlwbGVuID0gc2l6ZW9mKHRlbXBidWYpOworCQkJ
CQlpZiAocGFkX25lZWRlZCA+IDApIHsKKwkJCQkJCW9wX2Vycl9sYXN0ID0gc2N0cF9hZGRfcGFk
X3RvbWJ1ZihvcF9lcnJfbGFzdCwgcGFkX25lZWRlZCk7CiAJCQkJCX0KLQkJCQkJcGhkciA9IHNj
dHBfZ2V0X25leHRfcGFyYW0obWF0LCBhdCwgKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopdGVtcGJ1
ZiwgcGxlbik7Ci0JCQkJCWlmIChwaGRyID09IE5VTEwpIHsKKwkJCQkJaWYgKG9wX2Vycl9sYXN0
ID09IE5VTEwpIHsKIAkJCQkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOwotCQkJCQkJLyoKLQkJCQkJ
CSAqIHdlIGFyZSBvdXQgb2YgbWVtb3J5IGJ1dAotCQkJCQkJICogd2Ugc3RpbGwgbmVlZCB0byBo
YXZlIGEKLQkJCQkJCSAqIGxvb2sgYXQgd2hhdCB0byBkbyAodGhlCi0JCQkJCQkgKiBzeXN0ZW0g
aXMgaW4gdHJvdWJsZQotCQkJCQkJICogdGhvdWdoKS4KLQkJCQkJCSAqLwogCQkJCQkJb3BfZXJy
ID0gTlVMTDsKKwkJCQkJCW9wX2Vycl9sYXN0ID0gTlVMTDsKIAkJCQkJCWdvdG8gbW9yZV9wcm9j
ZXNzaW5nOwogCQkJCQl9Ci0JCQkJCW1fY29weWJhY2sob3BfZXJyLCBlcnJfYXQsIHBsZW4sIChj
YWRkcl90KXBoZHIpOwotCQkJCQllcnJfYXQgKz0gcGxlbjsKKwkJCQkJaWYgKE1fVFJBSUxJTkdT
UEFDRShvcF9lcnJfbGFzdCkgPCAoaW50KXNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIHsK
KwkJCQkJCW1fdG1wID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHNpemVvZihzdHJ1Y3Qgc2N0cF9w
YXJhbWhkciksIDAsIE1fTk9XQUlULCAxLCBNVF9EQVRBKTsKKwkJCQkJCWlmIChtX3RtcCA9PSBO
VUxMKSB7CisJCQkJCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCQkJCQkJb3BfZXJyID0gTlVM
TDsKKwkJCQkJCQlvcF9lcnJfbGFzdCA9IE5VTEw7CisJCQkJCQkJZ290byBtb3JlX3Byb2Nlc3Np
bmc7CisJCQkJCQl9CisJCQkJCQlTQ1RQX0JVRl9MRU4obV90bXApID0gMDsKKwkJCQkJCVNDVFBf
QlVGX05FWFQobV90bXApID0gTlVMTDsKKwkJCQkJCVNDVFBfQlVGX05FWFQob3BfZXJyX2xhc3Qp
ID0gbV90bXA7CisJCQkJCQlvcF9lcnJfbGFzdCA9IG1fdG1wOworCQkJCQl9CisJCQkJCXBhcmFt
ID0gKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopKG10b2Qob3BfZXJyX2xhc3QsIGNhZGRyX3QpICsg
U0NUUF9CVUZfTEVOKG9wX2Vycl9sYXN0KSk7CisJCQkJCXBhcmFtLT5wYXJhbV90eXBlID0gaHRv
bnMoU0NUUF9VTlJFQ09HX1BBUkFNKTsKKwkJCQkJcGFyYW0tPnBhcmFtX2xlbmd0aCA9IGh0b25z
KCh1aW50MTZfdClzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpICsgcGxlbik7CisJCQkJCVND
VFBfQlVGX0xFTihvcF9lcnJfbGFzdCkgKz0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKTsK
KwkJCQkJU0NUUF9CVUZfTkVYVChvcF9lcnJfbGFzdCkgPSBTQ1RQX01fQ09QWU0obWF0LCBhdCwg
cGxlbiwgTV9OT1dBSVQpOworCQkJCQlpZiAoU0NUUF9CVUZfTkVYVChvcF9lcnJfbGFzdCkgPT0g
TlVMTCkgeworCQkJCQkJc2N0cF9tX2ZyZWVtKG9wX2Vycik7CisJCQkJCQlvcF9lcnIgPSBOVUxM
OworCQkJCQkJb3BfZXJyX2xhc3QgPSBOVUxMOworCQkJCQkJZ290byBtb3JlX3Byb2Nlc3Npbmc7
CisJCQkJCX0gZWxzZSB7CisJCQkJCQl3aGlsZSAoU0NUUF9CVUZfTkVYVChvcF9lcnJfbGFzdCkg
IT0gTlVMTCkgeworCQkJCQkJCW9wX2Vycl9sYXN0ID0gU0NUUF9CVUZfTkVYVChvcF9lcnJfbGFz
dCk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJaWYgKHBsZW4gJSA0ICE9IDApIHsKKwkJCQkJCXBh
ZF9uZWVkZWQgPSA0IC0gKHBsZW4gJSA0KTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXBhZF9uZWVk
ZWQgPSAwOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQltb3JlX3Byb2Nlc3Npbmc6CkBAIC01NjI2
LDcgKzU2NTcsMTEgQEAgc2N0cF9hcmV0aGVyZV91bnJlY29nbml6ZWRfcGFyYW1ldGVycyhzdAog
IGludmFsaWRfc2l6ZToKIAlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgImFib3J0IGZsYWcg
c2V0XG4iKTsKIAkqYWJvcnRfcHJvY2Vzc2luZyA9IDE7Ci0JaWYgKChvcF9lcnIgPT0gTlVMTCkg
JiYgcGhkcikgeworCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCW9wX2VyciA9IE5VTEw7CisJb3Bf
ZXJyX2xhc3QgPSBOVUxMOworCWlmIChwaGRyICE9IE5VTEwpIHsKKwkJc3RydWN0IHNjdHBfcGFy
YW1oZHIgKnBhcmFtOwogCQlpbnQgbF9sZW47CiAjaWZkZWYgSU5FVDYKIAkJbF9sZW4gPSBTQ1RQ
X01JTl9PVkVSSEVBRDsKQEAgLTU2NDUsMjUgKzU2ODAsMTUgQEAgc2N0cF9hcmV0aGVyZV91bnJl
Y29nbml6ZWRfcGFyYW1ldGVycyhzdAogI2VuZGlmCiAJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vy
ciwgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKSk7CiAJCQlTQ1RQX0JVRl9SRVNWX1VGKG9wX2Vyciwg
c2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKSk7CisJCQlTQ1RQX0JVRl9MRU4ob3BfZXJyKSA9
IDIgKiBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpOworCQkJcGFyYW0gPSBtdG9kKG9wX2Vy
ciwgc3RydWN0IHNjdHBfcGFyYW1oZHIgKik7CisJCQlwYXJhbS0+cGFyYW1fdHlwZSA9IGh0b25z
KFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OKTsKKwkJCXBhcmFtLT5wYXJhbV9sZW5ndGgg
PSBodG9ucygyICogc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSk7CisJCQlwYXJhbSsrOwor
CQkJcGFyYW0tPnBhcmFtX3R5cGUgPSBodG9ucyhwdHlwZSk7CisJCQlwYXJhbS0+cGFyYW1fbGVu
Z3RoID0gaHRvbnMocGxlbik7CiAJCX0KIAl9Ci0JaWYgKChvcF9lcnIpICYmIHBoZHIpIHsKLQkJ
c3RydWN0IHNjdHBfcGFyYW1oZHIgczsKLQotCQlpZiAoZXJyX2F0ICUgNCkgewotCQkJdWludDMy
X3QgY3B0aGlzID0gMDsKLQotCQkJcGFkX25lZWRlZCA9IDQgLSAoZXJyX2F0ICUgNCk7Ci0JCQlt
X2NvcHliYWNrKG9wX2VyciwgZXJyX2F0LCBwYWRfbmVlZGVkLCAoY2FkZHJfdCkmY3B0aGlzKTsK
LQkJCWVycl9hdCArPSBwYWRfbmVlZGVkOwotCQl9Ci0JCXMucGFyYW1fdHlwZSA9IGh0b25zKFND
VFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OKTsKLQkJcy5wYXJhbV9sZW5ndGggPSBodG9ucyhz
aXplb2YocykgKyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKTsKLQkJbV9jb3B5YmFjayhv
cF9lcnIsIGVycl9hdCwgc2l6ZW9mKHMpLCAoY2FkZHJfdCkmcyk7Ci0JCWVycl9hdCArPSBzaXpl
b2Yocyk7Ci0JCS8qIE9ubHkgY29weSBiYWNrIHRoZSBwLWhkciB0aGF0IGNhdXNlZCB0aGUgaXNz
dWUgKi8KLQkJbV9jb3B5YmFjayhvcF9lcnIsIGVycl9hdCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3Bh
cmFtaGRyKSwgKGNhZGRyX3QpcGhkcik7Ci0JfQogCXJldHVybiAob3BfZXJyKTsKIH0KIApAQCAt
NTkzOSw3ICs1OTY0LDcgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBj
YgogCQlhc29jID0gTlVMTDsKIAl9CiAJaWYgKChhc29jICE9IE5VTEwpICYmCi0JICAgIChTQ1RQ
X0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSkgeworCSAgICAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkpIHsKIAkJaWYgKHNj
dHBfYXJlX3RoZXJlX25ld19hZGRyZXNzZXMoYXNvYywgaW5pdF9wa3QsIG9mZnNldCwgc3JjKSkg
ewogCQkJLyoKIAkJCSAqIG5ldyBhZGRyZXNzZXMsIG91dCBvZiBoZXJlIGluIG5vbi1jb29raWUt
d2FpdCBzdGF0ZXMKQEAgLTU5NzgsOCArNjAwMywxMCBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNr
KHN0cnVjdCBzY3RwX2lucGNiCiAJfQogCWFib3J0X2ZsYWcgPSAwOwogCW9wX2VyciA9IHNjdHBf
YXJldGhlcmVfdW5yZWNvZ25pemVkX3BhcmFtZXRlcnMoaW5pdF9wa3QsCi0JCQkJCQkgICAgICAg
KG9mZnNldCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSksCi0JCQkJCQkgICAgICAg
JmFib3J0X2ZsYWcsIChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKWluaXRfY2hrLCAmbmF0X2ZyaWVu
ZGx5KTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv
ZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFib3J0X2ZsYWcsCisJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNjdHBfY2h1bmto
ZHIgKilpbml0X2NoaywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZuYXRfZnJpZW5kbHksIE5VTEwpOwogCWlmIChhYm9ydF9mbGFnKSB7CiAJZG9fYV9h
Ym9ydDoKIAkJaWYgKG9wX2VyciA9PSBOVUxMKSB7CkBAIC02MDAwLDggKzYwMjcsNyBAQCBzY3Rw
X3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiCiAJbSA9IHNjdHBfZ2V0X21idWZf
Zm9yX21zZyhNQ0xCWVRFUywgMCwgTV9OT1dBSVQsIDEsIE1UX0RBVEEpOwogCWlmIChtID09IE5V
TEwpIHsKIAkJLyogTm8gbWVtb3J5LCBJTklUIHRpbWVyIHdpbGwgcmUtYXR0ZW1wdC4gKi8KLQkJ
aWYgKG9wX2VycikKLQkJCXNjdHBfbV9mcmVlbShvcF9lcnIpOworCQlzY3RwX21fZnJlZW0ob3Bf
ZXJyKTsKIAkJcmV0dXJuOwogCX0KIAljaHVua19sZW4gPSAodWludDE2X3Qpc2l6ZW9mKHN0cnVj
dCBzY3RwX2luaXRfYWNrX2NodW5rKTsKQEAgLTYyMjgsOCArNjI1NCwxMSBAQCBzY3RwX3NlbmRf
aW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiCiAJCQkJbmV0LT5yby5fc19hZGRyID0gc2N0
cF9zb3VyY2VfYWRkcmVzc19zZWxlY3Rpb24oaW5wLAogCQkJCQkJCQkJCXN0Y2IsIChzY3RwX3Jv
dXRlX3QgKikmbmV0LT5ybywKIAkJCQkJCQkJCQluZXQsIDAsIHZyZl9pZCk7Ci0JCQkJaWYgKG5l
dC0+cm8uX3NfYWRkciA9PSBOVUxMKQorCQkJCWlmIChuZXQtPnJvLl9zX2FkZHIgPT0gTlVMTCkg
eworCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJyKTsKKwkJCQkJc2N0cF9tX2ZyZWVtKG0pOwogCQkJ
CQlyZXR1cm47CisJCQkJfQogCiAJCQkJbmV0LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDE7CiAKQEAg
LTYyNTgsOCArNjI4NywxMSBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lu
cGNiCiAJCQkJbmV0LT5yby5fc19hZGRyID0gc2N0cF9zb3VyY2VfYWRkcmVzc19zZWxlY3Rpb24o
aW5wLAogCQkJCQkJCQkJCXN0Y2IsIChzY3RwX3JvdXRlX3QgKikmbmV0LT5ybywKIAkJCQkJCQkJ
CQluZXQsIDAsIHZyZl9pZCk7Ci0JCQkJaWYgKG5ldC0+cm8uX3NfYWRkciA9PSBOVUxMKQorCQkJ
CWlmIChuZXQtPnJvLl9zX2FkZHIgPT0gTlVMTCkgeworCQkJCQlzY3RwX21fZnJlZW0ob3BfZXJy
KTsKKwkJCQkJc2N0cF9tX2ZyZWVtKG0pOwogCQkJCQlyZXR1cm47CisJCQkJfQogCiAJCQkJbmV0
LT5zcmNfYWRkcl9zZWxlY3RlZCA9IDE7CiAJCQl9CkBAIC02MzAzLDkgKzYzMzUsOSBAQCBzY3Rw
X3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lucGNiCiAJaW5pdGFjay0+Y2guY2h1bmtf
bGVuZ3RoID0gMDsKIAkvKiBwbGFjZSBpbiBteSB0YWcgKi8KIAlpZiAoKGFzb2MgIT0gTlVMTCkg
JiYKLQkgICAgKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KSB8fAotCSAgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfSU5VU0UpIHx8
Ci0JICAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VE
KSkpIHsKKwkgICAgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9X
QUlUKSB8fAorCSAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfSU5VU0Up
IHx8CisJICAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNI
T0VEKSkpIHsKIAkJLyogcmUtdXNlIHRoZSB2LXRhZ3MgYW5kIGluaXQtc2VxIGhlcmUgKi8KIAkJ
aW5pdGFjay0+aW5pdC5pbml0aWF0ZV90YWcgPSBodG9ubChhc29jLT5teV92dGFnKTsKIAkJaW5p
dGFjay0+aW5pdC5pbml0aWFsX3RzbiA9IGh0b25sKGFzb2MtPmluaXRfc2VxX251bWJlcik7CkBA
IC02MzQ3LDYgKzYzNzksNyBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0cnVjdCBzY3RwX2lu
cGNiCiAJc28gPSBpbnAtPnNjdHBfc29ja2V0OwogCWlmIChzbyA9PSBOVUxMKSB7CiAJCS8qIG1l
bW9yeSBwcm9ibGVtICovCisJCXNjdHBfbV9mcmVlbShvcF9lcnIpOwogCQlzY3RwX21fZnJlZW0o
bSk7CiAJCXJldHVybjsKIAl9IGVsc2UgewpAQCAtNjg0Nyw5ICs2ODgwLDkgQEAgc2N0cF9tc2df
YXBwZW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAl9CiAJc3RybSA9ICZzdGNiLT5hc29jLnN0
cm1vdXRbc3Jjdi0+c2luZm9fc3RyZWFtXTsKIAkvKiBOb3cgY2FuIHdlIHNlbmQgdGhpcz8gKi8K
LQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1NFTlQpIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29j
KSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSB8fAorCWlmICgoU0NUUF9HRVRfU1RB
VEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAorCSAgICAoU0NUUF9HRVRf
U1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKKwkgICAgKFND
VFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpIHx8CiAJ
ICAgIChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSkgewog
CQkvKiBnb3QgZGF0YSB3aGlsZSBzaHV0dGluZyBkb3duICovCiAJCVNDVFBfTFRSQUNFX0VSUl9S
RVQoTlVMTCwgc3RjYiwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfT1VUUFVULCBFQ09OTlJFU0VUKTsK
QEAgLTcxNzYsMTUgKzcyMDksMTQgQEAgc2N0cF9zZW5kYWxsX2l0ZXJhdG9yKHN0cnVjdCBzY3Rw
X2lucGNiIAogCQkJCQlnb3RvIGFib3J0X2FueXdheTsKIAkJCQl9CiAJCQkJLyogdGhlcmUgaXMg
bm90aGluZyBxdWV1ZWQgdG8gc2VuZCwgc28gSSdtIGRvbmUuLi4gKi8KLQkJCQlpZiAoKFNDVFBf
R0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKLQkJCQkgICAg
KFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYm
Ci0JCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FD
S19TRU5UKSkgeworCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9T
SFVURE9XTl9TRU5UKSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9SRUNFSVZFRCkgJiYKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2Ip
ICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJCQkJCS8qIG9ubHkgc2VuZCBT
SFVURE9XTiB0aGUgZmlyc3QgdGltZSB0aHJvdWdoICovCi0JCQkJCWlmIChTQ1RQX0dFVF9TVEFU
RShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0
Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgewogCQkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihz
Y3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9Ci0JCQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBf
U1RBVEVfU0hVVERPV05fU0VOVCk7Ci0JCQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NU
UF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRfU1RBVEUoc3RjYiwgU0NU
UF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCQkJc2N0cF9zdG9wX3RpbWVyc19mb3Jfc2h1dGRv
d24oc3RjYik7CiAJCQkJCXNjdHBfc2VuZF9zaHV0ZG93bihzdGNiLCBuZXQpOwogCQkJCQlzY3Rw
X3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9XTiwgc3RjYi0+c2N0cF9lcCwgc3Rj
YiwKQEAgLTcyMDUsMTMgKzcyMzcsMTMgQEAgc2N0cF9zZW5kYWxsX2l0ZXJhdG9yKHN0cnVjdCBz
Y3RwX2lucGNiIAogCQkJCSAqIGRhdGEgdG8gYmUgc2VudCBmaXJzdCBhbmQgbW92ZSB0bwogCQkJ
CSAqIFNIVVRET1dOLVBFTkRJTkcKIAkJCQkgKi8KLQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFz
b2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCkgJiYKLQkJCQkgICAgKFNDVFBfR0VUX1NU
QVRFKGFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCi0JCQkJICAgIChT
Q1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgewor
CQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5U
KSAmJgorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9X
Tl9SRUNFSVZFRCkgJiYKKwkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RB
VEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CiAJCQkJCWlmICgoKmFzb2MtPnNzX2Z1bmN0aW9ucy5z
Y3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShzdGNiLCBhc29jKSkgewotCQkJCQkJYXNv
Yy0+c3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUOworCQkJCQkJU0NUUF9BRERf
U1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsKIAkJCQkJfQotCQkJ
CQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkc7CisJCQkJCVNDVFBf
QUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CiAJCQkJCWlm
IChUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKIAkJCQkJICAgIFRBSUxRX0VNUFRZ
KCZhc29jLT5zZW50X3F1ZXVlKSAmJgogCQkJCQkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFU
RV9QQVJUSUFMX01TR19MRUZUKSkgewpAQCAtNzI3OSwxNSArNzMxMSwxOSBAQCBzY3RwX3NlbmRh
bGxfY29tcGxldGVzKHZvaWQgKnB0ciwgdWludDMyCiAJICovCiAKIAkvKiBub3cgZnJlZSBldmVy
eXRoaW5nICovCisJaWYgKGNhLT5pbnApIHsKKwkJLyogTGV0cyBjbGVhciB0aGUgZmxhZyB0byBh
bGxvdyBvdGhlcnMgdG8gcnVuLiAqLworCQljYS0+aW5wLT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BD
Ql9GTEFHU19TTkRfSVRFUkFUT1JfVVA7CisJfQogCXNjdHBfbV9mcmVlbShjYS0+bSk7CiAJU0NU
UF9GUkVFKGNhLCBTQ1RQX01fQ09QWUFMKTsKIH0KIAogc3RhdGljIHN0cnVjdCBtYnVmICoKLXNj
dHBfY29weV9vdXRfYWxsKHN0cnVjdCB1aW8gKnVpbywgaW50IGxlbikKK3NjdHBfY29weV9vdXRf
YWxsKHN0cnVjdCB1aW8gKnVpbywgc3NpemVfdCBsZW4pCiB7CiAJc3RydWN0IG1idWYgKnJldCwg
KmF0OwotCWludCBsZWZ0LCB3aWxsY3B5LCBjYW5jcHksIGVycm9yOworCXNzaXplX3QgbGVmdCwg
d2lsbGNweSwgY2FuY3B5LCBlcnJvcjsKIAogCXJldCA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhN
Q0xCWVRFUywgMCwgTV9XQUlUT0ssIDEsIE1UX0RBVEEpOwogCWlmIChyZXQgPT0gTlVMTCkgewpA
QCAtNzMwMiwxNyArNzMzOCwxNyBAQCBzY3RwX2NvcHlfb3V0X2FsbChzdHJ1Y3QgdWlvICp1aW8s
IGludCBsCiAJYXQgPSByZXQ7CiAJd2hpbGUgKGxlZnQgPiAwKSB7CiAJCS8qIEFsaWduIGRhdGEg
dG8gdGhlIGVuZCAqLwotCQllcnJvciA9IHVpb21vdmUobXRvZChhdCwgY2FkZHJfdCksIHdpbGxj
cHksIHVpbyk7CisJCWVycm9yID0gdWlvbW92ZShtdG9kKGF0LCBjYWRkcl90KSwgKGludCl3aWxs
Y3B5LCB1aW8pOwogCQlpZiAoZXJyb3IpIHsKIAllcnJfb3V0X25vdzoKIAkJCXNjdHBfbV9mcmVl
bShhdCk7CiAJCQlyZXR1cm4gKE5VTEwpOwogCQl9Ci0JCVNDVFBfQlVGX0xFTihhdCkgPSB3aWxs
Y3B5OworCQlTQ1RQX0JVRl9MRU4oYXQpID0gKGludCl3aWxsY3B5OwogCQlTQ1RQX0JVRl9ORVhU
X1BLVChhdCkgPSBTQ1RQX0JVRl9ORVhUKGF0KSA9IDA7CiAJCWxlZnQgLT0gd2lsbGNweTsKIAkJ
aWYgKGxlZnQgPiAwKSB7Ci0JCQlTQ1RQX0JVRl9ORVhUKGF0KSA9IHNjdHBfZ2V0X21idWZfZm9y
X21zZyhsZWZ0LCAwLCBNX1dBSVRPSywgMSwgTVRfREFUQSk7CisJCQlTQ1RQX0JVRl9ORVhUKGF0
KSA9IHNjdHBfZ2V0X21idWZfZm9yX21zZygodW5zaWduZWQgaW50KWxlZnQsIDAsIE1fV0FJVE9L
LCAxLCBNVF9EQVRBKTsKIAkJCWlmIChTQ1RQX0JVRl9ORVhUKGF0KSA9PSBOVUxMKSB7CiAJCQkJ
Z290byBlcnJfb3V0X25vdzsKIAkJCX0KQEAgLTczMzIsNiArNzM2OCwyMiBAQCBzY3RwX3NlbmRh
bGwoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RyCiAJaW50IHJldDsKIAlzdHJ1Y3Qgc2N0cF9j
b3B5X2FsbCAqY2E7CiAKKwlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU05E
X0lURVJBVE9SX1VQKSB7CisJCS8qIFRoZXJlIGlzIGFub3RoZXIuICovCisJCXJldHVybiAoRUJV
U1kpOworCX0KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKEFQUExFX0xFT1BB
UkQpCisJaWYgKHVpby0+dWlvX3Jlc2lkID4gU0NUUF9CQVNFX1NZU0NUTChzY3RwX3NlbmRhbGxf
bGltaXQpKSB7CisjZWxzZQorCWlmICh1aW9fcmVzaWQodWlvKSA+IFNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9zZW5kYWxsX2xpbWl0KSkgeworI2VuZGlmCisjZWxzZQorCWlmICh1aW8tPnVpb19yZXNp
ZCA+IChzc2l6ZV90KVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kYWxsX2xpbWl0KSkgeworI2Vu
ZGlmCisJCS8qIFlvdSBtdXN0IG5vdCBiZSBsYXJnZXIgdGhhbiB0aGUgbGltaXQhICovCisJCXJl
dHVybiAoRU1TR1NJWkUpOworCX0KIAlTQ1RQX01BTExPQyhjYSwgc3RydWN0IHNjdHBfY29weV9h
bGwgKiwgc2l6ZW9mKHN0cnVjdCBzY3RwX2NvcHlfYWxsKSwKIAkJICAgIFNDVFBfTV9DT1BZQUwp
OwogCWlmIChjYSA9PSBOVUxMKSB7CkBAIC03MzU5LDcgKzc0MTEsNyBAQCBzY3RwX3NlbmRhbGwo
c3RydWN0IHNjdHBfaW5wY2IgKmlucCwgc3RyCiAJCWNhLT5zbmRsZW4gPSB1aW9fcmVzaWQodWlv
KTsKICNlbmRpZgogI2Vsc2UKLQkJY2EtPnNuZGxlbiA9IChpbnQpdWlvLT51aW9fcmVzaWQ7CisJ
CWNhLT5zbmRsZW4gPSB1aW8tPnVpb19yZXNpZDsKICNlbmRpZgogI2lmIGRlZmluZWQoX19BUFBM
RV9fKQogCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soU0NUUF9JTlBfU08oaW5wKSwgMCk7CkBAIC03Mzgy
LDEzICs3NDM0LDE0IEBAIHNjdHBfc2VuZGFsbChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHIK
IAkJCWNhLT5zbmRsZW4gKz0gU0NUUF9CVUZfTEVOKG1hdCk7CiAJCX0KIAl9CisJaW5wLT5zY3Rw
X2ZsYWdzIHw9IFNDVFBfUENCX0ZMQUdTX1NORF9JVEVSQVRPUl9VUDsKIAlyZXQgPSBzY3RwX2lu
aXRpYXRlX2l0ZXJhdG9yKE5VTEwsIHNjdHBfc2VuZGFsbF9pdGVyYXRvciwgTlVMTCwKIAkJCQkg
ICAgIFNDVFBfUENCX0FOWV9GTEFHUywgU0NUUF9QQ0JfQU5ZX0ZFQVRVUkVTLAogCQkJCSAgICAg
U0NUUF9BU09DX0FOWV9TVEFURSwKIAkJCQkgICAgICh2b2lkICopY2EsIDAsCiAJCQkJICAgICBz
Y3RwX3NlbmRhbGxfY29tcGxldGVzLCBpbnAsIDEpOwogCWlmIChyZXQpIHsKLQkJU0NUUF9QUklO
VEYoIkZhaWxlZCB0byBpbml0aWF0ZSBpdGVyYXRvciBmb3Igc2VuZGFsbFxuIik7CisJCWlucC0+
c2N0cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxBR1NfU05EX0lURVJBVE9SX1VQOwogCQlTQ1RQX0ZS
RUUoY2EsIFNDVFBfTV9DT1BZQUwpOwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUX1BLVChtLCBpbnAs
IE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwgRUZBVUxUKTsKIAkJcmV0dXJuIChF
RkFVTFQpOwpAQCAtNzY5NCw3ICs3NzQ3LDcgQEAgb25lX21vcmVfdGltZToKIAl9CiAJaWYgKChz
cC0+bXNnX2lzX2NvbXBsZXRlKSAmJiAoc3AtPmxlbmd0aCA9PSAwKSkgewogCQlpZiAoc3AtPnNl
bmRlcl9hbGxfZG9uZSkgewotCQkJLyogV2UgYXJlIGRvaW5nIGRpZmZlcmVkIGNsZWFudXAuIExh
c3QKKwkJCS8qIFdlIGFyZSBkb2luZyBkZWZlcnJlZCBjbGVhbnVwLiBMYXN0CiAJCQkgKiB0aW1l
IHRocm91Z2ggd2hlbiB3ZSB0b29rIGFsbCB0aGUgZGF0YQogCQkJICogdGhlIHNlbmRlcl9hbGxf
ZG9uZSB3YXMgbm90IHNldC4KIAkJCSAqLwpAQCAtODMyNiw4ICs4Mzc5LDggQEAgc2N0cF9tZWRf
Y2h1bmtfb3V0cHV0KHN0cnVjdCBzY3RwX2lucGNiIAogCWludCBidW5kbGVfYXQsIGN0bF9jbnQs
IG5vX2RhdGFfY2h1bmtzLCBlZW9yX21vZGU7CiAJdW5zaWduZWQgaW50IG10dSwgcl9tdHUsIG9t
dHUsIG14X210dSwgdG9fb3V0OwogCWludCB0c25zX3NlbnQgPSAwOwotCXVpbnQzMl90IGF1dGhf
b2Zmc2V0ID0gMDsKLQlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoID0gTlVMTDsKKwl1aW50
MzJfdCBhdXRoX29mZnNldDsKKwlzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoOwogCXVpbnQx
Nl90IGF1dGhfa2V5aWQ7CiAJaW50IG92ZXJyaWRlX29rID0gMTsKIAlpbnQgc2tpcF9maWxsX3Vw
ID0gMDsKQEAgLTgzNDcsNyArODQwMCw3IEBAIHNjdHBfbWVkX2NodW5rX291dHB1dChzdHJ1Y3Qg
c2N0cF9pbnBjYiAKIAkqcmVhc29uX2NvZGUgPSAwOwogCWF1dGhfa2V5aWQgPSBzdGNiLT5hc29j
LmF1dGhpbmZvLmFjdGl2ZV9rZXlpZDsKIAlpZiAoKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9T
SFVURE9XTl9QRU5ESU5HKSB8fAotCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1JFQ0VJVkVEKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFU
RV9TSFVURE9XTl9SRUNFSVZFRCkgfHwKIAkgICAgKHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIFND
VFBfUENCX0ZMQUdTX0VYUExJQ0lUX0VPUikpKSB7CiAJCWVlb3JfbW9kZSA9IDE7CiAJfSBlbHNl
IHsKQEAgLTg1MjUsNiArODU3OCw4IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCX0KIAkJYnVu
ZGxlX2F0ID0gMDsKIAkJZW5kb3V0Y2hhaW4gPSBvdXRjaGFpbiA9IE5VTEw7CisJCWF1dGggPSBO
VUxMOworCQlhdXRoX29mZnNldCA9IDA7CiAJCW5vX2ZyYWdtZW50ZmxnID0gMTsKIAkJb25lX2No
dW5rID0gMDsKIAkJaWYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9VTkNPTkZJUk1FRCkg
ewpAQCAtODkwNiw3ICs4OTYxLDcgQEAgYWdhaW5fb25lX21vcmVfdGltZToKIAkJCQkJCS8qIHR1
cm4gb2ZmIHRoZSB0aW1lciAqLwogCQkJCQkJaWYgKFNDVFBfT1NfVElNRVJfUEVORElORygmc3Rj
Yi0+YXNvYy5kYWNrX3RpbWVyLnRpbWVyKSkgewogCQkJCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQ
X1RJTUVSX1RZUEVfUkVDViwKLQkJCQkJCQkJCWlucCwgc3RjYiwgbmV0LAorCQkJCQkJCSAgICAg
ICAgICAgICAgICBpbnAsIHN0Y2IsIG5ldCwKIAkJCQkJCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBfT1VUUFVUICsgU0NUUF9MT0NfMSk7CiAJCQkJCQl9CiAJCQkJCX0KQEAgLTkxMTcs
OCArOTE3Miw4IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQlvbXR1ID0gMDsKIAkJCWJyZWFr
OwogCQl9Ci0JCWlmICgoKChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4p
IHx8Ci0JCSAgICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1JFQ0VJVkVEKSkgJiYKKwkJaWYgKCgoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RB
VEVfT1BFTikgfHwKKwkJICAgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpKSAmJgogCQkgICAgIChza2lwX2RhdGFfZm9yX3RoaXNfbmV0ID09
IDApKSB8fAogCQkgICAgKGNvb2tpZSkpIHsKIAkJCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZh
c29jLT5zZW5kX3F1ZXVlLCBzY3RwX25leHQsIG5jaGspIHsKQEAgLTkxNjcsNyArOTIyMiw3IEBA
IGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQkJCWNoay0+ZmxhZ3MgfD0gQ0hVTktfRkxBR1NfRlJB
R01FTlRfT0s7CiAJCQkJfQogCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZW5hYmxlX3Nh
Y2tfaW1tZWRpYXRlbHkpICYmCi0JCQkJICAgICgoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NI
VVRET1dOX1BFTkRJTkcpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykpIHsKKwkJCQkg
ICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSkgewogCQkJCQlz
dHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICpkY2hraDsKIAogCQkJCQlkY2hraCA9IG10b2QoY2hrLT5k
YXRhLCBzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICopOwpAQCAtOTQ1NCwxNCArOTUwOSwxNSBAQCBz
Y3RwX3F1ZXVlX29wX2VycihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCXJldHVybjsKIAl9CiAJ
Y2hrLT5jb3B5X2J5X3JlZiA9IDA7CisJY2hrLT5yZWMuY2h1bmtfaWQuaWQgPSBTQ1RQX09QRVJB
VElPTl9FUlJPUjsKKwljaGstPnJlYy5jaHVua19pZC5jYW5fdGFrZV9kYXRhID0gMDsKKwljaGst
PmZsYWdzID0gMDsKIAljaGstPnNlbmRfc2l6ZSA9ICh1aW50MTZfdCljaHVua19sZW5ndGg7CiAJ
Y2hrLT5zZW50ID0gU0NUUF9EQVRBR1JBTV9VTlNFTlQ7CiAJY2hrLT5zbmRfY291bnQgPSAwOwog
CWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOwogCWNoay0+ZGF0YSA9IG9wX2VycjsKIAljaGstPndo
b1RvID0gTlVMTDsKLQljaGstPnJlYy5jaHVua19pZC5pZCA9IFNDVFBfT1BFUkFUSU9OX0VSUk9S
OwotCWNoay0+cmVjLmNodW5rX2lkLmNhbl90YWtlX2RhdGEgPSAwOwogCWhkciA9IG10b2Qob3Bf
ZXJyLCBzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKTsKIAloZHItPmNodW5rX3R5cGUgPSBTQ1RQX09Q
RVJBVElPTl9FUlJPUjsKIAloZHItPmNodW5rX2ZsYWdzID0gMDsKQEAgLTk0NzIsNyArOTUyOCw3
IEBAIHNjdHBfcXVldWVfb3BfZXJyKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAogaW50CiBzY3Rw
X3NlbmRfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sCi0gICAgaW50IG9mZnNldCwKKyAgICBp
bnQgb2Zmc2V0LCBpbnQgbGltaXQsCiAgICAgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIHN0
cnVjdCBzY3RwX25ldHMgKm5ldCkKIHsKQEAgLTk0OTgsMTggKzk1NTQsMjkgQEAgc2N0cF9zZW5k
X2Nvb2tpZV9lY2hvKHN0cnVjdCBtYnVmICptLAogCQl9CiAJCXB0eXBlID0gbnRvaHMocGhkci0+
cGFyYW1fdHlwZSk7CiAJCXBsZW4gPSBudG9ocyhwaGRyLT5wYXJhbV9sZW5ndGgpOworCQlpZiAo
cGxlbiA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIHsKKwkJCXJldHVybiAoLTYpOwor
CQl9CiAJCWlmIChwdHlwZSA9PSBTQ1RQX1NUQVRFX0NPT0tJRSkgewogCQkJaW50IHBhZDsKIAog
CQkJLyogZm91bmQgdGhlIGNvb2tpZSAqLwotCQkJaWYgKChwYWQgPSAocGxlbiAlIDQpKSkgewot
CQkJCXBsZW4gKz0gNCAtIHBhZDsKKwkJCWlmIChhdCArIHBsZW4gPiBsaW1pdCkgeworCQkJCXJl
dHVybiAoLTcpOwogCQkJfQogCQkJY29va2llID0gU0NUUF9NX0NPUFlNKG0sIGF0LCBwbGVuLCBN
X05PV0FJVCk7CiAJCQlpZiAoY29va2llID09IE5VTEwpIHsKIAkJCQkvKiBObyBtZW1vcnkgKi8K
IAkJCQlyZXR1cm4gKC0yKTsKIAkJCX0KKwkJCWlmICgocGFkID0gKHBsZW4gJSA0KSkgPiAwKSB7
CisJCQkJcGFkID0gNCAtIHBhZDsKKwkJCX0KKwkJCWlmIChwYWQgPiAwKSB7CisJCQkJaWYgKHNj
dHBfcGFkX2xhc3RtYnVmKGNvb2tpZSwgcGFkLCBOVUxMKSA9PSBOVUxMKSB7CisJCQkJCXJldHVy
biAoLTgpOworCQkJCX0KKwkJCX0KICNpZmRlZiBTQ1RQX01CVUZfTE9HR0lORwogCQkJaWYgKFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfTUJVRl9MT0dHSU5HX0VO
QUJMRSkgewogCQkJCXNjdHBfbG9nX21iYyhjb29raWUsIFNDVFBfTUJVRl9JQ09QWSk7CkBAIC05
NTM1LDcgKzk2MDIsNyBAQCBzY3RwX3NlbmRfY29va2llX2VjaG8oc3RydWN0IG1idWYgKm0sCiAJ
Y2hrLT5yZWMuY2h1bmtfaWQuaWQgPSBTQ1RQX0NPT0tJRV9FQ0hPOwogCWNoay0+cmVjLmNodW5r
X2lkLmNhbl90YWtlX2RhdGEgPSAwOwogCWNoay0+ZmxhZ3MgPSBDSFVOS19GTEFHU19GUkFHTUVO
VF9PSzsKLQljaGstPnNlbmRfc2l6ZSA9IHBsZW47CisJY2hrLT5zZW5kX3NpemUgPSBTQ1RQX1NJ
WkUzMihwbGVuKTsKIAljaGstPnNlbnQgPSBTQ1RQX0RBVEFHUkFNX1VOU0VOVDsKIAljaGstPnNu
ZF9jb3VudCA9IDA7CiAJY2hrLT5hc29jID0gJnN0Y2ItPmFzb2M7CkBAIC05NTYxLDcgKzk2Mjgs
NiBAQCBzY3RwX3NlbmRfaGVhcnRiZWF0X2FjayhzdHJ1Y3Qgc2N0cF90Y2IgCiAJc3RydWN0IHNj
dHBfY2h1bmtoZHIgKmNoZHI7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwogCi0KIAlp
ZiAobmV0ID09IE5VTEwpCiAJCS8qIG11c3QgaGF2ZSBhIG5ldCBwb2ludGVyICovCiAJCXJldHVy
bjsKQEAgLTk1NzksMTMgKzk2NDUsOCBAQCBzY3RwX3NlbmRfaGVhcnRiZWF0X2FjayhzdHJ1Y3Qg
c2N0cF90Y2IgCiAJY2hkciA9IG10b2Qob3V0Y2hhaW4sIHN0cnVjdCBzY3RwX2NodW5raGRyICop
OwogCWNoZHItPmNodW5rX3R5cGUgPSBTQ1RQX0hFQVJUQkVBVF9BQ0s7CiAJY2hkci0+Y2h1bmtf
ZmxhZ3MgPSAwOwotCWlmIChjaGtfbGVuZ3RoICUgNCkgewotCQkvKiBuZWVkIHBhZCAqLwotCQl1
aW50MzJfdCBjcHRoaXMgPSAwOwotCQlpbnQgcGFkbGVuOwotCi0JCXBhZGxlbiA9IDQgLSAoY2hr
X2xlbmd0aCAlIDQpOwotCQltX2NvcHliYWNrKG91dGNoYWluLCBjaGtfbGVuZ3RoLCBwYWRsZW4s
IChjYWRkcl90KSZjcHRoaXMpOworCWlmIChjaGtfbGVuZ3RoICUgNCAhPSAwKSB7CisJCXNjdHBf
cGFkX2xhc3RtYnVmKG91dGNoYWluLCA0IC0gKGNoa19sZW5ndGggJSA0KSwgTlVMTCk7CiAJfQog
CXNjdHBfYWxsb2NfYV9jaHVuayhzdGNiLCBjaGspOwogCWlmIChjaGsgPT0gTlVMTCkgewpAQCAt
OTY4Myw3ICs5NzQ0LDYgQEAgc2N0cF9zZW5kX3NodXRkb3duX2FjayhzdHJ1Y3Qgc2N0cF90Y2Ig
KgogCWNoay0+c2VuZF9zaXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKIAljaGst
PnNlbnQgPSBTQ1RQX0RBVEFHUkFNX1VOU0VOVDsKIAljaGstPnNuZF9jb3VudCA9IDA7Ci0JY2hr
LT5mbGFncyA9IDA7CiAJY2hrLT5hc29jID0gJnN0Y2ItPmFzb2M7CiAJY2hrLT5kYXRhID0gbV9z
aHV0ZG93bl9hY2s7CiAJY2hrLT53aG9UbyA9IG5ldDsKQEAgLTk3MzgsNyArOTc5OCw2IEBAIHNj
dHBfc2VuZF9zaHV0ZG93bihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IKIAkJY2hrLT5zZW5kX3NpemUg
PSBzaXplb2Yoc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmspOwogCQljaGstPnNlbnQgPSBTQ1RQ
X0RBVEFHUkFNX1VOU0VOVDsKIAkJY2hrLT5zbmRfY291bnQgPSAwOwotCQljaGstPmZsYWdzID0g
MDsKIAkJY2hrLT5hc29jID0gJnN0Y2ItPmFzb2M7CiAJCWNoay0+ZGF0YSA9IG1fc2h1dGRvd247
CiAJCWNoay0+d2hvVG8gPSBuZXQ7CkBAIC0xMDA2Niw4ICsxMDEyNSw4IEBAIHNjdHBfY2h1bmtf
cmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW4KIAlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPnNl
bnRfcXVldWUpKSB7CiAJCXJldHVybiAoU0NUUF9SRVRSQU5fRE9ORSk7CiAJfQotCWlmICgoU0NU
UF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB8fAotCSAgICAo
U0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkpIHsKKwlpZiAo
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgfHwKKwkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpKSB7CiAJ
CS8qIG5vdCB5ZXQgb3BlbiwgcmVzZW5kIHRoZSBjb29raWUgYW5kIHRoYXQgaXMgaXQgKi8KIAkJ
cmV0dXJuICgxKTsKIAl9CkBAIC0xMDQxOCw3ICsxMDQ3Nyw3IEBAIHNjdHBfY2h1bmtfcmV0cmFu
c21pc3Npb24oc3RydWN0IHNjdHBfaW4KIAkJCQkJCSAqIHQzLWV4cGlyaW5nLgogCQkJCQkJICov
CiAJCQkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsIGlucCwgc3RjYiwg
bmV0LAotCQkJCQkJCQlTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18yKTsKKwkJCQkJ
CSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9PVVRQVVQgKyBTQ1RQX0xPQ18yKTsKIAkJ
CQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NFTkQsIGlucCwgc3RjYiwgbmV0
KTsKIAkJCQkJfQogCQkJCX0KQEAgLTEwNTQ0LDcgKzEwNjAzLDggQEAgZG9faXRfYWdhaW46CiAJ
ICovCiAJaWYgKFNDVFBfT1NfVElNRVJfUEVORElORygmc3RjYi0+YXNvYy5kYWNrX3RpbWVyLnRp
bWVyKSkgewogCQlzY3RwX3NlbmRfc2FjayhzdGNiLCBzb19sb2NrZWQpOwotCQkodm9pZClTQ1RQ
X09TX1RJTUVSX1NUT1AoJnN0Y2ItPmFzb2MuZGFja190aW1lci50aW1lcik7CisJCXNjdHBfdGlt
ZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUkVDViwgc3RjYi0+c2N0cF9lcCwgc3RjYiwgTlVMTCwK
KwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzMpOwog
CX0KIAl3aGlsZSAoYXNvYy0+c2VudF9xdWV1ZV9yZXRyYW5fY250KSB7CiAJCS8qLQpAQCAtMTEw
OTAsNyArMTExNTAsNyBAQCBzY3RwX3NlbmRfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGlu
CiAJCQlpZiAoc3RjYi0+YXNvYy5kZWxheWVkX2FjaykgewogCQkJCXNjdHBfdGltZXJfc3RvcChT
Q1RQX1RJTUVSX1RZUEVfUkVDViwKIAkJCQkgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcCwg
c3RjYiwgTlVMTCwKLQkJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsg
U0NUUF9MT0NfMyk7CisJCQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCAr
IFNDVFBfTE9DXzQpOwogCQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1JFQ1Ys
CiAJCQkJICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQkJfSBlbHNlIHsKQEAgLTEx
MTU5LDcgKzExMjE5LDcgQEAgc2N0cF9zZW5kX3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCBp
bgogCQlpZiAoc3RjYi0+YXNvYy5kZWxheWVkX2FjaykgewogCQkJc2N0cF90aW1lcl9zdG9wKFND
VFBfVElNRVJfVFlQRV9SRUNWLAogCQkJICAgICAgICAgICAgICAgIHN0Y2ItPnNjdHBfZXAsIHN0
Y2IsIE5VTEwsCi0JCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsgU0NU
UF9MT0NfNCk7CisJCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsgU0NU
UF9MT0NfNSk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9SRUNWLAogCQkJ
ICAgIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwpOwogCQl9IGVsc2UgewpAQCAtMTE4OTMsMTMg
KzExOTUzLDE2IEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywKIAkJ
CXJvLnJvX3J0ID0gTlVMTDsKIAkJfQogI2Vsc2UKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQor
CQlTQ1RQX1BST0JFNShzZW5kLCBOVUxMLCBOVUxMLCBpcCwgTlVMTCwgc2hvdXQpOworI2VuZGlm
CiAJCVNDVFBfSVBfT1VUUFVUKHJldCwgb19wYWssIE5VTEwsIE5VTEwsIHZyZl9pZCk7CiAjZW5k
aWYKIAkJYnJlYWs7CiAjZW5kaWYKICNpZmRlZiBJTkVUNgogCWNhc2UgQUZfSU5FVDY6Ci0JCWlw
Ni0+aXA2X3BsZW4gPSBodG9ucyhsZW4gLSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpKTsKKwkJaXA2
LT5pcDZfcGxlbiA9IGh0b25zKCh1aW50MTZfdCkobGVuIC0gc2l6ZW9mKHN0cnVjdCBpcDZfaGRy
KSkpOwogCQlpZiAocG9ydCkgewogCQkJc2hvdXQtPmNoZWNrc3VtID0gc2N0cF9jYWxjdWxhdGVf
Y2tzdW0obW91dCwgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSArIHNpemVvZihzdHJ1Y3QgdWRwaGRy
KSk7CiAJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kc3djcmMpOwpAQCAtMTE5MjksNiArMTE5
OTIsOSBAQCBzY3RwX3NlbmRfcmVzcF9tc2coc3RydWN0IHNvY2thZGRyICpzcmMsCiAJCQlzY3Rw
X3BhY2tldF9sb2cob19wYWspOwogCQl9CiAjZW5kaWYKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorCQlTQ1RQX1BST0JFNShzZW5kLCBOVUxMLCBOVUxMLCBpcDYsIE5VTEwsIHNob3V0KTsKKyNl
bmRpZgogCQlTQ1RQX0lQNl9PVVRQVVQocmV0LCBvX3BhaywgTlVMTCwgTlVMTCwgTlVMTCwgdnJm
X2lkKTsKIAkJYnJlYWs7CiAjZW5kaWYKQEAgLTExOTcwLDYgKzEyMDM2LDExIEBAIHNjdHBfc2Vu
ZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywKIAkJcmV0dXJuOwogCX0KIAlTQ1RQREJH
KFNDVFBfREVCVUdfT1VUUFVUMywgInJldHVybiBmcm9tIHNlbmQgaXMgJWRcbiIsIHJldCk7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlpZiAocG9ydCkgeworCQlVRFBTVEFUX0lOQyh1ZHBz
X29wYWNrZXRzKTsKKwl9CisjZW5kaWYKIAlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kcGFja2V0
cyk7CiAJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjY0KHNjdHBzX291dHBhY2tldHMpOwogCVNDVFBf
U1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19vdXRjb250cm9sY2h1bmtzKTsKQEAgLTEyMjQwLDcg
KzEyMzExLDcgQEAgc2N0cF9zZW5kX3BhY2tldF9kcm9wcGVkKHN0cnVjdCBzY3RwX3RjYgogCWNo
ay0+ZmxhZ3MgPSAwOwogCWxlbiAtPSBpcGhsZW47CiAJY2hrLT5zZW5kX3NpemUgPSBsZW47Ci0g
ICAgICAgIC8qIFZhbGlkYXRlIHRoYXQgd2UgZG8gbm90IGhhdmUgYW4gQUJPUlQgaW4gaGVyZS4g
Ki8KKwkvKiBWYWxpZGF0ZSB0aGF0IHdlIGRvIG5vdCBoYXZlIGFuIEFCT1JUIGluIGhlcmUuICov
CiAJb2Zmc2V0ID0gaXBobGVuICsgc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKTsKIAljaCA9IChzdHJ1
Y3Qgc2N0cF9jaHVua2hkciAqKXNjdHBfbV9nZXRwdHIobSwgb2Zmc2V0LAogCQkJCQkJICAgc2l6
ZW9mKCpjaCksICh1aW50OF90ICopICYgY2h1bmtfYnVmKTsKQEAgLTEyODY2LDcgKzEyOTM3LDYg
QEAgc2N0cF9zZW5kX3N0cl9yZXNldF9yZXEoc3RydWN0IHNjdHBfdGNiIAogCWNoay0+Ym9va19z
aXplID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTsKIAljaGstPnNlbmRfc2l6ZSA9IFND
VFBfU0laRTMyKGNoay0+Ym9va19zaXplKTsKIAljaGstPmJvb2tfc2l6ZV9zY2FsZSA9IDA7Ci0K
IAljaGstPmRhdGEgPSBzY3RwX2dldF9tYnVmX2Zvcl9tc2coTUNMQllURVMsIDAsIE1fTk9XQUlU
LCAxLCBNVF9EQVRBKTsKIAlpZiAoY2hrLT5kYXRhID09IE5VTEwpIHsKIAkJc2N0cF9mcmVlX2Ff
Y2h1bmsoc3RjYiwgY2hrLCBTQ1RQX1NPX0xPQ0tFRCk7CkBAIC0xMzIzMiw3ICsxMzMwMiw3IEBA
IHNjdHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAgICAgc3RydWN0IHNjdHBf
c25kcmN2aW5mbyAqc3JjdiwKICAgICBzdHJ1Y3QgdWlvICp1aW8sCiAgICAgc3RydWN0IHNjdHBf
bmV0cyAqbmV0LAotICAgIGludCBtYXhfc2VuZF9sZW4sCisgICAgc3NpemVfdCBtYXhfc2VuZF9s
ZW4sCiAgICAgaW50IHVzZXJfbWFya3NfZW9yLAogICAgIGludCAqZXJyb3IpCiAKQEAgLTEzMjQ5
LDkgKzEzMzE5LDkgQEAgc2N0cF9jb3B5X2l0X2luKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAog
CSplcnJvciA9IDA7CiAJLyogTm93IGNhbiB3ZSBzZW5kIHRoaXM/ICovCi0JaWYgKChTQ1RQX0dF
VF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpIHx8Ci0JICAgIChTQ1RQ
X0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSB8fAotCSAg
ICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkg
fHwKKwlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgfHwKKwkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
QUNLX1NFTlQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSB8fAogCSAgICAoYXNvYy0+c3RhdGUgJiBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1BFTkRJTkcpKSB7CiAJCS8qIGdvdCBkYXRhIHdoaWxlIHNodXR0aW5nIGRvd24gKi8KIAkJ
U0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9PVVRQ
VVQsIEVDT05OUkVTRVQpOwpAQCAtMTM0NjEsNyArMTM1MzEsMTAgQEAgc2N0cF9sb3dlcl9zb3Nl
bmQoc3RydWN0IHNvY2tldCAqc28sCiAjZW5kaWYKIAkpCiB7Ci0JdW5zaWduZWQgaW50IHNuZGxl
biA9IDAsIG1heF9sZW47CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlzdHJ1Y3QgZXBvY2hf
dHJhY2tlciBldDsKKyNlbmRpZgorCXNzaXplX3Qgc25kbGVuID0gMCwgbWF4X2xlbiwgbG9jYWxf
YWRkX21vcmU7CiAJaW50IGVycm9yLCBsZW47CiAJc3RydWN0IG1idWYgKnRvcCA9IE5VTEw7CiAj
aWZkZWYgX19QYW5kYV9fCkBAIC0xMzQ4Niw3ICsxMzU1OSw3IEBAIHNjdHBfbG93ZXJfc29zZW5k
KHN0cnVjdCBzb2NrZXQgKnNvLAogCWludCBnb3RfYWxsX29mX3RoZV9zZW5kID0gMDsKIAlpbnQg
aG9sZF90Y2Jsb2NrID0gMDsKIAlpbnQgbm9uX2Jsb2NraW5nID0gMDsKLQl1aW50MzJfdCBsb2Nh
bF9hZGRfbW9yZSwgbG9jYWxfc29yZXN2ID0gMDsKKwlzc2l6ZV90IGxvY2FsX3NvcmVzdiA9IDA7
CiAJdWludDE2X3QgcG9ydDsKIAl1aW50MTZfdCBzaW5mb19mbGFnczsKIAlzY3RwX2Fzc29jX3Qg
c2luZm9fYXNzb2NfaWQ7CkBAIC0xMzUyOSwxMiArMTM2MDIsMTIgQEAgc2N0cF9sb3dlcl9zb3Nl
bmQoc3RydWN0IHNvY2tldCAqc28sCiAJCX0KICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKICNpZiBk
ZWZpbmVkKEFQUExFX0xFT1BBUkQpCi0JCXNuZGxlbiA9ICh1bnNpZ25lZCBpbnQpdWlvLT51aW9f
cmVzaWQ7CisJCXNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2Vsc2UKLQkJc25kbGVuID0gKHVu
c2lnbmVkIGludCl1aW9fcmVzaWQodWlvKTsKKwkJc25kbGVuID0gdWlvX3Jlc2lkKHVpbyk7CiAj
ZW5kaWYKICNlbHNlCi0JCXNuZGxlbiA9ICh1bnNpZ25lZCBpbnQpdWlvLT51aW9fcmVzaWQ7CisJ
CXNuZGxlbiA9IHVpby0+dWlvX3Jlc2lkOwogI2VuZGlmCiAJfSBlbHNlIHsKIAkJdG9wID0gU0NU
UF9IRUFERVJfVE9fQ0hBSU4oaV9wYWspOwpAQCAtMTM1NjMsNyArMTM2MzYsNyBAQCBzY3RwX2xv
d2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJc25kbGVuID0gU0NUUF9IRUFERVJfTEVO
KGlfcGFrKTsKICNlbmRpZgogCX0KLQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMSwgIlNlbmQg
Y2FsbGVkIGFkZHI6JXAgc2VuZCBsZW5ndGggJWRcbiIsCisJU0NUUERCRyhTQ1RQX0RFQlVHX09V
VFBVVDEsICJTZW5kIGNhbGxlZCBhZGRyOiVwIHNlbmQgbGVuZ3RoICV6dVxuIiwKIAkJKHZvaWQg
KilhZGRyLAogCSAgICAgICAgc25kbGVuKTsKICNpZmRlZiBfX1BhbmRhX18KQEAgLTEzNjQ0LDYg
KzEzNzE3LDE0IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlzaW5m
b19mbGFncyA9IGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3M7CiAJCXNpbmZvX2Fzc29jX2lkID0g
aW5wLT5kZWZfc2VuZC5zaW5mb19hc3NvY19pZDsKIAl9CisjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKwlpZiAoZmxhZ3MgJiBNU0dfRU9SKSB7CisJCXNpbmZvX2ZsYWdzIHw9IFNDVFBfRU9SOwor
CX0KKwlpZiAoZmxhZ3MgJiBNU0dfRU9GKSB7CisJCXNpbmZvX2ZsYWdzIHw9IFNDVFBfRU9GOwor
CX0KKyNlbmRpZgogCWlmIChzaW5mb19mbGFncyAmIFNDVFBfU0VOREFMTCkgewogCQkvKiBpdHMg
YSBzZW5kYWxsICovCiAJCWVycm9yID0gc2N0cF9zZW5kYWxsKGlucCwgdWlvLCB0b3AsIHNyY3Yp
OwpAQCAtMTM3MTEsOSArMTM3OTIsMTEgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tl
dCAqc28sCiAJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJLyogV2l0aCB0aGUgbG9jayBhcHBs
aWVkIGxvb2sgYWdhaW4gKi8KIAkJc3RjYiA9IHNjdHBfZmluZGFzc29jaWF0aW9uX2VwX2FkZHIo
JnRfaW5wLCBhZGRyLCAmbmV0LCBOVUxMLCBOVUxMKTsKKyNpZiBkZWZpbmVkKElORVQpIHx8IGRl
ZmluZWQoSU5FVDYpCiAJCWlmICgoc3RjYiA9PSBOVUxMKSAmJiAoY29udHJvbCAhPSBOVUxMKSAm
JiAocG9ydCA+IDApKSB7CiAJCQlzdGNiID0gc2N0cF9maW5kYXNzb2NpYXRpb25fY21zZ3MoJnRf
aW5wLCBwb3J0LCBjb250cm9sLCAmbmV0LCAmZXJyb3IpOwogCQl9CisjZW5kaWYKIAkJaWYgKHN0
Y2IgPT0gTlVMTCkgewogCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCVNDVFBfSU5QX0RFQ1Jf
UkVGKGlucCk7CkBAIC0xMzc2MCwxMCArMTM4NDMsMTEgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3Ry
dWN0IHNvY2tldCAqc28sCiAJCQkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5w
cmVfb3Blbl9zdHJlYW1fY291bnQsCiAJCQkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0
cF9lcC5wb3J0LAogI2lmICEoZGVmaW5lZCggX19QYW5kYV9fKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX18pKQotCQkJICAgICAgICAgICAgICAgICAgICAgICBwKTsKKwkJCSAgICAgICAgICAgICAg
ICAgICAgICAgcCwKICNlbHNlCi0JCQkgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcHJv
YyAqKU5VTEwpOworCQkJICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHByb2MgKilOVUxM
LAogI2VuZGlmCisJCQkgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfSU5JVElBTElaRV9BVVRI
X1BBUkFNUyk7CiAJCQlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCQkJLyogRXJyb3IgaXMgc2V0dXAg
Zm9yIHVzIGluIHRoZSBjYWxsICovCiAJCQkJZ290byBvdXRfdW5sb2NrZWQ7CkBAIC0xMzc4Mywx
NiArMTM4NjcsMTMgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCQkv
KiBUdXJuIG9uIHF1ZXVlIG9ubHkgZmxhZyB0byBwcmV2ZW50IGRhdGEgZnJvbSBiZWluZyBzZW50
ICovCiAJCQlxdWV1ZV9vbmx5ID0gMTsKIAkJCWFzb2MgPSAmc3RjYi0+YXNvYzsKLQkJCVNDVFBf
U0VUX1NUQVRFKGFzb2MsIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQpOworCQkJU0NUUF9TRVRfU1RB
VEUoc3RjYiwgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CiAJCQkodm9pZClTQ1RQX0dFVFRJTUVf
VElNRVZBTCgmYXNvYy0+dGltZV9lbnRlcmVkKTsKIAotCQkJLyogaW5pdGlhbGl6ZSBhdXRoZW50
aWNhdGlvbiBwYXJhbXMgZm9yIHRoZSBhc3NvYyAqLwotCQkJc2N0cF9pbml0aWFsaXplX2F1dGhf
cGFyYW1zKGlucCwgc3RjYik7Ci0KIAkJCWlmIChjb250cm9sKSB7CiAJCQkJaWYgKHNjdHBfcHJv
Y2Vzc19jbXNnc19mb3JfaW5pdChzdGNiLCBjb250cm9sLCAmZXJyb3IpKSB7CiAJCQkJCXNjdHBf
ZnJlZV9hc3NvYyhpbnAsIHN0Y2IsIFNDVFBfUENCRlJFRV9GT1JDRSwKLQkJCQkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCArIFNDVFBfTE9DXzUpOworCQkJCQkgICAgICAg
ICAgICAgICAgU0NUUF9GUk9NX1NDVFBfT1VUUFVUICsgU0NUUF9MT0NfNik7CiAJCQkJCWhvbGRf
dGNibG9jayA9IDA7CiAJCQkJCXN0Y2IgPSBOVUxMOwogCQkJCQlnb3RvIG91dF91bmxvY2tlZDsK
QEAgLTEzODA5LDkgKzEzODkwLDE5IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQg
KnNvLAogCQl9CiAJfSBlbHNlCiAJCWFzb2MgPSAmc3RjYi0+YXNvYzsKLQlpZiAoc3JjdiA9PSBO
VUxMKQorCWlmIChzcmN2ID09IE5VTEwpIHsKIAkJc3JjdiA9IChzdHJ1Y3Qgc2N0cF9zbmRyY3Zp
bmZvICopJmFzb2MtPmRlZl9zZW5kOwotCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfQURE
Ul9PVkVSKSB7CisJCXNpbmZvX2ZsYWdzID0gc3Jjdi0+c2luZm9fZmxhZ3M7CisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKwkJaWYgKGZsYWdzICYgTVNHX0VPUikgeworCQkJc2luZm9fZmxhZ3Mg
fD0gU0NUUF9FT1I7CisJCX0KKwkJaWYgKGZsYWdzICYgTVNHX0VPRikgeworCQkJc2luZm9fZmxh
Z3MgfD0gU0NUUF9FT0Y7CisJCX0KKyNlbmRpZgorCX0KKwlpZiAoc2luZm9fZmxhZ3MgJiBTQ1RQ
X0FERFJfT1ZFUikgewogCQlpZiAoYWRkcikKIAkJCW5ldCA9IHNjdHBfZmluZG5ldChzdGNiLCBh
ZGRyKTsKIAkJZWxzZQpAQCAtMTM4MzUsNyArMTM5MjYsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChz
dHJ1Y3Qgc29ja2V0ICpzbywKIAlmcmVlX2NudF9hcHBsaWVkID0gMTsKIAogCWlmIChzY3RwX2lz
X2ZlYXR1cmVfb24oaW5wLCBTQ1RQX1BDQl9GTEFHU19OT19GUkFHTUVOVCkpIHsKLQkJaWYgKHNu
ZGxlbiA+IGFzb2MtPnNtYWxsZXN0X210dSkgeworCQlpZiAoc25kbGVuID4gKHNzaXplX3QpYXNv
Yy0+c21hbGxlc3RfbXR1KSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgc3RjYiwgbmV0
LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVNU0dTSVpFKTsKIAkJCWVycm9yID0gRU1TR1NJWkU7
CiAJCQlnb3RvIG91dF91bmxvY2tlZDsKQEAgLTEzODQ4LDE0ICsxMzkzOSwxNCBAQCBzY3RwX2xv
d2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKICNlbmRpZgogCWlmIChTQ1RQX1NPX0lTX05C
SU8oc28pCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0g
NTAwMDAwCi0JICAgICB8fCAoZmxhZ3MgJiBNU0dfTkJJTykKKwkgICAgIHx8IChmbGFncyAmIChN
U0dfTkJJTyB8IE1TR19ET05UV0FJVCkpICE9IDAKICNlbmRpZgogCSAgICApIHsKIAkJbm9uX2Js
b2NraW5nID0gMTsKIAl9CiAJLyogd291bGQgd2UgYmxvY2s/ICovCiAJaWYgKG5vbl9ibG9ja2lu
ZykgewotCQl1aW50MzJfdCBhbW91bnQ7CisJCXNzaXplX3QgYW1vdW50OwogCiAJCWlmIChob2xk
X3RjYmxvY2sgPT0gMCkgewogCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTEzODcwLDEzICsx
Mzk2MSwxMyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYgKChT
Q1RQX1NCX0xJTUlUX1NORChzbykgPCAgKGFtb3VudCArIGlucXVldWVfYnl0ZXMgKyBzdGNiLT5h
c29jLnNiX3NlbmRfcmVzdikpIHx8CiAJCSAgICAoc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1
ZXVlID49IFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfY2h1bmtzX29uX3F1ZXVlKSkpIHsKIAkJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBV
VCwgRVdPVUxEQkxPQ0spOwotCQkJaWYgKHNuZGxlbiA+IFNDVFBfU0JfTElNSVRfU05EKHNvKSkK
KwkJCWlmIChzbmRsZW4gPiAoc3NpemVfdClTQ1RQX1NCX0xJTUlUX1NORChzbykpCiAJCQkJZXJy
b3IgPSBFTVNHU0laRTsKIAkJCWVsc2UKIAkJCQllcnJvciA9IEVXT1VMREJMT0NLOwogCQkJZ290
byBvdXRfdW5sb2NrZWQ7CiAJCX0KLQkJc3RjYi0+YXNvYy5zYl9zZW5kX3Jlc3YgKz0gc25kbGVu
OworCQlzdGNiLT5hc29jLnNiX3NlbmRfcmVzdiArPSAodWludDMyX3Qpc25kbGVuOwogCQlTQ1RQ
X1RDQl9VTkxPQ0soc3RjYik7CiAJCWhvbGRfdGNibG9jayA9IDA7CiAJfSBlbHNlIHsKQEAgLTEz
OTEyLDggKzE0MDAzLDggQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBV
VCwgZXJyb3IpOwogCQlnb3RvIG91dF91bmxvY2tlZDsKIAl9Ci0JaWYgKChTQ1RQX0dFVF9TVEFU
RShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCSAgICAoU0NUUF9HRVRfU1RB
VEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCWlmICgoU0NUUF9HRVRf
U1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKKwkgICAgKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkpIHsKIAkJcXVldWVfb25s
eSA9IDE7CiAJfQogCS8qIHdlIGFyZSBub3cgZG9uZSB3aXRoIGFsbCBjb250cm9sICovCkBAIC0x
MzkyMSwxMSArMTQwMTIsMTEgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28s
CiAJCXNjdHBfbV9mcmVlbShjb250cm9sKTsKIAkJY29udHJvbCA9IE5VTEw7CiAJfQotCWlmICgo
U0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB8fAotCSAg
ICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkg
fHwKLQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNL
X1NFTlQpIHx8CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRE
T1dOX1NFTlQpIHx8CisJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NI
VVRET1dOX1JFQ0VJVkVEKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9T
VEFURV9TSFVURE9XTl9BQ0tfU0VOVCkgfHwKIAkgICAgKGFzb2MtPnN0YXRlICYgU0NUUF9TVEFU
RV9TSFVURE9XTl9QRU5ESU5HKSkgewotCQlpZiAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0FC
T1JUKSB7CisJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfQUJPUlQpIHsKIAkJCTsKIAkJfSBlbHNl
IHsKIAkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgc3RjYiwgTlVMTCwgU0NUUF9GUk9NX1ND
VFBfT1VUUFVULCBFQ09OTlJFU0VUKTsKQEAgLTEzOTQ2LDEzICsxNDAzNywxMyBAQCBzY3RwX2xv
d2VyX3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAl9CiAjZW5kaWYKIAkvKiBBcmUgd2UgYWJv
cnRpbmc/ICovCi0JaWYgKHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9BQk9SVCkgeworCWlmIChz
aW5mb19mbGFncyAmIFNDVFBfQUJPUlQpIHsKIAkJc3RydWN0IG1idWYgKm1tOwotCQlpbnQgdG90
X2RlbWFuZCwgdG90X291dCA9IDAsIG1heF9vdXQ7CisJCXNzaXplX3QgdG90X2RlbWFuZCwgdG90
X291dCA9IDAsIG1heF9vdXQ7CiAKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHNfd2l0aF9h
Ym9ydCk7Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
V0FJVCkgfHwKLQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJ
RV9FQ0hPRUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9D
T09LSUVfV0FJVCkgfHwKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRF
X0NPT0tJRV9FQ0hPRUQpKSB7CiAJCQkvKiBJdCBoYXMgdG8gYmUgdXAgYmVmb3JlIHdlIGFib3J0
ICovCiAJCQkvKiBob3cgYmlnIGlzIHRoZSB1c2VyIGluaXRpYXRlZCBhYm9ydD8gKi8KIAkJCVND
VFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBuZXQsIFNDVFBfRlJPTV9TQ1RQX09VVFBVVCwg
RUlOVkFMKTsKQEAgLTEzOTgyLDcgKzE0MDczLDcgQEAgc2N0cF9sb3dlcl9zb3NlbmQoc3RydWN0
IHNvY2tldCAqc28sCiAJCQkJZXJyb3IgPSBFTVNHU0laRTsKIAkJCQlnb3RvIG91dDsKIAkJCX0K
LQkJCW1tID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKHRvdF9kZW1hbmQsIDAsIE1fV0FJVE9LLCAx
LCBNVF9EQVRBKTsKKwkJCW1tID0gc2N0cF9nZXRfbWJ1Zl9mb3JfbXNnKCh1bnNpZ25lZCBpbnQp
dG90X2RlbWFuZCwgMCwgTV9XQUlUT0ssIDEsIE1UX0RBVEEpOwogCQl9CiAJCWlmIChtbSA9PSBO
VUxMKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIG5ldCwgU0NUUF9GUk9N
X1NDVFBfT1VUUFVULCBFTk9NRU0pOwpAQCAtMTQwMDIsNyArMTQwOTMsNyBAQCBzY3RwX2xvd2Vy
X3Nvc2VuZChzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJCXBoLT5wYXJhbV90eXBlID0gaHRvbnMoU0NU
UF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQpOwogCQkJcGgtPnBhcmFtX2xlbmd0aCA9IGh0b25z
KCh1aW50MTZfdCkoc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSArIHRvdF9vdXQpKTsKIAkJ
CXBoKys7Ci0JCQlTQ1RQX0JVRl9MRU4obW0pID0gdG90X291dCArIHNpemVvZihzdHJ1Y3Qgc2N0
cF9wYXJhbWhkcik7CisJCQlTQ1RQX0JVRl9MRU4obW0pID0gKGludCkodG90X291dCArIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpOwogCQkJaWYgKHRvcCA9PSBOVUxMKSB7CiAjaWYgZGVm
aW5lZChfX0FQUExFX18pCiAJCQkJU0NUUF9TT0NLRVRfVU5MT0NLKHNvLCAwKTsKQEAgLTE0MDMy
LDcgKzE0MTIzLDEzIEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLAogCQlh
dG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsKIAkJZnJlZV9jbnRfYXBwbGll
ZCA9IDA7CiAJCS8qIHJlbGVhc2UgdGhpcyBsb2NrLCBvdGhlcndpc2Ugd2UgaGFuZyBvbiBvdXJz
ZWx2ZXMgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlORVRfRVBPQ0hfRU5URVIoZXQp
OworI2VuZGlmCiAJCXNjdHBfYWJvcnRfYW5fYXNzb2NpYXRpb24oc3RjYi0+c2N0cF9lcCwgc3Rj
YiwgbW0sIFNDVFBfU09fTE9DS0VEKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCU5FVF9F
UE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQkvKiBub3cgcmVsb2NrIHRoZSBzdGNiIHNvIGV2ZXJ5
dGhpbmcgaXMgc2FuZSAqLwogCQlob2xkX3RjYmxvY2sgPSAwOwogCQlzdGNiID0gTlVMTDsKQEAg
LTE0MDQ5LDEyICsxNDE0Niw3IEBAIHNjdHBfbG93ZXJfc29zZW5kKHN0cnVjdCBzb2NrZXQgKnNv
LAogCS8qIENhbGN1bGF0ZSB0aGUgbWF4aW11bSB3ZSBjYW4gc2VuZCAqLwogCWlucXVldWVfYnl0
ZXMgPSBzdGNiLT5hc29jLnRvdGFsX291dHB1dF9xdWV1ZV9zaXplIC0gKHN0Y2ItPmFzb2MuY2h1
bmtzX29uX291dF9xdWV1ZSAqIFNDVFBfREFUQV9DSFVOS19PVkVSSEVBRChzdGNiKSk7CiAJaWYg
KFNDVFBfU0JfTElNSVRfU05EKHNvKSA+IGlucXVldWVfYnl0ZXMpIHsKLQkJaWYgKG5vbl9ibG9j
a2luZykgewotCQkJLyogd2UgYWxyZWFkeSBjaGVja2VkIGZvciBub24tYmxvY2tpbmcgYWJvdmUu
ICovCi0JCQltYXhfbGVuID0gc25kbGVuOwotCQl9IGVsc2UgewotCQkJbWF4X2xlbiA9IFNDVFBf
U0JfTElNSVRfU05EKHNvKSAtIGlucXVldWVfYnl0ZXM7Ci0JCX0KKwkJbWF4X2xlbiA9IFNDVFBf
U0JfTElNSVRfU05EKHNvKSAtIGlucXVldWVfYnl0ZXM7CiAJfSBlbHNlIHsKIAkJbWF4X2xlbiA9
IDA7CiAJfQpAQCAtMTQwNzEsNyArMTQxNjMsNyBAQCBzY3RwX2xvd2VyX3Nvc2VuZChzdHJ1Y3Qg
c29ja2V0ICpzbywKIAogCS8qIFVubGVzcyBFX0VPUiBtb2RlIGlzIG9uLCB3ZSBtdXN0IG1ha2Ug
YSBzZW5kIEZJVCBpbiBvbmUgY2FsbC4gKi8KIAlpZiAoKHVzZXJfbWFya3NfZW9yID09IDApICYm
Ci0JICAgIChzbmRsZW4gPiBTQ1RQX1NCX0xJTUlUX1NORChzdGNiLT5zY3RwX3NvY2tldCkpKSB7
CisJICAgIChzbmRsZW4gPiAoc3NpemVfdClTQ1RQX1NCX0xJTUlUX1NORChzdGNiLT5zY3RwX3Nv
Y2tldCkpKSB7CiAJCS8qIEl0IHdpbGwgTkVWRVIgZml0ICovCiAJCVNDVFBfTFRSQUNFX0VSUl9S
RVQoTlVMTCwgc3RjYiwgbmV0LCBTQ1RQX0ZST01fU0NUUF9PVVRQVVQsIEVNU0dTSVpFKTsKIAkJ
ZXJyb3IgPSBFTVNHU0laRTsKQEAgLTE0MDg4LDcgKzE0MTgwLDcgQEAgc2N0cF9sb3dlcl9zb3Nl
bmQoc3RydWN0IHNvY2tldCAqc28sCiAJfQogCiAJaWYgKHVzZXJfbWFya3NfZW9yKSB7Ci0JCWxv
Y2FsX2FkZF9tb3JlID0gbWluKFNDVFBfU0JfTElNSVRfU05EKHNvKSwgU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2FkZF9tb3JlX3RocmVzaG9sZCkpOworCQlsb2NhbF9hZGRfbW9yZSA9IChzc2l6ZV90
KW1pbihTQ1RQX1NCX0xJTUlUX1NORChzbyksIFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9y
ZV90aHJlc2hvbGQpKTsKIAl9IGVsc2UgewogCQkvKi0KIAkJICogRm9yIG5vbi1lZW9yIHRoZSB3
aG9sZSBtZXNzYWdlIG11c3QgZml0IGluCkBAIC0xNDEwMSwxNSArMTQxOTMsMTUgQEAgc2N0cF9s
b3dlcl9zb3NlbmQoc3RydWN0IHNvY2tldCAqc28sCiAJCWdvdG8gc2tpcF9wcmVibG9jazsKIAl9
CiAJaWYgKCgobWF4X2xlbiA8PSBsb2NhbF9hZGRfbW9yZSkgJiYKLQkgICAgIChTQ1RQX1NCX0xJ
TUlUX1NORChzbykgPj0gbG9jYWxfYWRkX21vcmUpKSB8fAorCSAgICAgKChzc2l6ZV90KVNDVFBf
U0JfTElNSVRfU05EKHNvKSA+PSBsb2NhbF9hZGRfbW9yZSkpIHx8CiAJICAgIChtYXhfbGVuID09
IDApIHx8CiAJICAgICgoc3RjYi0+YXNvYy5jaHVua3Nfb25fb3V0X3F1ZXVlK3N0Y2ItPmFzb2Mu
c3RyZWFtX3F1ZXVlX2NudCkgPj0gU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9jaHVua3Nfb25f
cXVldWUpKSkgewogCQkvKiBObyByb29tIHJpZ2h0IG5vdyAhICovCiAJCVNPQ0tCVUZfTE9DSygm
c28tPnNvX3NuZCk7CiAJCWlucXVldWVfYnl0ZXMgPSBzdGNiLT5hc29jLnRvdGFsX291dHB1dF9x
dWV1ZV9zaXplIC0gKHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSAqIFNDVFBfREFUQV9D
SFVOS19PVkVSSEVBRChzdGNiKSk7CiAJCXdoaWxlICgoU0NUUF9TQl9MSU1JVF9TTkQoc28pIDwg
KGlucXVldWVfYnl0ZXMgKyBsb2NhbF9hZGRfbW9yZSkpIHx8Ci0JCSAgICAgICAoKHN0Y2ItPmFz
b2Muc3RyZWFtX3F1ZXVlX2NudCtzdGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUpID49IFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfY2h1bmtzX29uX3F1ZXVlKSkpIHsKLQkJCVNDVFBEQkco
U0NUUF9ERUJVR19PVVRQVVQxLCJwcmVfYmxvY2sgbGltaXQ6JXUgPChpbnE6JWQgKyAlZCkgfHwg
KCVkKyVkID4gJWQpXG4iLAorCQkgICAgICAgKChzdGNiLT5hc29jLnN0cmVhbV9xdWV1ZV9jbnQg
KyBzdGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUpID49IFNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9tYXhfY2h1bmtzX29uX3F1ZXVlKSkpIHsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQx
LCJwcmVfYmxvY2sgbGltaXQ6JXUgPChpbnE6JWQgKyAlemQpIHx8ICglZCslZCA+ICVkKVxuIiwK
IAkJCSAgICAgICAgKHVuc2lnbmVkIGludClTQ1RQX1NCX0xJTUlUX1NORChzbyksCiAJCQkgICAg
ICAgIGlucXVldWVfYnl0ZXMsCiAJCQkgICAgICAgIGxvY2FsX2FkZF9tb3JlLApAQCAtMTQxNjYs
NyArMTQyNTgsNyBAQCBza2lwX3ByZWJsb2NrOgogCSAqIE5PVEU6IHVpbyB3aWxsIGJlIG51bGwg
d2hlbiB0b3AvbWJ1ZiBpcyBwYXNzZWQKIAkgKi8KIAlpZiAoc25kbGVuID09IDApIHsKLQkJaWYg
KHNyY3YtPnNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHsKKwkJaWYgKHNpbmZvX2ZsYWdzICYgU0NU
UF9FT0YpIHsKIAkJCWdvdF9hbGxfb2ZfdGhlX3NlbmQgPSAxOwogCQkJZ290byBkYXRhbGVzc19l
b2Y7CiAJCX0gZWxzZSB7CkBAIC0xNDIxNCw3ICsxNDMwNiw3IEBAIHNraXBfcHJlYmxvY2s6CiAJ
CQl9CiAJCQlzY3RwX3NuZF9zYl9hbGxvYyhzdGNiLCBzcC0+bGVuZ3RoKTsKIAkJCWF0b21pY19h
ZGRfaW50KCZhc29jLT5zdHJlYW1fcXVldWVfY250LCAxKTsKLQkJCWlmIChzcmN2LT5zaW5mb19m
bGFncyAmIFNDVFBfVU5PUkRFUkVEKSB7CisJCQlpZiAoc2luZm9fZmxhZ3MgJiBTQ1RQX1VOT1JE
RVJFRCkgewogCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzX3dpdGhfdW5vcmQpOwogCQkJ
fQogCQkJVEFJTFFfSU5TRVJUX1RBSUwoJnN0cm0tPm91dHF1ZXVlLCBzcCwgbmV4dCk7CkBAIC0x
NDI1NCwxNiArMTQzNDYsMTYgQEAgc2tpcF9wcmVibG9jazoKIAkJCWVsc2UKIAkJCQltYXhfbGVu
ID0gMDsKIAotCQkJaWYgKChtYXhfbGVuID4gU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3Jl
X3RocmVzaG9sZCkpIHx8CisJCQlpZiAoKG1heF9sZW4gPiAoc3NpemVfdClTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKSkgfHwKIAkJCSAgICAobWF4X2xlbiAmJiAoU0NU
UF9TQl9MSU1JVF9TTkQoc28pIDwgU0NUUF9CQVNFX1NZU0NUTChzY3RwX2FkZF9tb3JlX3RocmVz
aG9sZCkpKSB8fAogI2lmIGRlZmluZWQoX19BUFBMRV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVP
UEFSRCkKLQkJCSAgICAodWlvLT51aW9fcmVzaWQgJiYgKHVpby0+dWlvX3Jlc2lkIDw9IChpbnQp
bWF4X2xlbikpKSB7CisJCQkgICAgKHVpby0+dWlvX3Jlc2lkICYmICh1aW8tPnVpb19yZXNpZCA8
PSBtYXhfbGVuKSkpIHsKICNlbHNlCi0JCQkgICAgKHVpb19yZXNpZCh1aW8pICYmICh1aW9fcmVz
aWQodWlvKSA8PSAoaW50KW1heF9sZW4pKSkgeworCQkJICAgICh1aW9fcmVzaWQodWlvKSAmJiAo
dWlvX3Jlc2lkKHVpbykgPD0gbWF4X2xlbikpKSB7CiAjZW5kaWYKICNlbHNlCi0JCQkgICAgKHVp
by0+dWlvX3Jlc2lkICYmICh1aW8tPnVpb19yZXNpZCA8PSAoaW50KW1heF9sZW4pKSkgeworCQkJ
ICAgICh1aW8tPnVpb19yZXNpZCAmJiAodWlvLT51aW9fcmVzaWQgPD0gbWF4X2xlbikpKSB7CiAj
ZW5kaWYKIAkJCQlzbmRvdXQgPSAwOwogCQkJCW5ld190YWlsID0gTlVMTDsKQEAgLTE0Mjc1LDkg
KzE0MzY3LDkgQEAgc2tpcF9wcmVibG9jazoKIAkJCQlTQ1RQX1NPQ0tFVF9VTkxPQ0soc28sIDAp
OwogI2VuZGlmCiAjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID4gNjAyMDAwKSB8fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJICAgIG1tID0gc2N0cF9j
b3B5X3Jlc3VtZSh1aW8sIG1heF9sZW4sIHVzZXJfbWFya3NfZW9yLCAmZXJyb3IsICZzbmRvdXQs
ICZuZXdfdGFpbCk7CisJCQkJbW0gPSBzY3RwX2NvcHlfcmVzdW1lKHVpbywgKGludCltYXhfbGVu
LCB1c2VyX21hcmtzX2VvciwgJmVycm9yLCAmc25kb3V0LCAmbmV3X3RhaWwpOwogI2Vsc2UKLQkJ
CQkgICAgbW0gPSBzY3RwX2NvcHlfcmVzdW1lKHVpbywgbWF4X2xlbiwgJmVycm9yLCAmc25kb3V0
LCAmbmV3X3RhaWwpOworCQkJCW1tID0gc2N0cF9jb3B5X3Jlc3VtZSh1aW8sIChpbnQpbWF4X2xl
biwgJmVycm9yLCAmc25kb3V0LCAmbmV3X3RhaWwpOwogI2VuZGlmCiAjaWYgZGVmaW5lZChfX0FQ
UExFX18pCiAJCQkJU0NUUF9TT0NLRVRfTE9DSyhzbywgMCk7CkBAIC0xNDMxNCw3ICsxNDQwNiw3
IEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJc2N0cF9zbmRfc2JfYWxsb2Moc3RjYiwgc25kb3V0KTsK
IAkJCQlhdG9taWNfYWRkX2ludCgmc3AtPmxlbmd0aCwgc25kb3V0KTsKIAkJCQlsZW4gKz0gc25k
b3V0OwotCQkJCWlmIChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfU0FDS19JTU1FRElBVEVMWSkg
eworCQkJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfU0FDS19JTU1FRElBVEVMWSkgewogCQkJCQlz
cC0+c2luZm9fZmxhZ3MgfD0gU0NUUF9TQUNLX0lNTUVESUFURUxZOwogCQkJCX0KIApAQCAtMTQz
MjksOCArMTQ0MjEsOCBAQCBza2lwX3ByZWJsb2NrOgogCQkJCWlmICgodWlvLT51aW9fcmVzaWQg
PT0gMCkgJiYKICNlbmRpZgogCQkJCSAgICAoKHVzZXJfbWFya3NfZW9yID09IDApIHx8Ci0JCQkJ
ICAgICAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0VPRikgfHwKLQkJCQkgICAgICh1c2VyX21h
cmtzX2VvciAmJiAoc3Jjdi0+c2luZm9fZmxhZ3MgJiBTQ1RQX0VPUikpKSkgeworCQkJCSAgICAg
KHNpbmZvX2ZsYWdzICYgU0NUUF9FT0YpIHx8CisJCQkJICAgICAodXNlcl9tYXJrc19lb3IgJiYg
KHNpbmZvX2ZsYWdzICYgU0NUUF9FT1IpKSkpIHsKIAkJCQkJc3AtPm1zZ19pc19jb21wbGV0ZSA9
IDE7CiAJCQkJfSBlbHNlIHsKIAkJCQkJc3AtPm1zZ19pc19jb21wbGV0ZSA9IDA7CkBAIC0xNDM1
Niw3ICsxNDQ0OCw3IEBAIHNraXBfcHJlYmxvY2s6CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7
CiAJCQkJCWhvbGRfdGNibG9jayA9IDE7CiAJCQkJfQotCQkJCXNjdHBfcHJ1bmVfcHJzY3RwKHN0
Y2IsIGFzb2MsIHNyY3YsIHNuZGxlbik7CisJCQkJc2N0cF9wcnVuZV9wcnNjdHAoc3RjYiwgYXNv
Yywgc3JjdiwgKGludClzbmRsZW4pOwogCQkJCWlucXVldWVfYnl0ZXMgPSBzdGNiLT5hc29jLnRv
dGFsX291dHB1dF9xdWV1ZV9zaXplIC0gKHN0Y2ItPmFzb2MuY2h1bmtzX29uX291dF9xdWV1ZSAq
IFNDVFBfREFUQV9DSFVOS19PVkVSSEVBRChzdGNiKSk7CiAJCQkJaWYgKFNDVFBfU0JfTElNSVRf
U05EKHNvKSA+IGlucXVldWVfYnl0ZXMpCiAJCQkJCW1heF9sZW4gPSBTQ1RQX1NCX0xJTUlUX1NO
RChzbykgLSBpbnF1ZXVlX2J5dGVzOwpAQCAtMTQzNzksMTIgKzE0NDcxLDE4IEBAIHNraXBfcHJl
YmxvY2s6CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CiAJCQkJCWhvbGRfdGNibG9jayA9IDE7
CiAJCQkJfQotCQkJCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFU
RV9PUEVOKSB7CisJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BF
TikgewogCQkJCQkvKiBhIGNvbGxpc2lvbiB0b29rIHVzIGZvcndhcmQ/ICovCiAJCQkJCXF1ZXVl
X29ubHkgPSAwOwogCQkJCX0gZWxzZSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCQkJ
TkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCQkJCQlzY3RwX3NlbmRfaW5pdGlhdGUoaW5w
LCBzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQkJCVNDVFBfU0VUX1NUQVRFKGFzb2MsIFNDVFBf
U1RBVEVfQ09PS0lFX1dBSVQpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQkJCU5FVF9F
UE9DSF9FWElUKGV0KTsKKyNlbmRpZgorCQkJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NU
QVRFX0NPT0tJRV9XQUlUKTsKIAkJCQkJcXVldWVfb25seSA9IDE7CiAJCQkJfQogCQkJfQpAQCAt
MTQ0NDEsNiArMTQ1MzksOSBAQCBza2lwX3ByZWJsb2NrOgogCQkJCSAqIHRoZSBpbnB1dCB2aWEg
dGhlIG5ldCBpcyBoYXBwZW5pbmcKIAkJCQkgKiBhbmQgSSBkb24ndCBuZWVkIHRvIHN0YXJ0IG91
dHB1dCA6LUQKIAkJCQkgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQkJCU5FVF9FUE9D
SF9FTlRFUihldCk7CisjZW5kaWYKIAkJCQlpZiAoaG9sZF90Y2Jsb2NrID09IDApIHsKIAkJCQkJ
aWYgKFNDVFBfVENCX1RSWUxPQ0soc3RjYikpIHsKIAkJCQkJCWhvbGRfdGNibG9jayA9IDE7CkBA
IC0xNDQ1MywxMCArMTQ1NTQsMTMgQEAgc2tpcF9wcmVibG9jazoKIAkJCQkJCQkgIHN0Y2IsCiAJ
CQkJCQkJICBTQ1RQX09VVFBVVF9GUk9NX1VTUl9TRU5ELCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJ
fQotCQkJCWlmIChob2xkX3RjYmxvY2sgPT0gMSkgewotCQkJCQlTQ1RQX1RDQl9VTkxPQ0soc3Rj
Yik7Ci0JCQkJCWhvbGRfdGNibG9jayA9IDA7Ci0JCQkJfQorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisJCQkJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCisJCQl9CisJCQlpZiAoaG9sZF90
Y2Jsb2NrID09IDEpIHsKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQkJaG9sZF90Y2Js
b2NrID0gMDsKIAkJCX0KIAkJCVNPQ0tCVUZfTE9DSygmc28tPnNvX3NuZCk7CiAJCQkvKi0KQEAg
LTE0NDg3LDcgKzE0NTkxLDcgQEAgc2tpcF9wcmVibG9jazoKICNlbmRpZgogI2Vsc2UKIAkJCQkJ
c2N0cF9sb2dfYmxvY2soU0NUUF9CTE9DS19MT0dfSU5UT19CTEssCi0JCQkJCQkgICAgICAgYXNv
YywgKHNpemVfdCl1aW8tPnVpb19yZXNpZCk7CisJCQkJCQkgICAgICAgYXNvYywgdWlvLT51aW9f
cmVzaWQpOwogI2VuZGlmCiAJCQkJfQogCQkJCWJlLmVycm9yID0gMDsKQEAgLTE0NTYzLDcgKzE0
NjY3LDcgQEAgc2tpcF9wcmVibG9jazoKIAkJLyogV2Ugc2VuZCBpbiBhIDAsIHNpbmNlIHdlIGRv
IE5PVCBoYXZlIGFueSBsb2NrcyAqLwogCQllcnJvciA9IHNjdHBfbXNnX2FwcGVuZChzdGNiLCBu
ZXQsIHRvcCwgc3JjdiwgMCk7CiAJCXRvcCA9IE5VTEw7Ci0JCWlmIChzcmN2LT5zaW5mb19mbGFn
cyAmIFNDVFBfRU9GKSB7CisJCWlmIChzaW5mb19mbGFncyAmIFNDVFBfRU9GKSB7CiAJCQkvKgog
CQkJICogVGhpcyBzaG91bGQgb25seSBoYXBwZW4gZm9yIFBhbmRhIGZvciB0aGUgbWJ1ZgogCQkJ
ICogc2VuZCBjYXNlLCB3aGljaCBkb2VzIE5PVCB5ZXQgc3VwcG9ydCBFRU9SIG1vZGUuCkBAIC0x
NDU3OCw3ICsxNDY4Miw3IEBAIHNraXBfcHJlYmxvY2s6CiAJfQogZGF0YWxlc3NfZW9mOgogCS8q
IEVPRiB0aGluZyA/ICovCi0JaWYgKChzcmN2LT5zaW5mb19mbGFncyAmIFNDVFBfRU9GKSAmJgor
CWlmICgoc2luZm9fZmxhZ3MgJiBTQ1RQX0VPRikgJiYKIAkgICAgKGdvdF9hbGxfb2ZfdGhlX3Nl
bmQgPT0gMSkpIHsKIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHNfd2l0aF9lb2YpOwogCQll
cnJvciA9IDA7CkBAIC0xNDU5MywxNyArMTQ2OTcsMTYgQEAgZGF0YWxlc3NfZW9mOgogCQkJCWdv
dG8gYWJvcnRfYW55d2F5OwogCQkJfQogCQkJLyogdGhlcmUgaXMgbm90aGluZyBxdWV1ZWQgdG8g
c2VuZCwgc28gSSdtIGRvbmUuLi4gKi8KLQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0g
U0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgotCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29j
KSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgotCQkJICAgIChTQ1RQX0dFVF9T
VEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCQkJaWYgKChT
Q1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCisJCQkg
ICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQp
ICYmCisJCQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05f
QUNLX1NFTlQpKSB7CiAJCQkJc3RydWN0IHNjdHBfbmV0cyAqbmV0cDsKIAogCQkJCS8qIG9ubHkg
c2VuZCBTSFVURE9XTiB0aGUgZmlyc3QgdGltZSB0aHJvdWdoICovCi0JCQkJaWYgKFNDVFBfR0VU
X1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgeworCQkJCWlmIChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKIAkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0Uz
MihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCX0KLQkJCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NU
UF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQ
X1NUQVRFX1NIVVRET1dOX1NFTlQpOwogCQkJCXNjdHBfc3RvcF90aW1lcnNfZm9yX3NodXRkb3du
KHN0Y2IpOwogCQkJCWlmIChzdGNiLT5hc29jLmFsdGVybmF0ZSkgewogCQkJCQluZXRwID0gc3Rj
Yi0+YXNvYy5hbHRlcm5hdGU7CkBAIC0xNDYyNywxNyArMTQ3MzAsMTcgQEAgZGF0YWxlc3NfZW9m
OgogCQkJICogZGF0YSB0byBiZSBzZW50IGZpcnN0IGFuZCBtb3ZlIHRvCiAJCQkgKiBTSFVURE9X
Ti1QRU5ESU5HCiAJCQkgKi8KLQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9T
VEFURV9TSFVURE9XTl9TRU5UKSAmJgotCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSAmJgotCQkJICAgIChTQ1RQX0dFVF9TVEFURShh
c29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCQkJaWYgKChTQ1RQX0dF
VF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCisJCQkgICAgKFND
VFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpICYmCisJ
CQkgICAgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NF
TlQpKSB7CiAJCQkJaWYgKGhvbGRfdGNibG9jayA9PSAwKSB7CiAJCQkJCVNDVFBfVENCX0xPQ0so
c3RjYik7CiAJCQkJCWhvbGRfdGNibG9jayA9IDE7CiAJCQkJfQogCQkJCWlmICgoKmFzb2MtPnNz
X2Z1bmN0aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShzdGNiLCBhc29jKSkg
ewotCQkJCQlhc29jLT5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQ7CisJCQkJ
CVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVCk7CiAJ
CQkJfQotCQkJCWFzb2MtPnN0YXRlIHw9IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORzsKKwkJ
CQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOwog
CQkJCWlmIChUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKIAkJCQkgICAgVEFJTFFf
RU1QVFkoJmFzb2MtPnNlbnRfcXVldWUpICYmCiAJCQkJICAgIChhc29jLT5zdGF0ZSAmIFNDVFBf
U1RBVEVfUEFSVElBTF9NU0dfTEVGVCkpIHsKQEAgLTE0NjUzLDggKzE0NzU2LDE0IEBAIGRhdGFs
ZXNzX2VvZjoKIAkJCQkJICAgICAgICAgIiVzOiVkIGF0ICVzIiwgX19GSUxFX18sIF9fTElORV9f
LCBfX2Z1bmNfXyk7CiAJCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2RpYWdfaW5mb19jb2RlKSwKIAkJCQkJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2cpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJTkVUX0VQT0NIX0VOVEVS
KGV0KTsKKyNlbmRpZgogCQkJCQlzY3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBf
ZXAsIHN0Y2IsCiAJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgb3BfZXJyLCBTQ1RQX1NP
X0xPQ0tFRCk7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7
CisjZW5kaWYKIAkJCQkJLyogbm93IHJlbG9jayB0aGUgc3RjYiBzbyBldmVyeXRoaW5nIGlzIHNh
bmUgKi8KIAkJCQkJaG9sZF90Y2Jsb2NrID0gMDsKIAkJCQkJc3RjYiA9IE5VTEw7CkBAIC0xNDY3
NSwxMiArMTQ3ODQsMTIgQEAgc2tpcF9vdXRfZW9mOgogCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsK
IAkJCWhvbGRfdGNibG9jayA9IDE7CiAJCX0KLQkJaWYgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5h
c29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09
IFNDVFBfU1RBVEVfT1BFTikgewogCQkJLyogYSBjb2xsaXNpb24gdG9vayB1cyBmb3J3YXJkPyAq
LwogCQkJcXVldWVfb25seSA9IDA7CiAJCX0gZWxzZSB7CiAJCQlzY3RwX3NlbmRfaW5pdGlhdGUo
aW5wLCBzdGNiLCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQlTQ1RQX1NFVF9TVEFURSgmc3RjYi0+YXNv
YywgU0NUUF9TVEFURV9DT09LSUVfV0FJVCk7CisJCQlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQ
X1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkJCXF1ZXVlX29ubHkgPSAxOwogCQl9CiAJfQpAQCAtMTQ3
MjUsNiArMTQ4MzQsOSBAQCBza2lwX291dF9lb2Y6CiAJCSAgICAgICAgICAgICAgIHN0Y2ItPmFz
b2MudG90YWxfZmxpZ2h0LAogCQkgICAgICAgICAgICAgICBzdGNiLT5hc29jLmNodW5rc19vbl9v
dXRfcXVldWUsIHN0Y2ItPmFzb2MudG90YWxfZmxpZ2h0X2NvdW50KTsKIAl9CisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKwlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAJaWYgKChxdWV1
ZV9vbmx5ID09IDApICYmIChuYWdsZV9hcHBsaWVzID09IDApICYmIChzdGNiLT5hc29jLnBlZXJz
X3J3bmQgJiYgdW5fc2VudCkpIHsKIAkJLyogd2UgY2FuIGF0dGVtcHQgdG8gc2VuZCB0b28uICov
CiAJCWlmIChob2xkX3RjYmxvY2sgPT0gMCkgewpAQCAtMTQ3NTcsNiArMTQ4NjksOSBAQCBza2lw
X291dF9lb2Y6CiAJCSh2b2lkKXNjdHBfbWVkX2NodW5rX291dHB1dChpbnAsIHN0Y2IsICZzdGNi
LT5hc29jLCAmbnVtX291dCwKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWFzb24s
IDEsIDEsICZub3csICZub3dfZmlsbGVkLCBmcmFnX3BvaW50LCBTQ1RQX1NPX0xPQ0tFRCk7CiAJ
fQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlm
CiAJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDEsICJVU1IgU2VuZCBjb21wbGV0ZSBxbzolZCBw
cnc6JWQgdW5zZW50OiVkIHRmOiVkIGNvb3E6JWQgdG9xczolZCBlcnI6JWRcbiIsCiAJICAgICAg
ICBxdWV1ZV9vbmx5LCBzdGNiLT5hc29jLnBlZXJzX3J3bmQsIHVuX3NlbnQsCiAJCXN0Y2ItPmFz
b2MudG90YWxfZmxpZ2h0LCBzdGNiLT5hc29jLmNodW5rc19vbl9vdXRfcXVldWUsCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuaAkocmV2aXNpb24gMjU4NjA4
KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8
c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9v
dXRwdXQuaCAzMjM4NjEgMjAxNy0wOS0yMSAxMTo1NjozMVogdHVleGVuICQiKTsKK19fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX291dHB1dC5oIDM1MTY1NCAyMDE5LTA5
LTAxIDEwOjA5OjUzWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NU
UF9PVVRQVVRfSF8KQEAgLTk3LDExICs5NywxMSBAQCBzY3RwX3NlbmRfaW5pdGlhdGVfYWNrKHN0
cnVjdCBzY3RwX2lucGNiCiAKIHN0cnVjdCBtYnVmICoKIHNjdHBfYXJldGhlcmVfdW5yZWNvZ25p
emVkX3BhcmFtZXRlcnMoc3RydWN0IG1idWYgKiwgaW50LCBpbnQgKiwKLQkJCQkgICAgICBzdHJ1
Y3Qgc2N0cF9jaHVua2hkciAqLCBpbnQgKik7CisJCQkJICAgICAgc3RydWN0IHNjdHBfY2h1bmto
ZHIgKiwgaW50ICosIGludCAqKTsKIHZvaWQgc2N0cF9xdWV1ZV9vcF9lcnIoc3RydWN0IHNjdHBf
dGNiICosIHN0cnVjdCBtYnVmICopOwogCiBpbnQKLXNjdHBfc2VuZF9jb29raWVfZWNobyhzdHJ1
Y3QgbWJ1ZiAqLCBpbnQsIHN0cnVjdCBzY3RwX3RjYiAqLAorc2N0cF9zZW5kX2Nvb2tpZV9lY2hv
KHN0cnVjdCBtYnVmICosIGludCwgaW50LCBzdHJ1Y3Qgc2N0cF90Y2IgKiwKICAgICBzdHJ1Y3Qg
c2N0cF9uZXRzICopOwogCiB2b2lkIHNjdHBfc2VuZF9jb29raWVfYWNrKHN0cnVjdCBzY3RwX3Rj
YiAqKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCShyZXZpc2lv
biAyNTg2MDgpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYwkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNs
dWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX3BjYi5jIDMzNDUzMiAyMDE4LTA2LTAyIDE2OjI4OjEwWiB0dWV4ZW4gJCIpOworX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGNiLmMgMzU3ODMwIDIwMjAtMDIt
MTIgMTc6MDU6MTBaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0
cF9vcy5oPgpAQCAtNTEsOSArNTEsNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQvc2N0CiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX291dHB1dC5oPgogI2luY2x1ZGUgPG5l
dGluZXQvc2N0cF90aW1lci5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9ic2RfYWRkci5oPgot
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDEwMDAwMDAK
LSNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfZHRyYWNlX2RlZmluZS5oPgotI2VuZGlmCiAjaWYgZGVm
aW5lZChJTkVUKSB8fCBkZWZpbmVkKElORVQ2KQogI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29z
X1dpbmRvd3MpCiAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KQEAgLTczLDYgKzcwLDcgQEAgX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdAogI2VuZGlmCiAjaWYgZGVmaW5l
ZChfX1VzZXJzcGFjZV9fKQogI2luY2x1ZGUgPHVzZXJfc29ja2V0dmFyLmg+CisjaW5jbHVkZSA8
dXNlcl9hdG9taWMuaD4KICNpZiAhZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQogI2lu
Y2x1ZGUgPG5ldGRiLmg+CiAjZW5kaWYKQEAgLTMxOTEsNyArMzE4OSw2IEBAIHNjdHBfbW92ZV9w
Y2JfYW5kX2Fzc29jKHN0cnVjdCBzY3RwX2lucGMKIAlzdGNiLT5hc29jLnN0cnJlc2V0X3RpbWVy
LmVwID0gKHZvaWQgKiluZXdfaW5wOwogCXN0Y2ItPmFzb2Muc2h1dF9ndWFyZF90aW1lci5lcCA9
ICh2b2lkICopbmV3X2lucDsKIAlzdGNiLT5hc29jLmF1dG9jbG9zZV90aW1lci5lcCA9ICh2b2lk
ICopbmV3X2lucDsKLQlzdGNiLT5hc29jLmRlbGF5ZWRfZXZlbnRfdGltZXIuZXAgPSAodm9pZCAq
KW5ld19pbnA7CiAJc3RjYi0+YXNvYy5kZWxldGVfcHJpbV90aW1lci5lcCA9ICh2b2lkICopbmV3
X2lucDsKIAkvKiBub3cgd2hhdCBhYm91dCB0aGUgbmV0cz8gKi8KIAlUQUlMUV9GT1JFQUNIKG5l
dCwgJnN0Y2ItPmFzb2MubmV0cywgc2N0cF9uZXh0KSB7CkBAIC0zMjY4LDcgKzMyNjUsNyBAQCBz
Y3RwX2lucGNiX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjCiAJLyogYmluZCBhIGVwIHRv
IGEgc29ja2V0IGFkZHJlc3MgKi8KIAlzdHJ1Y3Qgc2N0cHBjYmhlYWQgKmhlYWQ7CiAJc3RydWN0
IHNjdHBfaW5wY2IgKmlucCwgKmlucF90bXA7Ci0jaWYgZGVmaW5lZChJTkVUKSB8fCAoZGVmaW5l
ZChJTkVUNikgJiYgZGVmaW5lZChfX0FQUExFX18pKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8
fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVk
KF9fQVBQTEVfXykKIAlzdHJ1Y3QgaW5wY2IgKmlwX2lucDsKICNlbmRpZgogCWludCBwb3J0X3Jl
dXNlX2FjdGl2ZSA9IDA7CkBAIC0zMjgzLDcgKzMyODAsNyBAQCBzY3RwX2lucGNiX2JpbmQoc3Ry
dWN0IHNvY2tldCAqc28sIHN0cnVjCiAJbHBvcnQgPSAwOwogCWJpbmRhbGwgPSAxOwogCWlucCA9
IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7Ci0jaWYgZGVmaW5lZChJTkVUKSB8fCAo
ZGVmaW5lZChJTkVUNikgJiYgZGVmaW5lZChfX0FQUExFX18pKSB8fCBkZWZpbmVkKF9fRnJlZUJT
RF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBk
ZWZpbmVkKF9fQVBQTEVfXykKIAlpcF9pbnAgPSAoc3RydWN0IGlucGNiICopc28tPnNvX3BjYjsK
ICNlbmRpZgogI2lmZGVmIFNDVFBfREVCVUcKQEAgLTMzMTMsNyArMzMxMCw3IEBAIHNjdHBfaW5w
Y2JfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWMKIAkJCXN0cnVjdCBzb2NrYWRkcl9pbiAq
c2luOwogCiAJCQkvKiBJUFY2X1Y2T05MWSBzb2NrZXQ/ICovCi0JCQlpZiAoU0NUUF9JUFY2X1Y2
T05MWShpcF9pbnApKSB7CisJCQlpZiAoU0NUUF9JUFY2X1Y2T05MWShpbnApKSB7CiAJCQkJU0NU
UF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BDQiwgRUlO
VkFMKTsKIAkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQl9CkBAIC0zOTMzLDcgKzM5MzAsNyBAQCBz
Y3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJfQogCS8qIEZpcnN0IHRp
bWUgdGhyb3VnaCB3ZSBoYXZlIHRoZSBzb2NrZXQgbG9jaywgYWZ0ZXIgdGhhdCBubyBtb3JlLiAq
LwogCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfTkVXQ09PS0lFLCBpbnAsIE5VTEws
IE5VTEwsCi0JCQlTQ1RQX0ZST01fU0NUUF9QQ0IgKyBTQ1RQX0xPQ18xKTsKKwkgICAgICAgICAg
ICAgICAgU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfMSk7CiAKIAlpZiAoaW5wLT5jb250
cm9sKSB7CiAJCXNjdHBfbV9mcmVlbShpbnAtPmNvbnRyb2wpOwpAQCAtMzk2MSwxNCArMzk1OCwx
NCBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJCQkJCSAqIHRp
bWVyIG9uIHRoZSBhc29jIGR1ZSB0byBpdCB3YXMgbm90CiAJCQkJCSAqIGNsb3NlZC4gU28gZ28g
YWhlYWQgYW5kIHN0YXJ0IGl0IG5vdy4KIAkJCQkJICovCi0JCQkJCWFzb2MtPmFzb2Muc3RhdGUg
Jj0gflNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFOworCQkJCQlTQ1RQX0NMRUFSX1NVQlNUQVRF
KGFzb2MsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKTsKIAkJCQkJc2N0cF90aW1lcl9zdGFy
dChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgYXNvYywgTlVMTCk7CiAJCQkJfQogCQkJ
CVNDVFBfVENCX1VOTE9DSyhhc29jKTsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCWlmICgoKFND
VFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAot
CQkJICAgIChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVf
RUNIT0VEKSkgJiYKKwkJCWlmICgoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpIHx8CisJCQkgICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBTQ1RQX1NU
QVRFX0NPT0tJRV9FQ0hPRUQpKSAmJgogCQkJICAgIChhc29jLT5hc29jLnRvdGFsX291dHB1dF9x
dWV1ZV9zaXplID09IDApKSB7CiAJCQkJLyogSWYgd2UgaGF2ZSBkYXRhIGluIHF1ZXVlLCB3ZSBk
b24ndCB3YW50IHRvIGp1c3QKIAkJCQkgKiBmcmVlIHNpbmNlIHRoZSBhcHAgbWF5IGhhdmUgZG9u
ZSwgc2VuZCgpL2Nsb3NlCkBAIC0zOTg0LDcgKzM5ODEsNyBAQCBzY3RwX2lucGNiX2ZyZWUoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJCQl9CiAJCQkvKiBEaXNjb25uZWN0IHRoZSBzb2NrZXQg
cGxlYXNlICovCiAJCQlhc29jLT5zY3RwX3NvY2tldCA9IE5VTEw7Ci0JCQlhc29jLT5hc29jLnN0
YXRlIHw9IFNDVFBfU1RBVEVfQ0xPU0VEX1NPQ0tFVDsKKwkJCVNDVFBfQUREX1NVQlNUQVRFKGFz
b2MsIFNDVFBfU1RBVEVfQ0xPU0VEX1NPQ0tFVCk7CiAJCQlpZiAoKGFzb2MtPmFzb2Muc2l6ZV9v
bl9yZWFzbV9xdWV1ZSA+IDApIHx8CiAJCQkgICAgKGFzb2MtPmFzb2MuY29udHJvbF9wZGFwaSkg
fHwKIAkJCSAgICAoYXNvYy0+YXNvYy5zaXplX29uX2FsbF9zdHJlYW1zID4gMCkgfHwKQEAgLTM5
OTYsOCArMzk5Myw4IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCAK
IAkJCQlhc29jLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9QQ0Ig
KyBTQ1RQX0xPQ18zOwogCQkJCXNjdHBfc2VuZF9hYm9ydF90Y2IoYXNvYywgb3BfZXJyLCBTQ1RQ
X1NPX0xPQ0tFRCk7CiAJCQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQp
OwotCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfT1BF
TikgfHwKLQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRF
X1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0g
U0NUUF9TVEFURV9PUEVOKSB8fAorCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NU
UF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0Uz
MihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCX0KIAkJCQlpZiAoc2N0cF9mcmVlX2Fzc29jKGlucCwg
YXNvYywKQEAgLTQwMTEsMjAgKzQwMDgsMTkgQEAgc2N0cF9pbnBjYl9mcmVlKHN0cnVjdCBzY3Rw
X2lucGNiICppbnAsIAogCQkJCWlmICgoKmFzb2MtPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3Nf
aXNfdXNlcl9tc2dzX2luY29tcGxldGUpKGFzb2MsICZhc29jLT5hc29jKSkgewogCQkJCQlnb3Rv
IGFib3J0X2FueXdheTsKIAkJCQl9Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNv
YykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgotCQkJCSAgICAoU0NUUF9HRVRfU1RB
VEUoJmFzb2MtPmFzb2MpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpKSB7CisJCQkJ
aWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYm
CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FD
S19TRU5UKSkgewogCQkJCQlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwogCiAJCQkJCS8qCiAJCQkJ
CSAqIHRoZXJlIGlzIG5vdGhpbmcgcXVldWVkIHRvIHNlbmQsCiAJCQkJCSAqIHNvIEkgc2VuZCBz
aHV0ZG93bgogCQkJCQkgKi8KLQkJCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmYXNvYy0+YXNvYykg
PT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZhc29jLT5h
c29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFNDVFBf
R0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQX0dF
VF9TVEFURShhc29jKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJ
U0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9Ci0JCQkJCVND
VFBfU0VUX1NUQVRFKCZhc29jLT5hc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwotCQkJ
CQlTQ1RQX0NMRUFSX1NVQlNUQVRFKCZhc29jLT5hc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BF
TkRJTkcpOworCQkJCQlTQ1RQX1NFVF9TVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NF
TlQpOwogCQkJCQlzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihhc29jKTsKIAkJCQkJaWYg
KGFzb2MtPmFzb2MuYWx0ZXJuYXRlKSB7CiAJCQkJCQluZXRwID0gYXNvYy0+YXNvYy5hbHRlcm5h
dGU7CkBAIC00MDQwLDExICs0MDM2LDExIEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCAKIAkJCQl9CiAJCQl9IGVsc2UgewogCQkJCS8qIG1hcmsgaW50byBzaHV0ZG93
biBwZW5kaW5nICovCi0JCQkJYXNvYy0+YXNvYy5zdGF0ZSB8PSBTQ1RQX1NUQVRFX1NIVVRET1dO
X1BFTkRJTkc7CisJCQkJU0NUUF9BRERfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9X
Tl9QRU5ESU5HKTsKIAkJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9TSFVURE9X
TkdVQVJELCBhc29jLT5zY3RwX2VwLCBhc29jLAogCQkJCQkJIGFzb2MtPmFzb2MucHJpbWFyeV9k
ZXN0aW5hdGlvbik7CiAJCQkJaWYgKCgqYXNvYy0+YXNvYy5zc19mdW5jdGlvbnMuc2N0cF9zc19p
c191c2VyX21zZ3NfaW5jb21wbGV0ZSkoYXNvYywgJmFzb2MtPmFzb2MpKSB7Ci0JCQkJCWFzb2Mt
PmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FE
RF9TVUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KIAkJ
CQlpZiAoVEFJTFFfRU1QVFkoJmFzb2MtPmFzb2Muc2VuZF9xdWV1ZSkgJiYKIAkJCQkgICAgVEFJ
TFFfRU1QVFkoJmFzb2MtPmFzb2Muc2VudF9xdWV1ZSkgJiYKQEAgLTQwNTUsOCArNDA1MSw4IEBA
IHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCAKIAkJCQkJYXNvYy0+c2N0
cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfUENCICsgU0NUUF9MT0NfNTsK
IAkJCQkJc2N0cF9zZW5kX2Fib3J0X3RjYihhc29jLCBvcF9lcnIsIFNDVFBfU09fTE9DS0VEKTsK
IAkJCQkJU0NUUF9TVEFUX0lOQ1JfQ09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQpOwotCQkJCQlpZiAo
KFNDVFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCQkJ
CSAgICAoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05f
UkVDRUlWRUQpKSB7CisJCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFU
RV9PUEVOKSB8fAorCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQkJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBz
X2N1cnJlc3RhYik7CiAJCQkJCX0KIAkJCQkJaWYgKHNjdHBfZnJlZV9hc3NvYyhpbnAsIGFzb2Ms
CkBAIC00MTA2LDE1ICs0MTAyLDE1IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCAKIAkJU0NUUF9UQ0JfTE9DSyhhc29jKTsKIAkJaWYgKGFzb2MtPmFzb2Muc3RhdGUg
JiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSB7CiAJCQlpZiAoYXNvYy0+YXNvYy5zdGF0
ZSAmIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFKSB7Ci0JCQkJYXNvYy0+YXNvYy5zdGF0ZSAm
PSB+U0NUUF9TVEFURV9JTl9BQ0NFUFRfUVVFVUU7CisJCQkJU0NUUF9DTEVBUl9TVUJTVEFURShh
c29jLCBTQ1RQX1NUQVRFX0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQkJc2N0cF90aW1lcl9zdGFydChT
Q1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgYXNvYywgTlVMTCk7CiAJCQl9Ci0JCSAgICAg
ICAgY250Kys7CisJCQljbnQrKzsKIAkJCVNDVFBfVENCX1VOTE9DSyhhc29jKTsKIAkJCWNvbnRp
bnVlOwogCQl9CiAJCS8qIEZyZWUgYXNzb2NpYXRpb25zIHRoYXQgYXJlIE5PVCBraWxsaW5nIHVz
ICovCi0JCWlmICgoU0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpICE9IFNDVFBfU1RBVEVfQ09P
S0lFX1dBSVQpICYmCisJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9D
T09LSUVfV0FJVCkgJiYKIAkJICAgICgoYXNvYy0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJP
VVRfVE9fQkVfRlJFRUQpID09IDApKSB7CiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC00
MTI3LDggKzQxMjMsOCBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
CiAJCQlTQ1RQX1RDQl9VTkxPQ0soYXNvYyk7CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAoKFND
VFBfR0VUX1NUQVRFKCZhc29jLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JCSAgICAo
U0NUUF9HRVRfU1RBVEUoJmFzb2MtPmFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlW
RUQpKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykgPT0gU0NUUF9TVEFURV9PUEVOKSB8
fAorCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVD
RUlWRUQpKSB7CiAJCQlTQ1RQX1NUQVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJ
CX0KIAkJaWYgKHNjdHBfZnJlZV9hc3NvYyhpbnAsIGFzb2MsIFNDVFBfUENCRlJFRV9GT1JDRSwK
QEAgLTQxMzgsNyArNDEzNCw2IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCAKIAl9CiAJaWYgKGNudCkgewogCQkvKiBPayB3ZSBoYXZlIHNvbWVvbmUgb3V0IHRoZXJl
IHRoYXQgd2lsbCBraWxsIHVzICovCi0JCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmaW5wLT5z
Y3RwX2VwLnNpZ25hdHVyZV9jaGFuZ2UudGltZXIpOwogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcK
IAkJc2N0cF9sb2dfY2xvc2luZyhpbnAsIE5VTEwsIDMpOwogI2VuZGlmCkBAIC00MTU3LDcgKzQx
NTIsNiBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJaWYgKChp
bnAtPnJlZmNvdW50KSB8fAogCSAgICAoYmVpbmdfcmVmZWQpIHx8CiAJICAgIChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19DTE9TRV9JUCkpIHsKLQkJKHZvaWQpU0NUUF9PU19USU1F
Ul9TVE9QKCZpbnAtPnNjdHBfZXAuc2lnbmF0dXJlX2NoYW5nZS50aW1lcik7CiAjaWZkZWYgU0NU
UF9MT0dfQ0xPU0lORwogCQlzY3RwX2xvZ19jbG9zaW5nKGlucCwgTlVMTCwgNCk7CiAjZW5kaWYK
QEAgLTQyNjEsMTAgKzQyNTUsNyBAQCBzY3RwX2lucGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2Ig
KmlucCwgCiAjZWxzZQogCWlmIChpbnAtPmlucF92ZmxhZyAmIElOUF9JUFY2KSB7CiAjZW5kaWYK
LQkJc3RydWN0IGluNnBjYiAqaW42cDsKLQotCQlpbjZwID0gKHN0cnVjdCBpbjZwY2IgKilpbnA7
Ci0JCWlwNl9mcmVlcGNib3B0cyhpbjZwLT5pbjZwX291dHB1dG9wdHMpOworCQlpcDZfZnJlZXBj
Ym9wdHMoaXBfcGNiLT5pbjZwX291dHB1dG9wdHMpOwogCX0KICNlbmRpZgogI2VuZGlmCQkJCS8q
IElORVQ2ICovCkBAIC00ODgzLDExICs0ODc0LDkgQEAgc2N0cF9hbG9jX2FfYXNzb2NfaWQoc3Ry
dWN0IHNjdHBfaW5wY2IgKgogCXN0cnVjdCBzY3RwYXNvY2hlYWQgKmhlYWQ7CiAJc3RydWN0IHNj
dHBfdGNiICpsc3RjYjsKIAotCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAgdHJ5X2FnYWluOgogCWlm
IChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkgewogCQkv
KiBUU05IICovCi0JCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJcmV0dXJuICgwKTsKIAl9CiAJ
LyoKQEAgLTQ5MDYsOCArNDg5NSw3IEBAIHNjdHBfYWxvY19hX2Fzc29jX2lkKHN0cnVjdCBzY3Rw
X2lucGNiICoKIAloZWFkID0gJmlucC0+c2N0cF9hc29jaWRoYXNoW1NDVFBfUENCSEFTSF9BU09D
KGlkLCBpbnAtPmhhc2hhc29jaWRtYXJrKV07CiAJTElTVF9JTlNFUlRfSEVBRChoZWFkLCBzdGNi
LCBzY3RwX3RjYmFzb2NpZGhhc2gpOwogCXN0Y2ItPmFzb2MuaW5fYXNvY2lkX2hhc2ggPSAxOwot
CVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKLQlyZXR1cm4gaWQ7CisJcmV0dXJuIChpZCk7CiB9CiAK
IC8qCkBAIC00OTIwLDE2ICs0OTA4LDE2IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCAKICAgICAgICAgICAgICAgICBpbnQgKmVycm9yLCB1aW50MzJfdCBvdmVycmlk
ZV90YWcsIHVpbnQzMl90IHZyZl9pZCwKICAgICAgICAgICAgICAgICB1aW50MTZfdCBvX3N0cmVh
bXMsIHVpbnQxNl90IHBvcnQsCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNE
X3ZlcnNpb24gPj0gNTAwMDAwCi0JCXN0cnVjdCB0aHJlYWQgKnAKKyAgICAgICAgICAgICAgICBz
dHJ1Y3QgdGhyZWFkICpwLAogI2VsaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKLQkJUEtUSFJFQUQg
cAorICAgICAgICAgICAgICAgIFBLVEhSRUFEIHAsCiAjZWxzZQogI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKICAgICAgICAgICAgICAgICAvKiAgX19Vc2Vyc3BhY2VfXyBOVUxMIHByb2MgaXMg
Z29pbmcgdG8gYmUgcGFzc2VkIGhlcmUuIFNlZSBzY3RwX2xvd2VyX3Nvc2VuZCAqLwogI2VuZGlm
Ci0JCXN0cnVjdCBwcm9jICpwCisgICAgICAgICAgICAgICAgc3RydWN0IHByb2MgKnAsCiAjZW5k
aWYKLSkKKyAgICAgICAgICAgICAgICBpbnQgaW5pdGlhbGl6ZV9hdXRoX3BhcmFtcykKIHsKIAkv
KiBub3RlIHRoZSBwIGFyZ3VtZW50IGlzIG9ubHkgdmFsaWQgaW4gdW5ib3VuZCBzb2NrZXRzICov
CiAKQEAgLTUxMDcsNyArNTA5NSw2IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCAKIAltZW1zZXQoc3RjYiwgMCwgc2l6ZW9mKCpzdGNiKSk7CiAJYXNvYyA9ICZzdGNi
LT5hc29jOwogCi0JYXNvYy0+YXNzb2NfaWQgPSBzY3RwX2Fsb2NfYV9hc3NvY19pZChpbnAsIHN0
Y2IpOwogCVNDVFBfVENCX0xPQ0tfSU5JVChzdGNiKTsKIAlTQ1RQX1RDQl9TRU5EX0xPQ0tfSU5J
VChzdGNiKTsKIAlzdGNiLT5ycG9ydCA9IHJwb3J0OwpAQCAtNTExOCw3ICs1MTA1LDYgQEAgc2N0
cF9hbG9jX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIAogCQkvKiBmYWlsZWQgKi8KIAkJ
U0NUUF9UQ0JfTE9DS19ERVNUUk9ZKHN0Y2IpOwogCQlTQ1RQX1RDQl9TRU5EX0xPQ0tfREVTVFJP
WShzdGNiKTsKLQkJTElTVF9SRU1PVkUoc3RjYiwgc2N0cF90Y2Jhc29jaWRoYXNoKTsKIAkJU0NU
UF9aT05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBpX3pvbmVfYXNvYyksIHN0Y2IpOwogCQlTQ1RQ
X0RFQ1JfQVNPQ19DT1VOVCgpOwogCQkqZXJyb3IgPSBlcnI7CkBAIC01MTMxLDcgKzUxMTcsNiBA
QCBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJCS8qIGlucGNiIGZy
ZWVkIHdoaWxlIGFsbG9jIGdvaW5nIG9uICovCiAJCVNDVFBfVENCX0xPQ0tfREVTVFJPWShzdGNi
KTsKIAkJU0NUUF9UQ0JfU0VORF9MT0NLX0RFU1RST1koc3RjYik7Ci0JCUxJU1RfUkVNT1ZFKHN0
Y2IsIHNjdHBfdGNiYXNvY2lkaGFzaCk7CiAJCVNDVFBfWk9ORV9GUkVFKFNDVFBfQkFTRV9JTkZP
KGlwaV96b25lX2Fzb2MpLCBzdGNiKTsKIAkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQlTQ1RQ
X0lOUF9JTkZPX1dVTkxPQ0soKTsKQEAgLTUxNDIsNiArNTEyNyw3IEBAIHNjdHBfYWxvY19hc3Nv
YyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCAKIAl9CiAJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKIAor
CWFzb2MtPmFzc29jX2lkID0gc2N0cF9hbG9jX2FfYXNzb2NfaWQoaW5wLCBzdGNiKTsKIAkvKiBu
b3cgdGhhdCBteV92dGFnIGlzIHNldCwgYWRkIGl0IHRvIHRoZSBoYXNoICovCiAJaGVhZCA9ICZT
Q1RQX0JBU0VfSU5GTyhzY3RwX2Fzb2NoYXNoKVtTQ1RQX1BDQkhBU0hfQVNPQyhzdGNiLT5hc29j
Lm15X3Z0YWcsIFNDVFBfQkFTRV9JTkZPKGhhc2hhc29jbWFyaykpXTsKIAkvKiBwdXQgaXQgaW4g
dGhlIGJ1Y2tldCBpbiB0aGUgdnRhZyBoYXNoIG9mIGFzc29jJ3MgZm9yIHRoZSBzeXN0ZW0gKi8K
QEAgLTUxNzksNyArNTE2NSw2IEBAIHNjdHBfYWxvY19hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCAKIAlTQ1RQX09TX1RJTUVSX0lOSVQoJmFzb2MtPmFzY29uZl90aW1lci50aW1lcik7CiAJ
U0NUUF9PU19USU1FUl9JTklUKCZhc29jLT5zaHV0X2d1YXJkX3RpbWVyLnRpbWVyKTsKIAlTQ1RQ
X09TX1RJTUVSX0lOSVQoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1lcik7Ci0JU0NUUF9PU19U
SU1FUl9JTklUKCZhc29jLT5kZWxheWVkX2V2ZW50X3RpbWVyLnRpbWVyKTsKIAlTQ1RQX09TX1RJ
TUVSX0lOSVQoJmFzb2MtPmRlbGV0ZV9wcmltX3RpbWVyLnRpbWVyKTsKIAogCUxJU1RfSU5TRVJU
X0hFQUQoJmlucC0+c2N0cF9hc29jX2xpc3QsIHN0Y2IsIHNjdHBfdGNibGlzdCk7CkBAIC01MTg5
LDYgKzUxNzQsOSBAQCBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJ
CSAgICBpbnAtPnNjdHBfaGFzaG1hcmspXTsKIAkJTElTVF9JTlNFUlRfSEVBRChoZWFkLCBzdGNi
LCBzY3RwX3RjYmhhc2gpOwogCX0KKwlpZiAoaW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyA9PSBTQ1RQ
X0lOSVRJQUxJWkVfQVVUSF9QQVJBTVMpIHsKKwkJc2N0cF9pbml0aWFsaXplX2F1dGhfcGFyYW1z
KGlucCwgc3RjYik7CisJfQogCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAlTQ1RQREJHKFNDVFBf
REVCVUdfUENCMSwgIkFzc29jaWF0aW9uICVwIG5vdyBhbGxvY2F0ZWRcbiIsICh2b2lkICopc3Rj
Yik7CiAJcmV0dXJuIChzdGNiKTsKQEAgLTUxOTgsOCArNTE4NiwxMCBAQCBzY3RwX2Fsb2NfYXNz
b2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiB2b2lkCiBzY3RwX3JlbW92ZV9uZXQoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQpCiB7CisJc3RydWN0IHNjdHBf
aW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKIAorCWlucCA9IHN0
Y2ItPnNjdHBfZXA7CiAJYXNvYyA9ICZzdGNiLT5hc29jOwogCWFzb2MtPm51bW5ldHMtLTsKIAlU
QUlMUV9SRU1PVkUoJmFzb2MtPm5ldHMsIG5ldCwgc2N0cF9uZXh0KTsKQEAgLTUyNDcsNiArNTIz
NywxMSBAQCBvdXQ6CiAJCXNjdHBfZnJlZV9yZW1vdGVfYWRkcihzdGNiLT5hc29jLmFsdGVybmF0
ZSk7CiAJCXN0Y2ItPmFzb2MuYWx0ZXJuYXRlID0gTlVMTDsKIAl9CisJc2N0cF90aW1lcl9zdG9w
KFNDVFBfVElNRVJfVFlQRV9QQVRITVRVUkFJU0UsIGlucCwgc3RjYiwgbmV0LAorCSAgICAgICAg
ICAgICAgICBTQ1RQX0ZST01fU0NUUF9QQ0IgKyBTQ1RQX0xPQ185KTsKKwlzY3RwX3RpbWVyX3N0
b3AoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgaW5wLCBzdGNiLCBuZXQsCisJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQX1BDQiArIFNDVFBfTE9DXzEwKTsKKwluZXQtPmRlc3Rfc3Rh
dGUgfD0gU0NUUF9BRERSX0JFSU5HX0RFTEVURUQ7CiAJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKG5l
dCk7CiB9CiAKQEAgLTU0MDAsOSArNTM5NSw2IEBAIHNjdHBfYWRkX3Z0YWdfdG9fdGltZXdhaXQo
dWludDMyX3QgdGFnLCAKIAkJU0NUUF9NQUxMT0ModHdhaXRfYmxvY2ssIHN0cnVjdCBzY3RwX3Rh
Z2Jsb2NrICosCiAJCSAgICBzaXplb2Yoc3RydWN0IHNjdHBfdGFnYmxvY2spLCBTQ1RQX01fVElN
Vyk7CiAJCWlmICh0d2FpdF9ibG9jayA9PSBOVUxMKSB7Ci0jaWZkZWYgSU5WQVJJQU5UUwotCQkJ
cGFuaWMoIkNhbiBub3QgYWxsb2MgdGFnYmxvY2siKTsKLSNlbmRpZgogCQkJcmV0dXJuOwogCQl9
CiAJCW1lbXNldCh0d2FpdF9ibG9jaywgMCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3RhZ2Jsb2NrKSk7
CkBAIC01NTE5LDYgKzU1MTEsMzUgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIAogCWVsc2UKIAkJc28gPSBpbnAtPnNjdHBfc29ja2V0OwogCisJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAorCSAgICAoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkpIHsKKwkJLyoKKwkJICogRm9yIFRDUCB0
eXBlIHdlIG5lZWQgc3BlY2lhbCBoYW5kbGluZyB3aGVuIHdlIGFyZQorCQkgKiBjb25uZWN0ZWQu
IFdlIGFsc28gaW5jbHVkZSB0aGUgcGVlbCdlZCBvZmYgb25lcyB0by4KKwkJICovCisJCWlmIChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19DT05ORUNURUQpIHsKKwkJCWlucC0+c2N0
cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxBR1NfQ09OTkVDVEVEOworCQkJaW5wLT5zY3RwX2ZsYWdz
IHw9IFNDVFBfUENCX0ZMQUdTX1dBU19DT05ORUNURUQ7CisJCQlpZiAoc28pIHsKKwkJCQlTT0NL
QlVGX0xPQ0soJnNvLT5zb19yY3YpOworCQkJCXNvLT5zb19zdGF0ZSAmPSB+KFNTX0lTQ09OTkVD
VElORyB8CisJCQkJICAgIFNTX0lTRElTQ09OTkVDVElORyB8CisJCQkJICAgIFNTX0lTQ09ORklS
TUlORyB8CisJCQkJICAgIFNTX0lTQ09OTkVDVEVEKTsKKwkJCQlzby0+c29fc3RhdGUgfD0gU1Nf
SVNESVNDT05ORUNURUQ7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisJCQkJc29jYW50cmN2bW9y
ZShzbyk7CisjZWxzZQorCQkJCXNvY2FudHJjdm1vcmVfbG9ja2VkKHNvKTsKKyNlbmRpZgorCQkJ
CXNvY2FudHNlbmRtb3JlKHNvKTsKKwkJCQlzY3RwX3Nvd3dha2V1cChpbnAsIHNvKTsKKwkJCQlz
Y3RwX3Nvcndha2V1cChpbnAsIHNvKTsKKwkJCQlTQ1RQX1NPV0FLRVVQKHNvKTsKKwkJCX0KKwkJ
fQorCX0KKwogCS8qCiAJICogV2UgdXNlZCB0aW1lciBiYXNlZCBmcmVlaW5nIGlmIGEgcmVhZGVy
IG9yIHdyaXRlciBpcyBpbiB0aGUgd2F5LgogCSAqIFNvIHdlIGZpcnN0IGNoZWNrIGlmIHdlIGFy
ZSBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbSBhIHRpbWVyLApAQCAtNTU0MSw0MCArNTU2Miwx
MSBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgCiAJCQlyZXR1cm4g
KDApOwogCQl9CiAJfQotCS8qIG5vdyBjbGVhbiB1cCBhbnkgb3RoZXIgdGltZXJzICovCi0JKHZv
aWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kYWNrX3RpbWVyLnRpbWVyKTsKLQlhc29jLT5k
YWNrX3RpbWVyLnNlbGYgPSBOVUxMOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+
c3RycmVzZXRfdGltZXIudGltZXIpOwotCS8qLQotCSAqIEZvciBzdHJlYW0gcmVzZXQgd2UgZG9u
J3QgYmxhc3QgdGhpcyB1bmxlc3MKLQkgKiBpdCBpcyBhIHN0ci1yZXNldCB0aW1lciwgaXQgbWln
aHQgYmUgdGhlCi0JICogZnJlZS1hc29jIHRpbWVyIHdoaWNoIHdlIERPTidUIHdhbnQgdG8KLQkg
KiBkaXN0dXJiLgotCSAqLwotCWlmIChhc29jLT5zdHJyZXNldF90aW1lci50eXBlID09IFNDVFBf
VElNRVJfVFlQRV9TVFJSRVNFVCkKLQkJYXNvYy0+c3RycmVzZXRfdGltZXIuc2VsZiA9IE5VTEw7
Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hc2NvbmZfdGltZXIudGltZXIpOwot
CWFzb2MtPmFzY29uZl90aW1lci5zZWxmID0gTlVMTDsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NU
T1AoJmFzb2MtPmF1dG9jbG9zZV90aW1lci50aW1lcik7Ci0JYXNvYy0+YXV0b2Nsb3NlX3RpbWVy
LnNlbGYgPSBOVUxMOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+c2h1dF9ndWFy
ZF90aW1lci50aW1lcik7Ci0JYXNvYy0+c2h1dF9ndWFyZF90aW1lci5zZWxmID0gTlVMTDsKLQko
dm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIudGltZXIp
OwotCWFzb2MtPmRlbGF5ZWRfZXZlbnRfdGltZXIuc2VsZiA9IE5VTEw7Ci0JLyogTW9iaWxpdHkg
YWRhcHRhdGlvbiAqLwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+ZGVsZXRlX3By
aW1fdGltZXIudGltZXIpOwotCWFzb2MtPmRlbGV0ZV9wcmltX3RpbWVyLnNlbGYgPSBOVUxMOwot
CVRBSUxRX0ZPUkVBQ0gobmV0LCAmYXNvYy0+bmV0cywgc2N0cF9uZXh0KSB7Ci0JCSh2b2lkKVND
VFBfT1NfVElNRVJfU1RPUCgmbmV0LT5yeHRfdGltZXIudGltZXIpOwotCQluZXQtPnJ4dF90aW1l
ci5zZWxmID0gTlVMTDsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPnBtdHVfdGlt
ZXIudGltZXIpOwotCQluZXQtPnBtdHVfdGltZXIuc2VsZiA9IE5VTEw7Ci0JCSh2b2lkKVNDVFBf
T1NfVElNRVJfU1RPUCgmbmV0LT5oYl90aW1lci50aW1lcik7Ci0JCW5ldC0+aGJfdGltZXIuc2Vs
ZiA9IE5VTEw7Ci0JfQorCS8qIE5vdyBjbGVhbiB1cCBhbnkgb3RoZXIgdGltZXJzICovCisJc2N0
cF9zdG9wX2Fzc29jaWF0aW9uX3RpbWVycyhzdGNiLCBmYWxzZSk7CiAJLyogTm93IHRoZSByZWFk
IHF1ZXVlIG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgKG9ubHkgb25jZSkgKi8KIAlpZiAoKHN0Y2It
PmFzb2Muc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSA9PSAwKSB7Ci0JCXN0
Y2ItPmFzb2Muc3RhdGUgfD0gU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRDsKKwkJU0NUUF9B
RERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9BQk9VVF9UT19CRV9GUkVFRCk7CiAJCVNDVFBf
SU5QX1JFQURfTE9DSyhpbnApOwogCQlUQUlMUV9GT1JFQUNIKHNxLCAmaW5wLT5yZWFkX3F1ZXVl
LCBuZXh0KSB7CiAJCQlpZiAoc3EtPnN0Y2IgPT0gc3RjYikgewpAQCAtNTYyMSw3ICs1NjEzLDcg
QEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIAogCQlpZiAoKHN0Y2It
PmFzb2MucmVmY250KSAgfHwKIAkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19TT0NLRVRfQUxMR09ORSkgfHwKIAkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19TT0NLRVRfR09ORSkpIHsKLQkJCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVf
SU5fQUNDRVBUX1FVRVVFOworCQkJU0NUUF9DTEVBUl9TVUJTVEFURShzdGNiLCBTQ1RQX1NUQVRF
X0lOX0FDQ0VQVF9RVUVVRSk7CiAJCQlzY3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9B
U09DS0lMTCwgaW5wLCBzdGNiLCBOVUxMKTsKIAkJfQogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7
CkBAIC01NjczLDM2ICs1NjY1LDYgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIAogCQkvKiBub3RoaW5nIGFyb3VuZCAqLwogCQlzbyA9IE5VTEw7CiAKLQlpZiAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8Ci0JICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSkgewotCQkvKgotCQkgKiBGb3Ig
VENQIHR5cGUgd2UgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gd2UgYXJlCi0JCSAqIGNvbm5l
Y3RlZC4gV2UgYWxzbyBpbmNsdWRlIHRoZSBwZWVsJ2VkIG9mZiBvbmVzIHRvLgotCQkgKi8KLQkJ
aWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0NPTk5FQ1RFRCkgewotCQkJaW5w
LT5zY3RwX2ZsYWdzICY9IH5TQ1RQX1BDQl9GTEFHU19DT05ORUNURUQ7Ci0JCQlpbnAtPnNjdHBf
ZmxhZ3MgfD0gU0NUUF9QQ0JfRkxBR1NfV0FTX0NPTk5FQ1RFRDsKLQkJCWlmIChzbykgewotCQkJ
CVNPQ0tCVUZfTE9DSygmc28tPnNvX3Jjdik7Ci0JCQkJaWYgKHNvLT5zb19yY3Yuc2JfY2MgPT0g
MCkgewotCQkJCQlzby0+c29fc3RhdGUgJj0gfihTU19JU0NPTk5FQ1RJTkcgfAotCQkJCQkJCSAg
U1NfSVNESVNDT05ORUNUSU5HIHwKLQkJCQkJCQkgIFNTX0lTQ09ORklSTUlORyB8Ci0JCQkJCQkJ
ICBTU19JU0NPTk5FQ1RFRCk7Ci0JCQkJfQotI2lmIGRlZmluZWQoX19BUFBMRV9fKQotCQkJCXNv
Y2FudHJjdm1vcmUoc28pOwotI2Vsc2UKLQkJCQlzb2NhbnRyY3Ztb3JlX2xvY2tlZChzbyk7Ci0j
ZW5kaWYKLQkJCQlzb2NhbnRzZW5kbW9yZShzbyk7Ci0JCQkJc2N0cF9zb3d3YWtldXAoaW5wLCBz
byk7Ci0JCQkJc2N0cF9zb3J3YWtldXAoaW5wLCBzbyk7Ci0JCQkJU0NUUF9TT1dBS0VVUChzbyk7
Ci0JCQl9Ci0JCX0KLQl9Ci0KIAkvKiBNYWtlIGl0IGludmFsaWQgdG9vLCB0aGF0IHdheSBpZiBp
dHMKIAkgKiBhYm91dCB0byBydW4gaXQgd2lsbCBhYm9ydCBhbmQgcmV0dXJuLgogCSAqLwpAQCAt
NTcxMSw3ICs1NjczLDcgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAs
IAogCQlhdG9taWNfYWRkX2ludCgmc3RjYi0+YXNvYy5yZWZjbnQsIC0xKTsKIAl9CiAJaWYgKHN0
Y2ItPmFzb2MucmVmY250KSB7Ci0JCXN0Y2ItPmFzb2Muc3RhdGUgJj0gflNDVFBfU1RBVEVfSU5f
QUNDRVBUX1FVRVVFOworCQlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5f
QUNDRVBUX1FVRVVFKTsKIAkJc2N0cF90aW1lcl9zdGFydChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJ
TEwsIGlucCwgc3RjYiwgTlVMTCk7CiAJCWlmIChmcm9tX2lucGNiZnJlZSA9PSBTQ1RQX05PUk1B
TF9QUk9DKSB7CiAJCQlTQ1RQX0lOUF9JTkZPX1dVTkxPQ0soKTsKQEAgLTU3NDEsMjUgKzU3MDMs
MTQgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIAogCS8qIE5vdyBy
ZXN0b3AgdGhlIHRpbWVycyB0byBiZSBzdXJlCiAJICogdGhpcyBpcyBwYXJhbm9pYSBhdCBpcyBm
aW5lc3QhCiAJICovCi0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5zdHJyZXNldF90
aW1lci50aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kYWNrX3RpbWVy
LnRpbWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPnN0cnJlc2V0X3RpbWVy
LnRpbWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmFzY29uZl90aW1lci50
aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5zaHV0X2d1YXJkX3RpbWVy
LnRpbWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmF1dG9jbG9zZV90aW1l
ci50aW1lcik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kZWxheWVkX2V2ZW50
X3RpbWVyLnRpbWVyKTsKLQlUQUlMUV9GT1JFQUNIKG5ldCwgJmFzb2MtPm5ldHMsIHNjdHBfbmV4
dCkgewotCQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+cnh0X3RpbWVyLnRpbWVyKTsK
LQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPnBtdHVfdGltZXIudGltZXIpOwotCQko
dm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+aGJfdGltZXIudGltZXIpOwotCX0KKwlzY3Rw
X3N0b3BfYXNzb2NpYXRpb25fdGltZXJzKHN0Y2IsIHRydWUpOwogCi0JYXNvYy0+c3RycmVzZXRf
dGltZXIudHlwZSA9IFNDVFBfVElNRVJfVFlQRV9OT05FOwogCS8qCiAJICogVGhlIGNodW5rIGxp
c3RzIGFuZCBzdWNoIFNIT1VMRCBiZSBlbXB0eSBidXQgd2UgY2hlY2sgdGhlbSBqdXN0CiAJICog
aW4gY2FzZS4KIAkgKi8KIAkvKiBhbnl0aGluZyBvbiB0aGUgd2hlZWwgbmVlZHMgdG8gYmUgcmVt
b3ZlZCAqLworCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAlmb3IgKGkgPSAwOyBpIDwgYXNv
Yy0+c3RyZWFtb3V0Y250OyBpKyspIHsKIAkJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqb3V0czsK
IApAQCAtNTc2OCw3ICs1NzE5LDcgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIAogCQlUQUlMUV9GT1JFQUNIX1NBRkUoc3AsICZvdXRzLT5vdXRxdWV1ZSwgbmV4dCwg
bnNwKSB7CiAJCQlhdG9taWNfc3VidHJhY3RfaW50KCZhc29jLT5zdHJlYW1fcXVldWVfY250LCAx
KTsKIAkJCVRBSUxRX1JFTU9WRSgmb3V0cy0+b3V0cXVldWUsIHNwLCBuZXh0KTsKLQkJCXN0Y2It
PmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfcmVtb3ZlX2Zyb21fc3RyZWFtKHN0Y2IsIGFzb2Ms
IG91dHMsIHNwLCAwKTsKKwkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfcmVtb3Zl
X2Zyb21fc3RyZWFtKHN0Y2IsIGFzb2MsIG91dHMsIHNwLCAxKTsKIAkJCXNjdHBfZnJlZV9zcGJ1
ZnNwYWNlKHN0Y2IsIGFzb2MsIHNwKTsKIAkJCWlmIChzcC0+ZGF0YSkgewogCQkJCWlmIChzbykg
ewpAQCAtNTc5MCw2ICs1NzQxLDcgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNi
ICppbnAsIAogCQkJc2N0cF9mcmVlX2Ffc3RybW9xKHN0Y2IsIHNwLCBTQ1RQX1NPX0xPQ0tFRCk7
CiAJCX0KIAl9CisJU0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CiAJLypzYV9pZ25vcmUgRlJF
RURfTUVNT1JZKi8KIAlUQUlMUV9GT1JFQUNIX1NBRkUoc3RycnN0LCAmYXNvYy0+cmVzZXRIZWFk
LCBuZXh0X3Jlc3AsIG5zdHJyc3QpIHsKIAkJVEFJTFFfUkVNT1ZFKCZhc29jLT5yZXNldEhlYWQs
IHN0cnJzdCwgbmV4dF9yZXNwKTsKQEAgLTY2MDYsNyArNjU1OCw3IEBAIHNjdHBfc3RhcnR1cF9t
Y29yZV90aHJlYWRzKHZvaWQpCiAJfQogfQogI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX2NjX3ZlcnNpb24gPj0gMTMwMDAwMAorI2lmIGRlZmluZWQoX19GcmVl
QlNEX18pICYmIF9fRnJlZUJTRF9jY192ZXJzaW9uID49IDE0MDAwMDAKIHN0YXRpYyBzdHJ1Y3Qg
bWJ1ZiAqCiBzY3RwX25ldGlzcl9oZGxyKHN0cnVjdCBtYnVmICptLCB1aW50cHRyX3Qgc291cmNl
KQogewpAQCAtNjYzOSw3ICs2NTkxLDExIEBAIHNjdHBfbmV0aXNyX2hkbHIoc3RydWN0IG1idWYg
Km0sIHVpbnRwdHIKICNlbmRpZgogCiB2b2lkCi1zY3RwX3BjYl9pbml0KCkKKyNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCitzY3RwX3BjYl9pbml0KGludCBzdGFydF90aHJlYWRzKQorI2Vsc2UK
K3NjdHBfcGNiX2luaXQodm9pZCkKKyNlbmRpZgogewogCS8qCiAJICogU0NUUCBpbml0aWFsaXph
dGlvbiBmb3IgdGhlIFBDQiBzdHJ1Y3R1cmVzIHNob3VsZCBiZSBjYWxsZWQgYnkKQEAgLTY4NDAs
NyArNjc5Niw3IEBAIHNjdHBfcGNiX2luaXQoKQogCSAqLwogCXNjdHBfaW5pdF92cmZfbGlzdChT
Q1RQX0RFRkFVTFRfVlJGKTsKICNlbmRpZgotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9f
RnJlZUJTRF9jY192ZXJzaW9uID49IDEzMDAwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAm
JiBfX0ZyZWVCU0RfY2NfdmVyc2lvbiA+PSAxNDAwMDAwCiAJaWYgKGlwX3JlZ2lzdGVyX2Zsb3df
aGFuZGxlcihzY3RwX25ldGlzcl9oZGxyLCBJUFBST1RPX1NDVFApKSB7CiAJCVNDVFBfUFJJTlRG
KCIqKipTQ1RQLSBFcnJvciBjYW4ndCByZWdpc3RlciBuZXRpc3IgaGFuZGxlcioqKlxuIik7CiAJ
fQpAQCAtNjg1Myw3ICs2ODA5LDggQEAgc2N0cF9wY2JfaW5pdCgpCiAjaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9fKQogCW1idWZfaW5pdGlhbGl6ZShOVUxMKTsKICNpZiBkZWZpbmVkKElORVQpIHx8
IGRlZmluZWQoSU5FVDYpCi0JcmVjdl90aHJlYWRfaW5pdCgpOworCWlmIChzdGFydF90aHJlYWRz
KQorCQlyZWN2X3RocmVhZF9pbml0KCk7CiAjZW5kaWYKICNlbmRpZgogfQpAQCAtNjkxMyw3ICs2
ODcwLDcgQEAgc2N0cF9wY2JfZmluaXNoKHZvaWQpCiAJfQogI2VuZGlmCiAjaWYgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQotCWlmIChzY3RwX2l0X2N0bC50aHJlYWRfcHJvYykgeworCWlmIChTQ1RQ
X0JBU0VfVkFSKGl0ZXJhdG9yX3RocmVhZF9zdGFydGVkKSkgewogI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2Vfb3NfV2luZG93cykKIAkJV2FpdEZvclNpbmdsZU9iamVjdChzY3RwX2l0X2N0bC50aHJl
YWRfcHJvYywgSU5GSU5JVEUpOwogCQlDbG9zZUhhbmRsZShzY3RwX2l0X2N0bC50aHJlYWRfcHJv
Yyk7CkBAIC03MjQ1LDcgKzcyMDIsNyBAQCBzY3RwX2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChz
dHJ1Y3Qgc2N0CiAJCWlmIChvZmZzZXQgKyBwbGVuID4gbGltaXQpIHsKIAkJCWJyZWFrOwogCQl9
Ci0JCWlmIChwbGVuID09IDApIHsKKwkJaWYgKHBsZW4gPCBzaXplb2Yoc3RydWN0IHNjdHBfcGFy
YW1oZHIpKSB7CiAJCQlicmVhazsKIAkJfQogI2lmZGVmIElORVQKQEAgLTczMTQsNyArNzI3MSw3
IEBAIHNjdHBfbG9hZF9hZGRyZXNzZXNfZnJvbV9pbml0KHN0cnVjdCBzY3QKIAkJCQkJICogYXNz
b2M/IHN0cmFpZ2h0ZW4gb3V0IGxvY2tzLgogCQkJCQkgKi8KIAkJCQkJaWYgKHN0Y2JfdG1wKSB7
Ci0JCQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoJnN0Y2JfdG1wLT5hc29jKSAmIFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpIHsKKwkJCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNiX3RtcCkgPT0gU0NU
UF9TVEFURV9DT09LSUVfV0FJVCkgewogCQkJCQkJCXN0cnVjdCBtYnVmICpvcF9lcnI7CiAJCQkJ
CQkJY2hhciBtc2dbU0NUUF9ESUFHX0lORk9fTEVOXTsKIApAQCAtNzQwOCw3ICs3MzY1LDcgQEAg
c2N0cF9sb2FkX2FkZHJlc3Nlc19mcm9tX2luaXQoc3RydWN0IHNjdAogCQkJCQkgKiBhc3NvYz8g
c3RyYWlnaHRlbiBvdXQgbG9ja3MuCiAJCQkJCSAqLwogCQkJCQlpZiAoc3RjYl90bXApIHsKLQkJ
CQkJCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYl90bXAtPmFzb2MpICYgU0NUUF9TVEFURV9DT09L
SUVfV0FJVCkgeworCQkJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2JfdG1wKSA9PSBTQ1RQX1NU
QVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJCQkJc3RydWN0IG1idWYgKm9wX2VycjsKIAkJCQkJCQlj
aGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCkBAIC03NDYxLDYgKzc0MTgsOSBAQCBzY3Rw
X2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChzdHJ1Y3Qgc2N0CiAJCQlpZiAocGxlbiA+IHNpemVv
Zihsc3RvcmUpKSB7CiAJCQkJcmV0dXJuICgtMjMpOwogCQkJfQorCQkJaWYgKHBsZW4gPCBzaXpl
b2Yoc3RydWN0IHNjdHBfYXNjb25mX2FkZHJ2NF9wYXJhbSkpIHsKKwkJCQlyZXR1cm4gKC0xMDEp
OworCQkJfQogCQkJcGhkciA9IHNjdHBfZ2V0X25leHRfcGFyYW0obSwgb2Zmc2V0LAogCQkJCQkJ
ICAgKHN0cnVjdCBzY3RwX3BhcmFtaGRyICopJmxzdG9yZSwKIAkJCQkJCSAgIHBsZW4pOwpAQCAt
ODA2Niw3ICs4MDI2LDggQEAgc2N0cF9kcmFpbl9tYnVmcyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Ip
CiAJCSAqIGFzb2MtPmhpZ2hlc3RfdHNuX2luc2lkZV9tYXA/CiAJCSAqLwogCQlhc29jLT5sYXN0
X3Jldm9rZV9jb3VudCA9IGNudDsKLQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZzdGNiLT5h
c29jLmRhY2tfdGltZXIudGltZXIpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBF
X1JFQ1YsIHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIE5VTEwsCisJCSAgICAgICAgICAgICAgICBTQ1RQ
X0ZST01fU0NUUF9QQ0IgKyBTQ1RQX0xPQ18xMSk7CiAJCS8qc2FfaWdub3JlIE5PX05VTExfQ0hL
Ki8KIAkJc2N0cF9zZW5kX3NhY2soc3RjYiwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJc2N0cF9j
aHVua19vdXRwdXQoc3RjYi0+c2N0cF9lcCwgc3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9EUkFJTiwg
U0NUUF9TT19OT1RfTE9DS0VEKTsKQEAgLTgxNzUsNyArODEzNiw3IEBAIHNjdHBfaW5pdGlhdGVf
aXRlcmF0b3IoaW5wX2Z1bmMgaW5wZiwKIAkJICAgIFNDVFBfTV9JVEVSKTsKIAlpZiAoaXQgPT0g
TlVMTCkgewogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIE5VTEwsIE5VTEwsIFNDVFBfRlJP
TV9TQ1RQX1BDQiwgRU5PTUVNKTsKLQkJcmV0dXJuIChFTk9NRU0pOworCQlyZXR1cm4gKC0xKTsK
IAl9CiAJbWVtc2V0KGl0LCAwLCBzaXplb2YoKml0KSk7CiAJaXQtPmZ1bmN0aW9uX2Fzc29jID0g
YWY7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuaAkocmV2aXNpb24g
MjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVk
ZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF9wY2IuaCAzMjUzNzAgMjAxNy0xMS0wMyAyMDo0NjoxMlogdHVleGVuICQiKTsKK19fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BjYi5oIDM1NDAxOCAyMDE5LTEwLTI0
IDA5OjIyOjIzWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9Q
Q0JfSF8KQEAgLTMwNSw2ICszMDUsOSBAQCBzdHJ1Y3Qgc2N0cF9iYXNlX2luZm8gewogCWludCBw
YWNrZXRfbG9nX2VuZDsKIAl1aW50OF90IHBhY2tldF9sb2dfYnVmZmVyW1NDVFBfUEFDS0VUX0xP
R19TSVpFXTsKICNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJZXZlbnRoYW5kbGVy
X3RhZyBlaF90YWc7CisjZW5kaWYKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAlpbnQgc2N0cF9t
YWluX3RpbWVyX3RpY2tzOwogI2VuZGlmCkBAIC0zMTIsNiArMzE1LDggQEAgc3RydWN0IHNjdHBf
YmFzZV9pbmZvIHsKIAl1c2VybGFuZF9tdXRleF90IHRpbWVyX210eDsKIAl1c2VybGFuZF90aHJl
YWRfdCB0aW1lcl90aHJlYWQ7CiAJaW50IHRpbWVyX3RocmVhZF9zaG91bGRfZXhpdDsKKwlpbnQg
aXRlcmF0b3JfdGhyZWFkX3N0YXJ0ZWQ7CisJaW50IHRpbWVyX3RocmVhZF9zdGFydGVkOwogI2lm
ICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCiAJcHRocmVhZF9tdXRleGF0dHJfdCBt
dHhfYXR0cjsKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCkBAIC0zMjAsNyAr
MzI1LDcgQEAgc3RydWN0IHNjdHBfYmFzZV9pbmZvIHsKICNlbmRpZgogI2VuZGlmCiAjaWZkZWYg
SU5FVAotI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKKyNpZiBkZWZpbmVkKF9f
VXNlcnNwYWNlX29zX1dpbmRvd3MpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogCVNPQ0tFVCB1
c2Vyc3BhY2VfcmF3c2N0cDsKIAlTT0NLRVQgdXNlcnNwYWNlX3VkcHNjdHA7CiAjZWxzZQpAQCAt
MzMxLDcgKzMzNiw3IEBAIHN0cnVjdCBzY3RwX2Jhc2VfaW5mbyB7CiAJdXNlcmxhbmRfdGhyZWFk
X3QgcmVjdnRocmVhZHVkcDsKICNlbmRpZgogI2lmZGVmIElORVQ2Ci0jaWYgZGVmaW5lZChfX1Vz
ZXJzcGFjZV9vc19XaW5kb3dzKQorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykg
JiYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAJU09DS0VUIHVzZXJzcGFjZV9yYXdzY3RwNjsKIAlT
T0NLRVQgdXNlcnNwYWNlX3VkcHNjdHA2OwogI2Vsc2UKQEAgLTQ0OCw3ICs0NTMsNyBAQCBzdHJ1
Y3Qgc2N0cF9pbnBjYiB7CiAJICovCiAJdW5pb24gewogCQlzdHJ1Y3QgaW5wY2IgaW5wOwotCQlj
aGFyIGFsaWduWyhzaXplb2Yoc3RydWN0IGluNnBjYikgKyBTQ1RQX0FMSUdOTTEpICYKKwkJY2hh
ciBhbGlnblsoc2l6ZW9mKHN0cnVjdCBpbnBjYikgKyBTQ1RQX0FMSUdOTTEpICYKIAkJICAgICAg
ICB+U0NUUF9BTElHTk0xXTsKIAl9ICAgICBpcF9pbnA7CiAKQEAgLTgwMywxOSArODA4LDI0IEBA
IGludCBzY3RwX2lzX2FkZHJlc3Nfb25fbG9jYWxfaG9zdChzdHJ1Y3QKIAogdm9pZCBzY3RwX2lu
cGNiX2ZyZWUoc3RydWN0IHNjdHBfaW5wY2IgKiwgaW50LCBpbnQpOwogCisjZGVmaW5lIFNDVFBf
RE9OVF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TCTAKKyNkZWZpbmUgU0NUUF9JTklUSUFMSVpFX0FV
VEhfUEFSQU1TCQkxCisKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVy
c2lvbiA+PSA1MDAwMDAKIHN0cnVjdCBzY3RwX3RjYiAqCiBzY3RwX2Fsb2NfYXNzb2Moc3RydWN0
IHNjdHBfaW5wY2IgKiwgc3RydWN0IHNvY2thZGRyICosCi0gICAgICAgICAgICAgICAgaW50ICos
IHVpbnQzMl90LCB1aW50MzJfdCwgdWludDE2X3QsIHVpbnQxNl90LCBzdHJ1Y3QgdGhyZWFkICop
OworICAgICAgICAgICAgICAgIGludCAqLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQxNl90LCB1
aW50MTZfdCwgc3RydWN0IHRocmVhZCAqLAorICAgICAgICAgICAgICAgIGludCk7CiAjZWxpZiBk
ZWZpbmVkKF9fV2luZG93c19fKQogc3RydWN0IHNjdHBfdGNiICoKIHNjdHBfYWxvY19hc3NvYyhz
dHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc29ja2FkZHIgKiwKLSAgICAgICAgICAgICAgICBp
bnQgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWludDE2X3QsIFBLVEhSRUFEKTsK
KyAgICAgICAgICAgICAgICBpbnQgKiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MTZfdCwgdWlu
dDE2X3QsIFBLVEhSRUFELCBpbnQpOwogI2Vsc2UKIC8qIHByb2Mgd2lsbCBiZSBOVUxMIGZvciBf
X1VzZXJzcGFjZV9fICovCiBzdHJ1Y3Qgc2N0cF90Y2IgKgogc2N0cF9hbG9jX2Fzc29jKHN0cnVj
dCBzY3RwX2lucGNiICosIHN0cnVjdCBzb2NrYWRkciAqLAotICAgICAgICAgICAgICAgIGludCAq
LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQxNl90LCB1aW50MTZfdCwgc3RydWN0IHByb2MgKik7
CisgICAgICAgICAgICAgICAgaW50ICosIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDE2X3QsIHVp
bnQxNl90LCBzdHJ1Y3QgcHJvYyAqLAorICAgICAgICAgICAgICAgIGludCk7CiAjZW5kaWYKIAog
aW50IHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqLCBzdHJ1Y3Qgc2N0cF90Y2Ig
KiwgaW50LCBpbnQpOwpAQCAtODM4LDcgKzg0OCwxMSBAQCB2b2lkIHNjdHBfcmVtb3ZlX25ldChz
dHJ1Y3Qgc2N0cF90Y2IgKiwgCiAKIGludCBzY3RwX2RlbF9yZW1vdGVfYWRkcihzdHJ1Y3Qgc2N0
cF90Y2IgKiwgc3RydWN0IHNvY2thZGRyICopOwogCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQordm9pZCBzY3RwX3BjYl9pbml0KGludCk7CisjZWxzZQogdm9pZCBzY3RwX3BjYl9pbml0KHZv
aWQpOworI2VuZGlmCiAKIHZvaWQgc2N0cF9wY2JfZmluaXNoKHZvaWQpOwogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5jCShyZXZpc2lvbiAyNTg2MDgp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8
c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9w
ZWVsb2ZmLmMgMjc5ODU5IDIwMTUtMDMtMTAgMTk6NDk6MjVaIHR1ZXhlbiAkIik7CitfX0ZCU0RJ
RCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wZWVsb2ZmLmMgMzM3NzA4IDIwMTgt
MDgtMTMgMTM6NTg6NDVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQv
c2N0cF9vcy5oPgpAQCAtNzksNyArNzksNyBAQCBzY3RwX2Nhbl9wZWVsX29mZihzdHJ1Y3Qgc29j
a2V0ICpoZWFkLCBzCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBzdGNiLCBOVUxMLCBTQ1RQ
X0ZST01fU0NUUF9QRUVMT0ZGLCBFTk9FTlQpOwogCQlyZXR1cm4gKEVOT0VOVCk7CiAJfQotCXN0
YXRlID0gU0NUUF9HRVRfU1RBVEUoKCZzdGNiLT5hc29jKSk7CisJc3RhdGUgPSBTQ1RQX0dFVF9T
VEFURShzdGNiKTsKIAlpZiAoKHN0YXRlID09IFNDVFBfU1RBVEVfRU1QVFkpIHx8CiAJICAgIChz
dGF0ZSA9PSBTQ1RQX1NUQVRFX0lOVVNFKSkgewogCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CkBA
IC0xMDksNyArMTA5LDcgQEAgc2N0cF9kb19wZWVsb2ZmKHN0cnVjdCBzb2NrZXQgKmhlYWQsIHN0
cgogCQlyZXR1cm4gKEVOT1RDT05OKTsKIAl9CiAKLQlzdGF0ZSA9IFNDVFBfR0VUX1NUQVRFKCgm
c3RjYi0+YXNvYykpOworCXN0YXRlID0gU0NUUF9HRVRfU1RBVEUoc3RjYik7CiAJaWYgKChzdGF0
ZSA9PSBTQ1RQX1NUQVRFX0VNUFRZKSB8fAogCSAgICAoc3RhdGUgPT0gU0NUUF9TVEFURV9JTlVT
RSkpIHsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMJKHJldmlzaW9uIDI1ODYwOCkKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3NzX2Z1bmN0aW9ucy5jCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUg
PHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBf
c3NfZnVuY3Rpb25zLmMgMzI2MTgwIDIwMTctMTEtMjQgMTk6Mzg6NTlaIHR1ZXhlbiAkIik7Citf
X0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zc19mdW5jdGlvbnMuYyAz
NTgwMjggMjAyMC0wMi0xNyAxODowNTowM1ogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVk
ZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgpAQCAtNTksNiArNTksOSBAQCBzY3RwX3NzX2RlZmF1bHRf
aW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0CiB7CiAJdWludDE2X3QgaTsKIAorCWlmIChob2xkc19s
b2NrID09IDApIHsKKwkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCX0KIAlhc29jLT5zc19k
YXRhLmxvY2tlZF9vbl9zZW5kaW5nID0gTlVMTDsKIAlhc29jLT5zc19kYXRhLmxhc3Rfb3V0X3N0
cmVhbSA9IE5VTEw7CiAJVEFJTFFfSU5JVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpOwpAQCAt
NzEsNyArNzQsMTAgQEAgc2N0cF9zc19kZWZhdWx0X2luaXQoc3RydWN0IHNjdHBfdGNiICpzdAog
CWZvciAoaSA9IDA7IGkgPCBzdGNiLT5hc29jLnN0cmVhbW91dGNudDsgaSsrKSB7CiAJCXN0Y2It
PmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfYWRkX3RvX3N0cmVhbShzdGNiLCAmc3RjYi0+YXNv
YywKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGNi
LT5hc29jLnN0cm1vdXRbaV0sCi0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLCBob2xkc19sb2NrKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDEpOworCX0KKwlpZiAoaG9sZHNfbG9jayA9PSAw
KSB7CisJCVNDVFBfVENCX1NFTkRfVU5MT0NLKHN0Y2IpOwogCX0KIAlyZXR1cm47CiB9CkBAIC04
NCw4ICs5MCwxMCBAQCBzY3RwX3NzX2RlZmF1bHRfY2xlYXIoc3RydWN0IHNjdHBfdGNiICpzCiAJ
CVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAl9CiAJd2hpbGUgKCFUQUlMUV9FTVBUWSgmYXNv
Yy0+c3NfZGF0YS5vdXQud2hlZWwpKSB7Ci0JCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0cnEg
PSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpOwotCQlUQUlMUV9SRU1PVkUo
JmFzb2MtPnNzX2RhdGEub3V0LndoZWVsLCBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQu
d2hlZWwpLCBzc19wYXJhbXMucnIubmV4dF9zcG9rZSk7CisJCXN0cnVjdCBzY3RwX3N0cmVhbV9v
dXQgKnN0cnE7CisKKwkJc3RycSA9IFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVl
bCk7CisJCVRBSUxRX1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIHN0cnEsIHNzX3Bh
cmFtcy5yci5uZXh0X3Nwb2tlKTsKIAkJc3RycS0+c3NfcGFyYW1zLnJyLm5leHRfc3Bva2UudHFl
X25leHQgPSBOVUxMOwogCQlzdHJxLT5zc19wYXJhbXMucnIubmV4dF9zcG9rZS50cWVfcHJldiA9
IE5VTEw7CiAJfQpAQCAtNDAxLDExICs0MDksMTMgQEAgc2N0cF9zc19wcmlvX2NsZWFyKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYgogCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJfQogCXdoaWxl
ICghVEFJTFFfRU1QVFkoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKSkgewotCQlzdHJ1Y3Qgc2N0
cF9zdHJlYW1fb3V0ICpzdHJxID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVs
KTsKKwkJc3RydWN0IHNjdHBfc3RyZWFtX291dCAqc3RycTsKKworCQlzdHJxID0gVEFJTFFfRklS
U1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKIAkJaWYgKGNsZWFyX3ZhbHVlcykgewogCQkJ
c3RycS0+c3NfcGFyYW1zLnByaW8ucHJpb3JpdHkgPSAwOwogCQl9Ci0JCVRBSUxRX1JFTU9WRSgm
YXNvYy0+c3NfZGF0YS5vdXQud2hlZWwsIFRBSUxRX0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53
aGVlbCksIHNzX3BhcmFtcy5wcmlvLm5leHRfc3Bva2UpOworCQlUQUlMUV9SRU1PVkUoJmFzb2Mt
PnNzX2RhdGEub3V0LndoZWVsLCBzdHJxLCBzc19wYXJhbXMucHJpby5uZXh0X3Nwb2tlKTsKIAkJ
c3RycS0+c3NfcGFyYW1zLnByaW8ubmV4dF9zcG9rZS50cWVfbmV4dCA9IE5VTEw7CiAJCXN0cnEt
PnNzX3BhcmFtcy5wcmlvLm5leHRfc3Bva2UudHFlX3ByZXYgPSBOVUxMOwogCkBAIC01MTEsNiAr
NTIxLDkgQEAgc2N0cF9zc19wcmlvX3NlbGVjdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0YwogewogCXN0
cnVjdCBzY3RwX3N0cmVhbV9vdXQgKnN0cnEsICpzdHJxdCwgKnN0cnFuOwogCisJaWYgKGFzb2Mt
PnNzX2RhdGEubG9ja2VkX29uX3NlbmRpbmcpIHsKKwkJcmV0dXJuIChhc29jLT5zc19kYXRhLmxv
Y2tlZF9vbl9zZW5kaW5nKTsKKwl9CiAJc3RycXQgPSBhc29jLT5zc19kYXRhLmxhc3Rfb3V0X3N0
cmVhbTsKIHByaW9fYWdhaW46CiAJLyogRmluZCB0aGUgbmV4dCBzdHJlYW0gdG8gdXNlICovCkBA
IC01ODksMTEgKzYwMiwxMyBAQCBzY3RwX3NzX2ZiX2NsZWFyKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwgCiAJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKIAl9CiAJd2hpbGUgKCFUQUlMUV9FTVBU
WSgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpKSB7Ci0JCXN0cnVjdCBzY3RwX3N0cmVhbV9vdXQg
KnN0cnEgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpOworCQlzdHJ1Y3Qg
c2N0cF9zdHJlYW1fb3V0ICpzdHJxOworCisJCXN0cnEgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3Nf
ZGF0YS5vdXQud2hlZWwpOwogCQlpZiAoY2xlYXJfdmFsdWVzKSB7CiAJCQlzdHJxLT5zc19wYXJh
bXMuZmIucm91bmRzID0gLTE7CiAJCX0KLQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91
dC53aGVlbCwgVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKSwgc3NfcGFyYW1z
LmZiLm5leHRfc3Bva2UpOworCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVs
LCBzdHJxLCBzc19wYXJhbXMuZmIubmV4dF9zcG9rZSk7CiAJCXN0cnEtPnNzX3BhcmFtcy5mYi5u
ZXh0X3Nwb2tlLnRxZV9uZXh0ID0gTlVMTDsKIAkJc3RycS0+c3NfcGFyYW1zLmZiLm5leHRfc3Bv
a2UudHFlX3ByZXYgPSBOVUxMOwogCX0KQEAgLTY4NSw2ICs3MDAsOSBAQCBzY3RwX3NzX2ZiX3Nl
bGVjdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IgCiB7CiAJc3RydWN0IHNjdHBfc3RyZWFtX291dCAq
c3RycSA9IE5VTEwsICpzdHJxdDsKIAorCWlmIChhc29jLT5zc19kYXRhLmxvY2tlZF9vbl9zZW5k
aW5nKSB7CisJCXJldHVybiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25fc2VuZGluZyk7CisJfQog
CWlmIChhc29jLT5zc19kYXRhLmxhc3Rfb3V0X3N0cmVhbSA9PSBOVUxMIHx8CiAJICAgIFRBSUxR
X0ZJUlNUKCZhc29jLT5zc19kYXRhLm91dC53aGVlbCkgPT0gVEFJTFFfTEFTVCgmYXNvYy0+c3Nf
ZGF0YS5vdXQud2hlZWwsIHNjdHB3aGVlbF9saXN0aGVhZCkpIHsKIAkJc3RycXQgPSBUQUlMUV9G
SVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWwpOwpAQCAtNzYzLDYgKzc4MSw5IEBAIHNjdHBf
c3NfZmNmc19pbml0KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1f
cXVldWVfcGVuZGluZyAqc3A7CiAJdWludDE2X3QgaTsKIAorCWlmIChob2xkc19sb2NrID09IDAp
IHsKKwkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOworCX0KIAlUQUlMUV9JTklUKCZhc29jLT5z
c19kYXRhLm91dC5saXN0KTsKIAkvKgogCSAqIElmIHRoZXJlIGlzIGRhdGEgaW4gdGhlIHN0cmVh
bSBxdWV1ZXMgYWxyZWFkeSwKQEAgLTc4MiwxMiArODAzLDE1IEBAIHNjdHBfc3NfZmNmc19pbml0
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQl4Kys7CiAJCQl9CiAJCQlpZiAoc3AgIT0gTlVM
TCkgewotCQkJCXNjdHBfc3NfZmNmc19hZGQoc3RjYiwgJnN0Y2ItPmFzb2MsICZzdGNiLT5hc29j
LnN0cm1vdXRbaV0sIHNwLCBob2xkc19sb2NrKTsKKwkJCQlzY3RwX3NzX2ZjZnNfYWRkKHN0Y2Is
ICZzdGNiLT5hc29jLCAmc3RjYi0+YXNvYy5zdHJtb3V0W2ldLCBzcCwgMSk7CiAJCQkJYWRkX21v
cmUgPSAxOwogCQkJfQogCQl9CiAJCW4rKzsKIAl9CisJaWYgKGhvbGRzX2xvY2sgPT0gMCkgewor
CQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKKwl9CiAJcmV0dXJuOwogfQogCkBAIC03OTUs
MTIgKzgxOSwxNyBAQCBzdGF0aWMgdm9pZAogc2N0cF9zc19mY2ZzX2NsZWFyKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAgICAgICAgICAgICAg
ICAgICAgaW50IGNsZWFyX3ZhbHVlcywgaW50IGhvbGRzX2xvY2spCiB7CisJc3RydWN0IHNjdHBf
c3RyZWFtX3F1ZXVlX3BlbmRpbmcgKnNwOworCiAJaWYgKGNsZWFyX3ZhbHVlcykgewogCQlpZiAo
aG9sZHNfbG9jayA9PSAwKSB7CiAJCQlTQ1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJCX0KIAkJ
d2hpbGUgKCFUQUlMUV9FTVBUWSgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCkpIHsKLQkJCVRBSUxR
X1JFTU9WRSgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCwgVEFJTFFfRklSU1QoJmFzb2MtPnNzX2Rh
dGEub3V0Lmxpc3QpLCBzc19uZXh0KTsKKwkJCXNwID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2Rh
dGEub3V0Lmxpc3QpOworCQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91dC5saXN0LCBz
cCwgc3NfbmV4dCk7CisJCQlzcC0+c3NfbmV4dC50cWVfbmV4dCA9IE5VTEw7CisJCQlzcC0+c3Nf
bmV4dC50cWVfcHJldiA9IE5VTEw7CiAJCX0KIAkJaWYgKGhvbGRzX2xvY2sgPT0gMCkgewogCQkJ
U0NUUF9UQ0JfU0VORF9VTkxPQ0soc3RjYik7CkBAIC04MjAsNiArODQ5LDggQEAgc2N0cF9zc19m
Y2ZzX2luaXRfc3RyZWFtKHN0cnVjdCBzY3RwX3RjYgogCQkJc3RjYi0+YXNvYy5zc19kYXRhLmxh
c3Rfb3V0X3N0cmVhbSA9IHN0cnE7CiAJCX0KIAl9CisJc3RycS0+c3NfcGFyYW1zLmZiLm5leHRf
c3Bva2UudHFlX25leHQgPSBOVUxMOworCXN0cnEtPnNzX3BhcmFtcy5mYi5uZXh0X3Nwb2tlLnRx
ZV9wcmV2ID0gTlVMTDsKIAlyZXR1cm47CiB9CiAKQEAgLTg2Myw2ICs4OTQsOCBAQCBzY3RwX3Nz
X2ZjZnNfcmVtb3ZlKHN0cnVjdCBzY3RwX3RjYiAqc3RjCiAJICAgICgoc3AtPnNzX25leHQudHFl
X25leHQgIT0gTlVMTCkgfHwKIAkgICAgIChzcC0+c3NfbmV4dC50cWVfcHJldiAhPSBOVUxMKSkp
IHsKIAkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zc19kYXRhLm91dC5saXN0LCBzcCwgc3NfbmV4dCk7
CisJCXNwLT5zc19uZXh0LnRxZV9uZXh0ID0gTlVMTDsKKwkJc3AtPnNzX25leHQudHFlX3ByZXYg
PSBOVUxMOwogCX0KIAlpZiAoaG9sZHNfbG9jayA9PSAwKSB7CiAJCVNDVFBfVENCX1NFTkRfVU5M
T0NLKHN0Y2IpOwpAQCAtODc4LDYgKzkxMSw5IEBAIHNjdHBfc3NfZmNmc19zZWxlY3Qoc3RydWN0
IHNjdHBfdGNiICpzdGMKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxOwogCXN0cnVjdCBz
Y3RwX3N0cmVhbV9xdWV1ZV9wZW5kaW5nICpzcDsKIAorCWlmIChhc29jLT5zc19kYXRhLmxvY2tl
ZF9vbl9zZW5kaW5nKSB7CisJCXJldHVybiAoYXNvYy0+c3NfZGF0YS5sb2NrZWRfb25fc2VuZGlu
Zyk7CisJfQogCXNwID0gVEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0Lmxpc3QpOwogZGVm
YXVsdF9hZ2FpbjoKIAlpZiAoc3AgIT0gTlVMTCkgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfc3RydWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3N0cnVjdHMuaAkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3RydWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgot
X19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDMyNTM3
MCAyMDE3LTExLTAzIDIwOjQ2OjEyWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDM1NzUwMSAyMDIwLTAyLTA0IDE0OjAxOjA3
WiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9TVFJVQ1RTX0hf
CkBAIC0xNzMsNyArMTczLDcgQEAgc3RydWN0IHNjdHBfY29weV9hbGwgewogCXN0cnVjdCBzY3Rw
X2lucGNiICppbnA7CS8qIGVwICovCiAJc3RydWN0IG1idWYgKm07CiAJc3RydWN0IHNjdHBfc25k
cmN2aW5mbyBzbmRyY3Y7Ci0JaW50IHNuZGxlbjsKKwlzc2l6ZV90IHNuZGxlbjsKIAlpbnQgY250
X3NlbnQ7CiAJaW50IGNudF9mYWlsZWQ7CiB9OwpAQCAtODY4LDcgKzg2OCw2IEBAIHN0cnVjdCBz
Y3RwX2Fzc29jaWF0aW9uIHsKIAlzdHJ1Y3Qgc2N0cF90aW1lciBzdHJyZXNldF90aW1lcjsJLyog
c3RyZWFtIHJlc2V0ICovCiAJc3RydWN0IHNjdHBfdGltZXIgc2h1dF9ndWFyZF90aW1lcjsJLyog
c2h1dGRvd24gZ3VhcmQgKi8KIAlzdHJ1Y3Qgc2N0cF90aW1lciBhdXRvY2xvc2VfdGltZXI7CS8q
IGF1dG9tYXRpYyBjbG9zZSB0aW1lciAqLwotCXN0cnVjdCBzY3RwX3RpbWVyIGRlbGF5ZWRfZXZl
bnRfdGltZXI7CS8qIHRpbWVyIGZvciBkZWxheWVkIGV2ZW50cyAqLwogCXN0cnVjdCBzY3RwX3Rp
bWVyIGRlbGV0ZV9wcmltX3RpbWVyOwkvKiBkZWxldGluZyBwcmltYXJ5IGRzdCAqLwogCiAJLyog
bGlzdCBvZiByZXN0cmljdGVkIGxvY2FsIGFkZHJlc3NlcyAqLwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmMJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N5c2N0bC5jCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5o
PgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3lzY3RsLmMgMzI2
NjcyIDIwMTctMTItMDcgMjI6MTk6MDhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6
IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNjdGwuYyAzNTYzNTcgMjAyMC0wMS0wNCAyMDozMzox
MlogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBA
IC0xNDksNiArMTQ5LDcgQEAgc2N0cF9pbml0X3N5c2N0bHMoKQogCVNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9zdGVhZHlfc3RlcCkgPSBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTX0RFRkFVTFQ7CiAJU0NU
UF9CQVNFX1NZU0NUTChzY3RwX3VzZV9kY2NjX2VjbikgPSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNO
X0RFRkFVTFQ7CiAJU0NUUF9CQVNFX1NZU0NUTChzY3RwX2JsYWNraG9sZSkgPSBTQ1RQQ1RMX0JM
QUNLSE9MRV9ERUZBVUxUOworCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kYWxsX2xpbWl0KSA9
IFNDVFBDVExfU0VOREFMTF9MSU1JVF9ERUZBVUxUOwogCVNDVFBfQkFTRV9TWVNDVEwoc2N0cF9k
aWFnX2luZm9fY29kZSkgPSBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX0RFRkFVTFQ7CiAjaWYgZGVm
aW5lZChTQ1RQX0xPQ0FMX1RSQUNFX0JVRikKICNpZiBkZWZpbmVkKF9fV2luZG93c19fKQpAQCAt
NDk4LDYgKzQ5OSw5IEBAIHNjdHBfc3lzY3RsX2hhbmRsZV9hc3NvY2xpc3QoU1lTQ1RMX0hBTkQK
IAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9T
WVNDVEwsIEVQRVJNKTsKIAkJcmV0dXJuIChFUEVSTSk7CiAJfQorCW1lbXNldCgmeGlucGNiLCAw
LCBzaXplb2YoeGlucGNiKSk7CisJbWVtc2V0KCZ4c3RjYiwgMCwgc2l6ZW9mKHhzdGNiKSk7CisJ
bWVtc2V0KCZ4cmFkZHIsIDAsIHNpemVvZih4cmFkZHIpKTsKIAlMSVNUX0ZPUkVBQ0goaW5wLCAm
U0NUUF9CQVNFX0lORk8obGlzdGhlYWQpLCBzY3RwX2xpc3QpIHsKIAkJU0NUUF9JTlBfUkxPQ0so
aW5wKTsKIAkJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9BTExH
T05FKSB7CkBAIC01MTYsNyArNTIwLDkgQEAgc2N0cF9zeXNjdGxfaGFuZGxlX2Fzc29jbGlzdChT
WVNDVExfSEFORAogCQl4aW5wY2IudG90YWxfcmVjdnMgPSBpbnAtPnRvdGFsX3JlY3ZzOwogCQl4
aW5wY2IudG90YWxfbm9zcGFjZXMgPSBpbnAtPnRvdGFsX25vc3BhY2VzOwogCQl4aW5wY2IuZnJh
Z21lbnRhdGlvbl9wb2ludCA9IGlucC0+c2N0cF9mcmFnX3BvaW50OwotI2lmICEoZGVmaW5lZChf
X0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF92ZXJzaW9uIDwgMTAwMTUxNykpCisjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykKKwkJeGlucGNiLnNvY2tldCA9ICh1aW50cHRyX3QpaW5wLT5zY3RwX3Nv
Y2tldDsKKyNlbHNlCiAJCXhpbnBjYi5zb2NrZXQgPSBpbnAtPnNjdHBfc29ja2V0OwogI2VuZGlm
CiAJCXNvID0gaW5wLT5zY3RwX3NvY2tldDsKQEAgLTEzMTksNiArMTMyNSw3IEBAIFNDVFBfVUlO
VF9TWVNDVEwocnR0dmFyX2VxcmV0LCBzY3RwX3J0dHYKIFNDVFBfVUlOVF9TWVNDVEwocnR0dmFy
X3N0ZWFkeV9zdGVwLCBzY3RwX3N0ZWFkeV9zdGVwLCBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTKQog
U0NUUF9VSU5UX1NZU0NUTCh1c2VfZGNjY2Vjbiwgc2N0cF91c2VfZGNjY19lY24sIFNDVFBDVExf
UlRUVkFSX0RDQ0NFQ04pCiBTQ1RQX1VJTlRfU1lTQ1RMKGJsYWNraG9sZSwgc2N0cF9ibGFja2hv
bGUsIFNDVFBDVExfQkxBQ0tIT0xFKQorU0NUUF9VSU5UX1NZU0NUTChzZW5kYWxsX2xpbWl0LCBz
Y3RwX3NlbmRhbGxfbGltaXQsIFNDVFBDVExfU0VOREFMTF9MSU1JVCkKIFNDVFBfVUlOVF9TWVND
VEwoZGlhZ19pbmZvX2NvZGUsIHNjdHBfZGlhZ19pbmZvX2NvZGUsIFNDVFBDVExfRElBR19JTkZP
X0NPREUpCiAjaWZkZWYgU0NUUF9ERUJVRwogU0NUUF9VSU5UX1NZU0NUTChkZWJ1Zywgc2N0cF9k
ZWJ1Z19vbiwgU0NUUENUTF9ERUJVRykKQEAgLTE0MTcsNiArMTQyNCw3IEBAIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQoU1lTQ1RMX0hBTkRMRVJfQVIKIAkJUkFOR0VDSEsoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2VuYWJsZV9zYWNrX2ltbWVkaWF0ZWx5KSwgU0NUUENUTF9TQUNLX0lNTUVESUFURUxZ
X0VOQUJMRV9NSU4sIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9FTkFCTEVfTUFYKTsKIAkJUkFO
R0VDSEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2luaXRzX2luY2x1ZGVfbmF0X2ZyaWVuZGx5KSwg
U0NUUENUTF9OQVRfRlJJRU5ETFlfSU5JVFNfTUlOLCBTQ1RQQ1RMX05BVF9GUklFTkRMWV9JTklU
U19NQVgpOwogCQlSQU5HRUNISyhTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSwgU0NU
UENUTF9CTEFDS0hPTEVfTUlOLCBTQ1RQQ1RMX0JMQUNLSE9MRV9NQVgpOworCQlSQU5HRUNISyhT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZGFsbF9saW1pdCksIFNDVFBDVExfU0VOREFMTF9MSU1J
VF9NSU4sIFNDVFBDVExfU0VOREFMTF9MSU1JVF9NQVgpOwogCQlSQU5HRUNISyhTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLCBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX01JTiwg
U0NUUENUTF9ESUFHX0lORk9fQ09ERV9NQVgpOwogI2lmZGVmIFNDVFBfREVCVUcKIAkJUkFOR0VD
SEsoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RlYnVnX29uKSwgU0NUUENUTF9ERUJVR19NSU4sIFND
VFBDVExfREVCVUdfTUFYKTsKQEAgLTE0MjksMTQzICsxNDM3LDE0MyBAQCB2b2lkCiBzeXNjdGxf
c2V0dXBfc2N0cCh2b2lkKQogewogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInNl
bmRzcGFjZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNF
X1NZU0NUTChzY3RwX3NlbmRzcGFjZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VuZHNwYWNlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxl
X2ludCwKIAkgICAgU0NUUENUTF9NQVhER1JBTV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZz
eXNjdGxfb2lkX3RvcCwgInJlY3ZzcGFjZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAg
ICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcmVjdnNwYWNlKSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9yZWN2c3BhY2UpLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JFQ1ZTUEFDRV9ERVNDKTsKIAog
CXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImF1dG9fYXNjb25mIiwgQ1RMVFlQRV9J
TlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXV0b19h
c2NvbmYpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2F1dG9fYXNjb25mKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NU
UENUTF9BVVRPQVNDT05GX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9w
LCAiZWNuX2VuYWJsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2Vjbl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2Vjbl9lbmFibGUpLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0VDTl9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJwcl9lbmFibGUiLCBDVExUWVBFX0lOVHxDVExGTEFH
X1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wcl9lbmFibGUpLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3ByX2Vu
YWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUFJfRU5BQkxF
X0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYXV0aF9lbmFibGUi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9hdXRoX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9hdXRoLAorCSAgICAmU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2F1dGhfZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2F1
dGgsCiAJICAgIFNDVFBDVExfQVVUSF9FTkFCTEVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgm
c3lzY3RsX29pZF90b3AsICJhc2NvbmZfZW5hYmxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXNjb25mX2VuYWJsZSksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9hc2NvbmYsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfYXNj
b25mX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9hc2NvbmYsCiAJICAgIFNDVFBDVExf
QVNDT05GX0VOQUJMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwg
InJlY29uZmlnX2VuYWJsZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAm
U0NUUF9CQVNFX1NZU0NUTChzY3RwX3JlY29uZmlnX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcmVjb25maWdfZW5hYmxlKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9SRUNPTkZJR19FTkFCTEVf
REVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJucnNhY2tfZW5hYmxl
IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfbnJzYWNrX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfbnJzYWNrX2VuYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCiAJICAgIFNDVFBDVExfTlJTQUNLX0VOQUJMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRf
b2lkKCZzeXNjdGxfb2lkX3RvcCwgInBrdGRyb3BfZW5hYmxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcGt0ZHJvcF9lbmFibGUp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3BrdGRyb3BfZW5hYmxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENU
TF9QS1REUk9QX0VOQUJMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3Rv
cCwgImxvb3BiYWNrX25vY3N1bSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAg
ICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1fb25fbG9vcGJhY2spLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25vX2NzdW1fb25f
bG9vcGJhY2spLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0xPT1BC
QUNLX05PQ1NVTV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInBl
ZXJfY2hrb2giLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9wZWVyX2NodW5rX29oKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
KwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wZWVyX2NodW5rX29oKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9QRUVSX0NIS09IX0RFU0MpOwogCiAJc3lzY3Rs
X2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibWF4YnVyc3QiLCBDVExUWVBFX0lOVHxDVExGTEFH
X1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfYnVyc3RfZGVmYXVs
dCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbWF4X2J1cnN0X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBT
Q1RQQ1RMX01BWEJVUlNUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9w
LCAiZnJfbWF4YnVyc3QiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9mcl9tYXhfYnVyc3RfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZnJfbWF4X2J1cnN0X2Rl
ZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0ZSTUFYQlVS
U1RfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJtYXhjaHVua3Mi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9tYXhfY2h1bmtzX29uX3F1ZXVlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfY2h1bmtzX29uX3F1ZXVlKSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9NQVhDSFVOS1NfREVTQyk7CiAKIAlzeXNj
dGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJ0Y2JoYXNoc2l6ZSIsIENUTFRZUEVfSU5UfENU
TEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2hhc2h0YmxzaXpl
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9oYXNodGJsc2l6ZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
VENCSEFTSFNJWkVfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJw
Y2JoYXNoc2l6ZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9C
QVNFX1NZU0NUTChzY3RwX3BjYnRibHNpemUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAor
CSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BjYnRibHNpemUpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1BDQkhBU0hTSVpFX0RFU0MpOwogCiAJc3lzY3RsX2Fk
ZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibWluX3NwbGl0X3BvaW50IiwgQ1RMVFlQRV9JTlR8Q1RM
RkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWluX3NwbGl0X3Bv
aW50KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9taW5fc3BsaXRfcG9pbnQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBT
Q1RQQ1RMX01JTl9TUExJVF9QT0lOVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxf
b2lkX3RvcCwgImNodW5rc2NhbGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9jaHVua3NjYWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9jaHVua3NjYWxlKSwgMCwgc2N0
cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9DSFVOS1NDQUxFX0RFU0MpOwogCiAJ
c3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiZGVsYXllZF9zYWNrX3RpbWUiLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9k
ZWxheWVkX3NhY2tfdGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kZWxheWVkX3NhY2tfdGltZV9kZWZhdWx0KSwgMCwg
c2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9ERUxBWUVEX1NBQ0tfVElNRV9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInNhY2tfZnJlcSIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3NhY2tfZnJlcV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9zYWNrX2ZyZXFfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCiAJICAgIFNDVFBDVExfU0FDS19GUkVRX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9v
aWQoJnN5c2N0bF9vaWRfdG9wLCAic3lzX3Jlc291cmNlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19S
VywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc3lzdGVtX2ZyZWVfcmVzY19s
aW1pdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfc3lzdGVtX2ZyZWVfcmVzY19saW1pdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CiAJICAgIFNDVFBDVExfU1lTX1JFU09VUkNFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5
c2N0bF9vaWRfdG9wLCAiYXNvY19yZXNvdXJjZSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0g
ICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2Fzb2NfZnJlZV9yZXNjX2xpbWl0KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9h
c29jX2ZyZWVfcmVzY19saW1pdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFND
VFBDVExfQVNPQ19SRVNPVVJDRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lk
X3RvcCwgImhlYXJ0YmVhdF9pbnRlcnZhbCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAg
ICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2hlYXJ0YmVhdF9pbnRlcnZhbF9kZWZhdWx0
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9oZWFydGJlYXRfaW50ZXJ2YWxfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CiAJICAgIFNDVFBDVExfSEVBUlRCRUFUX0lOVEVSVkFMX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9v
aWQoJnN5c2N0bF9vaWRfdG9wLCAicG10dV9yYWlzZV90aW1lIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcG10dV9yYWlzZV90aW1l
X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZ
U0NUTChzY3RwX3BtdHVfcmFpc2VfdGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxl
X2ludCwKIAkgICAgU0NUUENUTF9QTVRVX1JBSVNFX1RJTUVfREVTQyk7CiAKIAlzeXNjdGxfYWRk
X29pZCgmc3lzY3RsX29pZF90b3AsICJzaHV0ZG93bl9ndWFyZF90aW1lIiwgQ1RMVFlQRV9JTlR8
Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2h1dGRvd25f
Z3VhcmRfdGltZV9kZWZhdWx0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9zaHV0ZG93bl9ndWFyZF90aW1lX2RlZmF1bHQpLCAwLCBzY3Rw
X3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NIVVRET1dOX0dVQVJEX1RJTUVfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJzZWNyZXRfbGlmZXRpbWUi
LCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9zZWNyZXRfbGlmZXRpbWVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc2VjcmV0X2xpZmV0aW1lX2RlZmF1bHQpLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1NFQ1JFVF9MSUZFVElNRV9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInJ0b19tYXgiLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9y
dG9fbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9C
QVNFX1NZU0NUTChzY3RwX3J0b19tYXhfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfUlRPX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgInJ0b19taW4iLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ydG9fbWluX2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0
bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0b19taW5fZGVmYXVs
dCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUlRPX01JTl9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInJ0b19pbml0aWFsIiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBf
cnRvX2luaXRpYWxfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnRvX2luaXRpYWxfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUlRPX0lOSVRJQUxfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJpbml0X3J0b19tYXgiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0X3J0b19tYXhf
ZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfaW5pdF9ydG9fbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX0lOSVRfUlRPX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZz
eXNjdGxfb2lkX3RvcCwgInZhbGlkX2Nvb2tpZV9saWZlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19S
VywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdmFsaWRfY29va2llX2xpZmVf
ZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfdmFsaWRfY29va2llX2xpZmVfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRs
ZV9pbnQsCiAJICAgIFNDVFBDVExfVkFMSURfQ09PS0lFX0xJRkVfREVTQyk7CiAKIAlzeXNjdGxf
YWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJpbml0X3J0eF9tYXgiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0X3J0eF9tYXhf
ZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lT
Q1RMKHNjdHBfaW5pdF9ydHhfbWF4X2RlZmF1bHQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50
LAogCSAgICBTQ1RQQ1RMX0lOSVRfUlRYX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZz
eXNjdGxfb2lkX3RvcCwgImFzc29jX3J0eF9tYXgiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAot
ICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hc3NvY19ydHhfbWF4X2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2Fzc29jX3J0eF9tYXhfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAg
IFNDVFBDVExfQVNTT0NfUlRYX01BWF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxf
b2lkX3RvcCwgInBhdGhfcnR4X21heCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAg
ICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3BhdGhfcnR4X21heF9kZWZhdWx0KSwgMCwgc2N0
cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9wYXRoX3J0
eF9tYXhfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExf
UEFUSF9SVFhfTUFYX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAi
cGF0aF9wZl90aHJlc2hvbGQiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLApAQCAtMTU3Myw4MyAr
MTU4MSw4MyBAQCBzeXNjdGxfc2V0dXBfc2N0cCh2b2lkKQogCSAgICBTQ1RQQ1RMX1BBVEhfUEZf
VEhSRVNIT0xEX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiYWRk
X21vcmVfb25fb3V0cHV0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hZGRfbW9yZV90aHJlc2hv
bGQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0FERF9NT1JFX09O
X09VVFBVVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImluY29t
aW5nX3N0cmVhbXMiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9ucl9pbmNvbWluZ19zdHJlYW1zX2RlZmF1bHQpLCAwLCBzY3RwX3N5
c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25yX2luY29taW5n
X3N0cmVhbXNfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBD
VExfSU5DT01JTkdfU1RSRUFNU19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lk
X3RvcCwgIm91dGdvaW5nX3N0cmVhbXMiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ucl9vdXRnb2luZ19zdHJlYW1zX2RlZmF1bHQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X25yX291dGdvaW5nX3N0cmVhbXNfZGVmYXVsdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQs
CiAJICAgIFNDVFBDVExfT1VUR09JTkdfU1RSRUFNU19ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgImNtdF9vbl9vZmYiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAot
ICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9jbXRfb25fb2ZmKSwgMCwgc2N0cF9z
eXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9jbXRfb25fb2Zm
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9DTVRfT05fT0ZGX0RF
U0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiY210X3VzZV9kYWMiLCBD
VExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9jbXRfdXNlX2RhYyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JB
U0VfU1lTQ1RMKHNjdHBfY210X3VzZV9kYWMpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAog
CSAgICBTQ1RQQ1RMX0NNVF9VU0VfREFDX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0
bF9vaWRfdG9wLCAiY3duZF9tYXhidXJzdCIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAg
ICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3VzZV9jd25kX2Jhc2VkX21heGJ1cnN0KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91
c2VfY3duZF9iYXNlZF9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAg
IFNDVFBDVExfQ1dORF9NQVhCVVJTVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxf
b2lkX3RvcCwgIm5hdF9mcmllbmRseSIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAg
ICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX25hdF9mcmllbmRseSksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbmF0X2ZyaWVuZGx5KSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9OQVRfRlJJRU5ETFlfREVT
Qyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJhYmNfbF92YXIiLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9M
Ml9hYmNfdmFyaWFibGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9C
QVNFX1NZU0NUTChzY3RwX0wyX2FiY192YXJpYWJsZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfQUJDX0xfVkFSX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5
c2N0bF9vaWRfdG9wLCAibWF4X2NoYWluZWRfbWJ1ZnMiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JX
LAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYnVmX3RocmVzaG9sZF9jb3Vu
dCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbWJ1Zl90aHJlc2hvbGRfY291bnQpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAg
ICBTQ1RQQ1RMX01BWF9DSEFJTkVEX01CVUZTX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5
c2N0bF9vaWRfdG9wLCAiZG9fc2N0cF9kcmFpbiIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0g
ICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RvX2RyYWluKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kb19kcmFpbiksIDAs
IHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfRE9fU0NUUF9EUkFJTl9ERVND
KTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgImhiX21heF9idXJzdCIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X2hiX21heGJ1cnN0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFT
RV9TWVNDVEwoc2N0cF9oYl9tYXhidXJzdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJ
ICAgIFNDVFBDVExfSEJfTUFYX0JVUlNUX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0
bF9vaWRfdG9wLCAiYWJvcnRfYXRfbGltaXQiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAg
ICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9hYm9ydF9pZl9vbmVfMl9vbmVfaGl0c19s
aW1pdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfYWJvcnRfaWZfb25lXzJfb25lX2hpdHNfbGltaXQpLCAwLCBzY3RwX3N5c2N0bF9oYW5k
bGVfaW50LAogCSAgICBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX0RFU0MpOwogCiAJc3lzY3RsX2Fk
ZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibWluX3Jlc2lkdWFsIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWluX3Jlc2lkdWFsKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9t
aW5fcmVzaWR1YWwpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX01J
Tl9SRVNJRFVBTF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1h
eF9yZXRyYW5fY2h1bmsiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlND
VFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfcmV0cmFuX2NodW5rKSwgMCwgc2N0cF9zeXNjdGxfaGFu
ZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tYXhfcmV0cmFuX2NodW5rKSwg
MCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5L
X0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAibG9nX2xldmVsIiwg
Q1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbG9nZ2luZ19sZXZlbCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCiAJICAgIFNDVFBDVExfTE9HR0lOR19MRVZFTF9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lk
KCZzeXNjdGxfb2lkX3RvcCwgImRlZmF1bHRfY2NfbW9kdWxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxB
R19SVywKLSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVmYXVsdF9jY19tb2R1
bGUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2RlZmF1bHRfY2NfbW9kdWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAg
U0NUUENUTF9ERUZBVUxUX0NDX01PRFVMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNj
dGxfb2lkX3RvcCwgImRlZmF1bHRfc3NfbW9kdWxlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVmYXVsdF9zc19tb2R1bGUpLCAw
LCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2Rl
ZmF1bHRfc3NfbW9kdWxlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENU
TF9ERUZBVUxUX1NTX01PRFVMRV9ERVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lk
X3RvcCwgImRlZmF1bHRfZnJhZ19pbnRlcmxlYXZlIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywK
LSAgICAgICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGVmYXVsdF9mcmFnX2ludGVybGVh
dmUpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2RlZmF1bHRfZnJhZ19pbnRlcmxlYXZlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwK
IAkgICAgU0NUUENUTF9ERUZBVUxUX0ZSQUdfSU5URVJMRUFWRV9ERVNDKTsKIAogCXN5c2N0bF9h
ZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgIm1vYmlsaXR5X2Jhc2UiLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tb2JpbGl0eV9iYXNl
KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9tb2JpbGl0eV9iYXNlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENU
TF9NT0JJTElUWV9CQVNFX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9w
LCAibW9iaWxpdHlfZmFzdGhhbmRvZmYiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9tb2JpbGl0eV9mYXN0aGFuZG9mZiksIDAsIHNj
dHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbW9iaWxp
dHlfZmFzdGhhbmRvZmYpLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RM
X01PQklMSVRZX0ZBU1RIQU5ET0ZGX0RFU0MpOwogCiAjaWYgZGVmaW5lZChTQ1RQX0xPQ0FMX1RS
QUNFX0JVRikKQEAgLTE2NjcsNTIgKzE2NzUsNTYgQEAgc3lzY3RsX3NldHVwX3NjdHAodm9pZCkK
IAkgICAgU0NUUENUTF9VRFBfVFVOTkVMSU5HX1BPUlRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29p
ZCgmc3lzY3RsX29pZF90b3AsICJlbmFibGVfc2Fja19pbW1lZGlhdGVseSIsIENUTFRZUEVfSU5U
fENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2VuYWJsZV9z
YWNrX2ltbWVkaWF0ZWx5KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBf
QkFTRV9TWVNDVEwoc2N0cF9lbmFibGVfc2Fja19pbW1lZGlhdGVseSksIDAsIHNjdHBfc3lzY3Rs
X2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9FTkFCTEVfREVTQyk7
CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3AsICJuYXRfZnJpZW5kbHlfaW5pdCIs
IENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2luaXRzX2luY2x1ZGVfbmF0X2ZyaWVuZGx5KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0c19pbmNsdWRlX25hdF9mcmllbmRs
eSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfTkFUX0ZSSUVORExZ
X0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAidnRhZ190aW1lX3dh
aXQiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVND
VEwoc2N0cF92dGFnX3RpbWVfd2FpdCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAg
ICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfdnRhZ190aW1lX3dhaXQpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1RJTUVfV0FJVF9ERVNDKTsKIAogCXN5c2N0bF9hZGRf
b2lkKCZzeXNjdGxfb2lkX3RvcCwgImJ1ZmZlcl9zcGxpdHRpbmciLCBDVExUWVBFX0lOVHxDVExG
TEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9idWZmZXJfc3BsaXR0
aW5nKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwo
c2N0cF9idWZmZXJfc3BsaXR0aW5nKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAg
U0NUUENUTF9CVUZGRVJfU1BMSVRUSU5HX0RFU0MpOwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0
bF9vaWRfdG9wLCAiaW5pdGlhbF9jd25kIiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAg
ICAgICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfaW5pdGlhbF9jd25kKSwgMCwgc2N0cF9zeXNj
dGxfaGFuZGxlX2ludCwKKwkgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9pbml0aWFsX2N3bmQp
LCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX0lOSVRJQUxfQ1dORF9E
RVNDKTsKIAogCXN5c2N0bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInJ0dHZhcl9idyIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3Rw
X3J0dHZhcl9idyksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0Vf
U1lTQ1RMKHNjdHBfcnR0dmFyX2J3KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAg
U0NUUENUTF9SVFRWQVJfQldfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90
b3AsICJydHR2YXJfcnR0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKLSAgICAgICAgICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnR0dmFyX3J0dCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9p
bnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfcnR0dmFyX3J0dCksIDAsIHNjdHBfc3lz
Y3RsX2hhbmRsZV9pbnQsCiAJICAgIFNDVFBDVExfUlRUVkFSX1JUVF9ERVNDKTsKIAogCXN5c2N0
bF9hZGRfb2lkKCZzeXNjdGxfb2lkX3RvcCwgInJ0dHZhcl9lcXJldCIsIENUTFRZUEVfSU5UfENU
TEZMQUdfUlcsCi0gICAgICAgICAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX3J0dHZhcl9lcXJl
dCksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfcnR0dmFyX2VxcmV0KSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKIAkgICAgU0NUUENU
TF9SVFRWQVJfRVFSRVRfREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lzY3RsX29pZF90b3As
ICJydHR2YXJfc3RlYWR5X3N0ZXAiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zdGVhZHlfc3RlcCksIDAsIHNjdHBfc3lzY3RsX2hh
bmRsZV9pbnQsCisJICAgICZTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfc3RlYWR5X3N0ZXApLCAwLCBz
Y3RwX3N5c2N0bF9oYW5kbGVfaW50LAogCSAgICBTQ1RQQ1RMX1JUVFZBUl9TVEVBRFlTX0RFU0Mp
OwogCiAJc3lzY3RsX2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAidXNlX2RjY2NlY24iLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF91
c2VfZGNjY19lY24pLCAwLCBzY3RwX3N5c2N0bF9oYW5kbGVfaW50LAorCSAgICAmU0NUUF9CQVNF
X1NZU0NUTChzY3RwX3VzZV9kY2NjX2VjbiksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCiAJ
ICAgIFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fREVTQyk7CiAKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJibGFja2hvbGUiLCBDVExUWVBFX0lOVHxDVExGTEFHX1JXLAotICAgICAg
ICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9ibGFja2hvbGUpLCAwLCBzY3RwX3N5c2N0bF9o
YW5kbGVfaW50LAotICAgICAgICAgICAgU0NUUENUTF9CTEFDS0hPTEVfREVTQyk7CisJICAgICZT
Q1RQX0JBU0VfU1lTQ1RMKHNjdHBfYmxhY2tob2xlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2lu
dCwKKwkgICAgU0NUUENUTF9CTEFDS0hPTEVfREVTQyk7CisKKwlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJzZW5kYWxsX2xpbWl0IiwgQ1RMVFlQRV9JTlR8Q1RMRkxBR19SVywKKwkg
ICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9zZW5kYWxsX2xpbWl0KSwgMCwgc2N0cF9zeXNjdGxf
aGFuZGxlX2ludCwKKwkgICAgU0NUUENUTF9TRU5EQUxMX0xJTUlUX0RFU0MpOwogCiAJc3lzY3Rs
X2FkZF9vaWQoJnN5c2N0bF9vaWRfdG9wLCAiZGlhZ19pbmZvX2NvZGUiLCBDVExUWVBFX0lOVHxD
VExGTEFHX1JXLAotICAgICAgICAgICAgJlNDVFBfQkFTRV9TWVNDVEwoc2N0cF9kaWFnX2luZm9f
Y29kZSksIDAsIHNjdHBfc3lzY3RsX2hhbmRsZV9pbnQsCi0gICAgICAgICAgICBTQ1RQQ1RMX0RJ
QUdfSU5GT19DT0RFX0RFU0MpOworCSAgICAmU0NUUF9CQVNFX1NZU0NUTChzY3RwX2RpYWdfaW5m
b19jb2RlKSwgMCwgc2N0cF9zeXNjdGxfaGFuZGxlX2ludCwKKwkgICAgU0NUUENUTF9ESUFHX0lO
Rk9fQ09ERV9ERVNDKTsKIAogI2lmZGVmIFNDVFBfREVCVUcKIAlzeXNjdGxfYWRkX29pZCgmc3lz
Y3RsX29pZF90b3AsICJkZWJ1ZyIsIENUTFRZUEVfSU5UfENUTEZMQUdfUlcsCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuaAkocmV2aXNpb24gMjU4NjA4KQor
KysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lz
L2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zeXNj
dGwuaCAyOTk1NDMgMjAxNi0wNS0xMiAxNjozNDo1OVogdHVleGVuICQiKTsKK19fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3N5c2N0bC5oIDM1NjM1NyAyMDIwLTAxLTA0
IDIwOjMzOjEyWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9T
WVNDVExfSF8KQEAgLTEyNSw2ICsxMjUsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogCXVpbnQz
Ml90IHNjdHBfYnVmZmVyX3NwbGl0dGluZzsKIAl1aW50MzJfdCBzY3RwX2luaXRpYWxfY3duZDsK
IAl1aW50MzJfdCBzY3RwX2JsYWNraG9sZTsKKwl1aW50MzJfdCBzY3RwX3NlbmRhbGxfbGltaXQ7
CiAjaWYgZGVmaW5lZChTQ1RQX0RFQlVHKQogCXVpbnQzMl90IHNjdHBfZGVidWdfb247CiAjZW5k
aWYKQEAgLTIzNSw3ICsyMzYsNyBAQCBzdHJ1Y3Qgc2N0cF9zeXNjdGwgewogI2RlZmluZSBTQ1RQ
Q1RMX01BWEJVUlNUX0RFRkFVTFQJU0NUUF9ERUZfTUFYX0JVUlNUCiAKIC8qIGZyX21heGJ1cnN0
OiBEZWZhdWx0IG1heCBidXJzdCBmb3Igc2N0cCBlbmRwb2ludHMgd2hlbiBmYXN0IHJldHJhbnNt
aXR0aW5nICovCi0jZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9ERVNDCQkiRGVmYXVsdCBmciBt
YXggYnVyc3QgZm9yIHNjdHAgZW5kcG9pbnRzIgorI2RlZmluZSBTQ1RQQ1RMX0ZSTUFYQlVSU1Rf
REVTQwkJIkRlZmF1bHQgbWF4IGJ1cnN0IGZvciBTQ1RQIGVuZHBvaW50cyB3aGVuIGZhc3QgcmV0
cmFuc21pdHRpbmciCiAjZGVmaW5lIFNDVFBDVExfRlJNQVhCVVJTVF9NSU4JCTAKICNkZWZpbmUg
U0NUUENUTF9GUk1BWEJVUlNUX01BWAkJMHhGRkZGRkZGRgogI2RlZmluZSBTQ1RQQ1RMX0ZSTUFY
QlVSU1RfREVGQVVMVAlTQ1RQX0RFRl9GUk1BWF9CVVJTVApAQCAtMjY2LDcgKzI2Nyw3IEBAIHN0
cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFNDVFBDVExfTUlOX1NQTElUX1BPSU5UX0RFRkFV
TFQJU0NUUF9ERUZBVUxUX1NQTElUX1BPSU5UX01JTgogCiAvKiBjaHVua3NjYWxlOiBUdW5hYmxl
IGZvciBTY2FsaW5nIG9mIG51bWJlciBvZiBjaHVua3MgYW5kIG1lc3NhZ2VzICovCi0jZGVmaW5l
IFNDVFBDVExfQ0hVTktTQ0FMRV9ERVNDCQkiVHVuYWJsZSBmb3IgU2NhbGluZyBvZiBudW1iZXIg
b2YgY2h1bmtzIGFuZCBtZXNzYWdlcyIKKyNkZWZpbmUgU0NUUENUTF9DSFVOS1NDQUxFX0RFU0MJ
CSJUdW5hYmxlIGZvciBzY2FsaW5nIG9mIG51bWJlciBvZiBjaHVua3MgYW5kIG1lc3NhZ2VzIgog
I2RlZmluZSBTQ1RQQ1RMX0NIVU5LU0NBTEVfTUlOCQkxCiAjZGVmaW5lIFNDVFBDVExfQ0hVTktT
Q0FMRV9NQVgJCTB4RkZGRkZGRkYKICNkZWZpbmUgU0NUUENUTF9DSFVOS1NDQUxFX0RFRkFVTFQJ
U0NUUF9DSFVOS1FVRVVFX1NDQUxFCkBAIC0zNTAsNyArMzUxLDcgQEAgc3RydWN0IHNjdHBfc3lz
Y3RsIHsKICNkZWZpbmUgU0NUUENUTF9WQUxJRF9DT09LSUVfTElGRV9ERUZBVUxUCVNDVFBfREVG
QVVMVF9DT09LSUVfTElGRQogCiAvKiBpbml0X3J0eF9tYXg6IERlZmF1bHQgbWF4aW11bSBudW1i
ZXIgb2YgcmV0cmFuc21pc3Npb24gZm9yIElOSVQgY2h1bmtzICovCi0jZGVmaW5lIFNDVFBDVExf
SU5JVF9SVFhfTUFYX0RFU0MJIkRlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgcmV0cmFuc21pc3Np
b24gZm9yIElOSVQgY2h1bmtzIgorI2RlZmluZSBTQ1RQQ1RMX0lOSVRfUlRYX01BWF9ERVNDCSJE
ZWZhdWx0IG1heGltdW0gbnVtYmVyIG9mIHJldHJhbnNtaXNzaW9ucyBmb3IgSU5JVCBjaHVua3Mi
CiAjZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfSU5J
VF9SVFhfTUFYX01BWAkweEZGRkZGRkZGCiAjZGVmaW5lIFNDVFBDVExfSU5JVF9SVFhfTUFYX0RF
RkFVTFQJU0NUUF9ERUZfTUFYX0lOSVQKQEAgLTQwMyw4ICs0MDQsOCBAQCBzdHJ1Y3Qgc2N0cF9z
eXNjdGwgewogI2RlZmluZSBTQ1RQQ1RMX0NNVF9VU0VfREFDX01BWAkJMQogI2RlZmluZSBTQ1RQ
Q1RMX0NNVF9VU0VfREFDX0RFRkFVTFQgICAgCTAKIAotLyogY3duZF9tYXhidXJzdDogVXNlIGEg
Q1dORCBhZGp1c3RpbmcgbWF4YnVyc3QgKi8KLSNkZWZpbmUgU0NUUENUTF9DV05EX01BWEJVUlNU
X0RFU0MJIlVzZSBhIENXTkQgYWRqdXN0aW5nIG1heGJ1cnN0IgorLyogY3duZF9tYXhidXJzdDog
VXNlIGEgQ1dORCBhZGp1c3RpbmcgdG8gaW1wbGVtZW50IG1heGJ1cnN0ICovCisjZGVmaW5lIFND
VFBDVExfQ1dORF9NQVhCVVJTVF9ERVNDCSJBZGp1c3QgY29uZ2VzdGlvbiBjb250cm9sIHdpbmRv
dyB0byBsaW1pdCBtYXhpbXVtIGJ1cnN0IHdoZW4gc2VuZGluZyIKICNkZWZpbmUgU0NUUENUTF9D
V05EX01BWEJVUlNUX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfQ1dORF9NQVhCVVJTVF9NQVgJMQog
I2RlZmluZSBTQ1RQQ1RMX0NXTkRfTUFYQlVSU1RfREVGQVVMVAkxCkBAIC00NDAsNyArNDQxLDcg
QEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNkZWZpbmUgU0NUUENUTF9IQl9NQVhfQlVSU1RfREVG
QVVMVAlTQ1RQX0RFRl9IQk1BWF9CVVJTVAogCiAvKiBhYm9ydF9hdF9saW1pdDogV2hlbiBvbmUt
Mi1vbmUgaGl0cyBxbGltaXQgYWJvcnQgKi8KLSNkZWZpbmUgU0NUUENUTF9BQk9SVF9BVF9MSU1J
VF9ERVNDCSJXaGVuIG9uZS0yLW9uZSBoaXRzIHFsaW1pdCBhYm9ydCIKKyNkZWZpbmUgU0NUUENU
TF9BQk9SVF9BVF9MSU1JVF9ERVNDCSJBYm9ydCB3aGVuIG9uZS10by1vbmUgaGl0cyBxbGltaXQi
CiAjZGVmaW5lIFNDVFBDVExfQUJPUlRfQVRfTElNSVRfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9B
Qk9SVF9BVF9MSU1JVF9NQVgJMQogI2RlZmluZSBTQ1RQQ1RMX0FCT1JUX0FUX0xJTUlUX0RFRkFV
TFQJMApAQCAtNDUyLDcgKzQ1Myw3IEBAIHN0cnVjdCBzY3RwX3N5c2N0bCB7CiAjZGVmaW5lIFND
VFBDVExfTUlOX1JFU0lEVUFMX0RFRkFVTFQJMTQ1MgogCiAvKiBtYXhfcmV0cmFuX2NodW5rOiBt
YXggY2h1bmsgcmV0cmFuc21pc3Npb25zICovCi0jZGVmaW5lIFNDVFBDVExfTUFYX1JFVFJBTl9D
SFVOS19ERVNDCSJNYXhpbXVtIHRpbWVzIGFuIHVubHVja3kgY2h1bmsgY2FuIGJlIHJldHJhbidk
IGJlZm9yZSBhc3NvYyBhYm9ydCIKKyNkZWZpbmUgU0NUUENUTF9NQVhfUkVUUkFOX0NIVU5LX0RF
U0MJIk1heGltdW0gdGltZXMgYW4gdW5sdWNreSBjaHVuayBjYW4gYmUgcmV0cmFuc21pdHRlZCBi
ZWZvcmUgYXNzb2MgYWJvcnQiCiAjZGVmaW5lIFNDVFBDVExfTUFYX1JFVFJBTl9DSFVOS19NSU4J
MAogI2RlZmluZSBTQ1RQQ1RMX01BWF9SRVRSQU5fQ0hVTktfTUFYCTY1NTM1CiAjZGVmaW5lIFND
VFBDVExfTUFYX1JFVFJBTl9DSFVOS19ERUZBVUxUCTMwCkBAIC01MDQsNjcgKzUwNSw3MyBAQCBz
dHJ1Y3Qgc2N0cF9zeXNjdGwgewogI2VuZGlmCiAKIC8qIEVuYWJsZSBzZW5kaW5nIG9mIHRoZSBT
QUNLLUlNTUVESUFURUxZIGJpdCAqLwotI2RlZmluZSBTQ1RQQ1RMX1NBQ0tfSU1NRURJQVRFTFlf
RU5BQkxFX0RFU0MJIkVuYWJsZSBzZW5kaW5nIG9mIHRoZSBTQUNLLUlNTUVESUFURUxZLWJpdC4i
CisjZGVmaW5lIFNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9FTkFCTEVfREVTQwkiRW5hYmxlIHNl
bmRpbmcgb2YgdGhlIFNBQ0stSU1NRURJQVRFTFktYml0IgogI2RlZmluZSBTQ1RQQ1RMX1NBQ0tf
SU1NRURJQVRFTFlfRU5BQkxFX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfU0FDS19JTU1FRElBVEVM
WV9FTkFCTEVfTUFYCTEKICNkZWZpbmUgU0NUUENUTF9TQUNLX0lNTUVESUFURUxZX0VOQUJMRV9E
RUZBVUxUCVNDVFBDVExfU0FDS19JTU1FRElBVEVMWV9FTkFCTEVfTUFYCiAKIC8qIEVuYWJsZSBz
ZW5kaW5nIG9mIHRoZSBOQVQtRlJJRU5ETFkgbWVzc2FnZSAqLwotI2RlZmluZSBTQ1RQQ1RMX05B
VF9GUklFTkRMWV9JTklUU19ERVNDCSJFbmFibGUgc2VuZGluZyBvZiB0aGUgbmF0LWZyaWVuZGx5
IFNDVFAgb3B0aW9uIG9uIElOSVRzLiIKKyNkZWZpbmUgU0NUUENUTF9OQVRfRlJJRU5ETFlfSU5J
VFNfREVTQwkiRW5hYmxlIHNlbmRpbmcgb2YgdGhlIG5hdC1mcmllbmRseSBTQ1RQIG9wdGlvbiBv
biBJTklUcyIKICNkZWZpbmUgU0NUUENUTF9OQVRfRlJJRU5ETFlfSU5JVFNfTUlOCTAKICNkZWZp
bmUgU0NUUENUTF9OQVRfRlJJRU5ETFlfSU5JVFNfTUFYCTEKICNkZWZpbmUgU0NUUENUTF9OQVRf
RlJJRU5ETFlfSU5JVFNfREVGQVVMVAlTQ1RQQ1RMX05BVF9GUklFTkRMWV9JTklUU19NSU4KIAog
LyogVnRhZyB0aW1lIHdhaXQgaW4gc2Vjb25kcyAqLwotI2RlZmluZSBTQ1RQQ1RMX1RJTUVfV0FJ
VF9ERVNDCSJWdGFnIHRpbWUgd2FpdCB0aW1lIGluIHNlY29uZHMsIDAgZGlzYWJsZXMgaXQuIgor
I2RlZmluZSBTQ1RQQ1RMX1RJTUVfV0FJVF9ERVNDCSJWdGFnIHRpbWUgd2FpdCB0aW1lIGluIHNl
Y29uZHMsIDAgZGlzYWJsZXMgaXQiCiAjZGVmaW5lIFNDVFBDVExfVElNRV9XQUlUX01JTgkwCiAj
ZGVmaW5lIFNDVFBDVExfVElNRV9XQUlUX01BWAkweGZmZmZmZmZmCiAjZGVmaW5lIFNDVFBDVExf
VElNRV9XQUlUX0RFRkFVTFQJU0NUUF9USU1FX1dBSVQKIAogLyogRW5hYmxlIFNlbmQvUmVjZWl2
ZSBidWZmZXIgc3BsaXR0aW5nICovCi0jZGVmaW5lIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19E
RVNDCQkiRW5hYmxlIHNlbmQvcmVjZWl2ZSBidWZmZXIgc3BsaXR0aW5nLiIKKyNkZWZpbmUgU0NU
UENUTF9CVUZGRVJfU1BMSVRUSU5HX0RFU0MJCSJFbmFibGUgc2VuZC9yZWNlaXZlIGJ1ZmZlciBz
cGxpdHRpbmciCiAjZGVmaW5lIFNDVFBDVExfQlVGRkVSX1NQTElUVElOR19NSU4JCTAKICNkZWZp
bmUgU0NUUENUTF9CVUZGRVJfU1BMSVRUSU5HX01BWAkJMHgzCiAjZGVmaW5lIFNDVFBDVExfQlVG
RkVSX1NQTElUVElOR19ERUZBVUxUCVNDVFBDVExfQlVGRkVSX1NQTElUVElOR19NSU4KIAotLyog
SW5pdGlhbCBjb25nZXN0aW9uIHdpbmRvdyBpbiBNVFUgKi8KLSNkZWZpbmUgU0NUUENUTF9JTklU
SUFMX0NXTkRfREVTQwkiSW5pdGlhbCBjb25nZXN0aW9uIHdpbmRvdyBpbiBNVFVzIgorLyogSW5p
dGlhbCBjb25nZXN0aW9uIHdpbmRvdyBpbiBNVFVzICovCisjZGVmaW5lIFNDVFBDVExfSU5JVElB
TF9DV05EX0RFU0MJIkRlZmluZXMgdGhlIGluaXRpYWwgY29uZ2VzdGlvbiB3aW5kb3cgc2l6ZSBp
biBNVFVzIgogI2RlZmluZSBTQ1RQQ1RMX0lOSVRJQUxfQ1dORF9NSU4JMAogI2RlZmluZSBTQ1RQ
Q1RMX0lOSVRJQUxfQ1dORF9NQVgJMHhmZmZmZmZmZgogI2RlZmluZSBTQ1RQQ1RMX0lOSVRJQUxf
Q1dORF9ERUZBVUxUCTMKIAogLyogcnR0dmFyIHNtb290aCBhdmcgZm9yIGJ3IGNhbGMgICovCi0j
ZGVmaW5lIFNDVFBDVExfUlRUVkFSX0JXX0RFU0MJIlNoaWZ0IGFtb3VudCBmb3IgYncgc21vb3Ro
aW5nIG9uIHJ0dCBjYWxjIgorI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19ERVNDCSJTaGlmdCBh
bW91bnQgRENDQyB1c2VzIGZvciBidyBzbW9vdGhpbmcgb24gcnR0IGNhbGMiCiAjZGVmaW5lIFND
VFBDVExfUlRUVkFSX0JXX01JTgkwCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX0JXX01BWAkzMgog
I2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9CV19ERUZBVUxUCTQKIAogLyogcnR0dmFyIHNtb290aCBh
dmcgZm9yIGJ3IGNhbGMgICovCi0jZGVmaW5lIFNDVFBDVExfUlRUVkFSX1JUVF9ERVNDCSJTaGlm
dCBhbW91bnQgZm9yIHJ0dCBzbW9vdGhpbmcgb24gcnR0IGNhbGMiCisjZGVmaW5lIFNDVFBDVExf
UlRUVkFSX1JUVF9ERVNDCSJTaGlmdCBhbW91bnQgRENDQyB1c2VzIGZvciBydHQgc21vb3RoaW5n
IG9uIHJ0dCBjYWxjIgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9SVFRfTUlOCTAKICNkZWZpbmUg
U0NUUENUTF9SVFRWQVJfUlRUX01BWAkzMgogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9SVFRfREVG
QVVMVAk1CiAKLSNkZWZpbmUgU0NUUENUTF9SVFRWQVJfRVFSRVRfREVTQwkiV2hhdCB0byByZXR1
cm4gd2hlbiBydHQgYW5kIGJ3IGFyZSB1bmNoYW5nZWQiCisjZGVmaW5lIFNDVFBDVExfUlRUVkFS
X0VRUkVUX0RFU0MJIldoZXRoZXIgRENDQyBpbmNyZWFzZXMgY3duZCB3aGVuIHRoZSBydHQgYW5k
IGJ3IGFyZSB1bmNoYW5nZWQiCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFSX0VRUkVUX01JTgkwCiAj
ZGVmaW5lIFNDVFBDVExfUlRUVkFSX0VRUkVUX01BWAkxCiAjZGVmaW5lIFNDVFBDVExfUlRUVkFS
X0VRUkVUX0RFRkFVTFQJMAogCi0jZGVmaW5lIFNDVFBDVExfUlRUVkFSX1NURUFEWVNfREVTQwki
SG93IG1hbnkgdGhlIHNhbWVzIGl0IHRha2VzIHRvIHRyeSBzdGVwIGRvd24gb2YgY3duZCIKKyNk
ZWZpbmUgU0NUUENUTF9SVFRWQVJfU1RFQURZU19ERVNDCSJOdW1iZXIgb2YgaWRlbnRpY2FsIGJ3
IG1lYXN1cmVtZW50cyBEQ0NDIHRha2VzIHRvIHRyeSBzdGVwIGRvd24gb2YgY3duZCIKICNkZWZp
bmUgU0NUUENUTF9SVFRWQVJfU1RFQURZU19NSU4JMAogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9T
VEVBRFlTX01BWAkweEZGRkYKICNkZWZpbmUgU0NUUENUTF9SVFRWQVJfU1RFQURZU19ERUZBVUxU
CTIwIC8qIDAgbWVhbnMgZGlzYWJsZSBmZWF0dXJlICovCiAKLSNkZWZpbmUgU0NUUENUTF9SVFRW
QVJfRENDQ0VDTl9ERVNDCSJFbmFibGUgZm9yIFJUQ0MgQ0MgZGF0YWNlbnRlciBFQ04iCisjZGVm
aW5lIFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fREVTQwkiRW5hYmxlIEVDTiBmb3IgRENDQy4iCiAj
ZGVmaW5lIFNDVFBDVExfUlRUVkFSX0RDQ0NFQ05fTUlOCTAKICNkZWZpbmUgU0NUUENUTF9SVFRW
QVJfRENDQ0VDTl9NQVgJMQogI2RlZmluZSBTQ1RQQ1RMX1JUVFZBUl9EQ0NDRUNOX0RFRkFVTFQJ
MSAvKiAwIG1lYW5zIGRpc2FibGUgZmVhdHVyZSAqLwogCi0jZGVmaW5lIFNDVFBDVExfQkxBQ0tI
T0xFX0RFU0MJCSJFbmFibGUgU0NUUCBibGFja2hvbGluZy4gU2VlIGJsYWNraG9sZSg0KSBmb3Ig
bW9yZSBkZXRhaWxzLiIKKyNkZWZpbmUgU0NUUENUTF9CTEFDS0hPTEVfREVTQwkJIkVuYWJsZSBT
Q1RQIGJsYWNraG9saW5nLCBzZWUgYmxhY2tob2xlKDQpIGZvciBtb3JlIGRldGFpbHMiCiAjZGVm
aW5lIFNDVFBDVExfQkxBQ0tIT0xFX01JTgkJMAogI2RlZmluZSBTQ1RQQ1RMX0JMQUNLSE9MRV9N
QVgJCTIKICNkZWZpbmUgU0NUUENUTF9CTEFDS0hPTEVfREVGQVVMVAlTQ1RQQ1RMX0JMQUNLSE9M
RV9NSU4KIAorLyogc2VuZGFsbF9saW1pdDogTWF4aW11bSBtZXNzYWdlIHdpdGggU0NUUF9TRU5E
QUxMICovCisjZGVmaW5lIFNDVFBDVExfU0VOREFMTF9MSU1JVF9ERVNDCSJNYXhpbXVtIHNpemUg
b2YgYSBtZXNzYWdlIHNlbmQgd2l0aCBTQ1RQX1NFTkRBTEwiCisjZGVmaW5lIFNDVFBDVExfU0VO
REFMTF9MSU1JVF9NSU4JMAorI2RlZmluZSBTQ1RQQ1RMX1NFTkRBTExfTElNSVRfTUFYCTB4RkZG
RkZGRkYKKyNkZWZpbmUgU0NUUENUTF9TRU5EQUxMX0xJTUlUX0RFRkFVTFQJMTQzMgorCiAjZGVm
aW5lIFNDVFBDVExfRElBR19JTkZPX0NPREVfREVTQwkiRGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBl
cnJvciBjYXVzZSBjb2RlIgogI2RlZmluZSBTQ1RQQ1RMX0RJQUdfSU5GT19DT0RFX01JTgkwCiAj
ZGVmaW5lIFNDVFBDVExfRElBR19JTkZPX0NPREVfTUFYCTY1NTM1CkBAIC01OTEsNyArNTk4LDcg
QEAgc3RydWN0IHNjdHBfc3lzY3RsIHsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCi0jZGVmaW5lIFNDVFBDVExfT1VUUFVU
X1VOTE9DS0VEX0RFU0MJIlVubG9jayBzb2NrZXQgd2hlbiBzZW5kaW5nIHBhY2tldHMgZG93biB0
byBJUC4iCisjZGVmaW5lIFNDVFBDVExfT1VUUFVUX1VOTE9DS0VEX0RFU0MJIlVubG9jayBzb2Nr
ZXQgd2hlbiBzZW5kaW5nIHBhY2tldHMgZG93biB0byBJUCIKICNkZWZpbmUgU0NUUENUTF9PVVRQ
VVRfVU5MT0NLRURfTUlOCTAKICNkZWZpbmUgU0NUUENUTF9PVVRQVVRfVU5MT0NLRURfTUFYCTEK
ICNkZWZpbmUgU0NUUENUTF9PVVRQVVRfVU5MT0NLRURfREVGQVVMVAlTQ1RQQ1RMX09VVFBVVF9V
TkxPQ0tFRF9NSU4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVy
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdGltZXIu
YwkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
dGltZXIuYwkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaWZkZWYgX19GcmVl
QlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9z
eXMvbmV0aW5ldC9zY3RwX3RpbWVyLmMgMzE3NTkyIDIwMTctMDQtMjkgMDk6NTc6MjdaIHR1ZXhl
biAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF90aW1lci5j
IDMzODEzNCAyMDE4LTA4LTIxIDEzOjI1OjMyWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNkZWZp
bmUgX0lQX1ZITApAQCAtOTY3LDcgKzk2Nyw3IEBAIHNjdHBfdDNyeHRfdGltZXIoc3RydWN0IHNj
dHBfaW5wY2IgKmlucCwKIAkgKiBTcGVjaWFsIGNhc2UgZm9yIGNvb2tpZS1lY2hvJ2VkIGNhc2Us
IHdlIGRvbid0IGRvIG91dHB1dCBidXQgbXVzdAogCSAqIGF3YWl0IHRoZSBDT09LSUUtQUNLIGJl
Zm9yZSByZXRyYW5zbWlzc2lvbgogCSAqLwotCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNv
YykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CisJaWYgKFNDVFBfR0VUX1NUQVRFKHN0
Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgewogCQkvKgogCQkgKiBIZXJlIHdlIGp1
c3QgcmVzZXQgdGhlIHRpbWVyIGFuZCBzdGFydCBhZ2FpbiBzaW5jZSB3ZQogCQkgKiBoYXZlIG5v
dCBlc3RhYmxpc2hlZCB0aGUgYXNvYwpAQCAtMTAwOSw3ICsxMDA5LDcgQEAgc2N0cF90MWluaXRf
dGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKmlucAogCQlzY3RwX3NlbmRfaW5pdGlhdGUoaW5wLCBz
dGNiLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQlyZXR1cm4gKDApOwogCX0KLQlpZiAoU0NUUF9H
RVRfU1RBVEUoKCZzdGNiLT5hc29jKSkgIT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCWlm
IChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCXJl
dHVybiAoMCk7CiAJfQogCWlmIChzY3RwX3RocmVzaG9sZF9tYW5hZ2VtZW50KGlucCwgc3RjYiwg
bmV0LApAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgc2N0cF9jb29raWVfdGltZXIoc3RydWN0IHNjdHBf
aW5wY2IgKmlucAogCQl9CiAJfQogCWlmIChjb29raWUgPT0gTlVMTCkgewotCQlpZiAoU0NUUF9H
RVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCkgeworCQlp
ZiAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSB7CiAJ
CQkvKiBGT09CQVIhICovCiAJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0xMDY5LDcgKzEw
NjksNyBAQCBzY3RwX2Nvb2tpZV90aW1lcihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wCiAjaWZkZWYg
SU5WQVJJQU5UUwogCQkJcGFuaWMoIkNvb2tpZSB0aW1lciBleHBpcmVzIGluIHdyb25nIHN0YXRl
PyIpOwogI2Vsc2UKLQkJCVNDVFBfUFJJTlRGKCJTdHJhbmdlIGluIHN0YXRlICVkIG5vdCBjb29r
aWUtZWNob2VkIHlldCBjLWUgdGltZXIgZXhwaXJlcz9cbiIsIFNDVFBfR0VUX1NUQVRFKCZzdGNi
LT5hc29jKSk7CisJCQlTQ1RQX1BSSU5URigiU3RyYW5nZSBpbiBzdGF0ZSAlZCBub3QgY29va2ll
LWVjaG9lZCB5ZXQgYy1lIHRpbWVyIGV4cGlyZXM/XG4iLCBTQ1RQX0dFVF9TVEFURShzdGNiKSk7
CiAJCQlyZXR1cm4gKDApOwogI2VuZGlmCiAJCX0KQEAgLTE1NzcsMTYgKzE1NzcsMTUgQEAgc2N0
cF9hdXRvY2xvc2VfdGltZXIoc3RydWN0IHNjdHBfaW5wY2IgKgogCQkJCSAqIHRoZXJlIGlzIG5v
dGhpbmcgcXVldWVkIHRvIHNlbmQsIHNvIEknbQogCQkJCSAqIGRvbmUuLi4KIAkJCQkgKi8KLQkJ
CQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSB7
CisJCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFNDVFBfU1RBVEVfU0hVVERPV05fU0VO
VCkgewogCQkJCQkvKiBvbmx5IHNlbmQgU0hVVERPV04gMXN0IHRpbWUgdGhydSAqLwogCQkJCQlz
dHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwogCi0JCQkJCWlmICgoU0NUUF9HRVRfU1RBVEUoYXNvYykg
PT0gU0NUUF9TVEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09
IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJCWlmICgoU0NUUF9HRVRfU1RB
VEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB8fAorCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCQkJCQlTQ1RQX1NU
QVRfREVDUl9HQVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJCX0KLQkJCQkJU0NUUF9TRVRf
U1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJCQkJU0NUUF9DTEVBUl9T
VUJTVEFURShhc29jLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJCQlTQ1RQX1NF
VF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpOwogCQkJCQlzY3RwX3N0b3Bf
dGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCQkJaWYgKHN0Y2ItPmFzb2MuYWx0ZXJuYXRl
KSB7CiAJCQkJCQluZXRwID0gc3RjYi0+YXNvYy5hbHRlcm5hdGU7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF91aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF91aW8uaAkocmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdWlvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0
LDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91aW8uaCAzMjY2NzIgMjAxNy0x
Mi0wNyAyMjoxOTowOFogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMv
bmV0aW5ldC9zY3RwX3Vpby5oIDMzNjUxMSAyMDE4LTA3LTE5IDIwOjE2OjMzWiB0dWV4ZW4gJCIp
OwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9VSU9fSF8KQEAgLTExMzYsMjQgKzEx
MzYsMTQgQEAgc3RydWN0IHNjdHBzdGF0IHsKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfQ09VTlRF
UjY0KF94KSBTQ1RQX1NUQVRfREVDUihfeCkKICNkZWZpbmUgU0NUUF9TVEFUX0RFQ1JfR0FVR0Uz
MihfeCkgU0NUUF9TVEFUX0RFQ1IoX3gpCiAKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB1
bmlvbiBzY3RwX3NvY2tzdG9yZSB7Ci0jaWYgZGVmaW5lZChJTkVUKQogCXN0cnVjdCBzb2NrYWRk
cl9pbiBzaW47Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKElORVQ2KQogCXN0cnVjdCBzb2NrYWRkcl9p
bjYgc2luNjsKLSNlbmRpZgorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAlzdHJ1Y3Qgc29j
a2FkZHJfY29ubiBzY29ubjsKKyNlbmRpZgogCXN0cnVjdCBzb2NrYWRkciBzYTsKIH07Ci0jZWxz
ZQotdW5pb24gc2N0cF9zb2Nrc3RvcmUgewotCXN0cnVjdCBzb2NrYWRkcl9pbiBzaW47Ci0Jc3Ry
dWN0IHNvY2thZGRyX2luNiBzaW42OwotCXN0cnVjdCBzb2NrYWRkciBzYTsKLX07Ci0jZW5kaWYK
IAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMjEwLDEwICsx
MjAwLDEwIEBAIHN0cnVjdCB4c2N0cF9pbnBjYiB7CiAJdWludDE2X3QgcWxlbjsKIAl1aW50MTZf
dCBtYXhxbGVuOwogI2VuZGlmCi0jaWYgZGVmaW5lZChfX1dpbmRvd3NfXykKLQl1aW50MTZfdCBw
YWRkaW5nOwotI2VuZGlmCi0jaWYgIShkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNE
X3ZlcnNpb24gPCAxMDAxNTE3KSkKKwl1aW50MTZfdCBfX3NwYXJlMTY7CisjaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKKwlrdmFkZHJfdCBzb2NrZXQ7CisjZWxzZQogCXZvaWQgKnNvY2tldDsKICNl
bmRpZgogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID4gMTEw
MDA5NgpAQCAtMTIyNSwxOSArMTIxNSw3IEBAIHN0cnVjdCB4c2N0cF9pbnBjYiB7CiAjZWxpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX3ZlcnNpb24gPCAxMDAxNTE3KQogCXVp
bnQzMl90IGV4dHJhX3BhZGRpbmdbMzFdOyAvKiBmdXR1cmUgKi8KICNlbHNlCi0jaWYgZGVmaW5l
ZChfX0xQNjRfXykKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lv
biA+IDExMDAwOTYKLQl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzI3XTsgLyogZnV0dXJlICovCi0j
ZWxzZQotCXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMjldOyAvKiBmdXR1cmUgKi8KLSNlbmRpZgot
I2Vsc2UKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDEx
MDAwOTYKLQl1aW50MzJfdCBleHRyYV9wYWRkaW5nWzI4XTsgLyogZnV0dXJlICovCi0jZWxzZQot
CXVpbnQzMl90IGV4dHJhX3BhZGRpbmdbMzBdOyAvKiBmdXR1cmUgKi8KLSNlbmRpZgotI2VuZGlm
CisJdWludDMyX3QgZXh0cmFfcGFkZGluZ1syNl07IC8qIGZ1dHVyZSAqLwogI2VuZGlmCiB9Owog
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91c2Vyc3BhY2UuYwko
cmV2aXNpb24gMjU4NjA4KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdXNl
cnNwYWNlLmMJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDEwIEBACiAjaW5jbHVkZSA8bmV0
aW5ldC9zY3RwX3BjYi5oPgogI2luY2x1ZGUgPHN5cy90aW1lYi5oPgogI2luY2x1ZGUgPGlwaGxw
YXBpLmg+CisjaWYgIWRlZmluZWQoX19NSU5HVzMyX18pCiAjcHJhZ21hIGNvbW1lbnQobGliLCAi
SVBITFBBUEkubGliIikKICNlbmRpZgorI2VuZGlmCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29z
X3VzZXJzcGFjZS5oPgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRnJlZUJTRCkKICNpbmNs
dWRlIDxwdGhyZWFkX25wLmg+CkBAIC00Niw2ICs0OCwxMCBAQAogLyogQWRhcHRlciB0byB0cmFu
c2xhdGUgVW5peCB0aHJlYWQgc3RhcnQgcm91dGluZXMgdG8gV2luZG93cyB0aHJlYWQgc3RhcnQK
ICAqIHJvdXRpbmVzLgogICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3BlZGFu
dGljIgorI2VuZGlmCiBzdGF0aWMgRFdPUkQgV0lOQVBJCiBzY3RwX2NyZWF0ZV90aHJlYWRfYWRh
cHRlcih2b2lkICphcmcpIHsKIAlzdGFydF9yb3V0aW5lX3Qgc3RhcnRfcm91dGluZSA9IChzdGFy
dF9yb3V0aW5lX3QpYXJnOwpAQCAtNjEsNiArNjcsMTEgQEAgc2N0cF91c2Vyc3BhY2VfdGhyZWFk
X2NyZWF0ZSh1c2VybGFuZF90aAogCQlyZXR1cm4gR2V0TGFzdEVycm9yKCk7CiAJcmV0dXJuIDA7
CiB9CisKKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBw
b3AKKyNlbmRpZgorCiAjZWxzZQogaW50CiBzY3RwX3VzZXJzcGFjZV90aHJlYWRfY3JlYXRlKHVz
ZXJsYW5kX3RocmVhZF90ICp0aHJlYWQsIHN0YXJ0X3JvdXRpbmVfdCBzdGFydF9yb3V0aW5lKQpA
QCAtMTE1LDYgKzEyNiwxOSBAQCBzY3RwX3VzZXJzcGFjZV9nZXRfbXR1X2Zyb21faWZuKHVpbnQz
Ml90CiB9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfRGFyd2luKSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0RyYWdvbkZseSkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9v
c19MaW51eCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19OYUNsKSB8fCBkZWZpbmVkKF9fVXNl
cnNwYWNlX29zX05ldEJTRCkgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBk
ZWZpbmVkKF9fVXNlcnNwYWNlX29zX0Z1Y2hzaWEpCitpbnQKK3RpbWluZ3NhZmVfYmNtcChjb25z
dCB2b2lkICpiMSwgY29uc3Qgdm9pZCAqYjIsIHNpemVfdCBuKQoreworCWNvbnN0IHVuc2lnbmVk
IGNoYXIgKnAxID0gYjEsICpwMiA9IGIyOworCWludCByZXQgPSAwOworCisJZm9yICg7IG4gPiAw
OyBuLS0pCisJCXJldCB8PSAqcDErKyBeICpwMisrOworCXJldHVybiAocmV0ICE9IDApOworfQor
I2VuZGlmCisKICNpZmRlZiBfV0lOMzIKIGludAogc2N0cF91c2Vyc3BhY2VfZ2V0X210dV9mcm9t
X2lmbih1aW50MzJfdCBpZl9pbmRleCwgaW50IGFmKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfdXNycmVxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfdXNycmVxLmMJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzcnJlcS5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICsz
NCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdXNycmVxLmMgMzM0NzI1IDIw
MTgtMDYtMDYgMTk6Mjc6MDZaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF91c3JyZXEuYyAzNTgwODMgMjAyMC0wMi0xOCAyMToyNToxN1ogdHVl
eGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC02MSw2
ICs2MSw5IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3QKICNlbHNl
CiAjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KICNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisjaW5jbHVkZSA8c3lzL2V2ZW50aGFuZGxlci5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVk
KEhBVkVfU0NUUF9QRUVMT0ZGX1NPQ0tPUFQpCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BlZWxv
ZmYuaD4KQEAgLTc3LDcgKzgwLDcgQEAgdm9pZAogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykK
IHNjdHBfaW5pdCh1aW50MTZfdCBwb3J0LAogICAgICAgICAgIGludCAoKmNvbm5fb3V0cHV0KSh2
b2lkICphZGRyLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgdG9zLCB1aW50
OF90IHNldF9kZiksCi0gICAgICAgICAgdm9pZCAoKmRlYnVnX3ByaW50ZikoY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pKQorICAgICAgICAgIHZvaWQgKCpkZWJ1Z19wcmludGYpKGNvbnN0IGNoYXIg
KmZvcm1hdCwgLi4uKSwgaW50IHN0YXJ0X3RocmVhZHMpCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgKCFkZWZpbmVkKEFQUExFX0xFT1BBUkQpICYmICFkZWZpbmVkKEFQUExFX1NOT1dMRU9Q
QVJEKSAmJiFkZWZpbmVkKEFQUExFX0xJT04pICYmICFkZWZpbmVkKEFQUExFX01PVU5UQUlOTElP
TikpCiBzY3RwX2luaXQoc3RydWN0IHByb3Rvc3cgKnBwIFNDVFBfVU5VU0VELCBzdHJ1Y3QgZG9t
YWluICpkcCBTQ1RQX1VOVVNFRCkKICNlbHNlCkBAIC05MiwxMSArOTUsMTkgQEAgc2N0cF9pbml0
KHZvaWQpCiAJc2N0cF9pbml0X3N5c2N0bHMoKTsKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CiAjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKSB8fCBkZWZpbmVkKF9fVXNlcnNw
YWNlX29zX05hQ2wpCisjaWZkZWYgRlVaWklOR19CVUlMRF9NT0RFX1VOU0FGRV9GT1JfUFJPRFVD
VElPTgorCXNyYW5kKDApOworI2Vsc2UKIAlzcmFuZCgodW5zaWduZWQgaW50KXRpbWUoTlVMTCkp
OworI2VuZGlmCisjZWxzZQorI2lmZGVmIEZVWlpJTkdfQlVJTERfTU9ERV9VTlNBRkVfRk9SX1BS
T0RVQ1RJT04KKwlzcmFuZG9tKDApOwogI2Vsc2UKIAlzcmFuZG9tKGdldHBpZCgpKTsgLyogc28g
aW5wLT5zY3RwX2VwLnJhbmRvbV9udW1iZXJzIGFyZSB0cnVseSByYW5kb20uLi4gKi8KICNlbmRp
ZgogI2VuZGlmCisjZW5kaWYKICNpZiBkZWZpbmVkKF9fUGFuZGFfXykKIAlzY3RwX3NlbmRzcGFj
ZSA9IFNCX01BWDsKIAlzY3RwX3JlY3ZzcGFjZSA9IFNCX01BWDsKQEAgLTE1MCwxMCArMTYxLDE2
IEBAIHNjdHBfaW5pdCh2b2lkKQogCVNDVFBfQkFTRV9WQVIoY29ubl9vdXRwdXQpID0gY29ubl9v
dXRwdXQ7CiAJU0NUUF9CQVNFX1ZBUihkZWJ1Z19wcmludGYpID0gZGVidWdfcHJpbnRmOwogCVND
VFBfQkFTRV9WQVIoY3JjMzJjX29mZmxvYWRlZCkgPSAwOworCVNDVFBfQkFTRV9WQVIoaXRlcmF0
b3JfdGhyZWFkX3N0YXJ0ZWQpID0gMDsKKwlTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZF9zdGFy
dGVkKSA9IDA7CiAjZW5kaWYKLQlzY3RwX3BjYl9pbml0KCk7CiAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQotCXNjdHBfc3RhcnRfdGltZXIoKTsKKwlzY3RwX3BjYl9pbml0KHN0YXJ0X3RocmVh
ZHMpOworCWlmIChzdGFydF90aHJlYWRzKSB7CisJCXNjdHBfc3RhcnRfdGltZXIoKTsKKwl9Cisj
ZWxzZQorCXNjdHBfcGNiX2luaXQoKTsKICNlbmRpZgogI2lmIGRlZmluZWQoU0NUUF9QQUNLRVRf
TE9HR0lORykKIAlTQ1RQX0JBU0VfVkFSKHBhY2tldF9sb2dfd3JpdGVycykgPSAwOwpAQCAtMTY1
LDYgKzE4MiwxMCBAQCBzY3RwX2luaXQodm9pZCkKIAlzY3RwX3N0YXJ0X21haW5fdGltZXIoKTsK
IAl0aW1lb3V0KHNjdHBfZGVsYXllZF9zdGFydHVwLCBOVUxMLCAxKTsKICNlbmRpZgorI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pCisJU0NUUF9CQVNFX1ZBUihlaF90YWcpID0gRVZFTlRIQU5ETEVS
X1JFR0lTVEVSKHJ0X2FkZHJtc2csCisJICAgIHNjdHBfYWRkcl9jaGFuZ2VfZXZlbnRfaGFuZGxl
ciwgTlVMTCwgRVZFTlRIQU5ETEVSX1BSSV9GSVJTVCk7CisjZW5kaWYKIH0KIAogI2lmIGRlZmlu
ZWQoX19GcmVlQlNEX18pCkBAIC0yMzQsMTIgKzI1NSwxNCBAQCBzY3RwX2ZpbmlzaCh2b2lkKQog
CX0KICNlbmRpZgogCWF0b21pY19jbXBzZXRfaW50KCZTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVh
ZF9zaG91bGRfZXhpdCksIDAsIDEpOworCWlmIChTQ1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZF9z
dGFydGVkKSkgewogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2Vfb3NfV2luZG93cykKLQlXYWl0Rm9y
U2luZ2xlT2JqZWN0KFNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkKSwgSU5GSU5JVEUpOwotCUNs
b3NlSGFuZGxlKFNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkKSk7CisJCVdhaXRGb3JTaW5nbGVP
YmplY3QoU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWQpLCBJTkZJTklURSk7CisJCUNsb3NlSGFu
ZGxlKFNDVFBfQkFTRV9WQVIodGltZXJfdGhyZWFkKSk7CiAjZWxzZQotCXB0aHJlYWRfam9pbihT
Q1RQX0JBU0VfVkFSKHRpbWVyX3RocmVhZCksIE5VTEwpOworCQlwdGhyZWFkX2pvaW4oU0NUUF9C
QVNFX1ZBUih0aW1lcl90aHJlYWQpLCBOVUxMKTsKICNlbmRpZgorCX0KICNlbmRpZgogCXNjdHBf
cGNiX2ZpbmlzaCgpOwogI2lmIGRlZmluZWQoX19XaW5kb3dzX18pCkBAIC0yODcsNyArMzEwLDEw
IEBAIHNjdHBfcGF0aG10dV9hZGp1c3RtZW50KHN0cnVjdCBzY3RwX3RjYiAKIAkJCQkJCSAgICAg
ICBjaGstPnJlYy5kYXRhLnRzbik7CiAJCQkJfQogCQkJCS8qIENsZWFyIGFueSB0aW1lIHNvIE5P
IFJUVCBpcyBiZWluZyBkb25lICovCi0JCQkJY2hrLT5kb19ydHQgPSAwOworCQkJCWlmIChjaGst
PmRvX3J0dCA9PSAxKSB7CisJCQkJCWNoay0+ZG9fcnR0ID0gMDsKKwkJCQkJY2hrLT53aG9Uby0+
cnRvX25lZWRlZCA9IDE7CisJCQkJfQogCQkJfQogCQl9CiAJfQpAQCAtNTMzLDYgKzU1OSwyNCBA
QCBzY3RwX2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqCiAJCQkgICAgICAgICAg
ICBpbm5lcl9pcC0+aXBfbGVuLAogI2VuZGlmCiAJCQkgICAgICAgICAgICAodWludDMyX3QpbnRv
aHMoaWNtcC0+aWNtcF9uZXh0bXR1KSk7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQkJ
aWYgKCEoc3RjYi0+c2N0cF9lcC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9H
T05FKSAmJgorCQkJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxMKSkgeworCQkJCXN0cnVj
dCBzb2NrZXQgKnVwY2FsbF9zb2NrZXQ7CisKKwkJCQl1cGNhbGxfc29ja2V0ID0gc3RjYi0+c2N0
cF9zb2NrZXQ7CisJCQkJU09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQkJCXNvcmVmKHVwY2Fs
bF9zb2NrZXQpOworCQkJCVNPQ0tfVU5MT0NLKHVwY2FsbF9zb2NrZXQpOworCQkJCWlmICgodXBj
YWxsX3NvY2tldC0+c29fdXBjYWxsICE9IE5VTEwpICYmCisJCQkJICAgICh1cGNhbGxfc29ja2V0
LT5zb19lcnJvciAhPSAwKSkgeworCQkJCQkoKnVwY2FsbF9zb2NrZXQtPnNvX3VwY2FsbCkodXBj
YWxsX3NvY2tldCwgdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsYXJnLCBNX05PV0FJVCk7CisJCQkJ
fQorCQkJCUFDQ0VQVF9MT0NLKCk7CisJCQkJU09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQkJ
CXNvcmVsZSh1cGNhbGxfc29ja2V0KTsKKwkJCX0KKyNlbmRpZgogCQl9IGVsc2UgewogI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNTAwMDAwCiAJCQkvKgpA
QCAtNjM5LDE5ICs2ODMsMjIgQEAgU1lTQ1RMX1BST0MoX25ldF9pbmV0X3NjdHAsIE9JRF9BVVRP
LCBnZQogI2lmZGVmIElORVQKICNpZiBkZWZpbmVkKF9fUGFuZGFfXykgfHwgZGVmaW5lZChfX1dp
bmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQogaW50Ci0jZWxpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2VsaWYgZGVmaW5lZChf
X0ZyZWVCU0RfXykKIHN0YXRpYyB2b2lkCiAjZWxzZQogc3RhdGljIGludAogI2VuZGlmCiBzY3Rw
X2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQogeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJ
c3RydWN0IGVwb2NoX3RyYWNrZXIgZXQ7CisjZW5kaWYKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
OwogCXVpbnQzMl90IGZsYWdzOwogCiAJaW5wID0gKHN0cnVjdCBzY3RwX2lucGNiICopc28tPnNv
X3BjYjsKIAlpZiAoaW5wID09IE5VTEwpIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA+IDY5MDAwMAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJCXJl
dHVybjsKICNlbHNlCiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoTlVMTCwgTlVMTCwgTlVMTCwgU0NU
UF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwpAQCAtNjU5LDYgKzcwNiw5IEBAIHNjdHBfYWJv
cnQoc3RydWN0IHNvY2tldCAqc28pCiAjZW5kaWYKIAl9CiAKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKICBzY3RwX211c3RfdHJ5X2FnYWlu
OgogCWZsYWdzID0gaW5wLT5zY3RwX2ZsYWdzOwogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKQEAg
LTY5MSw3ICs3NDEsOCBAQCBzY3RwX2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJZ290byBz
Y3RwX211c3RfdHJ5X2FnYWluOwogCQl9CiAJfQotI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYm
IF9fRnJlZUJTRF92ZXJzaW9uID4gNjkwMDAwCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlO
RVRfRVBPQ0hfRVhJVChldCk7CiAJcmV0dXJuOwogI2Vsc2UKIAlyZXR1cm4gKDApOwpAQCAtODUy
LDYgKzkwMyw5IEBAIHNjdHBjb25uX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCAKIHZv
aWQKIHNjdHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiB7CisjaWYgZGVmaW5lZChfX0ZyZWVC
U0RfXykKKwlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgogCXN0cnVjdCBzY3RwX2lu
cGNiICppbnA7CiAJdWludDMyX3QgZmxhZ3M7CiAKQEAgLTg2Miw2ICs5MTYsOSBAQCBzY3RwX2Ns
b3NlKHN0cnVjdCBzb2NrZXQgKnNvKQogCS8qIEluZm9ybSBhbGwgdGhlIGxvd2VyIGxheWVyIGFz
c29jIHRoYXQgd2UKIAkgKiBhcmUgZG9uZS4KIAkgKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9f
KQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKICBzY3RwX211c3RfdHJ5X2FnYWluOgog
CWZsYWdzID0gaW5wLT5zY3RwX2ZsYWdzOwogI2lmZGVmIFNDVFBfTE9HX0NMT1NJTkcKQEAgLTkw
OSw2ICs5NjYsOSBAQCBzY3RwX2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJZ290byBzY3Rw
X211c3RfdHJ5X2FnYWluOwogCQl9CiAJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJTkVU
X0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJcmV0dXJuOwogfQogCkBAIC0xMDUyLDcgKzExMTIs
NiBAQCBjb25uZWN0ZWRfdHlwZToKIAkvKiBub3cgd2hhdCBhYm91dCBjb250cm9sICovCiAJaWYg
KGNvbnRyb2wpIHsKIAkJaWYgKGlucC0+Y29udHJvbCkgewotCQkJU0NUUF9QUklOVEYoImh1aD8g
Y29udHJvbCBzZXQ/XG4iKTsKIAkJCXNjdHBfbV9mcmVlbShpbnAtPmNvbnRyb2wpOwogCQkJaW5w
LT5jb250cm9sID0gTlVMTDsKIAkJfQpAQCAtMTA4Miw5ICsxMTQxLDE4IEBAIGNvbm5lY3RlZF90
eXBlOgogCQkgKiBkZWZpbml0aW9ucykgYnV0IHRoaXMgaXMgbm90IGFkdmlzYWJsZS4gVGhpcyBj
b2RlIGlzIHVzZWQKIAkJICogYnkgRnJlZUJTRCB3aGVuIHNlbmRpbmcgYSBmaWxlIHdpdGggc2Vu
ZGZpbGUoKSB0aG91Z2guCiAJCSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCXN0cnVj
dCBlcG9jaF90cmFja2VyIGV0OworI2VuZGlmCiAJCWludCByZXQ7CiAKKyNpZiBkZWZpbmVkKF9f
RnJlZUJTRF9fKQorCU5FVF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJcmV0ID0gc2N0cF9v
dXRwdXQoaW5wLCBpbnAtPnBrdCwgYWRkciwgaW5wLT5jb250cm9sLCBwLCBmbGFncyk7CisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJaW5w
LT5wa3QgPSBOVUxMOwogCQlpbnAtPmNvbnRyb2wgPSBOVUxMOwogCQlyZXR1cm4gKHJldCk7CkBA
IC0xMTEyLDYgKzExODAsOSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJ
CQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQlyZXR1cm4gKDApOwogCQl9IGVsc2UgeworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisJCQlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRp
ZgogCQkJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CiAJCQlzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2I7CiAKQEAgLTExMjksNiArMTIwMCw5IEBAIHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29j
a2V0ICpzbykKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQkJcmV0dXJuICgwKTsKIAkJ
CX0KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQkJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNl
bmRpZgogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKIAkJCWlmICgoKHNvLT5zb19vcHRpb25z
ICYgU0NUUF9TT19MSU5HRVIpICYmCiAJCQkgICAgIChzby0+c29fbGluZ2VyID09IDApKSB8fApA
QCAtMTEzOCw4ICsxMjEyLDcgQEAgc2N0cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQog
CQkJICAgICAoc28tPnNvX2xpbmdlciA9PSAwKSkgfHwKIAkJCSAgICAoc28tPnNvX3Jjdi5zYl9j
YyA+IDApKSB7CiAjZW5kaWYKLQkJCQlpZiAoU0NUUF9HRVRfU1RBVEUoYXNvYykgIT0KLQkJCQkg
ICAgU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgeworCQkJCWlmIChTQ1RQX0dFVF9TVEFURShzdGNi
KSAhPSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB7CiAJCQkJCS8qIExlZnQgd2l0aCBEYXRhIHVu
cmVhZCAqLwogCQkJCQlzdHJ1Y3QgbWJ1ZiAqb3BfZXJyOwogCkBAIC0xMTQ4LDEzICsxMjIxLDE2
IEBAIHNjdHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCQkJU0NUUF9TVEFUX0lO
Q1JfQ09VTlRFUjMyKHNjdHBzX2Fib3J0ZWQpOwogCQkJCX0KIAkJCQlTQ1RQX0lOUF9SVU5MT0NL
KGlucCk7Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFU
RV9PUEVOKSB8fAotCQkJCSAgICAoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBf
U1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CisJCQkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNi
KSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8CisJCQkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9
PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQlTQ1RQX1NUQVRfREVDUl9H
QVVHRTMyKHNjdHBzX2N1cnJlc3RhYik7CiAJCQkJfQogCQkJCSh2b2lkKXNjdHBfZnJlZV9hc3Nv
YyhpbnAsIHN0Y2IsIFNDVFBfTk9STUFMX1BST0MsCiAJCQkJICAgICAgICAgICAgICAgICAgICAg
IFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzMpOwogCQkJCS8qIE5vIHVubG9jayB0
Y2IgYXNzb2MgaXMgZ29uZSAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQkJTkVUX0VQ
T0NIX0VYSVQoZXQpOworI2VuZGlmCiAJCQkJcmV0dXJuICgwKTsKIAkJCX0KIAkJCWlmIChUQUlM
UV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKQEAgLTExNjQsMTcgKzEyNDAsMTYgQEAgc2N0
cF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJCWlmICgoKmFzb2MtPnNzX2Z1bmN0
aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShzdGNiLCBhc29jKSkgewogCQkJ
CQlnb3RvIGFib3J0X2FueXdheTsKIAkJCQl9Ci0JCQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29j
KSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQpICYmCi0JCQkJICAgIChTQ1RQX0dFVF9TVEFU
RShhc29jKSAhPSBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UKSkgeworCQkJCWlmICgoU0NU
UF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKSAmJgorCQkJCSAg
ICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkp
IHsKIAkJCQkJLyogb25seSBzZW5kIFNIVVRET1dOIDFzdCB0aW1lIHRocnUgKi8KIAkJCQkJc3Ry
dWN0IHNjdHBfbmV0cyAqbmV0cDsKIAotCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09
IFNDVFBfU1RBVEVfT1BFTikgfHwKLQkJCQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSA9PSBT
Q1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFNDVFBfR0VUX1NUQVRF
KHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQX0dFVF9TVEFURShz
dGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJU0NUUF9TVEFU
X0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9Ci0JCQkJCVNDVFBfU0VUX1NU
QVRFKGFzb2MsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7Ci0JCQkJCVNDVFBfQ0xFQVJfU1VC
U1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJCQkJU0NUUF9TRVRf
U1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKIAkJCQkJc2N0cF9zdG9wX3Rp
bWVyc19mb3Jfc2h1dGRvd24oc3RjYik7CiAJCQkJCWlmIChzdGNiLT5hc29jLmFsdGVybmF0ZSkg
ewogCQkJCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJuYXRlOwpAQCAtMTIwNiwxMSArMTI4MSwx
MSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJCQkJCW5ldHAgPSBzdGNi
LT5hc29jLnByaW1hcnlfZGVzdGluYXRpb247CiAJCQkJfQogCi0JCQkJYXNvYy0+c3RhdGUgfD0g
U0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HOworCQkJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2Is
IFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyk7CiAJCQkJc2N0cF90aW1lcl9zdGFydChTQ1RQ
X1RJTUVSX1RZUEVfU0hVVERPV05HVUFSRCwgc3RjYi0+c2N0cF9lcCwgc3RjYiwKIAkJCQkJCSBu
ZXRwKTsKIAkJCQlpZiAoKCphc29jLT5zc19mdW5jdGlvbnMuc2N0cF9zc19pc191c2VyX21zZ3Nf
aW5jb21wbGV0ZSkoc3RjYiwgYXNvYykpIHsKLQkJCQkJYXNvYy0+c3RhdGUgfD0gU0NUUF9TVEFU
RV9QQVJUSUFMX01TR19MRUZUOworCQkJCQlTQ1RQX0FERF9TVUJTVEFURShzdGNiLCBTQ1RQX1NU
QVRFX1BBUlRJQUxfTVNHX0xFRlQpOwogCQkJCX0KIAkJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2Mt
PnNlbmRfcXVldWUpICYmCiAJCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSAm
JgpAQCAtMTIyMSwxOSArMTI5NiwyNSBAQCBzY3RwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAq
c28pCiAJCQkJCXN0Y2ItPnNjdHBfZXAtPmxhc3RfYWJvcnRfY29kZSA9IFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSArIFNDVFBfTE9DXzQ7CiAJCQkJCXNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RjYiwgb3Bf
ZXJyLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJCVNDVFBfU1RBVF9JTkNSX0NPVU5URVIzMihzY3Rw
c19hYm9ydGVkKTsKLQkJCQkJaWYgKChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NU
UF9TVEFURV9PUEVOKSB8fAotCQkJCQkgICAgKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29jKSA9
PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgeworCQkJCQlpZiAoKFNDVFBfR0VUX1NU
QVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkJCQkJICAgIChTQ1RQX0dFVF9TVEFU
RShzdGNiKSA9PSBTQ1RQX1NUQVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkgewogCQkJCQkJU0NUUF9T
VEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwogCQkJCQl9CiAJCQkJCVNDVFBfSU5Q
X1JVTkxPQ0soaW5wKTsKIAkJCQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NU
UF9OT1JNQUxfUFJPQywKIAkJCQkJICAgICAgICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQ
X1VTUlJFUSArIFNDVFBfTE9DXzUpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQkJCU5F
VF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQkJCQlyZXR1cm4gKDApOwogCQkJCX0gZWxzZSB7
CiAJCQkJCXNjdHBfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgU0NUUF9PVVRQVVRfRlJPTV9DTE9T
SU5HLCBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJfQogCQkJfQogCQkJc29pc2Rpc2Nvbm5lY3Rpbmco
c28pOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCQlORVRfRVBPQ0hfRVhJVChldCk7Cisj
ZW5kaWYKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5w
KTsKIAkJCXJldHVybiAoMCk7CkBAIC0xMzMyLDYgKzE0MTMsOSBAQCBzY3RwX3NodXRkb3duKHN0
cnVjdCBzb2NrZXQgKnNvKQogCQkgKiBhIFNIVVRfV1Igb3IgU0hVVF9SRFdSLgogCQkgKiBUaGlz
IG1lYW5zIHdlIHB1dCB0aGUgc2h1dGRvd24gZmxhZyBhZ2FpbnN0IGl0LgogCQkgKi8KKyNpZiBk
ZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgog
CQlzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29j
OwogCQlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXRwOwpAQCAtMTM2MCw5ICsxNDQ0LDkgQEAgc2N0cF9z
aHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJ
CXJldHVybiAoMCk7CiAJCX0KLQkJaWYgKChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBTQ1RQX1NU
QVRFX0NPT0tJRV9XQUlUKSAmJgotCQkgICAgKFNDVFBfR0VUX1NUQVRFKGFzb2MpICE9IFNDVFBf
U1RBVEVfQ09PS0lFX0VDSE9FRCkgJiYKLQkJICAgIChTQ1RQX0dFVF9TVEFURShhc29jKSAhPSBT
Q1RQX1NUQVRFX09QRU4pKSB7CisJCWlmICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0gU0NUUF9T
VEFURV9DT09LSUVfV0FJVCkgJiYKKwkJICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQ
X1NUQVRFX0NPT0tJRV9FQ0hPRUQpICYmCisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgIT0g
U0NUUF9TVEFURV9PUEVOKSkgewogCQkJLyogSWYgd2UgYXJlIG5vdCBpbiBvciBiZWZvcmUgRVNU
QUJMSVNIRUQsIHRoZXJlIGlzCiAJCQkgKiBubyBwcm90b2NvbCBhY3Rpb24gcmVxdWlyZWQuCiAJ
CQkgKi8KQEAgLTEzNzAsMTIgKzE0NTQsMTUgQEAgc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0
ICpzbykKIAkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCXJldHVybiAoMCk7CiAJCX0KKyNp
ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCQlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAJ
CWlmIChzdGNiLT5hc29jLmFsdGVybmF0ZSkgewogCQkJbmV0cCA9IHN0Y2ItPmFzb2MuYWx0ZXJu
YXRlOwogCQl9IGVsc2UgewogCQkJbmV0cCA9IHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlv
bjsKIAkJfQotCQlpZiAoKFNDVFBfR0VUX1NUQVRFKGFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikg
JiYKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX09QRU4pICYmCiAJ
CSAgICBUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKIAkJICAgIFRBSUxRX0VNUFRZ
KCZhc29jLT5zZW50X3F1ZXVlKSAmJgogCQkgICAgKGFzb2MtPnN0cmVhbV9xdWV1ZV9jbnQgPT0g
MCkpIHsKQEAgLTEzODQsOCArMTQ3MSw3IEBAIHNjdHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAq
c28pCiAJCQl9CiAJCQkvKiB0aGVyZSBpcyBub3RoaW5nIHF1ZXVlZCB0byBzZW5kLCBzbyBJJ20g
ZG9uZS4uLiAqLwogCQkJU0NUUF9TVEFUX0RFQ1JfR0FVR0UzMihzY3Rwc19jdXJyZXN0YWIpOwot
CQkJU0NUUF9TRVRfU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9TRU5UKTsKLQkJCVND
VFBfQ0xFQVJfU1VCU1RBVEUoYXNvYywgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKKwkJ
CVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCk7CiAJCQlzY3Rw
X3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdGNiKTsKIAkJCXNjdHBfc2VuZF9zaHV0ZG93bihz
dGNiLCBuZXRwKTsKIAkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dO
LApAQCAtMTM5NSw5ICsxNDgxLDkgQEAgc2N0cF9zaHV0ZG93bihzdHJ1Y3Qgc29ja2V0ICpzbykK
IAkJCSAqIFdlIHN0aWxsIGdvdCAob3IganVzdCBnb3QpIGRhdGEgdG8gc2VuZCwgc28gc2V0CiAJ
CQkgKiBTSFVURE9XTl9QRU5ESU5HLgogCQkJICovCi0JCQlTQ1RQX0FERF9TVUJTVEFURShhc29j
LCBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcpOworCQkJU0NUUF9BRERfU1VCU1RBVEUoc3Rj
YiwgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKTsKIAkJCWlmICgoKmFzb2MtPnNzX2Z1bmN0
aW9ucy5zY3RwX3NzX2lzX3VzZXJfbXNnc19pbmNvbXBsZXRlKShzdGNiLCBhc29jKSkgewotCQkJ
CVNDVFBfQUREX1NVQlNUQVRFKGFzb2MsIFNDVFBfU1RBVEVfUEFSVElBTF9NU0dfTEVGVCk7CisJ
CQkJU0NUUF9BRERfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9QQVJUSUFMX01TR19MRUZUKTsK
IAkJCX0KIAkJCWlmIChUQUlMUV9FTVBUWSgmYXNvYy0+c2VuZF9xdWV1ZSkgJiYKIAkJCSAgICBU
QUlMUV9FTVBUWSgmYXNvYy0+c2VudF9xdWV1ZSkgJiYKQEAgLTE0MDYsOSArMTQ5MiwxMiBAQCBz
Y3RwX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQkJYWJvcnRfYW55d2F5OgogCQkJCW9w
X2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9VU0VSX0lOSVRJQVRFRF9BQlQs
ICIiKTsKIAkJCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NU
UF9VU1JSRVEgKyBTQ1RQX0xPQ182OworCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKIAkJCQlz
Y3RwX2Fib3J0X2FuX2Fzc29jaWF0aW9uKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCQkJCQkJICBv
cF9lcnIsIFNDVFBfU09fTE9DS0VEKTsKLQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJ
CQlyZXR1cm4gKDApOwogCQkJfQogCQl9CkBAIC0xNDE3LDYgKzE1MDYsOSBAQCBzY3RwX3NodXRk
b3duKHN0cnVjdCBzb2NrZXQgKnNvKQogCQlzY3RwX2NodW5rX291dHB1dChpbnAsIHN0Y2IsIFND
VFBfT1VUUFVUX0ZST01fQ0xPU0lORywgU0NUUF9TT19MT0NLRUQpOwogCQlTQ1RQX1RDQl9VTkxP
Q0soc3RjYik7CiAJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJT
RF9fKQorCQlORVRfRVBPQ0hfRVhJVChldCk7CisjZW5kaWYKIAkJcmV0dXJuICgwKTsKIAl9CiB9
CkBAIC0xNjA4LDIyICsxNzAwLDI1IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVj
dCBzY3RwX2kKIAkJCQkJCX0KICNpZmRlZiBJTkVUNgogCQkJCQkJaWYgKHNjdHBfaXNfZmVhdHVy
ZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdTX05FRURTX01BUFBFRF9WNCkpIHsKKwkJCQkJCQlpZiAo
YWN0dWFsICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpID4gbGltaXQpIHsKKwkJCQkJCQkJ
cmV0dXJuIChhY3R1YWwpOworCQkJCQkJCX0KIAkJCQkJCQlpbjZfc2luXzJfdjRtYXBzaW42KHNp
biwgKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilzYXMpOwogCQkJCQkJCSgoc3RydWN0IHNvY2thZGRy
X2luNiAqKXNhcyktPnNpbjZfcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKIAkJCQkJCQlzYXMgPSAo
c3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbjYpKTsKIAkJCQkJCQlhY3R1YWwgKz0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bjYpOwogCQkJCQkJfSBlbHNlIHsKICNlbmRpZgotCQkJCQkJCW1lbWNweShzYXMsIHNpbiwgc2l6
ZW9mKCpzaW4pKTsKKwkJCQkJCQlpZiAoYWN0dWFsICsgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9p
bikgPiBsaW1pdCkgeworCQkJCQkJCQlyZXR1cm4gKGFjdHVhbCk7CisJCQkJCQkJfQorCQkJCQkJ
CW1lbWNweShzYXMsIHNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogCQkJCQkJCSgo
c3RydWN0IHNvY2thZGRyX2luICopc2FzKS0+c2luX3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7Ci0J
CQkJCQkJc2FzID0gKHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICopKChjYWRkcl90KXNhcyArIHNp
emVvZigqc2luKSk7Ci0JCQkJCQkJYWN0dWFsICs9IHNpemVvZigqc2luKTsKKwkJCQkJCQlzYXMg
PSAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgc2l6ZW9mKHN0cnVj
dCBzb2NrYWRkcl9pbikpOworCQkJCQkJCWFjdHVhbCArPSBzaXplb2Yoc3RydWN0IHNvY2thZGRy
X2luKTsKICNpZmRlZiBJTkVUNgogCQkJCQkJfQogI2VuZGlmCi0JCQkJCQlpZiAoYWN0dWFsID49
IGxpbWl0KSB7Ci0JCQkJCQkJcmV0dXJuIChhY3R1YWwpOwotCQkJCQkJfQogCQkJCQl9IGVsc2Ug
ewogCQkJCQkJY29udGludWU7CiAJCQkJCX0KQEAgLTE2ODQsMTMgKzE3NzksMTMgQEAgc2N0cF9m
aWxsX3VwX2FkZHJlc3Nlc192cmYoc3RydWN0IHNjdHBfaQogCQkJCQkJICAgIChJTjZfSVNfQURE
Ul9TSVRFTE9DQUwoJnNpbjYtPnNpbjZfYWRkcikpKSB7CiAJCQkJCQkJY29udGludWU7CiAJCQkJ
CQl9Ci0JCQkJCQltZW1jcHkoc2FzLCBzaW42LCBzaXplb2YoKnNpbjYpKTsKLQkJCQkJCSgoc3Ry
dWN0IHNvY2thZGRyX2luNiAqKXNhcyktPnNpbjZfcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKLQkJ
CQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMgKyBzaXpl
b2YoKnNpbjYpKTsKLQkJCQkJCWFjdHVhbCArPSBzaXplb2YoKnNpbjYpOwotCQkJCQkJaWYgKGFj
dHVhbCA+PSBsaW1pdCkgeworCQkJCQkJaWYgKGFjdHVhbCArIHNpemVvZihzdHJ1Y3Qgc29ja2Fk
ZHJfaW42KSA+IGxpbWl0KSB7CiAJCQkJCQkJcmV0dXJuIChhY3R1YWwpOwogCQkJCQkJfQorCQkJ
CQkJbWVtY3B5KHNhcywgc2luNiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKwkJCQkJ
CSgoc3RydWN0IHNvY2thZGRyX2luNiAqKXNhcyktPnNpbjZfcG9ydCA9IGlucC0+c2N0cF9scG9y
dDsKKwkJCQkJCXNhcyA9IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSgoY2FkZHJfdClzYXMg
KyBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworCQkJCQkJYWN0dWFsICs9IHNpemVvZihz
dHJ1Y3Qgc29ja2FkZHJfaW42KTsKIAkJCQkJfSBlbHNlIHsKIAkJCQkJCWNvbnRpbnVlOwogCQkJ
CQl9CkBAIC0xNjk5LDEzICsxNzk0LDEzIEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0
cnVjdCBzY3RwX2kKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQkJY2FzZSBBRl9DT05O
OgogCQkJCQlpZiAoY29ubl9hZGRyX2xlZ2FsKSB7CisJCQkJCQlpZiAoYWN0dWFsICsgc2l6ZW9m
KHN0cnVjdCBzb2NrYWRkcl9jb25uKSA+IGxpbWl0KSB7CisJCQkJCQkJcmV0dXJuIChhY3R1YWwp
OworCQkJCQkJfQogCQkJCQkJbWVtY3B5KHNhcywgJnNjdHBfaWZhLT5hZGRyZXNzLnNjb25uLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKIAkJCQkJCSgoc3RydWN0IHNvY2thZGRyX2Nv
bm4gKilzYXMpLT5zY29ubl9wb3J0ID0gaW5wLT5zY3RwX2xwb3J0OwogCQkJCQkJc2FzID0gKHN0
cnVjdCBzb2NrYWRkcl9zdG9yYWdlICopKChjYWRkcl90KXNhcyArIHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfY29ubikpOwogCQkJCQkJYWN0dWFsICs9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29u
bik7Ci0JCQkJCQlpZiAoYWN0dWFsID49IGxpbWl0KSB7Ci0JCQkJCQkJcmV0dXJuIChhY3R1YWwp
OwotCQkJCQkJfQogCQkJCQl9IGVsc2UgewogCQkJCQkJY29udGludWU7CiAJCQkJCX0KQEAgLTE3
MTgsOSArMTgxMyw3IEBAIHNjdHBfZmlsbF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2kK
IAkJfQogCX0gZWxzZSB7CiAJCXN0cnVjdCBzY3RwX2xhZGRyICpsYWRkcjsKLSNpZm5kZWYgSEFW
RV9TQV9MRU4KLQkJdWludDMyX3Qgc2FfbGVuID0gMDsKLSNlbmRpZgorCQlzaXplX3Qgc2FfbGVu
OwogCiAJCUxJU1RfRk9SRUFDSChsYWRkciwgJmlucC0+c2N0cF9hZGRyX2xpc3QsIHNjdHBfbnh0
X2FkZHIpIHsKIAkJCWlmIChzdGNiKSB7CkBAIC0xNzI4LDQ3ICsxODIxLDUwIEBAIHNjdHBfZmls
bF91cF9hZGRyZXNzZXNfdnJmKHN0cnVjdCBzY3RwX2kKIAkJCQkJY29udGludWU7CiAJCQkJfQog
CQkJfQotCQkJaWYgKHNjdHBfZmlsbF91c2VyX2FkZHJlc3Moc2FzLCAmbGFkZHItPmlmYS0+YWRk
cmVzcy5zYSkpCi0JCQkJY29udGludWU7CisjaWZkZWYgSEFWRV9TQV9MRU4KKwkJCXNhX2xlbiA9
IGxhZGRyLT5pZmEtPmFkZHJlc3Muc2Euc2FfbGVuOworI2Vsc2UKIAkJCXN3aXRjaCAobGFkZHIt
PmlmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJCQljYXNlIEFGX0lO
RVQ6Ci0JCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9IGlucC0+c2N0
cF9scG9ydDsKKwkJCQlzYV9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKTsKIAkJCQli
cmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJCQljYXNlIEFGX0lORVQ2OgotCQkJCSgoc3Ry
dWN0IHNvY2thZGRyX2luNiAqKXNhcyktPnNpbjZfcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKKwkJ
CQlzYV9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAJCQkJYnJlYWs7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQljYXNlIEFGX0NPTk46Ci0JCQkJKChz
dHJ1Y3Qgc29ja2FkZHJfY29ubiAqKXNhcyktPnNjb25uX3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7
CisJCQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKIAkJCQlicmVhazsK
ICNlbmRpZgogCQkJZGVmYXVsdDoKIAkJCQkvKiBUU05IICovCisJCQkJc2FfbGVuID0gMDsKIAkJ
CQlicmVhazsKIAkJCX0KLSNpZmRlZiBIQVZFX1NBX0xFTgotCQkJc2FzID0gKHN0cnVjdCBzb2Nr
YWRkcl9zdG9yYWdlICopKChjYWRkcl90KXNhcyArCi0JCQkJCQkJICBsYWRkci0+aWZhLT5hZGRy
ZXNzLnNhLnNhX2xlbik7Ci0JCQlhY3R1YWwgKz0gbGFkZHItPmlmYS0+YWRkcmVzcy5zYS5zYV9s
ZW47Ci0jZWxzZQorI2VuZGlmCisJCQlpZiAoYWN0dWFsICsgc2FfbGVuID4gbGltaXQpIHsKKwkJ
CQlyZXR1cm4gKGFjdHVhbCk7CisJCQl9CisJCQlpZiAoc2N0cF9maWxsX3VzZXJfYWRkcmVzcyhz
YXMsICZsYWRkci0+aWZhLT5hZGRyZXNzLnNhKSkKKwkJCQljb250aW51ZTsKIAkJCXN3aXRjaCAo
bGFkZHItPmlmYS0+YWRkcmVzcy5zYS5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJCQljYXNl
IEFGX0lORVQ6Ci0JCQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisJCQkJ
KChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYXMpLT5zaW5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsK
IAkJCQlicmVhazsKICNlbmRpZgogI2lmZGVmIElORVQ2CiAJCQljYXNlIEFGX0lORVQ2OgotCQkJ
CXNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKwkJCQkoKHN0cnVjdCBzb2Nr
YWRkcl9pbjYgKilzYXMpLT5zaW42X3BvcnQgPSBpbnAtPnNjdHBfbHBvcnQ7CiAJCQkJYnJlYWs7
CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCQljYXNlIEFGX0NPTk46Ci0J
CQkJc2FfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKKwkJCQkoKHN0cnVjdCBz
b2NrYWRkcl9jb25uICopc2FzKS0+c2Nvbm5fcG9ydCA9IGlucC0+c2N0cF9scG9ydDsKIAkJCQli
cmVhazsKICNlbmRpZgogCQkJZGVmYXVsdDoKQEAgLTE3NzcsMTAgKzE4NzMsNiBAQCBzY3RwX2Zp
bGxfdXBfYWRkcmVzc2VzX3ZyZihzdHJ1Y3Qgc2N0cF9pCiAJCQl9CiAJCQlzYXMgPSAoc3RydWN0
IHNvY2thZGRyX3N0b3JhZ2UgKikoKGNhZGRyX3Qpc2FzICsgc2FfbGVuKTsKIAkJCWFjdHVhbCAr
PSBzYV9sZW47Ci0jZW5kaWYKLQkJCWlmIChhY3R1YWwgPj0gbGltaXQpIHsKLQkJCQlyZXR1cm4g
KGFjdHVhbCk7Ci0JCQl9CiAJCX0KIAl9CiAJcmV0dXJuIChhY3R1YWwpOwpAQCAtMTkzOCwxMyAr
MjAzMCwxMiBAQCBzdGF0aWMgaW50CiBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0ICpz
bywgc3RydWN0IHNjdHBfaW5wY2IgKmlucCwgdm9pZCAqb3B0dmFsLAogCQkgIHNpemVfdCBvcHRz
aXplLCB2b2lkICpwLCBpbnQgZGVsYXkpCiB7Ci0JaW50IGVycm9yID0gMDsKKwlpbnQgZXJyb3I7
CiAJaW50IGNyZWF0X2xvY2tfb24gPSAwOwogCXN0cnVjdCBzY3RwX3RjYiAqc3RjYiA9IE5VTEw7
CiAJc3RydWN0IHNvY2thZGRyICpzYTsKIAl1bnNpZ25lZCBpbnQgbnVtX3Y2ID0gMCwgbnVtX3Y0
ID0gMCwgKnRvdGFkZHJwLCB0b3RhZGRyOwogCXVpbnQzMl90IHZyZl9pZDsKLQlpbnQgYmFkX2Fk
ZHJlc3NlcyA9IDA7CiAJc2N0cF9hc3NvY190ICphX2lkOwogCiAJU0NUUERCRyhTQ1RQX0RFQlVH
X1BDQjEsICJDb25uZWN0eCBjYWxsZWRcbiIpOwpAQCAtMTk4MywxNyArMjA3NCwxMiBAQCBzY3Rw
X2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RyCiAJdG90YWRkcnAgPSAodW5zaWdu
ZWQgaW50ICopb3B0dmFsOwogCXRvdGFkZHIgPSAqdG90YWRkcnA7CiAJc2EgPSAoc3RydWN0IHNv
Y2thZGRyICopKHRvdGFkZHJwICsgMSk7Ci0Jc3RjYiA9IHNjdHBfY29ubmVjdHhfaGVscGVyX2Zp
bmQoaW5wLCBzYSwgJnRvdGFkZHIsICZudW1fdjQsICZudW1fdjYsICZlcnJvciwgKHVuc2lnbmVk
IGludCkob3B0c2l6ZSAtIHNpemVvZihpbnQpKSwgJmJhZF9hZGRyZXNzZXMpOwotCWlmICgoc3Rj
YiAhPSBOVUxMKSB8fCBiYWRfYWRkcmVzc2VzKSB7CisJZXJyb3IgPSBzY3RwX2Nvbm5lY3R4X2hl
bHBlcl9maW5kKGlucCwgc2EsIHRvdGFkZHIsICZudW1fdjQsICZudW1fdjYsICh1bnNpZ25lZCBp
bnQpKG9wdHNpemUgLSBzaXplb2YoaW50KSkpOworCWlmIChlcnJvciAhPSAwKSB7CiAJCS8qIEFs
cmVhZHkgaGF2ZSBvciBhbSBicmluZyB1cCBhbiBhc3NvY2lhdGlvbiAqLwogCQlTQ1RQX0FTT0Nf
Q1JFQVRFX1VOTE9DSyhpbnApOwogCQljcmVhdF9sb2NrX29uID0gMDsKLQkJaWYgKHN0Y2IpCi0J
CQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7Ci0JCWlmIChiYWRfYWRkcmVzc2VzID09IDApIHsKLQkJ
CVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JS
RVEsIEVBTFJFQURZKTsKLQkJCWVycm9yID0gRUFMUkVBRFk7Ci0JCX0KKwkJU0NUUF9MVFJBQ0Vf
RVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgZXJyb3IpOwog
CQlnb3RvIG91dF9ub3c7CiAJfQogI2lmZGVmIElORVQ2CkBAIC0yMDA0LDEwICsyMDkwLDcgQEAg
c2N0cF9kb19jb25uZWN0X3goc3RydWN0IHNvY2tldCAqc28sIHN0cgogCX0KIAlpZiAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EX1Y2KSAmJgogCSAgICAobnVtX3Y0ID4g
MCkpIHsKLQkJc3RydWN0IGluNnBjYiAqaW5wNjsKLQotCQlpbnA2ID0gKHN0cnVjdCBpbjZwY2Ig
KilpbnA7Ci0JCWlmIChTQ1RQX0lQVjZfVjZPTkxZKGlucDYpKSB7CisJCWlmIChTQ1RQX0lQVjZf
VjZPTkxZKGlucCkpIHsKIAkJCS8qCiAJCQkgKiBpZiBJUFY2X1Y2T05MWSBmbGFnLCBpZ25vcmUg
Y29ubmVjdGlvbnMgZGVzdGluZWQKIAkJCSAqIHRvIGEgdjQgYWRkciBvciB2NC1tYXBwZWQgYWRk
cgpAQCAtMjAzNiwxMyArMjExOSwxMyBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qgc29ja2V0
ICpzbywgc3RyCiAJICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfZXAucHJlX29wZW5f
c3RyZWFtX2NvdW50LAogCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnBvcnQs
CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDAw
Ci0JCQkgICAgICAgKHN0cnVjdCB0aHJlYWQgKilwCisJICAgICAgICAgICAgICAgICAgICAgICAo
c3RydWN0IHRocmVhZCAqKXAsCiAjZWxpZiBkZWZpbmVkKF9fV2luZG93c19fKQotCQkJICAgICAg
IChQS1RIUkVBRClwCisJICAgICAgICAgICAgICAgICAgICAgICAoUEtUSFJFQUQpcCwKICNlbHNl
Ci0JCQkgICAgICAgKHN0cnVjdCBwcm9jICopcAorCSAgICAgICAgICAgICAgICAgICAgICAgKHN0
cnVjdCBwcm9jICopcCwKICNlbmRpZgotCQkpOworCSAgICAgICAgICAgICAgICAgICAgICAgU0NU
UF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TKTsKIAlpZiAoc3RjYiA9PSBOVUxMKSB7CiAJCS8qIEdh
ayEgbm8gbWVtb3J5ICovCiAJCWdvdG8gb3V0X25vdzsKQEAgLTIwNTIsNyArMjEzNSw3IEBAIHNj
dHBfZG9fY29ubmVjdF94KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHIKIAkJLyogU2V0IHRoZSBjb25u
ZWN0ZWQgZmxhZyBzbyB3ZSBjYW4gcXVldWUgZGF0YSAqLwogCQlzb2lzY29ubmVjdGluZyhzbyk7
CiAJfQotCVNDVFBfU0VUX1NUQVRFKCZzdGNiLT5hc29jLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlU
KTsKKwlTQ1RQX1NFVF9TVEFURShzdGNiLCBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKTsKIAkvKiBt
b3ZlIHRvIHNlY29uZCBhZGRyZXNzICovCiAJc3dpdGNoIChzYS0+c2FfZmFtaWx5KSB7CiAjaWZk
ZWYgSU5FVApAQCAtMjA3MywxNiArMjE1NiwxMSBAQCBzY3RwX2RvX2Nvbm5lY3RfeChzdHJ1Y3Qg
c29ja2V0ICpzbywgc3RyCiAJc2N0cF9jb25uZWN0eF9oZWxwZXJfYWRkKHN0Y2IsIHNhLCAodG90
YWRkci0xKSwgJmVycm9yKTsKIAkvKiBGaWxsIGluIHRoZSByZXR1cm4gaWQgKi8KIAlpZiAoZXJy
b3IpIHsKLQkJKHZvaWQpc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9QQ0JGUkVFX0ZP
UkNFLAotCQkgICAgICAgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NU
UF9MT0NfNyk7CiAJCWdvdG8gb3V0X25vdzsKIAl9CiAJYV9pZCA9IChzY3RwX2Fzc29jX3QgKilv
cHR2YWw7CiAJKmFfaWQgPSBzY3RwX2dldF9hc3NvY2lkKHN0Y2IpOwogCi0JLyogaW5pdGlhbGl6
ZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgYXNzb2MgKi8KLQlzY3RwX2luaXRp
YWxpemVfYXV0aF9wYXJhbXMoaW5wLCBzdGNiKTsKLQogCWlmIChkZWxheSkgewogCQkvKiBkb2lu
ZyBkZWxheWVkIGNvbm5lY3Rpb24gKi8KIAkJc3RjYi0+YXNvYy5kZWxheWVkX2Nvbm5lY3Rpb24g
PSAxOwpAQCAtMjI4MSw3ICsyMzU5LDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBU
WVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsK
IAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWlmIChpbnAtPmlkYXRhX3N1cHBvcnRlZCkg
ewogCQkJCQlhdi0+YXNzb2NfdmFsdWUgPSAxOwpAQCAtMjMxMSw3ICsyMzkwLDggQEAgc2N0cF9n
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2
LT5hc3NvY192YWx1ZSA9IGlucC0+c2N0cF9jbXRfb25fb2ZmOwogCQkJCVNDVFBfSU5QX1JVTkxP
Q0soaW5wKTsKQEAgLTIzMzcsNyArMjQxNyw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQg
KnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
VURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
KSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAt
PnNjdHBfZXAuc2N0cF9kZWZhdWx0X2NjX21vZHVsZTsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlu
cCk7CkBAIC0yMzgyLDcgKzI0NjMsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZ
UEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewog
CQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3Rw
X2VwLnNjdHBfZGVmYXVsdF9zc19tb2R1bGU7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOwpA
QCAtMjUyMyw3ICsyNjA1LDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBv
cHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19J
Tl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
KSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlT
Q1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5hc3NvY192YWx1ZSA9IGlucC0+c2N0cF9jb250
ZXh0OwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTI2MTQsNyArMjY5Nyw4IEBAIHNj
dHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlm
ICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAo
c2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChzYWNr
LT5zYWNrX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9S
TE9DSyhpbnApOwogCQkJCXNhY2stPnNhY2tfZGVsYXkgPSBUSUNLU19UT19NU0VDKGlucC0+c2N0
cF9lcC5zY3RwX3RpbWVvdXR0aWNrc1tTQ1RQX1RJTUVSX1JFQ1ZdKTsKIAkJCQlzYWNrLT5zYWNr
X2ZyZXEgPSBpbnAtPnNjdHBfZXAuc2N0cF9zYWNrX2ZyZXE7CkBAIC0yNjc1LDcgKzI3NTksOCBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJ
CQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkg
ICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkg
ICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7
CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5zY3RwX2VwLm1heF9idXJzdDsKIAkJCQlTQ1RQ
X0lOUF9SVU5MT0NLKGlucCk7CkBAIC0yNzA0LDcgKzI3ODksOCBAQCBzY3RwX2dldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRV
UkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJaWYgKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0JPVU5EX1Y2KSB7CiAJCQkJCW92aCA9IFNDVFBfTUVE
X09WRVJIRUFEOwpAQCAtMjg3Miw4ICsyOTU4LDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tl
dCAqc28sIGludCBvcHRuYQogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHNhZGRyLT5zZ2V0
X2Fzc29jX2lkKTsKIAogCQlpZiAoc3RjYikgewotCQkJbGVmdCA9ICgqb3B0c2l6ZSkgLSBzaXpl
b2Yoc3RydWN0IHNjdHBfZ2V0YWRkcmVzc2VzKTsKLQkJCSpvcHRzaXplID0gc2l6ZW9mKHN0cnVj
dCBzY3RwX2dldGFkZHJlc3Nlcyk7CisJCQlsZWZ0ID0gKCpvcHRzaXplKSAtIHNpemVvZihzY3Rw
X2Fzc29jX3QpOworCQkJKm9wdHNpemUgPSBzaXplb2Yoc2N0cF9hc3NvY190KTsKIAkJCXNhcyA9
IChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSZzYWRkci0+YWRkclswXTsKIAogCQkJVEFJTFFf
Rk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5ldHMsIHNjdHBfbmV4dCkgewpAQCAtMjkzMiw3ICsz
MDE4LDcgQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJfQog
CQkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwogCQl9IGVsc2UgewotCQkgICAgICAgIFNDVFBfTFRS
QUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVOT0VO
VCk7CisJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1ND
VFBfVVNSUkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9FTlQ7CiAJCX0KIAkJYnJlYWs7CkBA
IC0yOTUyLDcgKzMwMzgsNyBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hCiAJCWlmIChzdGNiKSB7CiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCX0KLQkJKm9w
dHNpemUgPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UpICsgYWN0dWFsOworCQkqb3B0
c2l6ZSA9IHNpemVvZihzY3RwX2Fzc29jX3QpICsgYWN0dWFsOwogCQlicmVhazsKIAl9CiAJY2Fz
ZSBTQ1RQX1BFRVJfQUREUl9QQVJBTVM6CkBAIC0zMTMwLDcgKzMyMTYsOCBAQCBzY3RwX2dldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHBhZGRycC0+
c3BwX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHBhZGRycC0+c3Bw
X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkvKiBVc2UgZW5kcG9pbnQg
ZGVmYXVsdHMgKi8KIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCXBhZGRycC0+c3BwX3Bh
dGhtYXhyeHQgPSBpbnAtPnNjdHBfZXAuZGVmX25ldF9mYWlsdXJlOwpAQCAtMzI5OCw1OSArMzM4
NSw2MyBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCXNzdGF0
LT5zc3RhdF9pbnN0cm1zID0gc3RjYi0+YXNvYy5zdHJlYW1pbmNudDsKIAkJc3N0YXQtPnNzdGF0
X291dHN0cm1zID0gc3RjYi0+YXNvYy5zdHJlYW1vdXRjbnQ7CiAJCXNzdGF0LT5zc3RhdF9mcmFn
bWVudGF0aW9uX3BvaW50ID0gc2N0cF9nZXRfZnJhZ19wb2ludChzdGNiLCAmc3RjYi0+YXNvYyk7
CisJCW5ldCA9IHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbjsKKwkJaWYgKG5ldCAhPSBO
VUxMKSB7CiAjaWZkZWYgSEFWRV9TQV9MRU4KLQkJbWVtY3B5KCZzc3RhdC0+c3N0YXRfcHJpbWFy
eS5zcGluZm9fYWRkcmVzcywKLQkJICAgICAgICZzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRp
b24tPnJvLl9sX2FkZHIsCi0JCSAgICAgICAoKHN0cnVjdCBzb2NrYWRkciAqKSgmc3RjYi0+YXNv
Yy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyKSktPnNhX2xlbik7Ci0jZWxzZQotCQlp
ZiAoc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyLnNhLnNhX2ZhbWls
eSA9PSBBRl9JTkVUKSB7CiAJCQltZW1jcHkoJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19h
ZGRyZXNzLAogCQkJICAgICAgICZzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnJvLl9s
X2FkZHIsCi0JCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwotCQl9IGVsc2Ug
ewotCQkJbWVtY3B5KCZzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fYWRkcmVzcywKLQkJCSAg
ICAgICAmc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyLAotCQkJICAg
ICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7Ci0JCX0KKwkJCSAgICAgICAoKHN0cnVj
dCBzb2NrYWRkciAqKSgmc3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRy
KSktPnNhX2xlbik7CisjZWxzZQorCQkJaWYgKHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlv
bi0+cm8uX2xfYWRkci5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJCW1lbWNweSgmc3N0
YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX2FkZHJlc3MsCisJCQkJICAgICAgICZzdGNiLT5hc29j
LnByaW1hcnlfZGVzdGluYXRpb24tPnJvLl9sX2FkZHIsCisJCQkJICAgICAgIHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW4pKTsKKwkJCX0gZWxzZSB7CisJCQkJbWVtY3B5KCZzc3RhdC0+c3N0YXRf
cHJpbWFyeS5zcGluZm9fYWRkcmVzcywKKwkJCQkgICAgICAgJnN0Y2ItPmFzb2MucHJpbWFyeV9k
ZXN0aW5hdGlvbi0+cm8uX2xfYWRkciwKKwkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbjYpKTsKKwkJCX0KICNlbmRpZgotCQluZXQgPSBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGlu
YXRpb247Ci0JCSgoc3RydWN0IHNvY2thZGRyX2luICopJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNw
aW5mb19hZGRyZXNzKS0+c2luX3BvcnQgPSBzdGNiLT5ycG9ydDsKLQkJLyoKLQkJICogQWdhaW4g
dGhlIHVzZXIgY2FuIGdldCBpbmZvIGZyb20gc2N0cF9jb25zdGFudHMuaAotCQkgKiBmb3Igd2hh
dCB0aGUgc3RhdGUgb2YgdGhlIG5ldHdvcmsgaXMuCi0JCSAqLwotCQlpZiAobmV0LT5kZXN0X3N0
YXRlICYgU0NUUF9BRERSX1VOQ09ORklSTUVEKSB7Ci0JCQkvKiBJdCdzIHVuY29uZmlybWVkICov
Ci0JCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX1VOQ09ORklSTUVE
OwotCQl9IGVsc2UgaWYgKG5ldC0+ZGVzdF9zdGF0ZSAmIFNDVFBfQUREUl9SRUFDSEFCTEUpIHsK
LQkJCS8qIEl0J3MgYWN0aXZlICovCi0JCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3Rh
dGUgPSBTQ1RQX0FDVElWRTsKLQkJfSBlbHNlIHsKLQkJCS8qIEl0J3MgaW5hY3RpdmUgKi8KLQkJ
CXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zdGF0ZSA9IFNDVFBfSU5BQ1RJVkU7Ci0JCX0K
LQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX2N3bmQgPSBuZXQtPmN3bmQ7Ci0JCXNzdGF0
LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19zcnR0ID0gbmV0LT5sYXN0c2EgPj4gU0NUUF9SVFRfU0hJ
RlQ7Ci0JCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19ydG8gPSBuZXQtPlJUTzsKLQkJc3N0
YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSA9IG5ldC0+bXR1OwotCQlzd2l0Y2ggKHN0Y2It
PmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbi0+cm8uX2xfYWRkci5zYS5zYV9mYW1pbHkpIHsKKwkJ
CSgoc3RydWN0IHNvY2thZGRyX2luICopJnNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19hZGRy
ZXNzKS0+c2luX3BvcnQgPSBzdGNiLT5ycG9ydDsKKwkJCS8qCisJCQkgKiBBZ2FpbiB0aGUgdXNl
ciBjYW4gZ2V0IGluZm8gZnJvbSBzY3RwX2NvbnN0YW50cy5oCisJCQkgKiBmb3Igd2hhdCB0aGUg
c3RhdGUgb2YgdGhlIG5ldHdvcmsgaXMuCisJCQkgKi8KKwkJCWlmIChuZXQtPmRlc3Rfc3RhdGUg
JiBTQ1RQX0FERFJfVU5DT05GSVJNRUQpIHsKKwkJCQkvKiBJdCdzIHVuY29uZmlybWVkICovCisJ
CQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0YXRlID0gU0NUUF9VTkNPTkZJUk1FRDsK
KwkJCX0gZWxzZSBpZiAobmV0LT5kZXN0X3N0YXRlICYgU0NUUF9BRERSX1JFQUNIQUJMRSkgewor
CQkJCS8qIEl0J3MgYWN0aXZlICovCisJCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3N0
YXRlID0gU0NUUF9BQ1RJVkU7CisJCQl9IGVsc2UgeworCQkJCS8qIEl0J3MgaW5hY3RpdmUgKi8K
KwkJCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3RhdGUgPSBTQ1RQX0lOQUNUSVZFOwor
CQkJfQorCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX2N3bmQgPSBuZXQtPmN3bmQ7CisJ
CQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9fc3J0dCA9IG5ldC0+bGFzdHNhID4+IFNDVFBf
UlRUX1NISUZUOworCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX3J0byA9IG5ldC0+UlRP
OworCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSA9IG5ldC0+bXR1OworCQkJc3dp
dGNoIChzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnJvLl9sX2FkZHIuc2Euc2FfZmFt
aWx5KSB7CiAjaWYgZGVmaW5lZChJTkVUKQotCQljYXNlIEFGX0lORVQ6Ci0JCQlzc3RhdC0+c3N0
YXRfcHJpbWFyeS5zcGluZm9fbXR1IC09IFNDVFBfTUlOX1Y0X09WRVJIRUFEOwotCQkJYnJlYWs7
CisJCQljYXNlIEFGX0lORVQ6CisJCQkJc3N0YXQtPnNzdGF0X3ByaW1hcnkuc3BpbmZvX210dSAt
PSBTQ1RQX01JTl9WNF9PVkVSSEVBRDsKKwkJCQlicmVhazsKICNlbmRpZgogI2lmIGRlZmluZWQo
SU5FVDYpCi0JCWNhc2UgQUZfSU5FVDY6Ci0JCQlzc3RhdC0+c3N0YXRfcHJpbWFyeS5zcGluZm9f
bXR1IC09IFNDVFBfTUlOX09WRVJIRUFEOwotCQkJYnJlYWs7CisJCQljYXNlIEFGX0lORVQ2Ogor
CQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgLT0gU0NUUF9NSU5fT1ZFUkhFQUQ7
CisJCQkJYnJlYWs7CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCWNhc2Ug
QUZfQ09OTjoKLQkJCXNzdGF0LT5zc3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgLT0gc2l6ZW9mKHN0
cnVjdCBzY3RwaGRyKTsKLQkJCWJyZWFrOworCQkJY2FzZSBBRl9DT05OOgorCQkJCXNzdGF0LT5z
c3RhdF9wcmltYXJ5LnNwaW5mb19tdHUgLT0gc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKTsKKwkJCQli
cmVhazsKICNlbmRpZgotCQlkZWZhdWx0OgotCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJy
ZWFrOworCQkJfQorCQl9IGVsc2UgeworCQkJbWVtc2V0KCZzc3RhdC0+c3N0YXRfcHJpbWFyeSwg
MCwgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhZGRyaW5mbykpOwogCQl9CiAJCXNzdGF0LT5zc3RhdF9w
cmltYXJ5LnNwaW5mb19hc3NvY19pZCA9IHNjdHBfZ2V0X2Fzc29jaWQoc3RjYik7CiAJCVNDVFBf
VENCX1VOTE9DSyhzdGNiKTsKQEAgLTMzNzIsNyArMzQ2Myw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc3J0by0+c3J0b19hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChzcnRvLT5zcnRvX2Fzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJ
CXNydG8tPnNydG9faW5pdGlhbCA9IGlucC0+c2N0cF9lcC5pbml0aWFsX3J0bzsKIAkJCQlzcnRv
LT5zcnRvX21heCA9IGlucC0+c2N0cF9lcC5zY3RwX21heHJ0bzsKQEAgLTM0MjgsNyArMzUyMCw4
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsK
IAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJ
CSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJ
CSAgICAoc2Fzb2MtPnNhc29jX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKHNhc29jLT5zYXNvY19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJ
U0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlzYXNvYy0+c2Fzb2NfY29va2llX2xpZmUgPSBUSUNL
U19UT19NU0VDKGlucC0+c2N0cF9lcC5kZWZfY29va2llX2xpZmUpOwogCQkJCXNhc29jLT5zYXNv
Y19hc29jbWF4cnh0ID0gaW5wLT5zY3RwX2VwLm1heF9zZW5kX3RpbWVzOwpAQCAtMzQ1OSw3ICsz
NTUyLDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVs
c2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8
fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8
fAotCQkJICAgIChzX2luZm8tPnNpbmZvX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkg
eworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYK
KwkJCSAgICAgKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkg
ewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJbWVtY3B5KHNfaW5mbywgJmlucC0+ZGVm
X3NlbmQsIHNpemVvZihpbnAtPmRlZl9zZW5kKSk7CiAJCQkJU0NUUF9JTlBfUlVOTE9DSyhpbnAp
OwpAQCAtMzU4NCw3ICszNjc4LDggQEAgc2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGlu
dCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChzY2FjdC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9G
VVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19VRFBUWVBFKSAmJgorCQkJICAgICAoc2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkpIHsKIAkJCQkvKiBnZXQgdGhlIGVuZHBvaW50IGFjdGl2ZSBrZXkgKi8KIAkJ
CQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCXNjYWN0LT5zY2FjdF9rZXludW1iZXIgPSBpbnAt
PnNjdHBfZXAuZGVmYXVsdF9rZXlpZDsKQEAgLTM2MjYsNyArMzcyMSw4IEBAIHNjdHBfZ2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2FjLT5nYXV0
aF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9m
bGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChzYWMtPmdhdXRoX2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQkvKiBnZXQgb2ZmIHRoZSBlbmRw
b2ludCAqLwogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJY2hrbGlzdCA9IGlucC0+c2N0
cF9lcC5sb2NhbF9hdXRoX2NodW5rczsKQEAgLTM3NTgsNyArMzg1NCw4IEBAIHNjdHBfZ2V0b3B0
KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJCX0gZWxzZSB7CiAJCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJCSAgICAoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCQkgICAgKGV2ZW50
LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCQkgICAgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJCSAgICAgKGV2ZW50LT5z
ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJCVNDVFBfSU5QX1JMT0NL
KGlucCk7CiAJCQkJCWV2ZW50LT5zZV9vbiA9IHNjdHBfaXNfZmVhdHVyZV9vbihpbnAsIGV2ZW50
X3R5cGUpOwogCQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC0zODMxLDcgKzM5MjgsOCBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJ
CQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkg
ICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkg
ICAgKGluZm8tPnNuZF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChp
bmZvLT5zbmRfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5Q
X1JMT0NLKGlucCk7CiAJCQkJaW5mby0+c25kX3NpZCA9IGlucC0+ZGVmX3NlbmQuc2luZm9fc3Ry
ZWFtOwogCQkJCWluZm8tPnNuZF9mbGFncyA9IGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3M7CkBA
IC0zODYzLDcgKzM5NjEsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpIHx8Ci0JCQkgICAgKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQ
RSkgJiYKKwkJCSAgICAgKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkp
IHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWluZm8tPnByX3BvbGljeSA9IFBSX1ND
VFBfUE9MSUNZKGlucC0+ZGVmX3NlbmQuc2luZm9fZmxhZ3MpOwogCQkJCWluZm8tPnByX3ZhbHVl
ID0gaW5wLT5kZWZfc2VuZC5zaW5mb190aW1ldG9saXZlOwpAQCAtMzk4NCw3ICs0MDgzLDggQEAg
c2N0cF9nZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAg
IChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAg
ICh0aGxkcy0+c3B0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKHRo
bGRzLT5zcHRfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCS8qIFVzZSBl
bmRwb2ludCBkZWZhdWx0cyAqLwogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJdGhsZHMt
PnNwdF9wYXRobWF4cnh0ID0gaW5wLT5zY3RwX2VwLmRlZl9uZXRfZmFpbHVyZTsKQEAgLTQxMDIs
NyArNDIwMiw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJ
fSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQ
RSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9P
TCkgfHwKLQkJCSAgICAoZW5jYXBzLT5zdWVfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0Mp
KSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICAoZW5jYXBzLT5zdWVfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkg
ewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJZW5jYXBzLT5zdWVfcG9ydCA9IGlucC0+
c2N0cF9lcC5wb3J0OwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQxMjksNyArNDIz
MCw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNl
IHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwK
IAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwK
LQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgo
aW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2
LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0so
aW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAtPmVjbl9zdXBwb3J0ZWQ7CiAJCQkJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOwpAQCAtNDE1Niw3ICs0MjU4LDggQEAgc2N0cF9nZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCWF2LT5hc3NvY192
YWx1ZSA9IGlucC0+cHJzY3RwX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7
CkBAIC00MTgzLDcgKzQyODYsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUp
ICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJ
CVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5hdXRoX3N1
cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC00MjEwLDcgKzQzMTQsOCBA
QCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJ
CQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkg
ICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkg
ICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7
CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5hc2NvbmZfc3VwcG9ydGVkOwogCQkJCVNDVFBf
SU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyMzcsNyArNDM0Miw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFs
dWUgPSBpbnAtPnJlY29uZmlnX3N1cHBvcnRlZDsKIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7
CkBAIC00MjY0LDcgKzQzNzAsOCBAQCBzY3RwX2dldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUp
ICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJ
CVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJYXYtPmFzc29jX3ZhbHVlID0gaW5wLT5ucnNhY2tf
c3VwcG9ydGVkOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQyOTEsNyArNDM5OCw4
IEBAIHNjdHBfZ2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsK
IAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJ
CSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJ
CSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5h
c3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5w
KTsKIAkJCQlhdi0+YXNzb2NfdmFsdWUgPSBpbnAtPnBrdGRyb3Bfc3VwcG9ydGVkOwogCQkJCVND
VFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQzMTgsNyArNDQyNiw4IEBAIHNjdHBfZ2V0b3B0KHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3Rw
X2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lk
ID09IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZV
VFVSRV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2Nf
dmFsdWUgPSAodWludDMyX3QpaW5wLT5sb2NhbF9zdHJyZXNldF9zdXBwb3J0OwogCQkJCVNDVFBf
SU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQ0MjAsNyArNDUyOSw4IEBAIHNjdHBfZ2V0b3B0KHN0cnVj
dCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9Q
Q0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlhdi0+YXNzb2NfdmFs
dWUgPSBpbnAtPm1heF9jd25kOwogCQkJCVNDVFBfSU5QX1JVTkxPQ0soaW5wKTsKQEAgLTQ0NjAs
MTMgKzQ1NzAsMTEgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CXVpbnQzMl90IHZyZl9pZDsKIAogCWlmIChvcHR2YWwgPT0gTlVMTCkgewotCQlTQ1RQX1BSSU5U
Rigib3B0dmFsIGlzIE5VTExcbiIpOwogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVJTlZBTCk7
CiAJfQogCWlucCA9IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqKXNvLT5zb19wY2I7CiAJaWYgKGlucCA9
PSBOVUxMKSB7Ci0JCVNDVFBfUFJJTlRGKCJpbnAgaXMgTlVMTD9cbiIpOwogCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwp
OwogCQlyZXR1cm4gKEVJTlZBTCk7CiAJfQpAQCAtNDYxNSw3ICs0NzIzLDggQEAgc2N0cF9zZXRv
cHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFND
VFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChh
di0+YXNzb2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPmlkYXRhX3N1cHBvcnRlZCA9IDA7CkBA
IC00NjU0LDE0ICs0NzYzLDE2IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
b3B0bmEKIAkJCX0gZWxzZSB7CiAJCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19UQ1BUWVBFKSB8fAogCQkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfSU5fVENQUE9PTCkgfHwKLQkJCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykgfHwKLQkJCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
CSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJCQkJICAgICAg
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCQlTQ1RQX0lOUF9XTE9D
SyhpbnApOwogCQkJCQlpbnAtPnNjdHBfY210X29uX29mZiA9IGF2LT5hc3NvY192YWx1ZTsKIAkJ
CQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJCX0KLQkJCQlpZiAoKGF2LT5hc3NvY19pZCA9
PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9B
TExfQVNTT0MpKSB7CisJCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19V
RFBUWVBFKSAmJgorCQkJCSAgICAoKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0Mp
IHx8CisJCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQkJ
U0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBf
YXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBA
IC00NzAzLDE0ICs0ODE0LDE2IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg
b3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwog
CQkJCWlucC0+c2N0cF9lcC5zY3RwX2RlZmF1bHRfY2NfbW9kdWxlID0gYXYtPmFzc29jX3ZhbHVl
OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoYXYtPmFzc29jX2lk
ID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
QUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19V
RFBUWVBFKSAmJgorCQkJICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykg
fHwKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NU
UF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29j
X2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNDcz
NSw3ICs0ODQ4LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CQlTQ1RQX0NIRUNLX0FORF9DQVNUKGNjX29wdCwgb3B0dmFsLCBzdHJ1Y3Qgc2N0cF9jY19vcHRp
b24sIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIGNjX29wdC0+YWlkX3Zh
bHVlLmFzc29jX2lkKTsKIAkJaWYgKHN0Y2IgPT0gTlVMTCkgewotCQkJaWYgKGNjX29wdC0+YWlk
X3ZhbHVlLmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgeworCQkJaWYgKChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgIChjY19vcHQtPmFp
ZF92YWx1ZS5hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpKSB7CiAJCQkJU0NUUF9JTlBf
UkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3Qs
IHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNDc3NiwyOSAr
NDg5MCwzNSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0K
IAkJU0NUUF9GSU5EX1NUQ0IoaW5wLCBzdGNiLCBhdi0+YXNzb2NfaWQpOwogCQlpZiAoc3RjYikg
eworCQkJU0NUUF9UQ0JfU0VORF9MT0NLKHN0Y2IpOwogCQkJc3RjYi0+YXNvYy5zc19mdW5jdGlv
bnMuc2N0cF9zc19jbGVhcihzdGNiLCAmc3RjYi0+YXNvYywgMSwgMSk7CiAJCQlzdGNiLT5hc29j
LnNzX2Z1bmN0aW9ucyA9IHNjdHBfc3NfZnVuY3Rpb25zW2F2LT5hc3NvY192YWx1ZV07CiAJCQlz
dGNiLT5hc29jLnN0cmVhbV9zY2hlZHVsaW5nX21vZHVsZSA9IGF2LT5hc3NvY192YWx1ZTsKIAkJ
CXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfaW5pdChzdGNiLCAmc3RjYi0+YXNvYywg
MSk7CisJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCVNDVFBfVENCX1VOTE9DSyhz
dGNiKTsKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1Nf
SU5fVENQUE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09D
KSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAo
KGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwog
CQkJCWlucC0+c2N0cF9lcC5zY3RwX2RlZmF1bHRfc3NfbW9kdWxlID0gYXYtPmFzc29jX3ZhbHVl
OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoYXYtPmFzc29jX2lk
ID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
QUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19V
RFBUWVBFKSAmJgorCQkJICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykg
fHwKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NU
UF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29j
X2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOworCQkJCQlT
Q1RQX1RDQl9TRU5EX0xPQ0soc3RjYik7CiAJCQkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNj
dHBfc3NfY2xlYXIoc3RjYiwgJnN0Y2ItPmFzb2MsIDEsIDEpOwogCQkJCQlzdGNiLT5hc29jLnNz
X2Z1bmN0aW9ucyA9IHNjdHBfc3NfZnVuY3Rpb25zW2F2LT5hc3NvY192YWx1ZV07CiAJCQkJCXN0
Y2ItPmFzb2Muc3RyZWFtX3NjaGVkdWxpbmdfbW9kdWxlID0gYXYtPmFzc29jX3ZhbHVlOwogCQkJ
CQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX2luaXQoc3RjYiwgJnN0Y2ItPmFzb2Ms
IDEpOworCQkJCQlTQ1RQX1RDQl9TRU5EX1VOTE9DSyhzdGNiKTsKIAkJCQkJU0NUUF9UQ0JfVU5M
T0NLKHN0Y2IpOwogCQkJCX0KIAkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CkBAIC00ODIxLDcg
KzQ5NDEsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCQl9
CiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCX0gZWxzZSB7Ci0JCQlpZiAoYXYtPmFzc29j
X2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9D
VVJSRU5UX0FTU09DKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JF
QUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NU
UF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTQ4NTksMTQgKzQ5ODAsMTYgQEAgc2N0cF9zZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8
fAorCQkJICAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVND
VFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5wLT5zY3RwX2NvbnRleHQgPSBhdi0+YXNzb2NfdmFs
dWU7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJaWYgKChhdi0+YXNzb2Nf
aWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1VEUFRZUEUpICYmCisJCQkgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09D
KSB8fAorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlT
Q1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fz
b2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC01
MDQwLDggKzUxNjMsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RD
UFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RD
UFBPT0wpIHx8Ci0JCQkgICAgKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpIHx8Ci0JCQkgICAgKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7
CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgor
CQkJICAgICAoKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJ
CQkgICAgICAoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJ
CVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYgKHNhY2stPnNhY2tfZGVsYXkpIHsKIAkJCQkJ
aW5wLT5zY3RwX2VwLnNjdHBfdGltZW91dHRpY2tzW1NDVFBfVElNRVJfUkVDVl0gPSBNU0VDX1RP
X1RJQ0tTKHNhY2stPnNhY2tfZGVsYXkpOwpAQCAtNTA1MSw4ICs1MTc1LDkgQEAgc2N0cF9zZXRv
cHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJCX0KIAkJCQlTQ1RQX0lOUF9XVU5M
T0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKHNhY2stPnNhY2tfYXNzb2NfaWQgPT0gU0NUUF9DVVJS
RU5UX0FTU09DKSB8fAotCQkJICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQUxMX0FT
U09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICgoc2Fjay0+c2Fja19hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0Mp
IHx8CisJCQkgICAgIChzYWNrLT5zYWNrX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsK
IAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5z
Y3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7
CkBAIC01MTM5LDggKzUyNjQsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50
IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNjYS0+c2NhX2Fzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSB8fAotCQkJICAgIChzY2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykp
IHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYm
CisJCQkgICAgICgoc2NhLT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJ
CQkgICAgICAoc2NhLT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlT
Q1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCXNoYXJlZF9rZXlzID0gJmlucC0+c2N0cF9lcC5zaGFy
ZWRfa2V5czsKIAkJCQkvKgpAQCAtNTE3NCw4ICs1MzAwLDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0
IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJCWVycm9yID0gc2N0cF9pbnNlcnRfc2hhcmVka2V5
KHNoYXJlZF9rZXlzLCBzaGFyZWRfa2V5KTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJ
CQl9Ci0JCQlpZiAoKHNjYS0+c2NhX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwK
LQkJCSAgICAoc2NhLT5zY2FfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChz
Y2EtPnNjYV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChzY2Et
PnNjYV9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0so
aW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBf
dGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTI4Myw4ICs1NDEwLDkg
QEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2Ugewog
CQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJ
ICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJ
ICAgIChzY2FjdC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkg
ICAgKHNjYWN0LT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCSAgICAo
KGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICgo
c2NhY3QtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJICAgICAg
KHNjYWN0LT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSkgewogCQkJCVNDVFBf
SU5QX1dMT0NLKGlucCk7CiAJCQkJaWYgKHNjdHBfYXV0aF9zZXRhY3RpdmVrZXlfZXAoaW5wLCBz
Y2FjdC0+c2NhY3Rfa2V5bnVtYmVyKSkgewogCQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwg
TlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwpAQCAtNTI5Miw4ICs1
NDIwLDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJCX0K
IAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKHNjYWN0LT5zY2FjdF9h
c3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKHNjYWN0LT5zY2FjdF9h
c3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKHNjYWN0LT5zY2FjdF9hc3NvY19p
ZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChzY2FjdC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9BTExfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJ
TElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsK
IAkJCQkJU0NUUF9UQ0JfTE9DSyhzdGNiKTsKQEAgLTUzMjIsOCArNTQ1MSw5IEBAIHNjdHBfc2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoc2NkZWwt
PnNjYWN0X2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChzY2RlbC0+
c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoKHNjZGVsLT5zY2Fj
dF9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChzY2RlbC0+c2Nh
Y3RfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhp
bnApOwogCQkJCWlmIChzY3RwX2RlbGV0ZV9zaGFyZWRrZXlfZXAoaW5wLCBzY2RlbC0+c2NhY3Rf
a2V5bnVtYmVyKSkgewogCQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwg
U0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwpAQCAtNTMzMSw4ICs1NDYxLDkgQEAgc2N0
cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJCX0KIAkJCQlTQ1RQX0lO
UF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKHNjZGVsLT5zY2FjdF9hc3NvY19pZCA9PSBT
Q1RQX0NVUlJFTlRfQVNTT0MpIHx8Ci0JCQkgICAgKHNjZGVsLT5zY2FjdF9hc3NvY19pZCA9PSBT
Q1RQX0FMTF9BU1NPQykpIHsKKwkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxB
R1NfVURQVFlQRSkgJiYKKwkJCSAgICAoKHNjZGVsLT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0NV
UlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChzY2RlbC0+c2NhY3RfYXNzb2NfaWQgPT0gU0NUUF9B
TExfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1JMT0NLKGlucCk7CiAJCQkJTElTVF9GT1JFQUNI
KHN0Y2IsICZpbnAtPnNjdHBfYXNvY19saXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJU0NUUF9U
Q0JfTE9DSyhzdGNiKTsKQEAgLTUzNjEsOCArNTQ5Miw5IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBz
b2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdz
ICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAoa2V5aWQtPnNjYWN0X2Fzc29j
X2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAotCQkJICAgIChrZXlpZC0+c2NhY3RfYXNzb2Nf
aWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoKGtleWlkLT5zY2FjdF9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKKwkJCSAgICAgIChrZXlpZC0+c2NhY3RfYXNzb2NfaWQg
PT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlm
IChzY3RwX2RlYWN0X3NoYXJlZGtleV9lcChpbnAsIGtleWlkLT5zY2FjdF9rZXludW1iZXIpKSB7
CiAJCQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NU
UF9VU1JSRVEsIEVJTlZBTCk7CkBAIC01MzcwLDggKzU1MDIsOSBAQCBzY3RwX3NldG9wdChzdHJ1
Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCQkJfQogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5w
KTsKIAkJCX0KLQkJCWlmICgoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9B
U1NPQykgfHwKLQkJCSAgICAoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09D
KSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAm
JgorCQkJICAgICgoa2V5aWQtPnNjYWN0X2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykg
fHwKKwkJCSAgICAgKGtleWlkLT5zY2FjdF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7
CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+
c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2Ip
OwpAQCAtNTQwMCwxNCArNTUzMywxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENC
X0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJ
ICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCSAg
ICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJCQkgICAgICAoYXYt
PmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5w
KTsKIAkJCQlpbnAtPmxvY2FsX3N0cnJlc2V0X3N1cHBvcnQgPSAodWludDhfdClhdi0+YXNzb2Nf
dmFsdWU7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJfQotCQkJaWYgKChhdi0+YXNz
b2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0g
U0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZM
QUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5UX0FT
U09DKSB8fAorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJ
CQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJU1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3Rw
X2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBA
IC01NDI5LDcgKzU1NjQsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hCiAJCVNDVFBfQ0hFQ0tfQU5EX0NBU1Qoc3RycnN0LCBvcHR2YWwsIHN0cnVjdCBzY3RwX3Jl
c2V0X3N0cmVhbXMsIG9wdHNpemUpOwogCQlTQ1RQX0ZJTkRfU1RDQihpbnAsIHN0Y2IsIHN0cnJz
dC0+c3JzX2Fzc29jX2lkKTsKIAkJaWYgKHN0Y2IgPT0gTlVMTCkgewotCQkgICAgICAgIFNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVO
T0VOVCk7CisJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9N
X1NDVFBfVVNSUkVRLCBFTk9FTlQpOwogCQkJZXJyb3IgPSBFTk9FTlQ7CiAJCQlicmVhazsKIAkJ
fQpAQCAtNTQ0Miw2ICs1NTc3LDEyIEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBp
bnQgb3B0bmEKIAkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKIAkJCWJyZWFrOwogCQl9CisJCWlm
IChTQ1RQX0dFVF9TVEFURShzdGNiKSAhPSBTQ1RQX1NUQVRFX09QRU4pIHsKKwkJCVNDVFBfTFRS
QUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVJTlZB
TCk7CisJCQllcnJvciA9IEVJTlZBTDsKKwkJCVNDVFBfVENCX1VOTE9DSyhzdGNiKTsKKwkJCWJy
ZWFrOworCQl9CiAJCWlmIChzaXplb2Yoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcykgKwogCQkg
ICAgc3RycnN0LT5zcnNfbnVtYmVyX3N0cmVhbXMgKiBzaXplb2YodWludDE2X3QpID4gb3B0c2l6
ZSkgewogCQkJZXJyb3IgPSBFSU5WQUw7CkBAIC01NDc0LDEzICs1NjE1LDEzIEBAIHNjdHBfc2V0
b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfQogCQlmb3IgKGkgPSAwOyBpIDwg
c3RycnN0LT5zcnNfbnVtYmVyX3N0cmVhbXM7IGkrKykgewogCQkJaWYgKChzZW5kX2luKSAmJgot
CQkJICAgIChzdHJyc3QtPnNyc19zdHJlYW1fbGlzdFtpXSA+IHN0Y2ItPmFzb2Muc3RyZWFtaW5j
bnQpKSB7CisJCQkgICAgKHN0cnJzdC0+c3JzX3N0cmVhbV9saXN0W2ldID49IHN0Y2ItPmFzb2Mu
c3RyZWFtaW5jbnQpKSB7CiAJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCQllcnJvciA9IEVJTlZBTDsKIAkJ
CQlicmVhazsKIAkJCX0KIAkJCWlmICgoc2VuZF9vdXQpICYmCi0JCQkgICAgKHN0cnJzdC0+c3Jz
X3N0cmVhbV9saXN0W2ldID4gc3RjYi0+YXNvYy5zdHJlYW1vdXRjbnQpKSB7CisJCQkgICAgKHN0
cnJzdC0+c3JzX3N0cmVhbV9saXN0W2ldID49IHN0Y2ItPmFzb2Muc3RyZWFtb3V0Y250KSkgewog
CQkJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9V
U1JSRVEsIEVJTlZBTCk7CiAJCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQkJYnJlYWs7CkBAIC01NTQx
LDcgKzU2ODIsNyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJ
CVNDVFBfQ0hFQ0tfQU5EX0NBU1Qoc3RyYWRkLCBvcHR2YWwsIHN0cnVjdCBzY3RwX2FkZF9zdHJl
YW1zLCBvcHRzaXplKTsKIAkJU0NUUF9GSU5EX1NUQ0IoaW5wLCBzdGNiLCBzdHJhZGQtPnNhc19h
c3NvY19pZCk7CiAJCWlmIChzdGNiID09IE5VTEwpIHsKLQkJICAgICAgICBTQ1RQX0xUUkFDRV9F
UlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9FTlQpOwor
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VT
UlJFUSwgRU5PRU5UKTsKIAkJCWVycm9yID0gRU5PRU5UOwogCQkJYnJlYWs7CiAJCX0KQEAgLTU1
NTQsNiArNTY5NSwxMiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
CiAJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CiAJCQlicmVhazsKIAkJfQorCQlpZiAoU0NUUF9H
RVRfU1RBVEUoc3RjYikgIT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQlTQ1RQX0xUUkFDRV9FUlJf
UkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOworCQkJ
ZXJyb3IgPSBFSU5WQUw7CisJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQlicmVhazsKKwkJ
fQogCQlpZiAoc3RjYi0+YXNvYy5zdHJlYW1fcmVzZXRfb3V0c3RhbmRpbmcpIHsKIAkJCVNDVFBf
TFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVB
TFJFQURZKTsKIAkJCWVycm9yID0gRUFMUkVBRFk7CkBAIC01NjIxLDYgKzU3NjgsMTIgQEAgc2N0
cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJU0NUUF9UQ0JfVU5MT0NL
KHN0Y2IpOwogCQkJYnJlYWs7CiAJCX0KKwkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpICE9IFND
VFBfU1RBVEVfT1BFTikgeworCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKKwkJCWVycm9yID0gRUlOVkFMOworCQkJ
U0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOworCQkJYnJlYWs7CisJCX0KIAkJaWYgKHN0Y2ItPmFzb2Mu
c3RyZWFtX3Jlc2V0X291dHN0YW5kaW5nKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwg
TlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFQUxSRUFEWSk7CiAJCQllcnJvciA9
IEVBTFJFQURZOwpAQCAtNTczNSwxNCArNTg4OCwxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29j
a2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFND
VFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQ
X0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09D
KSkgeworCQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkg
JiYKKwkJCSAgICAgKChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8CisJCQkg
ICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpKSB7CiAJCQkJU0NUUF9JTlBf
V0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAubWF4X2J1cnN0ID0gYXYtPmFzc29jX3ZhbHVl
OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJCX0KLQkJCWlmICgoYXYtPmFzc29jX2lk
ID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBf
QUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19V
RFBUWVBFKSAmJgorCQkJICAgICgoYXYtPmFzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykg
fHwKKwkJCSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NU
UF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29j
X2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNTc3
OCw3ICs1OTMzLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BU
WVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQ
T09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
ICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCS8qIEZJWE1FIE1UOiBJIHRoaW5rIHRoaXMgaXMgbm90IGluIHR1
bmUgd2l0aCB0aGUgQVBJIElEICovCiAJCQkJaWYgKGF2LT5hc3NvY192YWx1ZSkgewpAQCAtNTk4
MywxNCArNjEzOSwxNiBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5h
CiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RD
UFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RD
UFBPT0wpIHx8Ci0JCQkgICAgKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpIHx8Ci0JCQkgICAgKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNT
T0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBF
KSAmJgorCQkJICAgICAoKHNfaW5mby0+c2luZm9fYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNT
T0MpIHx8CisJCQkgICAgICAoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NP
QykpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJbWVtY3B5KCZpbnAtPmRlZl9z
ZW5kLCBzX2luZm8sIG1pbihvcHRzaXplLCBzaXplb2YoaW5wLT5kZWZfc2VuZCkpKTsKIAkJCQlT
Q1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKHNfaW5mby0+c2luZm9fYXNzb2Nf
aWQgPT0gU0NUUF9DVVJSRU5UX0FTU09DKSB8fAotCQkJICAgIChzX2luZm8tPnNpbmZvX2Fzc29j
X2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgoc19pbmZvLT5zaW5mb19hc3NvY19pZCA9
PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChzX2luZm8tPnNpbmZvX2Fzc29jX2lk
ID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9STE9DSyhpbnApOwogCQkJCUxJ
U1RfRk9SRUFDSChzdGNiLCAmaW5wLT5zY3RwX2Fzb2NfbGlzdCwgc2N0cF90Y2JsaXN0KSB7CiAJ
CQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC02MTA5LDYgKzYyNjcsMTQgQEAgc2N0cF9zZXRv
cHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChp
bnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgRUlOVkFMKTsKIAkJCXJldHVy
biAoRUlOVkFMKTsKIAkJfQorCQlpZiAoKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX1BNVFVEX0RJ
U0FCTEUpICYmCisJCSAgICAoKHBhZGRycC0+c3BwX3BhdGhtdHUgPCBTQ1RQX1NNQUxMRVNUX1BN
VFUpIHx8CisJCSAgICAgKHBhZGRycC0+c3BwX3BhdGhtdHUgPiBTQ1RQX0xBUkdFU1RfUE1UVSkp
KSB7CisJCQlpZiAoc3RjYikKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQlTQ1RQX0xU
UkFDRV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5W
QUwpOworCQkJcmV0dXJuIChFSU5WQUwpOworCQl9CiAKIAkJaWYgKHN0Y2IgIT0gTlVMTCkgewog
CQkJLyoqKioqKioqKioqKioqKioqKioqKioqKlRDQiBTUEVDSUZJQyBTRVQgKioqKioqKioqKioq
KioqKioqLwpAQCAtNjEzNCwxMiArNjMwMCwxMyBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hCiAJCQkJCW5ldC0+ZGVzdF9zdGF0ZSAmPSB+U0NUUF9BRERSX05PSEI7
CiAJCQkJfQogCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9IQl9ERU1BTkQpIHsKLQkJ
CQkJLyogb24gZGVtYW5kIEhCICovCi0JCQkJCXNjdHBfc2VuZF9oYihzdGNiLCBuZXQsIFNDVFBf
U09fTE9DS0VEKTsKLQkJCQkJc2N0cF9jaHVua19vdXRwdXQoaW5wLCBzdGNiLCAgU0NUUF9PVVRQ
VVRfRlJPTV9TT0NLT1BULCBTQ1RQX1NPX0xPQ0tFRCk7Ci0JCQkJCXNjdHBfdGltZXJfc3RhcnQo
U0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgaW5wLCBzdGNiLCBuZXQpOworCQkJCQlpZiAoU0NU
UF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9PUEVOKSB7CisJCQkJCQlzY3RwX3NlbmRf
aGIoc3RjYiwgbmV0LCBTQ1RQX1NPX0xPQ0tFRCk7CisJCQkJCQlzY3RwX2NodW5rX291dHB1dChp
bnAsIHN0Y2IsICBTQ1RQX09VVFBVVF9GUk9NX1NPQ0tPUFQsIFNDVFBfU09fTE9DS0VEKTsKKwkJ
CQkJCXNjdHBfdGltZXJfc3RhcnQoU0NUUF9USU1FUl9UWVBFX0hFQVJUQkVBVCwgaW5wLCBzdGNi
LCBuZXQpOworCQkJCQl9CiAJCQkJfQotCQkJCWlmICgocGFkZHJwLT5zcHBfZmxhZ3MgJiBTUFBf
UE1UVURfRElTQUJMRSkgJiYgKHBhZGRycC0+c3BwX3BhdGhtdHUgPj0gU0NUUF9TTUFMTEVTVF9Q
TVRVKSkgeworCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9QTVRVRF9ESVNBQkxFKSB7
CiAJCQkJCWlmIChTQ1RQX09TX1RJTUVSX1BFTkRJTkcoJm5ldC0+cG10dV90aW1lci50aW1lcikp
IHsKIAkJCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfUEFUSE1UVVJBSVNFLCBp
bnAsIHN0Y2IsIG5ldCwKIAkJCQkJCQkJU0NUUF9GUk9NX1NDVFBfVVNSUkVRICsgU0NUUF9MT0Nf
MTEpOwpAQCAtNjI4Niw3ICs2NDUzLDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYQogCQkJCQl9CiAJCQkJCXNjdHBfc3RjYl9mZWF0dXJlX29uKGlucCwgc3RjYiwg
U0NUUF9QQ0JfRkxBR1NfRE9OT1RfSEVBUlRCRUFUKTsKIAkJCQl9Ci0JCQkJaWYgKChwYWRkcnAt
PnNwcF9mbGFncyAmIFNQUF9QTVRVRF9ESVNBQkxFKSAmJiAocGFkZHJwLT5zcHBfcGF0aG10dSA+
PSBTQ1RQX1NNQUxMRVNUX1BNVFUpKSB7CisJCQkJaWYgKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQ
X1BNVFVEX0RJU0FCTEUpIHsKIAkJCQkJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29jLm5l
dHMsIHNjdHBfbmV4dCkgewogCQkJCQkJaWYgKFNDVFBfT1NfVElNRVJfUEVORElORygmbmV0LT5w
bXR1X3RpbWVyLnRpbWVyKSkgewogCQkJCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZ
UEVfUEFUSE1UVVJBSVNFLCBpbnAsIHN0Y2IsIG5ldCwKQEAgLTYzNTYsNyArNjUyMyw4IEBAIHNj
dHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJCS8qKioqKioqKioqKioq
KioqKioqKioqKipOTyBUQ0IsIFNFVCBUTyBkZWZhdWx0IHN0dWZmICoqKioqKioqKioqKioqKioq
Ki8KIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwK
IAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwK
LQkJCSAgICAocGFkZHJwLT5zcHBfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
ICAgICAocGFkZHJwLT5zcHBfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJ
CVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJLyoKIAkJCQkgKiBGb3IgdGhlIFRPUy9GTE9XTEFC
RUwgc3R1ZmYgeW91IHNldCBpdApAQCAtNjM4OCw5ICs2NTU2LDcgQEAgc2N0cF9zZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJCQlpbnAtPnNjdHBfZXAuZGVmYXVsdF9tdHUg
PSAwOwogCQkJCQlzY3RwX2ZlYXR1cmVfb2ZmKGlucCwgU0NUUF9QQ0JfRkxBR1NfRE9fTk9UX1BN
VFVEKTsKIAkJCQl9IGVsc2UgaWYgKHBhZGRycC0+c3BwX2ZsYWdzICYgU1BQX1BNVFVEX0RJU0FC
TEUpIHsKLQkJCQkJaWYgKHBhZGRycC0+c3BwX3BhdGhtdHUgPj0gU0NUUF9TTUFMTEVTVF9QTVRV
KSB7Ci0JCQkJCQlpbnAtPnNjdHBfZXAuZGVmYXVsdF9tdHUgPSBwYWRkcnAtPnNwcF9wYXRobXR1
OwotCQkJCQl9CisJCQkJCWlucC0+c2N0cF9lcC5kZWZhdWx0X210dSA9IHBhZGRycC0+c3BwX3Bh
dGhtdHU7CiAJCQkJCXNjdHBfZmVhdHVyZV9vbihpbnAsIFNDVFBfUENCX0ZMQUdTX0RPX05PVF9Q
TVRVRCk7CiAJCQkJfQogCQkJCWlmIChwYWRkcnAtPnNwcF9mbGFncyAmIFNQUF9EU0NQKSB7CkBA
IC02NDQ2LDcgKzY2MTIsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpIHx8Ci0JCQkgICAgKHNydG8tPnNydG9fYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVf
QVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBU
WVBFKSAmJgorCQkJICAgICAoc3J0by0+c3J0b19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NP
QykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpZiAoc3J0by0+c3J0b19pbml0
aWFsKQogCQkJCQluZXdfaW5pdCA9IHNydG8tPnNydG9faW5pdGlhbDsKQEAgLTY1MDAsNyArNjY2
Nyw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNl
IHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwK
IAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwK
LQkJCSAgICAoc2Fzb2MtPnNhc29jX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgewor
CQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAgKHNhc29jLT5zYXNvY19hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJ
CQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpZiAoc2Fzb2MtPnNhc29jX2Fzb2NtYXhyeHQp
CiAJCQkJCWlucC0+c2N0cF9lcC5tYXhfc2VuZF90aW1lcyA9IHNhc29jLT5zYXNvY19hc29jbWF4
cnh0OwpAQCAtNjk2Nyw4ICs3MTM1LDcgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28s
IGludCBvcHRuYQogCQkJCSAqIHNvIHJldHVybiBhbiBlcnJvciBmb3Igc2VuZGVyIGRyeSBldmVu
dHMKIAkJCQkgKi8KIAkJCQlpZiAoKGV2ZW50X3R5cGUgPT0gU0NUUF9QQ0JfRkxBR1NfRFJZRVZO
VCkgJiYKLQkJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBF
KSA9PSAwKSAmJgotCQkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpID09IDApICYmCisJCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9G
TEFHU19VRFBUWVBFKSAmJgogCQkJCSAgICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykgfHwKIAkJCQkgICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9DVVJSRU5U
X0FTU09DKSkpIHsKIAkJCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQX1VTUlJFUSwgRU5PVFNVUCk7CkBAIC02OTc3LDggKzcxNDQsOSBAQCBzY3Rw
X3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCQkJfQogCQkJCWlmICgoaW5w
LT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCQkgICAgKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkJICAgIChldmVu
dC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkJICAgIChldmVudC0+
c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkJICAgICgoaW5wLT5zY3RwX2Zs
YWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJCQkgICAgICgoZXZlbnQtPnNlX2Fz
c29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSB8fAorCQkJCSAgICAgIChldmVudC0+c2VfYXNz
b2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSkpIHsKIAkJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsK
IAkJCQkJaWYgKGV2ZW50LT5zZV9vbikgewogCQkJCQkJc2N0cF9mZWF0dXJlX29uKGlucCwgZXZl
bnRfdHlwZSk7CkBAIC02OTg3LDggKzcxNTUsOSBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0
ICpzbywgaW50IG9wdG5hCiAJCQkJCX0KIAkJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwogCQkJ
CX0KLQkJCQlpZiAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8
Ci0JCQkJICAgIChldmVudC0+c2VfYXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQkJ
aWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJCSAg
ICAoKGV2ZW50LT5zZV9hc3NvY19pZCA9PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkJICAg
ICAoZXZlbnQtPnNlX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkpIHsKIAkJCQkJU0NUUF9J
TlBfUkxPQ0soaW5wKTsKIAkJCQkJTElTVF9GT1JFQUNIKHN0Y2IsICZpbnAtPnNjdHBfYXNvY19s
aXN0LCBzY3RwX3RjYmxpc3QpIHsKIAkJCQkJCVNDVFBfVENCX0xPQ0soc3RjYik7CkBAIC03MDAy
LDYgKzcxNzEsMTAgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CQkJCQlTQ1RQX0lOUF9SVU5MT0NLKGlucCk7CiAJCQkJfQogCQkJfQorCQl9IGVsc2UgeworCQkJ
aWYgKHN0Y2IpIHsKKwkJCQlTQ1RQX1RDQl9VTkxPQ0soc3RjYik7CisJCQl9CiAJCX0KIAkJYnJl
YWs7CiAJfQpAQCAtNzA1Nyw4ICs3MjMwLDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAq
c28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BD
Ql9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5zbmRfYXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpIHx8Ci0JCQkgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9PSBTQ1RQX0FM
TF9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgICgoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfRlVUVVJFX0FT
U09DKSB8fAorCQkJICAgICAgKGluZm8tPnNuZF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykp
KSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaW5wLT5kZWZfc2VuZC5zaW5mb19z
dHJlYW0gPSBpbmZvLT5zbmRfc2lkOwogCQkJCXBvbGljeSA9IFBSX1NDVFBfUE9MSUNZKGlucC0+
ZGVmX3NlbmQuc2luZm9fZmxhZ3MpOwpAQCAtNzA2OCw4ICs3MjQyLDkgQEAgc2N0cF9zZXRvcHQo
c3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJCWlucC0+ZGVmX3NlbmQuc2luZm9fY29u
dGV4dCA9IGluZm8tPnNuZF9jb250ZXh0OwogCQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKIAkJ
CX0KLQkJCWlmICgoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwK
LQkJCSAgICAoaW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09DKSkgeworCQkJaWYg
KChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICgo
aW5mby0+c25kX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKKwkJCSAgICAgKGlu
Zm8tPnNuZF9hc3NvY19pZCA9PSBTQ1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxP
Q0soaW5wKTsKIAkJCQlMSVNUX0ZPUkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNj
dHBfdGNibGlzdCkgewogCQkJCQlTQ1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzA5Niw2ICs3Mjcx
LDkgQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQlTQ1RQX0ZJ
TkRfU1RDQihpbnAsIHN0Y2IsIGluZm8tPnByX2Fzc29jX2lkKTsKIAogCQlpZiAoaW5mby0+cHJf
cG9saWN5ID4gU0NUUF9QUl9TQ1RQX01BWCkgeworCQkJaWYgKHN0Y2IpIHsKKwkJCQlTQ1RQX1RD
Ql9VTkxPQ0soc3RjYik7CisJCQl9CiAJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQkJZXJyb3IgPSBFSU5WQUw7
CiAJCQlicmVhazsKQEAgLTcxMDgsMTYgKzcyODYsMTggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNv
Y2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3Mg
JiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChpbmZvLT5wcl9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+cHJfYXNzb2NfaWQgPT0gU0NU
UF9BTExfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19VRFBUWVBFKSAmJgorCQkJICAgICAoKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfRlVUVVJF
X0FTU09DKSB8fAorCQkJICAgICAgKGluZm8tPnByX2Fzc29jX2lkID09IFNDVFBfQUxMX0FTU09D
KSkpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZv
X2ZsYWdzICY9IDB4ZmZmMDsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX2ZsYWdzIHw9IGluZm8t
PnByX3BvbGljeTsKIAkJCQlpbnAtPmRlZl9zZW5kLnNpbmZvX3RpbWV0b2xpdmUgPSBpbmZvLT5w
cl92YWx1ZTsKIAkJCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCQl9Ci0JCQlpZiAoKGluZm8t
PnByX2Fzc29jX2lkID09IFNDVFBfQ1VSUkVOVF9BU1NPQykgfHwKLQkJCSAgICAoaW5mby0+cHJf
YXNzb2NfaWQgPT0gU0NUUF9BTExfQVNTT0MpKSB7CisJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgKChpbmZvLT5wcl9hc3NvY19pZCA9
PSBTQ1RQX0NVUlJFTlRfQVNTT0MpIHx8CisJCQkgICAgIChpbmZvLT5wcl9hc3NvY19pZCA9PSBT
Q1RQX0FMTF9BU1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfUkxPQ0soaW5wKTsKIAkJCQlMSVNUX0ZP
UkVBQ0goc3RjYiwgJmlucC0+c2N0cF9hc29jX2xpc3QsIHNjdHBfdGNibGlzdCkgewogCQkJCQlT
Q1RQX1RDQl9MT0NLKHN0Y2IpOwpAQCAtNzIyNCw2ICs3NDA0LDkgQEAgc2N0cF9zZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQkJfQogCQl9CiAJCWlmICh0aGxkcy0+c3B0X3Bh
dGhjcHRobGQgIT0gMHhmZmZmKSB7CisJCQlpZiAoc3RjYiAhPSBOVUxMKSB7CisJCQkJU0NUUF9U
Q0JfVU5MT0NLKHN0Y2IpOworCQkJfQogCQkJZXJyb3IgPSBFSU5WQUw7CiAJCQlTQ1RQX0xUUkFD
RV9FUlJfUkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7
CiAJCQlicmVhazsKQEAgLTcyOTgsNyArNzQ4MSw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2Nr
ZXQgKnNvLCBpbnQgb3B0bmEKIAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYg
U0NUUF9QQ0JfRkxBR1NfVENQVFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NU
UF9QQ0JfRkxBR1NfSU5fVENQUE9PTCkgfHwKLQkJCSAgICAodGhsZHMtPnNwdF9hc3NvY19pZCA9
PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBf
UENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgICh0aGxkcy0+c3B0X2Fzc29jX2lkID09IFND
VFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlucC0+
c2N0cF9lcC5kZWZfbmV0X2ZhaWx1cmUgPSB0aGxkcy0+c3B0X3BhdGhtYXhyeHQ7CiAJCQkJaW5w
LT5zY3RwX2VwLmRlZl9uZXRfcGZfdGhyZXNob2xkID0gdGhsZHMtPnNwdF9wYXRocGZ0aGxkOwpA
QCAtNzQxMSw3ICs3NTk1LDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBv
cHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFH
U19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19J
Tl9UQ1BQT09MKSB8fAotCQkJICAgIChlbmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVS
RV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VE
UFRZUEUpICYmCisJCQkgICAgIChlbmNhcHMtPnN1ZV9hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9B
U1NPQykpKSB7CiAJCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKIAkJCQlpbnAtPnNjdHBfZXAucG9y
dCA9IGVuY2Fwcy0+c3VlX3BvcnQ7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwpAQCAtNzQz
Niw3ICs3NjIxLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BU
WVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQ
T09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
ICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAt
PmVjbl9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ2NSw3ICs3NjUxLDggQEAgc2N0cF9zZXRvcHQoc3Ry
dWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBf
ZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQg
PT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQ
X1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVU
VVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNz
b2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAtPnByc2N0cF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzQ5
NCw3ICs3NjgxLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BU
WVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQ
T09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
ICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlpZiAoKGF2
LT5hc3NvY192YWx1ZSA9PSAwKSAmJgogCQkJCSAgICAoaW5wLT5hc2NvbmZfc3VwcG9ydGVkID09
IDEpKSB7CiAJCQkJICAgIAkvKiBBVVRIIGlzIHJlcXVpcmVkIGZvciBBU0NPTkYgKi8KQEAgLTc1
MzAsNyArNzcxOCw4IEBAIHNjdHBfc2V0b3B0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgb3B0bmEK
IAkJfSBlbHNlIHsKIAkJCWlmICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVENQ
VFlQRSkgfHwKIAkJCSAgICAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfSU5fVENQ
UE9PTCkgfHwKLQkJCSAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkgewor
CQkJICAgICgoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfVURQVFlQRSkgJiYKKwkJ
CSAgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpKSB7CiAJCQkJaWYgKChh
di0+YXNzb2NfdmFsdWUgIT0gMCkgJiYKIAkJCQkgICAgKGlucC0+YXV0aF9zdXBwb3J0ZWQgPT0g
MCkpIHsKIAkJCQkgICAgCS8qIEFVVEggaXMgcmVxdWlyZWQgZm9yIEFTQ09ORiAqLwpAQCAtNzU3
NCw3ICs3NzYzLDggQEAgc2N0cF9zZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQog
CQl9IGVsc2UgewogCQkJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BU
WVBFKSB8fAogCQkJICAgIChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQ
T09MKSB8fAotCQkJICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJ
CQkgICAgKChpbnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJ
ICAgICAoYXYtPmFzc29jX2lkID09IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lO
UF9XTE9DSyhpbnApOwogCQkJCWlmIChhdi0+YXNzb2NfdmFsdWUgPT0gMCkgewogCQkJCQlpbnAt
PnJlY29uZmlnX3N1cHBvcnRlZCA9IDA7CkBAIC03NjAzLDcgKzc3OTMsOCBAQCBzY3RwX3NldG9w
dChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9wdG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+
c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0
cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lOX1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3Nv
Y19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykpIHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYmCisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NU
UF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVNDVFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYgKGF2
LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJCWlucC0+bnJzYWNrX3N1cHBvcnRlZCA9IDA7CkBA
IC03NjMyLDcgKzc4MjMsOCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IG9w
dG5hCiAJCX0gZWxzZSB7CiAJCQlpZiAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1RDUFRZUEUpIHx8CiAJCQkgICAgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX0lO
X1RDUFBPT0wpIHx8Ci0JCQkgICAgKGF2LT5hc3NvY19pZCA9PSBTQ1RQX0ZVVFVSRV9BU1NPQykp
IHsKKwkJCSAgICAoKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpICYm
CisJCQkgICAgIChhdi0+YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSkgewogCQkJCVND
VFBfSU5QX1dMT0NLKGlucCk7CiAJCQkJaWYgKGF2LT5hc3NvY192YWx1ZSA9PSAwKSB7CiAJCQkJ
CWlucC0+cGt0ZHJvcF9zdXBwb3J0ZWQgPSAwOwpAQCAtNzY3Miw3ICs3ODY0LDggQEAgc2N0cF9z
ZXRvcHQoc3RydWN0IHNvY2tldCAqc28sIGludCBvcHRuYQogCQl9IGVsc2UgewogCQkJaWYgKChp
bnAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19UQ1BUWVBFKSB8fAogCQkJICAgIChpbnAt
PnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19JTl9UQ1BQT09MKSB8fAotCQkJICAgIChhdi0+
YXNzb2NfaWQgPT0gU0NUUF9GVVRVUkVfQVNTT0MpKSB7CisJCQkgICAgKChpbnAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19VRFBUWVBFKSAmJgorCQkJICAgICAoYXYtPmFzc29jX2lkID09
IFNDVFBfRlVUVVJFX0FTU09DKSkpIHsKIAkJCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwogCQkJCWlu
cC0+bWF4X2N3bmQgPSBhdi0+YXNzb2NfdmFsdWU7CiAJCQkJU0NUUF9JTlBfV1VOTE9DSyhpbnAp
OwpAQCAtNzY5NSwxMyArNzg4OCwxNCBAQCBzY3RwX3NldG9wdChzdHJ1Y3Qgc29ja2V0ICpzbywg
aW50IG9wdG5hCiBpbnQKIHNjdHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qg
c29ja29wdCAqc29wdCkKIHsKLQl2b2lkICpvcHR2YWwgPSBOVUxMOwotCXNpemVfdCBvcHRzaXpl
ID0gMDsKLQl2b2lkICpwOwotCWludCBlcnJvciA9IDA7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykKKwlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKIAlzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wOwog
I2VuZGlmCisJdm9pZCAqb3B0dmFsID0gTlVMTDsKKwl2b2lkICpwOworCXNpemVfdCBvcHRzaXpl
ID0gMDsKKwlpbnQgZXJyb3IgPSAwOwogCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKIAlpZiAo
KHNvcHQtPnNvcHRfbGV2ZWwgPT0gU09MX1NPQ0tFVCkgJiYKQEAgLTc3MzIsNiArNzkyNiwxMCBA
QCBzY3RwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0CiAJCXJldHVybiAoZXJy
b3IpOwogCX0KIAlvcHRzaXplID0gc29wdC0+c29wdF92YWxzaXplOworCWlmIChvcHRzaXplID4g
U0NUUF9TT0NLRVRfT1BUSU9OX0xJTUlUKSB7CisJCVNDVFBfTFRSQUNFX0VSUl9SRVQoc28tPnNv
X3BjYiwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFTk9CVUZTKTsKKwkJcmV0
dXJuIChFTk9CVUZTKTsKKwl9CiAJaWYgKG9wdHNpemUpIHsKIAkJU0NUUF9NQUxMT0Mob3B0dmFs
LCB2b2lkICosIG9wdHNpemUsIFNDVFBfTV9TT0NLT1BUKTsKIAkJaWYgKG9wdHZhbCA9PSBOVUxM
KSB7CkBAIC03NzUwLDcgKzc5NDgsMTMgQEAgc2N0cF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAq
c28sIHN0cnVjdAogCXAgPSAodm9pZCAqKXNvcHQtPnNvcHRfcDsKICNlbmRpZgogCWlmIChzb3B0
LT5zb3B0X2RpciA9PSBTT1BUX1NFVCkgeworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5F
VF9FUE9DSF9FTlRFUihldCk7CisjZW5kaWYKIAkJZXJyb3IgPSBzY3RwX3NldG9wdChzbywgc29w
dC0+c29wdF9uYW1lLCBvcHR2YWwsIG9wdHNpemUsIHApOworI2lmIGRlZmluZWQoX19GcmVlQlNE
X18pCisJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCX0gZWxzZSBpZiAoc29wdC0+c29w
dF9kaXIgPT0gU09QVF9HRVQpIHsKIAkJZXJyb3IgPSBzY3RwX2dldG9wdChzbywgc29wdC0+c29w
dF9uYW1lLCBvcHR2YWwsICZvcHRzaXplLCBwKTsKIAl9IGVsc2UgewpAQCAtNzc5NSw2ICs3OTk5
LDkgQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbQogCiAjZW5kaWYK
ICNlbmRpZgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJc3RydWN0IGVwb2NoX3RyYWNrZXIg
ZXQ7CisjZW5kaWYKICNpZmRlZiBTQ1RQX01WUkYKIAlpbnQgaSwgZm5kID0gMDsKICNlbmRpZgpA
QCAtNzgxNiw3ICs4MDIzLDcgQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1
Y3QgbQogCX0KIAogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLSAgICAgICAgLyogVE9ETyBf
X1VzZXJzcGFjZV9fIGZhbGxzIGludG8gdGhpcyBjb2RlIGZvciBJUHY2IHN0dWZmIGF0IHRoZSBt
b21lbnQuLi4gKi8KKwkvKiBUT0RPIF9fVXNlcnNwYWNlX18gZmFsbHMgaW50byB0aGlzIGNvZGUg
Zm9yIElQdjYgc3R1ZmYgYXQgdGhlIG1vbWVudC4uLiAqLwogI2VuZGlmCiAjaWYgIWRlZmluZWQo
X19XaW5kb3dzX18pICYmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX0xpbnV4KSAmJiAhZGVmaW5l
ZChfX1VzZXJzcGFjZV9vc19XaW5kb3dzKQogCXN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7CkBA
IC03ODI0LDcgKzgwMzEsNyBAQCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVj
dCBtCiAJY2FzZSBBRl9JTkVUNjoKIAl7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgX19G
cmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCXN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjZwOwor
CQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OwogCiAjZW5kaWYKIAkJaWYgKGFkZHItPnNhX2xl
biAhPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKQEAgLTc4MzIsOCArODAzOSw4IEBA
IHNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG0KIAkJCXJldHVybiAoRUlO
VkFMKTsKIAkJfQogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMDAwMAotCQlzaW42cCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjsKLQkJaWYg
KHAgIT0gTlVMTCAmJiAoZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNihwLT50ZF91Y3JlZCwgJnNp
bjZwLT5zaW42X2FkZHIpKSAhPSAwKSB7CisJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAq
KWFkZHI7CisJCWlmIChwICE9IE5VTEwgJiYgKGVycm9yID0gcHJpc29uX3JlbW90ZV9pcDYocC0+
dGRfdWNyZWQsICZzaW42LT5zaW42X2FkZHIpKSAhPSAwKSB7CiAJCQlTQ1RQX0xUUkFDRV9FUlJf
UkVUKGlucCwgTlVMTCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBlcnJvcik7CiAJCQly
ZXR1cm4gKGVycm9yKTsKIAkJfQpAQCAtNzg0NSw3ICs4MDUyLDcgQEAgc2N0cF9jb25uZWN0KHN0
cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbQogCWNhc2UgQUZfSU5FVDoKIAl7CiAjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gODAwMDAwCi0JCXN0cnVjdCBz
b2NrYWRkcl9pbiAqc2lucDsKKwkJc3RydWN0IHNvY2thZGRyX2luICpzaW47CiAKICNlbmRpZgog
I2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCkBAIC03ODU1LDggKzgwNjIsOCBA
QCBzY3RwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtCiAJCX0KICNlbmRpZgog
I2lmIGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDAwMAot
CQlzaW5wID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHI7Ci0JCWlmIChwICE9IE5VTEwgJiYg
KGVycm9yID0gcHJpc29uX3JlbW90ZV9pcDQocC0+dGRfdWNyZWQsICZzaW5wLT5zaW5fYWRkcikp
ICE9IDApIHsKKwkJc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWFkZHI7CisJCWlmIChwICE9
IE5VTEwgJiYgKGVycm9yID0gcHJpc29uX3JlbW90ZV9pcDQocC0+dGRfdWNyZWQsICZzaW4tPnNp
bl9hZGRyKSkgIT0gMCkgewogCQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEws
IFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSwgZXJyb3IpOwogCQkJcmV0dXJuIChlcnJvcik7CiAJCX0K
QEAgLTc4NzIsNyArODA3OSw5IEBAIHNjdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3Ry
dWN0IG0KIAlTQ1RQX0lOUF9JTkNSX1JFRihpbnApOwogCVNDVFBfQVNPQ19DUkVBVEVfTE9DSyhp
bnApOwogCWNyZWF0ZV9sb2NrX29uID0gMTsKLQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJ
TkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCiAJaWYgKChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19TT0NLRVRfQUxMR09ORSkgfHwKIAkgICAgKGlucC0+c2N0cF9mbGFncyAm
IFNDVFBfUENCX0ZMQUdTX1NPQ0tFVF9HT05FKSkgewpAQCAtNzk2MCw3ICs4MTY5LDggQEAgc2N0
cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbQogCS8qIFdlIGFyZSBHT09EIHRv
IGdvICovCiAJc3RjYiA9IHNjdHBfYWxvY19hc3NvYyhpbnAsIGFkZHIsICZlcnJvciwgMCwgdnJm
X2lkLAogCSAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2VwLnByZV9vcGVuX3N0cmVh
bV9jb3VudCwKLQkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wb3J0LCBwKTsK
KwkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wb3J0LCBwLAorCSAgICAgICAg
ICAgICAgICAgICAgICAgU0NUUF9JTklUSUFMSVpFX0FVVEhfUEFSQU1TKTsKIAlpZiAoc3RjYiA9
PSBOVUxMKSB7CiAJCS8qIEdhayEgbm8gbWVtb3J5ICovCiAJCWdvdG8gb3V0X25vdzsKQEAgLTc5
NzAsMTkgKzgxODAsMTggQEAgc2N0cF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qg
bQogCQkvKiBTZXQgdGhlIGNvbm5lY3RlZCBmbGFnIHNvIHdlIGNhbiBxdWV1ZSBkYXRhICovCiAJ
CXNvaXNjb25uZWN0aW5nKHNvKTsKIAl9Ci0JU0NUUF9TRVRfU1RBVEUoJnN0Y2ItPmFzb2MsIFND
VFBfU1RBVEVfQ09PS0lFX1dBSVQpOworCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVf
Q09PS0lFX1dBSVQpOwogCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZzdGNiLT5hc29jLnRp
bWVfZW50ZXJlZCk7CiAKLQkvKiBpbml0aWFsaXplIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMg
Zm9yIHRoZSBhc3NvYyAqLwotCXNjdHBfaW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2Ip
OwotCiAJc2N0cF9zZW5kX2luaXRpYXRlKGlucCwgc3RjYiwgU0NUUF9TT19MT0NLRUQpOwogCVND
VFBfVENCX1VOTE9DSyhzdGNiKTsKICBvdXRfbm93OgorI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CisJTkVUX0VQT0NIX0VYSVQoZXQpOworI2VuZGlmCiAJaWYgKGNyZWF0ZV9sb2NrX29uKSB7CiAJ
CVNDVFBfQVNPQ19DUkVBVEVfVU5MT0NLKGlucCk7CiAJfQotCiAJU0NUUF9JTlBfREVDUl9SRUYo
aW5wKTsKIAlyZXR1cm4gKGVycm9yKTsKIH0KQEAgLTgxMjcsNyArODMzNiw4IEBAIHNjdHBjb25u
X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnUKIAkvKiBXZSBhcmUgR09PRCB0byBnbyAq
LwogCXN0Y2IgPSBzY3RwX2Fsb2NfYXNzb2MoaW5wLCBhZGRyLCAmZXJyb3IsIDAsIHZyZl9pZCwK
IAkgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9lcC5wcmVfb3Blbl9zdHJlYW1fY291
bnQsCi0JICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfZXAucG9ydCwgcCk7CisJICAg
ICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfZXAucG9ydCwgcCwKKwkgICAgICAgICAgICAg
ICAgICAgICAgIFNDVFBfSU5JVElBTElaRV9BVVRIX1BBUkFNUyk7CiAJaWYgKHN0Y2IgPT0gTlVM
TCkgewogCQkvKiBHYWshIG5vIG1lbW9yeSAqLwogCQlnb3RvIG91dF9ub3c7CkBAIC04MTM3LDEy
ICs4MzQ3LDkgQEAgc2N0cGNvbm5fY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydQogCQkv
KiBTZXQgdGhlIGNvbm5lY3RlZCBmbGFnIHNvIHdlIGNhbiBxdWV1ZSBkYXRhICovCiAJCXNvaXNj
b25uZWN0aW5nKHNvKTsKIAl9Ci0JU0NUUF9TRVRfU1RBVEUoJnN0Y2ItPmFzb2MsIFNDVFBfU1RB
VEVfQ09PS0lFX1dBSVQpOworCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfQ09PS0lF
X1dBSVQpOwogCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZzdGNiLT5hc29jLnRpbWVfZW50
ZXJlZCk7CiAKLQkvKiBpbml0aWFsaXplIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMgZm9yIHRo
ZSBhc3NvYyAqLwotCXNjdHBfaW5pdGlhbGl6ZV9hdXRoX3BhcmFtcyhpbnAsIHN0Y2IpOwotCiAJ
c2N0cF9zZW5kX2luaXRpYXRlKGlucCwgc3RjYiwgU0NUUF9TT19MT0NLRUQpOwogCVNDVFBfVENC
X1VOTE9DSyhzdGNiKTsKICBvdXRfbm93OgpAQCAtODM4NCwxOCArODU5MSw4IEBAIHNjdHBfbGlz
dGVuKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcHIKIHN0YXRpYyBpbnQgc2N0cF9kZWZlcmVk
X3dha2V1cF9jbnQgPSAwOwogCiBpbnQKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZp
bmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQogc2N0cF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAq
KmFkZHIpCiB7Ci0jZWxpZiBkZWZpbmVkKF9fUGFuZGFfXykKLXNjdHBfYWNjZXB0KHN0cnVjdCBz
b2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCAqbmFtZWxlbiwKLQkgICAgdm9p
ZCAqYWNjZXB0X2luZm8sIGludCAqYWNjZXB0X2luZm9fbGVuKQotewotI2Vsc2UKLXNjdHBfYWNj
ZXB0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbmFtKQotewotCXN0cnVjdCBzb2Nr
YWRkciAqYWRkciA9IG10b2QobmFtLCBzdHJ1Y3Qgc29ja2FkZHIgKik7Ci0jZW5kaWYKIAlzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2I7CiAJc3RydWN0IHNjdHBfaW5wY2IgKmlucDsKIAl1bmlvbiBzY3Rw
X3NvY2tzdG9yZSBzdG9yZTsKQEAgLTg0MTAsMjggKzg2MDcsNzYgQEAgc2N0cF9hY2NlcHQoc3Ry
dWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYgogCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVM
TCwgTlVMTCwgU0NUUF9GUk9NX1NDVFBfVVNSUkVRLCBFSU5WQUwpOwogCQlyZXR1cm4gKEVDT05O
UkVTRVQpOwogCX0KLQlTQ1RQX0lOUF9STE9DSyhpbnApOworCVNDVFBfSU5QX1dMT0NLKGlucCk7
CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1VEUFRZUEUpIHsKLQkJU0NU
UF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfTFRS
QUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUF9VU1JSRVEsIEVPUE5P
VFNVUFApOwogCQlyZXR1cm4gKEVPUE5PVFNVUFApOwogCX0KIAlpZiAoc28tPnNvX3N0YXRlICYg
U1NfSVNESVNDT05ORUNURUQpIHsKLQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lO
UF9XVU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBT
Q1RQX0ZST01fU0NUUF9VU1JSRVEsIEVDT05OQUJPUlRFRCk7CiAJCXJldHVybiAoRUNPTk5BQk9S
VEVEKTsKIAl9CiAJc3RjYiA9IExJU1RfRklSU1QoJmlucC0+c2N0cF9hc29jX2xpc3QpOwogCWlm
IChzdGNiID09IE5VTEwpIHsKLQkJU0NUUF9JTlBfUlVOTE9DSyhpbnApOworCQlTQ1RQX0lOUF9X
VU5MT0NLKGlucCk7CiAJCVNDVFBfTFRSQUNFX0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQ
X0ZST01fU0NUUF9VU1JSRVEsIEVJTlZBTCk7CiAJCXJldHVybiAoRUNPTk5SRVNFVCk7CiAJfQog
CVNDVFBfVENCX0xPQ0soc3RjYik7Ci0JU0NUUF9JTlBfUlVOTE9DSyhpbnApOwogCXN0b3JlID0g
c3RjYi0+YXNvYy5wcmltYXJ5X2Rlc3RpbmF0aW9uLT5yby5fbF9hZGRyOwotCXN0Y2ItPmFzb2Mu
c3RhdGUgJj0gflNDVFBfU1RBVEVfSU5fQUNDRVBUX1FVRVVFOwotCVNDVFBfVENCX1VOTE9DSyhz
dGNiKTsKKwlTQ1RQX0NMRUFSX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5fQUNDRVBUX1FV
RVVFKTsKKwkvKiBXYWtlIGFueSBkZWxheWVkIHNsZWVwIGFjdGlvbiAqLworCWlmIChpbnAtPnNj
dHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19ET05UX1dBS0UpIHsKKwkJaW5wLT5zY3RwX2ZsYWdz
ICY9IH5TQ1RQX1BDQl9GTEFHU19ET05UX1dBS0U7CisJCWlmIChpbnAtPnNjdHBfZmxhZ3MgJiBT
Q1RQX1BDQl9GTEFHU19XQUtFT1VUUFVUKSB7CisJCQlpbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBf
UENCX0ZMQUdTX1dBS0VPVVRQVVQ7CisJCQlTT0NLQlVGX0xPQ0soJmlucC0+c2N0cF9zb2NrZXQt
PnNvX3NuZCk7CisJCQlpZiAoc293cml0ZWFibGUoaW5wLT5zY3RwX3NvY2tldCkpIHsKKyNpZiBk
ZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJLypfX1VzZXJzcGFjZV9fIGNhbGxpbmcgc293d2Fr
dXBfbG9ja2VkIGJlY2F1c2Ugb2YgU09DS0JVRl9MT0NLIGFib3ZlLiAqLworI2VuZGlmCisjaWYg
ZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChf
X1VzZXJzcGFjZV9fKQorCQkJCXNvd3dha2V1cF9sb2NrZWQoaW5wLT5zY3RwX3NvY2tldCk7Cisj
ZWxzZQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorCQkJCS8qIHNvY2tldCBpcyBsb2NrZWQgKi8K
KyNlbmRpZgorCQkJCXNvd3dha2V1cChpbnAtPnNjdHBfc29ja2V0KTsKKyNlbmRpZgorCQkJfSBl
bHNlIHsKKwkJCQlTT0NLQlVGX1VOTE9DSygmaW5wLT5zY3RwX3NvY2tldC0+c29fc25kKTsKKwkJ
CX0KKwkJfQorCQlpZiAoaW5wLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfV0FLRUlOUFVU
KSB7CisJCQlpbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX1dBS0VJTlBVVDsKKwkJ
CVNPQ0tCVUZfTE9DSygmaW5wLT5zY3RwX3NvY2tldC0+c29fcmN2KTsKKwkJCWlmIChzb3JlYWRh
YmxlKGlucC0+c2N0cF9zb2NrZXQpKSB7CisJCQkJc2N0cF9kZWZlcmVkX3dha2V1cF9jbnQrKzsK
KyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCQkJLypfX1VzZXJzcGFjZV9fIGNhbGxpbmcg
c29yd2FrdXBfbG9ja2VkIGJlY2F1c2Ugb2YgU09DS0JVRl9MT0NLIGFib3ZlICovCisjZW5kaWYK
KyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8fCBkZWZp
bmVkKF9fVXNlcnNwYWNlX18pCisJCQkJc29yd2FrZXVwX2xvY2tlZChpbnAtPnNjdHBfc29ja2V0
KTsKKyNlbHNlCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisJCQkJLyogc29ja2V0IGlzIGxvY2tl
ZCAqLworI2VuZGlmCisJCQkJc29yd2FrZXVwKGlucC0+c2N0cF9zb2NrZXQpOworI2VuZGlmCisJ
CQl9IGVsc2UgeworCQkJCVNPQ0tCVUZfVU5MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5zb19yY3Yp
OworCQkJfQorCQl9CisJfQorCVNDVFBfSU5QX1dVTkxPQ0soaW5wKTsKKwlpZiAoc3RjYi0+YXNv
Yy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsKKwkJc2N0cF9mcmVlX2Fz
c29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJPQywKKwkJICAgICAgICAgICAgICAgIFNDVFBf
RlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzE5KTsKKwl9IGVsc2UgeworCQlTQ1RQX1RDQl9V
TkxPQ0soc3RjYik7CisJfQogCXN3aXRjaCAoc3RvcmUuc2Euc2FfZmFtaWx5KSB7CiAjaWZkZWYg
SU5FVAogCWNhc2UgQUZfSU5FVDoKQEAgLTg1MjcsNjAgKzg3NzIsNiBAQCBzY3RwX2FjY2VwdChz
dHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1iCiAJCS8qIFRTTkggKi8KIAkJYnJlYWs7CiAJfQot
CS8qIFdha2UgYW55IGRlbGF5ZWQgc2xlZXAgYWN0aW9uICovCi0JaWYgKGlucC0+c2N0cF9mbGFn
cyAmIFNDVFBfUENCX0ZMQUdTX0RPTlRfV0FLRSkgewotCQlTQ1RQX0lOUF9XTE9DSyhpbnApOwot
CQlpbnAtPnNjdHBfZmxhZ3MgJj0gflNDVFBfUENCX0ZMQUdTX0RPTlRfV0FLRTsKLQkJaWYgKGlu
cC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdTX1dBS0VPVVRQVVQpIHsKLQkJCWlucC0+c2N0
cF9mbGFncyAmPSB+U0NUUF9QQ0JfRkxBR1NfV0FLRU9VVFBVVDsKLQkJCVNDVFBfSU5QX1dVTkxP
Q0soaW5wKTsKLQkJCVNPQ0tCVUZfTE9DSygmaW5wLT5zY3RwX3NvY2tldC0+c29fc25kKTsKLQkJ
CWlmIChzb3dyaXRlYWJsZShpbnAtPnNjdHBfc29ja2V0KSkgewotI2lmIGRlZmluZWQoX19Vc2Vy
c3BhY2VfXykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKl9fVXNlcnNwYWNlX18gY2Fs
bGluZyBzb3d3YWt1cF9sb2NrZWQgYmVjYXVzZSBvZiBTT0NLQlVGX0xPQ0sgYWJvdmUuICovCi0j
ZW5kaWYKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fV2luZG93c19fKSB8
fCBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JCQkJc293d2FrZXVwX2xvY2tlZChpbnAtPnNjdHBf
c29ja2V0KTsKLSNlbHNlCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0JCQkJLyogc29ja2V0IGlz
IGxvY2tlZCAqLwotI2VuZGlmCi0JCQkJc293d2FrZXVwKGlucC0+c2N0cF9zb2NrZXQpOwotI2Vu
ZGlmCi0JCQl9IGVsc2UgewotCQkJCVNPQ0tCVUZfVU5MT0NLKCZpbnAtPnNjdHBfc29ja2V0LT5z
b19zbmQpOwotCQkJfQotCQkJU0NUUF9JTlBfV0xPQ0soaW5wKTsKLQkJfQotCQlpZiAoaW5wLT5z
Y3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfV0FLRUlOUFVUKSB7Ci0JCQlpbnAtPnNjdHBfZmxh
Z3MgJj0gflNDVFBfUENCX0ZMQUdTX1dBS0VJTlBVVDsKLQkJCVNDVFBfSU5QX1dVTkxPQ0soaW5w
KTsKLQkJCVNPQ0tCVUZfTE9DSygmaW5wLT5zY3RwX3NvY2tldC0+c29fcmN2KTsKLQkJCWlmIChz
b3JlYWRhYmxlKGlucC0+c2N0cF9zb2NrZXQpKSB7Ci0JCQkJc2N0cF9kZWZlcmVkX3dha2V1cF9j
bnQrKzsKLSNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qX19Vc2Vyc3BhY2VfXyBjYWxsaW5nIHNvcndha3VwX2xvY2tlZCBiZWNhdXNl
IG9mIFNPQ0tCVUZfTE9DSyBhYm92ZSAqLwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgfHwgZGVmaW5lZChfX1dpbmRvd3NfXykgfHwgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQotCQkJ
CXNvcndha2V1cF9sb2NrZWQoaW5wLT5zY3RwX3NvY2tldCk7Ci0jZWxzZQotI2lmIGRlZmluZWQo
X19BUFBMRV9fKQotCQkJCS8qIHNvY2tldCBpcyBsb2NrZWQgKi8KLSNlbmRpZgotCQkJCXNvcndh
a2V1cChpbnAtPnNjdHBfc29ja2V0KTsKLSNlbmRpZgotCQkJfSBlbHNlIHsKLQkJCQlTT0NLQlVG
X1VOTE9DSygmaW5wLT5zY3RwX3NvY2tldC0+c29fcmN2KTsKLQkJCX0KLQkJCVNDVFBfSU5QX1dM
T0NLKGlucCk7Ci0JCX0KLQkJU0NUUF9JTlBfV1VOTE9DSyhpbnApOwotCX0KLQlpZiAoc3RjYi0+
YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQpIHsKLQkJU0NUUF9UQ0Jf
TE9DSyhzdGNiKTsKLQkJc2N0cF9mcmVlX2Fzc29jKGlucCwgc3RjYiwgU0NUUF9OT1JNQUxfUFJP
QywKLQkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQX1VTUlJFUSArIFNDVFBfTE9DXzE5
KTsKLQl9CiAJcmV0dXJuICgwKTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfdmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfdmFyLmgJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3Zhci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRl
ZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdmFyLmggMzE3NDU3IDIwMTctMDQtMjYgMTk6MjY6NDBa
IHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF92
YXIuaCAzNTc3MDggMjAyMC0wMi0wOSAyMjo0MDowNVogdHVleGVuICQiKTsKICNlbmRpZgogCiAj
aWZuZGVmIF9ORVRJTkVUX1NDVFBfVkFSX0hfCkBAIC0xOTIsOCArMTkyLDYgQEAgZXh0ZXJuIHN0
cnVjdCBwcl91c3JyZXFzIHNjdHBfdXNycmVxczsKIAlpZiAoKF9fbmV0KSkgeyAgXAogCQlpZiAo
U0NUUF9ERUNSRU1FTlRfQU5EX0NIRUNLX1JFRkNPVU5UKCYoX19uZXQpLT5yZWZfY291bnQpKSB7
IFwKIAkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9fbmV0KS0+cnh0X3RpbWVyLnRpbWVy
KTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYoX19uZXQpLT5wbXR1X3RpbWVyLnRp
bWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYoX19uZXQpLT5oYl90aW1lci50
aW1lcik7IFwKIAkJCWlmICgoX19uZXQpLT5yby5yb19ydCkgeyBcCiAJCQkJUlRGUkVFKChfX25l
dCktPnJvLnJvX3J0KTsgXAogCQkJCShfX25ldCktPnJvLnJvX3J0ID0gTlVMTDsgXApAQCAtMjQw
LDggKzIzOCw2IEBAIGV4dGVybiBzdHJ1Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXM7CiAJaWYg
KChfX25ldCkpIHsgXAogCQlpZiAoU0NUUF9ERUNSRU1FTlRfQU5EX0NIRUNLX1JFRkNPVU5UKCYo
X19uZXQpLT5yZWZfY291bnQpKSB7IFwKIAkJCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmKF9f
bmV0KS0+cnh0X3RpbWVyLnRpbWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCYo
X19uZXQpLT5wbXR1X3RpbWVyLnRpbWVyKTsgXAotCQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9Q
KCYoX19uZXQpLT5oYl90aW1lci50aW1lcik7IFwKIAkJCWlmICgoX19uZXQpLT5yby5yb19ydCkg
eyBcCiAJCQkJUlRGUkVFKChfX25ldCktPnJvLnJvX3J0KTsgXAogCQkJCShfX25ldCktPnJvLnJv
X3J0ID0gTlVMTDsgXApAQCAtNDU0LDcgKzQ1MCw3IEBAIHZvaWQgc2N0cF9kcmFpbih2b2lkKTsK
ICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiB2b2lkIHNjdHBfaW5pdCh1aW50MTZfdCwKICAg
ICAgICAgICAgICAgIGludCAoKikodm9pZCAqYWRkciwgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVu
Z3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpLAotICAgICAgICAgICAgICAgdm9pZCAo
KikoY29uc3QgY2hhciAqLCAuLi4pKTsKKyAgICAgICAgICAgICAgIHZvaWQgKCopKGNvbnN0IGNo
YXIgKiwgLi4uKSwgaW50IHN0YXJ0X3RocmVhZHMpOwogI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rf
XykgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCA5MDIwMDAKIHZvaWQgc2N0cF9pbml0IF9fUCgodm9p
ZCkpOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmICghZGVmaW5lZChBUFBMRV9MRU9QQVJE
KSAmJiAhZGVmaW5lZChBUFBMRV9TTk9XTEVPUEFSRCkgJiYhZGVmaW5lZChBUFBMRV9MSU9OKSAm
JiAhZGVmaW5lZChBUFBMRV9NT1VOVEFJTkxJT04pKQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHB1dGlsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHB1dGlsLmMJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwdXRpbC5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAK
ICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHB1dGlsLmMgMzM0Mjg2IDIwMTgtMDUtMjggMTM6
MzE6NDdaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cHV0aWwuYyAzNTgwODMgMjAyMC0wMi0xOCAyMToyNToxN1ogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC01OSw2ICs1OSw3IEBAIF9fRkJT
RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3QKICNpbmNsdWRlIDxuZXRpbmV0L3Nj
dHBfY29uc3RhbnRzLmg+CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2luY2x1
ZGUgPG5ldGluZXQvc2N0cF9rZHRyYWNlLmg+CiAjaWYgZGVmaW5lZChJTkVUNikgfHwgZGVmaW5l
ZChJTkVUKQogI2luY2x1ZGUgPG5ldGluZXQvdGNwX3Zhci5oPgogI2VuZGlmCkBAIC01NzYsNyAr
NTc3LDcgQEAgc2N0cF93YWtldXBfbG9nKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdQogfQogCiB2
b2lkCi1zY3RwX2xvZ19ibG9jayh1aW50OF90IGZyb20sIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9u
ICphc29jLCBzaXplX3Qgc2VuZGxlbikKK3NjdHBfbG9nX2Jsb2NrKHVpbnQ4X3QgZnJvbSwgc3Ry
dWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsIHNzaXplX3Qgc2VuZGxlbikKIHsKICNpZiBkZWZp
bmVkKFNDVFBfTE9DQUxfVFJBQ0VfQlVGKQogCXN0cnVjdCBzY3RwX2N3bmRfbG9nIHNjdHBfY2xv
ZzsKQEAgLTgxMCwxOSArODExLDY2IEBAIHNjdHBfYXVkaXRfbG9nKHVpbnQ4X3QgZXYsIHVpbnQ4
X3QgZmQpCiB2b2lkCiBzY3RwX3N0b3BfdGltZXJzX2Zvcl9zaHV0ZG93bihzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IpCiB7Ci0Jc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2M7CisJc3RydWN0IHNj
dHBfaW5wY2IgKmlucDsKIAlzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQ7CiAKLQlhc29jID0gJnN0Y2It
PmFzb2M7CisJaW5wID0gc3RjYi0+c2N0cF9lcDsKKworCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJ
TUVSX1RZUEVfUkVDViwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xMik7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJf
VFlQRV9TVFJSRVNFVCwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZS
T01fU0NUUFVUSUwgKyBTQ1RQX0xPQ18xMyk7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJf
VFlQRV9BU0NPTkYsIGlucCwgc3RjYiwgTlVMTCwKKwkgICAgICAgICAgICAgICAgU0NUUF9GUk9N
X1NDVFBVVElMICsgU0NUUF9MT0NfMTQpOworCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZ
UEVfQVVUT0NMT1NFLCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE1KTsKKwlUQUlMUV9GT1JFQUNIKG5ldCwgJnN0Y2ItPmFz
b2MubmV0cywgc2N0cF9uZXh0KSB7CisJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVf
UEFUSE1UVVJBSVNFLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfRlJP
TV9TQ1RQVVRJTCArIFNDVFBfTE9DXzE2KTsKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJf
VFlQRV9IRUFSVEJFQVQsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NUUF9G
Uk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMTcpOworCX0KK30KKwordm9pZAorc2N0cF9zdG9wX2Fz
c29jaWF0aW9uX3RpbWVycyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGJvb2wgc3RvcF9hc3NvY19r
aWxsX3RpbWVyKQoreworCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CisJc3RydWN0IHNjdHBfbmV0
cyAqbmV0OwogCi0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5kYWNrX3RpbWVyLnRp
bWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPnN0cnJlc2V0X3RpbWVyLnRp
bWVyKTsKLQkodm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJmFzb2MtPmFzY29uZl90aW1lci50aW1l
cik7Ci0JKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZhc29jLT5hdXRvY2xvc2VfdGltZXIudGlt
ZXIpOwotCSh2b2lkKVNDVFBfT1NfVElNRVJfU1RPUCgmYXNvYy0+ZGVsYXllZF9ldmVudF90aW1l
ci50aW1lcik7Ci0JVEFJTFFfRk9SRUFDSChuZXQsICZhc29jLT5uZXRzLCBzY3RwX25leHQpIHsK
LQkJKHZvaWQpU0NUUF9PU19USU1FUl9TVE9QKCZuZXQtPnBtdHVfdGltZXIudGltZXIpOwotCQko
dm9pZClTQ1RQX09TX1RJTUVSX1NUT1AoJm5ldC0+aGJfdGltZXIudGltZXIpOworCWlucCA9IHN0
Y2ItPnNjdHBfZXA7CisJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9SRUNWLCBpbnAs
IHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBf
TE9DXzE4KTsKKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NUUlJFU0VULCBpbnAs
IHN0Y2IsIE5VTEwsCisJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBf
TE9DXzE5KTsKKwlpZiAoc3RvcF9hc3NvY19raWxsX3RpbWVyKSB7CisJCXNjdHBfdGltZXJfc3Rv
cChTQ1RQX1RJTUVSX1RZUEVfQVNPQ0tJTEwsIGlucCwgc3RjYiwgTlVMTCwKKwkJICAgICAgICAg
ICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzIwKTsKKwl9CisJc2N0cF90aW1l
cl9zdG9wKFNDVFBfVElNRVJfVFlQRV9BU0NPTkYsIGlucCwgc3RjYiwgTlVMTCwKKwkgICAgICAg
ICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjEpOworCXNjdHBfdGltZXJf
c3RvcChTQ1RQX1RJTUVSX1RZUEVfQVVUT0NMT1NFLCBpbnAsIHN0Y2IsIE5VTEwsCisJICAgICAg
ICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCArIFNDVFBfTE9DXzIyKTsKKwlzY3RwX3RpbWVy
X3N0b3AoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dOR1VBUkQsIGlucCwgc3RjYiwgTlVMTCwKKwkg
ICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsgU0NUUF9MT0NfMjMpOworCS8qIE1v
YmlsaXR5IGFkYXB0YXRpb24gKi8KKwlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1BS
SU1fREVMRVRFRCwgaW5wLCBzdGNiLCBOVUxMLAorCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUFVUSUwgKyBTQ1RQX0xPQ18yNCk7CisJVEFJTFFfRk9SRUFDSChuZXQsICZzdGNiLT5hc29j
Lm5ldHMsIHNjdHBfbmV4dCkgeworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NF
TkQsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElM
ICsgU0NUUF9MT0NfMjUpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX0lOSVQs
IGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsg
U0NUUF9MT0NfMjYpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dO
LCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJTCAr
IFNDVFBfTE9DXzI3KTsKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9DT09LSUUs
IGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1NDVFBVVElMICsg
U0NUUF9MT0NfMjgpOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NIVVRET1dO
QUNLLCBpbnAsIHN0Y2IsIG5ldCwKKwkJICAgICAgICAgICAgICAgIFNDVFBfRlJPTV9TQ1RQVVRJ
TCArIFNDVFBfTE9DXzI5KTsKKwkJc2N0cF90aW1lcl9zdG9wKFNDVFBfVElNRVJfVFlQRV9QQVRI
TVRVUkFJU0UsIGlucCwgc3RjYiwgbmV0LAorCQkgICAgICAgICAgICAgICAgU0NUUF9GUk9NX1ND
VFBVVElMICsgU0NUUF9MT0NfMzApOworCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBF
X0hFQVJUQkVBVCwgaW5wLCBzdGNiLCBuZXQsCisJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01f
U0NUUFVUSUwgKyBTQ1RQX0xPQ18zMSk7CiAJfQogfQogCkBAIC05MTIsOSArOTYwLDE1IEBAIHNj
dHBfZmlsbF9yYW5kb21fc3RvcmUoc3RydWN0IHNjdHBfcGNiICoKIAkgKiBudW1iZXJzLCBidXQg
dGhhdHMgb2sgdG9vIHNpbmNlIHRoYXQgaXMgcmFuZG9tIGFzIHdlbGwgOi0+CiAJICovCiAJbS0+
c3RvcmVfYXQgPSAwOworI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykgJiYgZGVmaW5lZChGVVpa
SU5HX0JVSUxEX01PREVfVU5TQUZFX0ZPUl9QUk9EVUNUSU9OKQorCWZvciAoaW50IGkgPSAwOyBp
IDwgKGludCkgKHNpemVvZihtLT5yYW5kb21fc3RvcmUpIC8gc2l6ZW9mKG0tPnJhbmRvbV9zdG9y
ZVswXSkpOyBpKyspIHsKKwkJbS0+cmFuZG9tX3N0b3JlW2ldID0gKHVpbnQ4X3QpIHJhbmQoKTsK
Kwl9CisjZWxzZQogCSh2b2lkKXNjdHBfaG1hYyhTQ1RQX0hNQUMsICh1aW50OF90ICopbS0+cmFu
ZG9tX251bWJlcnMsCiAJICAgIHNpemVvZihtLT5yYW5kb21fbnVtYmVycyksICh1aW50OF90ICop
Jm0tPnJhbmRvbV9jb3VudGVyLAogCSAgICBzaXplb2YobS0+cmFuZG9tX2NvdW50ZXIpLCAodWlu
dDhfdCAqKW0tPnJhbmRvbV9zdG9yZSk7CisjZW5kaWYKIAltLT5yYW5kb21fY291bnRlcisrOwog
fQogCkBAIC0xMDQ0LDcgKzEwOTgsNyBAQCBzY3RwX2luaXRfYXNvYyhzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wLCBzCiAKIAlhc29jID0gJnN0Y2ItPmFzb2M7CiAJLyogaW5pdCBhbGwgdmFyaWFibGVz
IHRvIGEga25vd24gdmFsdWUuICovCi0JU0NUUF9TRVRfU1RBVEUoJnN0Y2ItPmFzb2MsIFNDVFBf
U1RBVEVfSU5VU0UpOworCVNDVFBfU0VUX1NUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfSU5VU0UpOwog
CWFzb2MtPm1heF9idXJzdCA9IGlucC0+c2N0cF9lcC5tYXhfYnVyc3Q7CiAJYXNvYy0+ZnJfbWF4
X2J1cnN0ID0gaW5wLT5zY3RwX2VwLmZyX21heF9idXJzdDsKIAlhc29jLT5oZWFydF9iZWF0X2Rl
bGF5ID0gVElDS1NfVE9fTVNFQyhpbnAtPnNjdHBfZXAuc2N0cF90aW1lb3V0dGlja3NbU0NUUF9U
SU1FUl9IRUFSVEJFQVRdKTsKQEAgLTEzNjUsMTEgKzE0MTksMTcgQEAgc2N0cF9leHBhbmRfbWFw
cGluZ19hcnJheShzdHJ1Y3Qgc2N0cF9hcwogc3RhdGljIHZvaWQKIHNjdHBfaXRlcmF0b3Jfd29y
ayhzdHJ1Y3Qgc2N0cF9pdGVyYXRvciAqaXQpCiB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
KwlzdHJ1Y3QgZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgorCXN0cnVjdCBzY3RwX2lucGNiICp0
aW5wOwogCWludCBpdGVyYXRpb25fY291bnQgPSAwOwogCWludCBpbnBfc2tpcCA9IDA7CiAJaW50
IGZpcnN0X2luID0gMTsKLQlzdHJ1Y3Qgc2N0cF9pbnBjYiAqdGlucDsKIAorI2lmIGRlZmluZWQo
X19GcmVlQlNEX18pCisJTkVUX0VQT0NIX0VOVEVSKGV0KTsKKyNlbmRpZgogCVNDVFBfSU5QX0lO
Rk9fUkxPQ0soKTsKIAlTQ1RQX0lURVJBVE9SX0xPQ0soKTsKIAlzY3RwX2l0X2N0bC5jdXJfaXQg
PSBpdDsKQEAgLTEzODcsNiArMTQ0Nyw5IEBAIGRvbmVfd2l0aF9pdGVyYXRvcjoKIAkJCSgqaXQt
PmZ1bmN0aW9uX2F0ZW5kKSAoaXQtPnBvaW50ZXIsIGl0LT52YWwpOwogCQl9CiAJCVNDVFBfRlJF
RShpdCwgU0NUUF9NX0lURVIpOworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5FVF9FUE9D
SF9FWElUKGV0KTsKKyNlbmRpZgogCQlyZXR1cm47CiAJfQogc2VsZWN0X2FfbmV3X2VwOgpAQCAt
MTUyMiwxMiArMTU4NSwxMSBAQCBzZWxlY3RfYV9uZXdfZXA6CiB2b2lkCiBzY3RwX2l0ZXJhdG9y
X3dvcmtlcih2b2lkKQogewotCXN0cnVjdCBzY3RwX2l0ZXJhdG9yICppdCwgKm5pdDsKKwlzdHJ1
Y3Qgc2N0cF9pdGVyYXRvciAqaXQ7CiAKIAkvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRo
IHRoZSBXUSBsb2NrIGluIHBsYWNlICovCi0KIAlzY3RwX2l0X2N0bC5pdGVyYXRvcl9ydW5uaW5n
ID0gMTsKLQlUQUlMUV9GT1JFQUNIX1NBRkUoaXQsICZzY3RwX2l0X2N0bC5pdGVyYXRvcmhlYWQs
IHNjdHBfbnh0X2l0ciwgbml0KSB7CisJd2hpbGUgKChpdCA9IFRBSUxRX0ZJUlNUKCZzY3RwX2l0
X2N0bC5pdGVyYXRvcmhlYWQpKSAhPSBOVUxMKSB7CiAJCS8qIG5vdyBsZXRzIHdvcmsgb24gdGhp
cyBvbmUgKi8KIAkJVEFJTFFfUkVNT1ZFKCZzY3RwX2l0X2N0bC5pdGVyYXRvcmhlYWQsIGl0LCBz
Y3RwX254dF9pdHIpOwogCQlTQ1RQX0lQSV9JVEVSQVRPUl9XUV9VTkxPQ0soKTsKQEAgLTE2MDgs
NiArMTY3MCw5IEBAIHNjdHBfaGFuZGxlX2FkZHJfd3Eodm9pZCkKIHZvaWQKIHNjdHBfdGltZW91
dF9oYW5kbGVyKHZvaWQgKnQpCiB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwlzdHJ1Y3Qg
ZXBvY2hfdHJhY2tlciBldDsKKyNlbmRpZgogCXN0cnVjdCBzY3RwX2lucGNiICppbnA7CiAJc3Ry
dWN0IHNjdHBfdGNiICpzdGNiOwogCXN0cnVjdCBzY3RwX25ldHMgKm5ldDsKQEAgLTE2MTYsNiAr
MTY4MSw5IEBAIHNjdHBfdGltZW91dF9oYW5kbGVyKHZvaWQgKnQpCiAjaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJTkcpCiAJc3RydWN0IHNvY2tldCAq
c287CiAjZW5kaWYKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJc3RydWN0IHNvY2tldCAq
dXBjYWxsX3NvY2tldCA9IE5VTEw7CisjZW5kaWYKIAlpbnQgZGlkX291dHB1dDsKIAlpbnQgdHlw
ZTsKIApAQCAtMTczOSw2ICsxODA3LDkgQEAgc2N0cF90aW1lb3V0X2hhbmRsZXIodm9pZCAqdCkK
IAkvKiByZWNvcmQgaW4gc3RvcHBlZCB3aGF0IHQtbyBvY2N1cnJlZCAqLwogCXRtci0+c3RvcHBl
ZF9mcm9tID0gdHlwZTsKIAorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJTkVUX0VQT0NIX0VO
VEVSKGV0KTsKKyNlbmRpZgogCS8qIG1hcmsgYXMgYmVpbmcgc2VydmljZWQgbm93ICovCiAJaWYg
KFNDVFBfT1NfVElNRVJfUEVORElORygmdG1yLT50aW1lcikpIHsKIAkJLyoKQEAgLTE3NTQsNiAr
MTgyNSwxNiBAQCBzY3RwX3RpbWVvdXRfaGFuZGxlcih2b2lkICp0KQogCX0KIAlTQ1RQX09TX1RJ
TUVSX0RFQUNUSVZBVEUoJnRtci0+dGltZXIpOwogCisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9f
KQorCWlmICgoc3RjYiAhPSBOVUxMKSAmJgorCSAgICAhKHN0Y2ItPnNjdHBfZXAtPnNjdHBfZmxh
Z3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYKKwkgICAgKHN0Y2ItPnNjdHBfc29j
a2V0ICE9IE5VTEwpKSB7CisJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tldDsKKwkJ
U09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQlzb3JlZih1cGNhbGxfc29ja2V0KTsKKwkJU09D
S19VTkxPQ0sodXBjYWxsX3NvY2tldCk7CisJfQorI2VuZGlmCiAJLyogY2FsbCB0aGUgaGFuZGxl
ciBmb3IgdGhlIGFwcHJvcHJpYXRlIHRpbWVyIHR5cGUgKi8KIAlzd2l0Y2ggKHR5cGUpIHsKIAlj
YXNlIFNDVFBfVElNRVJfVFlQRV9BRERSX1dROgpAQCAtMTkzMiw3ICsyMDEzLDYgQEAgc2N0cF90
aW1lb3V0X2hhbmRsZXIodm9pZCAqdCkKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihpbnAs
IHN0Y2IsIG9wX2VyciwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAkJLyogbm8gbmVlZCB0byB1bmxv
Y2sgb24gdGNiIGl0cyBnb25lICovCiAJCWdvdG8gb3V0X2RlY3I7Ci0KIAljYXNlIFNDVFBfVElN
RVJfVFlQRV9TVFJSRVNFVDoKIAkJaWYgKChzdGNiID09IE5VTEwpIHx8IChpbnAgPT0gTlVMTCkp
IHsKIAkJCWJyZWFrOwpAQCAtMTk2NSw3ICsyMDQ1LDYgQEAgc2N0cF90aW1lb3V0X2hhbmRsZXIo
dm9pZCAqdCkKIAkJc2N0cF9kZWxldGVfcHJpbV90aW1lcihpbnAsIHN0Y2IsIG5ldCk7CiAJCVND
VFBfU1RBVF9JTkNSKHNjdHBzX3RpbW9kZWxwcmltKTsKIAkJYnJlYWs7Ci0KIAljYXNlIFNDVFBf
VElNRVJfVFlQRV9BVVRPQ0xPU0U6CiAJCWlmICgoc3RjYiA9PSBOVUxMKSB8fCAoaW5wID09IE5V
TEwpKSB7CiAJCQlicmVhazsKQEAgLTIwNTUsMTUgKzIxMzQsMjkgQEAgZ2V0X291dDoKIAl9CiAK
IG91dF9kZWNyOgorI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKKwlpZiAodXBjYWxsX3NvY2tl
dCAhPSBOVUxMKSB7CisJCWlmICgodXBjYWxsX3NvY2tldC0+c29fdXBjYWxsICE9IE5VTEwpICYm
CisJCSAgICAodXBjYWxsX3NvY2tldC0+c29fZXJyb3IgIT0gMCkpIHsKKwkJCSgqdXBjYWxsX3Nv
Y2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29ja2V0LCB1cGNhbGxfc29ja2V0LT5zb191cGNhbGxh
cmcsIE1fTk9XQUlUKTsKKwkJfQorCQlBQ0NFUFRfTE9DSygpOworCQlTT0NLX0xPQ0sodXBjYWxs
X3NvY2tldCk7CisJCXNvcmVsZSh1cGNhbGxfc29ja2V0KTsKKwl9CisjZW5kaWYKIAlpZiAoaW5w
KSB7CiAJCVNDVFBfSU5QX0RFQ1JfUkVGKGlucCk7CiAJfQogCiBvdXRfbm9fZGVjcjoKIAlTQ1RQ
REJHKFNDVFBfREVCVUdfVElNRVIxLCAiVGltZXIgbm93IGNvbXBsZXRlICh0eXBlID0gJWQpXG4i
LCB0eXBlKTsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+
PSA4MDEwMDAKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorI2lmIF9fRnJlZUJTRF92ZXJzaW9u
ID49IDgwMTAwMAogCUNVUlZORVRfUkVTVE9SRSgpOwogI2VuZGlmCisJTkVUX0VQT0NIX0VYSVQo
ZXQpOworI2VuZGlmCiB9CiAKIHZvaWQKQEAgLTIwODAsNiArMjE3MywxMCBAQCBzY3RwX3RpbWVy
X3N0YXJ0KGludCB0X3R5cGUsIHN0cnVjdCBzY3RwCiAJaWYgKHN0Y2IpIHsKIAkJU0NUUF9UQ0Jf
TE9DS19BU1NFUlQoc3RjYik7CiAJfQorCS8qIERvbid0IHJlc3RhcnQgdGltZXIgb24gbmV0IHRo
YXQncyBiZWVuIHJlbW92ZWQuICovCisJaWYgKG5ldCAhPSBOVUxMICYmIChuZXQtPmRlc3Rfc3Rh
dGUgJiBTQ1RQX0FERFJfQkVJTkdfREVMRVRFRCkpIHsKKwkJcmV0dXJuOworCX0KIAlzd2l0Y2gg
KHRfdHlwZSkgewogCWNhc2UgU0NUUF9USU1FUl9UWVBFX0FERFJfV1E6CiAJCS8qIE9ubHkgMSB0
aWNrIGF3YXkgOi0pICovCkBAIC0yNTQ5LDI1ICsyNjQ2LDI0IEBAIHNjdHBfbXR1X3NpemVfcmVz
ZXQoc3RydWN0IHNjdHBfaW5wY2IgKmkKIAogCiAvKgotICogZ2l2ZW4gYW4gYXNzb2NpYXRpb24g
YW5kIHN0YXJ0aW5nIHRpbWUgb2YgdGhlIGN1cnJlbnQgUlRUIHBlcmlvZCByZXR1cm4KLSAqIFJU
TyBpbiBudW1iZXIgb2YgbXNlY3MgbmV0IHNob3VsZCBwb2ludCB0byB0aGUgY3VycmVudCBuZXR3
b3JrCisgKiBHaXZlbiBhbiBhc3NvY2lhdGlvbiBhbmQgc3RhcnRpbmcgdGltZSBvZiB0aGUgY3Vy
cmVudCBSVFQgcGVyaW9kLCB1cGRhdGUKKyAqIFJUTyBpbiBudW1iZXIgb2YgbXNlY3MuIG5ldCBz
aG91bGQgcG9pbnQgdG8gdGhlIGN1cnJlbnQgbmV0d29yay4KKyAqIFJldHVybiAxLCBpZiBhbiBS
VE8gdXBkYXRlIHdhcyBwZXJmb3JtZWQsIHJldHVybiAwIGlmIG5vIHVwZGF0ZSB3YXMKKyAqIHBl
cmZvcm1lZCBkdWUgdG8gaW52YWxpZCBzdGFydGluZyBwb2ludC4KICAqLwogCi11aW50MzJfdAor
aW50CiBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkgICBzdHJ1
Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJICAgc3RydWN0IHNjdHBfbmV0cyAqbmV0LAog
CQkgICBzdHJ1Y3QgdGltZXZhbCAqb2xkLAogCQkgICBpbnQgcnR0X2Zyb21fc2FjaykKIHsKLQkv
Ki0KLQkgKiBnaXZlbiBhbiBhc3NvY2lhdGlvbiBhbmQgdGhlIHN0YXJ0aW5nIHRpbWUgb2YgdGhl
IGN1cnJlbnQgUlRUCi0JICogcGVyaW9kIChpbiB2YWx1ZTEvdmFsdWUyKSByZXR1cm4gUlRPIGlu
IG51bWJlciBvZiBtc2Vjcy4KLQkgKi8KLQlpbnQzMl90IHJ0dDsgLyogUlRUIGluIG1zICovCisJ
c3RydWN0IHRpbWV2YWwgbm93OworCXVpbnQ2NF90IHJ0dF91czsJLyogUlRUIGluIHVzICovCisJ
aW50MzJfdCBydHQ7CQkvKiBSVFQgaW4gbXMgKi8KIAl1aW50MzJfdCBuZXdfcnRvOwogCWludCBm
aXJzdF9tZWFzdXJlID0gMDsKLQlzdHJ1Y3QgdGltZXZhbCBub3c7CiAKIAkvKioqKioqKioqKioq
KioqKioqKioqKioqLwogCS8qIDEuIGNhbGN1bGF0ZSBuZXcgUlRUICovCkBAIC0yNTc4LDEwICsy
Njc0LDE5IEBAIHNjdHBfY2FsY3VsYXRlX3J0byhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IKIAl9IGVs
c2UgewogCQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmbm93KTsKIAl9CisJaWYgKChvbGQt
PnR2X3NlYyA+IG5vdy50dl9zZWMpIHx8CisJICAgICgob2xkLT50dl9zZWMgPT0gbm93LnR2X3Nl
YykgJiYgKG9sZC0+dHZfc2VjID4gbm93LnR2X3NlYykpKSB7CisJCS8qIFRoZSBzdGFydGluZyBw
b2ludCBpcyBpbiB0aGUgZnV0dXJlLiAqLworCQlyZXR1cm4gKDApOworCX0KIAl0aW1ldmFsc3Vi
KCZub3csIG9sZCk7CisJcnR0X3VzID0gKHVpbnQ2NF90KTEwMDAwMDAgKiAodWludDY0X3Qpbm93
LnR2X3NlYyArICh1aW50NjRfdClub3cudHZfdXNlYzsKKwlpZiAocnR0X3VzID4gU0NUUF9SVE9f
VVBQRVJfQk9VTkQgKiAxMDAwKSB7CisJCS8qIFRoZSBSVFQgaXMgbGFyZ2VyIHRoYW4gYSBzYW5l
IHZhbHVlLiAqLworCQlyZXR1cm4gKDApOworCX0KIAkvKiBzdG9yZSB0aGUgY3VycmVudCBSVFQg
aW4gdXMgKi8KLQluZXQtPnJ0dCA9ICh1aW50NjRfdCkxMDAwMDAwICogKHVpbnQ2NF90KW5vdy50
dl9zZWMgKwotCSAgICAgICAgICAgKHVpbnQ2NF90KW5vdy50dl91c2VjOworCW5ldC0+cnR0ID0g
cnR0X3VzOwogCS8qIGNvbXB1dGUgcnR0IGluIG1zICovCiAJcnR0ID0gKGludDMyX3QpKG5ldC0+
cnR0IC8gMTAwMCk7CiAJaWYgKChhc29jLT5jY19mdW5jdGlvbnMuc2N0cF9ydHRfY2FsY3VsYXRl
ZCkgJiYgKHJ0dF9mcm9tX3NhY2sgPT0gU0NUUF9SVFRfRlJPTV9EQVRBKSkgewpAQCAtMjYxMCw3
ICsyNzE1LDcgQEAgc2N0cF9jYWxjdWxhdGVfcnRvKHN0cnVjdCBzY3RwX3RjYiAqc3RjYgogCSAq
IFBhcGVyICJDb25nZXN0aW9uIEF2b2lkYW5jZSBhbmQgQ29udHJvbCIsIEFubmV4IEEuCiAJICoK
IAkgKiAobmV0LT5sYXN0c2EgPj4gU0NUUF9SVFRfU0hJRlQpIGlzIHRoZSBzcnR0Ci0JICogKG5l
dC0+bGFzdHNhID4+IFNDVFBfUlRUX1ZBUl9TSElGVCkgaXMgdGhlIHJ0dHZhcgorCSAqIChuZXQt
Pmxhc3RzdiA+PiBTQ1RQX1JUVF9WQVJfU0hJRlQpIGlzIHRoZSBydHR2YXIKIAkgKi8KIAlpZiAo
bmV0LT5SVE9fbWVhc3VyZWQpIHsKIAkJcnR0IC09IChuZXQtPmxhc3RzYSA+PiBTQ1RQX1JUVF9T
SElGVCk7CkBAIC0yNjUxLDggKzI3NTYsOCBAQCBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RydWN0IHNj
dHBfdGNiICpzdGNiCiAJaWYgKG5ld19ydG8gPiBzdGNiLT5hc29jLm1heHJ0bykgewogCQluZXdf
cnRvID0gc3RjYi0+YXNvYy5tYXhydG87CiAJfQotCS8qIHdlIGFyZSBub3cgcmV0dXJuaW5nIHRo
ZSBSVE8gKi8KLQlyZXR1cm4gKG5ld19ydG8pOworCW5ldC0+UlRPID0gbmV3X3J0bzsKKwlyZXR1
cm4gKDEpOwogfQogCiAvKgpAQCAtMjg3Nyw3ICsyOTgyLDcgQEAgc2V0X2Vycm9yOgogCSAgICAo
KHN0YXRlID09IFNDVFBfQ09NTV9MT1NUKSB8fCAoc3RhdGUgPT0gU0NUUF9DQU5UX1NUUl9BU1NP
QykpKSB7CiAJCVNPQ0tfTE9DSyhzdGNiLT5zY3RwX3NvY2tldCk7CiAJCWlmIChmcm9tX3BlZXIp
IHsKLQkJCWlmIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09L
SUVfV0FJVCkgeworCQkJaWYgKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09P
S0lFX1dBSVQpIHsKIAkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKE5VTEwsIHN0Y2IsIE5VTEwsIFND
VFBfRlJPTV9TQ1RQVVRJTCwgRUNPTk5SRUZVU0VEKTsKIAkJCQlzdGNiLT5zY3RwX3NvY2tldC0+
c29fZXJyb3IgPSBFQ09OTlJFRlVTRUQ7CiAJCQl9IGVsc2UgewpAQCAtMjg4NSw4ICsyOTkwLDgg
QEAgc2V0X2Vycm9yOgogCQkJCXN0Y2ItPnNjdHBfc29ja2V0LT5zb19lcnJvciA9IEVDT05OUkVT
RVQ7CiAJCQl9CiAJCX0gZWxzZSB7Ci0JCQlpZiAoKFNDVFBfR0VUX1NUQVRFKCZzdGNiLT5hc29j
KSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCQkJICAgIChTQ1RQX0dFVF9TVEFURSgm
c3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEKSkgeworCQkJaWYgKChTQ1RQ
X0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCQkJICAgIChT
Q1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CiAJCQkJ
U0NUUF9MVFJBQ0VfRVJSX1JFVChOVUxMLCBzdGNiLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUws
IEVUSU1FRE9VVCk7CiAJCQkJc3RjYi0+c2N0cF9zb2NrZXQtPnNvX2Vycm9yID0gRVRJTUVET1VU
OwogCQkJfSBlbHNlIHsKQEAgLTM4MDAsOCArMzkwNSw4IEBAIHNjdHBfdWxwX25vdGlmeSh1aW50
MzJfdCBub3RpZmljYXRpb24sIHMKIAkJc2N0cF91bmxvY2tfYXNzZXJ0KFNDVFBfSU5QX1NPKHN0
Y2ItPnNjdHBfZXApKTsKIAl9CiAjZW5kaWYKLQlpZiAoKHN0Y2ItPmFzb2Muc3RhdGUgJiBTQ1RQ
X1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCSAgICAoc3RjYi0+YXNvYy5zdGF0ZSAmICBTQ1RQX1NU
QVRFX0NPT0tJRV9FQ0hPRUQpKSB7CisJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQ
X1NUQVRFX0NPT0tJRV9XQUlUKSB8fAorCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NU
UF9TVEFURV9DT09LSUVfRUNIT0VEKSkgewogCQlpZiAoKG5vdGlmaWNhdGlvbiA9PSBTQ1RQX05P
VElGWV9JTlRFUkZBQ0VfRE9XTikgfHwKIAkJICAgIChub3RpZmljYXRpb24gPT0gU0NUUF9OT1RJ
RllfSU5URVJGQUNFX1VQKSB8fAogCQkgICAgKG5vdGlmaWNhdGlvbiA9PSBTQ1RQX05PVElGWV9J
TlRFUkZBQ0VfQ09ORklSTUVEKSkgewpAQCAtMzg5MCwxNiArMzk5NSwxNiBAQCBzY3RwX3VscF9u
b3RpZnkodWludDMyX3Qgbm90aWZpY2F0aW9uLCBzCiAJCWJyZWFrOwogCQl9CiAJY2FzZSBTQ1RQ
X05PVElGWV9BU1NPQ19MT0NfQUJPUlRFRDoKLQkJaWYgKCgoc3RjYi0+YXNvYy5zdGF0ZSAmIFND
VFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKLQkJICAgICgoc3Rj
Yi0+YXNvYy5zdGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykgPT0gU0NUUF9TVEFURV9DT09LSUVfRUNI
T0VEKSkgeworCQlpZiAoKFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfQ09PS0lF
X1dBSVQpIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09L
SUVfRUNIT0VEKSkgewogCQkJc2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ0FOVF9TVFJf
QVNTT0MsIHN0Y2IsIGVycm9yLCBkYXRhLCAwLCBzb19sb2NrZWQpOwogCQl9IGVsc2UgewogCQkJ
c2N0cF9ub3RpZnlfYXNzb2NfY2hhbmdlKFNDVFBfQ09NTV9MT1NULCBzdGNiLCBlcnJvciwgZGF0
YSwgMCwgc29fbG9ja2VkKTsKIAkJfQogCQlicmVhazsKIAljYXNlIFNDVFBfTk9USUZZX0FTU09D
X1JFTV9BQk9SVEVEOgotCQlpZiAoKChzdGNiLT5hc29jLnN0YXRlICYgU0NUUF9TVEFURV9NQVNL
KSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUKSB8fAotCQkgICAgKChzdGNiLT5hc29jLnN0YXRl
ICYgU0NUUF9TVEFURV9NQVNLKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7CisJCWlm
ICgoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9DT09LSUVfV0FJVCkgfHwKKwkJ
ICAgIChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NUQVRFX0NPT0tJRV9FQ0hPRUQpKSB7
CiAJCQlzY3RwX25vdGlmeV9hc3NvY19jaGFuZ2UoU0NUUF9DQU5UX1NUUl9BU1NPQywgc3RjYiwg
ZXJyb3IsIGRhdGEsIDEsIHNvX2xvY2tlZCk7CiAJCX0gZWxzZSB7CiAJCQlzY3RwX25vdGlmeV9h
c3NvY19jaGFuZ2UoU0NUUF9DT01NX0xPU1QsIHN0Y2IsIGVycm9yLCBkYXRhLCAxLCBzb19sb2Nr
ZWQpOwpAQCAtNDA2OSw3ICs0MTc0LDcgQEAgc2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0cnVj
dCBzY3RwX3RjYgogCQlUQUlMUV9GT1JFQUNIX1NBRkUoc3AsICZvdXRzLT5vdXRxdWV1ZSwgbmV4
dCwgbnNwKSB7CiAJCQlhdG9taWNfc3VidHJhY3RfaW50KCZhc29jLT5zdHJlYW1fcXVldWVfY250
LCAxKTsKIAkJCVRBSUxRX1JFTU9WRSgmb3V0cy0+b3V0cXVldWUsIHNwLCBuZXh0KTsKLQkJCXN0
Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfcmVtb3ZlX2Zyb21fc3RyZWFtKHN0Y2IsIGFz
b2MsIG91dHMsIHNwLCBob2xkc19sb2NrKTsKKwkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNj
dHBfc3NfcmVtb3ZlX2Zyb21fc3RyZWFtKHN0Y2IsIGFzb2MsIG91dHMsIHNwLCAxKTsKIAkJCXNj
dHBfZnJlZV9zcGJ1ZnNwYWNlKHN0Y2IsIGFzb2MsIHNwKTsKIAkJCWlmIChzcC0+ZGF0YSkgewog
CQkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9TUEVDSUFMX1NQX0ZBSUwsIHN0Y2IsCkBA
IC00MTI1LDcgKzQyMzAsNyBAQCBzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihzdHJ1Y3Qgc2N0cF90
Y2IgCiAJCXJldHVybjsKIAl9CiAJLyogVGVsbCB0aGVtIHdlIGxvc3QgdGhlIGFzb2MgKi8KLQlz
Y3RwX3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RjYiwgZXJyb3IsIDEsIHNvX2xvY2tlZCk7CisJc2N0
cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0Y2IsIGVycm9yLCAwLCBzb19sb2NrZWQpOwogCWlmIChm
cm9tX3BlZXIpIHsKIAkJc2N0cF91bHBfbm90aWZ5KFNDVFBfTk9USUZZX0FTU09DX1JFTV9BQk9S
VEVELCBzdGNiLCBlcnJvciwgYWJvcnQsIHNvX2xvY2tlZCk7CiAJfSBlbHNlIHsKQEAgLTQxNjEs
NyArNDI2Niw3IEBAIHNjdHBfYWJvcnRfYXNzb2NpYXRpb24oc3RydWN0IHNjdHBfaW5wY2IKIAlp
ZiAoc3RjYiAhPSBOVUxMKSB7CiAJCS8qIFdlIGhhdmUgYSBUQ0IgdG8gYWJvcnQsIHNlbmQgbm90
aWZpY2F0aW9uIHRvbyAqLwogCQlzY3RwX2Fib3J0X25vdGlmaWNhdGlvbihzdGNiLCAwLCAwLCBO
VUxMLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwotCQlzdGNiLT5hc29jLnN0YXRlIHw9IFNDVFBfU1RB
VEVfV0FTX0FCT1JURUQ7CisJCVNDVFBfQUREX1NVQlNUQVRFKHN0Y2IsIFNDVFBfU1RBVEVfV0FT
X0FCT1JURUQpOwogCQkvKiBPaywgbm93IGxldHMgZnJlZSBpdCAqLwogI2lmIGRlZmluZWQoX19B
UFBMRV9fKSB8fCBkZWZpbmVkKFNDVFBfU09fTE9DS19URVNUSU5HKQogCQlzbyA9IFNDVFBfSU5Q
X1NPKGlucCk7CkBAIC00MTcyLDggKzQyNzcsOCBAQCBzY3RwX2Fib3J0X2Fzc29jaWF0aW9uKHN0
cnVjdCBzY3RwX2lucGNiCiAJCWF0b21pY19zdWJ0cmFjdF9pbnQoJnN0Y2ItPmFzb2MucmVmY250
LCAxKTsKICNlbmRpZgogCQlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSMzIoc2N0cHNfYWJvcnRlZCk7
Ci0JCWlmICgoU0NUUF9HRVRfU1RBVEUoJnN0Y2ItPmFzb2MpID09IFNDVFBfU1RBVEVfT1BFTikg
fHwKLQkJICAgIChTQ1RQX0dFVF9TVEFURSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVU
RE9XTl9SRUNFSVZFRCkpIHsKKwkJaWYgKChTQ1RQX0dFVF9TVEFURShzdGNiKSA9PSBTQ1RQX1NU
QVRFX09QRU4pIHx8CisJCSAgICAoU0NUUF9HRVRfU1RBVEUoc3RjYikgPT0gU0NUUF9TVEFURV9T
SFVURE9XTl9SRUNFSVZFRCkpIHsKIAkJCVNDVFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3Vy
cmVzdGFiKTsKIAkJfQogCQkodm9pZClzY3RwX2ZyZWVfYXNzb2MoaW5wLCBzdGNiLCBTQ1RQX05P
Uk1BTF9QUk9DLApAQCAtNDI4OCwxMyArNDM5MywxMyBAQCBzY3RwX2Fib3J0X2FuX2Fzc29jaWF0
aW9uKHN0cnVjdCBzY3RwX2luCiAJCX0KIAkJcmV0dXJuOwogCX0gZWxzZSB7Ci0JCXN0Y2ItPmFz
b2Muc3RhdGUgfD0gU0NUUF9TVEFURV9XQVNfQUJPUlRFRDsKKwkJU0NUUF9BRERfU1VCU1RBVEUo
c3RjYiwgU0NUUF9TVEFURV9XQVNfQUJPUlRFRCk7CiAJfQogCS8qIG5vdGlmeSB0aGUgcGVlciAq
LwogCXNjdHBfc2VuZF9hYm9ydF90Y2Ioc3RjYiwgb3BfZXJyLCBzb19sb2NrZWQpOwogCVNDVFBf
U1RBVF9JTkNSX0NPVU5URVIzMihzY3Rwc19hYm9ydGVkKTsKLQlpZiAoKFNDVFBfR0VUX1NUQVRF
KCZzdGNiLT5hc29jKSA9PSBTQ1RQX1NUQVRFX09QRU4pIHx8Ci0JICAgIChTQ1RQX0dFVF9TVEFU
RSgmc3RjYi0+YXNvYykgPT0gU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCkpIHsKKwlpZiAo
KFNDVFBfR0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfT1BFTikgfHwKKwkgICAgKFNDVFBf
R0VUX1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQpKSB7CiAJCVND
VFBfU1RBVF9ERUNSX0dBVUdFMzIoc2N0cHNfY3VycmVzdGFiKTsKIAl9CiAJLyogbm90aWZ5IHRo
ZSB1bHAgKi8KQEAgLTQ5MjMsMTIgKzUwMjgsMTQgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3RydWN0
IHNjdHBfaW5wY2IgKmlucAogCWlmIChpbnBfcmVhZF9sb2NrX2hlbGQgPT0gMCkKIAkJU0NUUF9J
TlBfUkVBRF9MT0NLKGlucCk7CiAJaWYgKGlucC0+c2N0cF9mbGFncyAmIFNDVFBfUENCX0ZMQUdT
X1NPQ0tFVF9DQU5UX1JFQUQpIHsKLQkJc2N0cF9mcmVlX3JlbW90ZV9hZGRyKGNvbnRyb2wtPndo
b0Zyb20pOwotCQlpZiAoY29udHJvbC0+ZGF0YSkgewotCQkJc2N0cF9tX2ZyZWVtKGNvbnRyb2wt
PmRhdGEpOwotCQkJY29udHJvbC0+ZGF0YSA9IE5VTEw7CisJCWlmICghY29udHJvbC0+b25fc3Ry
bV9xKSB7CisJCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoY29udHJvbC0+d2hvRnJvbSk7CisJCQlp
ZiAoY29udHJvbC0+ZGF0YSkgeworCQkJCXNjdHBfbV9mcmVlbShjb250cm9sLT5kYXRhKTsKKwkJ
CQljb250cm9sLT5kYXRhID0gTlVMTDsKKwkJCX0KKwkJCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2Is
IGNvbnRyb2wpOwogCQl9Ci0JCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2IsIGNvbnRyb2wpOwogCQlp
ZiAoaW5wX3JlYWRfbG9ja19oZWxkID09IDApCiAJCQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhpbnAp
OwogCQlyZXR1cm47CkBAIC00OTczLDggKzUwODAsMTAgQEAgc2N0cF9hZGRfdG9fcmVhZHEoc3Ry
dWN0IHNjdHBfaW5wY2IgKmlucAogCQljb250cm9sLT50YWlsX21idWYgPSBwcmV2OwogCX0gZWxz
ZSB7CiAJCS8qIEV2ZXJ5dGhpbmcgZ290IGNvbGxhcHNlZCBvdXQ/PyAqLwotCQlzY3RwX2ZyZWVf
cmVtb3RlX2FkZHIoY29udHJvbC0+d2hvRnJvbSk7Ci0JCXNjdHBfZnJlZV9hX3JlYWRxKHN0Y2Is
IGNvbnRyb2wpOworCQlpZiAoIWNvbnRyb2wtPm9uX3N0cm1fcSkgeworCQkJc2N0cF9mcmVlX3Jl
bW90ZV9hZGRyKGNvbnRyb2wtPndob0Zyb20pOworCQkJc2N0cF9mcmVlX2FfcmVhZHEoc3RjYiwg
Y29udHJvbCk7CisJCX0KIAkJaWYgKGlucF9yZWFkX2xvY2tfaGVsZCA9PSAwKQogCQkJU0NUUF9J
TlBfUkVBRF9VTkxPQ0soaW5wKTsKIAkJcmV0dXJuOwpAQCAtNTUyOCw2ICs1NjM3LDkgQEAgc2N0
cF91c2VyX3JjdmQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aQogCSAgICAgICB1aW50MzJfdCBy
d25kX3JlcSkKIHsKIAkvKiBVc2VyIHB1bGxlZCBzb21lIGRhdGEsIGRvIHdlIG5lZWQgYSByd25k
IHVwZGF0ZT8gKi8KKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorCXN0cnVjdCBlcG9jaF90cmFj
a2VyIGV0OworI2VuZGlmCiAJaW50IHJfdW5sb2NrZWQgPSAwOwogCXVpbnQzMl90IGRpZiwgcndu
ZDsKIAlzdHJ1Y3Qgc29ja2V0ICpzbyA9IE5VTEw7CkBAIC01NTM3LDkgKzU2NDksOCBAQCBzY3Rw
X3VzZXJfcmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpCiAKIAlhdG9taWNfYWRkX2ludCgm
c3RjYi0+YXNvYy5yZWZjbnQsIDEpOwogCi0JaWYgKHN0Y2ItPmFzb2Muc3RhdGUgJiAoU0NUUF9T
VEFURV9BQk9VVF9UT19CRV9GUkVFRCB8Ci0JCQkJU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZF
RCB8Ci0JCQkJU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCkpIHsKKwlpZiAoKFNDVFBfR0VU
X1NUQVRFKHN0Y2IpID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQpIHx8CisJICAgIChz
dGNiLT5hc29jLnN0YXRlICYgKFNDVFBfU1RBVEVfQUJPVVRfVE9fQkVfRlJFRUQgfCBTQ1RQX1NU
QVRFX1NIVVRET1dOX1JFQ0VJVkVEKSkpIHsKIAkJLyogUHJlLWNoZWNrIElmIHdlIGFyZSBmcmVl
aW5nIG5vIHVwZGF0ZSAqLwogCQlnb3RvIG5vX2xvY2s7CiAJfQpAQCAtNTU4NCwxMSArNTY5NSwx
NyBAQCBzY3RwX3VzZXJfcmN2ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpCiAJCQlnb3RvIG91
dDsKIAkJfQogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc193dV9zYWNrc19zZW50KTsKKyNpZiBkZWZp
bmVkKF9fRnJlZUJTRF9fKQorCQlORVRfRVBPQ0hfRU5URVIoZXQpOworI2VuZGlmCiAJCXNjdHBf
c2VuZF9zYWNrKHN0Y2IsIFNDVFBfU09fTE9DS0VEKTsKIAogCQlzY3RwX2NodW5rX291dHB1dChz
dGNiLT5zY3RwX2VwLCBzdGNiLAogCQkJCSAgU0NUUF9PVVRQVVRfRlJPTV9VU1JfUkNWRCwgU0NU
UF9TT19MT0NLRUQpOwogCQkvKiBtYWtlIHN1cmUgbm8gdGltZXIgaXMgcnVubmluZyAqLworI2lm
IGRlZmluZWQoX19GcmVlQlNEX18pCisJCU5FVF9FUE9DSF9FWElUKGV0KTsKKyNlbmRpZgogCQlz
Y3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1JFQ1YsIHN0Y2ItPnNjdHBfZXAsIHN0Y2Is
IE5VTEwsCiAJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUFVUSUwgKyBTQ1RQX0xPQ182
KTsKIAkJU0NUUF9UQ0JfVU5MT0NLKHN0Y2IpOwpAQCAtNTYyNiw4ICs1NzQzLDkgQEAgc2N0cF9z
b3JlY3Ztc2coc3RydWN0IHNvY2tldCAqc28sCiAJICoKIAkgKi8KIAlzdHJ1Y3Qgc2N0cF9pbnBj
YiAqaW5wID0gTlVMTDsKLQlpbnQgbXlfbGVuID0gMDsKLQlpbnQgY3BfbGVuID0gMCwgZXJyb3Ig
PSAwOworCXNzaXplX3QgbXlfbGVuID0gMDsKKwlzc2l6ZV90IGNwX2xlbiA9IDA7CisJaW50IGVy
cm9yID0gMDsKIAlzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCA9IE5VTEwsICpj
dGwgPSBOVUxMLCAqbnh0ID0gTlVMTDsKIAlzdHJ1Y3QgbWJ1ZiAqbSA9IE5VTEw7CiAJc3RydWN0
IHNjdHBfdGNiICpzdGNiID0gTlVMTDsKQEAgLTU2MzYsNyArNTc1NCw3IEBAIHNjdHBfc29yZWN2
bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCWludCBvdXRfZmxhZ3MgPSAwLCBpbl9mbGFncyA9IDA7
CiAJaW50IGJsb2NrX2FsbG93ZWQgPSAxOwogCXVpbnQzMl90IGZyZWVkX3NvX2ZhciA9IDA7Ci0J
dWludDMyX3QgY29waWVkX3NvX2ZhciA9IDA7CisJc3NpemVfdCBjb3BpZWRfc29fZmFyID0gMDsK
IAlpbnQgaW5fZWVvcl9tb2RlID0gMDsKIAlpbnQgbm9fcmN2X25lZWRlZCA9IDA7CiAJdWludDMy
X3QgcnduZF9yZXEgPSAwOwpAQCAtNjAzMyw3ICs2MTUxLDcgQEAgc2N0cF9zb3JlY3Ztc2coc3Ry
dWN0IHNvY2tldCAqc28sCiAJCQkgKiB3ZSB0aGVuIHdpbGwgZ28gdG8gdGhlIHNjdHBfdXNlcl9y
Y3ZkKCkgdGhhdCB3aWxsCiAJCQkgKiBub3QgbG9jayB1bnRpbCBpdCBLTk9XcyBpdCBNVVNUIHNl
bmQgYSBXVVAtU0FDSy4KIAkJCSAqLwotCQkJZnJlZWRfc29fZmFyID0gc3RjYi0+ZnJlZWRfYnlf
c29yY3Zfc2luY2VsYXN0OworCQkJZnJlZWRfc29fZmFyID0gKHVpbnQzMl90KXN0Y2ItPmZyZWVk
X2J5X3NvcmN2X3NpbmNlbGFzdDsKIAkJCXN0Y2ItPmZyZWVkX2J5X3NvcmN2X3NpbmNlbGFzdCA9
IDA7CiAJCX0KIAl9CkBAIC02MTk1LDE0ICs2MzEzLDE0IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVj
dCBzb2NrZXQgKnNvLAogCQkJLyogTW92ZSBvdXQgYWxsIHdlIGNhbiAqLwogI2lmIGRlZmluZWQo
X19BUFBMRV9fKQogI2lmIGRlZmluZWQoQVBQTEVfTEVPUEFSRCkKLQkJCWNwX2xlbiA9IChpbnQp
dWlvLT51aW9fcmVzaWQ7CisJCQljcF9sZW4gPSB1aW8tPnVpb19yZXNpZDsKICNlbHNlCi0JCQlj
cF9sZW4gPSAoaW50KXVpb19yZXNpZCh1aW8pOworCQkJY3BfbGVuID0gdWlvX3Jlc2lkKHVpbyk7
CiAjZW5kaWYKICNlbHNlCi0JCQljcF9sZW4gPSAoaW50KXVpby0+dWlvX3Jlc2lkOworCQkJY3Bf
bGVuID0gdWlvLT51aW9fcmVzaWQ7CiAjZW5kaWYKLQkJCW15X2xlbiA9IChpbnQpU0NUUF9CVUZf
TEVOKG0pOworCQkJbXlfbGVuID0gU0NUUF9CVUZfTEVOKG0pOwogCQkJaWYgKGNwX2xlbiA+IG15
X2xlbikgewogCQkJCS8qIG5vdCBlbm91Z2ggaW4gdGhpcyBidWYgKi8KIAkJCQljcF9sZW4gPSBt
eV9sZW47CkBAIC02MjE1LDcgKzYzMzMsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0
ICpzbywKIAkJCVNDVFBfU09DS0VUX1VOTE9DSyhzbywgMCk7CiAjZW5kaWYKIAkJCWlmIChjcF9s
ZW4gPiAwKQotCQkJCWVycm9yID0gdWlvbW92ZShtdG9kKG0sIGNoYXIgKiksIGNwX2xlbiwgdWlv
KTsKKwkJCQllcnJvciA9IHVpb21vdmUobXRvZChtLCBjaGFyICopLCAoaW50KWNwX2xlbiwgdWlv
KTsKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKIAkJCVNDVFBfU09DS0VUX0xPQ0soc28sIDApOwog
I2VuZGlmCkBAIC02MjYzLDcgKzYzODEsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0
ICpzbywKIAkJCQkJCSAgIGNvbnRyb2wtPmRvX25vdF9yZWZfc3RjYj9OVUxMOnN0Y2IsIFNDVFBf
TE9HX1NCUkVTVUxULCAwKTsKIAkJCQkJfQogCQkJCQljb3BpZWRfc29fZmFyICs9IGNwX2xlbjsK
LQkJCQkJZnJlZWRfc29fZmFyICs9IGNwX2xlbjsKKwkJCQkJZnJlZWRfc29fZmFyICs9ICh1aW50
MzJfdCljcF9sZW47CiAJCQkJCWZyZWVkX3NvX2ZhciArPSBNU0laRTsKIAkJCQkJYXRvbWljX3N1
YnRyYWN0X2ludCgmY29udHJvbC0+bGVuZ3RoLCBjcF9sZW4pOwogCQkJCQljb250cm9sLT5kYXRh
ID0gc2N0cF9tX2ZyZWUobSk7CkBAIC02Mjk4LDkgKzY0MTYsOSBAQCBzY3RwX3NvcmVjdm1zZyhz
dHJ1Y3Qgc29ja2V0ICpzbywKIAkJCQl9CiAJCQkJaWYgKChpbl9mbGFncyAmIE1TR19QRUVLKSA9
PSAwKSB7CiAJCQkJCVNDVFBfQlVGX1JFU1ZfVUYobSwgY3BfbGVuKTsKLQkJCQkJU0NUUF9CVUZf
TEVOKG0pIC09IGNwX2xlbjsKKwkJCQkJU0NUUF9CVUZfTEVOKG0pIC09IChpbnQpY3BfbGVuOwog
CQkJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9TQl9M
T0dHSU5HX0VOQUJMRSkgewotCQkJCQkJc2N0cF9zYmxvZygmc28tPnNvX3JjdiwgY29udHJvbC0+
ZG9fbm90X3JlZl9zdGNiP05VTEw6c3RjYiwgU0NUUF9MT0dfU0JGUkVFLCBjcF9sZW4pOworCQkJ
CQkJc2N0cF9zYmxvZygmc28tPnNvX3JjdiwgY29udHJvbC0+ZG9fbm90X3JlZl9zdGNiP05VTEw6
c3RjYiwgU0NUUF9MT0dfU0JGUkVFLCAoaW50KWNwX2xlbik7CiAJCQkJCX0KIAkJCQkJYXRvbWlj
X3N1YnRyYWN0X2ludCgmc28tPnNvX3Jjdi5zYl9jYywgY3BfbGVuKTsKIAkJCQkJaWYgKChjb250
cm9sLT5kb19ub3RfcmVmX3N0Y2IgPT0gMCkgJiYKQEAgLTYzMDgsNyArNjQyNiw3IEBAIHNjdHBf
c29yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvLAogCQkJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgm
c3RjYi0+YXNvYy5zYl9jYywgY3BfbGVuKTsKIAkJCQkJfQogCQkJCQljb3BpZWRfc29fZmFyICs9
IGNwX2xlbjsKLQkJCQkJZnJlZWRfc29fZmFyICs9IGNwX2xlbjsKKwkJCQkJZnJlZWRfc29fZmFy
ICs9ICh1aW50MzJfdCljcF9sZW47CiAJCQkJCWZyZWVkX3NvX2ZhciArPSBNU0laRTsKIAkJCQkJ
aWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfU0JfTE9HR0lO
R19FTkFCTEUpIHsKIAkJCQkJCXNjdHBfc2Jsb2coJnNvLT5zb19yY3YsIGNvbnRyb2wtPmRvX25v
dF9yZWZfc3RjYj9OVUxMOnN0Y2IsCkBAIC02NDE1LDcgKzY1MzMsNyBAQCBzY3RwX3NvcmVjdm1z
ZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJaWYgKCh1aW8tPnVpb19yZXNpZCA9PSAwKSB8fAogI2Vu
ZGlmCiAJCSAgICAoKGluX2Vlb3JfbW9kZSkgJiYKLQkJICAgICAoY29waWVkX3NvX2ZhciA+PSAo
dWludDMyX3QpbWF4KHNvLT5zb19yY3Yuc2JfbG93YXQsIDEpKSkpIHsKKwkJICAgICAoY29waWVk
X3NvX2ZhciA+PSBtYXgoc28tPnNvX3Jjdi5zYl9sb3dhdCwgMSkpKSkgewogCQkJZ290byByZWxl
YXNlOwogCQl9CiAJCS8qCkBAIC02NTcxLDcgKzY2ODksNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1
Y3Qgc29ja2V0ICpzbywKIAkJCQkgICBjb250cm9sLT5kb19ub3RfcmVmX3N0Y2I/TlVMTDpzdGNi
LCBTQ1RQX0xPR19TQkZSRUUsIFNDVFBfQlVGX0xFTihtKSk7CiAJCQl9CiAJCQlzY3RwX3NiZnJl
ZShjb250cm9sLCBzdGNiLCAmc28tPnNvX3JjdiwgbSk7Ci0JCQlmcmVlZF9zb19mYXIgKz0gU0NU
UF9CVUZfTEVOKG0pOworCQkJZnJlZWRfc29fZmFyICs9ICh1aW50MzJfdClTQ1RQX0JVRl9MRU4o
bSk7CiAJCQlmcmVlZF9zb19mYXIgKz0gTVNJWkU7CiAJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChz
Y3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9TQl9MT0dHSU5HX0VOQUJMRSkgewogCQkJCXNjdHBf
c2Jsb2coJnNvLT5zb19yY3YsCkBAIC03MTAzLDMxICs3MjIxLDM0IEBAIHNjdHBfY29ubmVjdHhf
aGVscGVyX2FkZChzdHJ1Y3Qgc2N0cF90Y2IKIAlyZXR1cm4gKGFkZGVkKTsKIH0KIAotc3RydWN0
IHNjdHBfdGNiICoKK2ludAogc2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChzdHJ1Y3Qgc2N0cF9p
bnBjYiAqaW5wLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsCi0JCQkgIHVuc2lnbmVkIGludCAqdG90
YWRkciwKLQkJCSAgdW5zaWduZWQgaW50ICpudW1fdjQsIHVuc2lnbmVkIGludCAqbnVtX3Y2LCBp
bnQgKmVycm9yLAotCQkJICB1bnNpZ25lZCBpbnQgbGltaXQsIGludCAqYmFkX2FkZHIpCisJCQkg
IHVuc2lnbmVkIGludCB0b3RhZGRyLAorCQkJICB1bnNpZ25lZCBpbnQgKm51bV92NCwgdW5zaWdu
ZWQgaW50ICpudW1fdjYsCisJCQkgIHVuc2lnbmVkIGludCBsaW1pdCkKIHsKIAlzdHJ1Y3Qgc29j
a2FkZHIgKnNhOwotCXN0cnVjdCBzY3RwX3RjYiAqc3RjYiA9IE5VTEw7CisJc3RydWN0IHNjdHBf
dGNiICpzdGNiOwogCXVuc2lnbmVkIGludCBpbmNyLCBhdCwgaTsKIAogCWF0ID0gMDsKIAlzYSA9
IGFkZHI7Ci0JKmVycm9yID0gKm51bV92NiA9ICpudW1fdjQgPSAwOworCSpudW1fdjYgPSAqbnVt
X3Y0ID0gMDsKIAkvKiBhY2NvdW50IGFuZCB2YWxpZGF0ZSBhZGRyZXNzZXMgKi8KLQlmb3IgKGkg
PSAwOyBpIDwgKnRvdGFkZHI7IGkrKykgeworCWlmICh0b3RhZGRyID09IDApIHsKKwkJcmV0dXJu
IChFSU5WQUwpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgdG90YWRkcjsgaSsrKSB7CisJCWlmIChh
dCArIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpID4gbGltaXQpIHsKKwkJCXJldHVybiAoRUlOVkFM
KTsKKwkJfQogCQlzd2l0Y2ggKHNhLT5zYV9mYW1pbHkpIHsKICNpZmRlZiBJTkVUCiAJCWNhc2Ug
QUZfSU5FVDoKIAkJCWluY3IgPSAodW5zaWduZWQgaW50KXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
aW4pOwogI2lmZGVmIEhBVkVfU0FfTEVOCiAJCQlpZiAoc2EtPnNhX2xlbiAhPSBpbmNyKSB7Ci0J
CQkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQVVRJ
TCwgRUlOVkFMKTsKLQkJCQkqZXJyb3IgPSBFSU5WQUw7Ci0JCQkJKmJhZF9hZGRyID0gMTsKLQkJ
CQlyZXR1cm4gKE5VTEwpOworCQkJCXJldHVybiAoRUlOVkFMKTsKIAkJCX0KICNlbmRpZgogCQkJ
KCpudW1fdjQpICs9IDE7CkBAIC03MTQxLDE4ICs3MjYyLDEyIEBAIHNjdHBfY29ubmVjdHhfaGVs
cGVyX2ZpbmQoc3RydWN0IHNjdHBfaW4KIAkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAq
KXNhOwogCQkJaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCZzaW42LT5zaW42X2FkZHIpKSB7CiAJ
CQkJLyogTXVzdCBiZSBub24tbWFwcGVkIGZvciBjb25uZWN0eCAqLwotCQkJCVNDVFBfTFRSQUNF
X0VSUl9SRVQoaW5wLCBOVUxMLCBOVUxMLCBTQ1RQX0ZST01fU0NUUFVUSUwsIEVJTlZBTCk7Ci0J
CQkJKmVycm9yID0gRUlOVkFMOwotCQkJCSpiYWRfYWRkciA9IDE7Ci0JCQkJcmV0dXJuIChOVUxM
KTsKKwkJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCQl9CiAJCQlpbmNyID0gKHVuc2lnbmVkIGludClz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CiAjaWZkZWYgSEFWRV9TQV9MRU4KIAkJCWlmIChz
YS0+c2FfbGVuICE9IGluY3IpIHsKLQkJCQlTQ1RQX0xUUkFDRV9FUlJfUkVUKGlucCwgTlVMTCwg
TlVMTCwgU0NUUF9GUk9NX1NDVFBVVElMLCBFSU5WQUwpOwotCQkJCSplcnJvciA9IEVJTlZBTDsK
LQkJCQkqYmFkX2FkZHIgPSAxOwotCQkJCXJldHVybiAoTlVMTCk7CisJCQkJcmV0dXJuIChFSU5W
QUwpOwogCQkJfQogI2VuZGlmCiAJCQkoKm51bV92NikgKz0gMTsKQEAgLTcxNjAsMjkgKzcyNzUs
MjMgQEAgc2N0cF9jb25uZWN0eF9oZWxwZXJfZmluZChzdHJ1Y3Qgc2N0cF9pbgogCQl9CiAjZW5k
aWYKIAkJZGVmYXVsdDoKLQkJCSp0b3RhZGRyID0gaTsKLQkJCWluY3IgPSAwOwotCQkJLyogd2Ug
YXJlIGRvbmUgKi8KLQkJCWJyZWFrOworCQkJcmV0dXJuIChFSU5WQUwpOwogCQl9Ci0JCWlmIChp
ID09ICp0b3RhZGRyKSB7Ci0JCQlicmVhazsKKwkJaWYgKChhdCArIGluY3IpID4gbGltaXQpIHsK
KwkJCXJldHVybiAoRUlOVkFMKTsKIAkJfQogCQlTQ1RQX0lOUF9JTkNSX1JFRihpbnApOwogCQlz
dGNiID0gc2N0cF9maW5kYXNzb2NpYXRpb25fZXBfYWRkcigmaW5wLCBzYSwgTlVMTCwgTlVMTCwg
TlVMTCk7CiAJCWlmIChzdGNiICE9IE5VTEwpIHsKLQkJCS8qIEFscmVhZHkgaGF2ZSBvciBhbSBi
cmluZyB1cCBhbiBhc3NvY2lhdGlvbiAqLwotCQkJcmV0dXJuIChzdGNiKTsKKwkJCVNDVFBfVENC
X1VOTE9DSyhzdGNiKTsKKwkJCXJldHVybiAoRUFMUkVBRFkpOwogCQl9IGVsc2UgewogCQkJU0NU
UF9JTlBfREVDUl9SRUYoaW5wKTsKIAkJfQotCQlpZiAoKGF0ICsgaW5jcikgPiBsaW1pdCkgewot
CQkJKnRvdGFkZHIgPSBpOwotCQkJYnJlYWs7Ci0JCX0KKwkJYXQgKz0gaW5jcjsKIAkJc2EgPSAo
c3RydWN0IHNvY2thZGRyICopKChjYWRkcl90KXNhICsgaW5jcik7CiAJfQotCXJldHVybiAoKHN0
cnVjdCBzY3RwX3RjYiAqKU5VTEwpOworCXJldHVybiAoMCk7CiB9CiAKIC8qCkBAIC03ODczLDYg
Kzc5ODIsMjQgQEAgc2N0cF9yZWN2X2ljbXBfdHVubmVsZWRfcGFja2V0KGludCBjbWQsIAogCQlz
Y3RwX25vdGlmeShpbnAsIHN0Y2IsIG5ldCwgdHlwZSwgY29kZSwKIAkJICAgICAgICAgICAgbnRv
aHMoaW5uZXJfaXAtPmlwX2xlbiksCiAJCSAgICAgICAgICAgICh1aW50MzJfdCludG9ocyhpY21w
LT5pY21wX25leHRtdHUpKTsKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCisJCWlmICghKHN0
Y2ItPnNjdHBfZXAtPnNjdHBfZmxhZ3MgJiBTQ1RQX1BDQl9GTEFHU19TT0NLRVRfR09ORSkgJiYK
KwkJICAgIChzdGNiLT5zY3RwX3NvY2tldCAhPSBOVUxMKSkgeworCQkJc3RydWN0IHNvY2tldCAq
dXBjYWxsX3NvY2tldDsKKworCQkJdXBjYWxsX3NvY2tldCA9IHN0Y2ItPnNjdHBfc29ja2V0Owor
CQkJU09DS19MT0NLKHVwY2FsbF9zb2NrZXQpOworCQkJc29yZWYodXBjYWxsX3NvY2tldCk7CisJ
CQlTT0NLX1VOTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCWlmICgodXBjYWxsX3NvY2tldC0+c29f
dXBjYWxsICE9IE5VTEwpICYmCisJCQkgICAgKHVwY2FsbF9zb2NrZXQtPnNvX2Vycm9yICE9IDAp
KSB7CisJCQkJKCp1cGNhbGxfc29ja2V0LT5zb191cGNhbGwpKHVwY2FsbF9zb2NrZXQsIHVwY2Fs
bF9zb2NrZXQtPnNvX3VwY2FsbGFyZywgTV9OT1dBSVQpOworCQkJfQorCQkJQUNDRVBUX0xPQ0so
KTsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCXNvcmVsZSh1cGNhbGxfc29ja2V0
KTsKKwkJfQorI2VuZGlmCiAJfSBlbHNlIHsKICNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiBf
X0ZyZWVCU0RfdmVyc2lvbiA8IDUwMDAwMAogCQkvKgpAQCAtODAzOCwxMSArODE2NSwyOCBAQCBz
Y3RwX3JlY3ZfaWNtcDZfdHVubmVsZWRfcGFja2V0KGludCBjbWQsCiAJCX0KIAkJc2N0cDZfbm90
aWZ5KGlucCwgc3RjYiwgbmV0LCB0eXBlLCBjb2RlLAogCQkJICAgICBudG9obChpcDZjcC0+aXA2
Y19pY21wNi0+aWNtcDZfbXR1KSk7CisjaWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQorCQlpZiAo
IShzdGNiLT5zY3RwX2VwLT5zY3RwX2ZsYWdzICYgU0NUUF9QQ0JfRkxBR1NfU09DS0VUX0dPTkUp
ICYmCisJCSAgICAoc3RjYi0+c2N0cF9zb2NrZXQgIT0gTlVMTCkpIHsKKwkJCXN0cnVjdCBzb2Nr
ZXQgKnVwY2FsbF9zb2NrZXQ7CisKKwkJCXVwY2FsbF9zb2NrZXQgPSBzdGNiLT5zY3RwX3NvY2tl
dDsKKwkJCVNPQ0tfTE9DSyh1cGNhbGxfc29ja2V0KTsKKwkJCXNvcmVmKHVwY2FsbF9zb2NrZXQp
OworCQkJU09DS19VTkxPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlpZiAoKHVwY2FsbF9zb2NrZXQt
PnNvX3VwY2FsbCAhPSBOVUxMKSAmJgorCQkJICAgICh1cGNhbGxfc29ja2V0LT5zb19lcnJvciAh
PSAwKSkgeworCQkJCSgqdXBjYWxsX3NvY2tldC0+c29fdXBjYWxsKSh1cGNhbGxfc29ja2V0LCB1
cGNhbGxfc29ja2V0LT5zb191cGNhbGxhcmcsIE1fTk9XQUlUKTsKKwkJCX0KKwkJCUFDQ0VQVF9M
T0NLKCk7CisJCQlTT0NLX0xPQ0sodXBjYWxsX3NvY2tldCk7CisJCQlzb3JlbGUodXBjYWxsX3Nv
Y2tldCk7CisJCX0KKyNlbmRpZgogCX0gZWxzZSB7CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykg
JiYgX19GcmVlQlNEX3ZlcnNpb24gPCA1MDAwMDAKIAkJaWYgKFBSQ19JU19SRURJUkVDVChjbWQp
ICYmIChpbnAgIT0gTlVMTCkpIHsKLQkJCWluNl9ydGNoYW5nZSgoc3RydWN0IGluNnBjYiAqKWlu
cCwKLQkJCSAgICBpbmV0NmN0bGVycm1hcFtjbWRdKTsKKwkJCWluNl9ydGNoYW5nZShpbnAsIGlu
ZXQ2Y3RsZXJybWFwW2NtZF0pOwogCQl9CiAjZW5kaWYKIAkJaWYgKChzdGNiID09IE5VTEwpICYm
IChpbnAgIT0gTlVMTCkpIHsKQEAgLTgyNTksMyArODQwMyw1MCBAQCBzY3RwX2hjX2dldF9tdHUo
dW5pb24gc2N0cF9zb2Nrc3RvcmUgKmFkCiAJcmV0dXJuICgodWludDMyX3QpdGNwX2hjX2dldG10
dSgmaW5jKSk7CiB9CiAjZW5kaWYKKwordm9pZAorc2N0cF9zZXRfc3RhdGUoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBpbnQgbmV3X3N0YXRlKQoreworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykK
KwlpbnQgb2xkX3N0YXRlID0gc3RjYi0+YXNvYy5zdGF0ZTsKKyNlbmRpZgorCisJS0FTU0VSVCgo
bmV3X3N0YXRlICYgflNDVFBfU1RBVEVfTUFTSykgPT0gMCwKKwkgICAgICAgICgic2N0cF9zZXRf
c3RhdGU6IENhbid0IHNldCBzdWJzdGF0ZSAobmV3X3N0YXRlID0gJXgpIiwKKwkgICAgICAgIG5l
d19zdGF0ZSkpOworCXN0Y2ItPmFzb2Muc3RhdGUgPSAoc3RjYi0+YXNvYy5zdGF0ZSAmIH5TQ1RQ
X1NUQVRFX01BU0spIHwgbmV3X3N0YXRlOworCWlmICgobmV3X3N0YXRlID09IFNDVFBfU1RBVEVf
U0hVVERPV05fUkVDRUlWRUQpIHx8CisJICAgIChuZXdfc3RhdGUgPT0gU0NUUF9TVEFURV9TSFVU
RE9XTl9TRU5UKSB8fAorCSAgICAobmV3X3N0YXRlID09IFNDVFBfU1RBVEVfU0hVVERPV05fQUNL
X1NFTlQpKSB7CisJCVNDVFBfQ0xFQVJfU1VCU1RBVEUoc3RjYiwgU0NUUF9TVEFURV9TSFVURE9X
Tl9QRU5ESU5HKTsKKwl9CisjaWYgZGVmaW5lZChLRFRSQUNFX0hPT0tTKQorCWlmICgoKG9sZF9z
dGF0ZSAmIFNDVFBfU1RBVEVfTUFTSykgIT0gbmV3X3N0YXRlKSAmJgorCSAgICAhKCgob2xkX3N0
YXRlICYgU0NUUF9TVEFURV9NQVNLKSA9PSBTQ1RQX1NUQVRFX0VNUFRZKSAmJgorCSAgICAgIChu
ZXdfc3RhdGUgPT0gU0NUUF9TVEFURV9JTlVTRSkpKSB7CisJCVNDVFBfUFJPQkU2KHN0YXRlX19j
aGFuZ2UsIE5VTEwsIHN0Y2IsIE5VTEwsIHN0Y2IsIE5VTEwsIG9sZF9zdGF0ZSk7CisJfQorI2Vu
ZGlmCit9CisKK3ZvaWQKK3NjdHBfYWRkX3N1YnN0YXRlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwg
aW50IHN1YnN0YXRlKQoreworI2lmIGRlZmluZWQoS0RUUkFDRV9IT09LUykKKwlpbnQgb2xkX3N0
YXRlID0gc3RjYi0+YXNvYy5zdGF0ZTsKKyNlbmRpZgorCisJS0FTU0VSVCgoc3Vic3RhdGUgJiBT
Q1RQX1NUQVRFX01BU0spID09IDAsCisJICAgICAgICAoInNjdHBfYWRkX3N1YnN0YXRlOiBDYW4n
dCBzZXQgc3RhdGUgKHN1YnN0YXRlID0gJXgpIiwKKwkgICAgICAgIHN1YnN0YXRlKSk7CisJc3Rj
Yi0+YXNvYy5zdGF0ZSB8PSBzdWJzdGF0ZTsKKyNpZiBkZWZpbmVkKEtEVFJBQ0VfSE9PS1MpCisJ
aWYgKCgoc3Vic3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSAmJgorCSAgICAg
KChvbGRfc3RhdGUgJiBTQ1RQX1NUQVRFX0FCT1VUX1RPX0JFX0ZSRUVEKSA9PSAwKSkgfHwKKwkg
ICAgKChzdWJzdGF0ZSAmIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORykgJiYKKwkgICAgICgo
b2xkX3N0YXRlICYgU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HKSA9PSAwKSkpIHsKKwkJU0NU
UF9QUk9CRTYoc3RhdGVfX2NoYW5nZSwgTlVMTCwgc3RjYiwgTlVMTCwgc3RjYiwgTlVMTCwgb2xk
X3N0YXRlKTsKKwl9CisjZW5kaWYKK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHB1dGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHB1dGlsLmgJKHJldmlzaW9uIDI1ODYwOCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwdXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRl
ZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHB1dGlsLmggMzI0NjE1IDIwMTctMTAtMTQgMTA6MDI6NTla
IHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cHV0
aWwuaCAzNTc3NzUgMjAyMC0wMi0xMSAyMDowMjoyMFogdHVleGVuICQiKTsKICNlbmRpZgogCiAj
aWZuZGVmIF9ORVRJTkVUX1NDVFBfVVRJTF9IXwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHVpbnQzMl90
IHNjdHBfZ2V0X25leHRfbXR1KHVpbnQzMl90KTsKIHZvaWQKIHNjdHBfdGltZW91dF9oYW5kbGVy
KHZvaWQgKik7CiAKLXVpbnQzMl90CitpbnQKIHNjdHBfY2FsY3VsYXRlX3J0byhzdHJ1Y3Qgc2N0
cF90Y2IgKiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRz
ICosIHN0cnVjdCB0aW1ldmFsICosIGludCk7CiAKQEAgLTE3Niw2ICsxNzYsOSBAQCBzY3RwX3B1
bGxfb2ZmX2NvbnRyb2xfdG9fbmV3X2lucChzdHJ1Y3QgCiAKIHZvaWQgc2N0cF9zdG9wX3RpbWVy
c19mb3Jfc2h1dGRvd24oc3RydWN0IHNjdHBfdGNiICopOwogCisvKiBTdG9wIGFsbCB0aW1lcnMg
Zm9yIGFzc29jaWF0aW9uIGFuZCByZW1vdGUgYWRkcmVzc2VzLiAqLwordm9pZCBzY3RwX3N0b3Bf
YXNzb2NpYXRpb25fdGltZXJzKHN0cnVjdCBzY3RwX3RjYiAqLCBib29sKTsKKwogdm9pZCBzY3Rw
X3JlcG9ydF9hbGxfb3V0Ym91bmQoc3RydWN0IHNjdHBfdGNiICosIHVpbnQxNl90LCBpbnQsIGlu
dAogI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoU0NUUF9TT19MT0NLX1RFU1RJ
TkcpCiAgICAgU0NUUF9VTlVTRUQKQEAgLTIyMywxMCArMjI2LDkgQEAgdm9pZCBzY3RwX2hhbmRs
ZV9vb3RiKHN0cnVjdCBtYnVmICosIGludAogaW50IHNjdHBfY29ubmVjdHhfaGVscGVyX2FkZChz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKICAgICBpbnQgdG90
YWRkciwgaW50ICplcnJvcik7CiAKLXN0cnVjdCBzY3RwX3RjYiAqCi1zY3RwX2Nvbm5lY3R4X2hl
bHBlcl9maW5kKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwK
LSAgICB1bnNpZ25lZCBpbnQgKnRvdGFkZHIsIHVuc2lnbmVkIGludCAqbnVtX3Y0LCB1bnNpZ25l
ZCBpbnQgKm51bV92NiwKLSAgICBpbnQgKmVycm9yLCB1bnNpZ25lZCBpbnQgbGltaXQsIGludCAq
YmFkX2FkZHIpOworaW50CitzY3RwX2Nvbm5lY3R4X2hlbHBlcl9maW5kKHN0cnVjdCBzY3RwX2lu
cGNiICosIHN0cnVjdCBzb2NrYWRkciAqLAorICAgIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50
ICosIHVuc2lnbmVkIGludCAqLCB1bnNpZ25lZCBpbnQpOwogCiBpbnQgc2N0cF9pc190aGVyZV9h
bl9hYm9ydF9oZXJlKHN0cnVjdCBtYnVmICosIGludCwgdWludDMyX3QgKik7CiAjaWZkZWYgSU5F
VDYKQEAgLTQwMyw3ICs0MDUsNyBAQCB2b2lkIHNjdHBfbG9nX2Nsb3Npbmcoc3RydWN0IHNjdHBf
aW5wY2IgCiAKIHZvaWQgc2N0cF9sb2dfbG9jayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4X3QgZnJvbSk7CiB2b2lkIHNjdHBfbG9nX21heGJ1cnN0
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfbmV0cyAqLCBpbnQsIGludCwgdWlu
dDhfdCk7Ci12b2lkIHNjdHBfbG9nX2Jsb2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICosIHNpemVfdCk7Cit2b2lkIHNjdHBfbG9nX2Jsb2NrKHVpbnQ4X3QsIHN0cnVjdCBzY3Rw
X2Fzc29jaWF0aW9uICosIHNzaXplX3QpOwogdm9pZCBzY3RwX2xvZ19yd25kKHVpbnQ4X3QsIHVp
bnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QpOwogdm9pZCBzY3RwX2xvZ19yd25kX3NldCh1aW50
OF90LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCk7CiBpbnQgc2N0cF9m
aWxsX3N0YXRfbG9nKHZvaWQgKiwgc2l6ZV90ICopOwpAQCAtNDI2LDUgKzQyOCw3IEBAIHVpbnQz
Ml90IHNjdHBfbWluX210dSh1aW50MzJfdCwgdWludDMyX3QKIHZvaWQgc2N0cF9oY19zZXRfbXR1
KHVuaW9uIHNjdHBfc29ja3N0b3JlICosIHVpbnQxNl90LCB1aW50MzJfdCk7CiB1aW50MzJfdCBz
Y3RwX2hjX2dldF9tdHUodW5pb24gc2N0cF9zb2Nrc3RvcmUgKiwgdWludDE2X3QpOwogI2VuZGlm
Cit2b2lkIHNjdHBfc2V0X3N0YXRlKHN0cnVjdCBzY3RwX3RjYiAqLCBpbnQpOwordm9pZCBzY3Rw
X2FkZF9zdWJzdGF0ZShzdHJ1Y3Qgc2N0cF90Y2IgKiwgaW50KTsKICNlbmRpZgkJCQkvKiBfS0VS
TkVMICovCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQv
MDAwMi1GaXhpbmctdXNyY3RwLWxpYnJhcnktY29tcGlsYXRpb24tZXJyb3JzLnBhdGNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvMDAwMi1GaXhpbmct
dXNyY3RwLWxpYnJhcnktY29tcGlsYXRpb24tZXJyb3JzLnBhdGNoCShyZXZpc2lvbiAyNTg2MDgp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0LzAwMDItRml4aW5nLXVzcmN0
cC1saWJyYXJ5LWNvbXBpbGF0aW9uLWVycm9ycy5wYXRjaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
OTYgKzI0LDMgQEAgaW5kZXggNzdlYTc3YjY3MWEuLjg5NzM5YzRlOTA4IDEwMDc1NQogICNlbmRp
ZgogIAogICNlbHNlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dl
YktpdC8wMDAyLUZpeGluZy11c3JjdHAtbGlicmFyeS1jb21waWxhdGlvbi1lcnJvcnMucGF0Y2gg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0LzAwMDItRml4aW5nLXVzcmN0cC1s
aWJyYXJ5LWNvbXBpbGF0aW9uLWVycm9ycy5wYXRjaAotaW5kZXggOTM2NDcxMTU0YTUuLmU2OWRl
MjliYjJkIDEwMDY0NAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC8w
MDAyLUZpeGluZy11c3JjdHAtbGlicmFyeS1jb21waWxhdGlvbi1lcnJvcnMucGF0Y2gKLSsrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9XZWJLaXQvMDAwMi1GaXhpbmctdXNyY3RwLWxp
YnJhcnktY29tcGlsYXRpb24tZXJyb3JzLnBhdGNoCi1AQCAtMSw4OCArMCwwIEBACi0tRnJvbSBi
ZTcxYTU0ZGE5YjBhZTdmMzc5ZWZmMDM3NzM1Mzc5YzllODVlOWNiIE1vbiBTZXAgMTcgMDA6MDA6
MDAgMjAwMQotLUZyb206IFlvdWVubiBGYWJsZXQgPHlvdWVubkBhcHBsZS5jb20+Ci0tRGF0ZTog
VGh1LCAxNCBEZWMgMjAxNyAxMzo0NDo0MSAtMDgwMAotLVN1YmplY3Q6IFtQQVRDSCAyLzhdIEZp
eGluZyB1c3JjdHAgbGlicmFyeSBjb21waWxhdGlvbiBlcnJvcnMKLS0KLS0tLS0KLS0gLi4uL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0LmMg
ICAgfCA4ICsrKysrKy0tCi0tIC4uLi9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9vdXRwdXQuYyAgIHwgNSArKystLQotLSAuLi4vU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmMgICAgICB8IDEgLQot
LSAuLi4vbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNl
cl9hdG9taWMuaCB8IDMgKystCi0tIDQgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwg
NiBkZWxldGlvbnMoLSkKLS0KLS1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lu
cHV0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuYwotLWluZGV4IDA2NDllYzJlMzI1
Li5lNGJiNTEzNzhkYyAxMDA3NTUKLS0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQu
YwotLSsrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5jCi0tQEAgLTE3MjgsMTAgKzE3
MjgsMTIgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9leGlzdGluZyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50
IGlwaGxlbiwgaW50IG9mZnNldCwKLS0gCQkJCSAqIGRvbid0IGRvdWJsZSB0aGluZ3MKLS0gCQkJ
CSAqLwotLSAJCQkJbmV0LT5oYl9yZXNwb25kZWQgPSAxOwotLSsJCQkJc3RydWN0IHRpbWV2YWwg
dGltZV9lbnRlcmVkOwotLSAJCQkJbmV0LT5SVE8gPSBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwg
YXNvYywgbmV0LAotLS0JCQkJCQkJICAgICAgJmNvb2tpZS0+dGltZV9lbnRlcmVkLAotLSsJCQkJ
CQkJICAgICAgJnRpbWVfZW50ZXJlZCwKLS0gCQkJCQkJCSAgICAgIHNjdHBfYWxpZ25fdW5zYWZl
X21ha2Vjb3B5LAotLSAJCQkJCQkJICAgICAgU0NUUF9SVFRfRlJPTV9OT05fREFUQSk7Ci0tKwkJ
CQljb29raWUtPnRpbWVfZW50ZXJlZCA9IHRpbWVfZW50ZXJlZDsKLS0gCi0tIAkJCQlpZiAoc3Rj
Yi0+YXNvYy5zY3RwX2F1dG9jbG9zZV90aWNrcyAmJgotLSAJCQkJICAgIChzY3RwX2lzX2ZlYXR1
cmVfb24oaW5wLCBTQ1RQX1BDQl9GTEFHU19BVVRPQ0xPU0UpKSkgewotLUBAIC0yNDgxLDkgKzI0
ODMsMTEgQEAgc2N0cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhs
ZW4sIGludCBvZmZzZXQsCi0tIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjYi0+YXNv
Yy50aW1lX2VudGVyZWQpOwotLSAJaWYgKChuZXRwICE9IE5VTEwpICYmICgqbmV0cCAhPSBOVUxM
KSkgewotLSAJCS8qIGNhbGN1bGF0ZSB0aGUgUlRUIGFuZCBzZXQgdGhlIGVuY2FwcyBwb3J0ICov
Ci0tKwkJc3RydWN0IHRpbWV2YWwgdGltZV9lbnRlcmVkOwotLSAJCSgqbmV0cCktPlJUTyA9IHNj
dHBfY2FsY3VsYXRlX3J0byhzdGNiLCBhc29jLCAqbmV0cCwKLS0tCQkJCQkJICAmY29va2llLT50
aW1lX2VudGVyZWQsIHNjdHBfYWxpZ25fdW5zYWZlX21ha2Vjb3B5LAotLSsJCQkJCQkgICZ0aW1l
X2VudGVyZWQsIHNjdHBfYWxpZ25fdW5zYWZlX21ha2Vjb3B5LAotLSAJCQkJCQkgIFNDVFBfUlRU
X0ZST01fTk9OX0RBVEEpOwotLSsJCWNvb2tpZS0+dGltZV9lbnRlcmVkID0gdGltZV9lbnRlcmVk
OwotLSAJfQotLSAJLyogcmVzcG9uZCB3aXRoIGEgQ09PS0lFLUFDSyAqLwotLSAJc2N0cF9zZW5k
X2Nvb2tpZV9hY2soc3RjYik7Ci0tZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL25ldGluZXQvc2N0cF9v
dXRwdXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYwotLWluZGV4IDkwYjBiZjNk
NjM2Li5mNjQ2Y2EzYTNjNiAxMDA3NTUKLS0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0
cHV0LmMKLS0rKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmMKLS1AQCAtNjAyNCw4
ICs2MDI0LDkgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5w
LCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0tIAltZW1zZXQoJnN0YywgMCwgc2l6ZW9mKHN0cnVj
dCBzY3RwX3N0YXRlX2Nvb2tpZSkpOwotLSAKLS0gCS8qIHRoZSB0aW1lIEkgYnVpbHQgY29va2ll
ICovCi0tLQkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmc3RjLnRpbWVfZW50ZXJlZCk7Ci0t
LQotLSsJc3RydWN0IHRpbWV2YWwgdGltZV9lbnRlcmVkOwotLSsJKHZvaWQpU0NUUF9HRVRUSU1F
X1RJTUVWQUwoJnRpbWVfZW50ZXJlZCk7Ci0tKwlzdGMudGltZV9lbnRlcmVkID0gdGltZV9lbnRl
cmVkOwotLSAJLyogcG9wdWxhdGUgYW55IHRpZSB0YWdzICovCi0tIAlpZiAoYXNvYyAhPSBOVUxM
KSB7Ci0tIAkJLyogdW5sb2NrIGJlZm9yZSB0YWcgc2VsZWN0aW9ucyAqLwotLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNi
LmMKLS1pbmRleCA5ZTlmY2EwNmM0ZC4uZDBjNzcwZTMwNzggMTAwNzU1Ci0tLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3BjYi5jCi0tKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5j
Ci0tQEAgLTY4MDksNyArNjgwOSw2IEBAIHNjdHBfcGNiX2luaXQoKQotLSAjZW5kaWYKLS0gI2lm
IGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKLS0gCW1idWZfaW5pdGlhbGl6ZShOVUxMKTsKLS0tCWF0
b21pY19pbml0KCk7Ci0tICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5FVDYpCi0tIAly
ZWN2X3RocmVhZF9pbml0KCk7Ci0tICNlbmRpZgotLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c2Vy
X2F0b21pYy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNlcl9hdG9taWMuaAotLWluZGV4IGI4NDE1YzYwNDdlLi5m
MzQ0MDU1ZGM1YiAxMDA3NTUKLS0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c2VyX2F0b21pYy5oCi0tKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNlcl9hdG9taWMuaAotLUBAIC04MCw3ICs4MCw4IEBACi0tICNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCi0tIHN0YXRpYyB2b2lkIGF0b21pY19pbml0KCkge30g
LyogZW1wdHkgd2hlbiB3ZSBhcmUgbm90IHVzaW5nIGF0b21pY19tdHggKi8KLS0gI2Vsc2UKLS0t
c3RhdGljIGlubGluZSB2b2lkIGF0b21pY19pbml0KCkge30gLyogZW1wdHkgd2hlbiB3ZSBhcmUg
bm90IHVzaW5nIGF0b21pY19tdHggKi8KLS0rLy8gV2ViS2l0IGNoYW5nZSwgdGhpcyBjb25mbGlj
dHMgd2l0aCBhdG9taWNfaW5pdCBNYWNPUyBtYWNyby4KLS0rLy8gc3RhdGljIGlubGluZSB2b2lk
IGF0b21pY19pbml0KCkge30gLyogZW1wdHkgd2hlbiB3ZSBhcmUgbm90IHVzaW5nIGF0b21pY19t
dHggKi8KLS0gI2VuZGlmCi0tIAotLSAjZWxzZQotLS0tIAotLTIuMTMuNSAoQXBwbGUgR2l0LTk0
KQotLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393949</attachid>
            <date>2020-03-18 21:50:28 -0700</date>
            <delta_ts>2020-03-19 03:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209204-20200318215027.patch</filename>
            <type>text/plain</type>
            <size>3025</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZwkocmV2aXNpb24gMjU4Njc5
KQorKysgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2hlcnJ5IHBpY2sgdXNyc2N0cCBjb21taXQg
NzkwYTdhMjU1NWFlZmIzOTJhNWE2OTkyM2YxZTlkMTdiNDk2ODQ2NworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjA0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81OTM2MjY3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5jOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmM6CisKIDIwMjAt
MDMtMTcgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0NNYWtlXSBsaWJvcHVzIDEuMSBpdHMgZW5vdWdoIGZvciBidWlsZGluZyBXZWJL
aXRHVEsgd2l0aCBFTkFCTEVfV0VCX1JUQwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfYXV0aC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX2F1dGguYwkocmV2aXNpb24gMjU4NTY0KQorKysgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfYXV0aC5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNp
ZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVl
QlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXV0aC5jIDMzNDUzMiAyMDE4LTA2LTAyIDE2OjI4
OjEwWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfYXV0aC5jIDM1NTkzMSAyMDE5LTEyLTIwIDE1OjI1OjA4WiB0dWV4ZW4gJCIpOwogI2VuZGlm
CiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTE0NTUsNyArMTQ1NSw4IEBAIHNj
dHBfYXV0aF9nZXRfY29va2llX3BhcmFtcyhzdHJ1Y3Qgc2N0cF8KIAkJcHR5cGUgPSBudG9ocyhw
aGRyLT5wYXJhbV90eXBlKTsKIAkJcGxlbiA9IG50b2hzKHBoZHItPnBhcmFtX2xlbmd0aCk7CiAK
LQkJaWYgKChwbGVuID09IDApIHx8IChvZmZzZXQgKyBwbGVuID4gbGVuZ3RoKSkKKwkJaWYgKChw
bGVuIDwgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgfHwKKwkJICAgIChvZmZzZXQgKyBw
bGVuID4gbGVuZ3RoKSkKIAkJCWJyZWFrOwogCiAJCWlmIChwdHlwZSA9PSBTQ1RQX1JBTkRPTSkg
ewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmMJKHJldmlzaW9uIDI1
ODU2NCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUg
PHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBf
cGNiLmMgMzM0NTMyIDIwMTgtMDYtMDIgMTY6Mjg6MTBaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgi
JEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2IuYyAzNTU5MzEgMjAxOS0xMi0yMCAx
NToyNTowOFogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29z
Lmg+CkBAIC03MjQ1LDcgKzcyNDUsNyBAQCBzY3RwX2xvYWRfYWRkcmVzc2VzX2Zyb21faW5pdChz
dHJ1Y3Qgc2N0CiAJCWlmIChvZmZzZXQgKyBwbGVuID4gbGltaXQpIHsKIAkJCWJyZWFrOwogCQl9
Ci0JCWlmIChwbGVuID09IDApIHsKKwkJaWYgKHBsZW4gPCBzaXplb2Yoc3RydWN0IHNjdHBfcGFy
YW1oZHIpKSB7CiAJCQlicmVhazsKIAkJfQogI2lmZGVmIElORVQKQEAgLTc0NjEsNiArNzQ2MSw5
IEBAIHNjdHBfbG9hZF9hZGRyZXNzZXNfZnJvbV9pbml0KHN0cnVjdCBzY3QKIAkJCWlmIChwbGVu
ID4gc2l6ZW9mKGxzdG9yZSkpIHsKIAkJCQlyZXR1cm4gKC0yMyk7CiAJCQl9CisJCQlpZiAocGxl
biA8IHNpemVvZihzdHJ1Y3Qgc2N0cF9hc2NvbmZfYWRkcnY0X3BhcmFtKSkgeworCQkJCXJldHVy
biAoLTEwMSk7CisJCQl9CiAJCQlwaGRyID0gc2N0cF9nZXRfbmV4dF9wYXJhbShtLCBvZmZzZXQs
CiAJCQkJCQkgICAoc3RydWN0IHNjdHBfcGFyYW1oZHIgKikmbHN0b3JlLAogCQkJCQkJICAgcGxl
bik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>