<?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>128885</bug_id>
          
          <creation_ts>2014-02-16 11:54:47 -0800</creation_ts>
          <short_desc>Stop using PLATFORM(MAC) in Source except where it means “OS X but not iOS”</short_desc>
          <delta_ts>2014-02-16 12:33:41 -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>New Bugs</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>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981282</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-16 11:54:47 -0800</bug_when>
    <thetext>Fix a few more instances of PLATFORM(MAC) in Source/WebCore and update all relevant instances in Source/WebKit2/WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981283</commentid>
    <comment_count>1</comment_count>
      <attachid>224320</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-16 12:09:22 -0800</bug_when>
    <thetext>Created attachment 224320
Use PLATFORM(COCOA), add !PLATFORM(IOS), etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981284</commentid>
    <comment_count>2</comment_count>
      <attachid>224320</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-16 12:30:52 -0800</bug_when>
    <thetext>Comment on attachment 224320
Use PLATFORM(COCOA), add !PLATFORM(IOS), etc.

View in context: https://bugs.webkit.org/attachment.cgi?id=224320&amp;action=review

&gt; Source/WebCore/loader/FrameLoaderClient.h:54
&gt;  class NSCachedURLResponse;
&gt;  class NSView;

Should switch this to OBJC_CLASS while you&apos;re at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981285</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-02-16 12:33:41 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r164192&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224320</attachid>
            <date>2014-02-16 12:09:22 -0800</date>
            <delta_ts>2014-02-16 12:30:52 -0800</delta_ts>
            <desc>Use PLATFORM(COCOA), add !PLATFORM(IOS), etc.</desc>
            <filename>bug-128885-20140216120928.patch</filename>
            <type>text/plain</type>
            <size>75316</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAyLTE2ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQTEFURk9STShN
