<?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>22976</bug_id>
          
          <creation_ts>2008-12-23 08:04:47 -0800</creation_ts>
          <short_desc>crash due to Mail&apos;s use of WebArchive and WebResource on non-main thread</short_desc>
          <delta_ts>2008-12-23 13:43:57 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>103292</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-23 08:04:47 -0800</bug_when>
    <thetext>Mark Rowe:

* SUMMARY
When attempting to forward a message in Mail running against TOT WebKit I am hitting an assertion failure.

* STEPS TO REPRODUCE
1. Run Mail with a debug build of TOT WebKit.
2. Select a message and hit Cmd-Shift-F to forward it.
3. If 2. alone does not crash, close the window.

* RESULTS
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xbbadbeef
0x07d0a35b in WTF::RefCountedBase::derefBase (this=0x236aa870) at RefCounted.h:65
65	        ASSERT(!m_deletionHasBegun);
(gdb) bt
#0  0x07d0a35b in WTF::RefCountedBase::derefBase (this=0x236aa870) at RefCounted.h:65
#1  0x07d0ad69 in WTF::RefCounted&lt;WebCore::StringImpl&gt;::deref (this=0x236aa870) at RefCounted.h:95
#2  0x07da059f in WTF::RefPtr&lt;WebCore::StringImpl&gt;::~RefPtr (this=0x235f282c) at RefPtr.h:50
#3  0x07d0ada5 in WebCore::String::~String (this=0x235f282c) at text/PlatformString.h:61
#4  0x07ce3d1d in WebCore::ArchiveResource::~ArchiveResource (this=0x235f2740) at archive/ArchiveResource.h:38
#5  0x02d80199 in WTF::RefCounted&lt;WebCore::SubstituteResource&gt;::deref (this=0x235f2744) at RefCounted.h:96
#6  0x02e15c7e in -[WebResourcePrivate dealloc] (self=0x2350ee90, _cmd=0x33e1514) at WebKit/mac/WebView/WebResource.mm:97
#7  0x02e158ed in -[WebResource dealloc] (self=0x235f9a80, _cmd=0x33e1514) at WebKit/mac/WebView/WebResource.mm:194
#8  0x02d7f965 in -[WebArchivePrivate dealloc] (self=0x1ed68310, _cmd=0x33e1514) at WebKit/mac/WebView/WebArchive.mm:118
#9  0x02d7e765 in -[WebArchive dealloc] (self=0x235f8450, _cmd=0x33e1514) at WebKit/mac/WebView/WebArchive.mm:265
#10 0x0213cb56 in -[WebMessageDocument dealloc] ()
#11 0x035525ba in CFRelease () at FastMalloc.h:90
#12 0x0351fb69 in __CFDictionaryDeallocate () at FastMalloc.h:90
#13 0x03552768 in _CFRelease () at FastMalloc.h:90
#14 0x0008c2ad in ?? ()
#15 0x01a83e4f in NSPopAutoreleasePool ()
#16 0x00d786cc in -[NSApplication run] ()
#17 0x00d458a4 in NSApplicationMain ()
#18 0x000fb6f2 in ?? ()
Current language:  auto; currently c++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103293</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-23 08:05:35 -0800</bug_when>
    <thetext>The problem here is that Mail is using WebArchive and WebResource from a non-main thread, and this is not supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103296</commentid>
    <comment_count>2</comment_count>
      <attachid>26226</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-23 08:23:03 -0800</bug_when>
    <thetext>Created attachment 26226
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103311</commentid>
    <comment_count>3</comment_count>
      <attachid>26226</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-23 10:47:13 -0800</bug_when>
    <thetext>Comment on attachment 26226
patch

r=me

It&apos;s unfortunate that needMailThreadWorkaround() and _needMailThreadWorkaround() perform different checks, but I don&apos;t have any better suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103323</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-23 13:41:05 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/39455</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26226</attachid>
            <date>2008-12-23 08:23:03 -0800</date>
            <delta_ts>2008-12-23 10:47:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>MailThreadPatch.txt</filename>
            <type>text/plain</type>
            <size>35771</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMzk0NTApCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMDgtMTItMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk3NgorICAgICAgICAgIGNy
