<?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>128464</bug_id>
          
          <creation_ts>2014-02-08 11:57:25 -0800</creation_ts>
          <short_desc>Stop using PLATFORM(MAC) in WebCore except where it means “OS X but not iOS”</short_desc>
          <delta_ts>2016-02-19 11:42:52 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978401</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-08 11:57:25 -0800</bug_when>
    <thetext>So that we can make PLATFORM(MAC) false when building for iOS, we need to replace all uses of it that don’t take iOS into account. Most such uses are about building for Cocoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978409</commentid>
    <comment_count>1</comment_count>
      <attachid>223577</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-08 12:46:40 -0800</bug_when>
    <thetext>Created attachment 223577
Replace PLATFORM(MAC) with equivalent alternatives</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978434</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-08 14:21:57 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r163725&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978440</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-08 14:38:07 -0800</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166477</commentid>
    <comment_count>4</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-02-19 11:42:52 -0800</bug_when>
    <thetext>What was the motivation to use OS(DARWIN) &amp;&amp; !PLATFORM(EFL) &amp;&amp; !PLATFORM(GTK) in XSLT code instead of simple PLATFORM(COCOA)?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223577</attachid>
            <date>2014-02-08 12:46:40 -0800</date>
            <delta_ts>2014-02-08 14:16:37 -0800</delta_ts>
            <desc>Replace PLATFORM(MAC) with equivalent alternatives</desc>
            <filename>bug-128464-20140208124644.patch</filename>
            <type>text/plain</type>
            <size>77228</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzcxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNyBAQAorMjAxNC0wMi0wOCAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgUExBVEZPUk0o