QUMpIGluIFNvdXJjZSBleGNlcHQgd2hlcmUgaXQgbWVhbnMg4oCcT1MgWCBidXQgbm90IGlPU+KA
nQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JN
KENPQ09BKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJzb3IuaDogQ2hhbmdlZCBQTEFURk9STShN
QUMpIHRvIFVTRShBUFBLSVQpIGFyb3VuZCB1c2VzIG9mIE5TQ3Vyc29yLgorICAgICAgICAqIHBs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8gUExB
VEZPUk0oQ09DT0EpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb250ZW50U2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKToKKwogMjAxNC0wMi0xNiAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlIGlP
UyBidWlsZCBmaXggYWZ0ZXIgcjE2NDE4NC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmZGVmIF9fT0JKQ19fIAog
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiB0eXBlZGVmIGlkIFJlbW90ZUFYT2Jq
ZWN0UmVmOwpAQCAtNDksNyArNDksNyBAQCB0eXBlZGVmIHZvaWQqIFJlbW90ZUFYT2JqZWN0UmVm
OwogCiB0eXBlZGVmIGNsYXNzIF9qb2JqZWN0KiBqb2JqZWN0OwogCi0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChfX09CSkNfXykKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQo
X19PQkpDX18pCiBjbGFzcyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogY2xhc3MgTlNWaWV3OwogI2Vu
ZGlmCkBAIC0yODIsNyArMjgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVl
KSA9IDA7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IC8vIEFsbG93IGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIHJldHJpZXZlIGEgRnJhbWUgcGFy
ZW50IGlmIHRoZXJlJ3Mgbm8gUGxhdGZvcm1XaWRnZXQuCiAgICAgICAgIHZpcnR1YWwgUmVtb3Rl
QVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpID0gMDsKICAgICAgICAgdmly
dHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0
ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5oCShyZXZpc2lvbiAxNjQxOTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNyBAQCB0eXBlZGVmIEhJQ09OIEhDVVJTT1I7CiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5o
IgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCisjaWYgVVNF
KEFQUEtJVCkKIE9CSkNfQ0xBU1MgTlNDdXJzb3I7CiAjZW5kaWYKIApAQCAtNjYsNyArNjYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEhDVVJTT1IgbV9uYXRpdmVDdXJzb3I7CiAg
ICAgfTsKICAgICB0eXBlZGVmIFJlZlB0cjxTaGFyZWRDdXJzb3I+IFBsYXRmb3JtQ3Vyc29yOwot
I2VsaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQorI2VsaWYgVVNFKEFQUEtJVCkK
ICAgICB0eXBlZGVmIE5TQ3Vyc29yICpQbGF0Zm9ybUN1cnNvcjsKICNlbGlmIFBMQVRGT1JNKEdU
SykKICAgICB0eXBlZGVmIEdSZWZQdHI8R2RrQ3Vyc29yPiBQbGF0Zm9ybUN1cnNvcjsKQEAgLTE3
Myw3ICsxNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IG1faW1hZ2VT
Y2FsZUZhY3RvcjsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhVVNFKEFQUEtJ
VCkKICAgICAgICAgbXV0YWJsZSBQbGF0Zm9ybUN1cnNvciBtX3BsYXRmb3JtQ3Vyc29yOwogI2Vs
c2UKICAgICAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNDdXJzb3I+IG1fcGxhdGZvcm1DdXJzb3I7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAko
cmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzQsNyArMTA3NCw3IEBAIFN0cmluZyB0ZXh0
VHJhY2tOb0xhYmVsVGV4dCgpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJVbmtub3du
IiwgIlVua25vd24gKHRleHQgdHJhY2spIiwgIk1lbnUgaXRlbSBsYWJlbCBmb3IgYSB0ZXh0IHRy
YWNrIHRoYXQgaGFzIG5vIG90aGVyIG5hbWUiKTsKIH0KICAgICAKLSNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQog
U3RyaW5nIHRleHRUcmFja0NvdW50cnlBbmRMYW5ndWFnZU1lbnVJdGVtVGV4dChjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGNvdW50cnksIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Up
CiB7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAo
JUAtJUApIiwgIlRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1hdCB0aGF0IGluY2x1ZGVzIHRo
ZSBjb3VudHJ5IGFuZCBsYW5ndWFnZSBvZiB0aGUgc3VidGl0bGUsIGluIHRoZSBmb3JtIG9mICdU
aXRsZSAoTGFuZ3VhZ2UtQ291bnRyeSknIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGxhbmd1YWdlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvdW50cnkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1MYXllci5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgUGxhdGZvcm1MYXllcl9oCiAjZGVmaW5lIFBsYXRmb3JtTGF5ZXJfaAog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBDQUxh
eWVyOwogdHlwZWRlZiBDQUxheWVyIFBsYXRmb3JtTGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4p
ICYmIFVTRShDQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAxNjQxOTApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3NCw3ICsyNzc0
LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29udAogICAgIGlmICht
X3JlbmRlclZpZXcuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICh2
aWV3SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMzAwNSw3ICszMDA1LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92
ZXJmbAogICAgICAgICAgICAgbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXItPnNldE5hbWUo
Imhvcml6b250YWwgc2Nyb2xsYmFyIGNvbnRhaW5lciIpOwogCiAjZW5kaWYKLSNpZiBQTEFURk9S
TShNQUMpICYmIFVTRShDQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENBKQogICAgICAg
ICAgICAgbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXItPnNldEFjY2VsZXJhdGVzRHJhd2lu
ZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBtX292
ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxkKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Ny
b2xsYmFyLmdldCgpKTsKQEAgLTMwMjgsNyArMzAyOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVPdmVyZmwKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBtX2xheWVy
Rm9yVmVydGljYWxTY3JvbGxiYXItPnNldE5hbWUoInZlcnRpY2FsIHNjcm9sbGJhciBjb250YWlu
ZXIiKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNFKENBKQorI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoQ0EpCiAgICAgICAgICAgICBtX2xheWVyRm9yVmVydGljYWxTY3JvbGxi
YXItPnNldEFjY2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpOwog
I2VuZGlmCiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxk
KG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7CkBAIC0zMDUxLDcgKzMwNTEsNyBA
QCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsCiAjaWZuZGVmIE5ERUJV
RwogICAgICAgICAgICAgbV9sYXllckZvclNjcm9sbENvcm5lci0+c2V0TmFtZSgic2Nyb2xsIGNv
cm5lciIpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoQ0EpCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIFVTRShDQSkKICAgICAgICAgICAgIG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIt
PnNldEFjY2VsZXJhdGVzRHJhd2luZyhhY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpOwogI2Vu
ZGlmCiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxkKG1f
bGF5ZXJGb3JTY3JvbGxDb3JuZXIuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0
MTkxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTEzIEBACisyMDE0LTAyLTE2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcCB1c2luZyBQTEFURk9STShNQUMpIGluIFNvdXJjZSBleGNlcHQgd2hlcmUg
aXQgbWVhbnMg4oCcT1MgWCBidXQgbm90IGlPU+KAnQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmln
OiBSZW1vdmVkIFBhZ2VCYW5uZXJNYWMubW0gYW5kIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQor
ICAgICAgICBmcm9tIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zLCBub3cgdGhh
dCB0aGVzZSBmaWxlcyBhcmUgZ3VhcmRlZCB3aXRoCisgICAgICAgICFQTEFURk9STShJT1MpLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5j
cHA6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0bworICAgICAgICBQTEFURk9STShDT0NPQSkuCisg
ICAgICAgIChXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmVGaWx0ZXJpbmdTdWJmcmFtZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFn
ZUJhbm5lck1hYy5tbTogR3VhcmRlZCB3aXRoICFQTEFURk9STShJT1MpLgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOiBDaGFuZ2VkIFBMQVRG
T1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8g
VVNFKEZPVU5EQVRJT04pCisgICAgICAgIGFyb3VuZCB1c2Ugb2YgTlNCdW5kbGUuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29k
ZXJzLmg6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0bworICAgICAgICBQTEFURk9STShDT0NPQSku
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2Rlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZVdpdGhDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpOUE5fR2V0VmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpOUE5fU2V0VmFsdWUpOgor
ICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplQnJvd3NlckZ1bmNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0aW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDogRGl0dG8uCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW46OlBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
bjo6UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9s
bGVyLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuY3BwOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8KKyAgICAgICAg
VVNFKERBUldJTikgYXJvdW5kIHVzZSBvZiBNYWNoLWJhc2VkIElQQy4KKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDogQ2hh
bmVnZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JNKENPQ09BKS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5WaWV3OjpkZXN0cm95UGx1Z2luQW5kUmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3Ojp2aWV3U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpk
aWRJbml0aWFsaXplUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aW52YWxp
ZGF0ZVJlY3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRp
bWVyRmlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9jZi9XZWJSZXNvdXJjZUNh
Y2hlTWFuYWdlckNGTmV0LmNwcDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOiBE
aXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpzaG91
bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDogRGl0dG8uCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW06
IFJlbW92ZWQgUExBVEZPUk0oTUFDKS4KKyAgICAgICAgKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJm
YWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOiBDaGFu
Z2VkIFBMQVRGT1JNKE1BQykgdG8gUExBVEZPUk0oQ09DT0EpLgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnRE
aXNwYXRjaGVyLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6
d2hlZWxFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3Qu
aDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwOiBB
ZGRlZCAhUExBVEZPUk0oSU9TKQorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9QYWdlQmFu
bmVyLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6
IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0byBQTEFURk9STShDT0NPQSkuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3IuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OmlzQ29udGV4dENsaWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdl
dFdlYkFyY2hpdmVPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJl
ZmVyZW5jZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZW5kU2V0V2luZG93RnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1BhZ2VCYW5uZXJNYWMubW06IEd1YXJkZWQgd2l0aCAhUExBVEZPUk0oSU9TKS4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKTogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRvIFBMQVRGT1JN
KENPQ09BKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKTogQ2hhbmdlZCBQTEFURk9STShNQUMpIHRvIE9TKERBUldJTikuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24p
OiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8KKyAgICAgICAgUExBVEZPUk0oQ09DT0EpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24pOiBDaGFuZ2VkIFBMQVRGT1JNKE1BQykgdG8KKyAgICAgICAgT1Mo
REFSV0lOKS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3ND
bGVhbnVwVGltZXJGaXJlZCk6IENoYW5nZWQgUExBVEZPUk0oTUFDKSB0bworICAgICAgICBQTEFU
Rk9STShDT0NPQSkKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDogRGl0dG8uCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOiBSZW1vdmVkIFBMQVRG
T1JNKE1BQykgZ3VhcmQgYXJvdW5kCisgICAgICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQuIENoYW5nZWQgaXQgdG8gUExBVEZPUk0oQ09DT0EpIGFyb3VuZCBTZXRRT1MuCisKIDIwMTQt
MDItMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgW01h
Y10gQWxsIFdlYktpdCBjbGllbnRzIHNob3VsZCBlbmNyeXB0IFdlYkNyeXB0byBrZXlzIGF1dG9t
YXRpY2FsbHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0
Mi54Y2NvbmZpZwkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvV2ViS2l0Mi54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBP
VEhFUl9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9ICQoT1RIRVJfCiBPVEhFUl9MREZMQUdTX21h
Y29zeCA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKSAkKEZSQU1FV09SS19BTkRfTElCUkFSWV9MREZM
QUdTKTsKIAogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVMgPSAkKEVYQ0xVREVEX1NPVVJDRV9G
SUxFX05BTUVTXyQoUExBVEZPUk1fTkFNRSkpOwotRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNf
aXBob25lb3MgPSBCdWlsdEluUERGVmlldy5tbSBEb3dubG9hZE1hYy5tbSBGaW5kSW5kaWNhdG9y
V2luZG93Lm1tIE5ldHdvcmtQcm9jZXNzTWFjLm1tIFBERlZpZXdDb250cm9sbGVyLm1tIFBhZ2VC
YW5uZXJNYWMubW0gUGFnZUNsaWVudEltcGwubW0gUGFzdGVib2FyZFR5cGVzLm1tIFBsdWdpbklu
Zm9TdG9yZU1hYy5tbSBQcmludEluZm9NYWMubW0gU2VjSXRlbVNoaW1NZXRob2RzLm1tIFRleHRD
aGVja2VyTWFjLm1tIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gV0tGdWxsS2V5Ym9h
cmRBY2Nlc3NXYXRjaGVyLm1tIFdLSW5zcGVjdG9yLmNwcCBXS1ByaW50aW5nVmlldy5tbSBVSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tIFdlYkNvbnRl
eHRNZW51UHJveHlNYWMubW0gV2ViRWRpdG9yQ2xpZW50TWFjLm1tIFdlYkluc3BlY3RvclByb3h5
TWFjLm1tIFdlYlBhZ2VNYWMubW0gV2ViUGFnZVByb3h5TWFjLm1tIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludC5jcHAgV2ViUHJvY2Vzc01hYy5tbSBXZWJQcm9jZXNzUHJveHlNYWMubW0gV2ViVG91Y2hF
dmVudC5jcHAgKi5wZGYgY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYiBjb20uYXBw
bGUuV2ViUHJvY2Vzcy5zYjsKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zID0g
QnVpbHRJblBERlZpZXcubW0gRG93bmxvYWRNYWMubW0gRmluZEluZGljYXRvcldpbmRvdy5tbSBO
ZXR3b3JrUHJvY2Vzc01hYy5tbSBQREZWaWV3Q29udHJvbGxlci5tbSBQYWdlQ2xpZW50SW1wbC5t
bSBQYXN0ZWJvYXJkVHlwZXMubW0gUGx1Z2luSW5mb1N0b3JlTWFjLm1tIFByaW50SW5mb01hYy5t
bSBTZWNJdGVtU2hpbU1ldGhvZHMubW0gVGV4dENoZWNrZXJNYWMubW0gV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5tbSBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0gV0tJbnNwZWN0
b3IuY3BwIFdLUHJpbnRpbmdWaWV3Lm1tIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBXZWJD
b250ZXh0TWVudVByb3h5TWFjLm1tIFdlYkVkaXRvckNsaWVudE1hYy5tbSBXZWJJbnNwZWN0b3JQ
cm94eU1hYy5tbSBXZWJQYWdlTWFjLm1tIFdlYlBhZ2VQcm94eU1hYy5tbSBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQuY3BwIFdlYlByb2Nlc3NNYWMubW0gV2ViUHJvY2Vzc1Byb3h5TWFjLm1tIFdlYlRv
dWNoRXZlbnQuY3BwICoucGRmIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IgY29t
LmFwcGxlLldlYlByb2Nlc3Muc2I7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVz
aW11bGF0b3IgPSAkKEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZW9zKTsKIEVYQ0xV
REVEX1NPVVJDRV9GSUxFX05BTUVTX21hY29zeCA9ICpJT1MubW0gV0tDb250ZW50Vmlldy5tbSBX
S1Njcm9sbFZpZXcubW0gVUlXS1JlbW90ZVZpZXcubW0gV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
T2JqQ1NlY3VyaXR5T3JpZ2luLm1tIFdLSW50ZXJhY3Rpb25WaWV3Lm1tIFdlYklPU0V2ZW50RmFj
dG9yeS5tbSBXS0FjdGlvblNoZWV0Lm1tIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTY0
MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRl
ICJDb29raWVTdG9yYWdlU2hpbS5oIgogI2VuZGlmCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgiCkBAIC0xNTUsMTAgKzE1NSw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3Mo
KQogICAgICwgbV9zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyh0cnVlKQogICAgICwgbV9oYXNTZXRD
YWNoZU1vZGVsKGZhbHNlKQogICAgICwgbV9jYWNoZU1vZGVsKENhY2hlTW9kZWxEb2N1bWVudFZp
ZXdlcikKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydChNQUNIX1BPUlRfTlVMTCkKLSNlbmRpZgotI2lmIFBM
QVRGT1JNKE1BQykKICAgICAsIG1fY2xlYXJSZXNvdXJjZUNhY2hlc0Rpc3BhdGNoR3JvdXAoMCkK
ICNlbmRpZgogICAgICwgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKGZhbHNlKQpAQCAtMzQw
LDcgKzMzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY28KICAg
ICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBzZXRTaG91
bGRVc2VGb250U21vb3RoaW5nKHRydWUpOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZO
RVRXT1JLKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgIFNlc3Np
b25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIpOwogI2VuZGlmCiAKQEAgLTM1MSw3ICszNDksNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmluaXRpYWxpemVXZWJQcm9jZXNzKGNvCiAgICAgbV91c2VzTmV0d29ya1Byb2Nlc3MgPSBwYXJh
bWV0ZXJzLnVzZXNOZXR3b3JrUHJvY2VzczsKICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBp
ZiAodXNlc05ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIENvb2tpZVN0b3JhZ2VTaGltOjpzaGFy
ZWQoKS5pbml0aWFsaXplKCk7CiAjZW5kaWYKQEAgLTM4MCw3ICszNzgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29uCiAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5l
Y3Rpb25JZGVudGlmaWVyKSwgMCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBPUyhEQVJXSU4pCiAgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkpOwogI2Vs
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnJl
bGVhc2VGaWxlRGVzY3JpcHRvcigpOwpAQCAtNDY5LDE0ICs0NjcsMTQgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQwogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24odWludDY0X3Qgc2Vzc2lvbklEKQogewotI2lmIFBMQVRGT1JN
KE1BQykgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCisjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQogICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKICNlbmRpZgog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHVpbnQ2
NF90IHNlc3Npb25JRCkKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspIHx8
IFVTRShTT1VQKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKSB8fCBVU0Uo
U09VUCkKICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oc2Vzc2lvbklEKTsKICNl
bmRpZgogfQpAQCAtMTA1OCw3ICsxMDU2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJU
b0RhdGFiYXNlUHJvYwogICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIp
LCAwKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJ
TikKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIo
ZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CiAgICAgaWYgKElQQzo6Q29ubmVj
dGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJl
dHVybjsKQEAgLTExMzYsNyArMTEzNCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVsZWFzZVBhZ2VD
YWNoZSgpCiAgICAgcGFnZUNhY2hlKCktPnNldENhcGFjaXR5KHNhdmVkUGFnZUNhY2hlQ2FwYWNp
dHkpOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lk
IFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKQogewogfQpAQCAtMTE4Niw3ICsxMTg0LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudQogICAgIGlmICghbV9wYWdlc0luV2lu
ZG93cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB3a0Rlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMoKTsKICNl
bmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlz
aW9uIDE2NDE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rp
c3BhdGNoLmg+CiAjZW5kaWYKIApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIElu
amVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRC
dW5kbGUuZ2V0KCk7IH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBtYWNoX3BvcnRfdCBjb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydDsgfQogI2VuZGlmCiAgICAgCkBAIC0x
MzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIFdlYlBhZ2VHcm91cFByb3h5KiB3ZWJQYWdlR3Jv
dXAodWludDY0X3QgcGFnZUdyb3VwSUQpOwogICAgIFdlYlBhZ2VHcm91cFByb3h5KiB3ZWJQYWdl
R3JvdXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHBpZF90IHByZXNlbnRlckFwcGxpY2F0aW9uUGlkKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVzZW50ZXJBcHBsaWNhdGlvblBpZDsgfQogICAgIGJvb2wgc2hvdWxk
Rm9yY2VTY3JlZW5Gb250U3Vic3RpdHV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRGb3Jj
ZVNjcmVlbkZvbnRTdWJzdGl0dXRpb247IH0KICNlbmRpZgpAQCAtMjkyLDcgKzI5Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhc1NldENhY2hlTW9kZWw7CiAgICAgQ2FjaGVNb2RlbCBtX2Nh
Y2hlTW9kZWw7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
bWFjaF9wb3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CiAgICAgcGlkX3QgbV9w
cmVzZW50ZXJBcHBsaWNhdGlvblBpZDsKICAgICBkaXNwYXRjaF9ncm91cF90IG1fY2xlYXJSZXNv
dXJjZUNhY2hlc0Rpc3BhdGNoR3JvdXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDggKzgyLDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAKICAgICBSZWxlYXNlUGFnZUNhY2hlKCkKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBT
ZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZmxhZykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBTZXRRT1MoaW50IGxhdGVuY3lRT1MsIGludCB0aHJvdWdocHV0UU9TKQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNl
dEphdmFTY3JpcHRDYW5BY2MKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQogewog
ICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRv
ZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTI3ND4uCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRX
T1JLKSB8fCBVU0UoU09VUCkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykg
fHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCiAgICAgICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgJ
KHJldmlzaW9uIDE2NDE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB0
eXBlZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxlOwogI2luY2x1ZGUgPEVpbmEuaD4KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShGT1VOREFUSU9OKQogT0JKQ19DTEFTUyBO
U0J1bmRsZTsKICNlbmRpZgogCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIENvbm5lY3Rpb247CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShGT1VOREFU
SU9OKQogdHlwZWRlZiBOU0J1bmRsZSAqUGxhdGZvcm1CdW5kbGU7CiAjZWxpZiBQTEFURk9STShH
VEspCiB0eXBlZGVmIDo6R01vZHVsZSogUGxhdGZvcm1CdW5kbGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VD
b2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaAkocmV2aXNpb24gMTY0MTkw
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
ICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
IAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJPYmpD
T2JqZWN0R3JhcGhDb2RlcnMuaCIKICNlbmRpZgogCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6Ok9iakNPYmplY3RHcmFwaDog
ewogICAgICAgICAgICAgT2JqQ09iamVjdEdyYXBoKiBvYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0
PE9iakNPYmplY3RHcmFwaCo+KG1fcm9vdCk7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IEluamVj
dGVkQnVuZGxlT2JqQ09iamVjdEdyYXBoRW5jb2RlcihvYmplY3RHcmFwaCwgV2ViUHJvY2Vzczo6
c2hhcmVkKCkpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNvZGVy
Lm1fcm9vdCA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2VHcm91cChwYWdlR3JvdXBEYXRh
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpPYmpDT2Jq
ZWN0R3JhcGg6IHsKICAgICAgICAgICAgIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IG9iamVjdEdy
YXBoOwogICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhEZWNvZGVyIG9i
amVjdEdyYXBoRGVjb2RlcihvYmplY3RHcmFwaCwgV2ViUHJvY2Vzczo6c2hhcmVkKCkpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCShyZXZpc2lvbiAxNjQxOTApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgV0tEYXRhUmVmIFdLQnVu
ZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShXSwogCiBXS0RhdGFSZWYgV0tCdW5kbGVGcmFtZUNvcHlX
ZWJBcmNoaXZlRmlsdGVyaW5nU3ViZnJhbWVzKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdL
QnVuZGxlRnJhbWVGcmFtZUZpbHRlckNhbGxiYWNrIGZyYW1lRmlsdGVyQ2FsbGJhY2ssIHZvaWQq
IGNvbnRleHQpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSB0b0ltcGwoZnJhbWVSZWYpLT53ZWJBcmNoaXZl
RGF0YShmcmFtZUZpbHRlckNhbGxiYWNrLCBjb250ZXh0KTsKICAgICBpZiAoZGF0YSkKICAgICAg
ICAgcmV0dXJuIFdLRGF0YUNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpLCBDRkRh
dGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
bWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdl
QmFubmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlQmFubmVyTWFjLmgiCiAKKyNpZiAhUExB
VEZPUk0oSU9TKQorCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUJhbm5l
ci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtMTA4LDMgKzExMCw1IEBAIENBTGF5ZXIg
KiBXS0J1bmRsZVBhZ2VCYW5uZXJHZXRMYXllcihXS0IKIHsKICAgICByZXR1cm4gdG9JbXBsKHBh
Z2VCYW5uZXIpLT5sYXllcigpOwogfQorCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3
LDcgKzEwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb24KIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2VDb3B5KHJlc3BvbnNlKTsKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgdXNlIENlcnRpZmljYXRlSW5mbyB0byBhdm9pZCB0aGUgcGxhdGZvcm0g
aWZkZWZzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDcy
NC4KLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcmVzcG9uc2VD
b3B5LnNldENlcnRpZmljYXRlQ2hhaW4oY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlQ2hhaW4o
KSk7CiAjZWxpZiBVU0UoU09VUCkKICAgICByZXNwb25zZUNvcHkuc2V0U291cE1lc3NhZ2VDZXJ0
aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGUoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAkocmV2aXNpb24gMTY0MTkwKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBQbHVnaW46OlBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkFyZwogICAgIGVuY29kZXIgPDwgbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBpc0Z1bGxG
cmFtZVBsdWdpbjsKICAgICBlbmNvZGVyIDw8IHNob3VsZFVzZU1hbnVhbExvYWRlcjsKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KGxheWVySG9zdGluZ01vZGUpOwogI2VuZGlmCiB9CkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgUGx1
Z2luOjpQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmcKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRVc2VNYW51YWxMb2FkZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMubGF5ZXJIb3N0
aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gMTY0MTkwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAKIE9CSkNfQ0xBU1MgTlNPYmplY3Q7
CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogICAg
ICAgICBib29sIGlzRnVsbEZyYW1lUGx1Z2luOwogICAgICAgICBib29sIHNob3VsZFVzZU1hbnVh
bExvYWRlcjsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZTsKICNlbmRpZgogCkBAIC0xMjUsNyAr
MTI1LDcgQEAgcHVibGljOgogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRvIGRyYXcgaXRzZWxm
IGludG8gYSBiaXRtYXAsIGFuZCByZXR1cm4gdGhhdC4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpID0gMDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBJZiBhIHBsdWctaW4gaXMgdXNpbmcgdGhlIENvcmUg
QW5pbWF0aW9uIGRyYXdpbmcgbW9kZWwsIHRoaXMgcmV0dXJucyBpdHMgcGx1Zy1pbiBsYXllci4K
ICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgPSAwOwogI2VuZGlmCkBA
IC0yMTgsNyArMjE4LDcgQEAgcHVibGljOgogICAgIC8vIEdldCB0aGUgTlBPYmplY3QgdGhhdCBj
b3JyZXNwb25kcyB0byB0aGUgcGx1Zy1pbidzIHNjcmlwdGFibGUgb2JqZWN0LiBSZXR1cm5zIGEg
cmV0YWluZWQgb2JqZWN0LgogICAgIHZpcnR1YWwgTlBPYmplY3QqIHBsdWdpblNjcmlwdGFibGVO
UE9iamVjdCgpID0gMDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiBhYm91dCB3aW5kb3cgZm9jdXMgY2hhbmdlcy4KICAg
ICB2aXJ0dWFsIHZvaWQgd2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpID0gMDsKIApAQCAtMjU4LDcg
KzI1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpv
bnRhbFNjcm9sbGJhcigpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVy
dGljYWxTY3JvbGxiYXIoKSA9IDA7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9y
UHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBOU09iamVjdCAqYWNj
ZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogI2luY2x1ZGUgIlBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZS5oIgogI2Vu
ZGlmCiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIFRlbGxzIHRoZSBjb250cm9s
bGVyIHRoYXQgd2UncmUgYWJvdXQgdG8gZGlzcGF0Y2ggYW4gZXZlbnQgdG8gdGhlIHBsdWctaW4u
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kRXZlbnRUb1BsdWdpbigpID0gMDsKICAgICAKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVGVsbHMgdGhlIGNv
bnRyb2xsZXIgdGhhdCB0aGUgcGx1Zy1pbiBmb2N1cyBvciB3aW5kb3cgZm9jdXMgZGlkIGNoYW5n
ZS4KICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZChib29s
KSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICNpbmNs
dWRlICJNYWNoUG9ydC5oIgogI2VuZGlmCiAKQEAgLTc0LDcgKzc0LDcgQEAgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nlc3NDbwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVy
LCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIE9TKERBUldJTikKICAgICBJUEM6OkNvbm5l
Y3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoZW5jb2RlZENvbm5lY3Rpb25J
ZGVudGlmaWVyLnBvcnQoKSk7CiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklz
TnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCShy
ZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODUsNyArNDg1LDcgQEAgTlBPYmplY3Qq
IFBsdWdpblByb3h5OjpwbHVnaW5TY3JpcHRhYmxlTgogICAgIHJldHVybiBtX2Nvbm5lY3Rpb24t
Pm5wUmVtb3RlT2JqZWN0TWFwKCktPmNyZWF0ZU5QT2JqZWN0UHJveHkocGx1Z2luU2NyaXB0YWJs
ZU5QT2JqZWN0SUQsIHRoaXMpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogdm9pZCBQbHVnaW5Qcm94eTo6d2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wgaGFzRm9j
dXMpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6V2luZG93Rm9jdXNDaGFuZ2VkKGhhc0ZvY3VzKSwgbV9wbHVn
aW5JbnN0YW5jZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIENBTGF5ZXI7CiAjZW5k
aWYKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0
KTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpOwotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIq
IHBsdWdpbkxheWVyKCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVudCgp
OwpAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZXNQ
YWdlU2NhbGVGYWN0b3IoKTsKICAgICAKICAgICB2aXJ0dWFsIE5QT2JqZWN0KiBwbHVnaW5TY3Jp
cHRhYmxlTlBPYmplY3QoKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd0ZvY3VzQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
d2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB2
aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2luZG93Vmlz
aWJpbGl0eUNoYW5nZWQoYm9vbCk7CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhbmNlbFN0cmVhbUxvYWQodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZvaWQgY2FuY2Vs
TWFudWFsU3RyZWFtTG9hZCgpOwogICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJp
bmcmIHN0YXR1c2JhclRleHQpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQoYm9vbCk7CiAgICAg
dm9pZCBzZXRDb21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QpOwogICAgIHZvaWQgc2V0TGF5
ZXJIb3N0aW5nQ29udGV4dElEKHVpbnQzMl90KTsKQEAgLTIxNCw3ICsyMTQsNyBAQCBwcml2YXRl
OgogICAgIE93blB0cjxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+IG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVyczsKICAgICBib29sIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb247CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fcGx1Z2luTGF5ZXI7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICAj
IFNldCB0aGUgc3RhdHVzIGJhciB0ZXh0LgogICAgIFNldFN0YXR1c2JhclRleHQoU3RyaW5nIHN0
YXR1c2JhclRleHQpCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgIyBDYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbidzIGZvY3VzIG9yIGl0cyBjb250YWluaW5nIHdp
bmRvdyBmb2N1cyBjaGFuZ2VzLgogICAgIFBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQo
Ym9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAx
NjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRl
c3Ryb3lQbHVnaW5BbmRSZXNldCgpCiAgICAgICAgIG1fcGVuZGluZ1VSTFJlcXVlc3RzLmNsZWFy
KCk7CiAgICAgICAgIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIuc3RvcCgpOwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBpZiAobV93ZWJQYWdlKQog
ICAgICAgICAgICAgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZChmYWxzZSk7CiAjZW5k
aWYKQEAgLTQ5OCwxMiArNDk4LDEyIEBAIHZvaWQgUGx1Z2luVmlldzo6d2ViUGFnZURlc3Ryb3ll
ZCgpCiAKIHZvaWQgUGx1Z2luVmlldzo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6Rmxh
Z3MgY2hhbmdlZCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgcGxhdGZvcm1WaWV3U3RhdGVEaWRDaGFuZ2UoY2hhbmdlZCk7CiAjZW5kaWYKIH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgUGx1Z2luVmlldzo6cGxh
dGZvcm1WaWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKQogewogICAg
IGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCkKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2
b2lkIFBsdWdpblZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4oKQogewogICAgIG1faXNJbml0aWFs
aXplZCA9IHRydWU7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQobV93ZWJQYWdlLT53aW5kb3dGcmFtZUluU2Ny
ZWVuQ29vcmRpbmF0ZXMoKSwgbV93ZWJQYWdlLT52aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVz
KCkpOwogI2VuZGlmCiAKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmRpZElu
aXRpYWxpemVQbHVnaW4oKQogCiAgICAgcmVkZWxpdmVyTWFudWFsU3RyZWFtKCk7CiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcGx1Z2luRWxlbWVu
dC0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZykgewogICAg
ICAgICBpZiAobV9wbHVnaW4tPnBsdWdpbkxheWVyKCkgJiYgZnJhbWUoKSkgewogICAgICAgICAg
ICAgZnJhbWUoKS0+dmlldygpLT5lbnRlckNvbXBvc2l0aW5nTW9kZSgpOwpAQCAtNjQwLDcgKzY0
MCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgfQogfQog
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogUGxhdGZvcm1MYXllciog
UGx1Z2luVmlldzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgLy8gVGhlIHBsdWctaW4g
Y2FuIGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KQEAgLTEyNjMsNyAr
MTI2Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW4KICAgICBp
ZiAoIXBhcmVudCgpIHx8ICFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkKQogICAgICAgICBy
ZXR1cm47CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KG1fcGx1Z2luLT5wbHVnaW5MYXllcigpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTE0
NTgsNyArMTQ1OCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbFNlbmRFdmVudFRvUGx1Z2luKCkK
ICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcFJlc3BvbnNp
dmVuZXNzVGltZXIoKSk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiB2b2lkIFBsdWdpblZpZXc6OnBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQoYm9v
bCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQogewogICAgIGlmIChtX3dlYlBhZ2Up
CkBAIC0xNjEwLDcgKzE2MTAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2Vv
bWV0cnlECiB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKIHN0YXRpYyBib29sIGlzQWxtb3N0U29saWRDb2xvcihCaXRtYXBJbWFnZSogYml0bWFwKQog
ewogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAtPmdldENHSW1hZ2VSZWYoKTsKQEAgLTE2
ODUsNyArMTY4NSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmUK
ICAgICAgICAgICAgIHNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdC0+Y3JlYXRlSW1hZ2UoKTsKICAg
ICAgICAgbV9wbHVnaW5FbGVtZW50LT51cGRhdGVTbmFwc2hvdChzbmFwc2hvdEltYWdlLmdldCgp
KTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgdW5z
aWduZWQgbWF4aW11bVNuYXBzaG90UmV0cmllcyA9IGZyYW1lKCkgPyBmcmFtZSgpLT5zZXR0aW5n
cygpLm1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKCkgOiAwOwogICAgICAgICBpZiAoc25h
cHNob3RJbWFnZSAmJiBpc0FsbW9zdFNvbGlkQ29sb3IodG9CaXRtYXBJbWFnZShzbmFwc2hvdElt
YWdlLmdldCgpKSkgJiYgbV9jb3VudFNuYXBzaG90UmV0cmllcyA8IG1heGltdW1TbmFwc2hvdFJl
dHJpZXMpIHsKICAgICAgICAgICAgICsrbV9jb3VudFNuYXBzaG90UmV0cmllczsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAkocmV2aXNp
b24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB2
aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkKTsKICAg
ICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSk7CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybVZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQpOwogICAgIHZvaWQg
c2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwogICAgIHZvaWQgd2luZG93QW5kVmlld0ZyYW1l
c0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVuQ29v
cmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29y
ZGluYXRlcyk7CkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZENy
ZWF0ZVRyYW5zaWVudFBhaW50aW5nU25hcHNob3QoKSBjb25zdDsKIAogICAgIC8vIFdlYkNvcmU6
OlBsdWdpblZpZXdCYXNlCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlm
CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoSlNDOjpKU0dsb2JhbE9i
amVjdCopOwpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2lu
UHJvY2Vzc0NyYXNoZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRFdmVudFRvUGx1Z2lu
KCk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
dm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wgcGx1Z2luSGFzRm9jdXNB
bmRXaW5kb3dIYXNGb2N1cyk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbXBsZXhUZXh0SW5wdXRT
dGF0ZShQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpOwogICAgIHZpcnR1YWwgbWFjaF9wb3J0
X3QgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAJKHJldmlzaW9uIDE2NDE5MCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgTlBFcnJvciBOUE5fUG9zdFVS
TE5vdGlmeShOUFAgbnBwCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogLy8gV2hldGhlciB0aGUgYnJvd3NlciBz
dXBwb3J0cyBjb21wb3NpdGluZyBvZiBDb3JlIEFuaW1hdGlvbiBwbHVnLWlucy4KIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBXS05WU3VwcG9ydHNDb21wb3NpdGluZ0NvcmVBbmltYXRpb25QbHVnaW5z
Qm9vbCA9IDc0NjU2OwogCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIE5QRXJyb3IgTlBOX0dl
dFZhbHVlKE5QUCBucHAsIE5QTgogICAgICAgICAgICAgKihOUEJvb2wqKXZhbHVlID0gcGx1Z2lu
LT5pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBjYXNl
IE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2w6CiAgICAgICAgICAgICAvLyBBbHdheXMgY2xh
aW0gdG8gc3VwcG9ydCB0aGUgQ29yZSBHcmFwaGljcyBkcmF3aW5nIG1vZGVsLgogICAgICAgICAg
ICAgKihOUEJvb2wqKXZhbHVlID0gdHJ1ZTsKQEAgLTU0Niw3ICs1NDYsNyBAQCBzdGF0aWMgTlBF
cnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOCiBzdGF0aWMgTlBFcnJvciBOUE5fU2V0VmFs
dWUoTlBQIG5wcCwgTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogewogICAgIHN3
aXRjaCAodmFyaWFibGUpIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIGNhc2UgTlBQVnBsdWdpbkRyYXdpbmdNb2RlbDogewogICAgICAgICAgICAgUmVm
UHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5QUChucHAp
OwogICAgICAgICAgICAgCkBAIC05NDAsNyArOTQwLDcgQEAgc3RhdGljIHZvaWQgTlBOX1Vuc2No
ZWR1bGVUaW1lcihOUFAgbnBwLAogICAgIHBsdWdpbi0+dW5zY2hlZHVsZVRpbWVyKHRpbWVySUQp
OwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIE5Q
RXJyb3IgTlBOX1BvcFVwQ29udGV4dE1lbnUoTlBQIG5wcCwgTlBNZW51KiBtZW51KQogewogICAg
IFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAo
bnBwKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVCcm93c2Vy
RnVuY3MoTlBOZXQKICAgICBuZXRzY2FwZUZ1bmNzLmdldGF1dGhlbnRpY2F0aW9uaW5mbyA9IE5Q
Tl9HZXRBdXRoZW50aWNhdGlvbkluZm87CiAgICAgbmV0c2NhcGVGdW5jcy5zY2hlZHVsZXRpbWVy
ID0gTlBOX1NjaGVkdWxlVGltZXI7CiAgICAgbmV0c2NhcGVGdW5jcy51bnNjaGVkdWxldGltZXIg
PSBOUE5fVW5zY2hlZHVsZVRpbWVyOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBuZXRzY2FwZUZ1bmNzLnBvcHVwY29udGV4dG1lbnUgPSBOUE5fUG9wVXBDb250
ZXh0TWVudTsKICAgICBuZXRzY2FwZUZ1bmNzLmNvbnZlcnRwb2ludCA9IE5QTl9Db252ZXJ0UG9p
bnQ7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lvbiAxNjQx
OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIE5ldHNjYXBlUGx1
Z2luOjpOZXRzY2FwZVBsdWdpbihQYXNzUmVmUHQKICAgICAsIG1fcGx1Z2luTW9kdWxlKHBsdWdp
bk1vZHVsZSkKICAgICAsIG1fbnBXaW5kb3coKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9pc1dpbmRvd2Vk
KGZhbHNlKQogI2Vsc2UKICAgICAsIG1faXNXaW5kb3dlZCh0cnVlKQpAQCAtNzIsNyArNzIsNyBA
QCBOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0CiAgICAgLCBtX3Nob3Vs
ZFVzZU1hbnVhbExvYWRlcihmYWxzZSkKICAgICAsIG1faGFzQ2FsbGVkU2V0V2luZG93KGZhbHNl
KQogICAgICwgbV9uZXh0VGltZXJJRCgwKQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAsIG1fZHJhd2luZ01vZGVsKHN0YXRpY19jYXN0PE5QRHJhd2luZ01vZGVs
PigtMSkpCiAgICAgLCBtX2V2ZW50TW9kZWwoc3RhdGljX2Nhc3Q8TlBFdmVudE1vZGVsPigtMSkp
CiAgICAgLCBtX3BsdWdpblJldHVybnNOb25yZXRhaW5lZExheWVyKCFtX3BsdWdpbk1vZHVsZS0+
cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpSZXR1cm5zUmV0YWluZWRDb3Jl
QW5pbWF0aW9uTGF5ZXIpKQpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgU2Nyb2xsYmFyKiBOZXRzY2Fw
ZVBsdWdpbjo6dmVydGljYWxTY3JvbAogCiBib29sIE5ldHNjYXBlUGx1Z2luOjpzdXBwb3J0c1Nu
YXBzaG90dGluZygpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZSAmJiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2lu
UXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpTdXBwb3J0c1NuYXBzaG90dGluZyk7CiAj
ZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAkocmV2
aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVnaW5zIGRvbid0IHN1cHBvcnQgYXN5
bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgogICAgIHZpcnR1YWwgYm9vbCBpc0JlaW5nQXN5bmNo
cm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlBFcnJvciBzZXREcmF3aW5nTW9k
ZWwoTlBEcmF3aW5nTW9kZWwpOwogICAgIE5QRXJyb3Igc2V0RXZlbnRNb2RlbChOUEV2ZW50TW9k
ZWwpOwogICAgIE5QQm9vbCBjb252ZXJ0UG9pbnQoZG91YmxlIHNvdXJjZVgsIGRvdWJsZSBzb3Vy
Y2VZLCBOUENvb3JkaW5hdGVTcGFjZSBzb3VyY2VTcGFjZSwgZG91YmxlJiBkZXN0WCwgZG91Ymxl
JiBkZXN0WSwgTlBDb29yZGluYXRlU3BhY2UgZGVzdFNwYWNlKTsKQEAgLTE4MCw3ICsxODAsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGRpcnR5UmVjdCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25h
cHNob3QoKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpOwogI2VuZGlmCiAgICAgdmlydHVhbCBi
b29sIGlzVHJhbnNwYXJlbnQoKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpIG92ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dGb2N1c0NoYW5nZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcyk7CiAgICAgdmlydHVh
bCB2b2lkIHdpbmRvd1Zpc2liaWxpdHlDaGFuZ2VkKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL2NmL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZO
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VD
YWNoZS9jZi9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcAkocmV2aXNpb24gMTY0MTkw
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL2NmL1dlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmgiCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTY0
MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29ucwogCiBGbG9hdFJlY3QgV2ViQ2hyb21lQ2xp
ZW50Ojp3aW5kb3dSZWN0KCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgaWYgKG1fcGFnZS0+aGFzQ2FjaGVkV2luZG93RnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIG1fcGFnZS0+d2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzKCk7CiAj
ZW5kaWYKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dW5mb2N1cygp
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEZvY3VzKGZhbHNl
KSk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TWFrZUZpcnN0UmVzcG9uZGVyKCkpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDIsNyArMjQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93
bmxvYWRVUkwoYwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi0jaWYgIVBMQVRGT1JN
KE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
ZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKICAgICBTdHJpbmcgc2VhcmNo
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNwZWFr
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmco
KSBvdmVycmlkZTsKICAgICAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlzaW9uIDE2NDE5MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgRHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xp
ZW50OjpkcmFnU291cgogICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uQW55OwogfQogCi0jaWYg
IVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYm
ICFQTEFURk9STShHVEspCiB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VS
ZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQmLCBGcmFtZSYs
IGJvb2wpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAkocmV2aXNpb24gMTY0MTkwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0ltYWdlUmVmLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3Ms
IFdlYkNvcmU6OkNsaXBib2FyZCYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZyA9IGZh
bHNlKSBvdmVycmlkZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDE2NDE5MCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWRvKCkK
ICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVVbmRv
UmVkbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oV2ViUGFnZVByb3h5OjpSZWRvKSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVVbmRvUmVkbzo6UmVwbHkocmVzdWx0KSk7CiB9CiAKLSNp
ZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oRUZMKQorI2lm
ICFQTEFURk9STShHVEspICYmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEVGTCkKIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogewogICAgIGlmIChtX3BhZ2UtPmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KGV2ZW50
KSkKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dGV4dFdpbGxCZURl
bGV0ZWRJCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFu
Z2VTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZSB0eXBlKSBjb25zdAogewogICAg
IC8vIFRoaXMgcHJldmVudHMgZXJhc2luZyBzcGVsbGluZyBtYXJrZXJzIG9uIE9TIFggTGlvbiBv
ciBsYXRlciB0byBtYXRjaCBBcHBLaXQgb24gdGhlc2UgTWFjIE9TIFggdmVyc2lvbnMuCi0jaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEVGTCkKICAgICByZXR1cm4gdHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxk
KFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENo
YW5nZUluVGV4dEFyZWEoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgTlNTdHJpbmcgKnVzZXJW
aXNpYmxlU3RyaW5nKE5TVVJMICopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKE5TQXR0
cmlidXRlZFN0cmluZyAqLCBWZWN0b3I8IFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+
PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE2NDE5MCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp0cmFuc2l0aW9uVG9DCiAKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXRQ
cm9oaWJpdHNTY3JvbGxpbmcoc2hvdWxkRGlzYWJsZVNjcm9sbGluZyk7CiAgICAgbV9mcmFtZS0+
Y29yZUZyYW1lKCktPnZpZXcoKS0+c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudCghd2Vi
UGFnZS0+c2hvdWxkRXh0ZW5kSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvbigpKTsKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPnZpZXcoKS0+c2V0RXhwb3NlZFJlY3Qod2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+ZXhw
b3NlZFJlY3QoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMjg4LDcgKzEyODgs
NyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6CiAgICAgcGFyYW1l
dGVycy5taW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIHBhcmFtZXRlcnMuaXNGdWxsRnJhbWVQbHVn
aW4gPSBsb2FkTWFudWFsbHk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VNYW51YWxMb2FkZXIg
PSBwYXJhbWV0ZXJzLmlzRnVsbEZyYW1lUGx1Z2luICYmICFtX2ZyYW1lQ2FtZUZyb21QYWdlQ2Fj
aGU7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBhcmFtZXRl
cnMubGF5ZXJIb3N0aW5nTW9kZSA9IG1fZnJhbWUtPnBhZ2UoKS0+bGF5ZXJIb3N0aW5nTW9kZSgp
OwogI2VuZGlmCiAKQEAgLTE1MTEsNyArMTUxMSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnJlZ2lzdGVyRm9ySWMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIAogUmVtb3RlQVhPYmplY3RSZWYgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSAKIHsKQEAgLTE1
MzEsNyArMTUzMSw3IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFdlYkZyYW1lTG9hZGVyQ2xpZW4K
ICAgICByZXR1cm4gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoKS5z
aG91bGRDYWNoZVJlc3BvbnNlKHdlYlBhZ2UsIG1fZnJhbWUsIGlkZW50aWZpZXIpID8gcmVzcG9u
c2UgOiBuaWw7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEFsd2F5c1VzZVBs
dWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVlKSBv
dmVycmlkZTsKICAgICAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkg
b3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2Fj
aGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmFkZFZpc2l0ZWRMaQogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZFZpc2l0
ZWRMaW5rKGxpbmtIYXNoKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKIC8vIFBhc3RlYm9hcmRTdHJhdGVneQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAx
NjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGxvbmcgY2hhbmdlQ291bnQoKSBvdmVycmlkZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjQsMTAgKzE2NCw4IEBAIHZvaWQgSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2Uodm9pZCkKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPUykKLSNpZiBQTEFURk9S
TShNQUMpCiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycyk7
CiAgICAgICAgIElOSVQoU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZv
ckxvY2FsZSk7Ci0jZW5kaWYKICAgICAgICAgSU5JVChHZXRBWFRleHRNYXJrZXJUeXBlSUQpOwog
ICAgICAgICBJTklUKEdldEFYVGV4dE1hcmtlclJhbmdlVHlwZUlEKTsKICAgICAgICAgSU5JVChD
cmVhdGVBWFRleHRNYXJrZXIpOwpAQCAtMjExLDcgKzIwOSw3IEBAIHZvaWQgSW5pdFdlYkNvcmVT
eXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICAgICAgSU5JVChHZXRWZW5kb3JOYW1lRm9yTmF2aWdh
dG9yKTsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKKyNpZiAhUExBVEZPUk0oSU9T
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKICAgICAgICAgSU5J
VChOU0VsYXN0aWNEZWx0YUZvclRpbWVEZWx0YSk7CiAgICAgICAgIElOSVQoTlNFbGFzdGljRGVs
dGFGb3JSZWJvdW5kRGVsdGEpOwogICAgICAgICBJTklUKE5TUmVib3VuZERlbHRhRm9yRWxhc3Rp
Y0RlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAKIC8vIFN1YmNsYXNzZXMKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oIgogI2Vsc2UKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGQ6
OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFnZSogd2Vi
UGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBzd2l0Y2ggKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSB7Ci0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgY2FzZSBEcmF3
aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb246CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJz
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFu
Z2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0
IGV4cG9zZWRSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21GaXhl
ZFBvc2l0aW9uUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBAIC0xMjcsNyAr
MTI3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgLypzY3JvbGxPZmZzZXQqLykgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFVwZGF0ZSgpIHsgfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHZpZXdTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXllclBvc2l0aW9uKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBi
b29sIHJlc3BvbmRJbW1lZGlhdGVseSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIFdlYkNvcmU6
OkludFNpemUgc2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSBzY3JvbGxPZmZzZXQpCiAgICAgRGlkVXBk
YXRlKCkKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBV
c2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5
KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3NpdGlv
bikKICAgICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXIuY3BwCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfCiB7CiAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtV2hlZWxFdmVudCA9IHBsYXRmb3JtKHdoZWVsRXZl
bnQpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHN3aXRj
aCAod2hlZWxFdmVudC5waGFzZSgpKSB7CiAgICAgY2FzZSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUJlZ2FuOgogICAgICAgICBtX3JlY2VudFdoZWVsRXZlbnREZWx0YVRyYWNrZXItPmJlZ2luVHJh
Y2tpbmdEZWx0YXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9M
YXllclRyZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0xheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURl
Y29kZXImKSA9IDA7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdN
b2RlKSB7IH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvUGFnZUJhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgUGFnZUJhbm5lcjo6flBhZ2VCYW5uZXIoKQogICAgIG1fY2xpZW50LT5w
YWdlQmFubmVyRGVzdHJveWVkKHRoaXMpOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCiB2b2lkIFBhZ2VCYW5uZXI6OmFkZFRvUGFn
ZShUeXBlLCBXZWJQYWdlKikKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9QYWdlQmFubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuaAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFU
Rk9STShJT1MpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2VuZGlmCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29s
IG1vdXNlRXZlbnQoUGFnZUJhbm5lciosIFdlYkV2ZW50OjpUeXBlLCBXZWJNb3VzZUV2ZW50OjpC
dXR0b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogICAgIH07CiAKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBhZ2VCYW5uZXI+IGNyZWF0ZShDQUxheWVyICosIGludCBoZWlnaHQsIENs
aWVudCopOwogICAgIENBTGF5ZXIgKmxheWVyKCk7CiAjZW5kaWYKQEAgLTc5LDcgKzc5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkQWRkUGFyZW50TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciopOwogCiBwcml2YXRlOgotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpICYm
ICFQTEFURk9STShJT1MpCiAgICAgZXhwbGljaXQgUGFnZUJhbm5lcihDQUxheWVyICosIGludCBo
ZWlnaHQsIENsaWVudCopOwogI2VuZGlmCiAKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fbW91c2VEb3duSW5CYW5uZXI7CiAgICAgYm9vbCBtX2lzSGlkZGVuOwogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9sYXllcjsKICAgICBpbnQgbV9oZWlnaHQ7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
cmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICNpbmNs
dWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNlbmRpZgogCkBAIC03MzQsNyArNzM0
LDcgQEAgdm9pZCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdAogICAgICAgICBt
X2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRX
cml0aW5nRGlyZWN0aW9uKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFt
ZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewogICAgIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvcmVG
cmFtZSgpLT5kb2N1bWVudCgpLCBbdGhpcywgY2FsbGJhY2ssIGNvbnRleHRdKEZyYW1lJiBmcmFt
ZSkgLT4gYm9vbCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRMb2FkTGlzdGVuZXIoTG9hZExpc3RlbmVyKiBsb2FkTGlzdGVu
ZXIpIHsgbV9sb2FkTGlzdGVuZXIgPSBsb2FkTGlzdGVuZXI7IH0KICAgICBMb2FkTGlzdGVuZXIq
IGxvYWRMaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZExpc3RlbmVyOyB9CiAgICAgCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHR5cGVkZWYgYm9vbCAo
KkZyYW1lRmlsdGVyRnVuY3Rpb24pKFdLQnVuZGxlRnJhbWVSZWYsIFdLQnVuZGxlRnJhbWVSZWYg
c3ViZnJhbWUsIHZvaWQqIGNvbnRleHQpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHdlYkFy
Y2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24sIHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAg
V2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZQogICAgICwgbV9pbnNwZWN0
b3JQYWdlKDApCiAgICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCiAgICAgLCBtX2Zyb250ZW5kQ2hh
bm5lbChmcm9udGVuZENoYW5uZWwpCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgICwgbV9oYXNMb2NhbGl6ZWRTdHJpbmdzVVJMKGZhbHNlKQogI2VuZGlmCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2UqIG1faW5zcGVjdG9y
UGFnZTsKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsK
ICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1fZnJvbnRlbmRDaGFubmVs
OwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBtdXRhYmxlIFN0
cmluZyBtX2xvY2FsaXplZFN0cmluZ3NVUkw7CiAgICAgbXV0YWJsZSBib29sIG1faGFzTG9jYWxp
emVkU3RyaW5nc1VSTDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY0MTkwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
MTAgKzE1Miw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSFRNTEFyY2hpdmUuaD4KICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIk1hY2hQb3J0LmgiCi0jZW5kaWYKLQogI2lm
IEVOQUJMRShCQVRURVJZX1NUQVRVUykKICNpbmNsdWRlICJXZWJCYXR0ZXJ5Q2xpZW50LmgiCiAj
ZW5kaWYKQEAgLTE3Miw3ICsxNjgsNyBAQAogI2luY2x1ZGUgIldlYkRldmljZVByb3hpbWl0eUNs
aWVudC5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0Ep
CiAjaW5jbHVkZSAiUERGUGx1Z2luLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNo
aXZlLmg+CiAjZW5kaWYKQEAgLTI1MSw3ICsyNDcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgLCBtX2RldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBs
dWdJblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OmRldGVybWluZVByaW1h
cnlTbmFwc2hvdHRlZFBsdWdJblRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1fbGF5ZXJIb3N0
aW5nTW9kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9wZGZQbHVnaW5FbmFibGVkKGZhbHNlKQogICAg
ICwgbV9oYXNDYWNoZWRXaW5kb3dGcmFtZShmYWxzZSkKICAgICAsIG1fa2V5Ym9hcmRFdmVudEJl
aW5nSW50ZXJwcmV0ZWQoMCkKQEAgLTE2MDcsNyArMTYwMyw3IEBAIHN0YXRpYyBib29sIGlzQ29u
dGV4dENsaWNrKGNvbnN0IFBsYXRmb3IKICAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29y
ZTo6UmlnaHRCdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0jaWYgUExBVEZPUk0oTUFD
KQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIEZJWE1FOiB0aGlzIHJlYWxseSBzaG91bGQg
YmUgYWJvdXQgT1NYLXN0eWxlIFVJLCBub3QgYWJvdXQgdGhlIE1hYyBwb3J0CiAgICAgaWYgKGV2
ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OkxlZnRCdXR0b24gJiYgZXZlbnQuY3RybEtleSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIyNTksNyArMjI1NSw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGEKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhOwogCkBAIC0yMzUxLDcgKzIzNDcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFdlYkFy
Y2hpdmVPZkZyYW1lKHVpbnQ2CiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVu
Y2U7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gZGF0YTsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKChkYXRhID0gZnJh
bWUtPndlYkFyY2hpdmVEYXRhKDAsIDApKSkKQEAgLTIzOTUsNyArMjM5MSw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKIAogICAgIG1fc2Nyb2xsaW5nUGVyZm9y
bWFuY2VMb2dnaW5nRW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZEtleSgpKTsKIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX3BkZlBsdWdpbkVuYWJs
ZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBkZlBsdWdp
bkVuYWJsZWRLZXkoKSk7CiAjZW5kaWYKIApAQCAtMjQ1MSw3ICsyNDQ3LDcgQEAgdm9pZCBXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLnNldERlZmF1bHRG
b250U2l6ZShzdG9yZS5nZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGVm
YXVsdEZvbnRTaXplS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXREZWZhdWx0Rml4ZWRGb250U2l6
ZShzdG9yZS5nZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGVmYXVsdEZp
eGVkRm9udFNpemVLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFNjcmVlbkZvbnRTdWJzdGl0dXRp
b25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2Ny
ZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWRLZXkoKSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIHx8IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnNob3VsZEZv
cmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbigpCiAjZW5kaWYKICAgICApOwpAQCAtMjUwMCw3ICsy
NDk2LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNl
dHRpbmdzLnNldEFWRm91bmRhdGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5Ojppc0FWRm91bmRhdGlvbkVuYWJsZWRLZXkoKSkpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc2V0dGluZ3Muc2V0
UVRLaXRFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
aXNRVEtpdEVuYWJsZWRLZXkoKSkpOwogI2VuZGlmCiAKQEAgLTI2MzMsNyArMjYyOSw3IEBAIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2UKICAgICByZXR1cm4gbV9ub3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuZ2V0KCk7CiB9CiAKLSNpZiAhUExBVEZP
Uk0oR1RLKSAmJiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9S
TShDT0NPQSkKIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZ0KQogewogICAgIE5vZGUqIG5vZGUgPSBldnQtPnRhcmdldCgpLT50b05vZGUo
KTsKQEAgLTMwOTUsMTMgKzMwOTEsMTMgQEAgdm9pZCBXZWJQYWdlOjpyZW1vdmVQbHVnaW5WaWV3
KFBsdWdpblZpZQogCiB2b2lkIFdlYlBhZ2U6OnNlbmRTZXRXaW5kb3dGcmFtZShjb25zdCBGbG9h
dFJlY3QmIHdpbmRvd0ZyYW1lKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBtX2hhc0NhY2hlZFdpbmRvd0ZyYW1lID0gZmFsc2U7CiAjZW5kaWYKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFdpbmRvd0ZyYW1lKHdpbmRvd0ZyYW1lKSk7
CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBh
Z2U6OndpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IEZsb2F0UmVjdCYgd2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBGbG9hdFJlY3QmIHdpbmRvd0ZyYW1lSW5VbmZs
aXBwZWRTY3JlZW5Db29yZGluYXRlcywgY29uc3QgRmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRv
d0Nvb3JkaW5hdGVzLCBjb25zdCBGbG9hdFBvaW50JiBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5h
dGVzKQogewogICAgIG1fd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzID0gd2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzOwpAQCAtMzMyNiw3ICszMzIyLDcgQEAgdm9pZCBXZWJQYWdl
OjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odQogICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpyZW1vdmVJdGVtKGl0ZW1JRCk7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKIGJvb2wgV2ViUGFnZTo6aXNTcGVha2luZygpCiB7CkBAIC0zMzYyLDcgKzMz
NTgsNyBAQCBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IFdlYlBhZ2U6OnBkZkRvY3VtCiAKICAgICBy
ZXR1cm4gcGx1Z2luVmlldy0+cGRmRG9jdW1lbnRGb3JQcmludGluZygpOwogfQotI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1Mp
CiAKIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbykKIHsKQEAgLTMzNzcsNyArMzM3Myw3IEBAIHZvaWQgV2ViUGFn
ZTo6YmVnaW5QcmludGluZyh1aW50NjRfdCBmcmEKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFU
Rk9STShJT1MpCiAgICAgaWYgKHBkZkRvY3VtZW50Rm9yUHJpbnRpbmdGcmFtZShjb3JlRnJhbWUp
KQogICAgICAgICByZXR1cm47Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKIAogICAgIGlmICghbV9wcmludENvbnRleHQp
CiAgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gYWRvcHRQdHIobmV3IFByaW50Q29udGV4dChjb3Jl
RnJhbWUpKTsKQEAgLTM0MTQsMTAgKzM0MTAsMTAgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFn
ZXNGb3JQcmludGluZyh1aQogICAgICAgICByZXN1bHRQYWdlUmVjdHMgPSBtX3ByaW50Q29udGV4
dC0+cGFnZVJlY3RzKCk7CiAgICAgICAgIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGlu
ZyA9IG1fcHJpbnRDb250ZXh0LT5jb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoRmxvYXRTaXpl
KHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJI
ZWlnaHQpKSAqIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvcjsKICAgICB9Ci0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVsc2UKICAgICAgICAgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdQREZEb2N1bWVudChmcmFtZUlELCBwcmludEluZm8sIHJlc3VsdFBh
Z2VSZWN0cyk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2VuZGlmIC8vIFBMQVRGT1JNKENP
Q09BKQogCiAgICAgLy8gSWYgd2UncmUgYXNrZWQgdG8gcHJpbnQsIHdlIHNob3VsZCBhY3R1YWxs
eSBwcmludCBhdCBsZWFzdCBhIGJsYW5rIHBhZ2UuCiAgICAgaWYgKHJlc3VsdFBhZ2VSZWN0cy5p
c0VtcHR5KCkpCkBAIC0zNDI2LDcgKzM0MjIsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKHVpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2socmVzdWx0UGFnZVJlY3RzLCByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9y
UHJpbnRpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJ
RCk7CkBAIC0zNTQzLDcgKzM1MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnNhdmVQREZUb0ZpbGVJbkRv
d25sb2Fkc0ZvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUERGVG9GaWxl
SW5Eb3dubG9hZHNGb2xkZXIoc3VnZ2VzdGVkRmlsZW5hbWUsIG9yaWdpbmF0aW5nVVJMU3RyaW5n
LCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgc2l6ZSkpKTsKIH0KIAotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViUGFnZTo6c2F2ZVBERlRvVGVtcG9yYXJ5
Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVQREZUb1RlbXBvcmFyeUZvbGRl
ckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oc3VnZ2VzdGVkRmlsZW5hbWUsIG9yaWdpbmF0
aW5nVVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UoZGF0YSwgc2l6ZSksIHBkZlVVSUQpKTsK
QEAgLTM2MDMsNyArMzU5OSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tbWl0UGFnZVRyYW5zaXRpb25W
aWV3cG8KIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogdm9pZCBXZWJQYWdlOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJp
bmcmIHJlc3VsdCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5
Miw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1
ZGUgIkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIgpAQCAtMjI3LDcg
KzIyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dElmTmVlZGVkKCk7CiAKICAgICAvLyAt
LSBDYWxsZWQgZnJvbSBXZWJDb3JlIGNsaWVudHMuCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGJvb2wgaGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29y
ZTo6S2V5Ym9hcmRFdmVudCosIGJvb2wgc2F2ZUNvbW1hbmRzKTsKICNlbGlmICFQTEFURk9STShH
VEspCiAgICAgYm9vbCBoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50Kik7CkBAIC0zNzUsNyArMzc1LDcgQEAgcHVibGljOgogICAgIExheWVySG9zdGluZ01v
ZGUgbGF5ZXJIb3N0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0aW5nTW9kZTsg
fQogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCk7CiAKLSNpZiBQTEFURk9S
TShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB1cGRhdGVQbHVnaW5zQWN0aXZl
QW5kRm9jdXNlZFN0YXRlKCk7CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB3aW5kb3dG
cmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd0ZyYW1lSW5T
Y3JlZW5Db29yZGluYXRlczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgd2luZG93
RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV93aW5k
b3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXM7IH0KQEAgLTM4OSw3ICszODksNyBA
QCBwdWJsaWM6CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogICAgIHZvaWQgdXBkYXRlSGVh
ZGVyQW5kRm9vdGVyTGF5ZXJzRm9yRGV2aWNlU2NhbGVDaGFuZ2UoZmxvYXQgc2NhbGVGYWN0b3Ip
OwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAog
ICAgIGJvb2wgd2luZG93SXNGb2N1c2VkKCkgY29uc3Q7CiAgICAgYm9vbCB3aW5kb3dBbmRXZWJQ
YWdlQXJlRm9jdXNlZCgpIGNvbnN0OwpAQCAtNTEyLDcgKzUxMiw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCogYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOwogICAgIE5TT2JqZWN0ICphY2Nlc3NpYmls
aXR5T2JqZWN0Rm9yTWFpbkZyYW1lUGx1Z2luKCk7CkBAIC01NjEsNyArNTYxLDcgQEAgcHVibGlj
OgogICAgIC8vIGFueSBzeW5jaHJvbm91cyBtZXNzYWdlcywgYW5kIHNob3VsZCBiZSByZW1vdmVk
IHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzg3NzUxMTU+IGlzIGZpeGVkLgogICAgIHZvaWQgZHVtbXko
Ym9vbCYpOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZv
aWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJik7CiAKICAgICBib29sIGlzU3BlYWtpbmco
KTsKQEAgLTU5NCw3ICs1OTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpblByaW50aW5nKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmco
KTsKICAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1Bh
Z2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbGlmIFBMQVRGT1JN
KEdUSykKQEAgLTYyNSw3ICs2MjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVubWFya0FsbE1p
c3NwZWxsaW5ncygpOwogICAgIHZvaWQgdW5tYXJrQWxsQmFkR3JhbW1hcigpOwotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGhhbmRsZUFsdGVybmF0aXZl
VGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKQEAgLTY3MSwxNCArNjcxLDE0
IEBAIHB1YmxpYzoKICAgICBib29sIHNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQ7IH0K
ICAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9vbCk7CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBzaG91bGRV
c2VQREZQbHVnaW4oKSBjb25zdDsKICAgICBib29sIHBkZlBsdWdpbkVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX3BkZlBsdWdpbkVuYWJsZWQ7IH0KICAgICB2b2lkIHNldFBERlBsdWdpbkVuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IG1fcGRmUGx1Z2luRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICNlbmRp
ZgogCiAgICAgdm9pZCBzYXZlUERGVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKLSNpZiBQTEFURk9STShN
QUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBzYXZlUERGVG9UZW1wb3JhcnlGb2xk
ZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKTsKICNlbmRp
ZgogCkBAIC03MzEsMTIgKzczMSwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGNvbnZl
cnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KiwgVmVjdG9yPFdl
YkNvcmU6OlNlbGVjdGlvblJlY3Q+Jik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4g
cmFuZ2VGb3JXZWJTZWxlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uJiwgV0tTZWxlY3Rpb25GbGFncyYpOwogI2Vu
ZGlmCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGludGVycHJldEtleUV2ZW50KGNvbnN0IFdlYkNvcmU6OktleWJvYXJkRXZl
bnQqKTsKICNlbmRpZgogICAgIGJvb2wgcGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBib29sIGV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mLCBXZWJDb3JlOjpLZXlib2FyZEV2
ZW50Kik7CiAjZW5kaWYKIApAQCAtODIzLDcgKzgyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25h
cnlMb29rdXBGb3JSYW5nZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OlJhbmdlKiwgTlNEaWN0
aW9uYXJ5ICpvcHRpb25zKTsKIApAQCAtOTQ4LDcgKzk0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8g
VGhlIGxheWVyIGhvc3RpbmcgbW9kZS4KICAgICBMYXllckhvc3RpbmdNb2RlIG1fbGF5ZXJIb3N0
aW5nTW9kZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBi
b29sIG1fcGRmUGx1Z2luRW5hYmxlZDsKIAogICAgIGJvb2wgbV9oYXNDYWNoZWRXaW5kb3dGcmFt
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTIzLDcgKzEyMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogICAgIEZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQogCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgRGljdGlvbmFyeSBzdXBwb3J0Lgog
ICAgIFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
IHBvaW50KQogI2VuZGlmCkBAIC0yMTUsNyArMjE1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgTG93ZXJjYXNlV29yZCgpCiAgICAgQ2FwaXRhbGl6ZVdvcmQo
KQogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNl
dFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVk
KQogI2VuZGlmCiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBCZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbykKICAgICBFbmRQcmludGluZygpCiAgICAgQ29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCB1aW50NjRfdCBjYWxsYmFja0lEKQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBEcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUg
aW1hZ2VTaXplLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERyYXdQYWdlc1RvUERGKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlmCkBAIC0yNjgsNyAr
MjY4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2FuY2Vs
Q29tcG9zaXRpb24oKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgIyBDb21wbGV4IHRleHQgaW5wdXQgc3VwcG9ydCBmb3IgcGx1Zy1pbnMuCiAg
ICAgU2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4
dElucHV0SWRlbnRpZmllciwgU3RyaW5nIHRleHRJbnB1dCkKIApAQCAtMzA4LDcgKzMwOCw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEZpbmRab29tYWJsZUFy
ZWFGb3JQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6SW50U2l6ZSBhcmVh
KQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoU3RyaW5nIHJlc3VsdCkKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BhZ2VCYW5uZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
YWdlQmFubmVyTWFjLm1tCShyZXZpc2lvbiAxNjQxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BhZ2VCYW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlQmFubmVyLmgi
CiAKKyNpZiAhUExBVEZPUk0oSU9TKQorCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CkBAIC0xNjYsNCArMTY4LDYgQEAgQ0FMYXllciAqUGFnZUJhbm5lcjo6bGF5ZXIoKQogICAgIHJl
dHVybiBtX2xheWVyLmdldCgpOwogfQogCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="248411"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>