YXNoIGR1ZSB0byBNYWlsJ3MgdXNlIG9mIFdlYkFyY2hpdmUgYW5kIFdlYlJlc291cmNlIG9uIG5v
bi1tYWluIHRocmVhZAorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZCBuZXcgZmlsZSBXZWJOU09iamVjdEV4dHJhcy5tbSBhbmQKKyAgICAgICAgZXhpc3Rp
bmcgZmlsZSBXZWJSZXNvdXJjZUludGVybmFsLmguCisKIDIwMDgtMTItMDggIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWcgMjI1NTU6IFNvcnQgImNoaWxk
cmVuIiBzZWN0aW9ucyBpbiBYY29kZSBwcm9qZWN0IGZpbGVzCkluZGV4OiBXZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzOTQ0OSkKKysrIFdlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzEx
NSw4IEBACiAJCTkzMTYzM0VCMEFFREZGOTMwMDYyQjkyRCAvKiBXZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNjMz
RUEwQUVERkY5MzAwNjJCOTJEIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50LmggKi87IH07CiAJCTkz
MTYzM0VGMEFFREZGQUUwMDYyQjkyRCAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTYzM0VFMEFFREZGQUUw
MDYyQjkyRCAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5tbSAqLzsgfTsKIAkJOTM0QzExNjcwRDg3
MTBCQjAwQzMyQUJEIC8qIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRDMTE2NjBEODcxMEJC
MDBDMzJBQkQgLyogV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50ZXJuYWwuaCAqLzsgfTsKKwkJ
OTM0QzRBOTEwRjAxNDA2QzAwOTM3MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QzRBOTAwRjAxNDA2QzAw
OTM3MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1tICovOyB9OworCQk5MzRDNEFBMDBGMDE0MUY3
MDA5MzcyQzAgLyogV2ViUmVzb3VyY2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QzRBOUYwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJl
c291cmNlSW50ZXJuYWwuaCAqLzsgfTsKIAkJOTM5ODEwMTEwODI0QkYwMTAwOERGMDM4IC8qIFdl
YkJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzk0NDYwN0QwMjBGNTBFRDBFQ0ExNzY3IC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJOTM5ODEw
MTIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhpc3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MjBGQjE5MDIyMURFRkQwMUMxQTUyNSAvKiBXZWJI
aXN0b3J5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owog
CQk5Mzk4MTAxMzA4MjRCRjAxMDA4REYwMzggLyogV2ViSGlzdG9yeUl0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM5NDQ2MDdGMDIwRjUwRUQwRUNB
MTc2NyAvKiBXZWJIaXN0b3J5SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKQEAgLTUyMSw2ICs1MjMsOCBAQAogCQk5MzQ1RERCMjAzNjVGRkQwMDA4
NjM1Q0UgLyogV2ViTlNDb250cm9sRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTlNDb250cm9sRXh0cmFzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5MzQ1RERCMzAz
NjVGRkQwMDA4NjM1Q0UgLyogV2ViTlNDb250cm9sRXh0cmFzLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViTlNDb250cm9sRXh0cmFzLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk5MzRDMTE2NjBEODcxMEJCMDBDMzJBQkQgLyogV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3SW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRHluYW1pY1Njcm9s
bEJhcnNWaWV3SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0QzRB
OTAwRjAxNDA2QzAwOTM3MkMwIC8qIFdlYk5TT2JqZWN0RXh0cmFzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTlNPYmplY3RFeHRyYXMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNEM0QTlGMEYwMTQxRjcwMDkzNzJDMCAvKiBXZWJSZXNv
dXJjZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291
cmNlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5ODExMzIwODI0
QkYwMTAwOERGMDM4IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBuYW1l
ID0gSW5mby5wbGlzdDsgcGF0aCA9IG1hYy9JbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAxOyB9OwogCQk5Mzk4MTEzMzA4MjRCRjAx
MDA4REYwMzggLyogV2ViS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IFdlYktpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTkzQUVCMTdEMDMyQzE3MzUwMDg2MzVDRSAvKiBXZWJLaXRMb2dnaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0TG9n
Z2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKQEAgLTg0Niw2ICs4NTAsNyBAQAogCQkJCTUxNDk0RDIyMEM3RUMxQjYwMDQxNzhDNSAv
KiBXZWJOU05vdGlmaWNhdGlvbkNlbnRlckV4dHJhcy5oICovLAogCQkJCTUxNDk0RDIzMEM3RUMx
QjcwMDQxNzhDNSAvKiBXZWJOU05vdGlmaWNhdGlvbkNlbnRlckV4dHJhcy5tICovLAogCQkJCTkz
RDFGRTEzMDY3RUIxMEIwMDlDRTY4QSAvKiBXZWJOU09iamVjdEV4dHJhcy5oICovLAorCQkJCTkz
NEM0QTkwMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSAqLywKIAkJCQlF
RDJCMjQ3NDAzM0EyREE4MDBDMUE1MjYgLyogV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmggKi8sCiAJ
CQkJRUQyQjI0NzUwMzNBMkRBODAwQzFBNTI2IC8qIFdlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSAq
LywKIAkJCQlFREQxQTVDNjA1QzgzOTg3MDA4RTMxNTAgLyogV2ViTlNQcmludE9wZXJhdGlvbkV4
dHJhcy5oICovLApAQCAtMTAzMiw2ICsxMDM3LDcgQEAKIAkJCQlGNUY4MUMzQTAyQjY3QzI2MDE4
NjM1Q0EgLyogV2ViUmVuZGVyTm9kZS5tbSAqLywKIAkJCQk4NDMxMUExMjA1RUFBQUYwMDA4OEVE
QTQgLyogV2ViUmVzb3VyY2UuaCAqLywKIAkJCQk4NDMxMUExMzA1RUFBQUYwMDA4OEVEQTQgLyog
V2ViUmVzb3VyY2UubW0gKi8sCisJCQkJOTM0QzRBOUYwRjAxNDFGNzAwOTM3MkMwIC8qIFdlYlJl
c291cmNlSW50ZXJuYWwuaCAqLywKIAkJCQk1MTNENDIyRTAzNENGNTVBMDBDQTJBQ0QgLyogV2Vi
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLywKIAkJCQk2NTZEMzMzRDBBRjIxQUU5MDAyMTIxNjkg
LyogV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlLmggKi8sCiAJCQkJODQzMTFBRjEwNUVB
QjEyQjAwODhFREE0IC8qIFdlYlJlc291cmNlUHJpdmF0ZS5oICovLApAQCAtMTM2Myw2ICsxMzY5
LDcgQEAKIAkJCQk5Mzk4MTA1RTA4MjRCRjAxMDA4REYwMzggLyogV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA1RjA4MjRCRjAxMDA4REYwMzggLyogV2Vi
UmVuZGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwODgwODI0QkYwMTAwOERGMDM4
IC8qIFdlYlJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRDNEFBMDBGMDE0MUY3MDA5
MzcyQzAgLyogV2ViUmVzb3VyY2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEw
NjAwODI0QkYwMTAwOERGMDM4IC8qIFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTZEMzMzRTBBRjIxQUU5MDAyMTIxNjkgLyogV2ViUmVzb3VyY2VMb2FkRGVs
ZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA4OTA4MjRCRjAxMDA4REYw
MzggLyogV2ViUmVzb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTE2NDgsNiArMTY1
NSw3IEBACiAJCQkJNjVFRURFNTgwODRGRkM5RTAwMDJEQjI1IC8qIFdlYk5TRmlsZU1hbmFnZXJF
eHRyYXMubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEM3MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJOU0ltYWdlRXh0cmFzLm0gaW4gU291cmNlcyAqLywKIAkJCQk1MTQ5NEQyNTBDN0VDMUI3MDA0
MTc4QzUgLyogV2ViTlNOb3RpZmljYXRpb25DZW50ZXJFeHRyYXMubSBpbiBTb3VyY2VzICovLAor
CQkJCTkzNEM0QTkxMEYwMTQwNkMwMDkzNzJDMCAvKiBXZWJOU09iamVjdEV4dHJhcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTkzOTgxMEM4MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTExOTA4MjRCRjAxMDA4REYwMzgg
LyogV2ViTlNQcmludE9wZXJhdGlvbkV4dHJhcy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEx
MTIwODI0QkYwMTAwOERGMDM4IC8qIFdlYk5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzk0NTApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDA4LTEyLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAtIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzYKKyAg
ICAgICAgICBjcmFzaCBkdWUgdG8gTWFpbCdzIHVzZSBvZiBXZWJBcmNoaXZlIGFuZCBXZWJSZXNv
dXJjZSBvbiBub24tbWFpbiB0aHJlYWQKKworICAgICAgICAqIE1pc2MvV2ViS2l0TG9nZ2luZy5o
OiBJbXByb3ZlZCBjb21tZW50cyBmb3IgQVNTRVJUX01BSU5fVEhSRUFELiBHb3QgcmlkIG9mCisg
ICAgICAgIFdlYktpdFJ1bm5pbmdPbk1haW5UaHJlYWQgZnVuY3Rpb24sIHdoaWNoIHdhcyBqdXN0
IGEgY292ZXIgZm9yIHB0aHJlYWRfbWFpbl9ucC4KKyAgICAgICAgKiBNaXNjL1dlYktpdExvZ2dp
bmcubTogRGl0dG8uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdFZlcnNpb25DaGVja3MuaDogQWRk
ZWQgYSB2ZXJzaW9uIGFmdGVyIHdoaWNoIHdlIHdvbid0IGRvIHRoZQorICAgICAgICBtYWluIHRo
cmVhZCB3b3JrYXJvdW5kLgorCisgICAgICAgICogTWlzYy9XZWJOU09iamVjdEV4dHJhcy5oOiBB
ZGRlZCBhIG5ldyBtZXRob2QsIF93ZWJraXRfZ2V0UHJvcGVydHlPbk1haW5UaHJlYWQ6LAorICAg
ICAgICB3aGljaCBwZXJmb3JtcyBhIHNlbGVjdG9yIG9uIHRoZSBtYWluIHRocmVhZCwgd2FpdHMg
Zm9yIGl0IHRvIGNvbXBsZXRlLCBhbmQgdGhlbgorICAgICAgICByZXR1cm5zIHRoZSB2YWx1ZSBv
biB0aGUgY2FsbGVyIHRocmVhZC4KKyAgICAgICAgKiBNaXNjL1dlYk5TT2JqZWN0RXh0cmFzLm1t
OiBBZGRlZC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKC1b
V2ViQXJjaGl2ZSBpbml0XSk6IEFkZGVkIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVjay4KKyAg
ICAgICAgKC1bV2ViQXJjaGl2ZSBpbml0V2l0aE1haW5SZXNvdXJjZTpzdWJyZXNvdXJjZXM6c3Vi
ZnJhbWVBcmNoaXZlczpdKTogUGVyZm9ybQorICAgICAgICBpbml0aWFsaXphdGlvbiBvbiBtYWlu
IHRocmVhZCBpZiBuZWVkTWFpbFRocmVhZFdvcmthcm91bmQgaXMgdHJ1ZS4KKyAgICAgICAgQWxz
byBhZGRlZCBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2suCisgICAgICAgICgtW1dlYkFyY2hp
dmUgaW5pdFdpdGhEYXRhOl0pOiBBZGRlZCBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2suCisg
ICAgICAgICgtW1dlYkFyY2hpdmUgbWFpblJlc291cmNlXSk6IEdldCBwcm9wZXJ0eSBvbiBtYWlu
IHRocmVhZCBpZgorICAgICAgICBuZWVkTWFpbFRocmVhZFdvcmthcm91bmQgaXMgdHJ1ZS4gQWxz
byBhZGRlZCBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2suCisgICAgICAgICgtW1dlYkFyY2hp
dmUgc3VicmVzb3VyY2VzXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJBcmNoaXZlIHN1YmZyYW1l
QXJjaGl2ZXNdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkFyY2hpdmUgZGF0YV0pOiBEaXR0by4K
KyAgICAgICAgKC1bV2ViQXJjaGl2ZSBfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTpdKTog
QWRkZWQgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrLgorICAgICAgICAoLVtXZWJBcmNoaXZl
IF9jb3JlTGVnYWN5V2ViQXJjaGl2ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bV2ViQXJjaGl2ZSBf
aW5pdFdpdGhBcmd1bWVudHM6XSk6IEFkZGVkLiBVc2VkIHRvIGltcGxlbWVudCB0aGUgY3Jvc3Mt
dGhyZWFkCisgICAgICAgIHZlcnNpb24gb2YgaW5pdFdpdGhNYWluUmVzb3VyY2UgYWJvdmUuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJj
ZSBpbml0V2l0aENvZGVyOl0pOiBBZGRlZCBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2suCisg
ICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKTogR2V0IHByb3BlcnR5IG9uIG1haW4gdGhyZWFk
IGlmCisgICAgICAgIG5lZWRNYWlsVGhyZWFkV29ya2Fyb3VuZCBpcyB0cnVlLiBBbHNvIGFkZGVk
IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVjay4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgVVJM
XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBNSU1FVHlwZV0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV2ViUmVzb3VyY2UgdGV4dEVuY29kaW5nTmFtZV0pOiBEaXR0by4KKyAgICAgICAg
KC1bV2ViUmVzb3VyY2UgZnJhbWVOYW1lXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJSZXNvdXJj
ZSBfaWdub3JlV2hlblVuYXJjaGl2aW5nXSk6IEFkZGVkIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25D
aGVjay4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX2luaXRXaXRoRGF0YTpVUkw6TUlNRVR5cGU6
dGV4dEVuY29kaW5nTmFtZTpmcmFtZU5hbWU6cmVzcG9uc2U6Y29weURhdGE6XSk6CisgICAgICAg
IFBlcmZvcm0gaW5pdGlhbGl6YXRpb24gb24gbWFpbiB0aHJlYWQgaWYgbmVlZE1haWxUaHJlYWRX
b3JrYXJvdW5kIGlzIHRydWUuCisgICAgICAgIEFsc28gYWRkZWQgV2ViQ29yZVRocmVhZFZpb2xh
dGlvbkNoZWNrLgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3VnZ2VzdGVkRmlsZW5hbWVdKTog
QWRkZWQuIEhlbHBlciBmb3IgX2ZpbGVXcmFwcGVyUmVwcmVzZW50YXRpb24uCisgICAgICAgICgt
W1dlYlJlc291cmNlIF9maWxlV3JhcHBlclJlcHJlc2VudGF0aW9uXSk6IFJld3JvdGUgdG8gdXNl
IG1ldGhvZHMgaW5zdGVhZCBvZgorICAgICAgICBnZXR0aW5nIGF0IGNvcmVSZXNvdXJjZSBkaXJl
Y3RseS4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3Jlc3BvbnNlXSk6IEFkZGVkIFdlYkNvcmVU
aHJlYWRWaW9sYXRpb25DaGVjay4KKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVl
XSk6IERpdHRvLgorICAgICAgICAoK1tXZWJSZXNvdXJjZSBfbmVlZE1haWxUaHJlYWRXb3JrYXJv
dW5kXSk6IEFkZGVkLgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfaW5pdFdpdGhBcmd1bWVudHM6
XSk6IEFkZGVkLiBVc2VkIHRvIGltcGxlbWVudCB0aGUgY3Jvc3MtdGhyZWFkCisgICAgICAgIHZl
cnNpb24gb2YgX2luaXRXaXRoRGF0YSBhYm92ZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUmVz
b3VyY2VJbnRlcm5hbC5oOiBDaGFuZ2VkIHRvIGluY2x1ZGUgV2ViUmVzb3VyY2VQcml2YXRlLmgg
c2luY2UgaW50ZXJuYWwKKyAgICAgICAgY2xpZW50cyBoYXZlIGFjY2VzcyB0byB0aGUgU1BJIGFz
IHdlbGwgYXMgdGhlIEFQSS4gQWRkZWQgZGVmaW5pdGlvbiBvZiBNQUlMX1RIUkVBRF9XT1JLQVJP
VU5ECisgICAgICAgIGFuZCB0aGUgbmVlZE1haW5UaHJlYWRXb3JrYXJvdW5kIGhlbHBlciBmdW5j
dGlvbi4KKworICAgICAgICAqIE1pc2MvV2ViSWNvbkRhdGFiYXNlLm1tOiBSZW1vdmVkIGluY2x1
ZGUgb2Ygbm93LWRlZnVuY3QgRm91bmRhdGlvbkV4dHJhcy5oCisgICAgICAgIGZpbGUuIFRoaXMg
cHJvYmFibHkgZml4ZXMgY2xlYW4gYnVpbGRzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykljb25EYXRhYmFzZUNsaWVudC5tbTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbTogUmVtb3ZlZCBpbmNsdWRlIG9mIFdlYlJlc291cmNl
UHJpdmF0ZS5oLAorICAgICAgICBzaW5jZSBpdCdzIG5vdCBhY3R1YWxseSB1c2VkLgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbTogRGl0dG8uCisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06IERpdHRvLgorCiAyMDA4LTEyLTIyICBLZXZpbiBEZWNr
ZXIgIDxrZGVja2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViSWNvbkRhdGFiYXNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJJY29uRGF0YWJhc2UubW0JKHJldmlzaW9uIDM5NDQ5
KQorKysgV2ViS2l0L21hYy9NaXNjL1dlYkljb25EYXRhYmFzZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldl
YlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCi0jaW1wb3J0IDxX
ZWJDb3JlL0ZvdW5kYXRpb25FeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkRhdGFiYXNl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ludFNpemUu
aD4KSW5kZXg6IFdlYktpdC9tYWMvTWlzYy9XZWJLaXRMb2dnaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9NaXNjL1dlYktpdExvZ2dpbmcuaAkocmV2aXNpb24gMzk0NDkpCisrKyBXZWJL
aXQvbWFjL01pc2MvV2ViS2l0TG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
MywxMyArNjMsMTEgQEAgZXh0ZXJuIFdURkxvZ0NoYW5uZWwgV2ViS2l0TG9nVGV4dElucHV0Owog
CiB2b2lkIFdlYktpdEluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSh2b2lkKTsK
IAotQk9PTCBXZWJLaXRSdW5uaW5nT25NYWluVGhyZWFkKHZvaWQpOwotCi0vLyBUaGUgQVNTRVJU
X01BSU5fVEhSRUFEKCkgY2hlY2sgc2hvdWxkIGJlIG9uIGJ5IGRlZmF1bHQgaW4gREVCVUcgYnVp
bGRzCi0vLyBUbyBkaXNhYmxlIGl0LCBldmVuIGluIGEgZGVidWcgYnVpbGQsIGRlZmluZSBESVNB
QkxFX1RIUkVBRF9DSEVDSyBpbiB5b3VyIHByb2plY3QgZmlsZSAob3IgZWxzZXdoZXJlIGdsb2Jh
bGx5KQorLy8gRklYTUU6IFdoeSBpcyB0aGlzIGluIHRoZSAibG9nZ2luZyIgaGVhZGVyIGZpbGU/
CisvLyBVc2UgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrIGluc3RlYWQgZm9yIGNoZWNrcyB0
aGF0IHRocm93IGFuIGV4Y2VwdGlvbiBldmVuIGluIHByb2R1Y3Rpb24gYnVpbGRzLgogI2lmICFk
ZWZpbmVkKE5ERUJVRykgJiYgIWRlZmluZWQoRElTQUJMRV9USFJFQURfQ0hFQ0spCiAjZGVmaW5l
IEFTU0VSVF9NQUlOX1RIUkVBRCgpIGRvIFwKLSAgICBpZiAoIVdlYktpdFJ1bm5pbmdPbk1haW5U
aHJlYWQoKSkgeyBcCisgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgeyBcCiAgICAgICAgIFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZV
TkNUSU9OLCAiPG5vdCBydW5uaW5nIG9uIG1haW4gdGhyZWFkPiIpOyBcCiAgICAgICAgIENSQVNI
KCk7IFwKICAgICB9IFwKSW5kZXg6IFdlYktpdC9tYWMvTWlzYy9XZWJLaXRMb2dnaW5nLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNjL1dlYktpdExvZ2dpbmcubQkocmV2aXNpb24gMzk0
NDkpCisrKyBXZWJLaXQvbWFjL01pc2MvV2ViS2l0TG9nZ2luZy5tCSh3b3JraW5nIGNvcHkpCkBA
IC05OSwxMSArOTksNiBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5l
CiAgICAgaW5pdGlhbGl6ZUxvZ0NoYW5uZWwoJldlYktpdExvZ1RleHRJbnB1dCk7CiB9CiAKLUJP
T0wgV2ViS2l0UnVubmluZ09uTWFpblRocmVhZCgpCi17Ci0gICAgcmV0dXJuIHB0aHJlYWRfbWFp
bl9ucCgpICE9IDA7Ci19Ci0KIHZvaWQgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24o
U0VMIGRlbGVnYXRlU2VsZWN0b3IsIGlkIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoW2V4Y2VwdGlv
biBpc0tpbmRPZkNsYXNzOltOU0V4Y2VwdGlvbiBjbGFzc11dKQpJbmRleDogV2ViS2l0L21hYy9N
aXNjL1dlYktpdFZlcnNpb25DaGVja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL01pc2Mv
V2ViS2l0VmVyc2lvbkNoZWNrcy5oCShyZXZpc2lvbiAzOTQ0OSkKKysrIFdlYktpdC9tYWMvTWlz
Yy9XZWJLaXRWZXJzaW9uQ2hlY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAK
ICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0FESU5HX0RVUklOR19DT01NT05f
UlVOTE9PUF9NT0RFUyAweDAyMEUwMDAwIC8vIDUyNi4wLjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNU
X1ZFUlNJT05fV0lUSF9NT1JFX1NUUklDVF9MT0NBTF9SRVNPVVJDRV9TRUNVUklUWV9SRVNUUklD
VElPTiAweDAyMTAwMjAwIC8vIDUyOC4yLjAKICNkZWZpbmUgV0VCS0lUX0ZJUlNUX1ZFUlNJT05f
V0lUSF9SRUxPQURfRlJPTV9PUklHSU4gMHgwMjEwMDcwMCAvLyA1MjguNy4wCisjZGVmaW5lIFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfTUFJTF9USFJFQURfV09SS0FST1VORCAweDAyMTAw
NzAwIC8vIDUyOC43LjAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKSW5kZXg6
IFdlYktpdC9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5oCShyZXZpc2lvbiAzOTQ0OSkKKysrIFdlYktp
dC9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwzICs1
Miw3IEBAIHN0YXRpYyBpbmxpbmUgSU1QIG1ldGhvZF9zZXRJbXBsZW1lbnRhdGkKIH0KIAogI2Vu
ZGlmCisKK0BpbnRlcmZhY2UgTlNPYmplY3QgKFdlYk5TT2JqZWN0RXh0cmFzKQorLSAoaWQpX3dl
YmtpdF9nZXRQcm9wZXJ0eU9uTWFpblRocmVhZDooU0VMKXNlbGVjdG9yOworQGVuZApJbmRleDog
V2ViS2l0L21hYy9NaXNjL1dlYk5TT2JqZWN0RXh0cmFzLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvTWlzYy9XZWJOU09iamVjdEV4dHJhcy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiV2ViTlNPYmplY3RFeHRyYXMuaCIKKworQGltcGxlbWVudGF0aW9uIE5TT2Jq
ZWN0IChXZWJOU09iamVjdEV4dHJhcykKKworLSAodm9pZClfd2Via2l0X2dldFByb3BlcnR5V2l0
aEFyZ3VtZW50czooTlNNdXRhYmxlRGljdGlvbmFyeSAqKWFyZ3VtZW50cworeworICAgIFthcmd1
bWVudHMgc2V0T2JqZWN0OltzZWxmIHBlcmZvcm1TZWxlY3RvcjpOU1NlbGVjdG9yRnJvbVN0cmlu
ZyhbYXJndW1lbnRzIG9iamVjdEZvcktleTpAInNlbGVjdG9yIl0pXSBmb3JLZXk6QCJ2YWx1ZSJd
OworfQorCistIChpZClfd2Via2l0X2dldFByb3BlcnR5T25NYWluVGhyZWFkOihTRUwpc2VsZWN0
b3IKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIFthcmd1bWVudHMgc2V0T2JqZWN0Ok5TU3RyaW5n
RnJvbVNlbGVjdG9yKHNlbGVjdG9yKSBmb3JLZXk6QCJzZWxlY3RvciJdOworICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpAc2VsZWN0b3IoX3dlYmtpdF9nZXRQcm9wZXJ0eVdp
dGhBcmd1bWVudHM6KSB3aXRoT2JqZWN0OmFyZ3VtZW50cyB3YWl0VW50aWxEb25lOlRSVUVdOwor
ICAgIGlkIHZhbHVlID0gW1tbYXJndW1lbnRzIG9iamVjdEZvcktleTpAInZhbHVlIl0gcmV0YWlu
XSBhdXRvcmVsZWFzZV07CisgICAgW2FyZ3VtZW50cyByZWxlYXNlXTsKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKK0BlbmQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9tYWMvTWlzYy9XZWJO
U09iamVjdEV4dHJhcy5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHJldmlzaW9uIDM5NDQ5KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBA
QAogI2ltcG9ydCAiV2ViUG9saWN5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJQcmVm
ZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCIKLSNpbXBvcnQg
IldlYlJlc291cmNlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgpJ
bmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJY29uRGF0YWJhc2VDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJY29uRGF0YWJhc2VD
bGllbnQubW0JKHJldmlzaW9uIDM5NDQ5KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJY29uRGF0YWJhc2VDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAK
IAogI2ltcG9ydCAiV2ViSWNvbkRhdGFiYXNlSW50ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29y
ZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+
CiAKIApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0JKHJldmlzaW9uIDM5NDQ5KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDE0ICszMCwxNCBAQAogI2ltcG9ydCAiV2ViQXJjaGl2ZUludGVy
bmFsLmgiCiAKICNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYk5TT2JqZWN0
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJS
ZXNvdXJjZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJuYWwuaCIKLQorI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlT2JqQ0V4dHJhcy5oPgotI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00Nyw4ICs0Nyw3IEBAIHN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IFdlYk1haW5SZXNvdXJjZUsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IFdlYlN1YnJlc291cmNlc0tleSA9IEAiV2ViU3VicmVzb3VyY2VzIjsKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IFdlYlN1YmZyYW1lQXJjaGl2ZXNLZXkgPSBAIldlYlN1YmZyYW1lQXJjaGl2ZXMi
OwogCi1AaW50ZXJmYWNlIFdlYkFyY2hpdmVQcml2YXRlIDogTlNPYmplY3QKLXsKK0BpbnRlcmZh
Y2UgV2ViQXJjaGl2ZVByaXZhdGUgOiBOU09iamVjdCB7CiBAcHVibGljCiAgICAgV2ViUmVzb3Vy
Y2UgKmNhY2hlZE1haW5SZXNvdXJjZTsKICAgICBOU0FycmF5ICpjYWNoZWRTdWJyZXNvdXJjZXM7
CkBAIC03NSw4ICs3NCw5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYlN1YmZyYW1lQXJj
aGkKIC0gKGlkKWluaXQKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmIChzZWxm
KQotICAgICAgICBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpLnJlbGVh
c2VSZWYoKTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgY29yZUFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7CiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKQEAgLTg3LDkgKzg3LDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
V2ViU3ViZnJhbWVBcmNoaQogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICB9Ci0gICAgCiAgICAgY29yZUFyY2hpdmUgPSBfY29yZUFyY2hpdmUucmVsZWFz
ZVJlZigpOwotICAgIAogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0xMzcsNiArMTM1LDggQEAg
c3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViU3ViZnJhbWVBcmNoaQogCiAtIChpZClpbml0CiB7
CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrKCk7CisKICAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE1OCw2ICsx
NTgsMjggQEAgc3RhdGljIEJPT0wgaXNBcnJheU9mQ2xhc3MoaWQgb2JqZWN0LCBDbAogCiAtIChp
ZClpbml0V2l0aE1haW5SZXNvdXJjZTooV2ViUmVzb3VyY2UgKiltYWluUmVzb3VyY2Ugc3VicmVz
b3VyY2VzOihOU0FycmF5ICopc3VicmVzb3VyY2VzIHN1YmZyYW1lQXJjaGl2ZXM6KE5TQXJyYXkg
KilzdWJmcmFtZUFyY2hpdmVzCiB7CisjaWZkZWYgTUFJTF9USFJFQURfV09SS0FST1VORAorICAg
IGlmIChuZWVkTWFpbFRocmVhZFdvcmthcm91bmQoKSkgeworICAgICAgICAvLyBNYXliZSB0aGlz
IGNvdWxkIGJlIGRvbmUgbW9yZSBjbGVhbmx5IHdpdGggTlNJbnZvY2F0aW9uLgorICAgICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOworICAgICAgICBpZiAobWFpblJlc291cmNlKQorICAgICAgICAgICAgW2FyZ3Vt
ZW50cyBzZXRPYmplY3Q6bWFpblJlc291cmNlIGZvcktleTpAIm1haW5SZXNvdXJjZSJdOworICAg
ICAgICBpZiAoc3VicmVzb3VyY2VzKQorICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6
c3VicmVzb3VyY2VzIGZvcktleTpAInN1YnJlc291cmNlcyJdOworICAgICAgICBpZiAoc3ViZnJh
bWVBcmNoaXZlcykKKyAgICAgICAgICAgIFthcmd1bWVudHMgc2V0T2JqZWN0OnN1YmZyYW1lQXJj
aGl2ZXMgZm9yS2V5OkAic3ViZnJhbWVBcmNoaXZlcyJdOworICAgICAgICBbc2VsZiBwZXJmb3Jt
U2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKF9pbml0V2l0aEFyZ3VtZW50czopIHdpdGhP
YmplY3Q6YXJndW1lbnRzIHdhaXRVbnRpbERvbmU6VFJVRV07CisgICAgICAgIE5TRXhjZXB0aW9u
ICpleGNlcHRpb24gPSBbW1thcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiZXhjZXB0aW9uIl0gcmV0
YWluXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGlkIHJlc3VsdCA9IFtbW2FyZ3VtZW50cyBvYmpl
Y3RGb3JLZXk6QCJyZXN1bHQiXSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgW2FyZ3Vt
ZW50cyByZWxlYXNlXTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIFtleGNl
cHRpb24gcmFpc2VdOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyNlbmRpZgorCisg
ICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrKCk7CisKICAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTIwOSw2ICsyMzEs
OCBAQCBzdGF0aWMgQk9PTCBpc0FycmF5T2ZDbGFzcyhpZCBvYmplY3QsIENsCiAKIC0gKGlkKWlu
aXRXaXRoRGF0YTooTlNEYXRhICopZGF0YQogeworICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25D
aGVjaygpOworCiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAg
ICAgIHJldHVybiBuaWw7CkBAIC0yNzMsNiArMjk3LDEzIEBAIHN0YXRpYyBCT09MIGlzQXJyYXlP
ZkNsYXNzKGlkIG9iamVjdCwgQ2wKIAogLSAoV2ViUmVzb3VyY2UgKiltYWluUmVzb3VyY2UKIHsK
KyNpZmRlZiBNQUlMX1RIUkVBRF9XT1JLQVJPVU5ECisgICAgaWYgKG5lZWRNYWlsVGhyZWFkV29y
a2Fyb3VuZCgpKQorICAgICAgICByZXR1cm4gW3NlbGYgX3dlYmtpdF9nZXRQcm9wZXJ0eU9uTWFp
blRocmVhZDpfY21kXTsKKyNlbmRpZgorCisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNr
KCk7CisKICAgICAvLyBDdXJyZW50bHkgZnJvbSBXZWJLaXQgQVBJIHBlcnNwZWN0aXZlLCBXZWJB
cmNoaXZlcyBhcmUgZW50aXJlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZAogICAgIC8vIElmIHRo
ZXkgZXZlciBiZWNvbWUgbXV0YWJsZSwgd2UnbGwgbmVlZCB0byByZXRoaW5rIHRoaXMuIAogICAg
IGlmICghX3ByaXZhdGUtPmNhY2hlZE1haW5SZXNvdXJjZSkgewpAQCAtMjg2LDYgKzMxNywxMyBA
QCBzdGF0aWMgQk9PTCBpc0FycmF5T2ZDbGFzcyhpZCBvYmplY3QsIENsCiAKIC0gKE5TQXJyYXkg
KilzdWJyZXNvdXJjZXMKIHsKKyNpZmRlZiBNQUlMX1RIUkVBRF9XT1JLQVJPVU5ECisgICAgaWYg
KG5lZWRNYWlsVGhyZWFkV29ya2Fyb3VuZCgpKQorICAgICAgICByZXR1cm4gW3NlbGYgX3dlYmtp
dF9nZXRQcm9wZXJ0eU9uTWFpblRocmVhZDpfY21kXTsKKyNlbmRpZgorCisgICAgV2ViQ29yZVRo
cmVhZFZpb2xhdGlvbkNoZWNrKCk7CisKICAgICAvLyBDdXJyZW50bHkgZnJvbSBXZWJLaXQgQVBJ
IHBlcnNwZWN0aXZlLCBXZWJBcmNoaXZlcyBhcmUgZW50aXJlbHkgaW1tdXRhYmxlIG9uY2UgY3Jl
YXRlZAogICAgIC8vIElmIHRoZXkgZXZlciBiZWNvbWUgbXV0YWJsZSwgd2UnbGwgbmVlZCB0byBy
ZXRoaW5rIHRoaXMuICAgICAKICAgICBpZiAoIV9wcml2YXRlLT5jYWNoZWRTdWJyZXNvdXJjZXMp
IHsKQEAgLTMxMSw2ICszNDksMTMgQEAgc3RhdGljIEJPT0wgaXNBcnJheU9mQ2xhc3MoaWQgb2Jq
ZWN0LCBDbAogCiAtIChOU0FycmF5ICopc3ViZnJhbWVBcmNoaXZlcwogeworI2lmZGVmIE1BSUxf
VEhSRUFEX1dPUktBUk9VTkQKKyAgICBpZiAobmVlZE1haWxUaHJlYWRXb3JrYXJvdW5kKCkpCisg
ICAgICAgIHJldHVybiBbc2VsZiBfd2Via2l0X2dldFByb3BlcnR5T25NYWluVGhyZWFkOl9jbWRd
OworI2VuZGlmCisKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2soKTsKKwogICAgIC8v
IEN1cnJlbnRseSBmcm9tIFdlYktpdCBBUEkgcGVyc3BlY3RpdmUsIFdlYkFyY2hpdmVzIGFyZSBl
bnRpcmVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkCiAgICAgLy8gSWYgdGhleSBldmVyIGJlY29t
ZSBtdXRhYmxlLCB3ZSdsbCBuZWVkIHRvIHJldGhpbmsgdGhpcy4gIAogICAgIGlmICghX3ByaXZh
dGUtPmNhY2hlZFN1YmZyYW1lQXJjaGl2ZXMpIHsKQEAgLTMzNCw2ICszNzksOCBAQCBzdGF0aWMg
Qk9PTCBpc0FycmF5T2ZDbGFzcyhpZCBvYmplY3QsIENsCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsK
KyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2soKTsKKwogI2lmICFMT0dfRElTQUJMRUQK
ICAgICBDRkFic29sdXRlVGltZSBzdGFydCA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwog
I2VuZGlmCkBAIC0zNTUsNiArNDAyLDggQEAgc3RhdGljIEJPT0wgaXNBcnJheU9mQ2xhc3MoaWQg
b2JqZWN0LCBDbAogCiAtIChpZClfaW5pdFdpdGhDb3JlTGVnYWN5V2ViQXJjaGl2ZTooUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPiljb3JlTGVnYWN5V2ViQXJjaGl2ZQogewor
ICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVjaygpOworCiAgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zNzAsNyArNDE5
LDMyIEBAIHN0YXRpYyBCT09MIGlzQXJyYXlPZkNsYXNzKGlkIG9iamVjdCwgQ2wKIAogLSAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZSAqKV9jb3JlTGVnYWN5V2ViQXJjaGl2ZQogeworICAgIFdl
YkNvcmVUaHJlYWRWaW9sYXRpb25DaGVjaygpOworCiAgICAgcmV0dXJuIFtfcHJpdmF0ZSBjb3Jl
QXJjaGl2ZV07CiB9CiAKIEBlbmQKKworI2lmZGVmIE1BSUxfVEhSRUFEX1dPUktBUk9VTkQKKwor
QGltcGxlbWVudGF0aW9uIFdlYkFyY2hpdmUgKFdlYk1haWxUaHJlYWRXb3JrYXJvdW5kKQorCist
ICh2b2lkKV9pbml0V2l0aEFyZ3VtZW50czooTlNNdXRhYmxlRGljdGlvbmFyeSAqKWFyZ3VtZW50
cworeworICAgIFdlYlJlc291cmNlICptYWluUmVzb3VyY2UgPSBbYXJndW1lbnRzIG9iamVjdEZv
cktleTpAIm1haW5SZXNvdXJjZSJdOworICAgIE5TQXJyYXkgKnN1YnJlc291cmNlcyA9IFthcmd1
bWVudHMgb2JqZWN0Rm9yS2V5OkAic3VicmVzb3VyY2VzIl07CisgICAgTlNBcnJheSAqc3ViZnJh
bWVBcmNoaXZlcyA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAic3ViZnJhbWVBcmNoaXZlcyJd
OworICAgIEB0cnkgeworICAgICAgICBpZCByZXN1bHQgPSBbc2VsZiBpbml0V2l0aE1haW5SZXNv
dXJjZTptYWluUmVzb3VyY2Ugc3VicmVzb3VyY2VzOnN1YnJlc291cmNlcyBzdWJmcmFtZUFyY2hp
dmVzOnN1YmZyYW1lQXJjaGl2ZXNdOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAg
W2FyZ3VtZW50cyBzZXRPYmplY3Q6cmVzdWx0IGZvcktleTpAInJlc3VsdCJdOworICAgIH0gQGNh
dGNoKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAg
ICAgICAgICAgIFthcmd1bWVudHMgc2V0T2JqZWN0OmV4Y2VwdGlvbiBmb3JLZXk6QCJleGNlcHRp
b24iXTsKKyAgICB9Cit9CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQkocmV2aXNpb24gMzk0NDkpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQAogI2ltcG9ydCAi
V2ViUERGUmVwcmVzZW50YXRpb24uaCIKICNpbXBvcnQgIldlYlJlc291cmNlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldlYlJlc291cmNlTG9hZERlbGVnYXRlLmgiCi0jaW1wb3J0ICJXZWJSZXNvdXJj
ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRl
ci5oPgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CShyZXZpc2lvbiAzOTQ0OSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbXBvcnQgIldlYktp
dFN0YXRpc3RpY3NQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRy
YXMuaCIKICNpbXBvcnQgIldlYk5TT2JqZWN0RXh0cmFzLmgiCi0jaW1wb3J0ICJXZWJSZXNvdXJj
ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXcuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNV
UkxSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgpJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbQkocmV2aXNpb24gMzk0NDkpCisrKyBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIxICsyNiwyMyBAQAogICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJXZWJSZXNvdXJjZVByaXZhdGUuaCIKKyNpbXBvcnQg
IldlYlJlc291cmNlSW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiV2ViRnJhbWVJbnRlcm5hbC5oIgor
I2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgorI2ltcG9ydCAiV2ViS2l0VmVyc2lvbkNoZWNrcy5o
IgogI2ltcG9ydCAiV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmgiCisjaW1wb3J0ICJXZWJOU09iamVj
dEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKLQorI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
UGFzc1JlZlB0ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0RW5j
b2RpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3Bv
bnNlLmg+CiAKLSNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2ltcG9y
dCA8d3RmL1Bhc3NSZWZQdHIuaD4KLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFdlYlJlc291cmNlRGF0YUtleSA9ICAgICAgICAgICAgICBAIldl
YlJlc291cmNlRGF0YSI7CkBAIC01MCwxNCArNTIsMTAgQEAgc3RhdGljIE5TU3RyaW5nICogY29u
c3QgV2ViUmVzb3VyY2VVUkxLZQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViUmVzb3VyY2VU
ZXh0RW5jb2RpbmdOYW1lS2V5ID0gIEAiV2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lIjsKIHN0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYlJlc291cmNlUmVzcG9uc2VLZXkgPSAgICAgICAgICBA
IldlYlJlc291cmNlUmVzcG9uc2UiOwogCi0jZGVmaW5lIFdlYlJlc291cmNlVmVyc2lvbiAxCi0K
LUBpbnRlcmZhY2UgV2ViUmVzb3VyY2VQcml2YXRlIDogTlNPYmplY3QKLXsKK0BpbnRlcmZhY2Ug
V2ViUmVzb3VyY2VQcml2YXRlIDogTlNPYmplY3QgewogQHB1YmxpYwogICAgIEFyY2hpdmVSZXNv
dXJjZSogY29yZVJlc291cmNlOwogfQotCiAtIChpZClpbml0V2l0aENvcmVSZXNvdXJjZTooUGFz
c1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+KWNvcmVSZXNvdXJjZTsKIEBlbmQKIApAQCAtODAsMTEg
Kzc4LDkgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViUmVzb3VyY2VSZXNwbwogewogICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gc2Vs
ZjsKLSAgICAKKyAgICAgICAgcmV0dXJuIG5pbDsKICAgICAvLyBBY3F1aXJlIHRoZSBQYXNzUmVm
UHRyPD4ncyByZWYgYXMgb3VyIG93biBtYW51YWwgcmVmCiAgICAgY29yZVJlc291cmNlID0gcGFz
c2VkUmVzb3VyY2UucmVsZWFzZVJlZigpOwotCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTEy
NSw2ICsxMjEsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJSZXNvdXJjZVJlc3BvCiAK
IC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiB7CisgICAgV2ViQ29yZVRo
cmVhZFZpb2xhdGlvbkNoZWNrKCk7CisKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTIwMiwyOSArMjAwLDc4IEBAIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFdlYlJlc291cmNlUmVzcG8KIAogLSAoTlNEYXRhICopZGF0YQog
ewotICAgIGlmIChfcHJpdmF0ZS0+Y29yZVJlc291cmNlICYmIF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UtPmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIFtfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRh
KCktPmNyZWF0ZU5TRGF0YSgpIGF1dG9yZWxlYXNlXTsKLSAgICByZXR1cm4gMDsKKyAgICBXZWJD
b3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2soKTsKKworI2lmZGVmIE1BSUxfVEhSRUFEX1dPUktBUk9V
TkQKKyAgICBpZiAobmVlZE1haWxUaHJlYWRXb3JrYXJvdW5kKCkpCisgICAgICAgIHJldHVybiBb
c2VsZiBfd2Via2l0X2dldFByb3BlcnR5T25NYWluVGhyZWFkOl9jbWRdOworI2VuZGlmCisKKyAg
ICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
aWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgcmV0dXJuIFtfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCktPmNyZWF0ZU5TRGF0
YSgpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNVUkwgKilVUkwKIHsKLSAgICByZXR1cm4gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZSA/IChOU1VSTCAqKV9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPnVy
bCgpIDogMDsKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2soKTsKKworI2lmZGVmIE1B
SUxfVEhSRUFEX1dPUktBUk9VTkQKKyAgICBpZiAobmVlZE1haWxUaHJlYWRXb3JrYXJvdW5kKCkp
CisgICAgICAgIHJldHVybiBbc2VsZiBfd2Via2l0X2dldFByb3BlcnR5T25NYWluVGhyZWFkOl9j
bWRdOworI2VuZGlmCisKKyAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgTlNVUkwgKnVybCA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPnVy
bCgpOworICAgIHJldHVybiB1cmw7CiB9CiAKIC0gKE5TU3RyaW5nICopTUlNRVR5cGUKIHsKLSAg
ICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/IChOU1N0cmluZyAqKV9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPm1pbWVUeXBlKCkgOiAwOworICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25D
aGVjaygpOworCisjaWZkZWYgTUFJTF9USFJFQURfV09SS0FST1VORAorICAgIGlmIChuZWVkTWFp
bFRocmVhZFdvcmthcm91bmQoKSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIF93ZWJraXRfZ2V0UHJv
cGVydHlPbk1haW5UaHJlYWQ6X2NtZF07CisjZW5kaWYKKworICAgIGlmICghX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBOU1N0cmluZyAqbWltZVR5cGUg
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5taW1lVHlwZSgpOworICAgIHJldHVybiBtaW1lVHlw
ZTsKIH0KIAogLSAoTlNTdHJpbmcgKil0ZXh0RW5jb2RpbmdOYW1lCiB7Ci0gICAgcmV0dXJuIF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAoTlNTdHJpbmcgKilfcHJpdmF0ZS0+Y29yZVJlc291cmNl
LT50ZXh0RW5jb2RpbmcoKSA6IDA7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrKCk7
CisKKyNpZmRlZiBNQUlMX1RIUkVBRF9XT1JLQVJPVU5ECisgICAgaWYgKG5lZWRNYWlsVGhyZWFk
V29ya2Fyb3VuZCgpKQorICAgICAgICByZXR1cm4gW3NlbGYgX3dlYmtpdF9nZXRQcm9wZXJ0eU9u
TWFpblRocmVhZDpfY21kXTsKKyNlbmRpZgorCisgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291
cmNlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICp0ZXh0RW5jb2RpbmdOYW1l
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CisgICAgcmV0dXJuIHRl
eHRFbmNvZGluZ05hbWU7CiB9CiAKIC0gKE5TU3RyaW5nICopZnJhbWVOYW1lCiB7Ci0gICAgcmV0
dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAoTlNTdHJpbmcgKilfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5mcmFtZU5hbWUoKSA6IDA7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNr
KCk7CisKKyNpZmRlZiBNQUlMX1RIUkVBRF9XT1JLQVJPVU5ECisgICAgaWYgKG5lZWRNYWlsVGhy
ZWFkV29ya2Fyb3VuZCgpKQorICAgICAgICByZXR1cm4gW3NlbGYgX3dlYmtpdF9nZXRQcm9wZXJ0
eU9uTWFpblRocmVhZDpfY21kXTsKKyNlbmRpZgorCisgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJl
c291cmNlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIE5TU3RyaW5nICpmcmFtZU5hbWUgPSBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlLT5mcmFtZU5hbWUoKTsKKyAgICByZXR1cm4gZnJhbWVOYW1l
OwogfQogCiAtIChpZClkZXNjcmlwdGlvbgpAQCAtMjY5LDggKzMxNiwxMCBAQCBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBXZWJSZXNvdXJjZVJlc3BvCiAvLyBGSVhNRTogVGhpcyAiaWdub3JlV2hl
blVuYXJjaGl2aW5nIiBjb25jZXB0IGlzIGFuIHVnbHkgb25lIC0gY2FuIHdlIGZpbmQgYSBjbGVh
bmVyIHNvbHV0aW9uIGZvciB0aG9zZSB3aG8gbmVlZCB0aGlzIFNQST8KIC0gKHZvaWQpX2lnbm9y
ZVdoZW5VbmFyY2hpdmluZwogewotICAgIGlmIChfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQotICAg
ICAgICBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5pZ25vcmVXaGVuVW5hcmNoaXZpbmcoKTsKKyAg
ICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2soKTsKKyAgICBpZiAoIV9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5p
Z25vcmVXaGVuVW5hcmNoaXZpbmcoKTsKIH0KIAogLSAoaWQpX2luaXRXaXRoRGF0YTooTlNEYXRh
ICopZGF0YSAKQEAgLTI4MSw2ICszMzAsMzYgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2Vi
UmVzb3VyY2VSZXNwbwogICAgICAgICAgICByZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3Bv
bnNlCiAgICAgICAgICAgIGNvcHlEYXRhOihCT09MKWNvcHlEYXRhCiB7CisjaWZkZWYgTUFJTF9U
SFJFQURfV09SS0FST1VORAorICAgIGlmIChuZWVkTWFpbFRocmVhZFdvcmthcm91bmQoKSkgewor
ICAgICAgICAvLyBNYXliZSB0aGlzIGNvdWxkIGJlIGRvbmUgbW9yZSBjbGVhbmx5IHdpdGggTlNJ
bnZvY2F0aW9uLgorICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudHMgPSBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICBpZiAoZGF0YSkKKyAgICAg
ICAgICAgIFthcmd1bWVudHMgc2V0T2JqZWN0OmRhdGEgZm9yS2V5OkAiZGF0YSJdOworICAgICAg
ICBpZiAoVVJMKQorICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6VVJMIGZvcktleTpA
IlVSTCJdOworICAgICAgICBpZiAoTUlNRVR5cGUpCisgICAgICAgICAgICBbYXJndW1lbnRzIHNl
dE9iamVjdDpNSU1FVHlwZSBmb3JLZXk6QCJNSU1FVHlwZSJdOworICAgICAgICBpZiAodGV4dEVu
Y29kaW5nTmFtZSkKKyAgICAgICAgICAgIFthcmd1bWVudHMgc2V0T2JqZWN0OnRleHRFbmNvZGlu
Z05hbWUgZm9yS2V5OkAidGV4dEVuY29kaW5nTmFtZSJdOworICAgICAgICBpZiAoZnJhbWVOYW1l
KQorICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmplY3Q6ZnJhbWVOYW1lIGZvcktleTpAImZy
YW1lTmFtZSJdOworICAgICAgICBpZiAocmVzcG9uc2UpCisgICAgICAgICAgICBbYXJndW1lbnRz
IHNldE9iamVjdDpyZXNwb25zZSBmb3JLZXk6QCJyZXNwb25zZSJdOworICAgICAgICBpZiAoY29w
eURhdGEpCisgICAgICAgICAgICBbYXJndW1lbnRzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6WUVTXSBmb3JLZXk6QCJjb3B5RGF0YSJdOworICAgICAgICBbc2VsZiBwZXJmb3Jt
U2VsZWN0b3JPbk1haW5UaHJlYWQ6QHNlbGVjdG9yKF9pbml0V2l0aEFyZ3VtZW50czopIHdpdGhP
YmplY3Q6YXJndW1lbnRzIHdhaXRVbnRpbERvbmU6VFJVRV07CisgICAgICAgIE5TRXhjZXB0aW9u
ICpleGNlcHRpb24gPSBbW1thcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiZXhjZXB0aW9uIl0gcmV0
YWluXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGlkIHJlc3VsdCA9IFtbW2FyZ3VtZW50cyBvYmpl
Y3RGb3JLZXk6QCJyZXN1bHQiXSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgW2FyZ3Vt
ZW50cyByZWxlYXNlXTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIFtleGNl
cHRpb24gcmFpc2VdOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyNlbmRpZgorCisg
ICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrKCk7CisKICAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTMwOCw0MSArMzg3
LDc5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYlJlc291cmNlUmVzcG8KICAgICAgICAg
ICAgICAgICAgICAgICBjb3B5RGF0YTpOT107ICAgIAogfQogCistIChOU1N0cmluZyAqKV9zdWdn
ZXN0ZWRGaWxlbmFtZQoreworICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CisgICAgcmV0
dXJuIHN1Z2dlc3RlZEZpbGVuYW1lOworfQorCiAtIChOU0ZpbGVXcmFwcGVyICopX2ZpbGVXcmFw
cGVyUmVwcmVzZW50YXRpb24KIHsKLSAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZSA/IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IDA7Ci0g
ICAgTlNEYXRhICpkYXRhID0gY29yZURhdGEgPyBbY29yZURhdGEtPmNyZWF0ZU5TRGF0YSgpIGF1
dG9yZWxlYXNlXSA6IG5pbDsKLSAgICAKLSAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdIGF1
dG9yZWxlYXNlXTsKLSAgICBOU1N0cmluZyAqcHJlZmVycmVkRmlsZW5hbWUgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlID8gKE5TU3RyaW5nICopX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+cmVzcG9u
c2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmlsOwotICAgIGlmICghcHJlZmVycmVkRmlsZW5h
bWUgfHwgIVtwcmVmZXJyZWRGaWxlbmFtZSBsZW5ndGhdKSB7Ci0gICAgICAgIE5TVVJMICp1cmwg
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gKE5TVVJMICopX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+dXJsKCkgOiBuaWw7Ci0gICAgICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UgPyAoTlNTdHJpbmcgKilfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5taW1lVHlw
ZSgpIDogbmlsOwotICAgICAgICBwcmVmZXJyZWRGaWxlbmFtZSA9IFt1cmwgX3dlYmtpdF9zdWdn
ZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZTptaW1lVHlwZV07Ci0gICAgfQotICAgIAotICAgIFt3
cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnByZWZlcnJlZEZpbGVuYW1lXTsKKyAgICBOU0Zp
bGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOltzZWxmIGRhdGFdXSBhdXRvcmVsZWFzZV07CisgICAgTlNTdHJpbmcg
KmZpbGVuYW1lID0gW3NlbGYgX3N1Z2dlc3RlZEZpbGVuYW1lXTsKKyAgICBpZiAoIWZpbGVuYW1l
IHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKKyAgICAgICAgZmlsZW5hbWUgPSBbW3NlbGYgVVJMXSBf
d2Via2l0X3N1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlOltzZWxmIE1JTUVUeXBlXV07Cisg
ICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6ZmlsZW5hbWVdOwogICAgIHJldHVybiB3
cmFwcGVyOwogfQogCiAtIChOU1VSTFJlc3BvbnNlICopX3Jlc3BvbnNlCiB7CisgICAgV2ViQ29y
ZVRocmVhZFZpb2xhdGlvbkNoZWNrKCk7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBu
aWw7CiAgICAgaWYgKF9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJlc3BvbnNlID0g
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7Ci0gICAg
CiAgICAgcmV0dXJuIHJlc3BvbnNlID8gcmVzcG9uc2UgOiBbW1tOU1VSTFJlc3BvbnNlIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07ICAgICAgICAKIH0KIAogLSAoTlNTdHJpbmcgKilfc3RyaW5n
VmFsdWUKIHsKLSAgICBXZWJDb3JlOjpUZXh0RW5jb2RpbmcgZW5jb2RpbmcoX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZSA/IChOU1N0cmluZyAqKV9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPnRleHRFbmNv
ZGluZygpIDogbmlsKTsKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2soKTsKKworICAg
IFdlYkNvcmU6OlRleHRFbmNvZGluZyBlbmNvZGluZzsKKyAgICBpZiAoX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZSkKKyAgICAgICAgZW5jb2RpbmcgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT50ZXh0
RW5jb2RpbmcoKTsKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgZW5jb2Rp
bmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKICAgICBTaGFyZWRCdWZmZXIqIGNv
cmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/IF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ut
PmRhdGEoKSA6IDA7Ci0gICAgCiAgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiAwKSwgY29y
ZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKKworI2lmZGVmIE1BSUxf
VEhSRUFEX1dPUktBUk9VTkQKKworQGltcGxlbWVudGF0aW9uIFdlYlJlc291cmNlIChXZWJNYWls
VGhyZWFkV29ya2Fyb3VuZCkKKworKyAoQk9PTClfbmVlZE1haWxUaHJlYWRXb3JrYXJvdW5kCit7
CisgICAgc3RhdGljIEJPT0wgbmVlZFdvcmthcm91bmQgPSAhV2ViS2l0TGlua2VkT25PckFmdGVy
KFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfTUFJTF9USFJFQURfV09SS0FST1VORCkKKyAg
ICAgICAgJiYgW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gaXNFcXVh
bFRvU3RyaW5nOkAiY29tLmFwcGxlLk1haWwiXTsKKyAgICByZXR1cm4gbmVlZFdvcmthcm91bmQ7
Cit9CisKKy0gKHZvaWQpX2luaXRXaXRoQXJndW1lbnRzOihOU011dGFibGVEaWN0aW9uYXJ5ICop
YXJndW1lbnRzCit7CisgICAgTlNEYXRhICpkYXRhID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6
QCJkYXRhIl07CisgICAgTlNVUkwgKlVSTCA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiVVJM
Il07CisgICAgTlNTdHJpbmcgKk1JTUVUeXBlID0gW2FyZ3VtZW50cyBvYmplY3RGb3JLZXk6QCJN
SU1FVHlwZSJdOworICAgIE5TU3RyaW5nICp0ZXh0RW5jb2RpbmdOYW1lID0gW2FyZ3VtZW50cyBv
YmplY3RGb3JLZXk6QCJ0ZXh0RW5jb2RpbmdOYW1lIl07CisgICAgTlNTdHJpbmcgKmZyYW1lTmFt
ZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiZnJhbWVOYW1lIl07CisgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTpAInJlc3BvbnNlIl07Cisg
ICAgYm9vbCBjb3B5RGF0YSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiY29weURhdGEiXTsK
KyAgICBAdHJ5IHsKKyAgICAgICAgaWQgcmVzdWx0ID0gW3NlbGYgX2luaXRXaXRoRGF0YTpkYXRh
IFVSTDpVUkwgTUlNRVR5cGU6TUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZTp0ZXh0RW5jb2RpbmdO
YW1lIGZyYW1lTmFtZTpmcmFtZU5hbWUgcmVzcG9uc2U6cmVzcG9uc2UgY29weURhdGE6Y29weURh
dGFdOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgW2FyZ3VtZW50cyBzZXRPYmpl
Y3Q6cmVzdWx0IGZvcktleTpAInJlc3VsdCJdOworICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIFthcmd1bWVu
dHMgc2V0T2JqZWN0OmV4Y2VwdGlvbiBmb3JLZXk6QCJleGNlcHRpb24iXTsKKyAgICB9Cit9CisK
K0BlbmQKKworI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZUludGVy
bmFsLmgJKHJldmlzaW9uIDM5NDQ5KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTcgKzI2LDMxIEBACiAgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpbXBvcnQgIldlYlJlc291cmNlLmgiCi0KKyNpbXBvcnQgIldlYlJlc291cmNl
UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorI2lmIGRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNkZWZpbmUg
TUFJTF9USFJFQURfV09SS0FST1VORCAxCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIH0KIAogQGludGVyZmFjZSBXZWJSZXNvdXJjZSAo
V2ViUmVzb3VyY2VJbnRlcm5hbCkKKy0gKGlkKV9pbml0V2l0aENvcmVSZXNvdXJjZTooUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+KWNvcmVSZXNvdXJjZTsKKy0gKFdlYkNvcmU6
OkFyY2hpdmVSZXNvdXJjZSopX2NvcmVSZXNvdXJjZTsKK0BlbmQKIAotLSAoaWQpX2luaXRXaXRo
Q29yZVJlc291cmNlOihXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPilj
b3JlUmVzb3VyY2U7Ci0tIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2UgKilfY29yZVJlc291cmNl
OworI2lmZGVmIE1BSUxfVEhSRUFEX1dPUktBUk9VTkQKIAorQGludGVyZmFjZSBXZWJSZXNvdXJj
ZSAoV2ViTWFpbFRocmVhZFdvcmthcm91bmQpCisrIChCT09MKV9uZWVkTWFpbFRocmVhZFdvcmth
cm91bmQ7CiBAZW5kCisKK2lubGluZSBib29sIG5lZWRNYWlsVGhyZWFkV29ya2Fyb3VuZCgpCit7
CisgICAgcmV0dXJuICFwdGhyZWFkX21haW5fbnAoKSAmJiBbV2ViUmVzb3VyY2UgX25lZWRNYWls
VGhyZWFkV29ya2Fyb3VuZF07Cit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="12396"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>