TUFDKSBpbiBXZWJDb3JlIGV4Y2VwdCB3aGVyZSBpdCBtZWFucyDigJxPUyBYIGJ1dCBub3QgaU9T
4oCdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRv
IFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y29uc3Ry
dWN0Q29tbW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6dmlzaWJsZVRleHQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNsaWNrUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm0pOiBNYWRlIGl0IGV4cGxp
Y2l0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXR1cm5zCisgICAgICAgICJtYWMiIHdoZW4gYnVpbHQg
Zm9yIGlPUy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDogQ2hh
bmdlZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaDogRGl0dG8uCisgICAgICAgICogY3J5cHRvL0NyeXB0b0tl
eS5jcHA6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBPUyhEQVJXSU4pICYmICFQTEFURk9STShF
RkwpICYmCisgICAgICAgICFQTEFURk9STShHVEspIHdoZW4gY2hlY2tpbmcgZm9yIHdoZXRoZXIg
dG8gdXNlIENvcmVDcnlwdG8uCisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6
IERpdHRvLgorICAgICAgICAqIGRvbS9DbGlwYm9hcmQuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1B
QykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOgorICAgICAgICAq
IGRvbS9LZXlib2FyZEV2ZW50Lmg6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmN1dCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3B5SW1hZ2Up
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uaDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5k
LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRl
ZFRvT3BlbkNvbW1hbmQpOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uaDogRGl0dG8u
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyZWRQbHVnaW5SZXBs
YWNlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2V0RGlzcGxh
eVN0YXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9Db29r
aWVKYXIuY3BwOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpkaWRUZWxsQ2xpZW50QWJvdXRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUpOiBBZGRl
ZCAhUExBVEZPUk0oSU9TKSBhcm91bmQgTWFjLW9ubHkgd29ya2Fyb3VuZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUpOiBDaGFuZ2VkIFBM
QVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnN1YnJlc291cmNlQ2FjaGVQb2xpY3kpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VCdWZmZXIuaDogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRvIFVTRShGT1VOREFUSU9O
KSBhcm91bmQgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgYXJlIGltcGxlbWVudGVkIHVzaW5nIEZv
dW5kYXRpb24uCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6IENo
YW5nZWQgUExBVEZPUk0oTUFDKSB0byBQTEFURk9STShDT0NPQSkuCisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaDogRGl0dG8uCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6IERpdHRvLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHA6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBVU0UoRk9VTkRBVElPTikg
YXJvdW5kIGZ1bmN0aW9uCisgICAgICAgIHRoYXQgaXMgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIg
VVNFKEZPVU5EQVRJT04pLWd1YXJkZWQgY29kZS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDogRGl0dG8uCisgICAgICAgICogcGFnZS9DaHJvbWUuaDogQ2hhbmdlZCBQ
TEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBwYWdlL0Nocm9tZUNs
aWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q2xpZW50Lmg6IERpdHRv
LgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5k
QXBwZW5kRm9udFN1Yk1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjcmVhdGVBbmRBcHBlbmRTcGVsbGluZ0FuZEdyYW1tYXJTdWJNZW51KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NsaWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RyYWdDb250
cm9sbGVyLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpkcmFnTG9jRm9yREhUTUxEcmFn
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmRvSW1hZ2VEcmFnKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVu
dC5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6ZXZlbnRJbnZlcnRzVGFic1RvTGlua3NDbGllbnRDYWxsUmVzdWx0KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDogRGl0dG8u
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oOiBSZW1vdmVkIHVudXNlZCAjaW5jbHVkZS4KKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwOiBDaGFuZ2VkIFBMQVRG
T1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Lmg6IEFkZGVkICFQTEFURk9STShJT1MpIGFyb3VuZAorICAgICAgICBh
cHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKTogRGl0dG8uCisg
ICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHA6IENoYW5nZWQgUExBVEZPUk0oTUFD
KSB0byBQTEFURk9STShDT0NPQSkKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvZ2ljYWxTY3JvbGwpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcmFwaGljc0xh
eWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDogRGl0dG8uCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcDogUmVtb3ZlZCB1bnVzZWQgI2luY2x1ZGUuCisg
ICAgICAgICogdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaDogQ2hhbmdlZCBQTEFURk9S
TShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gT1MoREFSV0lOKSAmJiAhUExBVEZP
Uk0oRUZMKSAmJgorICAgICAgICAhUExBVEZPUk0oR1RLKSBhcm91bmQgc29mdC1saW5raW5nIGxp
YnhzbHQuCisgICAgICAgICogeG1sL1hTTFRFeHRlbnNpb25zLmNwcDogRGl0dG8uCisgICAgICAg
ICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDogRGl0dG8uCisgICAgICAgICogeG1sL1hT
TFRVbmljb2RlU29ydC5jcHA6IERpdHRvLgorCiAyMDE0LTAyLTA4ICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBNb3ZlIFRyZWVTY29wZSwgSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5IHRvIHN0ZDo6dW5pcXVlX3B0cgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkocmV2aXNpb24gMTYzNzE2
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmNvbnN0
cnVjdENvbW1vbigpCiAgICAgICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBhZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmlj
dGlvbik7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCShyZXZpc2lvbiAxNjM3MTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6dmlzaWJsZVRleAogICAgIGNhc2UgQ2hlY2tCb3hSb2xlOgogICAgIGNh
c2UgTGlzdEJveE9wdGlvblJvbGU6CiAgICAgLy8gTWFjT1MgZG9lcyBub3QgZXhwZWN0IG5hdGl2
ZSA8bGk+IGVsZW1lbnRzIHRvIGV4cG9zZSBsYWJlbCBpbmZvcm1hdGlvbiwgaXQgb25seSBleHBl
Y3RzIGxlYWYgbm9kZSBlbGVtZW50cyB0byBkbyB0aGF0LgotI2lmICFQTEFURk9STShNQUMpCisj
aWYgIVBMQVRGT1JNKENPQ09BKQogICAgIGNhc2UgTGlzdEl0ZW1Sb2xlOgogI2VuZGlmCiAgICAg
Y2FzZSBNZW51QnV0dG9uUm9sZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMTQgKzQwLDE0IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZWxpZiBQTEFURk9STShXSU4pCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uaCIKICNpbmNsdWRlICJDT01QdHIu
aCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogCiB0
eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwogCkBAIC03MzIsNyArNzMyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCk7CiAjZWxzZQogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyB9CkBAIC05MTEsNyArOTExLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAjZW5kaWYKICAgICAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50KTsKICNlbHNlCiAgICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJl
bnQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQpAQCAtOTYzLDcgKzk2Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICB1bnNpZ25lZCBnZXRMZW5ndGhGb3JUZXh0UmFuZ2UoKSBjb25zdCB7IHJldHVybiB0
ZXh0KCkubGVuZ3RoKCk7IH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4g
bV93cmFwcGVyOwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIENPTVB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcj4gbV93cmFwcGVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTAsNyArOTEwLDcgQEAgSW50
UG9pbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2xpYwogICAgIFZpc2libGVTZWxlY3Rp
b24gdmlzU2VsZWN0aW9uID0gc2VsZWN0aW9uKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
cmFuZ2UgPSBWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCks
IHZpc1NlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwogICAgIEludFJlY3QgYm91bmRzID0gYm91bmRz
Rm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UocmFuZ2UpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBib3VuZHMuc2V0TG9jYXRpb24obV9yZW5kZXJlci0+dmlldygp
LmZyYW1lVmlldygpLnNjcmVlblRvQ29udGVudHMoYm91bmRzLmxvY2F0aW9uKCkpKTsKICNlbmRp
ZiAgICAgICAgCiAgICAgcmV0dXJuIEludFBvaW50KGJvdW5kcy54KCkgKyAoYm91bmRzLndpZHRo
KCkgLyAyKSwgYm91bmRzLnkoKSAtIChib3VuZHMuaGVpZ2h0KCkgLyAyKSk7CkBAIC0xOTk0LDcg
KzE5OTQsNyBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjCiAgICAg
aWYgKCFyZW5kZXJWaWV3KQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSAmcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCk7CiAjZW5kaWYKIApAQCAtMjAzMyw3ICsy
MDMzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplYwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIEZyYW1lJiBmcmFtZSA9IHRvRnJhbWVWaWV3KHdpZGdldCkt
PmZyYW1lKCk7CiAgICAgICAgIHJlbmRlclZpZXcgPSBmcmFtZS5kb2N1bWVudCgpLT5yZW5kZXJW
aWV3KCk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBm
cmFtZVZpZXcgPSB0b0ZyYW1lVmlldyh3aWRnZXQpOwogI2VuZGlmCiAgICAgfQpAQCAtMjkxMyw3
ICsyOTEzLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRBdHRhYwogICAg
ICAgICBtX2NoaWxkcmVuLmFwcGVuZChheFdpZGdldCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVw
ZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygpCiB7CiAgICAgLy8gT25seSB0aGUgdW5pZ25vcmVk
IHBhcmVudCBzaG91bGQgc2V0IHRoZSBhdHRhY2htZW50IHBhcmVudCwgYmVjYXVzZSB0aGF0J3Mg
d2hhdCBpcyByZWZsZWN0ZWQgaW4gdGhlIEFYIApAQCAtMzAwMiw3ICszMDAyLDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZAogICAgIGFkZENhbnZhc0NoaWxkcmVu
KCk7CiAgICAgYWRkUmVtb3RlU1ZHQ2hpbGRyZW4oKTsKICAgICAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdXBkYXRlQXR0YWNobWVudFZpZXdQYXJlbnRzKCk7
CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjY0LDcgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRD
YW52YXNDaGlsZHJlbigpOwogICAgIHZvaWQgYWRkQXR0YWNobWVudENoaWxkcmVuKCk7CiAgICAg
dm9pZCBhZGRSZW1vdGVTVkdDaGlsZHJlbigpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRWaWV3UGFyZW50cygpOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEpTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtKEV4ZWNTdGF0ZSog
ZXhlY1N0YXRlKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPUykKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcGxhdGZv
cm0sIChBU0NJSUxpdGVyYWwoIm1hYyIpKSk7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwbGF0Zm9ybSwgKEFTQ0lJTGl0ZXJhbCgid2lu
ZG93cyIpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcg
QEAgU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZQogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICwgbV93aW5kb3dTY3JpcHROUE9iamVjdCgwKQogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV93aW5k
b3dTY3JpcHRPYmplY3QoMCkKICNlbmRpZgogewpAQCAtMzc5LDcgKzM3OSw3IEBAIE5QT2JqZWN0
KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHQKIAogI2VuZGlmCiAKLSNpZiAhUExBVEZP
Uk0oTUFDKQorI2lmICFQTEFURk9STShDT0NPQSkKIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U+IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdEluc3RhbmNlRm9yV2lkZ2V0
KFdpZGdldCogd2lkZ2V0KQogewogICAgIGlmICghd2lkZ2V0LT5pc1BsdWdpblZpZXcoKSkKQEAg
LTQwNiw3ICs0MDYsNyBAQCBKU09iamVjdCogU2NyaXB0Q29udHJvbGxlcjo6anNPYmplY3RGb3JQ
CiAgICAgcmV0dXJuIGpzRWxlbWVudFZhbHVlLmdldE9iamVjdCgpOwogfQogCi0jaWYgIVBMQVRG
T1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
dXBkYXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE2MzcxNikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIFdlYlNjcmlw
dE9iamVjdDsKIE9CSkNfQ0xBU1MgSlNDb250ZXh0OwpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlND
OjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV2ViU2NyaXB0T2JqZWN0KiB3aW5kb3dT
Y3JpcHRPYmplY3QoKTsKICAgICBKU0NvbnRleHQgKmphdmFTY3JpcHRDb250ZXh0KCk7CiAjZW5k
aWYKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIE5QT2JqZWN0KiBtX3dpbmRvd1NjcmlwdE5QT2JqZWN0OwogI2VuZGlmCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxXZWJT
Y3JpcHRPYmplY3Q+IG1fd2luZG93U2NyaXB0T2JqZWN0OwogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3
IEBAIFZlY3RvcjxTdHJpbmc+IENyeXB0b0tleTo6dXNhZ2VzKCkgY29uc3QKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhT1MoREFSV0lOKSB8fCBQTEFU
Rk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9LZXk6OnJh
bmRvbURhdGEoc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChzaXpl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCShyZXZp
c2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0Eu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBPUyhEQVJX
SU4pICYmICFQTEFURk9STShFRkwpICYmICFQTEFURk9STShHVEspCiB0eXBlZGVmIHN0cnVjdCBf
Q0NSU0FDcnlwdG9yICpDQ1JTQUNyeXB0b3JSZWY7CiB0eXBlZGVmIENDUlNBQ3J5cHRvclJlZiBQ
bGF0Zm9ybVJTQUtleTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAJKHJl
dmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OnVwZGF0ZURyYWdJ
bWFnZSgpCiAgICAgbV9wYXN0ZWJvYXJkLT5zZXREcmFnSW1hZ2UoY29tcHV0ZWRJbWFnZSwgY29t
cHV0ZWRIb3RTcG90KTsKIH0KIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKENP
Q09BKQogCiBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQm
IGxvY2F0aW9uKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDI0LDcgKzI0MjQsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkK
IAogICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9IGZhbHNlOwogCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKQogICAgIGlmIChmICYmIGhhc0xpdmluZ1JlbmRlclRyZWUoKSAmJiBBWE9iamVj
dENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7CiAgICAgICAgIC8vIFRoZSBBWCBjYWNo
ZSBtYXkgaGF2ZSBiZWVuIGNsZWFyZWQgYXQgdGhpcyBwb2ludCwgYnV0IHdlIG5lZWQgdG8gbWFr
ZSBzdXJlIGl0IGNvbnRhaW5zIGFuCiAgICAgICAgIC8vIEFYIG9iamVjdCB0byBzZW5kIHRoZSBu
b3RpZmljYXRpb24gdG8uIGdldE9yQ3JlYXRlIHdpbGwgbWFrZSBzdXJlIHRoYXQgYW4gdmFsaWQg
QVggb2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgJKHJldmlzaW9uIDE2
MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTm9kZTsKIGNs
YXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQgewogICAgIEtleXByZXNzQ29tbWFu
ZCgpIHsgfQogICAgIGV4cGxpY2l0IEtleXByZXNzQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lKSA6IGNvbW1hbmROYW1lKGNvbW1hbmROYW1lKSB7IEFTU0VSVChpc0FTQ0lJTG93ZXIo
Y29tbWFuZE5hbWVbMFVdKSk7IH0KQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzS2V5Ym9hcmRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
aW50IHdoaWNoKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgLy8gV2Ugb25seSBoYXZlIHRoaXMgbmVlZCB0byBzdG9yZSBrZXlw
cmVzcyBjb21tYW5kIGluZm8gb24gdGhlIE1hYy4KICAgICBWZWN0b3I8S2V5cHJlc3NDb21tYW5k
PiYga2V5cHJlc3NDb21tYW5kcygpIHsgcmV0dXJuIG1fa2V5cHJlc3NDb21tYW5kczsgfQogI2Vu
ZGlmCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xvY2F0aW9u
OwogICAgIGJvb2wgbV9hbHRHcmFwaEtleSA6IDE7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gQ29tbWFuZHMgdGhhdCB3ZXJlIHNlbnQgYnkgQXBwS2l0
IHdoZW4gaW50ZXJwcmV0aW5nIHRoZSBldmVudC4gRG9lc24ndCBpbmNsdWRlIGlucHV0IG1ldGhv
ZCBjb21tYW5kcy4KICAgICBWZWN0b3I8S2V5cHJlc3NDb21tYW5kPiBtX2tleXByZXNzQ29tbWFu
ZHM7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE2
MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBFZGl0b3I6OmN1dCgpCiAgICAgICAgIGlmIChl
bmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5z
dGFydCgpKSkKICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
LT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSwgY2FuU21hcnRDb3B5
T3JEZWxldGUoKSA/IFBhc3RlYm9hcmQ6OkNhblNtYXJ0UmVwbGFjZSA6IFBhc3RlYm9hcmQ6OkNh
bm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAgICAgIGVsc2UgewotI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShFRkwpCiAgICAg
ICAgICAgICB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCkpOwogI2Vsc2UKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IGFs
bCBvdGhlciBwbGF0Zm9ybXMgdG8gbWF0Y2ggTWFjIGFuZCBkZWxldGUgdGhpcy4KQEAgLTEzMTEs
MTMgKzEzMTEsMTMgQEAgdm9pZCBFZGl0b3I6OmNvcHkoKQogICAgICAgICAgICAgY2FuU21hcnRD
b3B5T3JEZWxldGUoKSA/IFBhc3RlYm9hcmQ6OkNhblNtYXJ0UmVwbGFjZSA6IFBhc3RlYm9hcmQ6
OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKEhUTUxJbWFn
ZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudEZyb21JbWFnZURvY3VtZW50KGRv
Y3VtZW50KCkpKSB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEVGTCkKICAgICAgICAgICAgIHdyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLCAqaW1hZ2VFbGVt
ZW50LCBkb2N1bWVudCgpLnVybCgpLCBkb2N1bWVudCgpLnRpdGxlKCkpOwogI2Vsc2UKICAgICAg
ICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT53cml0ZUltYWdlKCpp
bWFnZUVsZW1lbnQsIGRvY3VtZW50KCkudXJsKCksIGRvY3VtZW50KCkudGl0bGUoKSk7CiAjZW5k
aWYKICAgICAgICAgfSBlbHNlIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICAgICAgd3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
KTsKICNlbHNlCiAgICAgICAgICAgICAvLyBGSVhNRTogQ29udmVydCBhbGwgb3RoZXIgcGxhdGZv
cm1zIHRvIG1hdGNoIE1hYyBhbmQgZGVsZXRlIHRoaXMuCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCB2
b2lkIEVkaXRvcjo6Y29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1CiAgICAgaWYgKHVybC5pc0Vt
cHR5KCkpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKLSNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oRUZMKQogICAgIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSgpLCAqZWxlbWVudCwgdXJsLCByZXN1bHQuYWx0RGlzcGxheVN0cmlu
ZygpKTsKICNlbHNlCiAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPndy
aXRlSW1hZ2UoKmVsZW1lbnQsIHVybCwgcmVzdWx0LmFsdERpc3BsYXlTdHJpbmcoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICNp
bmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5o
IgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBO
U0F0dHJpYnV0ZWRTdHJpbmc7CiBPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsKICNlbmRpZgpAQCAt
NDE5LDcgKzQxOSw3IEBAIHB1YmxpYzoKICAgICBEZWxldGVCdXR0b25Db250cm9sbGVyJiBkZWxl
dGVCdXR0b25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZGVsZXRlQnV0dG9uQ29udHJv
bGxlcjsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgYm9vbCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKICAg
ICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udEZvclNlbGVjdGlvbihib29sJikgY29uc3Q7CiAg
ICAgTlNEaWN0aW9uYXJ5KiBmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7
CkBAIC00MzQsNyArNDM0LDcgQEAgcHVibGljOgogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChQYXN0ZWJvYXJkJik7CiAgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dGl0bGUpOwogI2VuZGlmCkBAIC00NjksNyArNDY5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNvbnN0OwogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBhZGp1c3RlZFNl
bGVjdGlvblJhbmdlKCk7CiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAko
cmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgaW5saW5lIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnNldFR5cGluZ1N0eQogICAgIG1fdHlwaW5nU3R5bGUgPSBzdHlsZTsKIH0KIAot
I2lmICEoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpCisj
aWYgIShQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKQog
I2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIGlubGluZSB2b2lkIEZyYW1lU2VsZWN0aW9uOjpub3Rp
ZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ1
LDcgKzM0NSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db20KIAog
ICAgIHVwZGF0ZVByZXNlcnZlc1R5cGluZ1N0eWxlKGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcp
OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGZyYW1lLmVk
aXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIC8vIFNpbmNlIHRoZSBzcGVsbGNoZWNr
aW5nIGNvZGUgbWF5IGFsc28gcGVyZm9ybSBjb3JyZWN0aW9ucyBhbmQgb3RoZXIgcmVwbGFjZW1l
bnRzLCBpdCBzaG91bGQgaGFwcGVuIGFmdGVyIHRoZSB0eXBpbmcgY2hhbmdlcy4KICAgICBpZiAo
IW1fc2hvdWxkUHJldmVudFNwZWxsQ2hlY2tpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9I
aXN0b3J5SXRlbS5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
ICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVj
dCBvYmpjX29iamVjdCogaWQ7CiAjZW5kaWYKQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6IAog
CiAgICAgYm9vbCBpc0N1cnJlbnREb2N1bWVudChEb2N1bWVudCopIGNvbnN0OwogICAgIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZCB2aWV3U3RhdGUoKSBj
b25zdDsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShpZCk7CiAgICAgCkBAIC0yNjMsNyArMjYzLDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zaGFyZWRMaW5rVW5pcXVlSWRlbnRpZmllcjsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFp
blB0cjxpZD4gbV92aWV3U3RhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5n
LCBSZXRhaW5QdHI8aWQ+Pj4gbV90cmFuc2llbnRQcm9wZXJ0aWVzOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MzcxNikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw3ICsxMTEsNyBAQAogI2luY2x1ZGUgIldlYktpdFBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RXZlbnQuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogI2luY2x1ZGUgIkRpc3BsYXlTbGVlcERpc2FibGVyLmgiCiAjZW5kaWYKIApA
QCAtNTQ3Niw3ICs1NDc2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphcHBseU1lZGlhRnJh
Z21lbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNsZWVwRGlzYWJsaW5nKCkKIHsK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFzaG91bGRE
aXNhYmxlU2xlZXAoKSAmJiBtX3NsZWVwRGlzYWJsZXIpCiAgICAgICAgIG1fc2xlZXBEaXNhYmxl
ciA9IG51bGxwdHI7CiAgICAgZWxzZSBpZiAoc2hvdWxkRGlzYWJsZVNsZWVwKCkgJiYgIW1fc2xl
ZXBEaXNhYmxlcikKQEAgLTU0ODQsNyArNTQ4NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlU2xlZXBEaXNhYmwKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGREaXNhYmxlU2xlZXAo
KSBjb25zdAogewogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3
ICs3NSw3IEBAIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCiBjbGFzcyBXaWRnZXQ7CiAjZW5kaWYKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiBjbGFzcyBEaXNwbGF5U2xlZXBEaXNhYmxlcjsKICNlbmRpZgogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCkBAIC02NTksNyArNjU5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzQXV0b3BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2F1dG9wbGF5aW5nOyB9CiAK
ICAgICB2b2lkIHVwZGF0ZVNsZWVwRGlzYWJsaW5nKCk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNsZWVwKCkgY29uc3Q7CiAj
ZW5kaWYKIApAQCAtODExLDcgKzgxMSw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhQ29udHJvbGxlcjsKICAgICBSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBtX21lZGlhQ29udHJv
bGxlcjsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBPd25Q
dHI8RGlzcGxheVNsZWVwRGlzYWJsZXI+IG1fc2xlZXBEaXNhYmxlcjsKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkocmV2aXNpb24gMTYz
NzE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVk
ZSAiUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCIKICNlbmRpZgogCkBAIC0zMTMsNyArMzEz
LDcgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50UwogICAgIH0KIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2b2lkIHJl
Z2lzdHJhcihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYpOwogI2VuZGlmCiAKQEAgLTMyNiwxNCAr
MzI2LDE0IEBAIHN0YXRpYyBWZWN0b3I8UmVwbGFjZW1lbnRQbHVnaW4qPiYgcmVnaXMKICAgICAg
ICAgcmV0dXJuIHJlZ2lzdGVyZWRSZXBsYWNlbWVudHM7CiAgICAgZW5naW5lc1F1ZXJpZWQgPSB0
cnVlOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFF1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50OjpyZWdpc3RlclBsdWdpblJlcGxhY2VtZW50KHJlZ2lzdHJh
cik7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4gcmVnaXN0ZXJlZFJlcGxhY2VtZW50czsKIH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyB2b2lkIHJl
Z2lzdHJhcihjb25zdCBSZXBsYWNlbWVudFBsdWdpbiYgcmVwbGFjZW1lbnQpCiB7CiAgICAgcmVn
aXN0ZXJlZFBsdWdpblJlcGxhY2VtZW50cygpLmFwcGVuZChuZXcgUmVwbGFjZW1lbnRQbHVnaW4o
cmVwbGFjZW1lbnQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEz
Myw3IEBAIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6On5IVE1MUGx1Z0luSW1hZ2UKIAogdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlIHN0YXRl
KQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoc3Rh
dGUgPT0gUmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayB8fCBzdGF0ZSA9PSBSZXN0YXJ0
aW5nKSB7CiAgICAgICAgIG1faXNSZXN0YXJ0ZWRQbHVnaW4gPSB0cnVlOwogICAgICAgICBtX3Nu
YXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUzLDcg
KzEzNTMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2CiAgICAg
ICAgIGludCBsaXN0SW5kZXggPSB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIoKSktPmxpc3RJbmRl
eEF0T2Zmc2V0KHRvSW50U2l6ZShsb2NhbE9mZnNldCkpOwogICAgICAgICBpZiAobGlzdEluZGV4
ID49IDApIHsKICAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICAgICAgdXBk
YXRlU2VsZWN0ZWRTdGF0ZShsaXN0SW5kZXgsIG1vdXNlRXZlbnQtPm1ldGFLZXkoKSwgbW91c2VF
dmVudC0+c2hpZnRLZXkoKSk7CiAjZWxzZQogICAgICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVk
U3RhdGUobGlzdEluZGV4LCBtb3VzZUV2ZW50LT5jdHJsS2V5KCksIG1vdXNlRXZlbnQtPnNoaWZ0
S2V5KCkpOwpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlz
dEJveERlZmF1bHRFdgogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChsaXN0SXRlbXMsICFsaXN0
SXRlbXMuc2l6ZSgpIHx8IHN0YXRpY19jYXN0PHNpemVfdD4oZW5kSW5kZXgpIDwgbGlzdEl0ZW1z
LnNpemUoKSk7CiAgICAgICAgICAgICBzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChlbmRJbmRl
eCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAg
ICBtX2FsbG93c05vbkNvbnRpZ3VvdXNTZWxlY3Rpb24gPSBtX211bHRpcGxlICYmIGlzU3BhdGlh
bE5hdmlnYXRpb25FbmFibGVkKGRvY3VtZW50KCkuZnJhbWUoKSk7CiAjZWxzZQogICAgICAgICAg
ICAgbV9hbGxvd3NOb25Db250aWd1b3VzU2VsZWN0aW9uID0gbV9tdWx0aXBsZSAmJiAoaXNTcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQoZG9jdW1lbnQoKS5mcmFtZSgpKSB8fCBzdGF0aWNfY2FzdDxL
ZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5jdHJsS2V5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24g
MTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzMsMTEgKzY3MywxMSBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhQ29udHJvbFJldHVyblRvCiAKIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiAg
ICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2hvd0Nsb3NlZENh
cHRpb25zQnV0dG9uKQotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFU
Rk9STShHVEspCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oR1RLKQogICAgICwgbV9jb250cm9scyhjb250cm9scykKICNlbmRpZgogewotI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShXSU4pIHx8ICFQTEFURk9STShHVEspCisjaWYgIVBMQVRG
T1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV0lOKSB8fCAhUExBVEZPUk0oR1RLKQogICAgIFVOVVNF
RF9QQVJBTShjb250cm9scyk7CiAjZW5kaWYKIH0KQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0CiAgICAgICAgIC8vIFVJLiBOb3QgYWxs
IHBvcnRzIG1heSB3YW50IHRoZSBjbG9zZWQgY2FwdGlvbnMgYnV0dG9uIHRvIHRvZ2dsZSBhIGxp
c3Qgb2YgdHJhY2tzLCBzbwogICAgICAgICAvLyB3ZSBoYXZlIHRvIHVzZSAjaWYuCiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NzcKLSNpZiAh
UExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmICFQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKEdUSykKICAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSghbWVkaWFDb250
cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKICAgICAgICAgc2V0Q2hlY2tlZCht
ZWRpYUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOwogICAgICAgICB1cGRh
dGVEaXNwbGF5VHlwZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTUsNyArMjk1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShDT0NPQSkgfHwg
UExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCiAgICAgTWVkaWFDb250cm9scyogbV9jb250
cm9sczsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAkocmV2aXNpb24gMTYzNzE2KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4PiBp
bmRleEZvck9iamUKICAgICByZXR1cm4gaWRiSW5kZXg7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFD
KQorI2lmICFQTEFURk9STShDT0NPQSkKIHN0YXRpYyBQYXNzUmVmUHRyPEtleVBhdGg+IGtleVBh
dGhGcm9tSURCS2V5UGF0aChjb25zdCBJREJLZXlQYXRoJiBpZGJLZXlQYXRoKQogewogICAgIFJl
ZlB0cjxLZXlQYXRoPiBrZXlQYXRoOwpAQCAtMjY1LDcgKzI2NSw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSUQKIAogICAgIHJldHVybiBrZXlQYXRoLnJlbGVhc2Uo
KTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vICFQTEFURk9STShDT0NP
QSkKIAogY2xhc3MgRGF0YWJhc2VMb2FkZXIgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFz
ZSB7CiBwdWJsaWM6CkBAIC0yNzgsNyArMjc4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gcHJwRGF0YWJhc2UpIG92ZXJyaWRl
CiAgICAgewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAg
QVNTRVJUX1VOVVNFRChwcnBEYXRhYmFzZSwgcHJwRGF0YWJhc2UpOwogI2Vsc2UKICAgICAgICAg
UmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwpAQCAtMzE5LDcg
KzMxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC5zZXRPYmplY3RTdG9yZXMob2JqZWN0U3Rv
cmVzKTsKIAogICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsK
LSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAgICAg
fQogCiAgICAgdmlydHVhbCBSZXF1ZXN0Q2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaygpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWVzdENhbGxiYWNrLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3Rh
dGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udAogICAgIHJldHVybiBmcmFtZS0+
bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgfHwg
VVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShD
Rk5FVFdPUkspIHx8IFVTRShTT1VQKQogaW5saW5lIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24oY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0ID0gbmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxNjM3MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZAogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fbWFpblJlc291
cmNlKTsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwogCi0jaWYgVVNFKENGTkVU
V09SSykgfHwgUExBVEZPUk0oTUFDKQorI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKENP
Q09BKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MDYwNzgyPgogICAg
IGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZShVUkwoKSwgInRleHQvaHRtbCIsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMTYzNzE2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgICAgICBjb25zdCBTdHJpbmcm
IG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0K
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdm9pZCBz
Y2hlZHVsZShXVEY6OlNjaGVkdWxlUGFpciopOwogICAgICAgICB2b2lkIHVuc2NoZWR1bGUoV1RG
OjpTY2hlZHVsZVBhaXIqKTsKICNlbmRpZgpAQCAtMjM4LDcgKzIzOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZGlkVGVsbENsaWVudEFib3V0TG9hZChj
b25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgeyAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQ
TEFURk9STShDT0NPQSkKICAgICAgICAgICAgIC8vIERvbid0IGluY2x1ZGUgZGF0YSB1cmxzIGhl
cmUsIGFzIGlmIGEgbG90IG9mIGRhdGEgaXMgbG9hZGVkCiAgICAgICAgICAgICAvLyB0aGF0IHdh
eSwgd2UgaG9sZCBvbiB0byB0aGUgKGxhcmdlKSB1cmwgc3RyaW5nIGZvciB0b28gbG9uZy4KICAg
ICAgICAgICAgIGlmIChwcm90b2NvbElzKHVybCwgImRhdGEiKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24o
Ym9vbCkgb3ZlcnJpZGUgeyB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2Jq
ZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBO
U0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVz
cG9uc2U7IH0KICNlbmRpZgpAQCAtNDg2LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGludCBwYXN0ZWJvYXJkQ2hhbmdlQ291bnQoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFs
IE5TU3RyaW5nKiB1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCopIG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIERvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnRGcm9tQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4+Jikgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH07CkBAIC01NTks
NyArNTU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUg
eyB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVh
bCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZSB7IH0KICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyNCw3ICs5MjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkQXJjaGl2ZShQYXNzUmVmUHRy
CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEobWFpblJlc291cmNlLT5kYXRhKCks
IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKSwgbWFpblJlc291cmNlLT50ZXh0RW5jb2RpbmcoKSwg
VVJMKCkpOwogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1haW5SZXNvdXJjZS0+
dXJsKCkpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9S
TShJT1MpCiAgICAgcmVxdWVzdC5hcHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpOwogI2VuZGlm
CiAKQEAgLTk0MSw3ICs5NDEsNyBAQCBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlcjo6ZGVm
YXVsdE9iCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgbWltZVR5cGUgPSBt
aW1lVHlwZUZyb21VUkwodXJsKTsKIAotI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShF
RkwpIC8vIE1hYyBoYXMgbm8gUGx1Z2luRGF0YWJhc2UsIG5vciBkb2VzIEVGTAorI2lmICFQTEFU
Rk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEVGTCkgLy8gTWFjIGhhcyBubyBQbHVnaW5EYXRhYmFz
ZSwgbm9yIGRvZXMgRUZMCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBT
dHJpbmcgZGVjb2RlZFBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSk7
CiAgICAgICAgIG1pbWVUeXBlID0gUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+
TUlNRVR5cGVGb3JFeHRlbnNpb24oZGVjb2RlZFBhdGguc3Vic3RyaW5nKGRlY29kZWRQYXRoLnJl
dmVyc2VGaW5kKCcuJykgKyAxKSk7CkBAIC05NTEsNyArOTUxLDcgQEAgT2JqZWN0Q29udGVudFR5
cGUgRnJhbWVMb2FkZXI6OmRlZmF1bHRPYgogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBPYmplY3RDb250ZW50RnJhbWU7IC8vIEdvIGFoZWFkIGFuZCBob3BlIHRo
YXQgd2UgY2FuIGRpc3BsYXkgdGhlIGNvbnRlbnQuCiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oRUZMKSAvLyBNYWMgaGFzIG5vIFBsdWdpbkRhdGFiYXNlLCBub3IgZG9lcyBFRkwK
KyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShFRkwpIC8vIE1hYyBoYXMgbm8gUGx1
Z2luRGF0YWJhc2UsIG5vciBkb2VzIEVGTAogICAgIGJvb2wgcGx1Z0luU3VwcG9ydHNNSU1FVHlw
ZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKCktPmlzTUlNRVR5cGVSZWdpc3Rl
cmVkKG1pbWVUeXBlKTsKICNlbHNlCiAgICAgYm9vbCBwbHVnSW5TdXBwb3J0c01JTUVUeXBlID0g
ZmFsc2U7CkBAIC0yMTU3LDcgKzIxNTcsNyBAQCBDYWNoZVBvbGljeSBGcmFtZUxvYWRlcjo6c3Vi
cmVzb3VyY2VDYWNoCiAgICAgICAgIHJldHVybiBDYWNoZVBvbGljeVJldmFsaWRhdGU7CiAKICAg
ICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVz
dCgpKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKHJl
cXVlc3QuY2FjaGVQb2xpY3koKSA9PSBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSAmJiAhZXF1YWxJ
Z25vcmluZ0Nhc2UocmVxdWVzdC5odHRwTWV0aG9kKCksICJwb3N0IikgJiYgUmVzb3VyY2VSZXF1
ZXN0Ojp1c2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWlya3MoKSkKICAgICAgICAgcmV0dXJu
IENhY2hlUG9saWN5UmV2YWxpZGF0ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQnVmZmVyLmgJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShGT1VOREFUSU9OKQogT0JKQ19DTEFTUyBOU0Rh
dGE7CiAjZW5kaWYKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgZ2V0
U29tZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCkgY29uc3Q7
CiAgICAgCiAgICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIoKSBjb25zdDsKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgdm9pZCB0cnlSZXBsYWNlU2hhcmVk
QnVmZmVyQ29udGVudHMoU2hhcmVkQnVmZmVyKik7CiAjZW5kaWYKICAgICBQYXNzUmVmUHRyPFJl
c291cmNlQnVmZmVyPiBjb3B5KCkgY29uc3Q7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICAvLyBFbnN1cmUgdGhpcyBidWZmZXIgaGFzIG5vIG90aGVyIGNsaWVudHMgYmVmb3JlIGNhbGxp
bmcgdGhpcy4KICAgICBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gcmVsZWFzZVB1cmdlYWJs
ZUJ1ZmZlcigpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShGT1VOREFUSU9OKQogICAg
IFNoYXJlZEJ1ZmZlcjo6TlNEYXRhUmV0YWluUHRyV2l0aG91dEltcGxpY2l0Q29udmVyc2lvbk9w
ZXJhdG9yIGNyZWF0ZU5TRGF0YSgpOwogI2VuZGlmCiAjaWYgVVNFKENGKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9u
IDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnNjaGVkdWxlTG9hZAogICAgIGJvb2wgaGFkUmVxdWVzdHMgPSBob3N0LT5oYXNS
ZXF1ZXN0cygpOwogICAgIGhvc3QtPnNjaGVkdWxlKHJlc291cmNlTG9hZGVyLCBwcmlvcml0eSk7
CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFpc1N1c3BlbmRpbmdQZW5kaW5nUmVxdWVz
dHMoKSkgewogICAgICAgICAvLyBTZXJ2ZSBhbGwgcmVxdWVzdHMgYXQgb25jZSB0byBrZWVwIHRo
ZSBwaXBlbGluZSBmdWxsIGF0IHRoZSBuZXR3b3JrIGxheWVyLgogICAgICAgICAvLyBGSVhNRTog
RG9lcyB0aGlzIGNvZGUgZG8gYW55dGhpbmcgdXNlZnVsLCBnaXZlbiB0aGF0IHdlIGFsc28gc2V0
IG1heFJlcXVlc3RzSW5GbGlnaHRQZXJIb3N0IHRvIGVmZmVjdGl2ZWx5IHVubGltaXRlZCBvbiB0
aGVzZSBwbGF0Zm9ybXM/CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgfQogICAgIC8vIE9ubHkgdGhlc2Ug
cGxhdGZvcm1zIHByb3ZpZGUgYSB3YXkgdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFscy4K
ICAgICAvLyBJZiB3ZSBjYW4ndCBjb250aW51ZSB3aXRoIGNyZWRlbnRpYWxzLCB3ZSBuZWVkIHRv
IGNhbmNlbCB0aGUgbG9hZCBhbHRvZ2V0aGVyLgotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQor
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0UoQ1VSTCkgfHwgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9u
Q2xpZW50KCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFs
bGVuZ2UpOwogICAgIEFTU0VSVCghaGFuZGxlKCkgfHwgIWhhbmRsZSgpLT5oYXNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChSZXNvdXJj
ZUhhbmRsZSopIG92ZXJyaWRlOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUksp
CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlIHsgd2lsbFN0b3BCdWZmZXJpbmdEYXRhKGRhdGEs
IGxlbmd0aCk7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0dXJuIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKCk7IH0KQEAgLTEzMywxMyArMTMzLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKSBvdmVycmlkZSB7
IHJldHVybiBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25T
cGFjZSk7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
IG92ZXJyaWRlIHsgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY2hhbGxlbmdlKTsgfQotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIHZp
cnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwogI2Vsc2UKICAgICB2aXJ0
dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxl
KiwgTlNDYWNoZWRVUkxSZXNwb25zZSopIG92ZXJyaWRlOwogI2VuZGlmCi0jZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogI2lmIFBMQVRGT1JNKFdJTikg
JiYgVVNFKENGTkVUV09SSykKICAgICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNlIHdpbGxD
YWNoZVJlc3BvbnNlIC0gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzI1Nz4uCiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCShy
ZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDcgKzQwNiw3IEBAIFJldGFp
blB0cjxDRkRhdGFSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OnIKICAgICByZXR1cm4gcGxpc3REYXRh
OwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIFJlc291
cmNlUmVzcG9uc2UgTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21N
YWNBcmNoaXZlZERhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMTYz
NzE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODg4LDcgKzg4OCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6Omlz
VXNpbmdEaXNrSW1hZ2VDYWMKIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVT
RShGT1VOREFUSU9OKQogdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRh
KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAko
cmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw3ICsyNTYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShGT1VOREFUSU9OKQog
ICAgIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWZuZGVmIF9fT0JKQ19f
CiBjbGFzcyBOU1ZpZXc7CiAjZW5kaWYKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKTsKIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGZvY3VzTlNWaWV3KE5TVmll
dyopOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMTYzNzE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3Qg
dmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3Qo
KTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdmlydHVhbCBOU1Jlc3BvbmRlciAqZmlyc3RSZXNwb25kZXIoKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcihOU1Jlc3BvbmRlciAqKSB7IH0KICAg
ICAvLyBGb2N1c2VzIG9uIHRoZSBjb250YWluaW5nIHZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
cGFnZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgJKHJldmlz
aW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSA9IDA7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkg
PSAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDcgKzQyOCw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iiku
ZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodDoK
ICAgICAgICAgbV9jbGllbnQuc2VhcmNoV2l0aFNwb3RsaWdodCgpOwogICAgICAgICBicmVhazsK
QEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1l
bnVJCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmc6
CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICAg
ICAgYnJlYWs7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzOgogICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
c2hvd0ZvbnRQYW5lbCgpOwogICAgICAgICBicmVhazsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVhazsKICNlbmRpZgotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jaGFuZ2VCYWNrVG9SZXBsYWNl
ZFN0cmluZyhtX2hpdFRlc3RSZXN1bHQucmVwbGFjZWRTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNTIwLDI2ICs1MjAsMjYgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0
ZUFuZEFwcAogewogICAgIENvbnRleHRNZW51IGZvbnRNZW51OwogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENvbnRleHRNZW51SXRlbSBzaG93Rm9udHMoQWN0
aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzLCBjb250ZXh0TWVudUl0ZW1UYWdT
aG93Rm9udHMoKSk7CiAjZW5kaWYKICAgICBDb250ZXh0TWVudUl0ZW0gYm9sZChDaGVja2FibGVB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdCb2xkLCBjb250ZXh0TWVudUl0ZW1UYWdCb2xk
KCkpOwogICAgIENvbnRleHRNZW51SXRlbSBpdGFsaWMoQ2hlY2thYmxlQWN0aW9uVHlwZSwgQ29u
dGV4dE1lbnVJdGVtVGFnSXRhbGljLCBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKSk7CiAgICAg
Q29udGV4dE1lbnVJdGVtIHVuZGVybGluZShDaGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdVbmRlcmxpbmUsIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpKTsKICAgICBD
b250ZXh0TWVudUl0ZW0gb3V0bGluZShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdPdXRs
aW5lLCBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBDb250ZXh0TWVudUl0ZW0gc3R5bGVzKEFjdGlvblR5cGUs
IENvbnRleHRNZW51SXRlbVRhZ1N0eWxlcywgY29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCkpOwog
ICAgIENvbnRleHRNZW51SXRlbSBzaG93Q29sb3JzKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ1Nob3dDb2xvcnMsIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMoKSk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBhcHBlbmRJdGVt
KHNob3dGb250cywgJmZvbnRNZW51KTsKICNlbmRpZgogICAgIGFwcGVuZEl0ZW0oYm9sZCwgJmZv
bnRNZW51KTsKICAgICBhcHBlbmRJdGVtKGl0YWxpYywgJmZvbnRNZW51KTsKICAgICBhcHBlbmRJ
dGVtKHVuZGVybGluZSwgJmZvbnRNZW51KTsKICAgICBhcHBlbmRJdGVtKG91dGxpbmUsICZmb250
TWVudSk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGFwcGVu
ZEl0ZW0oc3R5bGVzLCAmZm9udE1lbnUpOwogICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRvckl0ZW0o
KSwgJmZvbnRNZW51KTsKICAgICBhcHBlbmRJdGVtKHNob3dDb2xvcnMsICZmb250TWVudSk7CkBA
IC01NjMsMTkgKzU2MywxOSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQW5k
QXBwCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygp
KTsKICAgICBDb250ZXh0TWVudUl0ZW0gZ3JhbW1hcldpdGhTcGVsbGluZyhDaGVja2FibGVBY3Rp
b25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcsIAogICAg
ICAgICBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKSk7Ci0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENvbnRleHRNZW51SXRlbSBj
b3JyZWN0U3BlbGxpbmcoQ2hlY2thYmxlQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnQ29y
cmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSwgCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0Nv
cnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkoKSk7CiAjZW5kaWYKIAogICAgIGFwcGVuZEl0ZW0o
c2hvd1NwZWxsaW5nUGFuZWwsICZzcGVsbGluZ0FuZEdyYW1tYXJNZW51KTsKICAgICBhcHBlbmRJ
dGVtKGNoZWNrU3BlbGxpbmcsICZzcGVsbGluZ0FuZEdyYW1tYXJNZW51KTsKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRl
bSgpLCAmc3BlbGxpbmdBbmRHcmFtbWFyTWVudSk7CiAjZW5kaWYKICAgICBhcHBlbmRJdGVtKGNo
ZWNrQXNZb3VUeXBlLCAmc3BlbGxpbmdBbmRHcmFtbWFyTWVudSk7CiAgICAgYXBwZW5kSXRlbShn
cmFtbWFyV2l0aFNwZWxsaW5nLCAmc3BlbGxpbmdBbmRHcmFtbWFyTWVudSk7Ci0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGFwcGVuZEl0ZW0oY29ycmVjdFNwZWxs
aW5nLCAmc3BlbGxpbmdBbmRHcmFtbWFyTWVudSk7CiAjZW5kaWYKIApAQCAtNTg1LDcgKzU4NSw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVBbmRBcHAKICNlbmRpZiAvLyAh
UExBVEZPUk0oR1RLKQogCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVBbmRBcHBlbmRTcGVlY2hTdWJN
ZW51KENvbnRleHRNZW51SXRlbSYgc3BlZWNoTWVudUl0ZW0pCiB7CkBAIC02NjgsNyArNjY4LDcg
QEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUFuZEFwcAogCiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIAogdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OmNyZWF0ZUFuZEFwcGVuZFN1YnN0aXR1dGlvbnNTdWJNZW51KENvbnRleHRN
ZW51SXRlbSYgc3Vic3RpdHV0aW9uc01lbnVJdGVtKQogewpAQCAtNzIyLDEzICs3MjIsMTMgQEAg
c3RhdGljIGJvb2wgc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNkZWZpbmUg
U1VQUE9SVFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMQogI2Vsc2UKICNkZWZpbmUgU1VQUE9S
VFNfVE9HR0xFX1ZJREVPX0ZVTExTQ1JFRU4gMAogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAjZGVmaW5lIFNVUFBPUlRTX1RPR0dMRV9TSE9XX0hJREVf
TUVESUFfQ09OVFJPTFMgMQogI2Vsc2UKICNkZWZpbmUgU1VQUE9SVFNfVE9HR0xFX1NIT1dfSElE
RV9NRURJQV9DT05UUk9MUyAwCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgY29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRl
b0Z1bGxzY3JlZW4oKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtIFRvZ2dsZVZpZGVvRnVsbHNjcmVl
bihBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxzY3JlZW4sCiAg
ICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCkpOwotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBDb250ZXh0TWVudUl0ZW0gU2Vh
cmNoU3BvdGxpZ2h0SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNw
b3RsaWdodCwgCiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCkp
OwogI2VuZGlmCkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6
OnBvcHVsYXRlKCkKICAgICAgICAgaWYgKGltYWdlVVJMLmlzRW1wdHkoKSAmJiBsaW5rVVJMLmlz
RW1wdHkoKSAmJiBtZWRpYVVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChtX2hpdFRl
c3RSZXN1bHQuaXNTZWxlY3RlZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkNv
bnRhaW5zUG9zc2libGVXb3JkKGZyYW1lKSkgewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0g
ZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tV
cEluRGljdGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5E
aWN0aW9uYXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRT
dHJpbmcpKTsKIApAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpwb3B1bGF0ZSgpCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgYXBwZW5k
SXRlbShDb3B5SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNlcGFyYXRv
ckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICBDb250ZXh0
TWVudUl0ZW0gU3BlZWNoTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1Nw
ZWVjaE1lbnUsIGNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKSk7CkBAIC05NTYsNyArOTU2
LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZEl0ZW0oSWdub3JlR3JhbW1hckl0ZW0sIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCks
IG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBoYXZlQ29udGV4dE1l
bnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFtbWVyID0gdHJ1ZTsKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIHN0cmluZyB3YXMgYXV0b2NvcnJlY3RlZCwgZ2VuZXJhdGUg
YSBjb250ZXh0dWFsIG1lbnUgaXRlbSBhbGxvd2luZyBpdCB0byBiZSBjaGFuZ2VkIGJhY2suCiAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZFN0cmluZyA9IG1faGl0VGVzdFJlc3Vs
dC5yZXBsYWNlZFN0cmluZygpOwpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9oaXRUZXN0
UmVzdWx0LmlzU2VsZWN0ZWQoKSAmJiAhaW5QYXNzd29yZEZpZWxkICYmIHNlbGVjdGlvbkNvbnRh
aW5zUG9zc2libGVXb3JkKGZyYW1lKSkgewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNw
bGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQo
KSk7CiAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCkBAIC0xMDI4
LDcgKzEwMjgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAg
ICAgICAgICAgY3JlYXRlQW5kQXBwZW5kU3BlbGxpbmdBbmRHcmFtbWFyU3ViTWVudShTcGVsbGlu
Z0FuZEdyYW1tYXJNZW51SXRlbSk7CiAgICAgICAgICAgICBhcHBlbmRJdGVtKFNwZWxsaW5nQW5k
R3JhbW1hck1lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgIENvbnRleHRNZW51SXRl
bSBzdWJzdGl0dXRpb25zTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1N1
YnN0aXR1dGlvbnNNZW51LCAKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdTdWJz
dGl0dXRpb25zTWVudSgpKTsKICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFN1YnN0aXR1dGlv
bnNTdWJNZW51KHN1YnN0aXR1dGlvbnNNZW51SXRlbSk7CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgICAgIGNy
ZWF0ZUFuZEFwcGVuZEZvbnRTdWJNZW51KEZvbnRNZW51SXRlbSk7CiAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbShGb250TWVudUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICAg
ICAgfQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBTcGVlY2hNZW51SXRlbShTdWJtZW51VHlwZSwgQ29udGV4dE1lbnVJ
dGVtVGFnU3BlZWNoTWVudSwgY29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpKTsKICAgICAg
ICAgICAgIGNyZWF0ZUFuZEFwcGVuZFNwZWVjaFN1Yk1lbnUoU3BlZWNoTWVudUl0ZW0pOwogICAg
ICAgICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7
CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tP
ckVuYWJsCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nOgogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwotI2lmIFBM
QVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudToKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUcmFuc2Zvcm1hdGlvbnNNZW51OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjcwLDcgKzEy
NzAsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsCiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxk
RW5hYmxlID0gbV9jbGllbnQuaXNTcGVha2luZygpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZWxz
ZSAvLyBQTEFURk9STShNQUMpIGVuZHMgaGVyZQorI2Vsc2UgLy8gUExBVEZPUk0oQ09DT0EpIGVu
ZHMgaGVyZQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZzoKICAg
ICAgICAgICAgIGJyZWFrOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAko
cmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBj
b25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIENsaXBib2FyZCYsIEZyYW1lJiwgYm9vbCBsaW5rRHJh
ZyA9IGZhbHNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdFbmRlZCgpIHsgfQogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIE1hYy1zcGVjaWZpYyBo
ZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgYWNjZXNzIHRvIHdlYiBhcmNoaXZlcyBhbmQgTlNQYXN0
ZWJvYXJkIGV4dHJhcyBpbiBXZWJLaXQuCi0gICAgLy8gVGhpcyBpcyBub3QgYWJzdHJhY3QgYXMg
dGhhdCB3b3VsZCByZXF1aXJlIGFub3RoZXIgI2lmIFBMQVRGT1JNKE1BQykgZm9yIHRoZSBTVkdJ
bWFnZSBjbGllbnQgZW1wdHkgaW1wbGVudGF0aW9uLgorICAgIC8vIFRoaXMgaXMgbm90IGFic3Ry
YWN0IGFzIHRoYXQgd291bGQgcmVxdWlyZSBhbm90aGVyICNpZiBQTEFURk9STShDT0NPQSkgZm9y
IHRoZSBTVkdJbWFnZSBjbGllbnQgZW1wdHkgaW1wbGVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9p
ZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiwgRWxlbWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikgeyB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODIs
NyArNjgyLDcgQEAgc3RhdGljIHZvaWQgc2VsZWN0RWxlbWVudChFbGVtZW50JiBlbGVtZQogc3Rh
dGljIEludFBvaW50IGRyYWdMb2NGb3JESFRNTERyYWcoY29uc3QgSW50UG9pbnQmIG1vdXNlRHJh
Z2dlZFBvaW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgY29uc3QgSW50UG9pbnQmIGRy
YWdJbWFnZU9mZnNldCwgYm9vbCBpc0xpbmtJbWFnZSkKIHsKICAgICAvLyBkcmFnSW1hZ2VPZmZz
ZXQgaXMgdGhlIGN1cnNvciBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbG93ZXItbGVmdCBjb3Ju
ZXIgb2YgdGhlIGltYWdlLgotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBXZSBhZGQgaW4gdGhlIFkgZGltZW5zaW9uIGJlY2F1c2Ugd2UgYXJlIGEgZmxpcHBl
ZCB2aWV3LCBzbyBhZGRpbmcgbW92ZXMgdGhlIGltYWdlIGRvd24uCiAgICAgY29uc3QgaW50IHlP
ZmZzZXQgPSBkcmFnSW1hZ2VPZmZzZXQueSgpOwogI2Vsc2UKQEAgLTcwMSw3ICs3MDEsNyBAQCBz
dGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoCiAgICAgaW50IHhwb3MgPSBk
cmFnZ2luZ1JlY3QubWF4WCgpOwogICAgIHhwb3MgPSBkcmFnZ2luZ1JlY3QueCgpIDwgeHBvcyA/
IGRyYWdnaW5nUmVjdC54KCkgOiB4cG9zOwogICAgIGludCB5cG9zID0gZHJhZ2dpbmdSZWN0Lm1h
eFkoKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gRGVh
bCB3aXRoIGZsaXBwZWQgY29vcmRpbmF0ZXMgb24gTWFjCiAgICAgeXBvcyA9IGRyYWdnaW5nUmVj
dC55KCkgPiB5cG9zID8gZHJhZ2dpbmdSZWN0LnkoKSA6IHlwb3M7CiAjZWxzZQpAQCAtNzY5LDcg
Kzc2OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3IKICAgICAg
ICAgICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc3JjLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpKQogICAgICAgICAgICAgICAgIGNsaXBib2FyZC5wYXN0ZWJvYXJkKCku
d3JpdGVQbGFpblRleHQoc3JjLmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpLCBQ
YXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgICAgICAgICAgZWxzZSB7Ci0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEVGTCkKICAgICAgICAgICAgICAgICBzcmMuZWRpdG9yKCkud3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY2xpcGJvYXJkLnBhc3RlYm9hcmQoKSk7CiAjZWxzZQogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IGFsbCBvdGhlciBwbGF0Zm9ybXMgdG8gbWF0Y2ggTWFjIGFu
ZCBkZWxldGUgdGhpcy4KQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpk
b0ltYWdlRHJhZyhFbGVtZW50CiAgICAgICAgIGZsb2F0IHNjYWxlID0gZml0dGVkU2l6ZS53aWR0
aCgpIC8gKGZsb2F0KWxheW91dFJlY3Qud2lkdGgoKTsKICAgICAgICAgZmxvYXQgZHggPSBzY2Fs
ZSAqIChsYXlvdXRSZWN0LngoKSAtIG1vdXNlRG93blBvaW50LngoKSk7CiAgICAgICAgIGZsb2F0
IG9yaWdpblkgPSBsYXlvdXRSZWN0LnkoKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIGFjY3Vyc2VkIGZsaXBwZWQgY29v
cmRpbmF0ZXMgaW4gQ29jb2EuCiAgICAgICAgIG9yaWdpblkgKz0gbGF5b3V0UmVjdC5oZWlnaHQo
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCShyZXZpc2lvbiAx
NjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiBPQkpDX0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiBP
QkpDX0NMQVNTIE5TVVJMOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGludCBwYXN0ZWJvYXJkQ2hhbmdlQ291bnQoKSA9IDA7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIE5TU3RyaW5nKiB1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCopID0gMDsKICAgICB2aXJ0dWFsIERvY3VtZW50RnJhZ21lbnQqIGRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBW
ZWN0b3I8IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNjM3MTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkR2VzdHVyZXNUcmln
Z2VyCiB9CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKENPQ09B
KQogCiBpbmxpbmUgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TG9vcEhhbmRsZU1vdXNlVXAoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpCiB7CkBAIC0zNTAsNyArMzUwLDcgQEAg
RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogICAgICwgbV9tb3VzZURv
d25UaW1lc3RhbXAoMCkKICAgICAsIG1fcmVjZW50V2hlZWxFdmVudERlbHRhVHJhY2tlcihhZG9w
dFB0cihuZXcgV2hlZWxFdmVudERlbHRhVHJhY2tlcikpCiAgICAgLCBtX3dpZGdldElzTGF0Y2hl
ZChmYWxzZSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBt
X21vdXNlRG93blZpZXcobmlsKQogICAgICwgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcoZmFsc2Up
CiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTc1OSw3ICs3NTksNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VEcmFnZ2VkRXZlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0jaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogV2h5IGRvZXMgdGhpcyBhc3NlcnRpb24g
ZmlyZSBvbiBvdGhlciBwbGF0Zm9ybXM/CisjaWYgUExBVEZPUk0oQ09DT0EpIC8vIEZJWE1FOiBX
aHkgZG9lcyB0aGlzIGFzc2VydGlvbiBmaXJlIG9uIG90aGVyIHBsYXRmb3Jtcz8KICAgICBBU1NF
UlQobV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCB8fCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Nj
cm9sbCk7CiAjZW5kaWYKIApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdgogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3
KCk7CiAgICAgCiAgICAgYm9vbCBzY3JvbGxlZCA9IGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBNYWMgYWxzbyByZXNldHMgdGhlIHNjcm9sbCBw
b3NpdGlvbiBpbiB0aGUgaW5saW5lIGRpcmVjdGlvbi4KICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
U2Nyb2xsQnlEb2N1bWVudCAmJiB2aWV3ICYmIHZpZXctPmxvZ2ljYWxTY3JvbGwoU2Nyb2xsSW5s
aW5lRGlyZWN0aW9uQmFja3dhcmQsIFNjcm9sbEJ5RG9jdW1lbnQpKQogICAgICAgICBzY3JvbGxl
ZCA9IHRydWU7CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJE
cmFnU3RhdGUoKQogICAgIG1fZHJhZ1RhcmdldCA9IG51bGxwdHI7CiAgICAgbV9jYXB0dXJpbmdN
b3VzZUV2ZW50c0VsZW1lbnQgPSBudWxscHRyOwogICAgIG1fc2hvdWxkT25seUZpcmVEcmFnT3Zl
ckV2ZW50ID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CiAjZW5kaWYKIH0KQEAgLTI0OTIs
NyArMjQ5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnMKICAg
ICBpZiAobV9iYXNlRXZlbnRUeXBlID09IFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZSAmJiBzaG91bGRU
dXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKHJlc3VsdCwgZSkpCiAgICAgICAgIGV2ZW50
ID0gZXZlbnQuY29weVR1cm5pbmdWZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWxUaWNrcygpOwog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN3aXRjaCAoZXZl
bnQucGhhc2UoKSkgewogICAgIGNhc2UgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbjoKICAg
ICAgICAgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyLT5iZWdpblRyYWNraW5nRGVsdGFz
KCk7CkBAIC0yNTQzLDcgKzI1NDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVs
RXZlbnRIYW5kCiAgICAgRG9taW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uIGRvbWluYW50RGly
ZWN0aW9uID0gRG9taW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uOjpOb25lOwogCiAgICAgLy8g
V29ya2Fyb3VuZCBmb3Igc2Nyb2xsaW5nIGlzc3VlcyA8cmRhcjovL3Byb2JsZW0vMTQ3NTg2MTU+
LgotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9yZWNl
bnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyLT5pc1RyYWNraW5nRGVsdGFzKCkpCiAgICAgICAgIGRv
bWluYW50RGlyZWN0aW9uID0gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFUcmFja2VyLT5kb21pbmFu
dFNjcm9sbEdlc3R1cmVEaXJlY3Rpb24oKTsKICNlbmRpZgpAQCAtMjkyNiw3ICsyOTI2LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmbwogICAgIGtleXByZXNzLT5z
ZXRUYXJnZXQoZWxlbWVudCk7CiAgICAgaWYgKGtleWRvd25SZXN1bHQpCiAgICAgICAgIGtleXBy
ZXNzLT5zZXREZWZhdWx0UHJldmVudGVkKHRydWUpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBrZXlwcmVzcy0+a2V5cHJlc3NDb21tYW5kcygpID0ga2V5ZG93
bi0+a2V5cHJlc3NDb21tYW5kcygpOwogI2VuZGlmCiAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVu
dChrZXlwcmVzcywgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC0zMjkzLDcgKzMyOTMsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aXNLZXlib2FyZE9wdGlvblRhYihLCiAKIGJvb2wgRXZlbnRIYW5kbGVy
OjpldmVudEludmVydHNUYWJzVG9MaW5rc0NsaWVudENhbGxSZXN1bHQoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEVGTCkKICAgICByZXR1cm4gRXZlbnRIYW5kbGVyOjppc0tl
eWJvYXJkT3B0aW9uVGFiKGV2ZW50KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMTYzNzE2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NyArNTIsNyBAQCBjbGFzcyBXZWJFdmVudDsKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoX19PQkpDX18pCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmICFkZWZpbmVkKF9fT0JKQ19fKQogY2xhc3MgTlNWaWV3OwogI2VuZGlmCiAK
QEAgLTI0Niw3ICsyNDYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzZW5kU2Nyb2xsRXZl
bnQoKTsgLy8gRGl0dG8KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykK
KyNpZiBQTEFURk9STShDT0NPQSkgJiYgZGVmaW5lZChfX09CSkNfXykKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIHZvaWQgbW91c2VEb3duKE5TRXZlbnQgKik7CiAgICAgdm9pZCBtb3VzZURyYWdn
ZWQoTlNFdmVudCAqKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBwdWJsaWM6CiAjZWxzZQogICAgIHN0
YXRpYyBXZWJFdmVudCAqY3VycmVudEV2ZW50KCk7CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
LSNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIGRlZmluZWQoX19PQkpDX18pCisjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCiAKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2xpY2soKTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBjYXB0dXJlc0RyYWdnaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0dXJl
c0RyYWdnaW5nOyB9CiAKLSNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQoX19PQkpDX18pCisj
aWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCiAgICAgTlNWaWV3ICptb3Vz
ZURvd25WaWV3SWZTdGlsbEdvb2QoKTsKIAogICAgIFBsYXRmb3JtTW91c2VFdmVudCBjdXJyZW50
UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3Q7CkBAIC01MTgsNyArNTE4LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxFbGVtZW50PiBtX3ByZXZpb3VzV2hlZWxTY3JvbGxlZEVsZW1lbnQ7CiAK
LSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBOU1ZpZXcgKm1fbW91c2VEb3duVmlldzsKICAgICBib29sIG1fc2VuZGluZ0V2ZW50VG9T
dWJ2aWV3OwogI2lmICFQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTYsNyArMTI5Niw3IEBAIHZvaWQgRnJhbWVWaWV3Ojps
YXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAgICAKICAgICBtX2xheW91dENvdW50Kys7CiAKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
cm9vdC0+ZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgY2FjaGUt
PnBvc3ROb3RpZmljYXRpb24ocm9vdCwgQVhPYmplY3RDYWNoZTo6QVhMYXlvdXRDb21wbGV0ZSk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+IC8vIEZvciB0aW1lX3Qgc3RydWN0dXJlLgogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1NjaGVk
dWxlUGFpci5oPgogI2VuZGlmCiAKQEAgLTI0OSw3ICsyNDksNyBAQCBwdWJsaWM6CiAgICAgLy8g
Tm9NYXRjaEFmdGVyVXNlclNlbGVjdGlvbiBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyB0ZXh0IGFm
dGVyIHRoZSB1c2VyIHNlbGVjdGlvbi4KICAgICBlbnVtIHsgTm9NYXRjaEFmdGVyVXNlclNlbGVj
dGlvbiA9IC0xIH07CiAgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hpbmdSYW5nZXMoY29uc3QgU3Ry
aW5nJiwgRmluZE9wdGlvbnMsIGludCBtYXhDb3VudCwgVmVjdG9yPFJlZlB0cjxSYW5nZT4+Kiwg
aW50JiBpbmRleEZvclNlbGVjdGlvbik7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgYWRkU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHI8U2NoZWR1bGVQYWly
Pik7CiAgICAgdm9pZCByZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+
KTsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSB7IHJl
dHVybiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgU2V0dGluZ3M6
OmdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2wKIGJvb2wgU2V0dGluZ3M6OmdBVkZvdW5kYXRpb25F
bmFibGVkID0gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKIGJvb2wgU2V0dGluZ3M6OmdRVEtpdEVuYWJsZWQgPSB0cnVlOwogI2VuZGlmCiAK
QEAgLTIzOSwxNCArMjM5LDE0IEBAIGRvdWJsZSBTZXR0aW5nczo6aGlkZGVuUGFnZURPTVRpbWVy
QWxpZ24KICAgICByZXR1cm4gZ0hpZGRlblBhZ2VET01UaW1lckFsaWdubWVudEludGVydmFsOwog
fQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiBib29sIFNldHRp
bmdzOjpzaG91bGRFbmFibGVTY3JlZW5Gb250U3Vic3RpdHV0aW9uQnlEZWZhdWx0KCkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCiB2b2lkIFNldHRpbmdzOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGll
cygpCiB7CiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIGNhbiBzZXQgdXAgZm9udHMgZnJvbSBhIGNs
aWVudCwgYnV0IG9uIE1hYywgd2Ugd2FudCBpdCBpbiBXZWJDb3JlIHRvIHNoYXJlIGNvZGUgYmV0
d2VlbiBXZWJLaXQxIGFuZCBXZWJLaXQyLgpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU2V0dGlu
Z3M6OnNldEFWRm91bmRhdGlvbkVuYWJsZWQoYm8KIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBTZXR0aW5nczo6c2V0UVRLaXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIHsKICAgICBpZiAoZ1FUS2l0RW5hYmxlZCA9PSBlbmFibGVkKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIGlzQVZGb3VuZGF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGdB
VkZvdW5kYXRpb25FbmFibGVkOyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgdm9pZCBzZXRRVEtpdEVuYWJsZWQoYm9vbCBmbGFn
KTsKICAgICBzdGF0aWMgYm9vbCBpc1FUS2l0RW5hYmxlZCgpIHsgcmV0dXJuIGdRVEtpdEVuYWJs
ZWQ7IH0KICNlbmRpZgpAQCAtMzg4LDcgKzM4OCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgZ0FWRm91bmRhdGlvbkVuYWJsZWQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgYm9vbCBnUVRLaXRFbmFibGVkOwogI2VuZGlm
CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFQ
TEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogUGFzc1JlZlB0cjxTY3JvbGxpbmdD
b29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogewog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290CiAgICAgdXBkYXRlU3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2Uo
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNlbmRpZgogCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIC8vIGNvbnRh
aW5lcnMgd2hpbGUgc2Nyb2xsaW5nLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZpeGVkUG9z
aXRpb25MYXllcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIERpc3BhdGNoZWQgYnkgdGhlIHNjcm9sbGlu
ZyB0cmVlIGR1cmluZyBoYW5kbGVXaGVlbEV2ZW50LiBUaGlzIGlzIHJlcXVpcmVkIGFzIGxvbmcg
YXMgc2Nyb2xsYmFycyBhcmUgcGFpbnRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBo
YW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZU5vZGUuaAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCw2IEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
LSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NMYXllcjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAkocmV2
aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCB2b2lkIFNjcm9sbGlu
Z1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZOZWVkCiAKICAgICAgICAgbV90aHJlYWRJZGVudGlmaWVy
ID0gY3JlYXRlVGhyZWFkKHRocmVhZENhbGxiYWNrLCB0aGlzLCAiV2ViQ29yZTogU2Nyb2xsaW5n
Iik7CiAgICAgICAgIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLndhaXQobG9jaywgW3Ro
aXNdeyByZXR1cm4gbV90aHJlYWRSdW5Mb29wOyB9KTsKICNlbmRpZgogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCShyZXZp
c2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlm
CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVSdW5Mb29w
KCk7CiAgICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIHZvaWQgdGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxi
YWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCk7CiAgICAgdm9pZCB0aHJlYWRSdW5Mb29wU291cmNl
Q2FsbGJhY2soKTsKICNlbmRpZgpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
bXV0ZXggbV9mdW5jdGlvbnNNdXRleDsKICAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkICgp
Pj4gbV9mdW5jdGlvbnM7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgV2ViQ29yZTo6UnVuTG9vcCBoZXJlLgogICAg
IFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fdGhyZWFkUnVuTG9vcDsKICAgICBSZXRhaW5QdHI8
Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3RocmVhZFJ1bkxvb3BTb3VyY2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJ
KHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw4ICsxMDQsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2Vy
dmluZ09sZEhUVFBCb2R5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCi0jaWYgUExBVEZPUk0o
Q09DT0EpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICAgICB2b2lk
IGFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICAgICAgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3kpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCShyZXZpc2lv
biAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDEzICszMzcsMTEgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKAogI2VuZGlmCiB9CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiB2b2lk
IFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQogewotI2lmICFQ
TEFURk9STShJT1MpCiAgICAgLy8gSGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZvciB0aGlzIHBy
b3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwogICAgIF9DRlVSTFJlcXVlc3RT
ZXRQcm90b2NvbFByb3BlcnR5KGNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZT
VFIoIldlYkRhdGFSZXF1ZXN0IiksIENGU1RSKCIiKSk7Ci0jZW5kaWYKIH0KICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXF1ZXN0TWFjLm1tCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI1MCwxMyArMjUwLDEzIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVGcm9t
RGVsZWdhdGUKICAgICBzZXRIVFRQQm9keShvbGRIVFRQQm9keS5yZWxlYXNlKCkpOwogfQogCisj
aWYgIVBMQVRGT1JNKElPUykKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjphcHBseVdlYkFyY2hpdmVI
YWNrRm9yTWFpbCgpCiB7Ci0jaWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBIYWNrIGJlY2F1c2Ug
TWFpbCBjaGVja3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZlIGxv
YWRzCiAgICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6QCIiIGZvcktleTpAIldlYkRhdGFS
ZXF1ZXN0IiBpblJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKiluc1VSTFJlcXVlc3QoRG9O
b3RVcGRhdGVIVFRQQm9keSldOwotI2VuZGlmCiB9CisjZW5kaWYKIAogdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdOb25lLmNw
cAkocmV2aXNpb24gMTYzNzE2KQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
Tm9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OmhhbmRsZUZvY3VzT3V0RXZlbnQoKQogLy8gcG9ydHMgdXNpbmcgUGx1Z2luVmlldywgYnV0
IHVudGlsIHRoZW4sIGlmIG5ldyBmdW5jdGlvbnMgbGlrZSB0aGlzIGFyZSAKIC8vIGFkZGVkLCBw
bGVhc2UgbWFrZSBzdXJlIHRoZXkgaGF2ZSB0aGUgcHJvcGVyIHBsYXRmb3JtICNpZnMgc28gdGhh
dCBjaGFuZ2VzCiAvLyBkbyBub3QgYnJlYWsgcG9ydHMgd2hvIGNvbXBpbGUgYm90aCB0aGlzIGZp
bGUgYW5kIFBsdWdpblZpZXcuY3BwLiAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
RUZMKSB8fCBPUyhXSU5DRSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oRUZMKSB8
fCBPUyhXSU5DRSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgUGx1Z2lu
Vmlldzo6a2VlcEFsaXZlKE5QUCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCShyZXZpc2lvbiAxNjM3MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk0LDcgKzc5NCw3IEBAIGJvb2wgUmVu
ZGVyQm94Ojpsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2kKICAgICAKICAgICBSZW5kZXJMYXllciog
bCA9IGxheWVyKCk7CiAgICAgaWYgKGwpIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIC8vIE9uIE1hYyBvbmx5IHdlIHJlc2V0IHRoZSBpbmxpbmUgZGly
ZWN0aW9uIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBkb2N1bWVudCBzY3JvbGwgKGUuZy4sIGhpdHRp
bmcgSG9tZS9FbmQpLgogICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gU2Nyb2xsQnlEb2N1bWVu
dCkKICAgICAgICAgICAgIHNjcm9sbGVkID0gbC0+c2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2FsKFNj
cm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBz
dHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpLCBTY3JvbGxCeURvY3VtZW50LCBt
dWx0aXBsaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBSZW5kZXJMYXkKICNlbmRpZgog
ICAgIGdyYXBoaWNzTGF5ZXItPnNldE1haW50YWluc1BpeGVsQWxpZ25tZW50KGNvbXBvc2l0b3Io
KS5rZWVwTGF5ZXJzUGl4ZWxBbGlnbmVkKCkpOwogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0Uo
Q0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDQSkKICAgICBncmFwaGljc0xheWVyLT5z
ZXRBY2NlbGVyYXRlc0RyYXdpbmcoY29tcG9zaXRvcigpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJs
ZWQoKSk7CiAjZW5kaWYgICAgCiAgICAgCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OmNyZWF0ZVByaW1hcnlHcgogI2VuZGlmCiAgICAgfQogCi0jaWYgUExBVEZP
Uk0oTUFDKSAmJiBVU0UoQ0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDQSkKICAgICBp
ZiAoIWNvbXBvc2l0b3IoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkgJiYgcmVuZGVyZXIo
KS5pc0NhbnZhcygpKSB7CiAgICAgICAgIGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMg
PSB0b0hUTUxDYW52YXNFbGVtZW50KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKICAgICAgICAgaWYg
KGNhbnZhcy0+c2hvdWxkQWNjZWxlcmF0ZShjYW52YXMtPnNpemUoKSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAkocmV2aXNpb24gMTYzNzE2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJGbGV4aWJsZUJveC5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogI2RlZmluZSBQT1BVUF9NRU5VX1BVTExTX0RPV04gMAogI2Vsc2UKICNkZWZpbmUg
UE9QVVBfTUVOVV9QVUxMU19ET1dOIDEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1Miw3ICsxMzUyLDcgQEAgaW50
IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShD
T0NPQSkgfHwgUExBVEZPUk0oRUZMKQogCiAjZGVmaW5lIEhBTkdVTF9DSE9TRU9OR19TVEFSVCAo
MHgxMTAwKQogI2RlZmluZSBIQU5HVUxfQ0hPU0VPTkdfRU5EICgweDExNUYpCkBAIC0xMzk0LDcg
KzEzOTQsNyBAQCBpbmxpbmUgYm9vbCBpc1JlZ2lvbmFsSW5kaWNhdG9yKFVDaGFyMzIgCiAKIGlu
dCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oaW50IGN1cnJl
bnQpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBBU1NFUlQobV90ZXh0KTsKICAgICBT
dHJpbmdJbXBsJiB0ZXh0ID0gKm1fdGV4dC5pbXBsKCk7CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAJKHJldmlzaW9u
IDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLSNpZiBQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShJT1MpCi0jaW5jbHVkZSA8Q29yZVNlcnZpY2VzL0NvcmVT
ZXJ2aWNlcy5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gUGFjayA4IGJp
dHMgaW50byBvbmUgYnl0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dl
YkNvcmVUZXN0U3VwcG9ydC5oCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0
UmVmOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBU
RVNUX1NVUFBPUlRfRVhQT1JUIFdURl9FWFBPUlRfUFJJVkFURQogI2Vsc2UKICNkZWZpbmUgVEVT
VF9TVVBQT1JUX0VYUE9SVApJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRM
aWJ4c2x0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dExpYnhzbHQuY3BwCShyZXZpc2lvbiAxNjM3MTYpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldExpYnhzbHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEgQEAK
ICNpbmNsdWRlIDxsaWJ4bWwvdXJpLmg+CiAjaW5jbHVkZSA8bGlieHNsdC94c2x0dXRpbHMuaD4K
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBPUyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpICYm
ICFQTEFURk9STShHVEspCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVGTCkgJiYgIVBMQVRG
T1JNKEdUSykKIFNPRlRfTElOS19MSUJSQVJZKGxpYnhzbHQpCiBTT0ZUX0xJTksobGlieHNsdCwg
eHNsdElzQmxhbmssIGludCwgKHhtbENoYXIgKnN0ciksIChzdHIpKQogU09GVF9MSU5LKGxpYnhz
bHQsIHhzbHRHZXROc1Byb3AsIHhtbENoYXIgKiwgKHhtbE5vZGVQdHIgbm9kZSwgY29uc3QgeG1s
Q2hhciAqbmFtZSwgY29uc3QgeG1sQ2hhciAqbmFtZVNwYWNlKSwgKG5vZGUsIG5hbWUsIG5hbWVT
cGFjZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVEV4dGVuc2lvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xURXh0ZW5zaW9ucy5jcHAJKHJldmlzaW9u
IDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xURXh0ZW5zaW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDExICszNSwxMSBAQAogI2luY2x1ZGUgPGxpYnhzbHQvZXh0ZW5zaW9u
cy5oPgogI2luY2x1ZGUgPGxpYnhzbHQvZXh0cmEuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBPUyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpICYmICFQTEFURk9STShHVEspCiAjaW5jbHVk
ZSAiU29mdExpbmtpbmcuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERB
UldJTikgJiYgIVBMQVRGT1JNKEVGTCkgJiYgIVBMQVRGT1JNKEdUSykKIFNPRlRfTElOS19MSUJS
QVJZKGxpYnhzbHQpCiBTT0ZUX0xJTksobGlieHNsdCwgeHNsdFJlZ2lzdGVyRXh0RnVuY3Rpb24s
IGludCwgKHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyIGN0eHQsIGNvbnN0IHhtbENoYXIgKm5hbWUs
IGNvbnN0IHhtbENoYXIgKlVSSSwgeG1sWFBhdGhGdW5jdGlvbiBmdW5jdGlvbiksIChjdHh0LCBu
YW1lLCBVUkksIGZ1bmN0aW9uKSkKIFNPRlRfTElOSyhsaWJ4c2x0LCB4c2x0RnVuY3Rpb25Ob2Rl
U2V0LCB2b2lkLCAoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncyksIChj
dHh0LCBuYXJncykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhz
bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4
Lmg+CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZM
KSAmJiAhUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAKIFNPRlRfTElO
S19MSUJSQVJZKGxpYnhzbHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hTTFRVbmljb2Rl
U29ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hTTFRVbmljb2RlU29y
dC5jcHAJKHJldmlzaW9uIDE2MzcxNikKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUVW5pY29k
ZVNvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Db2xsYXRvci5oPgog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVGTCkgJiYg
IVBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhUExBVEZP
Uk0oR1RLKQogCiBTT0ZUX0xJTktfTElCUkFSWShsaWJ4c2x0KQogU09GVF9MSU5LKGxpYnhzbHQs
IHhzbHRDb21wdXRlU29ydFJlc3VsdCwgeG1sWFBhdGhPYmplY3RQdHIqLCAoeHNsdFRyYW5zZm9y
bUNvbnRleHRQdHIgY3R4dCwgeG1sTm9kZVB0ciBzb3J0KSwgKGN0eHQsIHNvcnQpKQo=
</data>
<flag name="review"
          id="247624"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>