<?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>33198</bug_id>
          
          <creation_ts>2010-01-04 23:52:58 -0800</creation_ts>
          <short_desc>Reorganize, document and rename OS() platform macros.</short_desc>
          <delta_ts>2010-01-08 19:52:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>177051</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-04 23:52:58 -0800</bug_when>
    <thetext>Reorganize, document and rename OS() platform macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177062</commentid>
    <comment_count>1</comment_count>
      <attachid>45868</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-05 00:10:31 -0800</bug_when>
    <thetext>Created attachment 45868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177063</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 00:14:12 -0800</bug_when>
    <thetext>Attachment 45868 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/GraphicsContext3D.cpp:355:  One space before end of line comments  [whitespace/comments] [5]
WebCore/platform/graphics/SimpleFontData.h:143:  One space before end of line comments  [whitespace/comments] [5]
WebCore/platform/graphics/SimpleFontData.h:230:  One space before end of line comments  [whitespace/comments] [5]
WebCore/plugins/PluginPackage.cpp:129:  Should have a space between // and comment  [whitespace/comments] [4]
JavaScriptCore/runtime/DatePrototype.cpp:200:  Extra space before ( in function call  [whitespace/parens] [4]
JavaScriptCore/wtf/Platform.h:320:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:321:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:382:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:383:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:384:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:385:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:386:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:387:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:388:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:389:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:390:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:391:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:909:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:910:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
JavaScriptCore/wtf/Platform.h:911:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177073</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-05 00:58:47 -0800</bug_when>
    <thetext>Committed r52791: &lt;http://trac.webkit.org/changeset/52791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178930</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-08 19:52:06 -0800</bug_when>
    <thetext>We should fix all the style errors found by the style bot, see bug #33417.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45868</attachid>
            <date>2010-01-05 00:10:31 -0800</date>
            <delta_ts>2010-01-05 00:32:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33198-20100105001030.patch</filename>
            <type>text/plain</type>
            <size>194796</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzg3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAxIEBACisyMDEwLTAxLTA0ICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVvcmdhbml6ZSwgZG9jdW1lbnQgYW5kIHJlbmFtZSBPUygp
IHBsYXRmb3JtIG1hY3Jvcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMzMTk4CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogUmVuYW1lLCByZW9y
Z2FuaXplIGFuZCBkb2N1bWVudCBPUygpIG1hY3Jvcy4KKworICAgICAgICBBZGFwdCB0byBuYW1l
IGNoYW5nZXMuIEFsc28gZml4ZWQgYSBmZXcgaW5jb3JyZWN0IE9TIGNoZWNrcy4KKworICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6OmlzVkZQUHJlc2VudCk6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgICogYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmNwcDoKKyAgICAgICAgKiBjb25maWcuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlckZpbGU6On5SZWdpc3Rl
ckZpbGUpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAo
SlNDOjpSZWdpc3RlckZpbGU6OlJlZ2lzdGVyRmlsZSk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
RmlsZTo6Z3Jvdyk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcDoKKyAgICAgICAgKiBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcDoKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvclN5bWJpYW4uY3BwOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
V2luLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIHBhcnNlci9HcmFtbWFyLnk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRDb3VudCk6CisgICAgICAgICogcnVudGltZS9Db2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxs
b2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6OkhlYXA6OmZyZWVCbG9ja1B0cik6CisgICAgICAg
IChKU0M6OmN1cnJlbnRUaHJlYWRTdGFja0Jhc2UpOgorICAgICAgICAoSlNDOjpnZXRDdXJyZW50
UGxhdGZvcm1UaHJlYWQpOgorICAgICAgICAoSlNDOjpzdXNwZW5kVGhyZWFkKToKKyAgICAgICAg
KEpTQzo6cmVzdW1lVGhyZWFkKToKKyAgICAgICAgKEpTQzo6Z2V0UGxhdGZvcm1UaHJlYWRSZWdp
c3RlcnMpOgorICAgICAgICAoSlNDOjpvdGhlclRocmVhZFN0YWNrUG9pbnRlcik6CisgICAgICAg
ICogcnVudGltZS9Db2xsZWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICog
cnVudGltZS9NYXJrU3RhY2suaDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrOjpNYXJrU3RhY2tB
cnJheTo6c2hyaW5rQWxsb2NhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2tQb3Np
eC5jcHA6CisgICAgICAgICogcnVudGltZS9NYXJrU3RhY2tTeW1iaWFuLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL01hcmtTdGFja1dpbi5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZik6Cisg
ICAgICAgICogcnVudGltZS9UaW1lb3V0Q2hlY2tlci5jcHA6CisgICAgICAgIChKU0M6OmdldENQ
VVRpbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5jcHA6CisgICAgICAgIChKU0M6OlVT
dHJpbmc6OmZyb20pOgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoKKyAgICAgICAgKiB3
dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5jcHA6CisgICAgICAg
IChXVEY6Omxvd1Jlc1VUQ1RpbWUpOgorICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5oOgorICAg
ICAgICAoV1RGOjpnZXRMb2NhbFRpbWUpOgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6Cisg
ICAgICAgICogd3RmL0Zhc3RNYWxsb2MuY3BwOgorICAgICAgICAoV1RGOjpUQ01hbGxvY19UaHJl
YWRDYWNoZTo6SW5pdE1vZHVsZSk6CisgICAgICAgIChXVEY6OlRDTWFsbG9jU3RhdHM6Oik6Cisg
ICAgICAgICogd3RmL0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKiB3dGYvTWF0aEV4dHJhcy5oOgor
ICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuY3BwOgorICAgICAgICAoV1RGOjpyYW5kb21OdW1i
ZXIpOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXJTZWVkLmg6CisgICAgICAgIChXVEY6Omlu
aXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IpOgorICAgICAgICAqIHd0Zi9TdHJpbmdFeHRy
YXMuaDoKKyAgICAgICAgKiB3dGYvVENTcGluTG9jay5oOgorICAgICAgICAoVENNYWxsb2NfU3Bp
bkxvY2s6OlVubG9jayk6CisgICAgICAgIChUQ01hbGxvY19TbG93TG9jayk6CisgICAgICAgICog
d3RmL1RDU3lzdGVtQWxsb2MuY3BwOgorICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgor
ICAgICAgICAoV1RGOjo6OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFs
aXplVGhyZWFkaW5nKToKKyAgICAgICAgKFdURjo6aXNNYWluVGhyZWFkKToKKyAgICAgICAgKiB3
dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6d3RmVGhyZWFkRW50cnlQb2ludCk6
CisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVhZEludGVybmFsKToKKyAgICAgICAgKiB3dGYvVk1U
YWdzLmg6CisgICAgICAgICogd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcDoKKyAgICAg
ICAgKFdURjo6Q29sbGF0b3I6OnVzZXJEZWZhdWx0KToKKyAgICAgICAgKiB3dGYvd2luL01haW5U
aHJlYWRXaW4uY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3Jt
KToKKwogMjAxMC0wMS0wNCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4K
IAogICAgICAgICBBZGQgbWlzc2luZyBmaWxlcyB0byB0aGUgYnVpbGQgc3lzdGVtIC0gbWFrZSBk
aXN0Y2hlY2sgYnVpbGQgZml4LgpJbmRleDogSmF2YVNjcmlwdENvcmUvY29uZmlnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2
YVNjcmlwdENvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhZGVm
aW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIoR0NDKQorI2lmIE9TKFdJTkRPV1MpICYm
ICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01QSUxFUihHQ0MpCiAjaWYgZGVmaW5lZChC
VUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVmaW5l
IEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQpAQCAtMzUsMTQgKzM1
LDE0IEBACiAjZGVmaW5lIEpTX0VYUE9SVERBVEEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lO
X09TKQorI2lmIE9TKFdJTkRPV1MpCiAKIC8vIElmIHdlIGRvbid0IGRlZmluZSB0aGVzZSwgdGhl
eSBnZXQgZGVmaW5lZCBpbiB3aW5kZWYuaC4gCiAvLyBXZSB3YW50IHRvIHVzZSBzdGQ6Om1pbiBh
bmQgc3RkOjptYXgKICNkZWZpbmUgbWF4IG1heAogI2RlZmluZSBtaW4gbWluCiAKLSNpZiAhQ09N
UElMRVIoTVNWQzcpICYmICFQTEFURk9STShXSU5DRSkKKyNpZiAhQ09NUElMRVIoTVNWQzcpICYm
ICFPUyhXSU5DRSkKIC8vIFdlIG5lZWQgdG8gZGVmaW5lIHRoaXMgYmVmb3JlIHRoZSBmaXJzdCAj
aW5jbHVkZSBvZiBzdGRsaWIuaCBvciBpdCB3b24ndCBjb250YWluIHJhbmRfcy4KICNpZm5kZWYg
X0NSVF9SQU5EX1MKICNkZWZpbmUgX0NSVF9SQU5EX1MKQEAgLTUxLDcgKzUxLDcgQEAKIAogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShGUkVFQlNEKSB8fCBQTEFURk9STShPUEVOQlNEKQorI2lmIE9T
KEZSRUVCU0QpIHx8IE9TKE9QRU5CU0QpCiAjZGVmaW5lIEhBVkVfUFRIUkVBRF9OUF9IIDEKICNl
bmRpZgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvanNj
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPHN0ZGxpYi5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaWYgIVBMQVRGT1JNKFdJTl9PUykKKyNpZiAhT1Mo
V0lORE9XUykKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCkBAIC01NCw3ICs1NCw3IEBA
CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjZW5kaWYKIAotI2lmIENPTVBJTEVSKE1TVkMpICYmICFQ
TEFURk9STShXSU5DRSkKKyNpZiBDT01QSUxFUihNU1ZDKSAmJiAhT1MoV0lOQ0UpCiAjaW5jbHVk
ZSA8Y3J0ZGJnLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPG1tc3lzdGVtLmg+
CkBAIC0zMTMsNyArMzEzLDcgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBK
U0dsbwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0jaWYgZGVmaW5lZChf
REVCVUcpICYmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBkZWZpbmVkKF9ERUJVRykgJiYgT1MoV0lO
RE9XUykKICAgICBfQ3J0U2V0UmVwb3J0RmlsZShfQ1JUX1dBUk4sIF9DUlREQkdfRklMRV9TVERF
UlIpOwogICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfV0FSTiwgX0NSVERCR19NT0RFX0ZJTEUp
OwogICAgIF9DcnRTZXRSZXBvcnRGaWxlKF9DUlRfRVJST1IsIF9DUlREQkdfRklMRV9TVERFUlIp
OwpAQCAtMzIyLDcgKzMyMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAg
ICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0ZJTEUpOwogI2Vu
ZGlmCiAKLSNpZiBDT01QSUxFUihNU1ZDKSAmJiAhUExBVEZPUk0oV0lOQ0UpCisjaWYgQ09NUElM
RVIoTVNWQykgJiYgIU9TKFdJTkNFKQogICAgIHRpbWVCZWdpblBlcmlvZCgxKTsKICNlbmRpZgog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gNTI3ODIpCisr
KyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUg
PG1hY2gtby9keWxkLmg+CiAKIHN0YXRpYyBjb25zdCBpbnQzMl90IHdlYmtpdEZpcnN0VmVyc2lv
bldpdGhDb25jdXJyZW50R2xvYmFsQ29udGV4dHMgPSAweDIxMDA1MDA7IC8vIDUyOC41LjAKQEAg
LTYzLDcgKzYzLDcgQEAgdm9pZCBKU0NvbnRleHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdQog
SlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZShKU0NsYXNzUmVmIGdsb2Jh
bE9iamVjdENsYXNzKQogewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSNpZiBQTEFURk9S
TShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogICAgIC8vIFdoZW4gcnVubmluZyBvbiBUaWdlciBv
ciBMZW9wYXJkLCBvciBpZiB0aGUgYXBwbGljYXRpb24gd2FzIGxpbmtlZCBiZWZvcmUgSlNHbG9i
YWxDb250ZXh0Q3JlYXRlIHdhcyBjaGFuZ2VkCiAgICAgLy8gdG8gdXNlIGEgdW5pcXVlIEpTR2xv
YmFsRGF0YSwgd2UgdXNlIGEgc2hhcmVkIG9uZSBmb3IgY29tcGF0aWJpbGl0eS4KICNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkK
QEAgLTc0LDcgKzc0LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0
ZQogICAgICAgICBKU0xvY2sgbG9jayhMb2NrRm9yUmVhbCk7CiAgICAgICAgIHJldHVybiBKU0ds
b2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKHRvUmVmKCZKU0dsb2JhbERhdGE6OnNoYXJlZEluc3Rh
bmNlKCkpLCBnbG9iYWxPYmplY3RDbGFzcyk7CiAgICAgfQotI2VuZGlmIC8vIFBMQVRGT1JNKERB
UldJTikKKyNlbmRpZiAvLyBPUyhEQVJXSU4pCiAKICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0
Q3JlYXRlSW5Hcm91cCgwLCBnbG9iYWxPYmplY3RDbGFzcyk7CiB9CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAJKHJldmlzaW9uIDUyNzgy
KQorKysgSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJB
Uk0uaCIKIAotI2lmIFBMQVRGT1JNKExJTlVYKQorI2lmIE9TKExJTlVYKQogI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KQEAg
LTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBib29sIGlzVkZQUHJlc2Vu
dCgpCiB7Ci0jaWYgUExBVEZPUk0oTElOVVgpCisjaWYgT1MoTElOVVgpCiAgICAgaW50IGZkID0g
b3BlbigiL3Byb2Mvc2VsZi9hdXh2IiwgT19SRE9OTFkpOwogICAgIGlmIChmZCA+IDApIHsKICAg
ICAgICAgRWxmMzJfYXV4dl90IGF1eDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiA1Mjc4MikKKysrIEph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NDUsNyArOTQ1LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODY7CiAKICNpZiBDUFUoWDg2KQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBP
UyhNQUNfT1NfWCkKIAogICAgIC8vIEFsbCBYODYgTWFjcyBhcmUgZ3VhcmFudGVlZCB0byBzdXBw
b3J0IGF0IGxlYXN0IFNTRTIsCiAgICAgc3RhdGljIGJvb2wgaXNTU0UyUHJlc2VudCgpCkBAIC05
NTMsNyArOTUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0j
ZWxzZSAvLyBQTEFURk9STShNQUMpCisjZWxzZSAvLyBPUyhNQUNfT1NfWCkKIAogICAgIGVudW0g
U1NFMkNoZWNrU3RhdGUgewogICAgICAgICBOb3RDaGVja2VkU1NFMiwKQEAgLTk5Niw3ICs5OTYs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIHN0YXRpYyBTU0UyQ2hlY2tTdGF0ZSBzX3NzZTJDaGVj
a1N0YXRlOwogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIE9TKE1BQ19PU19Y
KQogI2VsaWYgIWRlZmluZWQoTkRFQlVHKSAvLyBDUFUoWDg2KQogCiAgICAgLy8gT24geDg2LTY0
IHdlIHNob3VsZCBuZXZlciBiZSBjaGVja2luZyBmb3IgU1NFMiBpbiBhIG5vbi1kZWJ1ZyBidWls
ZCwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAkocmV2aXNp
b24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJPcGNvZGUuaCIKIAotI2lmICFQTEFURk9STShXSU5fT1MpCisjaWYgIU9TKFdJ
TkRPV1MpCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIFNhbXBsaW5nRmxhZ3M6OnN0b3AoKSB7fQogdWludDMyX3QgU2FtcGxpbmdGbGFnczo6c19m
bGFncyA9IDEgPDwgMTU7CiAKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dT
KQogCiBzdGF0aWMgdm9pZCBzbGVlcEZvck1pY3Jvc2Vjb25kcyh1bnNpZ25lZCB1cykKIHsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAkocmV2aXNp
b24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIFJlZ2lzdGVyRmlsZTo6flJlZ2lzdGVy
RmlsZSgpCiAjaWYgSEFWRShNTUFQKQogICAgIG11bm1hcChtX2J1ZmZlciwgKChtX21heCAtIG1f
c3RhcnQpICsgbV9tYXhHbG9iYWxzKSAqIHNpemVvZihSZWdpc3RlcikpOwogI2VsaWYgSEFWRShW
SVJUVUFMQUxMT0MpCi0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgVmly
dHVhbEZyZWUobV9idWZmZXIsIERXT1JEKG1fY29tbWl0RW5kKSAtIERXT1JEKG1fYnVmZmVyKSwg
TUVNX0RFQ09NTUlUKTsKICNlbmRpZgogICAgIFZpcnR1YWxGcmVlKG1fYnVmZmVyLCAwLCBNRU1f
UkVMRUFTRSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUu
aAkocmV2aXNpb24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICNpZiBIQVZFKE1NQVApCiAgICAgICAgIG1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPihtbWFwKDAsIGJ1ZmZlckxlbmd0aCwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9Q
UklWQVRFfE1BUF9BTk9OLCBWTV9UQUdfRk9SX1JFR0lTVEVSRklMRV9NRU1PUlksIDApKTsKICAg
ICAgICAgaWYgKG1fYnVmZmVyID09IE1BUF9GQUlMRUQpIHsKLSNpZiBQTEFURk9STShXSU5DRSkK
KyNpZiBPUyhXSU5DRSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGFs
bG9jYXRlIHJlZ2lzdGVyIGZpbGU6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgZmls
ZTogJWRcbiIsIGVycm5vKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAjZWxpZiBIQVZFKFZJUlRVQUxBTExPQykKICAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2Fz
dDxSZWdpc3Rlcio+KFZpcnR1YWxBbGxvYygwLCByb3VuZFVwQWxsb2NhdGlvblNpemUoYnVmZmVy
TGVuZ3RoLCBjb21taXRTaXplKSwgTUVNX1JFU0VSVkUsIFBBR0VfUkVBRFdSSVRFKSk7CiAgICAg
ICAgIGlmICghbV9idWZmZXIpIHsKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkK
ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGFsbG9jYXRlIHJlZ2lzdGVy
IGZpbGU6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CiAjZWxzZQogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgZmlsZTogJWRcbiIsIGVycm5v
KTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IGNv
bW1pdHRlZFNpemUgPSByb3VuZFVwQWxsb2NhdGlvblNpemUobWF4R2xvYmFscyAqIHNpemVvZihS
ZWdpc3RlciksIGNvbW1pdFNpemUpOwogICAgICAgICB2b2lkKiBjb21taXRDaGVjayA9IFZpcnR1
YWxBbGxvYyhtX2J1ZmZlciwgY29tbWl0dGVkU2l6ZSwgTUVNX0NPTU1JVCwgUEFHRV9SRUFEV1JJ
VEUpOwogICAgICAgICBpZiAoY29tbWl0Q2hlY2sgIT0gbV9idWZmZXIpIHsKLSNpZiBQTEFURk9S
TShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291
bGQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIGZpbGU6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CiAj
ZWxzZQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgYWxsb2NhdGUgcmVn
aXN0ZXIgZmlsZTogJWRcbiIsIGVycm5vKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgaWYgKG5ld0VuZCA+IG1fY29tbWl0RW5kKSB7CiAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSA9IHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShyZWludGVycHJldF9jYXN0PGNoYXIq
PihuZXdFbmQpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRFbmQpLCBjb21taXRT
aXplKTsKICAgICAgICAgICAgIGlmICghVmlydHVhbEFsbG9jKG1fY29tbWl0RW5kLCBzaXplLCBN
RU1fQ09NTUlULCBQQUdFX1JFQURXUklURSkpIHsKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBP
UyhXSU5DRSkKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBhbGxv
Y2F0ZSByZWdpc3RlciBmaWxlOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwogI2Vsc2UKICAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciBm
aWxlOiAlZFxuIiwgZXJybm8pOwpJbmRleDogSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5oCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxMiBAQAogI2luY2x1
ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBM
QVRGT1JNKElQSE9ORSkKKyNpZiBPUyhJUEhPTkVfT1MpCiAjaW5jbHVkZSA8bGlia2Vybi9PU0Nh
Y2hlQ29udHJvbC5oPgogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKFNZTUJJQU4pCisjaWYgT1MoU1lNQklBTikKICNpbmNsdWRlIDxlMzJzdGQuaD4KICNlbmRp
ZgogCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG9jYXRpb24gewog
ICAgICAgICBjaGFyKiBwYWdlczsKICAgICAgICAgc2l6ZV90IHNpemU7Ci0jaWYgUExBVEZPUk0o
U1lNQklBTikKKyNpZiBPUyhTWU1CSUFOKQogICAgICAgICBSQ2h1bmsqIGNodW5rOwogI2VuZGlm
CiAgICAgfTsKQEAgLTE5MCwxMyArMTkwLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBj
YWNoZUZsdXNoKHZvaWQqLCBzaXplX3QpCiAgICAgewogICAgIH0KLSNlbGlmIENQVShBUk1fVEhV
TUIyKSAmJiBQTEFURk9STShJUEhPTkUpCisjZWxpZiBDUFUoQVJNX1RIVU1CMikgJiYgT1MoSVBI
T05FX09TKQogICAgIHN0YXRpYyB2b2lkIGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNp
emUpCiAgICAgewogICAgICAgICBzeXNfZGNhY2hlX2ZsdXNoKGNvZGUsIHNpemUpOwogICAgICAg
ICBzeXNfaWNhY2hlX2ludmFsaWRhdGUoY29kZSwgc2l6ZSk7CiAgICAgfQotI2VsaWYgQ1BVKEFS
TV9USFVNQjIpICYmIFBMQVRGT1JNKExJTlVYKQorI2VsaWYgQ1BVKEFSTV9USFVNQjIpICYmIE9T
KExJTlVYKQogICAgIHN0YXRpYyB2b2lkIGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNp
emUpCiAgICAgewogICAgICAgICBhc20gdm9sYXRpbGUgKApAQCAtMjEyLDEyICsyMTIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgOiAiciIgKGNvZGUpLCAiciIgKHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvZGUpICsgc2l6ZSkKICAgICAgICAgICAgIDogInIwIiwgInIxIiwgInIyIik7CiAg
ICAgfQotI2VsaWYgUExBVEZPUk0oU1lNQklBTikKKyNlbGlmIE9TKFNZTUJJQU4pCiAgICAgc3Rh
dGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIFVzZXI6OklNQl9SYW5nZShjb2RlLCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZSkgKyBzaXpl
KTsKICAgICB9Ci0jZWxpZiBDUFUoQVJNX1RSQURJVElPTkFMKSAmJiBQTEFURk9STShMSU5VWCkK
KyNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpICYmIE9TKExJTlVYKQogICAgIHN0YXRpYyB2b2lk
IGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBhc20g
dm9sYXRpbGUgKApJbmRleDogSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JG
aXhlZFZNUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlw
dENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAKLSNpZiBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBQTEFURk9STShNQUMpICYmIENQVShYODZfNjQpCisjaWYgRU5BQkxFKEFT
U0VNQkxFUikgJiYgT1MoREFSV0lOKSAmJiBDUFUoWDg2XzY0KQogCiAjaW5jbHVkZSAiVENTcGlu
TG9jay5oIgogI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcAkocmV2aXNpb24gNTI3ODIp
CisrKyBKYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9j
YXRvci5oIgogCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgUExBVEZPUk0oVU5JWCkgJiYgIVBM
QVRGT1JNKFNZTUJJQU4pCisjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgT1MoVU5JWCkgJiYgIU9T
KFNZTUJJQU4pCiAKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgpA
QCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICEoUExBVEZPUk0oTUFD
KSAmJiBDUFUoWDg2XzY0KSkKKyNpZiAhKE9TKERBUldJTikgJiYgQ1BVKFg4Nl82NCkpCiAKIHZv
aWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aW50aWFsaXplUGFnZVNpemUoKQogewpAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIEV4ZWN1dGFibGVQb29sOjpzeXN0ZW1SZWxlYXNlKGNvbnN0CiAgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwogfQogCi0jZW5kaWYgLy8gIShQTEFURk9STShN
QUMpICYmIENQVShYODZfNjQpKQorI2VuZGlmIC8vICEoT1MoREFSV0lOKSAmJiBDUFUoWDg2XzY0
KSkKIAogI2lmIEVOQUJMRShBU1NFTUJMRVJfV1hfRVhDTFVTSVZFKQogdm9pZCBFeGVjdXRhYmxl
QWxsb2NhdG9yOjpyZXByb3RlY3RSZWdpb24odm9pZCogc3RhcnQsIHNpemVfdCBzaXplLCBQcm90
ZWN0aW9uU2V0aW5nIHNldHRpbmcpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvclN5bWJpYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yU3ltYmlhbi5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JTeW1iaWFuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgog
Ci0jaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgUExBVEZPUk0oU1lNQklBTikKKyNpZiBFTkFCTEUo
QVNTRU1CTEVSKSAmJiBPUyhTWU1CSUFOKQogCiAjaW5jbHVkZSA8ZTMyaGFsLmg+CiAjaW5jbHVk
ZSA8ZTMyc3RkLmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
cldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3JXaW4uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAog
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogCi0jaWYgRU5BQkxFKEFTU0VNQkxF
UikgJiYgUExBVEZPUk0oV0lOX09TKQorI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIE9TKFdJTkRP
V1MpCiAKICNpbmNsdWRlICJ3aW5kb3dzLmgiCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTWFjaGluZVRyYW1wbwogICAgICAqIHN0YWNrIHBvaW50ZXIgYnkgdGhlIHJpZ2h0
IGFtb3VudCBhZnRlciB0aGUgY2FsbC4KICAgICAgKi8KIAotI2lmIENPTVBJTEVSKE1TVkMpIHx8
IFBMQVRGT1JNKExJTlVYKQorI2lmIENPTVBJTEVSKE1TVkMpIHx8IE9TKExJTlVYKQogI2lmIENP
TVBJTEVSKE1TVkMpCiAjcHJhZ21hIHBhY2socHVzaCkKICNwcmFnbWEgcGFjayg0KQpAQCAtMjIz
LDcgKzIyMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG8KICAg
ICBzdG9yZVB0cihyZWdUMiwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgT0JKRUNUX09G
RlNFVE9GKE5hdGl2ZUNhbGxGcmFtZVN0cnVjdHVyZSwgdGhpc1ZhbHVlKSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOwogICAgIHN0b3JlUHRyKHJlZ1QzLCBB
ZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlQ2FsbEZy
YW1lU3RydWN0dXJlLCB0aGlzVmFsdWUpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpKTsKIAotI2lmIENPTVBJTEVSKE1TVkMpIHx8IFBMQVRGT1JNKExJTlVYKQorI2lm
IENPTVBJTEVSKE1TVkMpIHx8IE9TKExJTlVYKQogICAgIC8vIEFyZ0xpc3QgaXMgcGFzc2VkIGJ5
IHJlZmVyZW5jZSBzbyBpcyBzdGFja1BvaW50ZXJSZWdpc3RlciArIDQgKiBzaXplb2YoUmVnaXN0
ZXIpCiAgICAgYWRkUHRyKEltbTMyKE9CSkVDVF9PRkZTRVRPRihOYXRpdmVDYWxsRnJhbWVTdHJ1
Y3R1cmUsIHJlc3VsdCkpLCBzdGFja1BvaW50ZXJSZWdpc3RlciwgWDg2UmVnaXN0ZXJzOjplY3gp
OwogCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNo
aW5lVHJhbXBvCiAgICAgICogbm90IHRoZSByZXN0IG9mIHRoZSBjYWxsZnJhbWUgc28gd2UgbmVl
ZCBhIG5pY2Ugd2F5IHRvIGVuc3VyZSB3ZSBpbmNyZW1lbnQgdGhlCiAgICAgICogc3RhY2sgcG9p
bnRlciBieSB0aGUgcmlnaHQgYW1vdW50IGFmdGVyIHRoZSBjYWxsLgogICAgICAqLwotI2lmIENP
TVBJTEVSKE1TVkMpIHx8IFBMQVRGT1JNKExJTlVYKQorI2lmIENPTVBJTEVSKE1TVkMpIHx8IE9T
KExJTlVYKQogICAgIHN0cnVjdCBOYXRpdmVDYWxsRnJhbWVTdHJ1Y3R1cmUgewogICAgICAgLy8g
IENhbGxGcmFtZSogY2FsbEZyYW1lOyAvLyBwYXNzZWQgaW4gRURYCiAgICAgICAgIEpTT2JqZWN0
KiBjYWxsZWU7CkBAIC0xNzAxLDcgKzE3MDEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVD
VElNYWNoaW5lVHJhbXBvCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCAtKGludClzaXplb2Yo
UmVnaXN0ZXIpKSwgcmVnVDEpOwogICAgIHN0b3JlUHRyKHJlZ1QxLCBBZGRyZXNzKHN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlQ2FsbEZyYW1lU3RydWN0dXJlLCB0
aGlzVmFsdWUpKSk7CiAKLSNpZiBDT01QSUxFUihNU1ZDKSB8fCBQTEFURk9STShMSU5VWCkKKyNp
ZiBDT01QSUxFUihNU1ZDKSB8fCBPUyhMSU5VWCkKICAgICAvLyBBcmdMaXN0IGlzIHBhc3NlZCBi
eSByZWZlcmVuY2Ugc28gaXMgc3RhY2tQb2ludGVyUmVnaXN0ZXIgKyA0ICogc2l6ZW9mKFJlZ2lz
dGVyKQogICAgIGFkZFB0cihJbW0zMihPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlQ2FsbEZyYW1lU3Ry
dWN0dXJlLCByZXN1bHQpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIsIFg4NlJlZ2lzdGVyczo6ZWN4
KTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIEph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDMxICs2
NCwzNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIFBM
QVRGT1JNKERBUldJTikgfHwgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKICNkZWZpbmUgU1lNQk9MX1NUUklORyhuYW1lKSAiXyIgI25hbWUKICNlbHNlCiAj
ZGVmaW5lIFNZTUJPTF9TVFJJTkcobmFtZSkgI25hbWUKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SVBIT05FKQorI2lmIE9TKElQSE9ORV9PUykKICNkZWZpbmUgVEhVTUJfRlVOQ19QQVJBTShuYW1l
KSBTWU1CT0xfU1RSSU5HKG5hbWUpCiAjZWxzZQogI2RlZmluZSBUSFVNQl9GVU5DX1BBUkFNKG5h
bWUpCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKExJTlVYKSAmJiBDUFUoWDg2XzY0KQorI2lmIE9T
KExJTlVYKSAmJiBDUFUoWDg2XzY0KQogI2RlZmluZSBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
bmFtZSkgI25hbWUgIkBwbHQiCiAjZWxzZQogI2RlZmluZSBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04obmFtZSkgU1lNQk9MX1NUUklORyhuYW1lKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShEQVJX
SU4pCisjaWYgT1MoREFSV0lOKQogICAgIC8vIE1hY2gtTyBwbGF0Zm9ybQogI2RlZmluZSBISURF
X1NZTUJPTChuYW1lKSAiLnByaXZhdGVfZXh0ZXJuIF8iICNuYW1lCi0jZWxpZiBQTEFURk9STShB
SVgpCisjZWxpZiBPUyhBSVgpCiAgICAgLy8gSUJNJ3Mgb3duIGZpbGUgZm9ybWF0CiAjZGVmaW5l
IEhJREVfU1lNQk9MKG5hbWUpICIubGdsb2JsICIgI25hbWUKLSNlbGlmIFBMQVRGT1JNKExJTlVY
KSB8fCBQTEFURk9STShGUkVFQlNEKSB8fCBQTEFURk9STShPUEVOQlNEKSB8fCBQTEFURk9STShT
T0xBUklTKSB8fCAoUExBVEZPUk0oSFBVWCkgJiYgQ1BVKElBNjQpKSB8fCBQTEFURk9STShTWU1C
SUFOKSB8fCBQTEFURk9STShORVRCU0QpCisjZWxpZiAgIE9TKExJTlVYKSAgICAgICAgICAgICAg
IFwKKyAgICAgfHwgT1MoRlJFRUJTRCkgICAgICAgICAgICAgXAorICAgICB8fCBPUyhPUEVOQlNE
KSAgICAgICAgICAgICBcCisgICAgIHx8IE9TKFNPTEFSSVMpICAgICAgICAgICAgIFwKKyAgICAg
fHwgKE9TKEhQVVgpICYmIENQVShJQTY0KSkgXAorICAgICB8fCBPUyhTWU1CSUFOKSAgICAgICAg
ICAgICBcCisgICAgIHx8IE9TKE5FVEJTRCkKICAgICAvLyBFTEYgcGxhdGZvcm0KICNkZWZpbmUg
SElERV9TWU1CT0wobmFtZSkgIi5oaWRkZW4gIiAjbmFtZQogI2Vsc2UKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3BhcnNlci9HcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0dyYW1tYXIueQkocmV2aXNpb24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9wYXJzZXIv
R3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBACiAvLyBEZWZhdWx0IHZh
bHVlcyBmb3IgYmlzb24uCiAjZGVmaW5lIFlZREVCVUcgMCAvLyBTZXQgdG8gMSB0byBkZWJ1ZyBh
IHBhcnNlIGVycm9yLgogI2RlZmluZSBqc2N5eWRlYnVnIDAgLy8gU2V0IHRvIDEgdG8gZGVidWcg
YSBwYXJzZSBlcnJvci4KLSNpZiAhUExBVEZPUk0oREFSV0lOKQorI2lmICFPUyhEQVJXSU4pCiAv
LyBBdm9pZCB0cmlnZ2VyaW5nIHdhcm5pbmdzIGluIG9sZGVyIGJpc29uIGJ5IG5vdCBzZXR0aW5n
IHRoaXMgb24gdGhlIERhcndpbiBwbGF0Zm9ybS4KIC8vIEZJWE1FOiBJcyB0aGlzIHN0aWxsIG5l
ZWRlZD8KICNkZWZpbmUgWVlFUlJPUl9WRVJCT1NFCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZU5vZGUuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAKLSNpZiBQTEFU
Rk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5k
aWYKIApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogc3RhdGljIGRvdWJsZSBn
ZXRDb3VudCgpCiB7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAg
c3RhdGljIExBUkdFX0lOVEVHRVIgZnJlcXVlbmN5ID0gezB9OwogICAgIGlmICghZnJlcXVlbmN5
LlF1YWRQYXJ0KQogICAgICAgICBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZmcmVxdWVuY3kp
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gNTI3ODIp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRl
IDx3dGYvVk1UYWdzLmg+CiAKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQog
CiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfcG9ydC5o
PgpAQCAtNTMsMjkgKzUzLDI5IEBACiAjaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+CiAjaW5j
bHVkZSA8bWFjaC92bV9tYXAuaD4KIAotI2VsaWYgUExBVEZPUk0oU1lNQklBTikKKyNlbGlmIE9T
KFNZTUJJQU4pCiAjaW5jbHVkZSA8ZTMyc3RkLmg+CiAjaW5jbHVkZSA8ZTMyY21uLmg+CiAjaW5j
bHVkZSA8dW5pc3RkLmg+CiAKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyNlbGlmIE9TKFdJTkRP
V1MpCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8bWFsbG9jLmg+CiAKLSNlbGlm
IFBMQVRGT1JNKEhBSUtVKQorI2VsaWYgT1MoSEFJS1UpCiAKICNpbmNsdWRlIDxPUy5oPgogCi0j
ZWxpZiBQTEFURk9STShVTklYKQorI2VsaWYgT1MoVU5JWCkKIAogI2luY2x1ZGUgPHN0ZGxpYi5o
PgotI2lmICFQTEFURk9STShIQUlLVSkKKyNpZiAhT1MoSEFJS1UpCiAjaW5jbHVkZSA8c3lzL21t
YW4uaD4KICNlbmRpZgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCi0jaWYgUExBVEZPUk0oU09MQVJJ
UykKKyNpZiBPUyhTT0xBUklTKQogI2luY2x1ZGUgPHRocmVhZC5oPgogI2Vsc2UKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CkBAIC04NSw3ICs4NSw3IEBACiAjaW5jbHVkZSA8cHRocmVhZF9ucC5oPgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShRTlgpCisjaWYgT1MoUU5YKQogI2luY2x1ZGUgPGZjbnRs
Lmg+CiAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMDks
MTYgKzEwOSwxNiBAQCBjb25zdCBzaXplX3QgQUxMT0NBVElPTlNfUEVSX0NPTExFQ1RJT04gCiAv
LyBhIFBJQyBicmFuY2ggaW4gTWFjaC1PIGJpbmFyaWVzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU5
NzEzOTE+LgogI2RlZmluZSBNSU5fQVJSQVlfU0laRSAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxNCkp
CiAKLSNpZiBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFNZTUJJQU4pCiBjb25zdCBzaXplX3Qg
TUFYX05VTV9CTE9DS1MgPSAyNTY7IC8vIE1heCBzaXplIG9mIGNvbGxlY3RvciBoZWFwIHNldCB0
byAxNiBNQgogc3RhdGljIFJIZWFwKiB1c2VyQ2h1bmsgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1Mo
REFSV0lOKQogdHlwZWRlZiBtYWNoX3BvcnRfdCBQbGF0Zm9ybVRocmVhZDsKLSNlbGlmIFBMQVRG
T1JNKFdJTl9PUykKKyNlbGlmIE9TKFdJTkRPV1MpCiB0eXBlZGVmIEhBTkRMRSBQbGF0Zm9ybVRo
cmVhZDsKICNlbmRpZgogCkBAIC0xNDksNyArMTQ5LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCiB7CiAgICAgQVNTRVJUKGdsb2JhbERhdGEpOwogICAgIAotI2lmIFBM
QVRGT1JNKFNZTUJJQU4pCisjaWYgT1MoU1lNQklBTikKICAgICAvLyBTeW1iaWFuIE9wZW5DIHN1
cHBvcnRzIG1tYXAgYnV0IGN1cnJlbnRseSBub3QgdGhlIE1BUF9BTk9OIGZsYWcuCiAgICAgLy8g
VXNpbmcgZmFzdE1hbGxvYygpIGRvZXMgbm90IHByb3Blcmx5IGFsaWduIGJsb2NrcyBvbiA2NGsg
Ym91bmRhcmllcwogICAgIC8vIGFuZCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiB3YXMgZmxhd2Vk
L2luY29tcGxldGUuCkBAIC0xNjcsNyArMTY3LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiAgICAgICAgIGlmICghdXNlckNodW5rKQogICAgICAgICAgICAgQ1JBU0go
KTsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oU1lNQklBTikKKyNlbmRpZiAvLyBPUyhTWU1C
SUFOKQogICAgIAogICAgIG1lbXNldCgmbV9oZWFwLCAwLCBzaXplb2YoQ29sbGVjdG9ySGVhcCkp
OwogICAgIGFsbG9jYXRlQmxvY2soKTsKQEAgLTIxNCwxOCArMjE0LDE4IEBAIHZvaWQgSGVhcDo6
ZGVzdHJveSgpCiAKIE5FVkVSX0lOTElORSBDb2xsZWN0b3JCbG9jayogSGVhcDo6YWxsb2NhdGVC
bG9jaygpCiB7Ci0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikKICAgICB2bV9h
ZGRyZXNzX3QgYWRkcmVzcyA9IDA7CiAgICAgdm1fbWFwKGN1cnJlbnRfdGFzaygpLCAmYWRkcmVz
cywgQkxPQ0tfU0laRSwgQkxPQ0tfT0ZGU0VUX01BU0ssIFZNX0ZMQUdTX0FOWVdIRVJFIHwgVk1f
VEFHX0ZPUl9DT0xMRUNUT1JfTUVNT1JZLCBNRU1PUllfT0JKRUNUX05VTEwsIDAsIEZBTFNFLCBW
TV9QUk9UX0RFRkFVTFQsIFZNX1BST1RfREVGQVVMVCwgVk1fSU5IRVJJVF9ERUZBVUxUKTsKLSNl
bGlmIFBMQVRGT1JNKFNZTUJJQU4pCisjZWxpZiBPUyhTWU1CSUFOKQogICAgIC8vIEFsbG9jYXRl
IGEgNjQga2IgYWxpZ25lZCBDb2xsZWN0b3JCbG9jawogICAgIHVuc2lnbmVkIGNoYXIqIG1hc2sg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VyQ2h1bmstPkFsbG9jKEJMT0NL
X1NJWkUpKTsKICAgICBpZiAoIW1hc2spCiAgICAgICAgIENSQVNIKCk7CiAgICAgdWludHB0cl90
IGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obWFzayk7Ci0jZWxpZiBQTEFU
Rk9STShXSU5DRSkKKyNlbGlmIE9TKFdJTkNFKQogICAgIHZvaWQqIGFkZHJlc3MgPSBWaXJ0dWFs
QWxsb2MoTlVMTCwgQkxPQ0tfU0laRSwgTUVNX0NPTU1JVCB8IE1FTV9SRVNFUlZFLCBQQUdFX1JF
QURXUklURSk7Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5ET1dTKQogI2lm
IENPTVBJTEVSKE1JTkdXKQogICAgIHZvaWQqIGFkZHJlc3MgPSBfX21pbmd3X2FsaWduZWRfbWFs
bG9jKEJMT0NLX1NJWkUsIEJMT0NLX1NJWkUpOwogI2Vsc2UKQEAgLTMwOCwxMyArMzA4LDEzIEBA
IE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmZyZWVCbG9jayhzaXplX3QKIAogTkVWRVJfSU5MSU5F
IHZvaWQgSGVhcDo6ZnJlZUJsb2NrUHRyKENvbGxlY3RvckJsb2NrKiBibG9jaykKIHsKLSNpZiBQ
TEFURk9STShEQVJXSU4pICAgIAorI2lmIE9TKERBUldJTikgICAgCiAgICAgdm1fZGVhbGxvY2F0
ZShjdXJyZW50X3Rhc2soKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGJsb2NrKSwg
QkxPQ0tfU0laRSk7Ci0jZWxpZiBQTEFURk9STShTWU1CSUFOKQorI2VsaWYgT1MoU1lNQklBTikK
ICAgICB1c2VyQ2h1bmstPkZyZWUocmVpbnRlcnByZXRfY2FzdDxUQW55Kj4oYmxvY2spKTsKLSNl
bGlmIFBMQVRGT1JNKFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiAgICAgVmlydHVhbEZyZWUoYmxv
Y2ssIDAsIE1FTV9SRUxFQVNFKTsKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyNlbGlmIE9TKFdJ
TkRPV1MpCiAjaWYgQ09NUElMRVIoTUlOR1cpCiAgICAgX19taW5nd19hbGlnbmVkX2ZyZWUoYmxv
Y2spOwogI2Vsc2UKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIEhlYXA6OnNocmlua0Jsb2Nrcyhz
aXplX3QgbmVlZGVkQmxvCiAgICAgICAgIG1faGVhcC5ibG9ja3NbaV0tPm1hcmtlZC5zZXQoSGVh
cENvbnN0YW50czo6Y2VsbHNQZXJCbG9jayAtIDEpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOQ0Up
CisjaWYgT1MoV0lOQ0UpCiB2b2lkKiBnX3N0YWNrQmFzZSA9IDA7CiAKIGlubGluZSBib29sIGlz
UGFnZVdyaXRhYmxlKHZvaWQqIHBhZ2UpCkBAIC01MDcsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQq
IGdldFN0YWNrQmFzZSh2b2lkKiBwcmV2aW91cwogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShR
TlgpCisjaWYgT1MoUU5YKQogc3RhdGljIGlubGluZSB2b2lkICpjdXJyZW50VGhyZWFkU3RhY2tC
YXNlUU5YKCkKIHsKICAgICBzdGF0aWMgdm9pZCogc3RhY2tCYXNlID0gMDsKQEAgLTUzNiwxMCAr
NTM2LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqY3VycmVudFRocmVhZFN0YWNrQmEKIAogc3Rh
dGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkKIHsKLSNpZiBQTEFURk9S
TShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogICAgIHB0aHJlYWRfdCB0aHJlYWQgPSBwdGhyZWFk
X3NlbGYoKTsKICAgICByZXR1cm4gcHRocmVhZF9nZXRfc3RhY2thZGRyX25wKHRocmVhZCk7Ci0j
ZWxpZiBQTEFURk9STShXSU5fT1MpICYmIENQVShYODYpICYmIENPTVBJTEVSKE1TVkMpCisjZWxp
ZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2KSAmJiBDT01QSUxFUihNU1ZDKQogICAgIC8vIG9mZnNl
dCAweDE4IGZyb20gdGhlIEZTIHNlZ21lbnQgcmVnaXN0ZXIgZ2l2ZXMgYSBwb2ludGVyIHRvCiAg
ICAgLy8gdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBibG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFk
CiAgICAgTlRfVElCKiBwVGliOwpAQCAtNTQ4LDEwICs1NDgsMTEgQEAgc3RhdGljIGlubGluZSB2
b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYQogICAgICAgICBNT1YgcFRpYiwgRUFYCiAgICAgfQog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDx2b2lkKj4ocFRpYi0+U3RhY2tCYXNlKTsKLSNlbGlmIFBM
QVRGT1JNKFdJTl9PUykgJiYgQ1BVKFg4Nl82NCkgJiYgQ09NUElMRVIoTVNWQykKKyNlbGlmIE9T
KFdJTkRPV1MpICYmIENQVShYODZfNjQpICYmIENPTVBJTEVSKE1TVkMpCisgICAgLy8gRklYTUU6
IHdoeSBvbmx5IGZvciBNU1ZDPwogICAgIFBOVF9USUI2NCBwVGliID0gcmVpbnRlcnByZXRfY2Fz
dDxQTlRfVElCNjQ+KE50Q3VycmVudFRlYigpKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ocFRpYi0+U3RhY2tCYXNlKTsKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgQ1BV
KFg4NikgJiYgQ09NUElMRVIoR0NDKQorI2VsaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4NikgJiYg
Q09NUElMRVIoR0NDKQogICAgIC8vIG9mZnNldCAweDE4IGZyb20gdGhlIEZTIHNlZ21lbnQgcmVn
aXN0ZXIgZ2l2ZXMgYSBwb2ludGVyIHRvCiAgICAgLy8gdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBi
bG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkCiAgICAgTlRfVElCKiBwVGliOwpAQCAtNTU5LDE4
ICs1NjAsMTggQEAgc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYQogICAg
ICAgICAgIDogIj1yIiAocFRpYikKICAgICAgICAgKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dm9pZCo+KHBUaWItPlN0YWNrQmFzZSk7Ci0jZWxpZiBQTEFURk9STShRTlgpCisjZWxpZiBPUyhR
TlgpCiAgICAgcmV0dXJuIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2VRTlgoKTsKLSNlbGlmIFBMQVRG
T1JNKFNPTEFSSVMpCisjZWxpZiBPUyhTT0xBUklTKQogICAgIHN0YWNrX3QgczsKICAgICB0aHJf
c3Rrc2VnbWVudCgmcyk7CiAgICAgcmV0dXJuIHMuc3Nfc3A7Ci0jZWxpZiBQTEFURk9STShPUEVO
QlNEKQorI2VsaWYgT1MoT1BFTkJTRCkKICAgICBwdGhyZWFkX3QgdGhyZWFkID0gcHRocmVhZF9z
ZWxmKCk7CiAgICAgc3RhY2tfdCBzdGFjazsKICAgICBwdGhyZWFkX3N0YWNrc2VnX25wKHRocmVh
ZCwgJnN0YWNrKTsKICAgICByZXR1cm4gc3RhY2suc3Nfc3A7Ci0jZWxpZiBQTEFURk9STShTWU1C
SUFOKQorI2VsaWYgT1MoU1lNQklBTikKICAgICBzdGF0aWMgdm9pZCogc3RhY2tCYXNlID0gMDsK
ICAgICBpZiAoc3RhY2tCYXNlID09IDApIHsKICAgICAgICAgVFRocmVhZFN0YWNrSW5mbyBpbmZv
OwpAQCAtNTc5LDExICs1ODAsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFk
U3RhY2tCYQogICAgICAgICBzdGFja0Jhc2UgPSAodm9pZCopaW5mby5pQmFzZTsKICAgICB9CiAg
ICAgcmV0dXJuICh2b2lkKilzdGFja0Jhc2U7Ci0jZWxpZiBQTEFURk9STShIQUlLVSkKKyNlbGlm
IE9TKEhBSUtVKQogICAgIHRocmVhZF9pbmZvIHRocmVhZEluZm87CiAgICAgZ2V0X3RocmVhZF9p
bmZvKGZpbmRfdGhyZWFkKE5VTEwpLCAmdGhyZWFkSW5mbyk7CiAgICAgcmV0dXJuIHRocmVhZElu
Zm8uc3RhY2tfZW5kOwotI2VsaWYgUExBVEZPUk0oVU5JWCkKKyNlbGlmIE9TKFVOSVgpCiAgICAg
c3RhdGljIHZvaWQqIHN0YWNrQmFzZSA9IDA7CiAgICAgc3RhdGljIHNpemVfdCBzdGFja1NpemUg
PSAwOwogICAgIHN0YXRpYyBwdGhyZWFkX3Qgc3RhY2tUaHJlYWQ7CkBAIC01OTEsNyArNTkyLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYQogICAgIGlmIChzdGFj
a0Jhc2UgPT0gMCB8fCB0aHJlYWQgIT0gc3RhY2tUaHJlYWQpIHsKICAgICAgICAgcHRocmVhZF9h
dHRyX3Qgc2F0dHI7CiAgICAgICAgIHB0aHJlYWRfYXR0cl9pbml0KCZzYXR0cik7Ci0jaWYgSEFW
RShQVEhSRUFEX05QX0gpIHx8IFBMQVRGT1JNKE5FVEJTRCkKKyNpZiBIQVZFKFBUSFJFQURfTlBf
SCkgfHwgT1MoTkVUQlNEKQogICAgICAgICAvLyBlLmcuIG9uIEZyZWVCU0QgNS40LCBuZXVuZG9y
ZkBrZGUub3JnCiAgICAgICAgIHB0aHJlYWRfYXR0cl9nZXRfbnAodGhyZWFkLCAmc2F0dHIpOwog
I2Vsc2UKQEAgLTYwNSw3ICs2MDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIGN1cnJlbnRUaHJl
YWRTdGFja0JhCiAgICAgICAgIHN0YWNrVGhyZWFkID0gdGhyZWFkOwogICAgIH0KICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrQmFzZSkgKyBzdGFja1NpemU7Ci0jZWxpZiBQTEFU
Rk9STShXSU5DRSkKKyNlbGlmIE9TKFdJTkNFKQogICAgIGlmIChnX3N0YWNrQmFzZSkKICAgICAg
ICAgcmV0dXJuIGdfc3RhY2tCYXNlOwogICAgIGVsc2UgewpAQCAtNjIxLDkgKzYyMiw5IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCogY3VycmVudFRocmVhZFN0YWNrQmEKIAogc3RhdGljIGlubGluZSBQ
bGF0Zm9ybVRocmVhZCBnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKQogewotI2lmIFBMQVRGT1JN
KERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAgICAgcmV0dXJuIHB0aHJlYWRfbWFjaF90aHJlYWRf
bnAocHRocmVhZF9zZWxmKCkpOwotI2VsaWYgUExBVEZPUk0oV0lOX09TKQorI2VsaWYgT1MoV0lO
RE9XUykKICAgICByZXR1cm4gcHRocmVhZF9nZXR3MzJ0aHJlYWRoYW5kbGVfbnAocHRocmVhZF9z
ZWxmKCkpOwogI2VuZGlmCiB9CkBAIC03OTksOSArODAwLDkgQEAgdm9pZCBIZWFwOjptYXJrQ3Vy
cmVudFRocmVhZENvbnNlcnZhdGl2ZQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc3VzcGVuZFRocmVh
ZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxhdGZvcm1UaHJlYWQpCiB7Ci0jaWYgUExBVEZPUk0o
REFSV0lOKQorI2lmIE9TKERBUldJTikKICAgICB0aHJlYWRfc3VzcGVuZChwbGF0Zm9ybVRocmVh
ZCk7Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5ET1dTKQogICAgIFN1c3Bl
bmRUaHJlYWQocGxhdGZvcm1UaHJlYWQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIHN1
c3BlbmQgdGhyZWFkcyBvbiB0aGlzIHBsYXRmb3JtCkBAIC04MTAsOSArODExLDkgQEAgc3RhdGlj
IGlubGluZSB2b2lkIHN1c3BlbmRUaHJlYWQoY29uc3QgUAogCiBzdGF0aWMgaW5saW5lIHZvaWQg
cmVzdW1lVGhyZWFkKGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBwbGF0Zm9ybVRocmVhZCkKIHsKLSNp
ZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogICAgIHRocmVhZF9yZXN1bWUocGxh
dGZvcm1UaHJlYWQpOwotI2VsaWYgUExBVEZPUk0oV0lOX09TKQorI2VsaWYgT1MoV0lORE9XUykK
ICAgICBSZXN1bWVUaHJlYWQocGxhdGZvcm1UaHJlYWQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEg
d2F5IHRvIHJlc3VtZSB0aHJlYWRzIG9uIHRoaXMgcGxhdGZvcm0KQEAgLTgyMSw3ICs4MjIsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzdW1lVGhyZWFkKGNvbnN0IFBsCiAKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyB1c3dvcmRfdDsgLy8gd29yZCBzaXplLCBhc3N1bWVkIHRvIGJlIGVpdGhlciAz
MiBvciA2NCBiaXQKIAotI2lmIFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAKICNp
ZiBDUFUoWDg2KQogdHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVn
aXN0ZXJzOwpAQCAtODM3LDcgKzgzOCw3IEBAIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBs
YXRmb3JtVGhyZWEKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlmCiAKLSNlbGlm
IFBMQVRGT1JNKFdJTl9PUykmJiBDUFUoWDg2KQorI2VsaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4
NikKIHR5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsKICNlbHNlCiAjZXJy
b3IgTmVlZCBhIHRocmVhZCByZWdpc3RlciBzdHJ1Y3QgZm9yIHRoaXMgcGxhdGZvcm0KQEAgLTg0
NSw3ICs4NDYsNyBAQCB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnM7CiAK
IHN0YXRpYyBzaXplX3QgZ2V0UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMoY29uc3QgUGxhdGZvcm1U
aHJlYWQmIHBsYXRmb3JtVGhyZWFkLCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyYgcmVncykKIHsK
LSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogCiAjaWYgQ1BVKFg4NikKICAg
ICB1bnNpZ25lZCB1c2VyX2NvdW50ID0gc2l6ZW9mKHJlZ3MpL3NpemVvZihpbnQpOwpAQCAtODcz
LDkgKzg3NCw5IEBAIHN0YXRpYyBzaXplX3QgZ2V0UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMKICAg
ICAgICAgQ1JBU0goKTsKICAgICB9CiAgICAgcmV0dXJuIHVzZXJfY291bnQgKiBzaXplb2YodXN3
b3JkX3QpOwotLy8gZW5kIFBMQVRGT1JNKERBUldJTikKKy8vIGVuZCBPUyhEQVJXSU4pCiAKLSNl
bGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgQ1BVKFg4NikKKyNlbGlmIE9TKFdJTkRPV1MpICYmIENQ
VShYODYpCiAgICAgcmVncy5Db250ZXh0RmxhZ3MgPSBDT05URVhUX0lOVEVHRVIgfCBDT05URVhU
X0NPTlRST0wgfCBDT05URVhUX1NFR01FTlRTOwogICAgIEdldFRocmVhZENvbnRleHQocGxhdGZv
cm1UaHJlYWQsICZyZWdzKTsKICAgICByZXR1cm4gc2l6ZW9mKENPTlRFWFQpOwpAQCAtODg2LDcg
Kzg4Nyw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMKIAogc3Rh
dGljIGlubGluZSB2b2lkKiBvdGhlclRocmVhZFN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVRo
cmVhZFJlZ2lzdGVycyYgcmVncykKIHsKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFS
V0lOKQogCiAjaWYgX19EQVJXSU5fVU5JWDAzCiAKQEAgLTkxNiw4ICs5MTcsOCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQqIG90aGVyVGhyZWFkU3RhY2tQb2luCiAKICNlbmRpZiAvLyBfX0RBUldJTl9V
TklYMDMKIAotLy8gZW5kIFBMQVRGT1JNKERBUldJTikKLSNlbGlmIENQVShYODYpICYmIFBMQVRG
T1JNKFdJTl9PUykKKy8vIGVuZCBPUyhEQVJXSU4pCisjZWxpZiBDUFUoWDg2KSAmJiBPUyhXSU5E
T1dTKQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
LkVzcCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBzdGFjayBwb2ludGVy
IGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29sbGVjdG9yLmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogI2VuZGlmCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2VsbFNpemU8c2l6ZW9mKHVp
bnQ2NF90KT4geyBzdGF0aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUgPSA2NDsgfTsKIAotI2lmIFBM
QVRGT1JNKFdJTkNFKSB8fCBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFdJTkNFKSB8fCBPUyhT
WU1CSUFOKQogICAgIGNvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gNjQgKiAxMDI0OyAvLyA2NGsK
ICNlbHNlCiAgICAgY29uc3Qgc2l6ZV90IEJMT0NLX1NJWkUgPSA2NCAqIDQwOTY7IC8vIDI1NmsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRo
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKFdJTkNFKSAm
JiAhUExBVEZPUk0oUVQpCisjaWYgT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKIGV4dGVybiAi
QyIgdGltZV90IHRpbWUodGltZV90KiB0aW1lcik7IC8vIFByb3ZpZGVkIGJ5IGxpYmNlLgogI2Vu
ZGlmCiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOQ0UpICYmICFQ
TEFURk9STShRVCkKKyNpZiBPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKQogZXh0ZXJuICJDIiBz
aXplX3Qgc3RyZnRpbWUoY2hhciAqIGNvbnN0IHMsIGNvbnN0IHNpemVfdCBtYXhzaXplLCBjb25z
dCBjaGFyICogY29uc3QgZm9ybWF0LCBjb25zdCBzdHJ1Y3QgdG0gKiBjb25zdCB0KTsgLy9wcm92
aWRlZCBieSBsaWJjZQogI2VuZGlmCiAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgSlNDZWxs
KiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0CiB7CiAjaWYgSEFWRShMQU5HSU5GT19IKQogICAg
IHN0YXRpYyBjb25zdCBubF9pdGVtIGZvcm1hdHNbXSA9IHsgRF9UX0ZNVCwgRF9GTVQsIFRfRk1U
IH07Ci0jZWxpZiAoUExBVEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShRVCkpIHx8IFBMQVRGT1JN
KFNZTUJJQU4pCisjZWxpZiAoT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkpIHx8IE9TKFNZTUJJ
QU4pCiAgICAgIC8vIHN0cmZ0aW1lKCkgZG9lcyBub3Qgc3VwcG9ydCAnIycgb24gV2luQ0Ugb3Ig
U3ltYmlhbgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBmb3JtYXRTdHJpbmdzW10gPSB7
ICIlYyIsICIleCIsICIlWCIgfTsKICNlbHNlCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgSlNDIHsK
IAotI2lmIFBMQVRGT1JNKERBUldJTikgJiYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQor
I2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQogc3RhdGljIHB0
aHJlYWRfb25jZV90IGluaXRpYWxpemVUaHJlYWRpbmdLZXlPbmNlID0gUFRIUkVBRF9PTkNFX0lO
SVQ7CiAjZW5kaWYKIApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhy
ZWFkaW5nT25jZSgpCiAKIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiB7Ci0jaWYgUExBVEZP
Uk0oREFSV0lOKSAmJiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCisjaWYgT1MoREFSV0lO
KSAmJiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgcHRocmVhZF9vbmNlKCZpbml0
aWFsaXplVGhyZWFkaW5nS2V5T25jZSwgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UpOwogI2Vsc2UK
ICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFRocmVhZGluZyA9IGZhbHNlOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFya1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoMCA9PSAoc2l6ZSAlIE1h
cmtTdGFjazo6cGFnZVNpemUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzaXplID09IG1fYWxs
b2NhdGVkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0jaWYgUExBVEZPUk0oV0lOX09T
KSB8fCBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFdJTkRPV1MpIHx8IE9TKFNZTUJJQU4pCiAg
ICAgICAgICAgICAgICAgLy8gV2UgY2Fubm90IHJlbGVhc2UgYSBwYXJ0IG9mIGEgcmVnaW9uIHdp
dGggVmlydHVhbEZyZWUuICBUbyBnZXQgYXJvdW5kIHRoaXMsCiAgICAgICAgICAgICAgICAgLy8g
d2UnbGwgcmVsZWFzZSB0aGUgZW50aXJlIHJlZ2lvbiBhbmQgcmVhbGxvY2F0ZSB0aGUgc2l6ZSB0
aGF0IHdlIHdhbnQuCiAgICAgICAgICAgICAgICAgcmVsZWFzZVN0YWNrKG1fZGF0YSwgbV9hbGxv
Y2F0ZWQpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2tQb3NpeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2tQb3NpeC5jcHAJ
KHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2tQb3Np
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJNYXJrU3RhY2suaCIKIAotI2lmIFBMQVRGT1JNKFVOSVgpICYmICFQTEFU
Rk9STShTWU1CSUFOKQorI2lmIE9TKFVOSVgpICYmICFPUyhTWU1CSUFOKQogCiAjaW5jbHVkZSA8
dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFya1N0YWNrU3ltYmlhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXJrU3RhY2tTeW1iaWFuLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcmtTdGFja1N5bWJpYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgi
CiAKLSNpZiBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFNZTUJJQU4pCiAKICNpbmNsdWRlIDxl
MzJoYWwuaD4KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2tXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrV2luLmNwcAko
cmV2aXNpb24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFja1dpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNYXJrU3RhY2suaCIKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhX
SU5ET1dTKQogCiAjaW5jbHVkZSAid2luZG93cy5oIgogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc5
LDcgKzQ3OSw3IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXMKICAg
ICAgICAgZHBvcyA9IDA7CiAgICAgZWxzZSBpZiAoIShkcG9zIDw9IGxlbikpIC8vIHRydWUgZm9y
IE5hTgogICAgICAgICBkcG9zID0gbGVuOwotI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisjaWYgT1Mo
U1lNQklBTikKICAgICAvLyBXb3JrIGFyb3VuZCBmb3IgYnJva2VuIE5hTiBjb21wYXJlIG9wZXJh
dG9yCiAgICAgZWxzZSBpZiAoaXNuYW4oZHBvcykpCiAgICAgICAgIGRwb3MgPSBsZW47CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcAkocmV2aXNpb24gNTI3
ODIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RpbWVvdXRDaGVja2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFS
V0lOKQogI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgotI2VsaWYgUExBVEZPUk0oV0lOX09TKQorI2Vs
aWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxzZQogI2luY2x1ZGUgIkN1
cnJlbnRUaW1lLmgiCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJ2YWxC
ZXR3ZWVuQ2hlY2tzID0KIC8vIFJldHVybnMgdGhlIHRpbWUgdGhlIGN1cnJlbnQgdGhyZWFkIGhh
cyBzcGVudCBleGVjdXRpbmcsIGluIG1pbGxpc2Vjb25kcy4KIHN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgZ2V0Q1BVVGltZSgpCiB7Ci0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikK
ICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGluZm9Db3VudCA9IFRIUkVBRF9CQVNJQ19JTkZP
X0NPVU5UOwogICAgIHRocmVhZF9iYXNpY19pbmZvX2RhdGFfdCBpbmZvOwogCkBAIC02Nyw3ICs2
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZ2V0Q1BVVGltZSgpCiAgICAgdGltZSArPSBp
bmZvLnN5c3RlbV90aW1lLnNlY29uZHMgKiAxMDAwICsgaW5mby5zeXN0ZW1fdGltZS5taWNyb3Nl
Y29uZHMgLyAxMDAwOwogICAgIAogICAgIHJldHVybiB0aW1lOwotI2VsaWYgUExBVEZPUk0oV0lO
X09TKQorI2VsaWYgT1MoV0lORE9XUykKICAgICB1bmlvbiB7CiAgICAgICAgIEZJTEVUSU1FIGZp
bGVUaW1lOwogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmlsZVRpbWVBc0xvbmc7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4
OSw3IEBAIFVTdHJpbmcgVVN0cmluZzo6ZnJvbShsb25nIGxvbmcgaSkKICAgICAgICAgKi0tcCA9
ICcwJzsKICAgICBlbHNlIGlmIChpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6
bWluKCkpIHsKICAgICAgICAgY2hhciBtaW5CdWZbMSArIHNpemVvZihpKSAqIDNdOwotI2lmIFBM
QVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAgICAgICBzbnByaW50ZihtaW5CdWYs
IHNpemVvZihtaW5CdWYpIC0gMSwgIiVJNjRkIiwgc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxv
bmc+OjptaW4oKSk7CiAjZWxzZQogICAgICAgICBzbnByaW50ZihtaW5CdWYsIHNpemVvZihtaW5C
dWYpIC0gMSwgIiVsbGQiLCBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1pbigpKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KICNlbmRpZgogCi0j
aWYgQ09NUElMRVIoTVNWQykgJiYgIVBMQVRGT1JNKFdJTkNFKQorI2lmIENPTVBJTEVSKE1TVkMp
ICYmICFPUyhXSU5DRSkKICNpZm5kZWYgV0lOVkVSCiAjZGVmaW5lIFdJTlZFUiAweDA1MDAKICNl
bmRpZgpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgPGNydGRiZy5oPgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICNpbmNsdWRlIDx3aW5iYXNlLmg+CiAj
ZW5kaWYKIApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl9jb21t
b24oY29uc3QgCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGlmIChfdnNu
cHJpbnRmKGJ1ZmZlciwgc2l6ZSwgZm9ybWF0LCBhcmdzKSAhPSAtMSkgewotI2lmIFBMQVRGT1JN
KFdJTkNFKQorI2lmIE9TKFdJTkNFKQogICAgICAgICAgICAgICAgIC8vIFdpbkNFIG9ubHkgc3Vw
cG9ydHMgd2lkZSBjaGFycwogICAgICAgICAgICAgICAgIHdjaGFyX3QqIHdpZGVCdWZmZXIgPSAo
d2NoYXJfdCopbWFsbG9jKHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICAgICAgICAg
IGlmICh3aWRlQnVmZmVyID09IE5VTEwpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIHZvaWQg
dnByaW50Zl9zdGRlcnJfY29tbW9uKGNvbnN0IAogICAgICAgICB9IHdoaWxlIChzaXplID4gMTAy
NCk7CiAgICAgfQogI2VuZGlmCi0jaWYgUExBVEZPUk0oU1lNQklBTikKKyNpZiBPUyhTWU1CSUFO
KQogICAgIHZmcHJpbnRmKHN0ZG91dCwgZm9ybWF0LCBhcmdzKTsKICNlbHNlCiAgICAgdmZwcmlu
dGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyB2b2lk
IHByaW50Zl9zdGRlcnJfY29tbW9uKGNvbnN0IGMKIAogc3RhdGljIHZvaWQgcHJpbnRDYWxsU2l0
ZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24pCiB7Ci0j
aWYgUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oV0lOQ0UpICYmIGRlZmluZWQgX0RFQlVHCisj
aWYgT1MoV0lOKSAmJiAhT1MoV0lOQ0UpICYmIGRlZmluZWQgX0RFQlVHCiAgICAgX0NydERiZ1Jl
cG9ydChfQ1JUX1dBUk4sIGZpbGUsIGxpbmUsIE5VTEwsICIlc1xuIiwgZnVuY3Rpb24pOwogI2Vs
c2UKICAgICBwcmludGZfc3RkZXJyX2NvbW1vbigiKCVzOiVkICVzKVxuIiwgZmlsZSwgbGluZSwg
ZnVuY3Rpb24pOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiA1Mjc4MikK
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDcgQEAKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShTWU1CSUFOKQorI2lmIE9TKFNZTUJJQU4pCiAjaW5jbHVkZSA8ZTMyZGVmLmg+CiAjaW5jbHVk
ZSA8ZTMyZGVidWcuaD4KICNlbmRpZgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgV1RGTG9nVmVy
Ym9zZShjb25zdCBjaGFyKiBmaWxlLCBpbnQKIC8qIENSQVNIIC0tIGdldHMgdXMgaW50byB0aGUg
ZGVidWdnZXIgb3IgdGhlIGNyYXNoIHJlcG9ydGVyIC0tIHNpZ25hbHMgYXJlIGlnbm9yZWQgYnkg
dGhlIGNyYXNoIHJlcG9ydGVyIHNvIHdlIG11c3QgZG8gYmV0dGVyICovCiAKICNpZm5kZWYgQ1JB
U0gKLSNpZiBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFNZTUJJQU4pCiAjZGVmaW5lIENSQVNI
KCkgZG8geyBcCiAgICAgX19ERUJVR0dFUigpOyBcCiAgICAgVXNlcjo6UGFuaWMoX0woIldlYmtp
dCBDUkFTSCIpLDApOyBcCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXVEZMb2dWZXJib3NlKGNv
bnN0IGNoYXIqIGZpbGUsIGludAogCiAvKiBBU1NFUlQsIEFTU0VSVF9XSVRIX01FU1NBR0UsIEFT
U0VSVF9OT1RfUkVBQ0hFRCAqLwogCi0jaWYgUExBVEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShU
T1JDSE1PQklMRSkKKyNpZiBPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFRPUkNITU9CSUxFKQogLyog
RklYTUU6IFdlIGluY2x1ZGUgdGhpcyBoZXJlIG9ubHkgdG8gYXZvaWQgYSBjb25mbGljdCB3aXRo
IHRoZSBBU1NFUlQgbWFjcm8uICovCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI3VuZGVmIG1pbgpA
QCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV1RGTG9nVmVyYm9zZShjb25zdCBjaGFyKiBmaWxlLCBp
bnQKICN1bmRlZiBFUlJPUgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU5fT1MpIHx8IFBMQVRG
T1JNKFNZTUJJQU4pCisjaWYgT1MoV0lORE9XUykgfHwgT1MoU1lNQklBTikKIC8qIEZJWE1FOiBD
aGFuZ2UgdG8gdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIEFTU0VSVCB0byBhdm9pZCB0aGlzIGNv
bmZsaWN0IHdpdGggdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gKi8KICN1bmRlZiBBU1NFUlQKICNl
bmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQ3VycmVudFRpbWUuY3BwCShyZXZpc2lvbiA1Mjc4MikK
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9DdXJyZW50VGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDdXJyZW50VGlt
ZS5oIgogCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAKIC8vIFdpbmRv
d3MgaXMgZmlyc3Qgc2luY2Ugd2Ugd2FudCB0byB1c2UgaGlyZXMgdGltZXJzLCBkZXNwaXRlIFBM
QVRGT1JNKENGKQogLy8gYmVpbmcgZGVmaW5lZC4KQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRl
IDx0aW1lLmg+CiAKICNpZiBVU0UoUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUikKLSNpZiBQTEFU
Rk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKIGV4dGVybiAiQyIgdGltZV90IG1rdGltZShzdHJ1
Y3QgdG0gKnQpOwogI2Vsc2UKICNpbmNsdWRlIDxzeXMvdGltZWIuaD4KQEAgLTcxLDcgKzcxLDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKIGNvbnN0IGRvdWJsZSBtc1BlclNlY29uZCA9IDEwMDAuMDsK
IAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogCiAjaWYgVVNFKFFVRVJZ
X1BFUkZPUk1BTkNFX0NPVU5URVIpCiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgZG91Ymxl
IGhpZ2hSZXNVcFRpbWUoKQogCiBzdGF0aWMgZG91YmxlIGxvd1Jlc1VUQ1RpbWUoKQogewotI2lm
IFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogICAgIFNZU1RFTVRJTUUgc3lzdGVtVGlt
ZTsKICAgICBHZXRTeXN0ZW1UaW1lKCZzeXN0ZW1UaW1lKTsKICAgICBzdHJ1Y3QgdG0gdG10aW1l
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL0N1cnJlbnRUaW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICBpbmxpbmUgdm9pZCBnZXRMb2NhbFRpbWUoY29u
c3QgdGltZV90KiBsb2NhbFRpbWUsIHN0cnVjdCB0bSogbG9jYWxUTSkKICAgICB7Ci0gICAgI2lm
IENPTVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykgfHwgUExBVEZPUk0oV0lOQ0UpCisg
ICAgI2lmIENPTVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykgfHwgT1MoV0lOQ0UpCiAg
ICAgICAgICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUpOwogICAgICNlbGlmIENPTVBJ
TEVSKE1TVkMpCiAgICAgICAgIGxvY2FsdGltZV9zKGxvY2FsVE0sIGxvY2FsVGltZSk7CkluZGV4
OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL0RhdGVNYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQAogI2lu
Y2x1ZGUgPGVycm5vLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJ
TkNFKQogZXh0ZXJuICJDIiBzaXplX3Qgc3RyZnRpbWUoY2hhciAqIGNvbnN0IHMsIGNvbnN0IHNp
emVfdCBtYXhzaXplLCBjb25zdCBjaGFyICogY29uc3QgZm9ybWF0LCBjb25zdCBzdHJ1Y3QgdG0g
KiBjb25zdCB0KTsKIGV4dGVybiAiQyIgc3RydWN0IHRtICogbG9jYWx0aW1lKGNvbnN0IHRpbWVf
dCAqdGltZXIpOwogI2VuZGlmCkBAIC00ODgsNyArNDg4LDcgQEAgc3RhdGljIGlubGluZSBkb3Vi
bGUgeW1kaG1zVG9TZWNvbmRzKGxvbgogLy8gV2UgZm9sbG93IHRoZSByZWNvbW1lbmRhdGlvbiBv
ZiBSRkMgMjgyMiB0byBjb25zaWRlciBhbGwKIC8vIG9ic29sZXRlIHRpbWUgem9uZXMgbm90IGxp
c3RlZCBoZXJlIGVxdWl2YWxlbnQgdG8gIi0wMDAwIi4KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgS25v
d25ab25lIHsKLSNpZiAhUExBVEZPUk0oV0lOX09TKQorI2lmICFPUyhXSU5ET1dTKQogICAgIGNv
bnN0CiAjZW5kaWYKICAgICAgICAgY2hhciB0ek5hbWVbNF07CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvRmFzdE1hbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0Zh
c3RNYWxsb2MuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0
TWFsbG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIFRyeU1hbGxvY1Jl
dHVyblZhbHVlIHRyeUZhc3RaZXJvZWRNYWxsb2MKICNpZiBGT1JDRV9TWVNURU1fTUFMTE9DCiAK
ICNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpZiAhUExBVEZPUk0oV0lOX09TKQorI2lmICFPUyhXSU5E
T1dTKQogICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZWxzZQogICAgICNpbmNsdWRlICJ3aW5k
b3dzLmgiCkBAIC0zNDksNyArMzQ5LDcgQEAgRmFzdE1hbGxvY1N0YXRpc3RpY3MgZmFzdE1hbGxv
Y1N0YXRpc3RpYwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotI2lmIFBMQVRGT1JNKERBUldJTikK
KyNpZiBPUyhEQVJXSU4pCiAvLyBUaGlzIHN5bWJvbCBpcyBwcmVzZW50IGluIHRoZSBKYXZhU2Ny
aXB0Q29yZSBleHBvcnRzIGZpbGUgZXZlbiB3aGVuIEZhc3RNYWxsb2MgaXMgZGlzYWJsZWQuCiAv
LyBJdCB3aWxsIG5ldmVyIGJlIHVzZWQgaW4gdGhpcyBjYXNlLCBzbyBpdCdzIHR5cGUgYW5kIHZh
bHVlIGFyZSBsZXNzIGludGVyZXN0aW5nIHRoYW4gaXRzIHByZXNlbmNlLgogZXh0ZXJuICJDIiBj
b25zdCBpbnQganNjb3JlX2Zhc3RtYWxsb2NfaW50cm9zcGVjdGlvbiA9IDA7CkBAIC0zNzksNyAr
Mzc5LDcgQEAgZXh0ZXJuICJDIiBjb25zdCBpbnQganNjb3JlX2Zhc3RtYWxsb2NfaQogI2luY2x1
ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0j
aWYgUExBVEZPUk0oVU5JWCkKKyNpZiBPUyhVTklYKQogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2Vu
ZGlmCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTM5MSw3ICszOTEsNyBAQCBleHRlcm4gIkMiIGNv
bnN0IGludCBqc2NvcmVfZmFzdG1hbGxvY19pCiAKICNpZiBXVEZfQ0hBTkdFUwogCi0jaWYgUExB
VEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikKICNpbmNsdWRlICJNYWxsb2Nab25lU3VwcG9y
dC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNDA1LDcgKzQwNSw3IEBAIGV4dGVybiAiQyIgY29uc3QgaW50IGpzY29yZV9mYXN0bWFsbG9j
X2kKIC8vIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIG9uIE1hYyBPUyBYLCBhbmQgaXQncyB1c2VkIGlu
IHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUuIFNvIHdlCiAvLyB1c2UgYSBmdW5jdGlvbiBwb2lu
dGVyLiBCdXQgdGhhdCdzIG5vdCBuZWNlc3NhcmlseSBmYXN0ZXIgb24gb3RoZXIgcGxhdGZvcm1z
LCBhbmQgd2UgaGFkCiAvLyBwcm9ibGVtcyB3aXRoIHRoaXMgdGVjaG5pcXVlIG9uIFdpbmRvd3Ms
IHNvIHdlJ2xsIGRvIHRoaXMgb25seSBvbiBNYWMgT1MgWC4KLSNpZiBQTEFURk9STShEQVJXSU4p
CisjaWYgT1MoREFSV0lOKQogc3RhdGljIHZvaWQqICgqcHRocmVhZF9nZXRzcGVjaWZpY19mdW5j
dGlvbl9wb2ludGVyKShwdGhyZWFkX2tleV90KSA9IHB0aHJlYWRfZ2V0c3BlY2lmaWM7CiAjZGVm
aW5lIHB0aHJlYWRfZ2V0c3BlY2lmaWMoa2V5KSBwdGhyZWFkX2dldHNwZWNpZmljX2Z1bmN0aW9u
X3BvaW50ZXIoa2V5KQogI2VuZGlmCkBAIC00MzMsNyArNDMzLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAjZGVmaW5lIE1FU1NBR0UgTE9HX0VSUk9SCiAjZGVmaW5lIENIRUNLX0NPTkRJVElPTiBBU1NF
UlQKIAotI2lmIFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiBjbGFzcyBTcGFuOwog
Y2xhc3MgVENNYWxsb2NfQ2VudHJhbF9GcmVlTGlzdFBhZGRlZDsKIGNsYXNzIFRDTWFsbG9jX1Bh
Z2VIZWFwOwpAQCAtOTkwLDcgKzk5MCw3IEBAIGNsYXNzIFBhZ2VIZWFwQWxsb2NhdG9yIHsKIAog
ICBpbnQgaW51c2UoKSBjb25zdCB7IHJldHVybiBpbnVzZV87IH0KIAotI2lmIGRlZmluZWQoV1RG
X0NIQU5HRVMpICYmIFBMQVRGT1JNKERBUldJTikKKyNpZiBkZWZpbmVkKFdURl9DSEFOR0VTKSAm
JiBPUyhEQVJXSU4pCiAgIHRlbXBsYXRlIDxjbGFzcyBSZWNvcmRlcj4KICAgdm9pZCByZWNvcmRB
ZG1pbmlzdHJhdGl2ZVJlZ2lvbnMoUmVjb3JkZXImIHJlY29yZGVyLCBjb25zdCBSZW1vdGVNZW1v
cnlSZWFkZXImIHJlYWRlcikKICAgewpAQCAtMTIyMyw3ICsxMjIzLDcgQEAgc3RhdGljIGNvbnN0
IGludCBrU2NhdmVuZ2VUaW1lckRlbGF5SW5TZQogc3RhdGljIGNvbnN0IHNpemVfdCBrTWluaW11
bUZyZWVDb21taXR0ZWRQYWdlQ291bnQgPSA1MTI7CiAKIC8vIER1cmluZyBhIHNjYXZlbmdlLCB3
ZSdsbCByZWxlYXNlIHVwIHRvIGEgZnJhY3Rpb24gb2YgdGhlIGZyZWUgY29tbWl0dGVkIHBhZ2Vz
LgotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBPUyhXSU5ET1dTKQogLy8gV2UgYXJlIHNsaWdodGx5
IGxlc3MgYWdncmVzc2l2ZSBpbiByZWxlYXNpbmcgbWVtb3J5IG9uIFdpbmRvd3MgZHVlIHRvIHBl
cmZvcm1hbmNlIHJlYXNvbnMuCiBzdGF0aWMgY29uc3QgaW50IGtNYXhTY2F2ZW5nZUFtb3VudEZh
Y3RvciA9IDM7CiAjZWxzZQpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgY2xhc3MgVENNYWxsb2NfUGFn
ZUhlYXAgewogICAvLyBJbmRleCBvZiBsYXN0IGZyZWUgbGlzdCB3ZSBzY2F2ZW5nZWQKICAgc2l6
ZV90IHNjYXZlbmdlX2luZGV4XzsKICAgCi0jaWYgZGVmaW5lZChXVEZfQ0hBTkdFUykgJiYgUExB
VEZPUk0oREFSV0lOKQorI2lmIGRlZmluZWQoV1RGX0NIQU5HRVMpICYmIE9TKERBUldJTikKICAg
ZnJpZW5kIGNsYXNzIEZhc3RNYWxsb2Nab25lOwogI2VuZGlmCiAKQEAgLTIyNzgsNyArMjI3OCw3
IEBAIHN0YXRpYyBpbmxpbmUgVENNYWxsb2NfUGFnZUhlYXAqIGdldFBhZ2UKICNkZWZpbmUgcGFn
ZWhlYXAgZ2V0UGFnZUhlYXAoKQogCiAjaWYgVVNFX0JBQ0tHUk9VTkRfVEhSRUFEX1RPX1NDQVZF
TkdFX01FTU9SWQotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogc3RhdGlj
IHZvaWQgc2xlZXAodW5zaWduZWQgc2Vjb25kcykKIHsKICAgICA6OlNsZWVwKHNlY29uZHMgKiAx
MDAwKTsKQEAgLTI4MTYsNyArMjgxNiw3IEBAIHZvaWQgVENNYWxsb2NfVGhyZWFkQ2FjaGU6Oklu
aXRNb2R1bGUoKSAKICAgICB9CiAgICAgcGFnZWhlYXAtPmluaXQoKTsKICAgICBwaGluaXRlZCA9
IDE7Ci0jaWYgZGVmaW5lZChXVEZfQ0hBTkdFUykgJiYgUExBVEZPUk0oREFSV0lOKQorI2lmIGRl
ZmluZWQoV1RGX0NIQU5HRVMpICYmIE9TKERBUldJTikKICAgICBGYXN0TWFsbG9jWm9uZTo6aW5p
dCgpOwogI2VuZGlmCiAgIH0KQEAgLTQwMTQsNyArNDAxNCw3IEBAIHZvaWQgKigqX19tZW1hbGln
bl9ob29rKShzaXplX3QsIHNpemVfdCwKIAogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFdURl9DSEFO
R0VTKSAmJiBQTEFURk9STShEQVJXSU4pCisjaWYgZGVmaW5lZChXVEZfQ0hBTkdFUykgJiYgT1Mo
REFSV0lOKQogCiBjbGFzcyBGcmVlT2JqZWN0RmluZGVyIHsKICAgICBjb25zdCBSZW1vdGVNZW1v
cnlSZWFkZXImIG1fcmVhZGVyOwpAQCAtNDI5Nyw3ICs0Mjk3LDcgQEAgZXh0ZXJuICJDIiB7CiBt
YWxsb2NfaW50cm9zcGVjdGlvbl90IGpzY29yZV9mYXN0bWFsbG9jX2ludHJvc3BlY3Rpb24gPSB7
ICZGYXN0TWFsbG9jWm9uZTo6ZW51bWVyYXRlLCAmRmFzdE1hbGxvY1pvbmU6Omdvb2RTaXplLCAm
RmFzdE1hbGxvY1pvbmU6OmNoZWNrLCAmRmFzdE1hbGxvY1pvbmU6OnByaW50LAogICAgICZGYXN0
TWFsbG9jWm9uZTo6bG9nLCAmRmFzdE1hbGxvY1pvbmU6OmZvcmNlTG9jaywgJkZhc3RNYWxsb2Na
b25lOjpmb3JjZVVubG9jaywgJkZhc3RNYWxsb2Nab25lOjpzdGF0aXN0aWNzCiAKLSNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIVBMQVRGT1JNKElQSE9ORSkKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIU9TKElQSE9ORV9PUykKICAgICAsIDAg
Ly8gem9uZV9sb2NrZWQgd2lsbCBub3QgYmUgY2FsbGVkIG9uIHRoZSB6b25lIHVubGVzcyBpdCBh
ZHZlcnRpc2VzIGl0c2VsZiBhcyB2ZXJzaW9uIGZpdmUgb3IgaGlnaGVyLgogI2VuZGlmCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuaAkocmV2aXNpb24gNTI3ODIpCisrKyBKYXZhU2NyaXB0
Q29yZS93dGYvRmFzdE1hbGxvYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAg
dXNpbmcgV1RGOjpmYXN0TWFsbG9jRm9yYmlkOwogdXNpbmcgV1RGOjpmYXN0TWFsbG9jQWxsb3c7
CiAjZW5kaWYKIAotI2lmIENPTVBJTEVSKEdDQykgJiYgUExBVEZPUk0oREFSV0lOKQorI2lmIENP
TVBJTEVSKEdDQykgJiYgT1MoREFSV0lOKQogI2RlZmluZSBXVEZfUFJJVkFURV9JTkxJTkUgX19w
cml2YXRlX2V4dGVybl9fIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKICNl
bGlmIENPTVBJTEVSKEdDQykKICNkZWZpbmUgV1RGX1BSSVZBVEVfSU5MSU5FIGlubGluZSBfX2F0
dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYXRo
RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaAko
cmV2aXNpb24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMTcgQEAKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVk
ZSA8c3RkbGliLmg+CiAKLSNpZiBQTEFURk9STShTT0xBUklTKQorI2lmIE9TKFNPTEFSSVMpCiAj
aW5jbHVkZSA8aWVlZWZwLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE9QRU5CU0QpCisjaWYg
T1MoT1BFTkJTRCkKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxtYWNoaW5lL2ll
ZWUuaD4KICNlbmRpZgogCiAjaWYgQ09NUElMRVIoTVNWQykKLSNpZiBQTEFURk9STShXSU5DRSkK
KyNpZiBPUyhXSU5DRSkKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgogI2luY2x1ZGUgPGxp
bWl0cz4KQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgZG91YmxlIHBpT3ZlckZvdXJEb3VibGUgPSBN
X1BJXzQ7CiBjb25zdCBmbG9hdCBwaU92ZXJGb3VyRmxvYXQgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
TV9QSV80KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikK
IAogLy8gV29yayBhcm91bmQgYSBidWcgaW4gdGhlIE1hYyBPUyBYIGxpYmMgd2hlcmUgY2VpbCgt
MC4xKSByZXR1cm4gKzAuCiBpbmxpbmUgZG91YmxlIHd0Zl9jZWlsKGRvdWJsZSB4KSB7IHJldHVy
biBjb3B5c2lnbihjZWlsKHgpLCB4KTsgfQpAQCAtNzEsNyArNzEsNyBAQCBpbmxpbmUgZG91Ymxl
IHd0Zl9jZWlsKGRvdWJsZSB4KSB7IHJldHVyCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oU09M
QVJJUykKKyNpZiBPUyhTT0xBUklTKQogCiAjaWZuZGVmIGlzZmluaXRlCiBpbmxpbmUgYm9vbCBp
c2Zpbml0ZShkb3VibGUgeCkgeyByZXR1cm4gZmluaXRlKHgpICYmICFpc25hbmQoeCk7IH0KQEAg
LTg1LDcgKzg1LDcgQEAgaW5saW5lIGJvb2wgc2lnbmJpdChkb3VibGUgeCkgeyByZXR1cm4geAog
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE9QRU5CU0QpCisjaWYgT1MoT1BFTkJTRCkKIAogI2lm
bmRlZiBpc2Zpbml0ZQogaW5saW5lIGJvb2wgaXNmaW5pdGUoZG91YmxlIHgpIHsgcmV0dXJuIGZp
bml0ZSh4KTsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDUyNzgyKQorKysg
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0
LDYgQEAKIAogLyogVGhpcyBhbHNvIGRlZmluZXMgQ1BVKEJJR19FTkRJQU4pIG9yIENQVShNSURE
TEVfRU5ESUFOKSBvciBuZWl0aGVyLCBhcyBhcHByb3ByaWF0ZS4gKi8KIAotCiAvKiBDUFUoQUxQ
SEEpIC0gREVDIEFscGhhICovCiAjaWYgZGVmaW5lZChfX2FscGhhX18pCiAjZGVmaW5lIFdURl9D
UFVfQUxQSEEgMQpAQCAtMjc4LDEzICsyNzcsMjQgQEAKIAogCiAKLS8qIE9wZXJhdGluZyBzeXN0
ZW1zIC0gbG93LWxldmVsIGRlcGVuZGVuY2llcyAqLworLyogPT09PSBPUygpIC0gdW5kZXJseWlu
ZyBvcGVyYXRpbmcgc3lzdGVtOyBvbmx5IHRvIGJlIHVzZWQgZm9yIG1hbmRhdGVkIGxvdy1sZXZl
bCBzZXJ2aWNlcyBsaWtlIAorICAgdmlydHVhbCBtZW1vcnksIG5vdCB0byBjaG9vc2UgYSBHVUkg
dG9vbGtpdCA9PT09ICovCisKKy8qIE9TKEFORFJPSUQpIC0gQW5kcm9pZCAqLworI2lmZGVmIEFO
RFJPSUQKKyNkZWZpbmUgV1RGX09TX0FORFJPSUQgMQorI2VuZGlmCisKKy8qIE9TKEFJWCkgLSBB
SVggKi8KKyNpZmRlZiBfQUlYCisjZGVmaW5lIFdURl9PU19BSVggMQorI2VuZGlmCiAKLS8qIFBM
QVRGT1JNKERBUldJTikgKi8KLS8qIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwgZGVwZW5kZW5jaWVz
IGZvciBNYWMgT1MgWCAvIERhcndpbiB0aGF0IHNob3VsZCAqLwotLyogYmUgdXNlZCByZWdhcmRs
ZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLworLyogT1MoREFSV0lOKSAtIEFueSBEYXJ3
aW4tYmFzZWQgT1MsIGluY2x1ZGluZyBNYWMgT1MgWCBhbmQgaVBob25lIE9TICovCiAjaWZkZWYg
X19BUFBMRV9fCi0jZGVmaW5lIFdURl9QTEFURk9STV9EQVJXSU4gMQorI2RlZmluZSBXVEZfT1Nf
REFSV0lOIDEKKworLy8gRklYTUU6IEJVSUxESU5HX09OXy4uLCBhbmQgVEFSR0VUSU5HLi4uIG1h
Y3JvcyBzaG91bGQgYmUgZm9sZGVkIGludG8gdGhlIE9TKCkgc3lzdGVtCiAjaW5jbHVkZSA8QXZh
aWxhYmlsaXR5TWFjcm9zLmg+CiAjaWYgIWRlZmluZWQoTUFDX09TX1hfVkVSU0lPTl8xMF81KSB8
fCBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF81CiAj
ZGVmaW5lIEJVSUxESU5HX09OX1RJR0VSIDEKQEAgLTMwMSw5MiArMzExLDkzIEBACiAjZGVmaW5l
IFRBUkdFVElOR19TTk9XX0xFT1BBUkQgMQogI2VuZGlmCiAjaW5jbHVkZSA8VGFyZ2V0Q29uZGl0
aW9uYWxzLmg+CisKICNlbmRpZgogCi0vKiBQTEFURk9STShXSU5fT1MpICovCi0vKiBPcGVyYXRp
bmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgV2luZG93cyB0aGF0IHNob3VsZCBiZSB1
c2VkICovCi0vKiByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLwotI2lmIGRl
ZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQotI2RlZmluZSBXVEZfUExBVEZPUk1fV0lO
X09TIDEKKy8qIE9TKElQSE9ORV9PUykgLSBpUGhvbmUgT1MgKi8KKy8qIE9TKE1BQ19PU19YKSAt
IE1hYyBPUyBYIChub3QgaW5jbHVkaW5nIGlQaG9uZSBPUykgKi8KKyNpZiBPUyhEQVJXSU4pICYm
ICgoZGVmaW5lZChUQVJHRVRfT1NfRU1CRURERUQpICYmIFRBUkdFVF9PU19FTUJFRERFRCkgIFwK
KyAgIHx8IChkZWZpbmVkKFRBUkdFVF9PU19JUEhPTkUpICYmIFRBUkdFVF9PU19JUEhPTkUpICAg
ICAgICAgICAgICAgICAgIFwKKyAgIHx8IChkZWZpbmVkKFRBUkdFVF9JUEhPTkVfU0lNVUxBVE9S
KSAmJiBUQVJHRVRfSVBIT05FX1NJTVVMQVRPUikpCisjZGVmaW5lIFdURl9PU19JUEhPTkVfT1Mg
MQorI2VsaWYgT1MoREFSV0lOKSAmJiBkZWZpbmVkKFRBUkdFVF9PU19NQUMpICYmIFRBUkdFVF9P
U19NQUMKKyNkZWZpbmUgV1RGX09TX01BQ19PU19YIDEKICNlbmRpZgogCi0vKiBQTEFURk9STShX
SU5DRSkgKi8KLS8qIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwgZGVwZW5kZW5jaWVzIGZvciBXaW5k
b3dzIENFIHRoYXQgc2hvdWxkIGJlIHVzZWQgKi8KLS8qIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5n
IGVudmlyb25tZW50ICovCi0vKiBOb3RlIHRoYXQgZm9yIHRoaXMgcGxhdGZvcm0gUExBVEZPUk0o
V0lOX09TKSBpcyBhbHNvIGRlZmluZWQuICovCi0jaWYgZGVmaW5lZChfV0lOMzJfV0NFKQotI2Rl
ZmluZSBXVEZfUExBVEZPUk1fV0lOQ0UgMQorLyogT1MoRlJFRUJTRCkgLSBGcmVlQlNEICovCisj
aWZkZWYgX19GcmVlQlNEX18KKyNkZWZpbmUgV1RGX09TX0ZSRUVCU0QgMQorI2VuZGlmCisKKy8q
IE9TKEhBSUtVKSAtIEhhaWt1ICovCisjaWZkZWYgX19IQUlLVV9fCisjZGVmaW5lIFdURl9PU19I
QUlLVSAxCiAjZW5kaWYKIAotLyogUExBVEZPUk0oTElOVVgpICovCi0vKiBPcGVyYXRpbmcgc3lz
dGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgTGludXgtbGlrZSBzeXN0ZW1zIHRoYXQgKi8KLS8q
IHNob3VsZCBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25tZW50ICovCisv
KiBPUyhMSU5VWCkgLSBMaW51eCAqLwogI2lmZGVmIF9fbGludXhfXwotI2RlZmluZSBXVEZfUExB
VEZPUk1fTElOVVggMQorI2RlZmluZSBXVEZfT1NfTElOVVggMQogI2VuZGlmCiAKLS8qIFBMQVRG
T1JNKEZSRUVCU0QpICovCi0vKiBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBm
b3IgRnJlZUJTRC1saWtlIHN5c3RlbXMgdGhhdCAqLwotLyogc2hvdWxkIGJlIHVzZWQgcmVnYXJk
bGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQgKi8KLSNpZmRlZiBfX0ZyZWVCU0RfXwotI2Rl
ZmluZSBXVEZfUExBVEZPUk1fRlJFRUJTRCAxCisvKiBPUyhORVRCU0QpIC0gTmV0QlNEICovCisj
aWYgZGVmaW5lZChfX05ldEJTRF9fKQorI2RlZmluZSBXVEZfUExBVEZPUk1fTkVUQlNEIDEKICNl
bmRpZgogCi0vKiBQTEFURk9STShPUEVOQlNEKSAqLwotLyogT3BlcmF0aW5nIHN5c3RlbSBsZXZl
bCBkZXBlbmRlbmNpZXMgZm9yIE9wZW5CU0Qgc3lzdGVtcyB0aGF0ICovCi0vKiBzaG91bGQgYmUg
dXNlZCByZWdhcmRsZXNzIG9mIG9wZXJhdGluZyBlbnZpcm9ubWVudCAqLworLyogT1MoT1BFTkJT
RCkgLSBPcGVuQlNEICovCiAjaWZkZWYgX19PcGVuQlNEX18KLSNkZWZpbmUgV1RGX1BMQVRGT1JN
X09QRU5CU0QgMQorI2RlZmluZSBXVEZfT1NfT1BFTkJTRCAxCiAjZW5kaWYKIAotLyogUExBVEZP
Uk0oU09MQVJJUykgKi8KLS8qIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwgZGVwZW5kZW5jaWVzIGZv
ciBTb2xhcmlzIHRoYXQgc2hvdWxkIGJlIHVzZWQgKi8KLS8qIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0
aW5nIGVudmlyb25tZW50ICovCi0jaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19zdW4pCi0j
ZGVmaW5lIFdURl9QTEFURk9STV9TT0xBUklTIDEKKy8qIE9TKFFOWCkgLSBRTlggKi8KKyNpZiBk
ZWZpbmVkKF9fUU5YTlRPX18pCisjZGVmaW5lIFdURl9PU19RTlggMQogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkIChfX1NZTUJJQU4zMl9fKQotLyogd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgaXQgaXMg
bm90IHJlYWxseSB3aW5kb3dzICovCi0jdW5kZWYgV1RGX1BMQVRGT1JNX1dJTl9PUwotI3VuZGVm
IFdURl9QTEFURk9STV9XSU4KLSNkZWZpbmUgV1RGX1BMQVRGT1JNX1NZTUJJQU4gMQorLyogT1Mo
U09MQVJJUykgLSBTb2xhcmlzICovCisjaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19zdW4p
CisjZGVmaW5lIFdURl9PU19TT0xBUklTIDEKICNlbmRpZgogCisvKiBPUyhXSU5DRSkgLSBXaW5k
b3dzIENFOyBub3RlIHRoYXQgZm9yIHRoaXMgcGxhdGZvcm0gT1MoV0lORE9XUykgaXMgYWxzbyBk
ZWZpbmVkICovCisjaWYgZGVmaW5lZChfV0lOMzJfV0NFKQorI2RlZmluZSBXVEZfT1NfV0lOQ0Ug
MQorI2VuZGlmCiAKLS8qIFBMQVRGT1JNKE5FVEJTRCkgKi8KLS8qIE9wZXJhdGluZyBzeXN0ZW0g
bGV2ZWwgZGVwZW5kZW5jaWVzIGZvciBOZXRCU0QgdGhhdCBzaG91bGQgYmUgdXNlZCAqLwotLyog
cmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQgKi8KLSNpZiBkZWZpbmVkKF9fTmV0
QlNEX18pCi0jZGVmaW5lIFdURl9QTEFURk9STV9ORVRCU0QgMQorLyogT1MoV0lORE9XUykgLSBB
bnkgdmVyc2lvbiBvZiBXaW5kb3dzICovCisjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChf
V0lOMzIpCisjZGVmaW5lIFdURl9PU19XSU5ET1dTIDEKICNlbmRpZgogCi0vKiBQTEFURk9STShR
TlgpICovCi0vKiBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgUU5YIHRo
YXQgc2hvdWxkIGJlIHVzZWQgKi8KLS8qIHJlZ2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25t
ZW50ICovCi0jaWYgZGVmaW5lZChfX1FOWE5UT19fKQotI2RlZmluZSBXVEZfUExBVEZPUk1fUU5Y
IDEKKy8qIE9TKFNZTUJJQU4pIC0gU3ltYmlhbiAqLworI2lmIGRlZmluZWQgKF9fU1lNQklBTjMy
X18pCisvKiB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLCBpdCBpcyBub3QgcmVhbGx5IHdpbmRvd3Mg
Ki8KKyN1bmRlZiBXVEZfT1NfV0lORE9XUworI3VuZGVmIFdURl9QTEFURk9STV9XSU4KKyNkZWZp
bmUgV1RGX09TX1NZTUJJQU4gMQogI2VuZGlmCiAKLS8qIFBMQVRGT1JNKFVOSVgpICovCi0vKiBP
cGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVuZGVuY2llcyBmb3IgVW5peC1saWtlIHN5c3RlbXMg
dGhhdCAqLwotLyogc2hvdWxkIGJlIHVzZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJv
bm1lbnQgKi8KLSNpZiAgIFBMQVRGT1JNKERBUldJTikgICAgIFwKLSAgIHx8IFBMQVRGT1JNKEZS
RUVCU0QpICAgIFwKLSAgIHx8IFBMQVRGT1JNKFNZTUJJQU4pICAgIFwKLSAgIHx8IFBMQVRGT1JN
KE5FVEJTRCkgICAgIFwKKy8qIE9TKFVOSVgpIC0gQW55IFVuaXgtbGlrZSBzeXN0ZW0gKi8KKyNp
ZiAgIE9TKEFJWCkgICAgICAgICAgICAgIFwKKyAgIHx8IE9TKEFORFJPSUQpICAgICAgICAgIFwK
KyAgIHx8IE9TKERBUldJTikgICAgICAgICAgIFwKKyAgIHx8IE9TKEZSRUVCU0QpICAgICAgICAg
IFwKKyAgIHx8IE9TKEhBSUtVKSAgICAgICAgICAgIFwKKyAgIHx8IE9TKExJTlVYKSAgICAgICAg
ICAgIFwKKyAgIHx8IE9TKE5FVEJTRCkgICAgICAgICAgIFwKKyAgIHx8IE9TKE9QRU5CU0QpICAg
ICAgICAgIFwKKyAgIHx8IE9TKFFOWCkgICAgICAgICAgICAgIFwKKyAgIHx8IE9TKFNPTEFSSVMp
ICAgICAgICAgIFwKKyAgIHx8IE9TKFNZTUJJQU4pICAgICAgICAgIFwKICAgIHx8IGRlZmluZWQo
dW5peCkgICAgICAgIFwKICAgIHx8IGRlZmluZWQoX191bml4KSAgICAgIFwKLSAgIHx8IGRlZmlu
ZWQoX191bml4X18pICAgIFwKLSAgIHx8IGRlZmluZWQoX0FJWCkgICAgICAgIFwKLSAgIHx8IGRl
ZmluZWQoX19IQUlLVV9fKSAgIFwKLSAgIHx8IGRlZmluZWQoX19RTlhOVE9fXykgIFwKLSAgIHx8
IGRlZmluZWQoQU5EUk9JRCkKLSNkZWZpbmUgV1RGX1BMQVRGT1JNX1VOSVggMQorICAgfHwgZGVm
aW5lZChfX3VuaXhfXykKKyNkZWZpbmUgV1RGX09TX1VOSVggMQogI2VuZGlmCiAKIC8qIE9wZXJh
dGluZyBlbnZpcm9ubWVudHMgKi8KIAorLy8gRklYTUU6IHRoZXNlIGFyZSBhbGwgbWl4ZXMgb2Yg
T1MsIG9wZXJhdGluZyBlbnZpcm9ubWVudCBhbmQgcG9saWN5IGNob2ljZXMuICovCiAvKiBQTEFU
Rk9STShDSFJPTUlVTSkgKi8KIC8qIFBMQVRGT1JNKFFUKSAqLwogLyogUExBVEZPUk0oV1gpICov
CkBAIC00MDQsMTMgKzQxNSwxNCBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1fR1RLIDEKICNlbGlm
IGRlZmluZWQoQlVJTERJTkdfSEFJS1VfXykKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0hBSUtVIDEK
LSNlbGlmIFBMQVRGT1JNKERBUldJTikKKyNlbGlmIE9TKERBUldJTikKICNkZWZpbmUgV1RGX1BM
QVRGT1JNX01BQyAxCi0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5ET1dTKQog
I2RlZmluZSBXVEZfUExBVEZPUk1fV0lOIDEKICNlbmRpZgogCiAvKiBQTEFURk9STShJUEhPTkUp
ICovCisvLyBGSVhNRTogdGhpcyBpcyBzb21ldGltZXMgdXNlZCBhcyBhbiBPUyBzd2l0Y2ggYW5k
IHNvbWV0aW1lcyBmb3IgaGlnaGVyLWxldmVsIHRoaW5ncwogI2lmIChkZWZpbmVkKFRBUkdFVF9P
U19FTUJFRERFRCkgJiYgVEFSR0VUX09TX0VNQkVEREVEKSB8fCAoZGVmaW5lZChUQVJHRVRfT1Nf
SVBIT05FKSAmJiBUQVJHRVRfT1NfSVBIT05FKQogI2RlZmluZSBXVEZfUExBVEZPUk1fSVBIT05F
IDEKICNlbmRpZgpAQCAtNDI4LDYgKzQ0MCw4IEBACiAjZW5kaWYKIAogLyogUExBVEZPUk0oQU5E
Uk9JRCkgKi8KKy8vIEZJWE1FOiB0aGlzIGlzIHNvbWV0aW1lcyB1c2VkIGFzIGFuIE9TKCkgc3dp
dGNoLCBhbmQgb3RoZXIgdGltZXMgdG8gZHJpdmUKKy8vIHBvbGljeSBjaG9pY2VzCiAjaWYgZGVm
aW5lZChBTkRST0lEKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQU5EUk9JRCAxCiAjZW5kaWYKQEAg
LTQ0NCw3ICs0NTgsNyBAQAogCiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9D
SSBmb3IgTWFjICovCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0jaWYgUExBVEZPUk0oREFSV0lO
KQorI2lmIE9TKERBUldJTikKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NHIDEKICNkZWZpbmUgV1RG
X1BMQVRGT1JNX0NJIDEKICNkZWZpbmUgV1RGX1VTRV9BVFNVSSAxCkBAIC00NTksMTIgKzQ3Mywx
MiBAQAogI2VuZGlmCiAKIAotLyogUExBVEZPUk0oV0lOQ0UpICYmIFBMQVRGT1JNKFFUKQorLyog
T1MoV0lOQ0UpICYmIFBMQVRGT1JNKFFUKQogICAgV2UgY2FuIG5vdCBkZXRlcm1pbmUgdGhlIGVu
ZGlhbmVzcyBhdCBjb21waWxlIHRpbWUuIEZvcgogICAgUXQgZm9yIFdpbmRvd3MgQ0UgdGhlIGVu
ZGlhbmVzcyBpcyBzcGVjaWZpZWQgaW4gdGhlCiAgICBkZXZpY2Ugc3BlY2lmaWMgbWFrZXNwZWMK
ICovCi0jaWYgUExBVEZPUk0oV0lOQ0UpICYmIFBMQVRGT1JNKFFUKQorI2lmIE9TKFdJTkNFKSAm
JiBQTEFURk9STShRVCkKICMgICBpbmNsdWRlIDxRdEdsb2JhbD4KICMgICB1bmRlZiBXVEZfUExB
VEZPUk1fQklHX0VORElBTgogIyAgIHVuZGVmIFdURl9QTEFURk9STV9NSURETEVfRU5ESUFOCkBA
IC00NzUsMTYgKzQ4OSwxNiBAQAogIyAgIGluY2x1ZGUgPGNlX3RpbWUuaD4KICNlbmRpZgogCi0j
aWYgKFBMQVRGT1JNKElQSE9ORSkgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8
IChQTEFURk9STShRVCkgJiYgUExBVEZPUk0oREFSV0lOKSAmJiAhRU5BQkxFKFNJTkdMRV9USFJF
QURFRCkpKSAmJiAhZGVmaW5lZChFTkFCTEVfSlNDX01VTFRJUExFX1RIUkVBRFMpCisjaWYgKFBM
QVRGT1JNKElQSE9ORSkgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pIHx8IChQTEFU
Rk9STShRVCkgJiYgT1MoREFSV0lOKSAmJiAhRU5BQkxFKFNJTkdMRV9USFJFQURFRCkpKSAmJiAh
ZGVmaW5lZChFTkFCTEVfSlNDX01VTFRJUExFX1RIUkVBRFMpCiAjZGVmaW5lIEVOQUJMRV9KU0Nf
TVVMVElQTEVfVEhSRUFEUyAxCiAjZW5kaWYKIAogLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVy
Zm9ybWFuY2VDb3VudGVyIGJ5IGRlZmF1bHQgKi8KLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYg
T1MoV0lORE9XUykKICNkZWZpbmUgV1RGX1VTRV9RVUVSWV9QRVJGT1JNQU5DRV9DT1VOVEVSICAx
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpCisjaWYgT1Mo
V0lOQ0UpICYmICFQTEFURk9STShRVCkKICN1bmRlZiBFTkFCTEVfSlNDX01VTFRJUExFX1RIUkVB
RFMKICNkZWZpbmUgRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTICAgICAgICAwCiAjZGVmaW5l
IFVTRV9TWVNURU1fTUFMTE9DICAgICAgICAgICAgICAgICAgMApAQCAtNTA5LDExICs1MjMsMTEg
QEAKICNkZWZpbmUgX2NvdW50b2YoeCkgKHNpemVvZih4KSAvIHNpemVvZigoeClbMF0pKQogI2Vu
ZGlmCiAKLSNlbmRpZiAgLyogUExBVEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShRVCkgKi8KKyNl
bmRpZiAgLyogT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkgKi8KIAogI2lmIFBMQVRGT1JNKFFU
KQogI2RlZmluZSBXVEZfVVNFX1FUNF9VTklDT0RFIDEKLSNlbGlmIFBMQVRGT1JNKFdJTkNFKQor
I2VsaWYgT1MoV0lOQ0UpCiAjZGVmaW5lIFdURl9VU0VfV0lOQ0VfVU5JQ09ERSAxCiAjZWxpZiBQ
TEFURk9STShHVEspCiAvKiBUaGUgR1RLKyBVbmljb2RlIGJhY2tlbmQgaXMgY29uZmlndXJhYmxl
ICovCkBAIC01MzgsMTMgKzU1MiwxMyBAQAogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIgMQog
I2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElQSE9ORSkgKi8KIAotI2lmIFBM
QVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4pCisjaWYgUExBVEZPUk0oQ0hST01J
VU0pICYmIE9TKERBUldJTikKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NGIDEKICNkZWZpbmUgV1RG
X1VTRV9QVEhSRUFEUyAxCiAjZGVmaW5lIEhBVkVfUFRIUkVBRF9SV0xPQ0sgMQogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShRVCkgJiYgUExBVEZPUk0oREFSV0lOKQorI2lmIFBMQVRGT1JNKFFUKSAm
JiBPUyhEQVJXSU4pCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRiAxCiAjZW5kaWYKIApAQCAtNTgz
LDcgKzU5Nyw3IEBACiAKICNpZiBQTEFURk9STShXWCkKICNkZWZpbmUgRU5BQkxFX0FTU0VNQkxF
UiAxCi0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikKICNkZWZpbmUgV1RGX1BM
QVRGT1JNX0NGIDEKICNlbmRpZgogI2VuZGlmCkBAIC02MTAsMTkgKzYyNCwxOSBAQAogI2VuZGlm
CiAjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAqLwogCi0jaWYgUExBVEZP
Uk0oVU5JWCkgJiYgIVBMQVRGT1JNKFNZTUJJQU4pCisjaWYgT1MoVU5JWCkgJiYgIU9TKFNZTUJJ
QU4pCiAjZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oV0lO
X09TKSAmJiAhUExBVEZPUk0oU09MQVJJUykgJiYgIVBMQVRGT1JNKFFOWCkgXAotICAgICYmICFQ
TEFURk9STShTWU1CSUFOKSAmJiAhUExBVEZPUk0oSEFJS1UpICYmICFDT01QSUxFUihSVkNUKSBc
Ci0gICAgJiYgIVBMQVRGT1JNKEFORFJPSUQpCisjaWYgIU9TKFdJTkRPV1MpICYmICFPUyhTT0xB
UklTKSAmJiAhT1MoUU5YKSBcCisgICAgJiYgIU9TKFNZTUJJQU4pICYmICFPUyhIQUlLVSkgJiYg
IU9TKFJWQ1QpIFwKKyAgICAmJiAhT1MoQU5EUk9JRCkKICNkZWZpbmUgSEFWRV9UTV9HTVRPRkYg
MQogI2RlZmluZSBIQVZFX1RNX1pPTkUgMQogI2RlZmluZSBIQVZFX1RJTUVHTSAxCiAjZW5kaWYg
ICAgIAogCi0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikKIAogI2RlZmluZSBI
QVZFX0VSUk5PX0ggMQogI2RlZmluZSBIQVZFX0xBTkdJTkZPX0ggMQpAQCAtNjQ0LDE2ICs2NTgs
MTYgQEAKICNkZWZpbmUgSEFWRV9NQURWX0ZSRUUgMQogI2VuZGlmCiAKLSNlbGlmIFBMQVRGT1JN
KFdJTl9PUykKKyNlbGlmIE9TKFdJTkRPV1MpCiAKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBP
UyhXSU5DRSkKICNkZWZpbmUgSEFWRV9FUlJOT19IIDAKICNlbHNlCiAjZGVmaW5lIEhBVkVfU1lT
X1RJTUVCX0ggMQogI2VuZGlmCiAjZGVmaW5lIEhBVkVfVklSVFVBTEFMTE9DIDEKIAotI2VsaWYg
UExBVEZPUk0oU1lNQklBTikKKyNlbGlmIE9TKFNZTUJJQU4pCiAKICNkZWZpbmUgSEFWRV9FUlJO
T19IIDEKICNkZWZpbmUgSEFWRV9NTUFQIDAKQEAgLTY2Niw3ICs2ODAsNyBAQAogI2RlZmluZSBI
QVZFX1NZU19QQVJBTV9IIDEKICNlbmRpZgogCi0jZWxpZiBQTEFURk9STShRTlgpCisjZWxpZiBP
UyhRTlgpCiAKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKICNkZWZpbmUgSEFWRV9NTUFQIDEKQEAg
LTY3NSw3ICs2ODksNyBAQAogI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKICNkZWZpbmUgSEFW
RV9TWVNfVElNRV9IIDEKIAotI2VsaWYgUExBVEZPUk0oQU5EUk9JRCkKKyNlbGlmIE9TKEFORFJP
SUQpCiAKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKICNkZWZpbmUgSEFWRV9MQU5HSU5GT19IIDAK
QEAgLTY5MSw3ICs3MDUsNyBAQAogCiAjZGVmaW5lIEhBVkVfRVJSTk9fSCAxCiAvKiBBcyBsb25n
IGFzIEhhaWt1IGRvZXNuJ3QgaGF2ZSBhIGNvbXBsZXRlIHN1cHBvcnQgb2YgbG9jYWxlIHRoaXMg
d2lsbCBiZSBkaXNhYmxlZC4gKi8KLSNpZiAhUExBVEZPUk0oSEFJS1UpCisjaWYgIU9TKEhBSUtV
KQogI2RlZmluZSBIQVZFX0xBTkdJTkZPX0ggMQogI2VuZGlmCiAjZGVmaW5lIEhBVkVfTU1BUCAx
CkBAIC03OTAsMTEgKzgwNCwxMSBAQAogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChXVEZfVVNFX0pT
VkFMVUU2NCkgJiYgIWRlZmluZWQoV1RGX1VTRV9KU1ZBTFVFMzIpICYmICFkZWZpbmVkKFdURl9V
U0VfSlNWQUxVRTMyXzY0KQotI2lmIChDUFUoWDg2XzY0KSAmJiAoUExBVEZPUk0oVU5JWCkgfHwg
UExBVEZPUk0oV0lOX09TKSkpIHx8IENQVShJQTY0KSB8fCBDUFUoQUxQSEEpCisjaWYgKENQVShY
ODZfNjQpICYmIChPUyhVTklYKSB8fCBPUyhXSU5ET1dTKSkpIHx8IENQVShJQTY0KSB8fCBDUFUo
QUxQSEEpCiAjZGVmaW5lIFdURl9VU0VfSlNWQUxVRTY0IDEKICNlbGlmIENQVShBUk0pIHx8IENQ
VShQUEM2NCkKICNkZWZpbmUgV1RGX1VTRV9KU1ZBTFVFMzIgMQotI2VsaWYgUExBVEZPUk0oV0lO
X09TKSAmJiBDT01QSUxFUihNSU5HVykKKyNlbGlmIE9TKFdJTkRPV1MpICYmIENPTVBJTEVSKE1J
TkdXKQogLyogVXNpbmcgSlNWQUxVRTMyXzY0IGNhdXNlcyBwYWRkaW5nL2FsaWduZW1lbnQgaXNz
dWVzIGZvciBKSVRTdHViQXJnCiBvbiBNaW5HVy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yOTI2OCAqLwogI2RlZmluZSBXVEZfVVNFX0pTVkFMVUUzMiAxCkBA
IC04MjQsMjEgKzgzOCwyMSBAQCBvbiBNaW5HVy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3NoCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQotI2lmIENQVShYODZfNjQpICYmIFBMQVRG
T1JNKERBUldJTikKKyNpZiBDUFUoWDg2XzY0KSAmJiBPUyhEQVJXSU4pCiAgICAgI2RlZmluZSBF
TkFCTEVfSklUIDEKLSNlbGlmIENQVShYODYpICYmIFBMQVRGT1JNKERBUldJTikKKyNlbGlmIENQ
VShYODYpICYmIE9TKERBUldJTikKICAgICAjZGVmaW5lIEVOQUJMRV9KSVQgMQogICAgICNkZWZp
bmUgV1RGX1VTRV9KSVRfU1RVQl9BUkdVTUVOVF9WQV9MSVNUIDEKLSNlbGlmIENQVShYODYpICYm
IFBMQVRGT1JNKFdJTl9PUykgJiYgQ09NUElMRVIoTUlOR1cpICYmIEdDQ19WRVJTSU9OID49IDQw
MTAwCisjZWxpZiBDUFUoWDg2KSAmJiBPUyhXSU5ET1dTKSAmJiBDT01QSUxFUihNSU5HVykgJiYg
R0NDX1ZFUlNJT04gPj0gNDAxMDAKICAgICAjZGVmaW5lIEVOQUJMRV9KSVQgMQogICAgICNkZWZp
bmUgV1RGX1VTRV9KSVRfU1RVQl9BUkdVTUVOVF9WQV9MSVNUIDEKLSNlbGlmIENQVShYODYpICYm
IFBMQVRGT1JNKFdJTl9PUykgJiYgQ09NUElMRVIoTVNWQykKKyNlbGlmIENQVShYODYpICYmIE9T
KFdJTkRPV1MpICYmIENPTVBJTEVSKE1TVkMpCiAgICAgI2RlZmluZSBFTkFCTEVfSklUIDEKICAg
ICAjZGVmaW5lIFdURl9VU0VfSklUX1NUVUJfQVJHVU1FTlRfUkVHSVNURVIgMQotI2VsaWYgQ1BV
KFg4NikgJiYgUExBVEZPUk0oTElOVVgpICYmIEdDQ19WRVJTSU9OID49IDQwMTAwCisjZWxpZiBD
UFUoWDg2KSAmJiBPUyhMSU5VWCkgJiYgR0NDX1ZFUlNJT04gPj0gNDAxMDAKICAgICAjZGVmaW5l
IEVOQUJMRV9KSVQgMQogICAgICNkZWZpbmUgV1RGX1VTRV9KSVRfU1RVQl9BUkdVTUVOVF9WQV9M
SVNUIDEKLSNlbGlmIENQVShBUk1fVFJBRElUSU9OQUwpICYmIFBMQVRGT1JNKExJTlVYKQorI2Vs
aWYgQ1BVKEFSTV9UUkFESVRJT05BTCkgJiYgT1MoTElOVVgpCiAgICAgI2RlZmluZSBFTkFCTEVf
SklUIDEKICNlbmRpZgogI2VuZGlmIC8qIFBMQVRGT1JNKFFUKSAqLwpAQCAtODkxLDEwICs5MDUs
MTAgQEAgb24gTWluR1cuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaAogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShRVCkKLSNpZiAoQ1BVKFg4NikgJiYgUExBVEZPUk0oV0lOX09TKSAmJiBD
T01QSUxFUihNSU5HVykgJiYgR0NDX1ZFUlNJT04gPj0gNDAxMDApIFwKLSB8fCAoQ1BVKFg4Nikg
JiYgUExBVEZPUk0oV0lOX09TKSAmJiBDT01QSUxFUihNU1ZDKSkgXAotIHx8IChDUFUoWDg2KSAm
JiBQTEFURk9STShMSU5VWCkgJiYgR0NDX1ZFUlNJT04gPj0gNDAxMDApIFwKLSB8fCAoQ1BVKEFS
TV9UUkFESVRJT05BTCkgJiYgUExBVEZPUk0oTElOVVgpKQorI2lmIChDUFUoWDg2KSAmJiBPUyhX
SU5ET1dTKSAmJiBDT01QSUxFUihNSU5HVykgJiYgR0NDX1ZFUlNJT04gPj0gNDAxMDApIFwKKyB8
fCAoQ1BVKFg4NikgJiYgT1MoV0lORE9XUykgJiYgQ09NUElMRVIoTVNWQykpIFwKKyB8fCAoQ1BV
KFg4NikgJiYgT1MoTElOVVgpICYmIEdDQ19WRVJTSU9OID49IDQwMTAwKSBcCisgfHwgKENQVShB
Uk1fVFJBRElUSU9OQUwpICYmIE9TKExJTlVYKSkKICNkZWZpbmUgRU5BQkxFX1lBUlIgMQogI2Rl
ZmluZSBFTkFCTEVfWUFSUl9KSVQgMQogI2VuZGlmCkBAIC05MTgsNyArOTMyLDcgQEAgb24gTWlu
R1cuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaAogI2RlZmluZSBFTkFCTEVfQVNTRU1C
TEVSX1dYX0VYQ0xVU0lWRSAwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9QQU5fU0NS
T0xMSU5HKSAmJiBQTEFURk9STShXSU5fT1MpCisjaWYgIWRlZmluZWQoRU5BQkxFX1BBTl9TQ1JP
TExJTkcpICYmIE9TKFdJTkRPV1MpCiAjZGVmaW5lIEVOQUJMRV9QQU5fU0NST0xMSU5HIDEKICNl
bmRpZgogCkBAIC05NjEsNyArOTc1LDcgQEAgb24gTWluR1cuIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaAogI2RlZmluZSBXQVJOX1VOVVNFRF9SRVRVUk4KICNlbmRpZgogCi0jaWYgIUVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSB8fCAoRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
ICYmICgoUExBVEZPUk0oVU5JWCkgJiYgKFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXWCkpKSB8
fCBQTEFURk9STShHVEspKSkKKyNpZiAhRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpIHx8IChF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgKChPUyhVTklYKSAmJiAoUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKFdYKSkpIHx8IFBMQVRGT1JNKEdUSykpKQogI2RlZmluZSBFTkFCTEVfUExV
R0lOX1BBQ0tBR0VfU0lNUExFX0hBU0ggMQogI2VuZGlmCiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9SYW5kb21OdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9S
YW5kb21OdW1iZXIuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9S
YW5kb21OdW1iZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLSNpZiBQTEFURk9STShXSU5DRSkK
KyNpZiBPUyhXSU5DRSkKIGV4dGVybiAiQyIgewogI2luY2x1ZGUgIndpbmNlL210MTk5Mzdhci5j
IgogfQpAQCAtNjYsMTAgKzY2LDEwIEBAIGRvdWJsZSByYW5kb21OdW1iZXIoKQogICAgIHVpbnQz
Ml90IGJpdHM7CiAgICAgcmFuZF9zKCZiaXRzKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91
YmxlPihiaXRzKSAvIChzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKSkgKyAxLjApOwotI2VsaWYgUExBVEZPUk0oREFSV0lOKQorI2VsaWYgT1Mo
REFSV0lOKQogICAgIHVpbnQzMl90IGJpdHMgPSBhcmM0cmFuZG9tKCk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGRvdWJsZT4oYml0cykgLyAoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpICsgMS4wKTsKLSNlbGlmIFBMQVRGT1JNKFVOSVgp
CisjZWxpZiBPUyhVTklYKQogICAgIHVpbnQzMl90IHBhcnQxID0gcmFuZG9tKCkgJiAoUkFORF9N
QVggLSAxKTsKICAgICB1aW50MzJfdCBwYXJ0MiA9IHJhbmRvbSgpICYgKFJBTkRfTUFYIC0gMSk7
CiAgICAgLy8gcmFuZG9tIG9ubHkgcHJvdmlkZXMgMzEgYml0cwpAQCAtODAsOSArODAsOSBAQCBk
b3VibGUgcmFuZG9tTnVtYmVyKCkKICAgICAvLyBNYXNrIG9mZiB0aGUgbG93IDUzYml0cwogICAg
IGZ1bGxSYW5kb20gJj0gKDFMTCA8PCA1MykgLSAxOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxk
b3VibGU+KGZ1bGxSYW5kb20pL3N0YXRpY19jYXN0PGRvdWJsZT4oMUxMIDw8IDUzKTsKLSNlbGlm
IFBMQVRGT1JNKFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiAgICAgcmV0dXJuIGdlbnJhbmRfcmVz
NTMoKTsKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyNlbGlmIE9TKFdJTkRPV1MpCiAgICAgdWlu
dDMyX3QgcGFydDEgPSByYW5kKCkgJiAoUkFORF9NQVggLSAxKTsKICAgICB1aW50MzJfdCBwYXJ0
MiA9IHJhbmQoKSAmIChSQU5EX01BWCAtIDEpOwogICAgIHVpbnQzMl90IHBhcnQzID0gcmFuZCgp
ICYgKFJBTkRfTUFYIC0gMSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVy
U2VlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXJTZWVk
LmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlclNl
ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEyIEBACiAjaW5jbHVkZSA8c3lzL3Rp
bWUuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oVU5JWCkKKyNpZiBPUyhVTklYKQogI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKIGV4dGVybiAiQyIgewogdm9pZCBpbml0X2J5X2Fy
cmF5KHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSxpbnQga2V5X2xlbmd0aCk7CiB9CkBAIC00OSw5
ICs0OSw5IEBAIG5hbWVzcGFjZSBXVEYgewogCiBpbmxpbmUgdm9pZCBpbml0aWFsaXplUmFuZG9t
TnVtYmVyR2VuZXJhdG9yKCkKIHsKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lO
KQogICAgIC8vIE9uIERhcndpbiB3ZSB1c2UgYXJjNHJhbmRvbSB3aGljaCBpbml0aWFsaXNlcyBp
dHNlbGYuCi0jZWxpZiBQTEFURk9STShXSU5DRSkKKyNlbGlmIE9TKFdJTkNFKQogICAgIC8vIGlu
aXRpYWxpemUgcmFuZCgpCiAgICAgc3JhbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRpbWUoMCkp
KTsKIApAQCAtNjQsNyArNjQsNyBAQCBpbmxpbmUgdm9pZCBpbml0aWFsaXplUmFuZG9tTnVtYmVy
R2VuZXJhCiAgICAgaW5pdF9ieV9hcnJheShpbml0aWFsaXphdGlvbkJ1ZmZlciwgNCk7CiAjZWxp
ZiBDT01QSUxFUihNU1ZDKSAmJiBkZWZpbmVkKF9DUlRfUkFORF9TKQogICAgIC8vIE9uIFdpbmRv
d3Mgd2UgdXNlIHJhbmRfcyB3aGljaCBpbml0aWFsaXNlcyBpdHNlbGYKLSNlbGlmIFBMQVRGT1JN
KFVOSVgpCisjZWxpZiBPUyhVTklYKQogICAgIC8vIHNyYW5kb21kZXYgaXMgbm90IGd1YXJhbnRl
ZWQgdG8gZXhpc3Qgb24gbGludXggc28gd2UgdXNlIHRoaXMgcG9vciBzZWVkLCB0aGlzIHNob3Vs
ZCBiZSBpbXByb3ZlZAogICAgIHRpbWV2YWwgdGltZTsKICAgICBnZXR0aW1lb2ZkYXkoJnRpbWUs
IDApOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1N0cmluZ0V4dHJhcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9TdHJpbmdFeHRyYXMuaAkocmV2aXNpb24gNTI3ODIpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNlbmRpZiAKIAogI2lmIENPTVBJTEVSKE1TVkMpCisvLyBGSVhNRTogd2h5
IGEgQ09NUElMRVIgY2hlY2sgaW5zdGVhZCBvZiBPUz8gYWxzbywgdGhlc2Ugc2hvdWxkIGJlIEhB
VkUgY2hlY2tzCiAKIGlubGluZSBpbnQgc25wcmludGYoY2hhciogYnVmZmVyLCBzaXplX3QgY291
bnQsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSAKIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgaW5saW5l
IGludCBzbnByaW50ZihjaGFyKiBidWZmZXIsIHNpemVfdAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLSNpZiBDT01QSUxFUihNU1ZDNykgfHwgUExBVEZPUk0oV0lOQ0UpCisjaWYgQ09NUElMRVIo
TVNWQzcpIHx8IE9TKFdJTkNFKQogCiBpbmxpbmUgaW50IHZzbnByaW50ZihjaGFyKiBidWZmZXIs
IHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiB7CkBAIC01
NCw3ICs1NSw3IEBAIGlubGluZSBpbnQgdnNucHJpbnRmKGNoYXIqIGJ1ZmZlciwgc2l6ZV8KIAog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKIAogaW5saW5lIGlu
dCBzdHJuaWNtcChjb25zdCBjaGFyKiBzdHJpbmcxLCBjb25zdCBjaGFyKiBzdHJpbmcyLCBzaXpl
X3QgY291bnQpCiB7CkBAIC04NSw3ICs4Niw4IEBAIGlubGluZSBpbnQgc3RyY2FzZWNtcChjb25z
dCBjaGFyKiBzMSwgY28KIAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU5fT1MpIHx8IFBMQVRG
T1JNKExJTlVYKSB8fCBQTEFURk9STShTT0xBUklTKQorI2lmIE9TKFdJTkRPV1MpIHx8IE9TKExJ
TlVYKSB8fCBPUyhTT0xBUklTKQorLy8gRklYTUU6IHNob3VsZCBjaGVjayBIQVZFX1NUUk5TVFIK
IAogaW5saW5lIGNoYXIqIHN0cm5zdHIoY29uc3QgY2hhciogYnVmZmVyLCBjb25zdCBjaGFyKiB0
YXJnZXQsIHNpemVfdCBidWZmZXJMZW5ndGgpCiB7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
VENTcGluTG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UQ1NwaW5Mb2Nr
LmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RDU3BpbkxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICNpZm5kZWYg
V0lOMzJfTEVBTl9BTkRfTUVBTgogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCiAjZW5kaWYK
QEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgVENNYWxsb2NfU3BpbkxvY2sgewogICAgICAgKCJp
c3luY1xuXHQiCiAgICAgICAgImVpZWlvXG5cdCIKICAgICAgICAic3R3ICUxLCAlMCIKLSNpZiBQ
TEFURk9STShEQVJXSU4pIHx8IENQVShQUEMpCisjaWYgT1MoREFSV0lOKSB8fCBDUFUoUFBDKQog
ICAgICAgIDogIj1vIiAobG9ja3dvcmRfKQogI2Vsc2UKICAgICAgICA6ICI9bSIgKGxvY2t3b3Jk
XykgCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGljIHZvaWQgVENNYWxsb2NfU2xvd0xvY2sodm9s
YXRpbGUgdQogICAgIC8vIGZyb20gdGFraW5nIDMwIHNlY29uZHMgdG8gMTYgc2Vjb25kcy4KIAog
ICAgIC8vIFNsZWVwIGZvciBhIGZldyBtaWxsaXNlY29uZHMKLSNpZiBQTEFURk9STShXSU5fT1Mp
CisjaWYgT1MoV0lORE9XUykKICAgICBTbGVlcCgyKTsKICNlbHNlCiAgICAgc3RydWN0IHRpbWVz
cGVjIHRtOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RDU3lzdGVtQWxsb2MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UQ1N5c3RlbUFsbG9jLmNwcAkocmV2aXNpb24g
NTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVENTeXN0ZW1BbGxvYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSAid2luZG93
cy5oIgogI2Vsc2UKICNpbmNsdWRlIDxlcnJuby5oPgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZFNwZWNpZmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZFNwZWNpZmljLmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZFNwZWNpZmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEzICs0NywxMyBAQAogI2luY2x1ZGUg
PHB0aHJlYWQuaD4KICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUaHJlYWRTdG9yYWdl
PgotI2VsaWYgUExBVEZPUk0oV0lOX09TKQorI2VsaWYgT1MoV0lORE9XUykKICNpbmNsdWRlIDx3
aW5kb3dzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiAhVVNFKFBUSFJFQURT
KSAmJiAhUExBVEZPUk0oUVQpICYmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiAhVVNFKFBUSFJFQURT
KSAmJiAhUExBVEZPUk0oUVQpICYmIE9TKFdJTkRPV1MpCiAvLyBUaHJlYWRTcGVjaWZpY1RocmVh
ZEV4aXQgc2hvdWxkIGJlIGNhbGxlZCBlYWNoIHRpbWUgd2hlbiBhIHRocmVhZCBpcyBkZXRhY2hl
ZC4KIC8vIFRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGZvciB0aHJlYWRzIGNyZWF0ZWQgd2l0
aCBXVEY6OmNyZWF0ZVRocmVhZC4KIHZvaWQgVGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0KCk7CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB+VGhyZWFkU3BlY2lmaWMoKTsKIAogcHJpdmF0
ZToKLSNpZiAhVVNFKFBUSFJFQURTKSAmJiAhUExBVEZPUk0oUVQpICYmIFBMQVRGT1JNKFdJTl9P
UykKKyNpZiAhVVNFKFBUSFJFQURTKSAmJiAhUExBVEZPUk0oUVQpICYmIE9TKFdJTkRPV1MpCiAg
ICAgZnJpZW5kIHZvaWQgVGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0KCk7CiAjZW5kaWYKICAgICAK
QEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldChUKik7CiAgICAgdm9pZCBz
dGF0aWMgZGVzdHJveSh2b2lkKiBwdHIpOwogCi0jaWYgVVNFKFBUSFJFQURTKSB8fCBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oV0lOX09TKQorI2lmIFVTRShQVEhSRUFEUykgfHwgUExBVEZPUk0o
UVQpIHx8IE9TKFdJTkRPV1MpCiAgICAgc3RydWN0IERhdGEgOiBOb25jb3B5YWJsZSB7CiAgICAg
ICAgIERhdGEoVCogdmFsdWUsIFRocmVhZFNwZWNpZmljPFQ+KiBvd25lcikgOiB2YWx1ZSh2YWx1
ZSksIG93bmVyKG93bmVyKSB7fQogI2lmIFBMQVRGT1JNKFFUKQpAQCAtOTUsNyArOTUsNyBAQCBw
cml2YXRlOgogICAgIHB0aHJlYWRfa2V5X3QgbV9rZXk7CiAjZWxpZiBQTEFURk9STShRVCkKICAg
ICBRVGhyZWFkU3RvcmFnZTxEYXRhKj4gbV9rZXk7Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCisj
ZWxpZiBPUyhXSU5ET1dTKQogICAgIGludCBtX2luZGV4OwogI2VuZGlmCiB9OwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIGlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpzZXQoVCogcHQKICAgICBt
X2tleS5zZXRMb2NhbERhdGEoZGF0YSk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyNl
bGlmIE9TKFdJTkRPV1MpCiAKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBUTFMga2V5cyB0aGF0
IGNhbiBiZSBjcmVhdGVkLiBGb3Igc2ltcGxpZmljYXRpb24sIHdlIGFzc3VtZSB0aGF0OgogLy8g
MSkgT25jZSB0aGUgaW5zdGFuY2Ugb2YgVGhyZWFkU3BlY2lmaWM8PiBpcyBjcmVhdGVkLCBpdCB3
aWxsIG5vdCBiZSBkZXN0cnVjdGVkIHVudGlsIHRoZSBwcm9ncmFtIGRpZXMuCkBAIC0yMzAsNyAr
MjMwLDcgQEAgaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VD46OmRlc3Ryb3kodgogICAgIHB0
aHJlYWRfc2V0c3BlY2lmaWMoZGF0YS0+b3duZXItPm1fa2V5LCAwKTsKICNlbGlmIFBMQVRGT1JN
KFFUKQogICAgIC8vIERvIG5vdGhpbmcgaGVyZQotI2VsaWYgUExBVEZPUk0oV0lOX09TKQorI2Vs
aWYgT1MoV0lORE9XUykKICAgICBUbHNTZXRWYWx1ZSh0bHNLZXlzKClbZGF0YS0+b3duZXItPm1f
aW5kZXhdLCAwKTsKICNlbHNlCiAjZXJyb3IgVGhyZWFkU3BlY2lmaWMgaXMgbm90IGltcGxlbWVu
dGVkIGZvciB0aGlzIHBsYXRmb3JtLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNp
b24gNTI3ODIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDcgKzYxLDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtLmgiCiAKLSNpZiBQTEFU
Rk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYK
IApAQCAtNjksMTEgKzY5LDExIEBACiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhUExBVEZPUk0o
V0lOQ0UpCisjaWYgT1MoV0lORE9XUykgJiYgIU9TKFdJTkNFKQogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KLSNlbGlmIFBMQVRGT1JNKERBUldJTikKKyNlbGlmIE9TKERBUldJTikKICNpbmNsdWRlIDxs
aWJrZXJuL09TQXRvbWljLmg+Ci0jZWxpZiBQTEFURk9STShBTkRST0lEKQorI2VsaWYgT1MoQU5E
Uk9JRCkKICNpbmNsdWRlIDxjdXRpbHMvYXRvbWljLmg+CiAjZWxpZiBDT01QSUxFUihHQ0MpCiAj
aWYgKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18g
Pj0gMikpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdHlwZWRlZiBHT3duUHRyPEdDb25kPiBQbGF0Zm9y
bUNvbmRpdGlvbgogdHlwZWRlZiBRVF9QUkVQRU5EX05BTUVTUEFDRShRTXV0ZXgpKiBQbGF0Zm9y
bU11dGV4OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVJlYWRXcml0ZUxvY2s7IC8vIEZJWE1FOiBJ
bXBsZW1lbnQuCiB0eXBlZGVmIFFUX1BSRVBFTkRfTkFNRVNQQUNFKFFXYWl0Q29uZGl0aW9uKSog
UGxhdGZvcm1Db25kaXRpb247Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5E
T1dTKQogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9pbnRl
cm5hbE11dGV4OwogICAgIHNpemVfdCBtX3JlY3Vyc2lvbkNvdW50OwpAQCAtMjE3LDEwICsyMTcs
MTAgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNvbmRpdGlvbiBtX2NvbmRpdGlvbjsKIH07CiAK
LSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICNkZWZpbmUgV1RGX1VTRV9M
T0NLRlJFRV9USFJFQURTQUZFU0hBUkVEIDEKIAotI2lmIENPTVBJTEVSKE1JTkdXKSB8fCBDT01Q
SUxFUihNU1ZDNykgfHwgUExBVEZPUk0oV0lOQ0UpCisjaWYgQ09NUElMRVIoTUlOR1cpIHx8IENP
TVBJTEVSKE1TVkM3KSB8fCBPUyhXSU5DRSkKIGlubGluZSBpbnQgYXRvbWljSW5jcmVtZW50KGlu
dCogYWRkZW5kKSB7IHJldHVybiBJbnRlcmxvY2tlZEluY3JlbWVudChyZWludGVycHJldF9jYXN0
PGxvbmcqPihhZGRlbmQpKTsgfQogaW5saW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50KiBhZGRl
bmQpIHsgcmV0dXJuIEludGVybG9ja2VkRGVjcmVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8bG9uZyo+
KGFkZGVuZCkpOyB9CiAjZWxzZQpAQCAtMjI4LDEzICsyMjgsMTMgQEAgaW5saW5lIGludCBhdG9t
aWNJbmNyZW1lbnQoaW50IHZvbGF0aWxlKgogaW5saW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50
IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIEludGVybG9ja2VkRGVjcmVtZW50KHJlaW50ZXJw
cmV0X2Nhc3Q8bG9uZyB2b2xhdGlsZSo+KGFkZGVuZCkpOyB9CiAjZW5kaWYKIAotI2VsaWYgUExB
VEZPUk0oREFSV0lOKQorI2VsaWYgT1MoREFSV0lOKQogI2RlZmluZSBXVEZfVVNFX0xPQ0tGUkVF
X1RIUkVBRFNBRkVTSEFSRUQgMQogCiBpbmxpbmUgaW50IGF0b21pY0luY3JlbWVudChpbnQgdm9s
YXRpbGUqIGFkZGVuZCkgeyByZXR1cm4gT1NBdG9taWNJbmNyZW1lbnQzMkJhcnJpZXIoY29uc3Rf
Y2FzdDxpbnQqPihhZGRlbmQpKTsgfQogaW5saW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50IHZv
bGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIE9TQXRvbWljRGVjcmVtZW50MzJCYXJyaWVyKGNvbnN0
X2Nhc3Q8aW50Kj4oYWRkZW5kKSk7IH0KIAotI2VsaWYgUExBVEZPUk0oQU5EUk9JRCkKKyNlbGlm
IE9TKEFORFJPSUQpCiAKIGlubGluZSBpbnQgYXRvbWljSW5jcmVtZW50KGludCB2b2xhdGlsZSog
YWRkZW5kKSB7IHJldHVybiBhbmRyb2lkX2F0b21pY19pbmMoYWRkZW5kKTsgfQogaW5saW5lIGlu
dCBhdG9taWNEZWNyZW1lbnQoaW50IHZvbGF0aWxlKiBhZGRlbmQpIHsgcmV0dXJuIGFuZHJvaWRf
YXRvbWljX2RlYyhhZGRlbmQpOyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
UHRocmVhZHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
dGhyZWFkcy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1B0aHJlYWRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1
ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEFORFJPSUQpCisjaWYgT1Mo
QU5EUk9JRCkKICNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgogI2VuZGlmCiAKQEAgLTU1LDcgKzU1
LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYQogCiBzdGF0aWMg
TXV0ZXgqIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4OwogCi0jaWYgIVBMQVRGT1JN
KERBUldJTikgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFVTRShXRUJfVEhSRUFEKQorI2lmICFP
UyhEQVJXSU4pIHx8IFBMQVRGT1JNKENIUk9NSVVNKSB8fCBVU0UoV0VCX1RIUkVBRCkKIHN0YXRp
YyBwdGhyZWFkX3QgbWFpblRocmVhZDsgLy8gVGhlIHRocmVhZCB0aGF0IHdhcyB0aGUgZmlyc3Qg
dG8gY2FsbCBpbml0aWFsaXplVGhyZWFkaW5nKCksIHdoaWNoIG11c3QgYmUgdGhlIG1haW4gdGhy
ZWFkLgogI2VuZGlmCiAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCkKICAgICAgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0ZXg7
CiAgICAgICAgIHRocmVhZE1hcE11dGV4KCk7CiAgICAgICAgIGluaXRpYWxpemVSYW5kb21OdW1i
ZXJHZW5lcmF0b3IoKTsKLSNpZiAhUExBVEZPUk0oREFSV0lOKSB8fCBQTEFURk9STShDSFJPTUlV
TSkgfHwgVVNFKFdFQl9USFJFQUQpCisjaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0oQ0hST01J
VU0pIHx8IFVTRShXRUJfVEhSRUFEKQogICAgICAgICBtYWluVGhyZWFkID0gcHRocmVhZF9zZWxm
KCk7CiAjZW5kaWYKICAgICAgICAgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBzdGF0aWMgdm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmCiAgICAgdGhy
ZWFkTWFwKCkucmVtb3ZlKGlkKTsKIH0KIAotI2lmIFBMQVRGT1JNKEFORFJPSUQpCisjaWYgT1Mo
QU5EUk9JRCkKIC8vIE9uIHRoZSBBbmRyb2lkIHBsYXRmb3JtLCB0aHJlYWRzIG11c3QgYmUgcmVn
aXN0ZXJlZCB3aXRoIHRoZSBWTSBiZWZvcmUgdGhleSBydW4uCiBzdHJ1Y3QgVGhyZWFkRGF0YSB7
CiAgICAgVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludDsKQEAgLTIyOSw3ICsyMjksNyBAQCBUaHJl
YWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQogCiBib29sIGlzTWFpblRocmVhZCgpCiB7Ci0j
aWYgUExBVEZPUk0oREFSV0lOKSAmJiAhUExBVEZPUk0oQ0hST01JVU0pICYmICFVU0UoV0VCX1RI
UkVBRCkKKyNpZiBPUyhEQVJXSU4pICYmICFQTEFURk9STShDSFJPTUlVTSkgJiYgIVVTRShXRUJf
VEhSRUFEKQogICAgIHJldHVybiBwdGhyZWFkX21haW5fbnAoKTsKICNlbHNlCiAgICAgcmV0dXJu
IHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5UaHJlYWQpOwpJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZ1dpbi5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZ1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4NywxMCBA
QAogI2luY2x1ZGUgIlRocmVhZGluZy5oIgogCiAjaW5jbHVkZSAiTWFpblRocmVhZC5oIgotI2lm
ICFVU0UoUFRIUkVBRFMpICYmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiAhVVNFKFBUSFJFQURTKSAm
JiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgiCiAjZW5kaWYKLSNpZiAh
UExBVEZPUk0oV0lOQ0UpCisjaWYgIU9TKFdJTkNFKQogI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNl
bmRpZgogI2lmIEhBVkUoRVJSTk9fSCkKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgX19zdGRjYWxsIHd0ZlRocmVhZEVudHJ5CiAKICAgICB2b2lkKiByZXN1bHQgPSBpbnZvY2F0
aW9uLmZ1bmN0aW9uKGludm9jYXRpb24uZGF0YSk7CiAKLSNpZiAhVVNFKFBUSFJFQURTKSAmJiBQ
TEFURk9STShXSU5fT1MpCisjaWYgIVVTRShQVEhSRUFEUykgJiYgT1MoV0lORE9XUykKICAgICAv
LyBEbyB0aGUgVExTIGNsZWFudXAuCiAgICAgVGhyZWFkU3BlY2lmaWNUaHJlYWRFeGl0KCk7CiAj
ZW5kaWYKQEAgLTIxOCw3ICsyMTgsNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZElu
dGVybmFsKFRoCiAgICAgdW5zaWduZWQgdGhyZWFkSWRlbnRpZmllciA9IDA7CiAgICAgVGhyZWFk
SWRlbnRpZmllciB0aHJlYWRJRCA9IDA7CiAgICAgVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uKiBp
bnZvY2F0aW9uID0gbmV3IFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbihlbnRyeVBvaW50LCBkYXRh
KTsKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICAvLyBUaGlzIGlzIHNh
ZmUgb24gV0lOQ0UsIHNpbmNlIENSVCBpcyBpbiB0aGUgY29yZSBhbmQgaW5uYXRlbHkgbXVsdGl0
aHJlYWRlZC4KICAgICAvLyBPbiBkZXNrdG9wIFdpbmRvd3MsIG5lZWQgdG8gdXNlIF9iZWdpbnRo
cmVhZGV4IChub3QgYXZhaWxhYmxlIG9uIFdpbkNFKSBpZiB1c2luZyBhbnkgQ1JUIGZ1bmN0aW9u
cwogICAgIEhBTkRMRSB0aHJlYWRIYW5kbGUgPSBDcmVhdGVUaHJlYWQoMCwgMCwgKExQVEhSRUFE
X1NUQVJUX1JPVVRJTkUpd3RmVGhyZWFkRW50cnlQb2ludCwgaW52b2NhdGlvbiwgMCwgKExQRFdP
UkQpJnRocmVhZElkZW50aWZpZXIpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIFRocmVhZElkZW50aWZp
ZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGgKICAgICBIQU5ETEUgdGhyZWFkSGFuZGxlID0gcmVp
bnRlcnByZXRfY2FzdDxIQU5ETEU+KF9iZWdpbnRocmVhZGV4KDAsIDAsIHd0ZlRocmVhZEVudHJ5
UG9pbnQsIGludm9jYXRpb24sIDAsICZ0aHJlYWRJZGVudGlmaWVyKSk7CiAjZW5kaWYKICAgICBp
ZiAoIXRocmVhZEhhbmRsZSkgewotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQog
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdGhyZWFkIGF0IGVudHJ5IHBvaW50
ICVwIHdpdGggZGF0YSAlcDogJWxkIiwgZW50cnlQb2ludCwgZGF0YSwgOjpHZXRMYXN0RXJyb3Io
KSk7CiAjZWxpZiBkZWZpbmVkKE5PX0VSUk5PKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgdGhyZWFkIGF0IGVudHJ5IHBvaW50ICVwIHdpdGggZGF0YSAlcC4iLCBlbnRyeVBv
aW50LCBkYXRhKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9WTVRhZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVk1UYWdzLmgJKHJldmlzaW9uIDUyNzgyKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL1ZNVGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
CiAKIC8vIE9uIE1hYyBPUyBYLCB0aGUgVk0gc3Vic3lzdGVtIGFsbG93cyB0YWdnaW5nIG1lbW9y
eSByZXF1ZXN0ZWQgZnJvbSBtbWFwIGFuZCB2bV9tYXAKIC8vIGluIG9yZGVyIHRvIGFpZCB0b29s
cyB0aGF0IGluc3BlY3Qgc3lzdGVtIG1lbW9yeSB1c2UuIAotI2lmIFBMQVRGT1JNKERBUldJTikg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpCisjaWYgT1MoREFSV0lOKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikKIAogI2luY2x1ZGUgPG1hY2gvdm1fc3RhdGlzdGljcy5oPgog
CkBAIC00NCwxMiArNDQsMTIgQEAKICNkZWZpbmUgVk1fVEFHX0ZPUl9SRUdJU1RFUkZJTEVfTUVN
T1JZIFZNX01BS0VfVEFHKDY1KQogI2VuZGlmIC8vIGRlZmluZWQoVk1fTUVNT1JZX0pBVkFTQ1JJ
UFRfQ09SRSkgJiYgZGVmaW5lZChWTV9NRU1PUllfSkFWQVNDUklQVF9KSVRfUkVHSVNURVJfRklM
RSkgJiYgZGVmaW5lZChWTV9NRU1PUllfSkFWQVNDUklQVF9KSVRfRVhFQ1VUQUJMRV9BTExPQ0FU
T1IpICYmIGRlZmluZWQoVk1fTUVNT1JZX0pBVkFTQ1JJUFRfSklUX0VYRUNVVEFCTEVfQUxMT0NB
VE9SKQogCi0jZWxzZSAvLyBQTEFURk9STShEQVJXSU4pICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKQorI2Vsc2UgLy8gT1MoREFSV0lOKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikKIAogI2RlZmluZSBWTV9UQUdfRk9SX0NPTExFQ1RPUl9NRU1PUlkgLTEKICNkZWZpbmUgVk1f
VEFHX0ZPUl9FWEVDVVRBQkxFQUxMT0NBVE9SX01FTU9SWSAtMQogI2RlZmluZSBWTV9UQUdfRk9S
X1JFR0lTVEVSRklMRV9NRU1PUlkgLTEKIAotI2VuZGlmIC8vIFBMQVRGT1JNKERBUldJTikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpCisjZW5kaWYgLy8gT1MoREFSV0lOKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9USUdFUikKIAogI2VuZGlmIC8vIFZNVGFnc19oCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS93dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAJKHJldmlzaW9u
IDUyNzgyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHVuaWNvZGUvdWNv
bC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9T
KERBUldJTikKICNpbmNsdWRlICJSZXRhaW5QdHIuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgogI2VuZGlmCkBAIC01OSw5ICs1OSw5IEBAIENvbGxhdG9yOjpD
b2xsYXRvcihjb25zdCBjaGFyKiBsb2NhbGUpCiAKIHN0ZDo6YXV0b19wdHI8Q29sbGF0b3I+IENv
bGxhdG9yOjp1c2VyRGVmYXVsdCgpCiB7Ci0jaWYgUExBVEZPUk0oREFSV0lOKSAmJiBQTEFURk9S
TShDRikKKyNpZiBPUyhEQVJXSU4pICYmIFBMQVRGT1JNKENGKQogICAgIC8vIE1hYyBPUyBYIGRv
ZXNuJ3Qgc2V0IFVOSVggbG9jYWxlIHRvIG1hdGNoIHVzZXItc2VsZWN0ZWQgb25lLCBzbyBJQ1Ug
ZGVmYXVsdCBkb2Vzbid0IHdvcmsuCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFQTEFURk9STShJUEhPTkUpCisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFPUyhJUEhPTkVfT1MpCiAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBjdXJyZW50
TG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CiAgICAgQ0ZTdHJpbmdSZWYg
Y29sbGF0aW9uT3JkZXIgPSAoQ0ZTdHJpbmdSZWYpQ0ZMb2NhbGVHZXRWYWx1ZShjdXJyZW50TG9j
YWxlLmdldCgpLCBrQ0ZMb2NhbGVDb2xsYXRvcklkZW50aWZpZXIpOwogI2Vsc2UKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi93aW4vTWFpblRocmVhZFdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL3dpbi9NYWluVGhyZWFkV2luLmNwcAkocmV2aXNpb24gNTI3ODIpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvd2luL01haW5UaHJlYWRXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAi
VGhyZWFkaW5nLmgiCi0jaWYgIVBMQVRGT1JNKFdJTkNFKQorI2lmICFPUyhXSU5DRSkKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIGluaXRpYWxp
emVNYWluVGhyZWFkUGxhdGZvcm0oKQogICAgICAgICByZXR1cm47CiAKICAgICBIV05EIGhXbmRQ
YXJlbnQgPSAwOwotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogICAgIFdORENM
QVNTIHdjZXg7CiAgICAgbWVtc2V0KCZ3Y2V4LCAwLCBzaXplb2YoV05EQ0xBU1MpKTsKICNlbHNl
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCiAj
ZW5kaWYKICAgICB3Y2V4LmxwZm5XbmRQcm9jICAgID0gVGhyZWFkaW5nV2luZG93V25kUHJvYzsK
ICAgICB3Y2V4Lmxwc3pDbGFzc05hbWUgID0ga1RocmVhZGluZ1dpbmRvd0NsYXNzTmFtZTsKLSNp
ZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICBSZWdpc3RlckNsYXNzKCZ3Y2V4
KTsKICNlbHNlCiAgICAgUmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Mjc4NykK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY2IEBACisy
MDEwLTAxLTA0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVvcmdhbml6ZSwgZG9jdW1l
bnQgYW5kIHJlbmFtZSBPUygpIHBsYXRmb3JtIG1hY3Jvcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMTk4CisKKyAgICAgICAgQWRhcHQgdG8gbmFt
ZSBjaGFuZ2VzLiBBbHNvIGZpeGVkIGEgZmV3IGluY29ycmVjdCBPUyBjaGVja3MuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBjb25m
aWcuaDoKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVk
Rm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcDoKKyAgICAgICAgKiBwYWdlL0V2
ZW50SGFuZGxlci5jcHA6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeSk6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJhc2U6OnBsYXRm
b3JtKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy5oOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vRHJhZ0NvbnRyb2xsZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93
bik6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycyk6CisgICAg
ICAgICogcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6Y3JlYXRlRHJhZ2dpbmdDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXlib2FyZENvZGVzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vQ2hyb21pdW1CcmlkZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6
d3JpdGVSYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0
aWVzQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0
aWxpdGllc0Nocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2Fy
ZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93
bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVu
dENhcHNMb2NrU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6bGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjptYXlG
aWxsV2l0aFNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9p
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWx0ZXJuYXRlRmFtaWx5TmFt
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjphZHZhbmNlQXQp
OgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OmFkZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpnZXRXaW5kb3dzQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRl
OjpTdGF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRleHRTa2lhOjpQbGF0Zm9ybUNvbnRleHRT
a2lhKToKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmUpOgorICAgICAgICAoUGxh
dGZvcm1Db250ZXh0U2tpYTo6cmVzdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ljb25XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxlbmFtZUZyb21TdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsZW5hbWVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmc6OmZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6Om51bWJlcik6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEVuY29kaW5nOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRCYXNlVGV4dENvZGVjTWFw
cyk6CisgICAgICAgIChXZWJDb3JlOjpleHRlbmRUZXh0Q29kZWNNYXBzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dFN0cmVhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjUXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjptZXNz
YWdlVG9FdmVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50OjpQ
bGF0Zm9ybU1vdXNlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VJbmZvRm9yV2lkZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnU6OnNob3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cE1lbnU6OnJlZ2lzdGVyQ2xhc3MpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51OjpQ
b3B1cE1lbnVXbmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6d25kUHJvYyk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1N5c3RlbVRpbWVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dXNlcklkbGVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5sb2FkTW9kdWxlKToKKyAgICAgICAgKiBwbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6Y29tcGFyZUZpbGVWZXJzaW9uKToK
KyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblBhY2thZ2UuaDoKKyAgICAgICAgKiBwbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3
Lmg6CisgICAgICAgICogcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICog
cGx1Z2lucy93aW4vUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyUGx1Z2luVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnVwZGF0ZVBsdWdpbldpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwYWlu
dEludG9UcmFuc2Zvcm1lZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
cGFpbnRXaW5kb3dlZFBsdWdpbkludG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZU1vdXNl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0UGFyZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KToKKwogMjAxMC0wMS0wNCAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nv
bmZpZy5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWYg
UExBVEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChCVUlMRElOR19XWF9fKSAmJiAhQ09NUElMRVIo
R0NDKQorI2lmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pICYmICFDT01Q
SUxFUihHQ0MpCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5l
ZChCVUlMRElOR19XVEYpCiAjZGVmaW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBv
cnQpCiAjZWxzZQpAQCAtNDcsNyArNDcsNyBAQAogI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEK
ICNlbmRpZiAvKiBfX0FQUExFX18gKi8KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhX
SU5ET1dTKQogCiAjaWZuZGVmIF9XSU4zMl9XSU5OVAogI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgw
NTAwCkBAIC03Myw3ICs3Myw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jZW5kaWYgLyogUExBVEZP
Uk0oV0lOX09TKSAqLworI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCiAKICNpZiBQTEFURk9STShB
TkRST0lEKQogI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1IgIkdvb2dsZSBJbmMuIgpA
QCAtMTY5LDcgKzE2OSw3IEBACiAjZGVmaW5lIFdURl9VU0VfTkVXX1RIRU1FIDEKICNlbmRpZiAv
LyBQTEFURk9STShNQUMpCiAKLSNpZiBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFNZTUJJQU4p
CiAjdW5kZWYgV0lOMzIKICN1bmRlZiBfV0lOMzIKICN1bmRlZiBTS0lQX1NUQVRJQ19DT05TVFJV
Q1RPUlNfT05fR0NDCkBAIC0xODcsMTAgKzE4NywxMCBAQAogCiAjaWYgUExBVEZPUk0oQ0hST01J
VU0pCiAKLSNpZiAhUExBVEZPUk0oREFSV0lOKQorI2lmICFPUyhEQVJXSU4pCiAvLyBEZWZpbmUg
U0tJQSBvbiBub24tTWFjLgogI2RlZmluZSBXVEZfUExBVEZPUk1fU0tJQSAxCi0jZW5kaWYgLyog
IVBMQVRGT1JNKERBUldJTikgKi8KKyNlbmRpZiAvKiAhT1MoREFSV0lOKSAqLwogCiAvLyBDaHJv
bWl1bSB1c2VzIHRoaXMgZmlsZSBpbnN0ZWFkIG9mIEphdmFTY3JpcHRDb3JlL2NvbmZpZy5oIHRv
IGNvbXBpbGUKIC8vIEphdmFTY3JpcHRDb3JlL3d0ZiAoY2hyb21pdW0gZG9lc24ndCBjb21waWxl
IHRoZSByZXN0IG9mIEpTQykuIFRoZXJlZm9yZSwKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotI2VsaWYgUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oV0lOQ0UpCisjZWxpZiBQTEFURk9S
TShXSU4pICYmICFPUyhXSU5DRSkKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cldpbi5oIgogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2VsaWYgUExBVEZPUk0oQ0hST01JVU0pCkBA
IC01NDMsNyArNTQzLDcgQEAgcHJvdGVjdGVkOgogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBSZXRhaW5QdHI8QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IG1fd3JhcHBlcjsKLSNlbGlm
IFBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKFdJTkNFKQorI2VsaWYgUExBVEZPUk0oV0lOKSAm
JiAhT1MoV0lOQ0UpCiAgICAgQ09NUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dy
YXBwZXI7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgQXRrT2JqZWN0KiBtX3dyYXBwZXI7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9TZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL2RvbS9T
ZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDEwIEBACiAKIC8v
IENvbmZpZ3VyZSBwbGF0Zm9ybS1zcGVjaWZpYyBiZWhhdmlvciB3aGVuIGZvY3VzZWQgcG9wLXVw
IHJlY2VpdmVzIGFycm93L3NwYWNlL3JldHVybiBrZXlzdHJva2UuCiAvLyAoUExBVEZPUk0oTUFD
KSBhbmQgUExBVEZPUk0oR1RLKSBhcmUgYWx3YXlzIGZhbHNlIGluIENocm9taXVtLCBoZW5jZSB0
aGUgZXh0cmEgdGVzdHMuKQotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVN
KSAmJiBQTEFURk9STShEQVJXSU4pKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogI2RlZmluZSBBUlJPV19LRVlTX1BPUF9NRU5VIDEKICNk
ZWZpbmUgU1BBQ0VfT1JfUkVUVVJOX1BPUF9NRU5VIDAKLSNlbGlmIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShMSU5VWCkpCisjZWxpZiBQTEFURk9STShH
VEspIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoTElOVVgpKQogI2RlZmluZSBBUlJPV19L
RVlTX1BPUF9NRU5VIDAKICNkZWZpbmUgU1BBQ0VfT1JfUkVUVVJOX1BPUF9NRU5VIDEKICNlbHNl
CkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2
ZW50SAogICAgICAgICAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25TdGF0ZSh0cnVlKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYm9vbCBtdWx0aVNlbGVjdEtleVByZXNzZWQgPSBmYWxz
ZTsKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0o
REFSV0lOKSkKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1Mo
REFSV0lOKSkKICAgICAgICAgICAgIG11bHRpU2VsZWN0S2V5UHJlc3NlZCA9IG1vdXNlRXZlbnQt
Pm1ldGFLZXkoKTsKICNlbHNlCiAgICAgICAgICAgICBtdWx0aVNlbGVjdEtleVByZXNzZWQgPSBt
b3VzZUV2ZW50LT5jdHJsS2V5KCk7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3
IEBAIGNvbnN0IFN0cmluZyYgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpwbGEKICNlbHNlCiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIm1hYy1sZW9wYXJk
IikpOwogI2VuZGlmCi0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5ET1dTKQog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwbGF0Zm9ybSwgKCJ3aW5kb3dz
IikpOwogI2Vsc2UKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcGxhdGZv
cm0sICgidW5rbm93biIpKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCShyZXZpc2lvbiA1Mjc4
MikKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FjaGVkRm9udC5o
IgogCi0jaWYgUExBVEZPUk0oQ0cpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8
IChQTEFURk9STShDSFJPTUlVTSkgJiYgKFBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oTElO
VVgpKSkgfHwgUExBVEZPUk0oSEFJS1UpIHx8IFBMQVRGT1JNKFdJTkNFKQorI2lmIFBMQVRGT1JN
KENHKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oQ0hST01J
VU0pICYmIChPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkpKSB8fCBQTEFURk9STShIQUlLVSkgfHwg
T1MoV0lOQ0UpCiAjZGVmaW5lIFNUT1JFX0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKICNlbmRp
ZgogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCShyZXZpc2lv
biA1Mjc4MikKKysrIFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUg
PFFEYXRlVGltZT4KIC8vIE9uIFdpbmRvd3MsIHVzZSB0aGUgdGhyZWFkc2FmZSAqX3IgZnVuY3Rp
b25zIHByb3ZpZGVkIGJ5IHB0aHJlYWQuCi0jZWxpZiBQTEFURk9STShXSU5fT1MpICYmIChVU0Uo
UFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVBRF9IKSkKKyNlbGlmIE9TKFdJTkRPV1MpICYmIChVU0Uo
UFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVBRF9IKSkKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5k
aWYKIApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdG0gKmxvY2FsVGltZVF0KGNv
bnN0IHRpbWUKIH0KIAogI2RlZmluZSBsb2NhbHRpbWVfcih4LCB5KSBsb2NhbFRpbWVRdCh4LCB5
KQotI2VsaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhZGVmaW5lZChsb2NhbHRpbWVfcikKKyNlbGlm
IE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKGxvY2FsdGltZV9yKQogI2lmIGRlZmluZWQoX01TQ19W
RVIpICYmIChfTVNDX1ZFUiA+PSAxNDAwKSAKICNkZWZpbmUgbG9jYWx0aW1lX3IoeCwgeSkgbG9j
YWx0aW1lX3MoKHkpLCAoeCkpCiAjZWxzZSAvKiAhX01TQ19WRVIgKi8gCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9s
b2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFEYXRlVGltZT4KIC8vIE9uIFdpbmRv
d3MsIHVzZSB0aGUgdGhyZWFkc2FmZSAqX3IgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHB0aHJlYWQu
Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpICYmIChVU0UoUFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVB
RF9IKSkKKyNlbGlmIE9TKFdJTkRPV1MpICYmIChVU0UoUFRIUkVBRFMpIHx8IEhBVkUoUFRIUkVB
RF9IKSkKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIApAQCAtNDksNyArNDksNyBAQCBz
dGF0aWMgc3RydWN0IHRtICpnbXRpbWVRdChjb25zdCB0aW1lX3QgCiB9CiAKICNkZWZpbmUgZ210
aW1lX3IoeCwgeSkgZ210aW1lUXQoeCwgeSkKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgIWRl
ZmluZWQoZ210aW1lX3IpCisjZWxpZiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChnbXRpbWVfcikK
ICNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgCiAjZGVmaW5lIGdt
dGltZV9yKHgsIHkpIGdtdGltZV9zKCh5KSwgKHgpKQogI2Vsc2UgLyogIV9NU0NfVkVSICovIApJ
bmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3ODYsNyArMTc4Niw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY28KICAgICByZXR1cm4gc3dhbGxv
d0V2ZW50OwogfQogCi0jaWYgIVBMQVRGT1JNKEdUSykgJiYgIShQTEFURk9STShDSFJPTUlVTSkg
JiYgUExBVEZPUk0oTElOVVgpKQorI2lmICFQTEFURk9STShHVEspICYmICEoUExBVEZPUk0oQ0hS
T01JVU0pICYmIE9TKExJTlVYKSkKIGJvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGRUdXJuVmVydGlj
YWxUaWNrc0ludG9Ib3Jpem9udGFsKGNvbnN0IEhpdFRlc3RSZXN1bHQmKSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBACiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9S
TShEQVJXSU4pKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBP
UyhEQVJXSU4pKQogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2VuZGlmCiAKQEAgLTkyMiwx
MiArOTIyLDEyIEBAIGJvb2wgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kb2MtPmluRGVzaWduTW9kZSgpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikpCisjaWYgUExBVEZPUk0oTUFD
KSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiBjb25zdCBzaG9ydCBlbmFi
bGVSb21hbktleWJvYXJkc09ubHkgPSAtMjM7CiAjZW5kaWYKIHZvaWQgRnJhbWU6OnNldFVzZVNl
Y3VyZUtleWJvYXJkRW50cnkoYm9vbCBlbmFibGUpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCAo
UExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikpCisjaWYgUExBVEZPUk0oTUFD
KSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgaWYgKGVuYWJsZSA9
PSBJc1NlY3VyZUV2ZW50SW5wdXRFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
ZW5hYmxlKSB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysr
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2lmIFBMQVRGT1JNKExJTlVYKQorI2lmIE9TKExJTlVYKQogI2lu
Y2x1ZGUgInN5cy91dHNuYW1lLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2Vu
ZGlmCkBAIC0zOSw5ICszOSw5IEBACiAjZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JN
ICJNYWNQUEMiCiAjZWxpZiBQTEFURk9STShNQUMpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KSkKICNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gIk1hY0ludGVsIgotI2VsaWYg
UExBVEZPUk0oV0lOX09TKQorI2VsaWYgT1MoV0lORE9XUykKICNkZWZpbmUgV0VCQ09SRV9OQVZJ
R0FUT1JfUExBVEZPUk0gIldpbjMyIgotI2VsaWYgUExBVEZPUk0oU1lNQklBTikKKyNlbGlmIE9T
KFNZTUJJQU4pCiAjZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNICJTeW1iaWFuIgog
I2Vsc2UKICNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gIiIKQEAgLTg1LDcgKzg1
LDcgQEAgU3RyaW5nIE5hdmlnYXRvckJhc2U6OmFwcFZlcnNpb24oKSBjb25zdAogCiBTdHJpbmcg
TmF2aWdhdG9yQmFzZTo6cGxhdGZvcm0oKSBjb25zdAogewotI2lmIFBMQVRGT1JNKExJTlVYKQor
I2lmIE9TKExJTlVYKQogICAgIGlmIChTdHJpbmcoIiIpICE9IFdFQkNPUkVfTkFWSUdBVE9SX1BM
QVRGT1JNKQogICAgICAgICByZXR1cm4gV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk07CiAgICAg
c3RydWN0IHV0c25hbWUgb3NuYW1lOwpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUv
cGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJT
Y2hlZHVsZVBhaXIuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0o
V1gpICYmIFBMQVRGT1JNKFdJTl9PUykpIHx8IChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRX1dT
X1dJTikpCisjaWYgUExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oV1gpICYmIE9TKFdJTkRPV1Mp
KSB8fCAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUV9XU19XSU4pKQogdHlwZWRlZiBzdHJ1Y3Qg
SElOU1RBTkNFX18qIEhJTlNUQU5DRTsKICNlbmRpZgogCkBAIC0yMDQsNyArMjA0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIq
KTsKICAgICAgICAgSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnZ2VyOyB9CiAKLSNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShXWCkgJiYgUExBVEZP
Uk0oV0lOX09TKSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFfV1NfV0lOKSkKKyNpZiBQ
TEFURk9STShXSU4pIHx8IChQTEFURk9STShXWCkgJiYgT1MoV0lORE9XUykpIHx8IChQTEFURk9S
TShRVCkgJiYgZGVmaW5lZChRX1dTX1dJTikpCiAgICAgICAgIC8vIFRoZSBnbG9iYWwgRExMIG9y
IGFwcGxpY2F0aW9uIGluc3RhbmNlIHVzZWQgZm9yIGFsbCB3aW5kb3dzLgogICAgICAgICBzdGF0
aWMgdm9pZCBzZXRJbnN0YW5jZUhhbmRsZShISU5TVEFOQ0UgaW5zdGFuY2VIYW5kbGUpIHsgc19p
bnN0YW5jZUhhbmRsZSA9IGluc3RhbmNlSGFuZGxlOyB9CiAgICAgICAgIHN0YXRpYyBISU5TVEFO
Q0UgaW5zdGFuY2VIYW5kbGUoKSB7IHJldHVybiBzX2luc3RhbmNlSGFuZGxlOyB9CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBzZXROZWVkc1JlYXBw
bHlTdHlsZXNJbkFsbEZyCiBib29sIFNldHRpbmdzOjpnU2hvdWxkUGFpbnROYXRpdmVDb250cm9s
cyA9IHRydWU7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKFdJTl9P
UykgJiYgUExBVEZPUk0oV1gpKQorI2lmIFBMQVRGT1JNKFdJTikgfHwgKE9TKFdJTkRPV1MpICYm
IFBMQVRGT1JNKFdYKSkKIGJvb2wgU2V0dGluZ3M6OmdTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRp
bWVycyA9IHRydWU7CiAjZW5kaWYKIApAQCAtMTA0LDcgKzEwNCw3IEBAIFNldHRpbmdzOjpTZXR0
aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV91c2VzRW5jb2RpbmdEZXRlY3RvcihmYWxzZSkKICAg
ICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2UpCiAgICAgLCBtX2VkaXRpbmdC
ZWhhdmlvcigKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExB
VEZPUk0oREFSV0lOKSkKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkg
JiYgT1MoREFSV0lOKSkKICAgICAgICAgLy8gKFBMQVRGT1JNKE1BQykgaXMgYWx3YXlzIGZhbHNl
IGluIENocm9taXVtLCBoZW5jZSB0aGUgZXh0cmEgY29uZGl0aW9uLikKICAgICAgICAgRWRpdGlu
Z01hY0JlaGF2aW9yCiAjZWxzZQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU2V0dGluZ3M6OnNl
dFBsdWdpbkFsbG93ZWRSdW5UaW1lKHUKICAgICBtX3BhZ2UtPnBsdWdpbkFsbG93ZWRSdW5UaW1l
Q2hhbmdlZCgpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oV0lOX09TKSAm
JiBQTEFURk9STShXWCkpCisjaWYgUExBVEZPUk0oV0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExB
VEZPUk0oV1gpKQogdm9pZCBTZXR0aW5nczo6c2V0U2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1l
cnMoYm9vbCBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycykKIHsKICAgICBnU2hvdWxkVXNl
SGlnaFJlc29sdXRpb25UaW1lcnMgPSBzaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVyczsKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsNyArMjYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wpOwogICAg
ICAgICBib29sIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9leHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDsgfQogCi0jaWYgUExBVEZPUk0o
V0lOKSB8fCAoUExBVEZPUk0oV0lOX09TKSAmJiBQTEFURk9STShXWCkpCisjaWYgUExBVEZPUk0o
V0lOKSB8fCAoT1MoV0lORE9XUykgJiYgUExBVEZPUk0oV1gpKQogICAgICAgICBzdGF0aWMgdm9p
ZCBzZXRTaG91bGRVc2VIaWdoUmVzb2x1dGlvblRpbWVycyhib29sKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoKSB7IHJldHVybiBnU2hvdWxkVXNl
SGlnaFJlc29sdXRpb25UaW1lcnM7IH0KICNlbmRpZgpAQCAtMzUwLDcgKzM1MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9v
bCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFdJTikg
fHwgKFBMQVRGT1JNKFdJTl9PUykgJiYgUExBVEZPUk0oV1gpKQorI2lmIFBMQVRGT1JNKFdJTikg
fHwgKE9TKFdJTkRPV1MpICYmIFBMQVRGT1JNKFdYKSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1No
b3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzOwogI2VuZGlmCiAgICAgfTsKSW5kZXg6IFdlYkNv
cmUvcGFnZS9jaHJvbWl1bS9EcmFnQ29udHJvbGxlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vRHJhZ0NvbnRyb2xsZXJDaHJvbWl1bS5jcHAJKHJldmlz
aW9uIDUyNzgyKQorKysgV2ViQ29yZS9wYWdlL2Nocm9taXVtL0RyYWdDb250cm9sbGVyQ2hyb21p
dW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiU2VsZWN0
aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFBMQVRGT1JN
KFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgog
CkBAIC01Nyw3ICs1Nyw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVy
YXQKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBub3QgYmUgT1Mgc3BlY2lmaWMuICBEZWxlZ2F0ZSB0byB0aGUgZW1iZWRk
ZXIgaW5zdGVhZC4KLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICBy
ZXR1cm4gOjpHZXRBc3luY0tleVN0YXRlKFZLX0NPTlRST0wpOwogI2Vsc2UKICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vRXZlbnRIYW5kbGVyQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9FdmVudEhhbmRsZXJDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wYWdlL2Nocm9taXVtL0V2ZW50
SGFuZGxlckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lO
KQogY29uc3QgZG91YmxlIEV2ZW50SGFuZGxlcjo6VGV4dERyYWdEZWxheSA9IDAuMTU7CiAjZWxz
ZQogY29uc3QgZG91YmxlIEV2ZW50SGFuZGxlcjo6VGV4dERyYWdEZWxheSA9IDAuMDsKQEAgLTE0
NywxNCArMTQ3LDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXYK
IAogdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogewotI2lmIFBM
QVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6Q3RybEtleSB8IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6QWx0S2V5OwogI2Vsc2UK
ICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CiAjZW5kaWYKIH0KIAot
I2lmIFBMQVRGT1JNKExJTlVYKQorI2lmIE9TKExJTlVYKQogLy8gR1RLKyBtdXN0IHNjcm9sbCBo
b3Jpem9udGFsbHkgaWYgdGhlIG1vdXNlIHBvaW50ZXIgaXMgb24gdG9wIG9mIHRoZQogLy8gaG9y
aXpvbnRhbCBzY3JvbGxiYXIgd2hpbGUgc2Nyb2xsaW5nIHdpdGggdGhlIHdoZWVsLgogLy8gVGhp
cyBjb2RlIGNvbWVzIGZyb20gZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAuCkluZGV4OiBXZWJDb3Jl
L3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvCiAKIFBhc3NSZWZQdHI8
Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QK
IHsKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICByZXR1cm4gMDsKICNl
bHNlCiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVjdDsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3Rl
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBACiAKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ0ZEYXRhKiBDRkRhdGFSZWY7CiAKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1Mo
V0lORE9XUykKIC8vIFRoZXNlIGFyZSB0byBhdm9pZCBpbmNsdWRpbmcgPHdpbmJhc2UuaD4gaW4g
YSBoZWFkZXIgZm9yIENocm9taXVtCiB0eXBlZGVmIHZvaWQgKkhBTkRMRTsKIC8vIEFzc3VtaW5n
IFNUUklDVApAQCAtNjcsNyArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU3Ry
aW5nOwogCiAvLyBQbGF0Zm9ybU1vZHVsZQotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhX
SU5ET1dTKQogdHlwZWRlZiBITU9EVUxFIFBsYXRmb3JtTW9kdWxlOwogI2VsaWYgUExBVEZPUk0o
UVQpCiAjaWYgZGVmaW5lZChRX1dTX01BQykKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybU1vZHVsZTsKICNlbmRpZgogCiAvLyBQbGF0Zm9ybU1vZHVsZVZlcnNpb24KLSNp
ZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKIHN0cnVjdCBQbGF0Zm9ybU1vZHVs
ZVZlcnNpb24gewogICAgIHVuc2lnbmVkIGxlYXN0U2lnOwogICAgIHVuc2lnbmVkIG1vc3RTaWc7
CkBAIC0xMTAsNyArMTEwLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBQbGF0Zm9ybU1vZHVsZVZlcnNp
b247CiAjaWYgUExBVEZPUk0oUVQpCiB0eXBlZGVmIFFGaWxlKiBQbGF0Zm9ybUZpbGVIYW5kbGU7
CiBjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7
Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5ET1dTKQogdHlwZWRlZiBIQU5E
TEUgUGxhdGZvcm1GaWxlSGFuZGxlOwogLy8gRklYTUU6IC0xIGlzIElOVkFMSURfSEFORExFX1ZB
TFVFLCBkZWZpbmVkIGluIDx3aW5iYXNlLmg+LiBDaHJvbWl1bSB0cmllcyB0bwogLy8gYXZvaWQg
dXNpbmcgV2luZG93cyBoZWFkZXJzIGluIGhlYWRlcnMuICBXZSdkIHJhdGhlciBtb3ZlIHRoaXMg
aW50byB0aGUgLmNwcC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vS2V5Ym9hcmRDb2Rlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vS2V5Ym9hcmRDb2Rlcy5oCShyZXZpc2lvbiA1
Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vS2V5Ym9hcmRDb2Rlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw3ICszMyw3IEBACiAvLyBGSVhNRTogV2Ugc2hvdWxkIGdldCByaWQgb2YgdGhlc2Ug
Q2hyb21pdW0tcmVsYXRlZCBpZmRlZnMuCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAKLSNpZiBQ
TEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlICJLZXlib2FyZENvZGVz
V2luLmgiCiAjZWxzZQogI2luY2x1ZGUgIktleWJvYXJkQ29kZXNQb3NpeC5oIgpAQCAtNDMsNyAr
NDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhUExBVEZPUk0oV0lOX09TKQor
I2lmICFPUyhXSU5ET1dTKQogLy8gVktfTEJVVFRPTiAoMDEpIExlZnQgbW91c2UgYnV0dG9uCiAv
LyBWS19SQlVUVE9OICgwMikgUmlnaHQgbW91c2UgYnV0dG9uCiAvLyBWS19DQU5DRUwgKDAzKSBD
b250cm9sLWJyZWFrIHByb2Nlc3NpbmcKQEAgLTE2MCw3ICsxNjAsNyBAQCBjb25zdCBpbnQgVktf
REVMRVRFID0gMHgyRTsKIC8vIFZLX0hFTFAgKDJGKSBIRUxQIGtleQogY29uc3QgaW50IFZLX0hF
TFAgPSAweDJGOwogCi0jZW5kaWYgLy8gUExBVEZPUk0oV0lOX09TKQorI2VuZGlmIC8vIE9TKFdJ
TkRPV1MpCiAKIC8vICgzMCkgMCBrZXkKIGNvbnN0IGludCBWS18wID0gMHgzMDsKQEAgLTI3MSw3
ICsyNzEsNyBAQCBjb25zdCBpbnQgVktfWSA9IDB4NTk7CiAvLyAoNUEpIFoga2V5CiBjb25zdCBp
bnQgVktfWiA9IDB4NUE7CiAKLSNpZiAhUExBVEZPUk0oV0lOX09TKQorI2lmICFPUyhXSU5ET1dT
KQogCiAvLyBWS19MV0lOICg1QikgTGVmdCBXaW5kb3dzIGtleSAoTWljcm9zb2Z0IE5hdHVyYWwg
a2V5Ym9hcmQpCiBjb25zdCBpbnQgVktfTFdJTiA9IDB4NUI7CkBAIC00ODMsOSArNDgzLDkgQEAg
Y29uc3QgaW50IFZLX01FRElBX0xBVU5DSF9BUFAxID0gMHhCNjsKIC8vIFZLX0xBVU5DSF9BUFAy
IChCNykgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAyIGtleQogY29uc3QgaW50
IFZLX01FRElBX0xBVU5DSF9BUFAyID0gMHhCNzsKIAotI2VuZGlmIC8vICFQTEFURk9STShXSU5f
T1MpCisjZW5kaWYgLy8gIU9TKFdJTkRPV1MpCiAKLSNpZiAhUExBVEZPUk0oV0lOX09TKSB8fCBQ
TEFURk9STShXSU5DRSkKKyNpZiAhT1MoV0lORE9XUykgfHwgT1MoV0lOQ0UpCiAKIC8vIFZLX09F
TV8xIChCQSkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBi
eSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJk
LCB0aGUgJzs6JyBrZXkKIGNvbnN0IGludCBWS19PRU1fMSA9IDB4QkE7CkBAIC01MjMsOSArNTIz
LDkgQEAgY29uc3QgaW50IFZLX09FTV83ID0gMHhERTsKIC8vIFZLX09FTV84IChERikgVXNlZCBm
b3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4KIGNv
bnN0IGludCBWS19PRU1fOCA9IDB4REY7CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oV0lOX09TKSB8
fCBQTEFURk9STShXSU5DRSkKKyNlbmRpZiAvLyAhT1MoV0lORE9XUykgfHwgT1MoV0lOQ0UpCiAK
LSNpZiAhUExBVEZPUk0oV0lOX09TKQorI2lmICFPUyhXSU5ET1dTKQogCiAvLyBWS19PRU1fMTAy
IChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFuZ2xlIGJyYWNrZXQga2V5IG9yIHRo
ZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtleWJvYXJkCiBjb25zdCBpbnQgVktf
T0VNXzEwMiA9IDB4RTI7CkBAIC01NjUsNyArNTY1LDcgQEAgY29uc3QgaW50IFZLX09FTV9DTEVB
UiA9IDB4RkU7CiAKIGNvbnN0IGludCBWS19VTktOT1dOID0gMDsKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKFdJTl9PUykKKyNlbmRpZiAvLyBPUyhXSU5ET1dTKQogCiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9QdXJnZWFibGVCdWZmZXIuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L1B1cmdlYWJsZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBTdGF0ZSBtX3N0YXRlOwogICAgIH07CiAK
LSNpZiAhUExBVEZPUk0oREFSV0lOKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmICFPUyhEQVJXSU4pIHx8IGRlZmluZWQo
QlVJTERJTkdfT05fVElHRVIpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAgICAg
aW5saW5lIFB1cmdlYWJsZUJ1ZmZlciogUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGUoY29uc3QgY2hh
ciosIHNpemVfdCkgeyByZXR1cm4gMDsgfQogICAgIGlubGluZSBQdXJnZWFibGVCdWZmZXI6On5Q
dXJnZWFibGVCdWZmZXIoKSB7IH0KICAgICBpbmxpbmUgY29uc3QgY2hhciogUHVyZ2VhYmxlQnVm
ZmVyOjpkYXRhKCkgY29uc3QgeyByZXR1cm4gMDsgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2hyb21pdW1CcmlkZ2UuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTlBPYmplY3QgTlBPYmplY3Q7CiB0eXBlZGVmIHN0cnVj
dCBfTlBQIE5QUF90OwogdHlwZWRlZiBOUFBfdCogTlBQOwogCi0jaWYgUExBVEZPUk0oV0lOX09T
KQorI2lmIE9TKFdJTkRPV1MpCiB0eXBlZGVmIHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKICNlbmRp
ZgogCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0
YXRpYyBLVVJMIGZpbGVQYXRoVG9VUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICAgICAgLy8gRm9u
dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICAgICAg
c3RhdGljIGJvb2wgZW5zdXJlRm9udExvYWRlZChIRk9OVCBmb250KTsKICNlbmRpZgotI2lmIFBM
QVRGT1JNKExJTlVYKQorI2lmIE9TKExJTlVYKQogICAgICAgICBzdGF0aWMgU3RyaW5nIGdldEZv
bnRGYW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgc2l6ZV90IG51bUNoYXJhY3RlcnMp
OwogI2VuZGlmCiAKQEAgLTE4OCw3ICsxODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHN0YXRpYyBkb3VibGUgY3VycmVudFRpbWUoKTsKIAogICAgICAgICAvLyBUaGVtaW5nIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAgICAgICBzdGF0aWMg
dm9pZCBwYWludEJ1dHRvbigKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCosIGludCBwYXJ0
LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IEludFJlY3QmKTsKICAgICAgICAg
c3RhdGljIHZvaWQgcGFpbnRNZW51TGlzdCgKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjMsMTMgKzM2MywxMyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdl
KFJhbmdlCiAKICAgICBtX2RhdGFPYmplY3QtPnRleHRIdG1sID0gY3JlYXRlTWFya3VwKHNlbGVj
dGVkUmFuZ2UsIDAsCiAgICAgICAgIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwotI2lmIFBMQVRG
T1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAgICAgbV9kYXRhT2JqZWN0LT50ZXh0SHRtbCA9
IFN0cmluZygiPG1ldGEgY2hhcnNldD0ndXRmLTgnIGlkPSd3ZWJraXQtaW50ZXJjaGFuZ2UtY2hh
cnNldCc+IikgKyBtX2RhdGFPYmplY3QtPnRleHRIdG1sOwogI2VuZGlmCiAgICAgbV9kYXRhT2Jq
ZWN0LT5odG1sQmFzZVVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIAogICAgIFN0cmlu
ZyBzdHIgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0KCk7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lm
IE9TKFdJTkRPV1MpCiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVz
KHN0cik7CiAjZW5kaWYKICAgICByZXBsYWNlTkJTUFdpdGhTcGFjZShzdHIpOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRVdGlsaXRpZXNDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRVdGlsaXRpZXND
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DbGlwYm9hcmRVdGlsaXRpZXNDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oV0lOX09TKQor
I2lmIE9TKFdJTkRPV1MpCiB2b2lkIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXds
aW5lcyhTdHJpbmcmIHN0cikKIHsKICAgICBzdGF0aWMgY29uc3QgVUNoYXIgTmV3bGluZSA9ICdc
bic7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0No
cm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9h
cmRVdGlsaXRpZXNDaHJvbWl1bS5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLVVJMOwogY2xhc3Mg
U3RyaW5nOwogCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiB2b2lkIHJl
cGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhTdHJpbmcmKTsKICNlbmRpZgog
dm9pZCByZXBsYWNlTkJTUFdpdGhTcGFjZShTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDUyNzgy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxMyArODIsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXRTZWxl
Y3Rpb25Nb2RlKGJvb2wgcwogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSog
c2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQog
ewogICAgIFN0cmluZyBodG1sID0gY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90
YXRlRm9ySW50ZXJjaGFuZ2UpOwotI2lmIFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4p
CiAgICAgaHRtbCA9IFN0cmluZygiPG1ldGEgY2hhcnNldD0ndXRmLTgnIGlkPSd3ZWJraXQtaW50
ZXJjaGFuZ2UtY2hhcnNldCc+IikgKyBodG1sOwogI2VuZGlmCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgS1VSTCB1cmwgPSBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYykt
PmRvY3VtZW50KCktPnVybCgpOwogICAgIFN0cmluZyBwbGFpblRleHQgPSBmcmFtZS0+c2VsZWN0
ZWRUZXh0KCk7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgcmVw
bGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKHBsYWluVGV4dCk7CiAjZW5kaWYK
ICAgICByZXBsYWNlTkJTUFdpdGhTcGFjZShwbGFpblRleHQpOwpAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzCiAKIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotI2lmIFBMQVRGT1JNKFdJ
Tl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAgIFN0cmluZyBwbGFpblRleHQodGV4dCk7CiAgICAg
cmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKHBsYWluVGV4dCk7CiAgICAg
Q2hyb21pdW1CcmlkZ2U6OmNsaXBib2FyZFdyaXRlUGxhaW5UZXh0KHBsYWluVGV4dCk7CkBAIC0x
NzAsNyArMTcwLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOgog
ICAgICAgICBTdHJpbmcgbWFya3VwOwogICAgICAgICBLVVJMIHNyY1VSTDsKICAgICAgICAgQ2hy
b21pdW1CcmlkZ2U6OmNsaXBib2FyZFJlYWRIVE1MKGJ1ZmZlciwgJm1hcmt1cCwgJnNyY1VSTCk7
Ci0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikKICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGZvcmNlVXRmOFN0cmluZywgKCI8bWV0YSBjaGFyc2V0
PSd1dGYtOCcgaWQ9J3dlYmtpdC1pbnRlcmNoYW5nZS1jaGFyc2V0Jz4iKSk7CiAgICAgICAgIGlm
IChtYXJrdXAuc3RhcnRzV2l0aChmb3JjZVV0ZjhTdHJpbmcpKQogICAgICAgICAgICAgbWFya3Vw
ID0gbWFya3VwLnN1YnN0cmluZyhmb3JjZVV0ZjhTdHJpbmcubGVuZ3RoKCkpOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dT
KQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbGlmIFBMQVRGT1JNKERBUldJTikKKyNlbGlmIE9T
KERBUldJTikKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNlbHNlCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFR5cGUg
dHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQogewotI2lmIFBMQVRGT1JNKFdJ
Tl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAgIC8vIE5vIEtleURvd24gZXZlbnRzIG9uIFdpbmRv
d3MgdG8gZGlzYW1iaWd1YXRlLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKQEAg
LTU2LDcgKzU2LDcgQEAgdm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IFN0cmluZygpOwogICAgICAg
ICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IDA7Ci0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lm
IE9TKERBUldJTikKICAgICAgICAgaWYgKG1fdGV4dC5sZW5ndGgoKSA9PSAxICYmIChtX3RleHRb
MFVdID49IDB4RjcwMCAmJiBtX3RleHRbMFVdIDw9IDB4RjdGRikpIHsKICAgICAgICAgICAgIC8v
IEFjY29yZGluZyB0byBOU0V2ZW50cy5oLCBPcGVuU3RlcCByZXNlcnZlcyB0aGUgcmFuZ2UgMHhG
NzAwLTB4RjhGRiBmb3IgZnVuY3Rpb24ga2V5cy4gSG93ZXZlciwgc29tZSBhY3R1YWwgcHJpdmF0
ZSB1c2UgY2hhcmFjdGVycwogICAgICAgICAgICAgLy8gaGFwcGVuIHRvIGJlIGluIHRoaXMgcmFu
Z2UsIGUuZy4gdGhlIEFwcGxlIGxvZ28gKE9wdGlvbitTaGlmdCtLKS4KQEAgLTcxLDEwICs3MSwx
MCBAQCB2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlCiAKIGJvb2wgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCiB7Ci0jaWYgUExBVEZP
Uk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBldmVu
IHdvcmsgaW5zaWRlIHRoZSBzYW5kYm94PwogICAgIHJldHVybiBHZXRLZXlTdGF0ZShWS19DQVBJ
VEFMKSAmIDE7Ci0jZWxpZiBQTEFURk9STShEQVJXSU4pCisjZWxpZiBPUyhEQVJXSU4pCiAgICAg
cmV0dXJuIEdldEN1cnJlbnRLZXlNb2RpZmllcnMoKSAmIGFscGhhTG9jazsKICNlbHNlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM1
LDcgKzExMzUsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICAvLyBDYWxjdWxh
dGUgc2Nyb2xsIGJhciB3aWR0aC4KICAgICBpbnQgd2luZG93SGVpZ2h0ID0gMDsKIAotI2lmIFBM
QVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAgICAgLy8gU2V0IHRoZSBwb3B1cCdzIHdp
bmRvdyB0byBjb250YWluIGFsbCBhdmFpbGFibGUgaXRlbXMgb24gTWFjIG9ubHksIHdoaWNoCiAg
ICAgLy8gdXNlcyBuYXRpdmUgY29udHJvbHMgdGhhdCBtYW5hZ2UgdGhlaXIgb3duIHNjcm9sbGlu
Zy4gVGhpcyBhbGxvd3MgaGl0CiAgICAgLy8gdGVzdGluZyB0byB3b3JrIHdoZW4gc2VsZWN0aW5n
IGl0ZW1zIGluIHBvcHVwcyB0aGF0IGhhdmUgbW9yZSBtZW51IGVudHJpZXMKQEAgLTExNDcsNyAr
MTE0Nyw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpsYXlvdXQoKQogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBtX3Zpc2libGVSb3dzOyArK2kpIHsKICAgICAgICAgaW50IHJvd0hlaWdodCA9IGdl
dFJvd0hlaWdodChpKTsKLSNpZiAhUExBVEZPUk0oREFSV0lOKQorI2lmICFPUyhEQVJXSU4pCiAg
ICAgICAgIC8vIE9ubHkgY2xpcCB0aGUgd2luZG93IGhlaWdodCBmb3Igbm9uLU1hYyBwbGF0Zm9y
bXMuCiAgICAgICAgIGlmICh3aW5kb3dIZWlnaHQgKyByb3dIZWlnaHQgPiBrTWF4SGVpZ2h0KSB7
CiAgICAgICAgICAgICBtX3Zpc2libGVSb3dzID0gaTsKQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZv
aWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEYKIHsKICAgICBpZiAoIXAucG9w
dXApCiAgICAgICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKGNsaWVudCgpLCBk
cm9wRG93blNldHRpbmdzKTsKLSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQog
ICAgIHAucG9wdXAtPnNob3dFeHRlcm5hbChyLCB2LCBpbmRleCk7CiAjZWxzZQogICAgIHAucG9w
dXAtPnNob3cociwgdiwgaW5kZXgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oUVQpICYmIFBMQVRGT1JNKFdJTl9PUykpCisjaWYg
UExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oUVQpICYmIE9TKFdJTkRPV1MpKQogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoSEJJVE1BUCk7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShXSU4pCkBAIC0xNjksNyArMTY5LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvcik7CiAKLSNpZiBQTEFURk9STShXWCkgfHwgKFBMQVRGT1JNKFdJ
TkNFKSAmJiAhUExBVEZPUk0oUVQpKQorI2lmIFBMQVRGT1JNKFdYKSB8fCAoT1MoV0lOQ0UpICYm
ICFQTEFURk9STShRVCkpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogI2VuZGlmCkBAIC0yMzYsNyAr
MjM2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAg
ICAgICAgICAgICAvLyBXSU5DRSBQT1JUOiBjaGVja0ZvclNvbGlkQ29sb3IoKSBkb2Vzbid0IHNl
dCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIHVudGlsCiAgICAgICAgICAgICAvLyBpdCBnZXRzIGVu
b3VnaCBpbmZvcm1hdGlvbiB0byBtYWtlIGZpbmFsIGRlY2lzaW9uLgotI2lmICFQTEFURk9STShX
SU5DRSkKKyNpZiAhT1MoV0lOQ0UpCiAgICAgICAgICAgICBBU1NFUlQobV9jaGVja2VkRm9yU29s
aWRDb2xvcik7CiAjZW5kaWYKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFBvaW50LmgJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIHR5cGVk
ZWYgc3RydWN0IENHUG9pbnQgQ0dQb2ludDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8
fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikpCisjaWYgUExBVEZPUk0o
TUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAjaWZkZWYgTlNHRU9N
RVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKIHR5cGVkZWYgc3RydWN0IENHUG9p
bnQgTlNQb2ludDsKICNlbHNlCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgKFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NH
R0VPTUVUUllfVFlQRVMpKSBcCi0gICAgICAgIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExB
VEZPUk0oREFSV0lOKSkKKyAgICAgICAgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJX
SU4pKQogICAgIEZsb2F0UG9pbnQoY29uc3QgTlNQb2ludCYpOwogICAgIG9wZXJhdG9yIE5TUG9p
bnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVj
dC5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRS
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIHR5cGVkZWYgc3RydWN0IENH
UmVjdCBDR1JlY3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4pKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FN
RV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVjdCBDR1JlY3QgTlNSZWN0OwogI2Vs
c2UKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIChQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVT
KSkgXAotICAgICAgICB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikp
CisgICAgICAgIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICBGbG9h
dFJlY3QoY29uc3QgTlNSZWN0Jik7CiAgICAgb3BlcmF0b3IgTlNSZWN0KCkgY29uc3Q7CiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAkocmV2aXNpb24gNTI3
ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiB0eXBlZGVmIHN0cnVjdCBDR1NpemUgQ0dTaXplOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZP
Uk0oREFSV0lOKSkKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYg
T1MoREFSV0lOKSkKICNpZmRlZiBOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9U
WVBFUwogdHlwZWRlZiBzdHJ1Y3QgQ0dTaXplIE5TU2l6ZTsKICNlbHNlCkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoTlNH
RU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpKSBcCi0gICAgICAgIHx8IChQ
TEFURk9STShDSFJPTUlVTSkgJiYgUExBVEZPUk0oREFSV0lOKSkKKyAgICAgICAgfHwgKFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogICAgIGV4cGxpY2l0IEZsb2F0U2l6ZShjb25z
dCBOU1NpemUgJik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5
CiAgICAgb3BlcmF0b3IgTlNTaXplKCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyAr
MTM5LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRlRmFtaQogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjb3VyaWVyTmV3LCAoIkNvdXJpZXIgTmV3
IikpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBjb3VyaWVyKSkKICAg
ICAgICAgcmV0dXJuIGNvdXJpZXJOZXc7Ci0jaWYgIVBMQVRGT1JNKFdJTl9PUykKKyNpZiAhT1Mo
V0lORE9XUykKICAgICAvLyBPbiBXaW5kb3dzLCBDb3VyaWVyIE5ldyAodHJ1ZXR5cGUgZm9udCkg
aXMgYWx3YXlzIHByZXNlbnQgYW5kCiAgICAgLy8gQ291cmllciBpcyBhIGJpdG1hcCBmb250LiBT
bywgd2UgZG9uJ3Qgd2FudCB0byBtYXAgQ291cmllciBOZXcgdG8KICAgICAvLyBDb3VyaWVyLgpA
QCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0ZUZh
bWkKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgaGVsdmV0aWNhKSkKICAg
ICAgICAgcmV0dXJuIGFyaWFsOwogCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRP
V1MpCiAgICAgLy8gT24gV2luZG93cywgYml0bWFwIGZvbnRzIGFyZSBibG9ja2VkIGFsdG9nZXRo
ZXIgc28gdGhhdCB3ZSBoYXZlIHRvIAogICAgIC8vIGFsaWFzIE1TIFNhbnMgU2VyaWYgKGJpdG1h
cCBmb250KSAtPiBNaWNyb3NvZnQgU2FucyBTZXJpZiAodHJ1ZXR5cGUgZm9udCkKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbXNTYW5zLCAoIk1TIFNhbnMgU2VyaWYiKSk7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgJKHJldmlzaW9uIDUyNzgy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gQWxzbyBpbXBsZW1lbnRlZCBieSB0
aGUgcGxhdGZvcm0uCiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKIAotI2lmIFBMQVRGT1JNKFdJ
TkNFKSAmJiAhUExBVEZPUk0oUVQpCisjaWYgT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKICNp
ZiBkZWZpbmVkKElNTEFOR19GT05UX0xJTkspICYmIChJTUxBTkdfRk9OVF9MSU5LID09IDIpCiAg
ICAgSU1MYW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwogI2Vsc2UKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAJKHJldmlzaW9uIDUy
NzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZv
ckNoYXJhY3RlcihVQwogICAgICAgICBHbHlwaERhdGEgZGF0YSA9IGZhbGxiYWNrUGFnZSAmJiBm
YWxsYmFja1BhZ2UtPmZvbnREYXRhRm9yQ2hhcmFjdGVyKGMpID8gZmFsbGJhY2tQYWdlLT5nbHlw
aERhdGFGb3JDaGFyYWN0ZXIoYykgOiBjaGFyYWN0ZXJGb250RGF0YS0+bWlzc2luZ0dseXBoRGF0
YSgpOwogICAgICAgICAvLyBDYWNoZSBpdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRvIHN5c3RlbSBm
YWxsYmFjayBhZ2FpbiBuZXh0IHRpbWUuCiAgICAgICAgIGlmICghdXNlU21hbGxDYXBzRm9udCkg
ewotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogICAgICAgICAgICAgLy8gbWlz
c2luZ0dseXBoRGF0YSByZXR1cm5zIGEgbnVsbCBjaGFyYWN0ZXIsIHdoaWNoIGlzIG5vdCBzdWl0
YWJsZSBmb3IgR0RJIHRvIGRpc3BsYXkuCiAgICAgICAgICAgICAvLyBBbHNvLCBzb21ldGltZXMg
d2UgY2Fubm90IG1hcCBhIGZvbnQgZm9yIHRoZSBjaGFyYWN0ZXIgb24gV0lOQ0UsIGJ1dCBHREkg
Y2FuIHN0aWxsCiAgICAgICAgICAgICAvLyBkaXNwbGF5IHRoZSBjaGFyYWN0ZXIsIHByb2JhYmx5
IGJlY2F1c2UgdGhlIGZvbnQgcGFja2FnZSBpcyBub3QgaW5zdGFsbGVkIGNvcnJlY3RseS4KQEAg
LTE2OSw3ICsxNjksNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVD
CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2VyIHRvIHVzZSB0aGUgbWlzc2luZyBnbHlw
aCBmcm9tIHRoZSBsYXN0IHJlc29ydCBmb250IGluc3RlYWQuCiAgICAgR2x5cGhEYXRhIGRhdGEg
PSBwcmltYXJ5Rm9udCgpLT5taXNzaW5nR2x5cGhEYXRhKCk7CiAgICAgaWYgKCF1c2VTbWFsbENh
cHNGb250KSB7Ci0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgICAgIC8v
IFNlZSBjb21tZW50IGFib3V0IFdJTkNFIEdESSBoYW5kbGluZyBuZWFyIHNldEdseXBoRGF0YUZv
ckNoYXJhY3RlciBhYm92ZS4KICAgICAgICAgcGFnZS0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KGMsIGMsIGRhdGEuZm9udERhdGEpOwogICAgICAgICByZXR1cm4gcGFnZS0+Z2x5cGhEYXRhRm9y
Q2hhcmFjdGVyKGMpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIu
aAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU2ltcGxlRm9udERh
dGE7CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAvLyBGSVhNRTogV2h5IGRvZXMgQ2Fpcm8gdXNlIHN1
Y2ggYSBodWdlIHN0cnVjdCBpbnN0ZWFkIG9mIGp1c3QgYW4gb2Zmc2V0IGludG8gYW4gYXJyYXk/
CiB0eXBlZGVmIGNhaXJvX2dseXBoX3QgR2x5cGhCdWZmZXJHbHlwaDsKLSNlbGlmIFBMQVRGT1JN
KFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiB0eXBlZGVmIHdjaGFyX3QgR2x5cGhCdWZmZXJHbHlw
aDsKICNlbHNlCiB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CkBAIC02MCw3ICs2MCw3
IEBAIHR5cGVkZWYgR2x5cGggR2x5cGhCdWZmZXJHbHlwaDsKIC8vIGNhbiBiZSBwYXNzZWQgZGly
ZWN0bHkgdG8gQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyBpbiBGb250TWFjLm1tCiAj
aWYgUExBVEZPUk0oQ0cpCiB0eXBlZGVmIENHU2l6ZSBHbHlwaEJ1ZmZlckFkdmFuY2U7Ci0jZWxp
ZiBQTEFURk9STShXSU5DRSkKKyNlbGlmIE9TKFdJTkNFKQogLy8gVGhlcmUgaXMgbm8gY3Jvc3Mt
cGxhdGZvcm0gY29kZSB0aGF0IHVzZXMgdGhlIGhlaWdodCBvZiBHbHlwaEJ1ZmZlckFkdmFuY2Us
CiAvLyBzbyB3ZSBjYW4gc2F2ZSBtZW1vcnkgc3BhY2Ugb24gZW1iZWRkZWQgZGV2aWNlcyBieSBz
dG9yaW5nIG9ubHkgdGhlIHdpZHRoCiB0eXBlZGVmIGZsb2F0IEdseXBoQnVmZmVyQWR2YW5jZTsK
QEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgewogI2lmIFBMQVRGT1JNKENHKQogICAg
ICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF0ud2lkdGg7Ci0jZWxpZiBQTEFURk9STShXSU5D
RSkKKyNlbGlmIE9TKFdJTkNFKQogICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CiAj
ZWxzZQogICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF0ud2lkdGgoKTsKQEAgLTE1Niw3
ICsxNTYsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgIENHU2l6ZSBhZHZh
bmNlID0geyB3aWR0aCwgMCB9OwogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNlKTsK
LSNlbGlmIFBMQVRGT1JNKFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiAgICAgICAgIG1fYWR2YW5j
ZXMuYXBwZW5kKHdpZHRoKTsKICNlbHNlCiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKEZsb2F0
U2l6ZSh3aWR0aCwgMCkpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KICAgICAKLSNpZiAhUExBVEZPUk0oV0lOQ0UpCisjaWYgIU9TKFdJTkNFKQogICAgIHZvaWQg
YWRkKEdseXBoIGdseXBoLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2x5cGhCdWZmZXJB
ZHZhbmNlIGFkdmFuY2UpCiAgICAgewogICAgICAgICBtX2ZvbnREYXRhLmFwcGVuZChmb250KTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgJKHJldmlzaW9uIDUyNzgyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw3ICs3NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGdldENv
bG9yKGZsb2F0IHZhbHVlLCBmbG9hdCogciwgZmxvYXQqIGcsIGZsb2F0KiBiLCBmbG9hdCogYSkg
Y29uc3Q7CiAKLSNpZiBQTEFURk9STShXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKQorI2lmIE9TKFdJ
TkNFKSAmJiAhUExBVEZPUk0oUVQpCiAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHAwKCkgY29u
c3QgeyByZXR1cm4gbV9wMDsgfQogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwMSgpIGNvbnN0
IHsgcmV0dXJuIG1fcDE7IH0KICAgICAgICAgZmxvYXQgcjAoKSBjb25zdCB7IHJldHVybiBtX3Iw
OyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIC8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHdheSB0byBhdm9p
ZCB0aGUgbmFtZSBjb25mbGljdGlvbiBmb3IgTk9fRVJST1IuCi0jaWYgUExBVEZPUk0oQ0hST01J
VU0pICYmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoV0lO
RE9XUykKICN1bmRlZiBOT19FUlJPUgogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSogaQogICAgIGRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVz
dCksIHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCi0jaWYgIVBMQVRGT1JN
KFdJTkNFKSB8fCBQTEFURk9STShRVCkKKyNpZiAhT1MoV0lOQ0UpIHx8IFBMQVRGT1JNKFFUKQog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyAr
NzEsNyBAQCB0eXBlZGVmIGNsYXNzIFBsYXRmb3JtQ29udGV4dFNraWEgUGxhdGZvCiBjbGFzcyBC
VmlldzsKIHR5cGVkZWYgQlZpZXcgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiBzdHJ1Y3QgcGF0
dGVybjsKLSNlbGlmIFBMQVRGT1JNKFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiB0eXBlZGVmIHN0
cnVjdCBIRENfXyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbHNlCiB0eXBlZGVmIHZvaWQg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CkBAIC05Niw3ICs5Niw3IEBAIHR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBVSW50ODsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZPUk0oV0lO
Q0UpICYmICFQTEFURk9STShRVCkKKyNpZiBPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKQogICAg
IGNsYXNzIFNoYXJlZEJpdG1hcDsKICAgICBjbGFzcyBTaW1wbGVGb250RGF0YTsKICAgICBjbGFz
cyBHbHlwaEJ1ZmZlcjsKQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopOwogICAgICAg
ICB+R3JhcGhpY3NDb250ZXh0KCk7CiAKLSNpZiAhUExBVEZPUk0oV0lOQ0UpIHx8IFBMQVRGT1JN
KFFUKQorI2lmICFPUyhXSU5DRSkgfHwgUExBVEZPUk0oUVQpCiAgICAgICAgIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKICNlbmRpZgogCkBAIC0yOTks
NyArMjk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNvbmNhdENUTShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBnZXRDVE0oKSBjb25zdDsKIAotI2lmIFBMQVRGT1JNKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQp
CisjaWYgT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkKICAgICAgICAgdm9pZCBzZXRCaXRtYXAo
UGFzc1JlZlB0cjxTaGFyZWRCaXRtYXA+KTsKICAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgYWZmaW5lVHJhbnNmb3JtKCk7CkBAIC0zNTcsNyArMzU3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGRyYXdXaW5kb3dzQml0bWFwKFdpbmRvd3NCaXRtYXAqLCBj
b25zdCBJbnRQb2ludCYpOwogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oUVQpICYmIGRlZmluZWQo
UV9XU19XSU4pKSB8fCAoUExBVEZPUk0oV1gpICYmIFBMQVRGT1JNKFdJTl9PUykpCisjaWYgKFBM
QVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFfV1NfV0lOKSkgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhX
SU5ET1dTKSkKICAgICAgICAgSERDIGdldFdpbmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmLCBi
b29sIHN1cHBvcnRBbHBoYUJsZW5kID0gdHJ1ZSwgYm9vbCBtYXlDcmVhdGVCaXRtYXAgPSB0cnVl
KTsKICAgICAgICAgdm9pZCByZWxlYXNlV2luZG93c0NvbnRleHQoSERDLCBjb25zdCBJbnRSZWN0
JiwgYm9vbCBzdXBwb3J0QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0g
dHJ1ZSk7CiAgICAgICAgIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBf
Y2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmCiBjbGFzcyBOYXRpdmVJbWFnZVNraWE7CiAjZWxpZiBQ
TEFURk9STShIQUlLVSkKIGNsYXNzIEJCaXRtYXA7Ci0jZWxpZiBQTEFURk9STShXSU5DRSkKKyNl
bGlmIE9TKFdJTkNFKQogI2luY2x1ZGUgIlNoYXJlZEJpdG1hcC5oIgogI2VuZGlmCiAKQEAgLTgx
LDcgKzgxLDcgQEAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIE5hdGl2ZUltYWdlUHRyOwogdHlw
ZWRlZiBOYXRpdmVJbWFnZVNraWEqIE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgUExBVEZPUk0oSEFJ
S1UpCiB0eXBlZGVmIEJCaXRtYXAqIE5hdGl2ZUltYWdlUHRyOwotI2VsaWYgUExBVEZPUk0oV0lO
Q0UpCisjZWxpZiBPUyhXSU5DRSkKIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7CiAjZW5kaWYKICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRS
ZWN0LmgJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRS
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIHR5cGVkZWYgc3RydWN0IENH
UmVjdCBDR1JlY3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBQTEFURk9STShEQVJXSU4pKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRG
T1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FN
RV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVjdCBDR1JlY3QgTlNSZWN0OwogI2Vs
c2UKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIChQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVT
KSkgXAotICAgICAgICB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikp
CisgICAgICAgIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICBvcGVy
YXRvciBOU1JlY3QoKSBjb25zdDsKICNlbmRpZgogCkBAIC0yMDMsNyArMjAzLDcgQEAgSW50UmVj
dCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IENHUmVjdCYpOwogI2VuZGlmCiAKICNpZiAoUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9U
WVBFUykpIFwKLSAgICAgICAgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBQTEFURk9STShEQVJX
SU4pKQorICAgICAgICB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiBJbnRS
ZWN0IGVuY2xvc2luZ0ludFJlY3QoY29uc3QgTlNSZWN0Jik7CiAjZW5kaWYKIApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDUyNzgyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGVRVEtpdC5oIgotI2VsaWYgUExBVEZPUk0oV0lOQ0UpICYmICFQTEFURk9S
TShRVCkKKyNlbGlmIE9TKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlV2luY2UuaCIKICNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uaCIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHR5cGVkZWYgU2tQYXRoIFBsYXRmb3Jt
UGF0aDsKICNlbGlmIFBMQVRGT1JNKEhBSUtVKQogY2xhc3MgQlJlZ2lvbjsKIHR5cGVkZWYgQlJl
Z2lvbiBQbGF0Zm9ybVBhdGg7Ci0jZWxpZiBQTEFURk9STShXSU5DRSkKKyNlbGlmIE9TKFdJTkNF
KQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsYXRmb3JtUGF0aDsKIH0KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHR5cGVkZWYgd3hCcnVzaCogUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VsaWYgUExBVEZP
Uk0oSEFJS1UpCiAjaW5jbHVkZSA8aW50ZXJmYWNlL0dyYXBoaWNzRGVmcy5oPgogdHlwZWRlZiBw
YXR0ZXJuKiBQbGF0Zm9ybVBhdHRlcm5QdHI7Ci0jZWxpZiBQTEFURk9STShXSU5DRSkKKyNlbGlm
IE9TKFdJTkNFKQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CiAjZW5kaWYKIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAkocmV2aXNp
b24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUFU
U1VTdHlsZSogQVRTVVN0eWxlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pICYmICFQTEFU
Rk9STShXSU5DRSkKKyNpZiBQTEFURk9STShXSU4pICYmICFPUyhXSU5DRSkKICNpbmNsdWRlIDx1
c3AxMC5oPgogI2VuZGlmCiAKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJTikpCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpCiAgICAgTlNGb250
KiBnZXROU0ZvbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGF0YS5mb250KCk7IH0KICNl
bmRpZgogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgIGJvb2wgaXNTeXN0ZW1Gb250KCkgY29uc3QgeyByZXR1cm4gbV9pc1N5c3RlbUZvbnQ7IH0K
LSNpZiAhUExBVEZPUk0oV0lOQ0UpICAgIC8vIGRpc2FibGUgdW51c2VkIG1lbWJlcnMgdG8gc2F2
ZSBzcGFjZQorI2lmICFPUyhXSU5DRSkgICAgLy8gZGlzYWJsZSB1bnVzZWQgbWVtYmVycyB0byBz
YXZlIHNwYWNlCiAgICAgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBzY3JpcHRGb250UHJvcGVydGll
cygpIGNvbnN0OwogICAgIFNDUklQVF9DQUNIRSogc2NyaXB0Q2FjaGUoKSBjb25zdCB7IHJldHVy
biAmbV9zY3JpcHRDYWNoZTsgfQogI2VuZGlmCkBAIC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgY29tbW9uSW5pdCgpOwogCi0jaWYgUExBVEZPUk0oV0lOKSAmJiAhUExBVEZP
Uk0oV0lOQ0UpCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpCiAgICAgdm9pZCBpbml0
R0RJRm9udCgpOwogICAgIHZvaWQgcGxhdGZvcm1Db21tb25EZXN0cm95KCk7CiAgICAgZmxvYXQg
d2lkdGhGb3JHRElHbHlwaChHbHlwaCBnbHlwaCkgY29uc3Q7CkBAIC0yMjcsNyArMjI3LDcgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIG1faXNTeXN0ZW1Gb250Owot
I2lmICFQTEFURk9STShXSU5DRSkgICAgLy8gZGlzYWJsZSB1bnVzZWQgbWVtYmVycyB0byBzYXZl
IHNwYWNlCisjaWYgIU9TKFdJTkNFKSAgICAvLyBkaXNhYmxlIHVudXNlZCBtZW1iZXJzIHRvIHNh
dmUgc3BhY2UKICAgICBtdXRhYmxlIFNDUklQVF9DQUNIRSBtX3NjcmlwdENhY2hlOwogICAgIG11
dGFibGUgU0NSSVBUX0ZPTlRQUk9QRVJUSUVTKiBtX3NjcmlwdEZvbnRQcm9wZXJ0aWVzOwogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlz
aW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBj
b2xvcikKICAgICBtX2NvbG9yID0gbWFrZVJHQkEociAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NSwg
YSAqIDI1NSk7CiB9CiAKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKIAog
Q0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjKQogewpAQCAtODksNyArODks
NyBAQCBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGMpCiAgICAgcmV0dXJu
IGNvbG9yOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oV0lOX09TKQorI2VuZGlmIC8vIE9TKFdJ
TkRPV1MpCiAKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJPTUlV
TSkgJiYgUExBVEZPUk0oREFSV0lOKSkKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShD
SFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogLy8gQnVpbGRpbmcgb24gMTAuNiBv
ciBsYXRlcjoga0NHSW50ZXJwb2xhdGlvbk1lZGl1bSBpcyBkZWZpbmVkIGluIHRoZSBDR0ludGVy
cG9sYXRpb25RdWFsaXR5IGVudW0uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHJl
dmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
IgogCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSAiQmFz
ZTY0LmgiCiAjaW5jbHVkZSAiQ2hyb21pdW1CcmlkZ2UuaCIKICNpbmNsdWRlICJPcGVuVHlwZVV0
aWxpdGllcy5oIgotI2VsaWYgUExBVEZPUk0oTElOVVgpCisjZWxpZiBPUyhMSU5VWCkKICNpbmNs
dWRlICJTa1N0cmVhbS5oIgogI2VuZGlmCiAKQEAgLTQ1LDkgKzQ1LDkgQEAKICNpbmNsdWRlICJP
cGVuVHlwZVNhbml0aXplci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCi0jaWYgUExB
VEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8b2JqYmFzZS5oPgotI2Vs
aWYgUExBVEZPUk0oTElOVVgpCisjZWxpZiBPUyhMSU5VWCkKICNpbmNsdWRlIDxjc3RyaW5nPgog
I2VuZGlmCiAKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6On5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkKIHsKLSNpZiBQTEFU
Rk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICBpZiAobV9mb250UmVmZXJlbmNlKQog
ICAgICAgICBSZW1vdmVGb250TWVtUmVzb3VyY2VFeChtX2ZvbnRSZWZlcmVuY2UpOwotI2VsaWYg
UExBVEZPUk0oTElOVVgpCisjZWxpZiBPUyhMSU5VWCkKICAgICBpZiAobV9mb250UmVmZXJlbmNl
KQogICAgICAgICBtX2ZvbnRSZWZlcmVuY2UtPnVucmVmKCk7CiAjZW5kaWYKQEAgLTY2LDcgKzY2
LDcgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0ZgogCiBGb250UGxh
dGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNp
emUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRSZW5kZXJpbmdNb2RlIG1vZGUpCiB7Ci0j
aWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgQVNTRVJUKG1fZm9udFJl
ZmVyZW5jZSk7CiAKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CkBAIC05OSw3ICs5OSw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YToKIAogICAgIEhGT05UIGhmb250ID0g
Q3JlYXRlRm9udEluZGlyZWN0KCZsb2dGb250KTsKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0
YShoZm9udCwgc2l6ZSk7Ci0jZWxpZiBQTEFURk9STShMSU5VWCkKKyNlbGlmIE9TKExJTlVYKQog
ICAgIEFTU0VSVChtX2ZvbnRSZWZlcmVuY2UpOwogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRh
KG1fZm9udFJlZmVyZW5jZSwgc2l6ZSwgYm9sZCAmJiAhbV9mb250UmVmZXJlbmNlLT5pc0JvbGQo
KSwgaXRhbGljICYmICFtX2ZvbnRSZWZlcmVuY2UtPmlzSXRhbGljKCkpOwogI2Vsc2UKQEAgLTEw
OCw3ICsxMDgsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6CiAj
ZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogLy8gQ3Jl
YXRlcyBhIHVuaXF1ZSBhbmQgdW5wcmVkaWN0YWJsZSBmb250IG5hbWUsIGluIG9yZGVyIHRvIGF2
b2lkIGNvbGxpc2lvbnMgYW5kIHRvCiAvLyBub3QgYWxsb3cgYWNjZXNzIGZyb20gQ1NTLgogc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCkBAIC0xMjMsNyArMTIzLDcgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiB9CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKExJTlVYKQorI2lmIE9TKExJTlVYKQogY2xhc3MgUmVtb3RlRm9udFN0cmVhbSA6IHB1Ymxp
YyBTa1N0cmVhbSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVtb3RlRm9udFN0cmVhbShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQpAQCAtMTgwLDcgKzE4MCw3IEBAIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b20KICAgICBidWZmZXIgPSB0cmFuc2NvZGVC
dWZmZXIuZ2V0KCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5E
T1dTKQogICAgIC8vIEludHJvZHVjZSB0aGUgZm9udCB0byBHREkuIEFkZEZvbnRNZW1SZXNvdXJj
ZUV4IHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSwgYmVjYXVzZSBpdCB3aWxsIHBvbGx1dGUgdGhl
IHByb2Nlc3MncwogICAgIC8vIGZvbnQgbmFtZXNwYWNlIChXaW5kb3dzIGhhcyBubyBBUEkgZm9y
IGNyZWF0aW5nIGFuIEhGT05UIGZyb20gZGF0YSB3aXRob3V0IGV4cG9zaW5nIHRoZSBmb250IHRv
IHRoZQogICAgIC8vIGVudGlyZSBwcm9jZXNzIGZpcnN0KS4KQEAgLTE4OSw3ICsxODksNyBAQCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tCiAgICAgaWYgKCFmb250UmVm
ZXJlbmNlKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwotI2VsaWYgUExBVEZPUk0oTElOVVgp
CisjZWxpZiBPUyhMSU5VWCkKICAgICBSZW1vdGVGb250U3RyZWFtKiBzdHJlYW0gPSBuZXcgUmVt
b3RlRm9udFN0cmVhbShidWZmZXIpOwogICAgIFNrVHlwZWZhY2UqIHR5cGVmYWNlID0gU2tUeXBl
ZmFjZTo6Q3JlYXRlRnJvbVN0cmVhbShzdHJlYW0pOwogICAgIGlmICghdHlwZWZhY2UpCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsMTAgKzM1LDEwIEBACiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNp
ZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgotI2VsaWYgUExBVEZPUk0oTElOVVgpCisjZWxpZiBPUyhMSU5VWCkKICNpbmNsdWRl
ICJTa1R5cGVmYWNlLmgiCiAjZW5kaWYKIApAQCAtNDgsMTIgKzQ4LDEyIEBAIGNsYXNzIEZvbnRQ
bGF0Zm9ybURhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhIDogTm9uY29weWFibGUgewotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhX
SU5ET1dTKQogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZvbnRSZWZlcmVuY2Us
IGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX2ZvbnRSZWZlcmVuY2UoZm9udFJlZmVy
ZW5jZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7fQotI2VsaWYgUExBVEZPUk0oTElO
VVgpCisjZWxpZiBPUyhMSU5VWCkKICAgICBleHBsaWNpdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNrVHlwZWZhY2UqIHR5cGVmYWNlKQogICAgICAgICA6IG1fZm9udFJlZmVyZW5jZSh0eXBlZmFj
ZSkKICAgICB7fQpAQCAtNjQsMTAgKzY0LDEwIEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhIDogTm9uY29weWEKICAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQbGF0Zm9ybURhdGEoaW50
IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvbnRSZW5kZXJpbmdNb2RlID0gTm9ybWFsUmVuZGVyaW5nTW9kZSk7CiAK
LSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICBIQU5ETEUgbV9mb250
UmVmZXJlbmNlOwogICAgIFN0cmluZyBtX25hbWU7Ci0jZWxpZiBQTEFURk9STShMSU5VWCkKKyNl
bGlmIE9TKExJTlVYKQogICAgIFNrVHlwZWZhY2UqIG1fZm9udFJlZmVyZW5jZTsKICNlbmRpZgog
fTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3Jt
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udFBsYXRmb3JtRGF0YS5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw5ICszMSw5IEBACiAjaWZuZGVmIEZvbnRQbGF0Zm9ybURhdGFfaAogI2RlZmluZSBGb250UGxh
dGZvcm1EYXRhX2gKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogI2lu
Y2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bVdpbi5oIgotI2VsaWYgZGVmaW5lZChfX2xp
bnV4X18pCisjZWxpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhTGludXgu
aCIKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyBzaXplX3QgcmVuYW1lRm9u
dEludGVybmFsKFNoYXJlZEIKICAgICByZXR1cm4gbmFtZVRhYmxlU2l6ZTsKIH0KIAotI2lmIFBM
QVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogLy8gQWRkRm9udE1lbVJlc291cmNlRXggZG9l
cyBub3QgZXhpc3Qgb24gV2luQ0UsIHNvIHdlIG11c3QgaGFuZGxlIHRoZSBmb250IGRhdGEgbWFu
dWFsbHkKIC8vIFRoaXMgZnVuY3Rpb24ganVzdCByZW5hbWVzIHRoZSBmb250IGFuZCBvdmVyd3Jp
dGVzIHRoZSBvbGQgZm9udCBkYXRhIHdpdGggdGhlIG5ldwogYm9vbCByZW5hbWVGb250KFNoYXJl
ZEJ1ZmZlciogZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBz
dHJ1Y3QgQmlnRW5kaWFuVVNob3J0Owogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogdHlwZWRlZiB1bnNp
Z25lZCBfX2ludDggVUludDg7CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHJldmlzaW9uIDUyNzgyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyOTIsNyArMTI5Miw3IEBAIEhEQyBHcmFwaGljc0NvbnRleHQ6Omdl
dFdpbmRvd3NDb250ZXh0KGMKICAgICAgICAgbWVtc2V0KGJtcEluZm8uYm1CaXRzLCAwLCBidWZm
ZXJTaXplKTsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oV0lOQ0UpCisjaWYgIU9TKFdJTkNFKQog
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBjYW4gZG8gd29ybGQgdHJhbnNmb3Jtcy4KICAgICBTZXRHcmFw
aGljc01vZGUoYml0bWFwREMsIEdNX0FEVkFOQ0VEKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsy
MTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIG1fc29s
aWRDb2xvciA9IFFDb2xvcjo6ZnJvbVJnYmEoZnJhbWVQaXhtYXAtPnRvSW1hZ2UoKS5waXhlbCgw
LCAwKSk7CiB9CiAKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKIFBhc3NS
ZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQog
ewogICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBRUGl4bWFwKFFQaXhtYXA6OmZy
b21XaW5IQklUTUFQKGhCaXRtYXApKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA1Mjc4
MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcigKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgUExBVEZPUk0oV0lOX09T
KQorI2lmIE9TKExJTlVYKSB8fCBPUyhXSU5ET1dTKQogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5i
ZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UocmVjdCwgaW1hZ2VCdWZmZXIpOwogI2VuZGlmCiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJT
a2lhLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBJ
bWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgCiAKICAgICBtX2RhdGEubV9w
bGF0Zm9ybUNvbnRleHQuc2V0Q2FudmFzKCZtX2RhdGEubV9jYW52YXMpOwogICAgIG1fY29udGV4
dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dCgmbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7Ci0j
aWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgbV9jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+c2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIodHJ1ZSk7CiAjZW5kaWYKIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDcgKzg5LDcgQEAgc3RydWN0IFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRlIHsKICAgICAvLyBj
b2xvciB0byBwcm9kdWNlIGEgbmV3IG91dHB1dCBjb2xvci4KICAgICBTa0NvbG9yIGFwcGx5QWxw
aGEoU2tDb2xvcikgY29uc3Q7CiAKLSNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgUExBVEZPUk0o
V0lOX09TKQorI2lmIE9TKExJTlVYKSB8fCBPUyhXSU5ET1dTKQogICAgIC8vIElmIG5vbi1lbXB0
eSwgdGhlIGN1cnJlbnQgU3RhdGUgaXMgY2xpcHBlZCB0byB0aGlzIGltYWdlLgogICAgIFNrQml0
bWFwIG1faW1hZ2VCdWZmZXJDbGlwOwogICAgIC8vIElmIG1faW1hZ2VCdWZmZXJDbGlwIGlzIG5v
bi1lbXB0eSwgdGhpcyBpcyB0aGUgcmVnaW9uIHRoZSBpbWFnZSBpcyBjbGlwcGVkIHRvLgpAQCAt
MTQzLDcgKzE0Myw3IEBAIFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRlOjpTdGF0ZShjb25zdCAK
ICAgICAsIG1fbGluZUpvaW4ob3RoZXIubV9saW5lSm9pbikKICAgICAsIG1fZGFzaChvdGhlci5t
X2Rhc2gpCiAgICAgLCBtX3RleHREcmF3aW5nTW9kZShvdGhlci5tX3RleHREcmF3aW5nTW9kZSkK
LSNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKExJTlVY
KSB8fCBPUyhXSU5ET1dTKQogICAgICwgbV9pbWFnZUJ1ZmZlckNsaXAob3RoZXIubV9pbWFnZUJ1
ZmZlckNsaXApCiAgICAgLCBtX2NsaXAob3RoZXIubV9jbGlwKQogI2VuZGlmCkBAIC0xODAsNyAr
MTgwLDcgQEAgU2tDb2xvciBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZTo6YXBwbAogLy8gRGFu
Z2VyOiBjYW52YXMgY2FuIGJlIE5VTEwuCiBQbGF0Zm9ybUNvbnRleHRTa2lhOjpQbGF0Zm9ybUNv
bnRleHRTa2lhKHNraWE6OlBsYXRmb3JtQ2FudmFzKiBjYW52YXMpCiAgICAgOiBtX2NhbnZhcyhj
YW52YXMpCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgLCBtX2Ry
YXdpbmdUb0ltYWdlQnVmZmVyKGZhbHNlKQogI2VuZGlmCiB7CkBAIC0xOTcsNyArMTk3LDcgQEAg
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRDYW52YXMoc2tpYQogICAgIG1fY2FudmFzID0g
Y2FudmFzOwogfQogCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiB2b2lk
IFBsYXRmb3JtQ29udGV4dFNraWE6OnNldERyYXdpbmdUb0ltYWdlQnVmZmVyKGJvb2wgdmFsdWUp
CiB7CiAgICAgbV9kcmF3aW5nVG9JbWFnZUJ1ZmZlciA9IHZhbHVlOwpAQCAtMjE0LDcgKzIxNCw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2F2ZSgpCiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZCgqbV9zdGF0ZSk7CiAgICAgbV9zdGF0ZSA9ICZtX3N0YXRlU3RhY2subGFzdCgpOwogCi0j
aWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhMSU5VWCkg
fHwgT1MoV0lORE9XUykKICAgICAvLyBUaGUgY2xpcCBpbWFnZSBvbmx5IG5lZWRzIHRvIGJlIGFw
cGxpZWQgb25jZS4gUmVzZXQgdGhlIGltYWdlIHNvIHRoYXQgd2UKICAgICAvLyBkb24ndCBhdHRl
bXB0IHRvIGNsaXAgbXVsdGlwbGUgdGltZXMuCiAgICAgbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNs
aXAucmVzZXQoKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
OnNhdmUoKQogICAgIGNhbnZhcygpLT5zYXZlKCk7CiB9CiAKLSNpZiBkZWZpbmVkKF9fbGludXhf
XykgfHwgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKExJTlVYKSB8fCBPUyhXSU5ET1dTKQogdm9p
ZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiByZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
KQogewpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcFBh
dGhBbnRpQWwKIAogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlKCkKIHsKLSNpZiBk
ZWZpbmVkKF9fbGludXhfXykgfHwgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKExJTlVYKSB8fCBP
UyhXSU5ET1dTKQogICAgIGlmICghbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXAuZW1wdHkoKSkg
ewogICAgICAgICBhcHBseUNsaXBGcm9tSW1hZ2UobV9zdGF0ZS0+bV9jbGlwLCBtX3N0YXRlLT5t
X2ltYWdlQnVmZmVyQ2xpcCk7CiAgICAgICAgIGNhbnZhcygpLT5yZXN0b3JlKCk7CkBAIC01NzUs
NyArNTc1LDcgQEAgYm9vbCBQbGF0Zm9ybUNvbnRleHRTa2lhOjppc1ByaW50aW5nKCkKICAgICBy
ZXR1cm4gbV9jYW52YXMtPmdldFRvcFBsYXRmb3JtRGV2aWNlKCkuSXNWZWN0b3JpYWwoKTsKIH0K
IAotI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoTElO
VVgpIHx8IE9TKFdJTkRPV1MpCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmFwcGx5Q2xpcEZy
b21JbWFnZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFNrQml0bWFwJiBp
bWFnZUJ1ZmZlcikKIHsKICAgICAvLyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhlIGltYWdlIG1hc2sg
Y29udGFpbnMgb3BhcXVlIGJsYWNrIGZvciB0aGUgcG9ydGlvbnMgdGhhdCBhcmUgdG8gYmUgc2hv
d24sIGFzIHN1Y2ggd2UKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAvLyB0byB0aGUgY29uc3RydWN0b3Iu
CiAgICAgdm9pZCBzZXRDYW52YXMoc2tpYTo6UGxhdGZvcm1DYW52YXMqKTsKIAotI2lmIFBMQVRG
T1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAgIC8vIElmIGZhbHNlIHdlJ3JlIHJlbmRl
cmluZyB0byBhIEdyYXBoaWNzQ29udGV4dCBmb3IgYSB3ZWIgcGFnZSwgaWYgZmFsc2UKICAgICAv
LyB3ZSdyZSBub3QgKGFzIGlzIHRoZSBjYXNlIHdoZW4gcmVuZGVyaW5nIHRvIGEgY2FudmFzIG9i
amVjdCkuCiAgICAgLy8gSWYgdGhpcyBpcyB0cnVlIHRoZSBjb250ZW50cyBoYXZlIG5vdCBiZWVu
IG1hcmtlZCB1cCB3aXRoIHRoZSBtYWdpYwpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gfHJlY3R8LiBUaGlzIGxheWVyIGlzIGltcGxpY2l0bHkgcmVzdG9yZWQgd2hlbiB0aGUgbmV4
dCByZXN0b3JlIGlzCiAgICAgLy8gaW52b2tlZC4KICAgICAvLyBOT1RFOiB8aW1hZ2VCdWZmZXJ8
IG1heSBiZSBkZWxldGVkIGJlZm9yZSB0aGUgfHJlc3RvcmV8IGlzIGludm9rZWQuCi0jaWYgZGVm
aW5lZChfX2xpbnV4X18pIHx8IFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhMSU5VWCkgfHwgT1Mo
V0lORE9XUykKICAgICB2b2lkIGJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YkNvcmU6OkltYWdlQnVmZmVyKik7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1ByaW50aW5nKCk7CiAKIHByaXZhdGU6Ci0jaWYgZGVmaW5lZChfX2xpbnV4
X18pIHx8IFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhMSU5VWCkgfHwgT1MoV0lORE9XUykKICAg
ICAvLyBVc2VkIHdoZW4gcmVzdG9yaW5nIGFuZCB0aGUgc3RhdGUgaGFzIGFuIGltYWdlIGNsaXAu
IE9ubHkgc2hvd3MgdGhlIHBpeGVscyBpbgogICAgIC8vIG1fY2FudmFzIHRoYXQgYXJlIGFsc28g
aW4gaW1hZ2VCdWZmZXIuCiAgICAgdm9pZCBhcHBseUNsaXBGcm9tSW1hZ2UoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgU2tCaXRtYXAmKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2
YXRlOgogICAgIC8vIEN1cnJlbnQgcGF0aCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMuCiAgICAgU2tQ
YXRoIG1fcGF0aDsKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAg
IGJvb2wgbV9kcmF3aW5nVG9JbWFnZUJ1ZmZlcjsKICNlbmRpZgogfTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+
CiAKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKIC8vIFNIR0ZJX1NIRUxMSUNP
TlNJWkUgaXMgbm90IGF2YWlsYWJsZSBvbiBXSU5DRQogI2RlZmluZSBTSEdGSV9TSEVMTElDT05T
SVpFICAgICAgICAgMAogI2VuZGlmCkBAIC02Myw3ICs2Myw3IEBAIFBhc3NSZWZQdHI8SWNvbj4g
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGUKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29u
KHNmaS5oSWNvbikpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNF
KQogICAgIHJldHVybiAwOwogI2Vsc2UKICAgICBUQ0hBUiBidWZmZXJbTUFYX1BBVEhdOyAgICAK
QEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eAogICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogICAgIGNvbnRleHQtPmRyYXdJ
Y29uKG1faEljb24sIHIsIERJX05PUk1BTCk7CiAjZWxzZQogICAgIEhEQyBoZGMgPSBjb250ZXh0
LT5nZXRXaW5kb3dzQ29udGV4dChyKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVy
Um91bmRlZFJlYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLSNpZiBQTEFURk9STShXSU5f
T1MpCisjaWYgT1MoV0lORE9XUykKIEhEQyBHcmFwaGljc0NvbnRleHQ6OmdldFdpbmRvd3NDb250
ZXh0KGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQsIGJvb2wg
bWF5Q3JlYXRlQml0bWFwKQogewogICAgIGlmIChkc3RSZWN0LmlzRW1wdHkoKSkKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIFN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqIGZpbGUKICAg
ICBpZiAoIWZpbGVuYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSNpZiBQTEFURk9S
TShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChm
aWxlbmFtZSk7CiAjZWxzZQogICAgIGdjaGFyKiBlc2NhcGVkU3RyaW5nID0gZ191cmlfZXNjYXBl
X3N0cmluZyhmaWxlbmFtZSwgIi86IiwgZmFsc2UpOwpAQCAtNTQsNyArNTQsNyBAQCBTdHJpbmcg
ZmlsZW5hbWVUb1N0cmluZyhjb25zdCBjaGFyKiBmaWxlCiAKIGNoYXIqIGZpbGVuYW1lRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYg
T1MoV0lORE9XUykKICAgICByZXR1cm4gZ19zdHJkdXAoc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwog
I2Vsc2UKICAgICByZXR1cm4gZ191cmlfdW5lc2NhcGVfc3RyaW5nKHN0cmluZy51dGY4KCkuZGF0
YSgpLCAwKTsKQEAgLTY0LDcgKzY0LDcgQEAgY2hhciogZmlsZW5hbWVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgcwogLy8gQ29udmVydHMgYSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRhYmxlIHRv
IGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KIFN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRP
V1MpCiAgICAgcmV0dXJuIHN0cmluZzsKICNlbHNlCiAgICAgZ2NoYXIqIGZpbGVuYW1lID0gZmls
ZW5hbWVGcm9tU3RyaW5nKHN0cmluZyk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCShyZXZpc2lv
biA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUg
IkpQRUdJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlIDxzdGRpby5oPiAgLy8gTmVlZGVkIGJ5IGpw
ZWdsaWIuaCBmb3IgRklMRS4KIAotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQog
Ly8gUmVtb3ZlIHdhcm5pbmc6ICdGQVInIG1hY3JvIHJlZGVmaW5pdGlvbgogI3VuZGVmIEZBUgog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKLSNpZiAhUExBVEZPUk0oV0lOX09TKQorI2lmICFPUyhXSU5ET1dTKQog
I2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2RlZmluZSBNQVhfUEFUSCBNQVhQQVRITEVOCiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYs
NyArODc2LDcgQEAgc3RhdGljIGJvb2wgc3RhcnRHaW8oUmVzb3VyY2VIYW5kbGUqIGhhbgogICAg
IHVybC5zZXRRdWVyeShTdHJpbmcoKSk7CiAgICAgdXJsLnJlbW92ZVBvcnQoKTsKIAotI2lmICFQ
TEFURk9STShXSU5fT1MpCisjaWYgIU9TKFdJTkRPV1MpCiAgICAgLy8gd2UgYXZvaWQgdGhlIGVz
Y2FwaW5nIGZvciBsb2NhbCBmaWxlcywgYmVjYXVzZQogICAgIC8vIGdfZmlsZW5hbWVfZnJvbV91
cmkgKHVzZWQgaW50ZXJuYWxseSBieSBHRmlsZSkgaGFzIHByb2JsZW1zCiAgICAgLy8gZGVjb2Rp
bmcgc3RyaW5ncyB3aXRoIGFyYml0cmFyeSBwZXJjZW50IHNpZ25zCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU3RyaW5nLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQv
U3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIFN0cmluZyBTdHJp
bmc6OmZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQKIAogICAgIHJldHVybiBidWZmZXI7CiAKLSNl
bGlmIFBMQVRGT1JNKFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiAgICAgdmFfbGlzdCBhcmdzOwog
ICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBTdHJpbmcg
U3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBuKQogCiBTdHJpbmcgU3RyaW5nOjpudW1iZXIo
bG9uZyBsb25nIG4pCiB7Ci0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhUExBVEZPUk0oUVQpCisj
aWYgT1MoV0lORE9XUykgJiYgIVBMQVRGT1JNKFFUKQogICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiJUk2NGkiLCBuKTsKICNlbHNlCiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlbGxpIiwg
bik7CkBAIC00NTUsNyArNDU1LDcgQEAgU3RyaW5nIFN0cmluZzo6bnVtYmVyKGxvbmcgbG9uZyBu
KQogCiBTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG4pCiB7Ci0jaWYg
UExBVEZPUk0oV0lOX09TKSAmJiAhUExBVEZPUk0oUVQpCisjaWYgT1MoV0lORE9XUykgJiYgIVBM
QVRGT1JNKFFUKQogICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJUk2NHUiLCBuKTsKICNlbHNl
CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlbGx1Iiwgbik7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEy
OSw3IEBAIENTdHJpbmcgVGV4dEVuY29kaW5nOjplbmNvZGUoY29uc3QgVUNoYXIKICAgICBVVEYx
Nk5vcm1hbGl6ZWQuc2V0KGdfdXRmOF90b191dGYxNihVVEY4Tm9ybWFsaXplZC5nZXQoKSwgLTEs
IDAsICZVVEYxNkxlbmd0aCwgMCkpOwogCiAgICAgcmV0dXJuIG5ld1RleHRDb2RlYygqdGhpcykt
PmVuY29kZShVVEYxNk5vcm1hbGl6ZWQuZ2V0KCksIFVURjE2TGVuZ3RoLCBoYW5kbGluZyk7Ci0j
ZWxpZiBQTEFURk9STShXSU5DRSkKKyNlbGlmIE9TKFdJTkNFKQogICAgIC8vIG5vcm1hbGl6YXRp
b24gd2lsbCBiZSBkb25lIGJ5IFdpbmRvd3MgQ0UgQVBJCiAgICAgT3duUHRyPFRleHRDb2RlYz4g
dGV4dENvZGVjID0gbmV3VGV4dENvZGVjKCp0aGlzKTsKICAgICByZXR1cm4gdGV4dENvZGVjLmdl
dCgpID8gdGV4dENvZGVjLT5lbmNvZGUoY2hhcmFjdGVycywgbGVuZ3RoLCBoYW5kbGluZykgOiBD
U3RyaW5nKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdS
ZWdpc3RyeS5jcHAJKHJldmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAog
I2lmIFVTRShHTElCX1VOSUNPREUpCiAjaW5jbHVkZSAiZ3RrL1RleHRDb2RlY0d0ay5oIgogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShRVCkKKyNpZiBPUyhXSU5DRSkg
JiYgIVBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIlRleHRDb2RlY1dpbmNlLmgiCiAjZW5kaWYKIApA
QCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRDb2RlY01hcHMoKQog
ICAgIFRleHRDb2RlY0d0azo6cmVnaXN0ZXJCYXNlQ29kZWNzKGFkZFRvVGV4dENvZGVjTWFwKTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOQ0UpICYmICFQTEFURk9STShRVCkKKyNpZiBPUyhX
SU5DRSkgJiYgIVBMQVRGT1JNKFFUKQogICAgIFRleHRDb2RlY1dpbmNlOjpyZWdpc3RlckJhc2VF
bmNvZGluZ05hbWVzKGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcCk7CiAgICAgVGV4dENvZGVjV2lu
Y2U6OnJlZ2lzdGVyQmFzZUNvZGVjcyhhZGRUb1RleHRDb2RlY01hcCk7CiAjZW5kaWYKQEAgLTI1
OCw3ICsyNTgsNyBAQCBzdGF0aWMgdm9pZCBleHRlbmRUZXh0Q29kZWNNYXBzKCkKICAgICBUZXh0
Q29kZWNHdGs6OnJlZ2lzdGVyRXh0ZW5kZWRDb2RlY3MoYWRkVG9UZXh0Q29kZWNNYXApOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKQorI2lmIE9TKFdJTkNF
KSAmJiAhUExBVEZPUk0oUVQpCiAgICAgVGV4dENvZGVjV2luY2U6OnJlZ2lzdGVyRXh0ZW5kZWRF
bmNvZGluZ05hbWVzKGFkZFRvVGV4dEVuY29kaW5nTmFtZU1hcCk7CiAgICAgVGV4dENvZGVjV2lu
Y2U6OnJlZ2lzdGVyRXh0ZW5kZWRDb2RlY3MoYWRkVG9UZXh0Q29kZWNNYXApOwogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDcgKzEwMSw3IEBAIFN0cmluZyBUZXh0U3RyZWFtOjpyZWxlYXNlKCkKICAgICByZXR1cm4g
U3RyaW5nOjphZG9wdChtX3RleHQpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiBQTEFU
Rk9STShYODZfNjQpICYmIENPTVBJTEVSKE1TVkMpCisjaWYgT1MoV0lORE9XUykgJiYgUExBVEZP
Uk0oWDg2XzY0KSAmJiBDT01QSUxFUihNU1ZDKQogVGV4dFN0cmVhbSYgVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PChfX2ludDY0IGkpCiB7CiAgICAgY2hhciBidWZmZXJbcHJpbnRCdWZmZXJTaXplXTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAkocmV2aXNpb24gNTI3ODIpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKICAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGRvdWJsZSk7CiAg
ICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBjaGFyKik7CiAgICAgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChjb25zdCBTdHJpbmcmKTsKLSNpZiBQTEFURk9STShXSU5fT1MpICYmIFBMQVRG
T1JNKFg4Nl82NCkgJiYgQ09NUElMRVIoTVNWQykKKyNpZiBPUyhXSU5ET1dTKSAmJiBQTEFURk9S
TShYODZfNjQpICYmIENPTVBJTEVSKE1TVkMpCiAgICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PCh1
bnNpZ25lZCBfX2ludDY0KTsKICAgICBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KF9faW50NjQpOwog
I2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dENvZGVjUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5jcHAJKHJl
dmlzaW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRDb2RlY1F0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBTdHJpbmcgVGV4dENvZGVjUXQ6OmRl
Y29kZShjb25zdCBjaGFyKiBiCiAgICAgLy8gV2UgY2hvcCBpbnB1dCBidWZmZXIgdG8gc21hbGxl
ciBidWZmZXJzIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBtZW1vcnkgY29uc3VtcHRpb24KICAgICAvLyB3
aGVuIHRoZSBpbnB1dCBidWZmZXIgaXMgYmlnLiAgVGhpcyBoZWxwcyByZWR1Y2UgcGVhayBtZW1v
cnkgY29uc3VtcHRpb24gaW4KICAgICAvLyBtb2JpbGUgZGV2aWNlcyB3aGVyZSBzeXN0ZW0gUkFN
IGlzIGxpbWl0ZWQuCi0jaWYgUExBVEZPUk0oU1lNQklBTikKKyNpZiBPUyhTWU1CSUFOKQogICAg
IHN0YXRpYyBjb25zdCBpbnQgTWF4SW5wdXRDaHVua1NpemUgPSAzMiAqIDEwMjQ7CiAjZWxzZQog
ICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4SW5wdXRDaHVua1NpemUgPSAxMDI0ICogMTAyNDsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtTW91c2VFdmVudFdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1Nb3VzZUV2ZW50V2luLmNwcAko
cmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybU1vdXNlRXZl
bnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBNb3VzZUV2
ZW50VHlwZSBtZXNzYWdlVG9FdmVudFR5cGUKICAgICAgICAgY2FzZSBXTV9NQlVUVE9OVVA6CiAg
ICAgICAgICAgICByZXR1cm4gTW91c2VFdmVudFJlbGVhc2VkOwogCi0jaWYgIVBMQVRGT1JNKFdJ
TkNFKQorI2lmICFPUyhXSU5DRSkKICAgICAgICAgY2FzZSBXTV9NT1VTRUxFQVZFOgogI2VuZGlm
CiAgICAgICAgIGNhc2UgV01fTU9VU0VNT1ZFOgpAQCAtMTA4LDcgKzEwOCw3IEBAIFBsYXRmb3Jt
TW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KEgKICAgICAgICAgICAgIG1fYnV0dG9uID0g
TWlkZGxlQnV0dG9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV01fTU9VU0VN
T1ZFOgotI2lmICFQTEFURk9STShXSU5DRSkKKyNpZiAhT1MoV0lOQ0UpCiAgICAgICAgIGNhc2Ug
V01fTU9VU0VMRUFWRToKICNlbmRpZgogICAgICAgICAgICAgaWYgKHdQYXJhbSAmIE1LX0xCVVRU
T04pCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCShy
ZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgREVWTU9ERSBkZXZp
Y2VJbmZvRm9yV2lkZ2V0KFdpZGdlCiAgICAgREVWTU9ERSBkZXZpY2VJbmZvOwogICAgIGRldmlj
ZUluZm8uZG1TaXplID0gc2l6ZW9mKERFVk1PREUpOwogICAgIGRldmljZUluZm8uZG1Ecml2ZXJF
eHRyYSA9IDA7Ci0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgaWYgKCFF
bnVtRGlzcGxheVNldHRpbmdzKDAsIEVOVU1fQ1VSUkVOVF9TRVRUSU5HUywgJmRldmljZUluZm8p
KQogICAgICAgICBkZXZpY2VJbmZvLmRtQml0c1BlclBlbCA9IDE2OwogI2Vsc2UKQEAgLTgwLDcg
KzgwLDcgQEAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZwogCiBib29s
IHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIHsKLSNpZiBQTEFURk9STShXSU5D
RSkKKyNpZiBPUyhXSU5DRSkKICAgICAvLyBFbnVtRGlzcGxheVNldHRpbmdzIGRvZXNuJ3Qgc2V0
IGRtQ29sb3IgaW4gREVWTU9ERS4KICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAKICNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNs
dWRlIDx3aW5kb3dzeC5oPgotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogI2lu
Y2x1ZGUgPFJlc0RlZkNFLmg+CiAjZGVmaW5lIE1BS0VQT0lOVFMobCkgKCooKFBPSU5UUyBGQVIg
KikmKGwpKSkKICNlbmRpZgpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUG9wdXBNZW51OjpzaG93
KGNvbnN0IEludFJlY3QmIHIsIEYKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQg
YW5pbWF0ZSBvdXIgcG9wdXBzCiAgICAgLy8gTm90ZTogTXVzdCB1c2UgJ0JPT0wnIGFuZCAnRkFM
U0UnIGluc3RlYWQgb2YgJ2Jvb2wnIGFuZCAnZmFsc2UnIHRvIGF2b2lkIHN0YWNrIGNvcnJ1cHRp
b24gd2l0aCBTeXN0ZW1QYXJhbWV0ZXJzSW5mbwogICAgIEJPT0wgc2hvdWxkQW5pbWF0ZSA9IEZB
TFNFOwotI2lmICFQTEFURk9STShXSU5DRSkKKyNpZiAhT1MoV0lOQ0UpCiAgICAgOjpTeXN0ZW1Q
YXJhbWV0ZXJzSW5mbyhTUElfR0VUQ09NQk9CT1hBTklNQVRJT04sIDAsICZzaG91bGRBbmltYXRl
LCAwKTsKIAogICAgIGlmIChzaG91bGRBbmltYXRlKSB7CkBAIC01NzksNyArNTc5LDcgQEAgdm9p
ZCBQb3B1cE1lbnU6OnBhaW50KGNvbnN0IEludFJlY3QmIGRhbQogICAgICAgICB9CiAgICAgfQog
ICAgIGlmICghbV9ibXApIHsKLSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAg
ICAgICAgQml0bWFwSW5mbyBiaXRtYXBJbmZvKHRydWUsIGNsaWVudFJlY3QoKS53aWR0aCgpLCBj
bGllbnRSZWN0KCkuaGVpZ2h0KCkpOwogI2Vsc2UKICAgICAgICAgQml0bWFwSW5mbyBiaXRtYXBJ
bmZvID0gQml0bWFwSW5mbzo6Y3JlYXRlQm90dG9tVXAoY2xpZW50UmVjdCgpLnNpemUoKSk7CkBA
IC03MTQsNyArNzE0LDcgQEAgdm9pZCBQb3B1cE1lbnU6OnJlZ2lzdGVyQ2xhc3MoKQogICAgIGlm
IChoYXZlUmVnaXN0ZXJlZFdpbmRvd0NsYXNzKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFU
Rk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICBXTkRDTEFTUyB3Y2V4OwogI2Vsc2UKICAg
ICBXTkRDTEFTU0VYIHdjZXg7CkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBQb3B1cE1lbnU6OnJl
Z2lzdGVyQ2xhc3MoKQogCiAgICAgaGF2ZVJlZ2lzdGVyZWRXaW5kb3dDbGFzcyA9IHRydWU7CiAK
LSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICBSZWdpc3RlckNsYXNzKCZ3
Y2V4KTsKICNlbHNlCiAgICAgUmVnaXN0ZXJDbGFzc0V4KCZ3Y2V4KTsKQEAgLTc0NSw3ICs3NDUs
NyBAQCB2b2lkIFBvcHVwTWVudTo6cmVnaXN0ZXJDbGFzcygpCiAKIExSRVNVTFQgQ0FMTEJBQ0sg
UG9wdXBNZW51OjpQb3B1cE1lbnVXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lmIE9T
KFdJTkNFKQogICAgIExPTkcgbG9uZ1B0ciA9IEdldFdpbmRvd0xvbmcoaFduZCwgMCk7CiAjZWxz
ZQogICAgIExPTkdfUFRSIGxvbmdQdHIgPSBHZXRXaW5kb3dMb25nUHRyKGhXbmQsIDApOwpAQCAt
NzU4LDcgKzc1OCw3IEBAIExSRVNVTFQgQ0FMTEJBQ0sgUG9wdXBNZW51OjpQb3B1cE1lbnVXbmQK
ICAgICAgICAgTFBDUkVBVEVTVFJVQ1QgY3JlYXRlU3RydWN0ID0gcmVpbnRlcnByZXRfY2FzdDxM
UENSRUFURVNUUlVDVD4obFBhcmFtKTsKIAogICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIFBvcHVw
TWVudSB3aXRoIHRoZSB3aW5kb3cuCi0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0Up
CiAgICAgICAgIDo6U2V0V2luZG93TG9uZyhoV25kLCAwLCAoTE9ORyljcmVhdGVTdHJ1Y3QtPmxw
Q3JlYXRlUGFyYW1zKTsKICNlbHNlCiAgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0cihoV25kLCAw
LCAoTE9OR19QVFIpY3JlYXRlU3RydWN0LT5scENyZWF0ZVBhcmFtcyk7CkBAIC04OTIsNyArODky
LDcgQEAgTFJFU1VMVCBQb3B1cE1lbnU6OnduZFByb2MoSFdORCBoV25kLCBVSQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBCT09MIHNob3VsZEhvdFRyYWNrID0gRkFMU0U7Ci0jaWYgIVBM
QVRGT1JNKFdJTkNFKQorI2lmICFPUyhXSU5DRSkKICAgICAgICAgICAgIDo6U3lzdGVtUGFyYW1l
dGVyc0luZm8oU1BJX0dFVEhPVFRSQUNLSU5HLCAwLCAmc2hvdWxkSG90VHJhY2ssIDApOwogI2Vu
ZGlmCiAKQEAgLTk4OSw3ICs5ODksNyBAQCBMUkVTVUxUIFBvcHVwTWVudTo6d25kUHJvYyhIV05E
IGhXbmQsIFVJCiAgICAgICAgICAgICBsUmVzdWx0ID0gMDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0jaWYgIVBMQVRGT1JNKFdJTkNFKQorI2lmICFPUyhXSU5DRSkKICAgICAgICAg
Y2FzZSBXTV9QUklOVENMSUVOVDoKICAgICAgICAgICAgIHBhaW50KGNsaWVudFJlY3QoKSwgKEhE
Qyl3UGFyYW0pOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dp
bi9TeXN0ZW1UaW1lV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9T
eXN0ZW1UaW1lV2luLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dp
bi9TeXN0ZW1UaW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGZsb2F0IHVzZXJJZGxlVGltZSgpCiB7Ci0jaWYgIVBMQVRGT1JN
KFdJTkNFKQorI2lmICFPUyhXSU5DRSkKICAgICBMQVNUSU5QVVRJTkZPIGxhc3RJbnB1dEluZm8g
PSB7MH07CiAgICAgbGFzdElucHV0SW5mby5jYlNpemUgPSBzaXplb2YoTEFTVElOUFVUSU5GTyk7
CiAgICAgaWYgKDo6R2V0TGFzdElucHV0SW5mbygmbGFzdElucHV0SW5mbykpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUv
cGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQAogI2luY2x1ZGUgPHd4L2ZpbGVmbi5oPgogI2luY2x1ZGUgPHd4L2ZpbGVuYW1lLmg+CiAK
LSNpZiBQTEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIApAQCAtMTI3LDkgKzEyNyw5IEBAIGlu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnMKIAogYm9vbCB1bmxvYWRNb2R1
bGUoUGxhdGZvcm1Nb2R1bGUgbW9kKQogewotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhX
SU5ET1dTKQogICAgIHJldHVybiA6OkZyZWVMaWJyYXJ5KG1vZCk7Ci0jZWxpZiBQTEFURk9STShE
QVJXSU4pCisjZWxpZiBPUyhEQVJXSU4pCiAgICAgQ0ZSZWxlYXNlKG1vZCk7CiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCShyZXZpc2lv
biA1Mjc4MikKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpjbGVhcigpCiAg
ICAgbV9wcmVmZXJyZWRQbHVnaW5zLmNsZWFyKCk7CiB9CiAKLSNpZiAoIVBMQVRGT1JNKFdJTkNF
KSkgJiYgKCFQTEFURk9STShTWU1CSUFOKSkgJiYgKCFQTEFURk9STShXSU5fT1MpIHx8ICFFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkpCisjaWYgKCFPUyhXSU5DRSkpICYmICghT1MoU1lNQklB
TikpICYmICghT1MoV0lORE9XUykgfHwgIUVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSkKIC8v
IEZvciBTYWZhcmkvV2luIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcyBhcmUgaW1wbGVtZW50
ZWQKIC8vIGluIFBsdWdpbkRhdGFiYXNlV2luLmNwcCwgYnV0IGlmIHdlIGNhbiB1c2UgV2ViQ29y
ZSBjb25zdHJ1Y3RzCiAvLyBmb3IgdGhlIGxvZ2ljIHdlIHNob3VsZCBwZXJoYXBzIG1vdmUgaXQg
aGVyZSB1bmRlciBYUF9XSU4/CkBAIC00MjgsNiArNDI4LDYgQEAgdm9pZCBQbHVnaW5EYXRhYmFz
ZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcgogICAgIH0KIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShT
WU1CSUFOKSAmJiAhUExBVEZPUk0oV0lOX09TKQorI2VuZGlmIC8vICFPUyhTWU1CSUFOKSAmJiAh
T1MoV0lORE9XUykKIAogfQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAkocmV2aXNp
b24gNTI3ODIpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBQbHVnaW5QYWNrYWdlOjpQbHVnaW5QYWNrYWdlKGNv
bnN0IFN0cmluCiAgICAgbV9wYXJlbnREaXJlY3RvcnkgPSBtX3BhdGgubGVmdChtX3BhdGgubGVu
Z3RoKCkgLSBtX2ZpbGVOYW1lLmxlbmd0aCgpIC0gMSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oU1lN
QklBTikKKyNpZiAhT1MoU1lNQklBTikKIHZvaWQgUGx1Z2luUGFja2FnZTo6dW5sb2FkKCkKIHsK
ICAgICBpZiAoIW1faXNMb2FkZWQpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBQbHVnaW5QYWNr
YWdlOjp1bmxvYWQoKQogCiAgICAgdW5sb2FkV2l0aG91dFNodXRkb3duKCk7CiB9Ci0jZW5kaWYg
Ly8hUExBVEZPUk0oU1lNQklBTikKKyNlbmRpZiAvLyFPUyhTWU1CSUFOKQogCiB2b2lkIFBsdWdp
blBhY2thZ2U6OnVubG9hZFdpdGhvdXRTaHV0ZG93bigpCiB7CkBAIC0xOTgsNyArMTk4LDcgQEAg
dm9pZCBQbHVnaW5QYWNrYWdlOjpkZXRlcm1pbmVRdWlya3MoY29ucwogfQogI2VuZGlmCiAKLSNp
ZiAhUExBVEZPUk0oV0lOX09TKQorI2lmICFPUyhXSU5ET1dTKQogdm9pZCBQbHVnaW5QYWNrYWdl
OjpkZXRlcm1pbmVNb2R1bGVWZXJzaW9uRnJvbURlc2NyaXB0aW9uKCkKIHsKICAgICAvLyBJdCdz
IGEgYml0IGxhbWUgdG8gZGV0ZWN0IHRoZSBwbHVnaW4gdmVyc2lvbiBieSBwYXJzaW5nIGl0CkBA
IC0zMjYsNyArMzI2LDcgQEAgaW50IFBsdWdpblBhY2thZ2U6OmNvbXBhcmVGaWxlVmVyc2lvbihj
bwogICAgIC8vIHJldHVybiAtMSwgMCwgb3IgMSBpZiBwbHVnLWluIHZlcnNpb24gaXMgbGVzcyB0
aGFuLCBlcXVhbCB0bywgb3IgZ3JlYXRlciB0aGFuCiAgICAgLy8gdGhlIHBhc3NlZCB2ZXJzaW9u
CiAKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICBpZiAobV9tb2R1
bGVWZXJzaW9uLm1vc3RTaWcgIT0gY29tcGFyZVZlcnNpb24ubW9zdFNpZykKICAgICAgICAgcmV0
dXJuIG1fbW9kdWxlVmVyc2lvbi5tb3N0U2lnID4gY29tcGFyZVZlcnNpb24ubW9zdFNpZyA/IDEg
OiAtMTsKICAgICBpZiAobV9tb2R1bGVWZXJzaW9uLmxlYXN0U2lnICE9IGNvbXBhcmVWZXJzaW9u
LmxlYXN0U2lnKQpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5oCShyZXZpc2lvbiA1Mjc4MikK
KysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShTWU1CSUFOKQorI2lmIE9TKFNZTUJJQU4pCiBjbGFz
cyBRUGx1Z2luTG9hZGVyOwogY2xhc3MgTlBJbnRlcmZhY2U7CiAjZW5kaWYKQEAgLTc1LDE3ICs3
NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBjb21wYXJlKGNvbnN0IFBs
dWdpblBhY2thZ2UmKSBjb25zdDsKICAgICAgICAgUGx1Z2luUXVpcmtTZXQgcXVpcmtzKCkgY29u
c3QgeyByZXR1cm4gbV9xdWlya3M7IH0KICAgICAgICAgY29uc3QgUGxhdGZvcm1Nb2R1bGVWZXJz
aW9uJiB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVWZXJzaW9uOyB9Ci0jaWYgUExB
VEZPUk0oU1lNQklBTikKKyNpZiBPUyhTWU1CSUFOKQogICAgICAgICBOUEludGVyZmFjZSogbnBJ
bnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX25wSW50ZXJmYWNlOyB9Ci0jZW5kaWYgLy8gUExB
VEZPUk0oU1lNQklBTikKKyNlbmRpZiAvLyBPUyhTWU1CSUFOKQogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUGx1Z2luUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVfdCYgbGFz
dE1vZGlmaWVkKTsKIAotI2lmIFBMQVRGT1JNKFNZTUJJQU4pCisjaWYgT1MoU1lNQklBTikKICAg
ICAgICAgTlBJbnRlcmZhY2UqIG1fbnBJbnRlcmZhY2U7CiAgICAgICAgIFFQbHVnaW5Mb2FkZXIq
IG1fcGx1Z2luTG9hZGVyOwotI2VuZGlmIC8vIFBMQVRGT1JNKFNZTUJJQU4pCisjZW5kaWYgLy8g
T1MoU1lNQklBTikKICAgICAgICAgYm9vbCBmZXRjaEluZm8oKTsKICAgICAgICAgYm9vbCBpc1Bs
dWdpbkJsYWNrbGlzdGVkKCk7CiAgICAgICAgIHZvaWQgZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gNTI3
ODIpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaWYgUExBVEZPUk0oV0lO
X09TKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyNpZiBPUyhXSU5ET1dTKSAmJiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNpbmNsdWRlICJQbHVnaW5NZXNzYWdlVGhyb3R0
bGVyV2luLmgiCiAjZW5kaWYKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCkBAIC0xMjUsNyAr
MTI1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UgogCiAgICAg
dXBkYXRlUGx1Z2luV2lkZ2V0KCk7CiAKLSNpZiBQTEFURk9STShXSU5fT1MpIHx8IFBMQVRGT1JN
KFNZTUJJQU4pCisjaWYgT1MoV0lORE9XUykgfHwgT1MoU1lNQklBTikKICAgICAvLyBPbiBXaW5k
b3dzIGFuZCBTeW1iaWFuLCBhbHdheXMgY2FsbCBwbHVnaW4gdG8gY2hhbmdlIGdlb21ldHJ5Lgog
ICAgIHNldE5QV2luZG93UmVjdChyZWN0KTsKICNlbGlmIGRlZmluZWQoWFBfVU5JWCkKQEAgLTMx
MCw3ICszMTAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnN0b3AoKQogI2lmZGVmIFhQX1dJTgogICAg
IC8vIFVuc3ViY2xhc3MgdGhlIHdpbmRvdwogICAgIGlmIChtX2lzV2luZG93ZWQpIHsKLSNpZiBQ
TEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICAgICAgV05EUFJPQyBjdXJyZW50V25k
UHJvYyA9IChXTkRQUk9DKUdldFdpbmRvd0xvbmcocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSwgR1dM
X1dORFBST0MpOwogCiAgICAgICAgIGlmIChjdXJyZW50V25kUHJvYyA9PSBQbHVnaW5WaWV3V25k
UHJvYykKQEAgLTgwMywxNCArODAzLDE0IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoRnJhbWUq
IHBhcmVudEZyYW0KICNpZiBkZWZpbmVkKFhQX1VOSVgpIHx8IGRlZmluZWQoUV9XU19YMTEpCiAg
ICAgLCBtX25lZWRzWEVtYmVkKGZhbHNlKQogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOX09TKSAm
JiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fcGx1Z2luV25kUHJvYygwKQogICAgICwgbV9s
YXN0TWVzc2FnZSgwKQogICAgICwgbV9pc0NhbGxpbmdQbHVnaW5XbmRQcm9jKGZhbHNlKQogICAg
ICwgbV93bVByaW50SERDKDApCiAgICAgLCBtX2hhdmVVcGRhdGVkUGx1Z2luV2lkZ2V0KGZhbHNl
KQogI2VuZGlmCi0jaWYgKFBMQVRGT1JNKFFUKSAmJiBQTEFURk9STShXSU5fT1MpKSB8fCBkZWZp
bmVkKFhQX01BQ09TWCkKKyNpZiAoUExBVEZPUk0oUVQpICYmIE9TKFdJTkRPV1MpKSB8fCBkZWZp
bmVkKFhQX01BQ09TWCkKICAgICAsIG1fd2luZG93KDApCiAjZW5kaWYKICNpZiBkZWZpbmVkKFhQ
X01BQ09TWCkKQEAgLTEyMTAsNyArMTIxMCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBNb3ppbGxh
VXNlckFnZW50ID0gIk0KICAgICAgICAgIldpbmRvd3M7IFU7IFdpbmRvd3MgTlQgNS4xOyIKICNl
bGlmIGRlZmluZWQoWFBfVU5JWCkKIC8vIFRoZSBHdGsgcG9ydCB1c2VzIFgxMSBwbHVnaW5zIGlu
IE1hYy4KLSNpZiBQTEFURk9STShEQVJXSU4pICYmIFBMQVRGT1JNKEdUSykKKyNpZiBPUyhEQVJX
SU4pICYmIFBMQVRGT1JNKEdUSykKICAgICAiWDExOyBVOyBJbnRlbCBNYWMgT1MgWDsiCiAjZWxz
ZQogICAgICJYMTE7IFU7IExpbnV4IGk2ODY7IgpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZp
c2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAoUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKFdYKSkKKyNpZiBPUyhXSU5ET1dTKSAmJiAoUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKFdYKSkKIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIHR5cGVkZWYgSFdORCBQbGF0
Zm9ybVBsdWdpbldpZGdldDsKICNlbHNlCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIE1vdXNlRXZlbnQ7CiAg
ICAgY2xhc3MgS1VSTDsKLSNpZiBQTEFURk9STShXSU5fT1MpICYmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQorI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKICAgICBjbGFz
cyBQbHVnaW5QYWNrYWdlOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5
cGU7IH0KICAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
IAotI2lmIFBMQVRGT1JNKFdJTl9PUykgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisj
aWYgT1MoV0lORE9XUykgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIHN0
YXRpYyBMUkVTVUxUIENBTExCQUNLIFBsdWdpblZpZXdXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJB
TSwgTFBBUkFNKTsKICAgICAgICAgTFJFU1VMVCB3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKTsKICAgICAgICAgV05EUFJPQyBwbHVn
aW5XbmRQcm9jKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5XbmRQcm9jOyB9CkBAIC0yMzIsNyAr
MjMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZVdp
bmRvd2xlc3NQbHVnaW5SZWN0KGNvbnN0IEludFJlY3QmKTsKIAotI2lmIFBMQVRGT1JNKFdJTl9P
UykgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjaWYgT1MoV0lORE9XUykgJiYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIHZvaWQgcGFpbnRXaW5kb3dlZFBsdWdp
bkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAgICAgICAg
c3RhdGljIEhEQyBXSU5BUEkgaG9va2VkQmVnaW5QYWludChIV05ELCBQQUlOVFNUUlVDVCopOwog
ICAgICAgICBzdGF0aWMgQk9PTCBXSU5BUEkgaG9va2VkRW5kUGFpbnQoSFdORCwgY29uc3QgUEFJ
TlRTVFJVQ1QqKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgaGFuZGxlRm9jdXNPdXRFdmVudCgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShX
SU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICAgICAgdm9pZCBwYWludEludG9UcmFuc2Zvcm1l
ZENvbnRleHQoSERDKTsKICAgICAgICAgUGFzc1JlZlB0cjxJbWFnZT4gc25hcHNob3QoKTsKICNl
bmRpZgpAQCAtMzAyLDcgKzMwMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBtX25lZWRzWEVtYmVkOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU5fT1MpICYmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogICAgICAgICBPd25QdHI8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4g
bV9tZXNzYWdlVGhyb3R0bGVyOwogICAgICAgICBXTkRQUk9DIG1fcGx1Z2luV25kUHJvYzsKICAg
ICAgICAgdW5zaWduZWQgbV9sYXN0TWVzc2FnZTsKQEAgLTMxMSw3ICszMTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9oYXZlVXBkYXRlZFBsdWdpbldpZGdldDsKICNl
bmRpZgogCi0jaWYgKChQTEFURk9STShRVCkgfHwgUExBVEZPUk0oV1gpKSAmJiBQTEFURk9STShX
SU5fT1MpKSB8fCBkZWZpbmVkKFhQX01BQ09TWCkKKyNpZiAoKFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShXWCkpICYmIE9TKFdJTkRPV1MpKSB8fCBkZWZpbmVkKFhQX01BQ09TWCkKICAgICAgICAg
Ly8gT24gTWFjIE9TWCBhbmQgUXQvV2luZG93cyB0aGUgcGx1Z2luIGRvZXMgbm90IGhhdmUgaXRz
IG93biBuYXRpdmUgd2lkZ2V0LAogICAgICAgICAvLyBidXQgaXMgdXNpbmcgdGhlIGNvbnRhaW5p
bmcgd2luZG93IGFzIGl0cyByZWZlcmVuY2UgZm9yIHBvc2l0aW9uaW5nL3BhaW50aW5nLgogICAg
ICAgICBQbGF0Zm9ybVBsdWdpbldpZGdldCBtX3dpbmRvdzsKQEAgLTMyNiw3ICszMjYsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAKLSNpZiBkZWZpbmVkKFhQX1VOSVgpIHx8IGRlZmluZWQoUV9X
U19YMTEpIHx8IFBMQVRGT1JNKFNZTUJJQU4pCisjaWYgZGVmaW5lZChYUF9VTklYKSB8fCBkZWZp
bmVkKFFfV1NfWDExKSB8fCBPUyhTWU1CSUFOKQogICAgICAgICB2b2lkIHNldE5QV2luZG93SWZO
ZWVkZWQoKTsKICNlbGlmIGRlZmluZWQoWFBfTUFDT1NYKQogICAgICAgICBOUF9DR0NvbnRleHQg
bV9ucENnQ29udGV4dDsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VX
aW4uY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAjZGVmaW5lIF9j
b3VudG9mKHgpIChzaXplb2YoeCkvc2l6ZW9mKHhbMF0pKQogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKIC8vIFdJTkNFIGRvZXNuJ3Qgc3VwcG9ydCBSZWdpc3Ry
eSBLZXkgQWNjZXNzIFJpZ2h0cy4gVGhlIHBhcmFtZXRlciBzaG91bGQgYWx3YXlzIGJlIDAKICNk
ZWZpbmUgS0VZX0VOVU1FUkFURV9TVUJfS0VZUyAwCiAKQEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjCiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRp
cmVjdG9yaWVzKQogewotI2lmICFQTEFURk9STShXSU5DRSkKKyNpZiAhT1MoV0lOQ0UpCiAgICAg
Ly8gVGhlIG5ldyBXTVAgRmlyZWZveCBwbHVnaW4gaXMgaW5zdGFsbGVkIGluIFxQRmlsZXNcUGx1
Z2lucyBpZiBpdCBjYW4ndCBmaW5kIGFueSBGaXJlZm94IGluc3RhbGxzCiAgICAgV0NIQVIgcGx1
Z2luRGlyZWN0b3J5U3RyW19NQVhfUEFUSCArIDFdOwogICAgIERXT1JEIHBsdWdpbkRpcmVjdG9y
eVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxc
UEZpbGVzXFxQbHVnaW5zIiksIHBsdWdpbkRpcmVjdG9yeVN0ciwgX2NvdW50b2YocGx1Z2luRGly
ZWN0b3J5U3RyKSk7CkBAIC0zNTUsNyArMzU1LDcgQEAgZXhpdDoKIAogc3RhdGljIGlubGluZSB2
b2lkIGFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0
b3JpZXMpCiB7Ci0jaWYgIVBMQVRGT1JNKFdJTkNFKQorI2lmICFPUyhXSU5DRSkKICAgICBXQ0hB
UiBzeXN0ZW1EaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwogCiAgICAgaWYgKEdldFN5c3RlbURpcmVj
dG9yeShzeXN0ZW1EaXJlY3RvcnlTdHIsIF9jb3VudG9mKHN5c3RlbURpcmVjdG9yeVN0cikpID09
IDApCkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblBhY2thZ2VXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luUGFja2FnZVdpbi5jcHAJKHJldmlz
aW9uIDUyNzgyKQorKysgV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5QYWNrYWdlV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9h
ZCgpCiAgICAgICAgIG1fbG9hZENvdW50Kys7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0g
ZWxzZSB7Ci0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgICAgIG1fbW9k
dWxlID0gOjpMb2FkTGlicmFyeVcobV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkpOwogI2Vsc2UKICAgICAgICAgV0NIQVIgY3VycmVudFBhdGhbTUFYX1BBVEhdOwpAQCAtMjY3
LDcgKzI2Nyw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAgICAgTlBfSW5pdGlhbGl6
ZUZ1bmNQdHIgTlBfSW5pdGlhbGl6ZSA9IDA7CiAgICAgTlBFcnJvciBucEVycjsKIAotI2lmIFBM
QVRGT1JNKFdJTkNFKQorI2lmIE9TKFdJTkNFKQogICAgIE5QX0luaXRpYWxpemUgPSAoTlBfSW5p
dGlhbGl6ZUZ1bmNQdHIpR2V0UHJvY0FkZHJlc3MobV9tb2R1bGUsIEwiTlBfSW5pdGlhbGl6ZSIp
OwogICAgIE5QX0dldEVudHJ5UG9pbnRzID0gKE5QX0dldEVudHJ5UG9pbnRzRnVuY1B0cilHZXRQ
cm9jQWRkcmVzcyhtX21vZHVsZSwgTCJOUF9HZXRFbnRyeVBvaW50cyIpOwogICAgIG1fTlBQX1No
dXRkb3duID0gKE5QUF9TaHV0ZG93blByb2NQdHIpR2V0UHJvY0FkZHJlc3MobV9tb2R1bGUsIEwi
TlBfU2h1dGRvd24iKTsKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAko
cmV2aXNpb24gNTI3ODIpCisrKyBXZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU1Zh
bHVlLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAotI2lmIFBMQVRGT1JNKFdJTkNF
KQorI2lmIE9TKFdJTkNFKQogI3VuZGVmIExPR19OUEVSUk9SCiAjZGVmaW5lIExPR19OUEVSUk9S
KHgpCiAjdW5kZWYgTE9HX1BMVUdJTl9ORVRfRVJST1IKQEAgLTEyMCw3ICsxMjAsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogY29uc3QgTFBDV1NUUiBrV2ViUGx1Z2luVmlld2Rvd0Ns
YXNzTmFtZSA9IEwiV2ViUGx1Z2luVmlldyI7CiBjb25zdCBMUENXU1RSIGtXZWJQbHVnaW5WaWV3
UHJvcGVydHkgPSBMIldlYlBsdWdpblZpZXdQcm9wZXJ0eSI7CiAKLSNpZiAhUExBVEZPUk0oV0lO
Q0UpCisjaWYgIU9TKFdJTkNFKQogLy8gVGhlIGNvZGUgdXNlZCB0byBob29rIEJlZ2luUGFpbnQv
RW5kUGFpbnQgb3JpZ2luYWxseSBjYW1lIGZyb20KIC8vIDxodHRwOi8vd3d3LmZlbmd5dWFuLmNv
bS9hcnRpY2xlL3dtcHJpbnQuaHRtbD4uCiAvLyBDb3B5cmlnaHQgKEMpIDIwMDAgYnkgRmVuZyBZ
dWFuICh3d3cuZmVuZ3l1YW4uY29tKS4KQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgQllURSog
ZW5kUGFpbnQ7CiB0eXBlZGVmIEhEQyAoV0lOQVBJICpQdHJCZWdpblBhaW50KShIV05ELCBQQUlO
VFNUUlVDVCopOwogdHlwZWRlZiBCT09MIChXSU5BUEkgKlB0ckVuZFBhaW50KShIV05ELCBjb25z
dCBQQUlOVFNUUlVDVCopOwogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiBQTEFURk9STShYODZf
NjQpICYmIENPTVBJTEVSKE1TVkMpCisjaWYgT1MoV0lORE9XUykgJiYgUExBVEZPUk0oWDg2XzY0
KSAmJiBDT01QSUxFUihNU1ZDKQogZXh0ZXJuICJDIiBIREMgX19zdGRjYWxsIF9IQmVnaW5QYWlu
dChIV05EIGhXbmQsIExQUEFJTlRTVFJVQ1QgbHBQYWludCk7CiBleHRlcm4gIkMiIEJPT0wgX19z
dGRjYWxsIF9IRW5kUGFpbnQoSFdORCBoV25kLCBjb25zdCBQQUlOVFNUUlVDVCogbHBQYWludCk7
CiAjZW5kaWYKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgYm9vbCByZWdpc3RlclBsdWdpblZp
ZXcoKQogCiAgICAgQVNTRVJUKFBhZ2U6Omluc3RhbmNlSGFuZGxlKCkpOwogCi0jaWYgUExBVEZP
Uk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgV05EQ0xBU1Mgd2NleCA9IHsgMCB9OwogI2Vs
c2UKICAgICBXTkRDTEFTU0VYIHdjZXg7CkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIGJvb2wg
cmVnaXN0ZXJQbHVnaW5WaWV3KCkKICNlbmRpZgogCiAgICAgd2NleC5zdHlsZSAgICAgICAgICA9
IENTX0RCTENMS1M7Ci0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgd2Nl
eC5zdHlsZSAgICAgICAgICB8PSBDU19QQVJFTlREQzsKICNlbmRpZgogICAgIHdjZXgubHBmbldu
ZFByb2MgICAgPSBEZWZXaW5kb3dQcm9jOwpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBib29s
IHJlZ2lzdGVyUGx1Z2luVmlldygpCiAgICAgd2NleC5scHN6TWVudU5hbWUgICA9IDA7CiAgICAg
d2NleC5scHN6Q2xhc3NOYW1lICA9IGtXZWJQbHVnaW5WaWV3ZG93Q2xhc3NOYW1lOwogCi0jaWYg
UExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgcmV0dXJuICEhUmVnaXN0ZXJDbGFz
cygmd2NleCk7CiAjZWxzZQogICAgIHJldHVybiAhIVJlZ2lzdGVyQ2xhc3NFeCgmd2NleCk7CkBA
IC0zODYsNyArMzg2LDcgQEAgUGx1Z2luVmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVz
cwogICAgICAgICBtX3BvcFBvcHVwc1N0YXRlVGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIH0K
IAotI2lmICFQTEFURk9STShXSU5DRSkKKyNpZiAhT1MoV0lOQ0UpCiAgICAgaWYgKG1lc3NhZ2Ug
PT0gV01fUFJJTlRDTElFTlQpIHsKICAgICAgICAgLy8gTW9zdCAoYWxsPykgd2luZG93ZWQgcGx1
Z2lucyBkb24ndCByZXNwb25kIHRvIFdNX1BSSU5UQ0xJRU5ULCBzbyB3ZQogICAgICAgICAvLyBj
aGFuZ2UgdGhlIG1lc3NhZ2UgdG8gV01fUEFJTlQgYW5kIHJlbHkgb24gb3VyIGhvb2tlZCB2ZXJz
aW9ucyBvZgpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6dXBkYXRlUGx1Z2lu
V2lkZ2V0KCkKICAgICBJbnRSZWN0IG9sZFdpbmRvd1JlY3QgPSBtX3dpbmRvd1JlY3Q7CiAgICAg
SW50UmVjdCBvbGRDbGlwUmVjdCA9IG1fY2xpcFJlY3Q7CiAKLSNpZiBQTEFURk9STShXSU5DRSkK
KyNpZiBPUyhXSU5DRSkKICAgICBtX3dpbmRvd1JlY3QgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9X
aW5kb3coZnJhbWVSZWN0KCkpOwogI2Vsc2UKICAgICBtX3dpbmRvd1JlY3QgPSBJbnRSZWN0KGZy
YW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhmcmFtZVJlY3QoKS5sb2NhdGlvbigpKSwgZnJhbWVS
ZWN0KCkuc2l6ZSgpKTsKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBhaW50
SW50b1RyYW5zZm9ybWVkQ29uCiAKICAgICBXSU5ET1dQT1Mgd2luZG93cG9zID0geyAwIH07CiAK
LSNpZiBQTEFURk9STShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICBJbnRSZWN0IHIgPSBzdGF0
aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3coZnJhbWVSZWN0
KCkpOwogCiAgICAgd2luZG93cG9zLnggPSByLngoKTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnBhaW50SW50b1RyYW5zZm9ybWVkQ29uCiAKIHZvaWQgUGx1Z2luVmlldzo6
cGFpbnRXaW5kb3dlZFBsdWdpbkludG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSNpZiAhUExBVEZPUk0oV0lOQ0UpCisjaWYgIU9TKFdJ
TkNFKQogICAgIEFTU0VSVChtX2lzV2luZG93ZWQpOwogICAgIEFTU0VSVChjb250ZXh0LT5zaG91
bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIAogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pc1dpbmRvd2VkKSB7Ci0jaWYgIVBMQVRGT1JNKFdJTkNFKQorI2lmICFPUyhXSU5DRSkK
ICAgICAgICAgaWYgKGNvbnRleHQtPnNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MoKSkKICAgICAg
ICAgICAgIHBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dChjb250ZXh0LCByZWN0KTsKICNl
bmRpZgpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiAKICAgICAvLyBvZiB0aGUgd2luZG93IGFuZCB0aGUgcGx1Z2luIGV4cGVjdHMgdGhh
dCB0aGUgcGFzc2VkIGluIERDIGhhcyB3aW5kb3cgY29vcmRpbmF0ZXMuCiAgICAgLy8gSW4gdGhl
IFF0IHBvcnQgd2UgYWx3YXlzIGRyYXcgaW4gYW4gb2Zmc2NyZWVuIGJ1ZmZlciBhbmQgdGhlcmVm
b3JlIG5lZWQgdG8gcHJlc2VydmUKICAgICAvLyB0aGUgdHJhbnNsYXRpb24gc2V0IGluIGdldFdp
bmRvd3NDb250ZXh0LgotI2lmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKFdJTkNFKQorI2lm
ICFQTEFURk9STShRVCkgJiYgIU9TKFdJTkNFKQogICAgIGlmICghY29udGV4dC0+aW5UcmFuc3Bh
cmVuY3lMYXllcigpKSB7CiAgICAgICAgIFhGT1JNIHRyYW5zZm9ybTsKICAgICAgICAgR2V0V29y
bGRUcmFuc2Zvcm0oaGRjLCAmdHJhbnNmb3JtKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5CiAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKFdJTkNFKQorI2lmICFPUyhXSU5DRSkK
IGV4dGVybiBIQ1VSU09SIGxhc3RTZXRDdXJzb3I7CiBleHRlcm4gYm9vbCBpZ25vcmVOZXh0U2V0
Q3Vyc29yOwogI2VuZGlmCkBAIC03MTQsNyArNzE0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KE1vdXNlRQogICAgIGlmICghZGlzcGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQog
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIAotI2lmICFQTEFURk9STShRVCkg
JiYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oV0lOQ0UpCisjaWYgIVBMQVRGT1JNKFFUKSAm
JiAhUExBVEZPUk0oV1gpICYmICFPUyhXSU5DRSkKICAgICAvLyBDdXJyZW50bHksIFdpZGdldDo6
c2V0Q3Vyc29yIGlzIGFsd2F5cyBjYWxsZWQgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpbiBFdmVudEhh
bmRsZXIuY3BwCiAgICAgLy8gYW5kIHNpbmNlIHdlIGRvbid0IHdhbnQgdGhhdCB3ZSBzZXQgaWdu
b3JlTmV4dFNldEN1cnNvciB0byB0cnVlIGhlcmUgdG8gcHJldmVudCB0aGF0LgogICAgIGlnbm9y
ZU5leHRTZXRDdXJzb3IgPSB0cnVlOwpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHAKIHsKICAgICBXaWRnZXQ6OnNldFBhcmVudChwYXJl
bnQpOwogCi0jaWYgUExBVEZPUk0oV0lOQ0UpCisjaWYgT1MoV0lOQ0UpCiAgICAgaWYgKHBhcmVu
dCkgewogICAgICAgICBpbml0KCk7CiAgICAgICAgIGlmIChwYXJlbnQtPmlzVmlzaWJsZSgpKQpA
QCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0
IEkKICAgICBpZiAoIW1faXNTdGFydGVkKQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9S
TShXSU5DRSkKKyNpZiBPUyhXSU5DRSkKICAgICBJbnRSZWN0IHIgPSBzdGF0aWNfY2FzdDxGcmFt
ZVZpZXcqPihwYXJlbnQoKSktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiAgICAgbV9ucFdpbmRv
dy54ID0gci54KCk7CiAgICAgbV9ucFdpbmRvdy55ID0gci55KCk7CkBAIC04MDYsNyArODA2LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd1JlY3QoY29uc3QgSQogCiAgICAgICAgIEFT
U0VSVChwbGF0Zm9ybVBsdWdpbldpZGdldCgpKTsKIAotI2lmIFBMQVRGT1JNKFdJTkNFKQorI2lm
IE9TKFdJTkNFKQogICAgICAgICBpZiAoIW1fcGx1Z2luV25kUHJvYykgewogICAgICAgICAgICAg
V05EUFJPQyBjdXJyZW50V25kUHJvYyA9IChXTkRQUk9DKUdldFdpbmRvd0xvbmcocGxhdGZvcm1Q
bHVnaW5XaWRnZXQoKSwgR1dMX1dORFBST0MpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRXbmRQ
cm9jICE9IFBsdWdpblZpZXdXbmRQcm9jKQpAQCAtOTg3LDcgKzk4Nyw3IEBAIGJvb2wgUGx1Z2lu
Vmlldzo6cGxhdGZvcm1TdGFydCgpCiAKICAgICBpZiAobV9pc1dpbmRvd2VkKSB7CiAgICAgICAg
IHJlZ2lzdGVyUGx1Z2luVmlldygpOwotI2lmICFQTEFURk9STShXSU5DRSkKKyNpZiAhT1MoV0lO
Q0UpCiAgICAgICAgIHNldFVwT2Zmc2NyZWVuUGFpbnRpbmdIb29rcyhob29rZWRCZWdpblBhaW50
LCBob29rZWRFbmRQYWludCk7CiAjZW5kaWYKIApAQCAtOTk5LDcgKzk5OSw3IEBAIGJvb2wgUGx1
Z2luVmlldzo6cGxhdGZvcm1TdGFydCgpCiAgICAgICAgIEhXTkQgd2luZG93ID0gOjpDcmVhdGVX
aW5kb3dFeCgwLCBrV2ViUGx1Z2luVmlld2Rvd0NsYXNzTmFtZSwgMCwgZmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBwYXJlbnRXaW5kb3dI
YW5kbGUsIDAsIFBhZ2U6Omluc3RhbmNlSGFuZGxlKCksIDApOwogCi0jaWYgUExBVEZPUk0oV0lO
X09TKSAmJiAoUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKFdYKSkKKyNpZiBPUyhXSU5ET1dTKSAm
JiAoUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKFdYKSkKICAgICAgICAgbV93aW5kb3cgPSB3aW5k
b3c7CiAjZWxzZQogICAgICAgICBzZXRQbGF0Zm9ybVdpZGdldCh3aW5kb3cpOwpAQCAtMTAwNyw5
ICsxMDA3LDkgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkKIAogICAgICAgICAv
LyBDYWxsaW5nIFNldFdpbmRvd0xvbmdQdHJBIGhlcmUgbWFrZXMgdGhlIHdpbmRvdyBwcm9jIEFT
Q0lJLCB3aGljaCBpcyByZXF1aXJlZCBieSBhdCBsZWFzdAogICAgICAgICAvLyB0aGUgU2hvY2t3
YXZlIERpcmVjdG9yIHBsdWctaW4uCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiBQTEFURk9STShY
ODZfNjQpICYmIENPTVBJTEVSKE1TVkMpCisjaWYgT1MoV0lORE9XUykgJiYgUExBVEZPUk0oWDg2
XzY0KSAmJiBDT01QSUxFUihNU1ZDKQogICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHJBKHBsYXRm
b3JtUGx1Z2luV2lkZ2V0KCksIEdXTFBfV05EUFJPQywgKExPTkdfUFRSKURlZldpbmRvd1Byb2NB
KTsKLSNlbGlmIFBMQVRGT1JNKFdJTkNFKQorI2VsaWYgT1MoV0lOQ0UpCiAgICAgICAgIDo6U2V0
V2luZG93TG9uZyhwbGF0Zm9ybVBsdWdpbldpZGdldCgpLCBHV0xfV05EUFJPQywgKExPTkcpRGVm
V2luZG93UHJvYyk7CiAjZWxzZQogICAgICAgICA6OlNldFdpbmRvd0xvbmdQdHJBKHBsYXRmb3Jt
UGx1Z2luV2lkZ2V0KCksIEdXTF9XTkRQUk9DLCAoTE9ORylEZWZXaW5kb3dQcm9jQSk7CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzg3KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEwLTAxLTA0ICBNYWNpZWogU3Rh
Y2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVvcmdhbml6ZSwgZG9jdW1lbnQgYW5kIHJlbmFtZSBPUygpIHBs
YXRmb3JtIG1hY3Jvcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzMTk4CisKKyAgICAgICAgQWRhcHQgdG8gbmFtZSBjaGFuZ2VzLgorCisgICAgICAg
ICogc3JjL0Nocm9taXVtQnJpZGdlLmNwcDoKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmlzU2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgIChXZWJL
aXQ6OkVkaXRvckNsaWVudEltcGw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAg
ICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Om1ha2VDb250ZXh0Q3VycmVu
dCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lSW1wbDo6c2VsZWN0aW9uQXNUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJ
bXBsOjpwcmludFBhZ2UpOgorICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjptb3VzZURvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6bW91c2VDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpt
b3VzZVVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFNjcm9sbGJhckNvbG9ycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpuYXZpZ2F0aW9uUG9saWN5RnJvbU1vdXNlRXZlbnQpOgorCiAyMDEw
LTAxLTA0ICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4
IENocm9taXVtIGJ1aWxkIGJ1c3RhZ2UuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
aXVtQnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVt
QnJpZGdlLmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
aXVtQnJpZGdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDEzIEBACiAjaW5jbHVk
ZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnRJbXBsLmgiCiAKLSNp
ZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICNpbmNsdWRlICJXZWJSZWN0Lmgi
CiAjaW5jbHVkZSAiV2ViU2FuZGJveFN1cHBvcnQuaCIKICNpbmNsdWRlICJXZWJUaGVtZUVuZ2lu
ZS5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShMSU5VWCkKKyNpZiBPUyhMSU5VWCkKICNpbmNs
dWRlICJXZWJTYW5kYm94U3VwcG9ydC5oIgogI2luY2x1ZGUgIldlYkZvbnRJbmZvLmgiCiAjZW5k
aWYKQEAgLTI4NSw3ICsyODUsNyBAQCBLVVJMIENocm9taXVtQnJpZGdlOjpmaWxlUGF0aFRvVVJM
KGNvbnN0CiAKIC8vIEZvbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykK
KyNpZiBPUyhXSU5ET1dTKQogYm9vbCBDaHJvbWl1bUJyaWRnZTo6ZW5zdXJlRm9udExvYWRlZChI
Rk9OVCBmb250KQogewogICAgIFdlYlNhbmRib3hTdXBwb3J0KiBzcyA9IHdlYktpdENsaWVudCgp
LT5zYW5kYm94U3VwcG9ydCgpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIGJvb2wgQ2hyb21pdW1Ccmlk
Z2U6OmVuc3VyZUZvbnRMb2FkZWQoSEYKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTElOVVgp
CisjaWYgT1MoTElOVVgpCiBTdHJpbmcgQ2hyb21pdW1CcmlkZ2U6OmdldEZvbnRGYW1pbHlGb3JD
aGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycykK
IHsKICAgICBpZiAod2ViS2l0Q2xpZW50KCktPnNhbmRib3hTdXBwb3J0KCkpCkBAIC00ODAsNyAr
NDgwLDcgQEAgZG91YmxlIENocm9taXVtQnJpZGdlOjpjdXJyZW50VGltZSgpCiAKIC8vIFRoZW1p
bmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQog
CiB2b2lkIENocm9taXVtQnJpZGdlOjpwYWludEJ1dHRvbigKICAgICBHcmFwaGljc0NvbnRleHQq
IGdjLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLApJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNSw3ICsxMDUsNyBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmlzU2VsZWN0VHJhaWxpbmdX
CiB7CiAgICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybiBtX3dlYlZp
ZXctPmNsaWVudCgpLT5pc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKLSNpZiBQ
TEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNl
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBDdHJsS2V5ID0gMSA8PCAwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEg
PDwgMTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBNZXRhS2V5ID0gMSA8PCAzOwotI2lmIFBMQVRGT1JNKERBUldJTikKKyNp
ZiBPUyhEQVJXSU4pCiAvLyBBbGlhc2VzIGZvciB0aGUgZ2VuZXJpYyBrZXkgZGVmaW50aW9ucyB0
byBtYWtlIGtiZCBzaG9ydGN1dHMgZGVmaW5pdGlvbnMgbW9yZQogLy8gcmVhZGFibGUgb24gT1Mg
WC4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPcHRpb25LZXkgID0gQWx0S2V5OwpAQCAtMzg3LDcg
KzM4Nyw3IEBAIHN0cnVjdCBLZXlQcmVzc0VudHJ5IHsKIHN0YXRpYyBjb25zdCBLZXlEb3duRW50
cnkga2V5RG93bkVudHJpZXNbXSA9IHsKICAgICB7IFZLRVlfTEVGVCwgICAwLCAgICAgICAgICAg
ICAgICAgICJNb3ZlTGVmdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBW
S0VZX0xFRlQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rp
b24iICAgICAgICAgICB9LAotI2lmIFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAg
ICAgeyBWS0VZX0xFRlQsICAgT3B0aW9uS2V5LCAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAogICAgIHsgVktFWV9MRUZULCAgIE9wdGlvbktleSB8IFNo
aWZ0S2V5LAogICAgICAgICAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAgLTM5OCw3ICszOTgsNyBAQCBzdGF0
aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzCiAjZW5kaWYKICAgICB7IFZLRVlf
UklHSFQsICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCiAgICAgeyBWS0VZX1JJR0hULCAgU2hpZnRLZXksICAgICAgICAgICAiTW92
ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICB9LAotI2lmIFBMQVRGT1JNKERBUldJ
TikKKyNpZiBPUyhEQVJXSU4pCiAgICAgeyBWS0VZX1JJR0hULCAgT3B0aW9uS2V5LCAgICAgICAg
ICAiTW92ZVdvcmRSaWdodCIgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgIHsgVktFWV9S
SUdIVCwgIE9wdGlvbktleSB8IFNoaWZ0S2V5LAogICAgICAgIk1vdmVXb3JkUmlnaHRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAg
LTQxOCwxMiArNDE4LDEyIEBAIHN0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJp
ZXMKICAgICB7IFZLRVlfSE9NRSwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUiICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS0VZX0hPTUUsICAgU2hpZnRLZXks
CiAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAotI2lmIFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhE
QVJXSU4pCiAgICAgeyBWS0VZX0xFRlQsICAgQ29tbWFuZEtleSwgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICB9LAogICAgIHsgVktFWV9MRUZULCAgIENvbW1h
bmRLZXkgfCBTaGlmdEtleSwKICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAjZW5kaWYKLSNpZiBQ
TEFURk9STShEQVJXSU4pCisjaWYgT1MoREFSV0lOKQogICAgIHsgVktFWV9VUCwgICAgIENvbW1h
bmRLZXksICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiICAgICAgICAgICAgfSwK
ICAgICB7IFZLRVlfVVAsICAgICBDb21tYW5kS2V5IHwgU2hpZnRLZXksCiAgICAgICAgICJNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAg
ICAgICAgICB9LApAQCAtNDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBjb25zdCBLZXlEb3duRW50cnkg
a2V5RG93bkVudHJpZXMKICNlbmRpZgogICAgIHsgVktFWV9FTkQsICAgIDAsICAgICAgICAgICAg
ICAgICAgIk1vdmVUb0VuZE9mTGluZSIgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZL
RVlfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgIH0sCi0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJTikKICAg
ICB7IFZLRVlfRE9XTiwgICBDb21tYW5kS2V5LCAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50
IiAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS0VZX0RPV04sICAgQ29tbWFuZEtleSB8IFNo
aWZ0S2V5LAogICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAgLTQ0Myw3ICs0NDMsNyBAQCBzdGF0
aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzCiAgICAgeyBWS0VZX0VORCwgICAg
Q3RybEtleSB8IFNoaWZ0S2V5LAogICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlm
eVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICNlbmRpZgotI2lm
IFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAgICAgeyBWS0VZX1JJR0hULCAgQ29t
bWFuZEtleSwgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICB9
LAogICAgIHsgVktFWV9SSUdIVCwgIENvbW1hbmRLZXkgfCBTaGlmdEtleSwKICAgICAgICAgIk1v
dmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIGNvbnN0IEtleURvd25FbnRy
eSBrZXlEb3duRW50cmllcwogICAgIHsgVktFWV9CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAg
IkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLRVlfQkFD
SywgICBTaGlmdEtleSwgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgeyBWS0VZX0RFTEVURSwgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRl
Rm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICB9LAotI2lmIFBMQVRGT1JNKERBUldJTikK
KyNpZiBPUyhEQVJXSU4pCiAgICAgeyBWS0VZX0JBQ0ssICAgT3B0aW9uS2V5LCAgICAgICAgICAi
RGVsZXRlV29yZEJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICB9LAogICAgIHsgVktFWV9ERUxF
VEUsIE9wdGlvbktleSwgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAgICAgICAgICAgICAg
ICAgICAgfSwKICNlbHNlCkBAIC00NzMsNyArNDczLDcgQEAgc3RhdGljIGNvbnN0IEtleURvd25F
bnRyeSBrZXlEb3duRW50cmllcwogICAgIHsgVktFWV9JTlNFUlQsIEN0cmxLZXksICAgICAgICAg
ICAgIkNvcHkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLRVlf
SU5TRVJULCBTaGlmdEtleSwgICAgICAgICAgICJQYXN0ZSIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCiAgICAgeyBWS0VZX0RFTEVURSwgU2hpZnRLZXksICAgICAgICAgICAiQ3V0
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotI2lmICFQTEFURk9STShEQVJX
SU4pCisjaWYgIU9TKERBUldJTikKICAgICAvLyBPbiBPUyBYLCB3ZSBwaXBlIHRoZXNlIGJhY2sg
dG8gdGhlIGJyb3dzZXIsIHNvIHRoYXQgaXQgY2FuIGRvIG1lbnUgaXRlbQogICAgIC8vIGJsaW5r
aW5nLgogICAgIHsgJ0MnLCAgICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIkNvcHkiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKQEAgLTYwMCwxMyArNjAwLDEzIEBAIGJvb2wg
RWRpdG9yQ2xpZW50SW1wbDo6aGFuZGxlRWRpdGluZ0tleWIKICAgICAgICAgLy8gdW5leHBlY3Rl
ZCBiZWhhdmlvdXIKICAgICAgICAgaWYgKGNoIDwgJyAnKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2lmICFQTEFURk9STShXSU5fT1MpCisjaWYgIU9TKFdJTkRPV1MpCiAgICAgICAgIC8v
IERvbid0IGluc2VydCBBU0NJSSBjaGFyYWN0ZXIgaWYgY3RybCB3L28gYWx0IG9yIG1ldGEgaXMg
b24uCiAgICAgICAgIC8vIE9uIE1hYywgd2Ugc2hvdWxkIGlnbm9yZSBldmVudHMgd2hlbiBtZXRh
IGlzIG9uIChDb21tYW5kLTx4PikuCiAgICAgICAgIGlmIChjaCA8IDB4ODApIHsKICAgICAgICAg
ICAgIGlmIChldnQtPmtleUV2ZW50KCktPmN0cmxLZXkoKSAmJiAhZXZ0LT5rZXlFdmVudCgpLT5h
bHRLZXkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oREFS
V0lOKQorI2lmIE9TKERBUldJTikKICAgICAgICAgICAgIGlmIChldnQtPmtleUV2ZW50KCktPm1l
dGFLZXkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTI3
ODIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMjUsNyArMTMyNSw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFt
ZUxvYWRlckNsaWVudEltcGwKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAgIGJvb2wg
bG9hZE1hbnVhbGx5KQogewotI2lmICFQTEFURk9STShXSU5fT1MpCisjaWYgIU9TKFdJTkRPV1Mp
CiAgICAgLy8gV2ViQ29yZSBhc2tzIHVzIHRvIG1ha2UgYSBwbHVnaW4gZXZlbiBpZiB3ZSBkb24n
dCBoYXZlIGEKICAgICAvLyByZWdpc3RlcmVkIGhhbmRsZXIsIHdpdGggYSBjb21tZW50IHNheWlu
ZyBpdCdzIHNvIHdlIGNhbiBkaXNwbGF5CiAgICAgLy8gdGhlIGJyb2tlbiBwbHVnaW4gaWNvbi4g
IEluIENocm9taXVtLCB3ZSBub3JtYWxseSByZWdpc3RlciBhCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KICNlbmRpZgogCkBAIC03NiwxMSArNzYsMTEgQEAKICNpbmNsdWRlICJOYXRpdmVJ
bWFnZVNraWEuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oREFSV0lOKQorI2lmIE9TKERBUldJ
TikKICNkZWZpbmUgVVNFX1RFWFRVUkVfUkVDVEFOR0xFX0ZPUl9GUkFNRUJVRkZFUgogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShMSU5VWCkKKyNpZiBPUyhMSU5VWCkKICNpbmNsdWRlIDxkbGZjbi5o
PgogI2luY2x1ZGUgIkdML2dseGV3LmgiCiAjZW5kaWYKQEAgLTE4Miw3ICsxODIsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBzX2luaXRpYWxpemVkR0xFVzsKLSNpZiBQ
TEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICBIV05EICBtX2NhbnZhc1dpbmRv
dzsKICAgICBIREMgICBtX2NhbnZhc0RDOwogICAgIEhHTFJDIG1fY29udGV4dE9iajsKQEAgLTE5
MCw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIENHTFBCdWZmZXJPYmogbV9wYnVmZmVyOwogICAg
IENHTENvbnRleHRPYmogbV9jb250ZXh0T2JqOwogICAgIHVuc2lnbmVkIGNoYXIqIG1fcmVuZGVy
T3V0cHV0OwotI2VsaWYgUExBVEZPUk0oTElOVVgpCisjZWxpZiBPUyhMSU5VWCkKICAgICBHTFhD
b250ZXh0IG1fY29udGV4dE9iajsKICAgICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKIApAQCAtMjkw
LDcgKzI5MCw3IEBAIHByaXZhdGU6CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
c19pbml0aWFsaXplZEdMRVcgPSBmYWxzZTsKIAotI2lmIFBMQVRGT1JNKExJTlVYKQorI2lmIE9T
KExJTlVYKQogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uKiBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpzX2dsID0gMDsKIAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R0xDb25uZWN0aW9uKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rpb246
OmNyZWF0ZSgpCkBAIC0zNTIsNyArMzUyLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
R0xDb25uZWN0aW9uOgogICAgIGRsY2xvc2UobV9saWJHTCk7CiB9CiAKLSNlbmRpZiAgLy8gUExB
VEZPUk0oTElOVVgpCisjZW5kaWYgIC8vIE9TKExJTlVYKQogCiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpWZXJ0ZXhBdHRyaWJQb2ludGVyU3RhdGU6OlZlcnRleEF0dHJpYlBvaW50ZXJTdGF0
ZSgpCiAgICAgOiBlbmFibGVkKGZhbHNlKQpAQCAtMzc4LDcgKzM3OCw3IEBAIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICNpZiBQTEFURk9STShTS0lBKQogICAgICwg
bV9yZXNpemluZ0JpdG1hcCgwKQogI2VuZGlmCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9T
KFdJTkRPV1MpCiAgICAgLCBtX2NhbnZhc1dpbmRvdygwKQogICAgICwgbV9jYW52YXNEQygwKQog
ICAgICwgbV9jb250ZXh0T2JqKDApCkBAIC0zODYsMTQgKzM4NiwxNCBAQCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAgICAgLCBtX3BidWZmZXIoMCkKICAgICAsIG1f
Y29udGV4dE9iaigwKQogICAgICwgbV9yZW5kZXJPdXRwdXQoMCkKLSNlbGlmIFBMQVRGT1JNKExJ
TlVYKQorI2VsaWYgT1MoTElOVVgpCiAgICAgLCBtX2NvbnRleHRPYmooMCkKICAgICAsIG1fcGJ1
ZmZlcigwKQogI2Vsc2UKICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlm
CiB7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgV05EQ0xBU1Mg
d2M7CiAgICAgaWYgKCFHZXRDbGFzc0luZm8oR2V0TW9kdWxlSGFuZGxlKDApLCBMIkNBTlZBU0dM
IiwgJndjKSkgewogICAgICAgICBaZXJvTWVtb3J5KCZ3Yywgc2l6ZW9mKFdORENMQVNTKSk7CkBA
IC01MDUsNyArNTA1LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250
ZQogICAgIH0KICAgICBtX3BidWZmZXIgPSBwYnVmZmVyOwogICAgIG1fY29udGV4dE9iaiA9IGNv
bnRleHQ7Ci0jZWxpZiBQTEFURk9STShMSU5VWCkKKyNlbGlmIE9TKExJTlVYKQogICAgIGlmICgh
c19nbCkgewogICAgICAgICBzX2dsID0gR0xDb25uZWN0aW9uOjpjcmVhdGUoKTsKICAgICAgICAg
aWYgKCFzX2dsKQpAQCAtNTkyLDcgKzU5Miw3IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
On5HcmFwaGljc0NvbnQKICAgICBpZiAobV9yZXNpemluZ0JpdG1hcCkKICAgICAgICAgZGVsZXRl
IG1fcmVzaXppbmdCaXRtYXA7CiAjZW5kaWYKLSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1Mo
V0lORE9XUykKICAgICB3Z2xNYWtlQ3VycmVudCgwLCAwKTsKICAgICB3Z2xEZWxldGVDb250ZXh0
KG1fY29udGV4dE9iaik7CiAgICAgUmVsZWFzZURDKG1fY2FudmFzV2luZG93LCBtX2NhbnZhc0RD
KTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhp
Y3NDb250CiAgICAgQ0dMRGVzdHJveVBCdWZmZXIobV9wYnVmZmVyKTsKICAgICBpZiAobV9yZW5k
ZXJPdXRwdXQpCiAgICAgICAgIGRlbGV0ZVtdIG1fcmVuZGVyT3V0cHV0OwotI2VsaWYgUExBVEZP
Uk0oTElOVVgpCisjZWxpZiBPUyhMSU5VWCkKICAgICBzX2dsLT5tYWtlQ3VycmVudCgwLCAwKTsK
ICAgICBzX2dsLT5kZXN0cm95Q29udGV4dChtX2NvbnRleHRPYmopOwogICAgIHNfZ2wtPmRlc3Ry
b3lQYnVmZmVyKG1fcGJ1ZmZlcik7CkBAIC02MTUsNyArNjE1LDcgQEAgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udAogCiBib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9T
KFdJTkRPV1MpCiAgICAgaWYgKHdnbEdldEN1cnJlbnRDb250ZXh0KCkgIT0gbV9jb250ZXh0T2Jq
KQogICAgICAgICBpZiAod2dsTWFrZUN1cnJlbnQobV9jYW52YXNEQywgbV9jb250ZXh0T2JqKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjIzLDcgKzYyMyw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnQKICAgICBpZiAoQ0dMR2V0Q3VycmVudENvbnRl
eHQoKSAhPSBtX2NvbnRleHRPYmopCiAgICAgICAgIGlmIChDR0xTZXRDdXJyZW50Q29udGV4dCht
X2NvbnRleHRPYmopID09IGtDR0xOb0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0j
ZWxpZiBQTEFURk9STShMSU5VWCkKKyNlbGlmIE9TKExJTlVYKQogICAgIGlmIChzX2dsLT5nZXRD
dXJyZW50Q29udGV4dCgpICE9IG1fY29udGV4dE9iaikKICAgICAgICAgaWYgKHNfZ2wtPm1ha2VD
dXJyZW50KG1fcGJ1ZmZlciwgbV9jb250ZXh0T2JqKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNTI3ODIp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCwxMSArMTQ0LDExIEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIAot
I2lmIFBMQVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSAiTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKExJTlVYKQorI2lm
IE9TKExJTlVYKQogI2luY2x1ZGUgPGdkay9nZGsuaD4KICNlbmRpZgogCkBAIC0xMDQ5LDcgKzEw
NDksNyBAQCBXZWJTdHJpbmcgV2ViRnJhbWVJbXBsOjpzZWxlY3Rpb25Bc1RleHQoCiAgICAgICAg
IHJldHVybiBXZWJTdHJpbmcoKTsKIAogICAgIFN0cmluZyB0ZXh0ID0gcmFuZ2UtPnRleHQoKTsK
LSNpZiBQTEFURk9STShXSU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICByZXBsYWNlTmV3bGlu
ZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXModGV4dCk7CiAjZW5kaWYKICAgICByZXBsYWNlTkJT
UFdpdGhTcGFjZSh0ZXh0KTsKQEAgLTEwOTksMTAgKzEwOTksMTAgQEAgZmxvYXQgV2ViRnJhbWVJ
bXBsOjpwcmludFBhZ2UoaW50IHBhZ2UsIAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSNp
ZiBQTEFURk9STShXSU5fT1MpIHx8IFBMQVRGT1JNKExJTlVYKSB8fCBQTEFURk9STShGUkVFQlNE
KQorI2lmIE9TKFdJTkRPV1MpIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKQogICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgY29udGV4dChjYW52YXMpOwogICAgIEdyYXBoaWNzQ29udGV4dCBzcG9v
bCgmY29udGV4dCk7Ci0jZWxpZiBQTEFURk9STShEQVJXSU4pCisjZWxpZiBPUyhEQVJXSU4pCiAg
ICAgR3JhcGhpY3NDb250ZXh0IHNwb29sKGNhbnZhcyk7CiAgICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IGxvY2FsQ29udGV4dCgmc3Bvb2wpOwogI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAJKHJldmlzaW9uIDUyNzgy
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1w
bDo6aGFuZGxlTW91c2UKIAogICAgIFdlYkN1cnNvckluZm8gY3Vyc29ySW5mbzsKICAgICBib29s
IGhhbmRsZWQgPSBtX3dlYlBsdWdpbi0+aGFuZGxlSW5wdXRFdmVudCh3ZWJFdmVudCwgY3Vyc29y
SW5mbyk7Ci0jaWYgIVBMQVRGT1JNKERBUldJTikKKyNpZiAhT1MoREFSV0lOKQogICAgIC8vIFRP
RE8ocGthc3RpbmcpOiBodHRwOi8vYi8xMTE5NjkxIFRoaXMgY29uZGl0aW9uYWwgc2VlbXMgZXhh
Y3RseQogICAgIC8vIGJhY2t3YXJkcywgYnV0IGlmIEkgcmV2ZXJzZSBpdCwgZ2l2aW5nIGZvY3Vz
IHRvIGEgdHJhbnNwYXJlbnQKICAgICAvLyAod2luZG93bGVzcykgcGx1Z2luIGZhaWxzLgpAQCAt
MzkwLDcgKzM5MCw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aGFuZGxlS2V5Ym8K
IAogICAgIFdlYkN1cnNvckluZm8gY3Vyc29yX2luZm87CiAgICAgYm9vbCBoYW5kbGVkID0gbV93
ZWJQbHVnaW4tPmhhbmRsZUlucHV0RXZlbnQod2ViRXZlbnQsIGN1cnNvcl9pbmZvKTsKLSNpZiAh
UExBVEZPUk0oREFSV0lOKQorI2lmICFPUyhEQVJXSU4pCiAgICAgLy8gVE9ETyhwa2FzdGluZyk6
IGh0dHA6Ly9iLzExMTk2OTEgU2VlIGFib3ZlLgogICAgIGhhbmRsZWQgPSAhaGFuZGxlZDsKICNl
bmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDUyNzgy
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDExICs5NywxMSBAQAogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgIldl
YlZpZXdDbGllbnQuaCIKIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQog
I2luY2x1ZGUgIktleWJvYXJkQ29kZXNXaW4uaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZUNocm9t
aXVtV2luLmgiCiAjZWxzZQotI2lmIFBMQVRGT1JNKExJTlVYKQorI2lmIE9TKExJTlVYKQogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lQ2hyb21pdW1MaW51eC5oIgogI2VuZGlmCiAjaW5jbHVkZSAiS2V5
Ym9hcmRDb2Rlc1Bvc2l4LmgiCkBAIC0zMjgsMTIgKzMyOCwxMiBAQCB2b2lkIFdlYlZpZXdJbXBs
Ojptb3VzZURvd24oY29uc3QgV2ViTW91CiAKICAgICAvLyBEaXNwYXRjaCB0aGUgY29udGV4dG1l
bnUgZXZlbnQgcmVnYXJkbGVzcyBvZiBpZiB0aGUgY2xpY2sgd2FzIHN3YWxsb3dlZC4KICAgICAv
LyBPbiBXaW5kb3dzLCB3ZSBoYW5kbGUgaXQgb24gbW91c2UgdXAsIG5vdCBkb3duLgotI2lmIFBM
QVRGT1JNKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PSBX
ZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdodAogICAgICAgICB8fCAoZXZlbnQuYnV0dG9uID09IFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbkxlZnQKICAgICAgICAgICAgICYmIGV2ZW50Lm1vZGlmaWVycyAm
IFdlYk1vdXNlRXZlbnQ6OkNvbnRyb2xLZXkpKQogICAgICAgICBtb3VzZUNvbnRleHRNZW51KGV2
ZW50KTsKLSNlbGlmIFBMQVRGT1JNKExJTlVYKQorI2VsaWYgT1MoTElOVVgpCiAgICAgaWYgKGV2
ZW50LmJ1dHRvbiA9PSBXZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdodCkKICAgICAgICAgbW91c2VD
b250ZXh0TWVudShldmVudCk7CiAjZW5kaWYKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjptb3VzZUNvbnRleHRNZW51KGNvbnN0CiAgICAgZWxzZQogICAgICAgICB0YXJnZXRG
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwog
Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1MpCiAgICAgdGFyZ2V0RnJhbWUt
PnZpZXcoKS0+c2V0Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CiAjZW5kaWYKIApAQCAtMzcyLDcg
KzM3Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlVXAoY29uc3QgV2ViTW91c2UKICAgICBp
ZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oTElOVVgpCisjaWYgT1MoTElOVVgpCiAgICAg
Ly8gSWYgdGhlIGV2ZW50IHdhcyBhIG1pZGRsZSBjbGljaywgYXR0ZW1wdCB0byBjb3B5IHRleHQg
aW50byB0aGUgZm9jdXNlZAogICAgIC8vIGZyYW1lLiBXZSBleGVjdXRlIHRoaXMgYmVmb3JlIHdl
IGxldCB0aGUgcGFnZSBoYXZlIGEgZ28gYXQgdGhlIGV2ZW50CiAgICAgLy8gYmVjYXVzZSB0aGUg
cGFnZSBtYXkgY2hhbmdlIHdoYXQgaXMgZm9jdXNlZCBkdXJpbmcgaW4gaXRzIGV2ZW50IGhhbmRs
ZXIuCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VVcChjb25zdCBX
ZWJNb3VzZQogICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KAogICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVy
KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSk7CiAKLSNpZiBQTEFURk9STShX
SU5fT1MpCisjaWYgT1MoV0lORE9XUykKICAgICAvLyBEaXNwYXRjaCB0aGUgY29udGV4dG1lbnUg
ZXZlbnQgcmVnYXJkbGVzcyBvZiBpZiB0aGUgY2xpY2sgd2FzIHN3YWxsb3dlZC4KICAgICAvLyBP
biBNYWMvTGludXgsIHdlIGhhbmRsZSBpdCBvbiBtb3VzZSBkb3duLCBub3QgdXAuCiAgICAgaWYg
KGV2ZW50LmJ1dHRvbiA9PSBXZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdodCkKQEAgLTQ1MywxMSAr
NDUzLDExIEBAIGJvb2wgV2ViVmlld0ltcGw6OmtleUV2ZW50KGNvbnN0IFdlYktleWIKICAgICBp
ZiAoIWhhbmRsZXIpCiAgICAgICAgIHJldHVybiBrZXlFdmVudERlZmF1bHQoZXZlbnQpOwogCi0j
aWYgUExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShMSU5VWCkKKyNpZiBPUyhXSU5ET1dTKSB8
fCBPUyhMSU5VWCkKICAgICBjb25zdCBXZWJJbnB1dEV2ZW50OjpUeXBlIGNvbnRleHRNZW51VHJp
Z2dlcmluZ0V2ZW50VHlwZSA9Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIE9TKFdJTkRPV1Mp
CiAgICAgICAgIFdlYklucHV0RXZlbnQ6OktleVVwOwotI2VsaWYgUExBVEZPUk0oTElOVVgpCisj
ZWxpZiBPUyhMSU5VWCkKICAgICAgICAgV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICNlbmRp
ZgogCkBAIC01ODMsNyArNTgzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y2hhckV2ZW50KGNvbnN0
IFdlYktleQogLy8KIC8vIFRoaXMgZnVuY3Rpb24gaXMgYW4gdWdseSBjb3B5L3Bhc3RlIGFuZCBz
aG91bGQgYmUgY2xlYW5lZCB1cCB3aGVuIHRoZQogLy8gV2ViS2l0V2luIHZlcnNpb24gaXMgY2xl
YW5lZDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDM4Ci0jaWYg
UExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShMSU5VWCkKKyNpZiBPUyhXSU5ET1dTKSB8fCBP
UyhMSU5VWCkKIC8vIEZJWE1FOiBpbXBsZW1lbnQgb24gTWFjCiBib29sIFdlYlZpZXdJbXBsOjpz
ZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKQEAg
LTU5NCw3ICs1OTQsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpzZW5kQ29udGV4dE1lbnVFdmVudChj
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEludFBvaW50IGNvb3JkcygtMSwgLTEpOwot
I2lmIFBMQVRGT1JNKFdJTl9PUykKKyNpZiBPUyhXSU5ET1dTKQogICAgIGludCByaWdodEFsaWdu
ZWQgPSA6OkdldFN5c3RlbU1ldHJpY3MoU01fTUVOVURST1BBTElHTk1FTlQpOwogI2Vsc2UKICAg
ICBpbnQgcmlnaHRBbGlnbmVkID0gMDsKQEAgLTE2NDcsNyArMTY0Nyw3IEBAIGJvb2wgV2ViVmll
d0ltcGw6OmlzQWN0aXZlKCkgY29uc3QKIHZvaWQgV2ViVmlld0ltcGw6OnNldFNjcm9sbGJhckNv
bG9ycyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29sb3IpIHsKLSNpZiBQTEFURk9STShMSU5VWCkK
KyNpZiBPUyhMSU5VWCkKICAgICBSZW5kZXJUaGVtZUNocm9taXVtTGludXg6OnNldFNjcm9sbGJh
ckNvbG9ycyhpbmFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQ29sb3IpOwpAQCAtMTY3Miw5ICsxNjcyLDkgQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6bmF2aWdhdGlvblBvbGljeUZyb21NbwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWx0LCBib29sIG1ldGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViTmF2aWdh
dGlvblBvbGljeSogcG9saWN5KQogewotI2lmIFBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0o
TElOVVgpIHx8IFBMQVRGT1JNKEZSRUVCU0QpCisjaWYgT1MoV0lORE9XUykgfHwgT1MoTElOVVgp
IHx8IE9TKEZSRUVCU0QpCiAgICAgY29uc3QgYm9vbCBuZXdUYWJNb2RpZmllciA9IChidXR0b24g
PT0gMSkgfHwgY3RybDsKLSNlbGlmIFBMQVRGT1JNKERBUldJTikKKyNlbGlmIE9TKERBUldJTikK
ICAgICBjb25zdCBib29sIG5ld1RhYk1vZGlmaWVyID0gKGJ1dHRvbiA9PSAxKSB8fCBtZXRhOwog
I2VuZGlmCiAgICAgaWYgKCFuZXdUYWJNb2RpZmllciAmJiAhc2hpZnQgJiYgIWFsdCkKSW5kZXg6
IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mjc4NykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMDQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW9yZ2FuaXplLCBkb2N1bWVudCBhbmQgcmVuYW1lIE9TKCkgcGxhdGZvcm0gbWFjcm9zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxOTgKKwor
ICAgICAgICBBZGFwdCB0byBuYW1lIGNoYW5nZXMuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X2dldF91c2VyX2FnZW50KToKKwogMjAx
MC0wMS0wNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2lmIFBM
QVRGT1JNKFVOSVgpCisjaWYgT1MoVU5JWCkKICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgogI2Vu
ZGlmCiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYmtpdF9nZXRfdXNlcl9h
Z2VudCgpCiAKICNpZiBQTEFURk9STShYMTEpCiAgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiWDEx
Iik7Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCisjZWxpZiBPUyhXSU5ET1dTKQogICAgIHBsYXRm
b3JtID0gZ19zdHJkdXAoIldpbmRvd3MiKTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBwbGF0
Zm9ybSA9IGdfc3RyZHVwKCJNYWNpbnRvc2giKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCBzdGF0aWMg
U3RyaW5nIHdlYmtpdF9nZXRfdXNlcl9hZ2VudCgpCiAjZW5kaWYKIAogICAgLy8gRklYTUU6IHBs
YXRmb3JtL3ZlcnNpb24gZGV0ZWN0aW9uIGNhbiBiZSBzaGFyZWQuCi0jaWYgUExBVEZPUk0oREFS
V0lOKQorI2lmIE9TKERBUldJTikKIAogI2lmIENQVShYODYpCiAgICAgb3NWZXJzaW9uID0gZ19z
dHJkdXAoIkludGVsIE1hYyBPUyBYIik7CkBAIC0xNzksMTQgKzE3OSwxNCBAQCBzdGF0aWMgU3Ry
aW5nIHdlYmtpdF9nZXRfdXNlcl9hZ2VudCgpCiAgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIlBQ
QyBNYWMgT1MgWCIpOwogI2VuZGlmCiAKLSNlbGlmIFBMQVRGT1JNKFVOSVgpCisjZWxpZiBPUyhV
TklYKQogICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7CiAgICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAt
MSkKICAgICAgICAgb3NWZXJzaW9uID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAlcyIsIG5hbWUuc3lz
bmFtZSwgbmFtZS5tYWNoaW5lKTsKICAgICBlbHNlCiAgICAgICAgIG9zVmVyc2lvbiA9IGdfc3Ry
ZHVwKCJVbmtub3duIik7CiAKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyNlbGlmIE9TKFdJTkRP
V1MpCiAgICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVyc2lvbgogICAgIG9zVmVy
c2lvbiA9IGdfc3RyZHVwKCJXaW5kb3dzIik7CiAKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNzg3KQor
KysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDEtMDQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW9yZ2FuaXplLCBkb2N1
bWVudCBhbmQgcmVuYW1lIE9TKCkgcGxhdGZvcm0gbWFjcm9zLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMxOTgKKworICAgICAgICBBZGFwdCB0byBu
YW1lIGNoYW5nZXMuCisgICAgICAgIAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY29uZmlnLmg6CisKIDIwMTAtMDEt
MDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUuaAkocmV2aXNpb24gNTI3ODIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
CiAKICNpbmNsdWRlIDxzdHJpbmc+CiAKLSNpZiAhUExBVEZPUk0oT1BFTkJTRCkKKyNpZiAhT1Mo
T1BFTkJTRCkKIHN0ZDo6d3N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3Qgc3Rk
Ojp3c3RyaW5nJiB1cmwpOwogI2VuZGlmCiAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nv
bmZpZy5oCShyZXZpc2lvbiA1Mjc4MikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nv
bmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOX09TKSAmJiAhQ09NUElMRVIo
R0NDKQorI2lmIE9TKFdJTkRPV1MpICYmICFDT01QSUxFUihHQ0MpCiAjZGVmaW5lIEpTX0VYUE9S
VERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZGVmaW5lIFdFQktJVF9FWFBPUlREQVRBIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQogI2Vsc2UK
</data>
<flag name="review"
          id="28015"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>