<?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>6732</bug_id>
          
          <creation_ts>2006-01-23 08:05:57 -0800</creation_ts>
          <short_desc>REGRESSION: Repro crash at Google Maps</short_desc>
          <delta_ts>2006-01-31 21:20:56 -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>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://maps.google.com/maps?q=3+Apple+Hill+Drive+Natick+MA+01760</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>gregory.pierce</cc>
    
    <cc>joost</cc>
    
    <cc>trapper</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29583</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-01-23 08:05:57 -0800</bug_when>
    <thetext>When I go to the URL, TOT crashes with the following backtrace:

Thread 0 Crashed:
0   com.apple.JavaScriptCore 	0x010b1f3c KJS::JSObject::getPropertySlot(KJS::ExecState*, KJS::Identifier const&amp;, KJS::PropertySlot&amp;) + 56 (property_slot.h:634)
1   com.apple.JavaScriptCore 	0x01044128 KJS::JSObject::get(KJS::ExecState*, KJS::Identifier const&amp;) const + 52 (object.cpp:155)
2   com.apple.WebCore        	0x01750cc4 KJS::JSAbstractEventListener::handleEvent(WebCore::EventImpl*, bool) + 344 (kjs_events.cpp:78)
3   com.apple.WebCore        	0x01737d00 WebCore::EventListener::handleEventImpl(WebCore::EventImpl*, bool) + 72 (dom2_events.cpp:48)
4   com.apple.WebCore        	0x01a84940 WebCore::XMLHttpRequest::changeState(WebCore::XMLHttpRequestState) + 408 (xmlhttprequest.cpp:191)
5   com.apple.WebCore        	0x01a84bc0 WebCore::XMLHttpRequest::slotData(KIO::Job*, char const*, int) + 252 (xmlhttprequest.cpp:523)
6   com.apple.WebCore        	0x01a84f54 WebCore::XMLHttpRequestQObject::slotData(KIO::Job*, char const*, int) + 64 (xmlhttprequest.cpp:99)
7   com.apple.WebCore        	0x017f0d70 KWQSlot::call(KIO::Job*, char const*, int) const + 176 (KWQSlot.cpp:287)
8   com.apple.WebCore        	0x017efc74 KWQSignal::call(KIO::Job*, char const*, int) const + 240 (KWQSignal.cpp:159)
9   com.apple.WebCore        	0x016e687c KIO::TransferJob::emitData(char const*, int) + 64 (KWQKJobClasses.mm:233)
10  com.apple.WebCore        	0x017f3e84 -[KWQResourceLoader addData:] + 252 (KWQResourceLoader.mm:74)
11  com.apple.WebKit         	0x003426f8 -[WebSubresourceLoader didReceiveData:lengthReceived:] + 132 (WebSubresourceLoader.m:200)
12  com.apple.WebKit         	0x00351744 -[WebLoader connection:didReceiveData:lengthReceived:] + 188 (WebLoader.m:645)
13  com.apple.Foundation     	0x92918a64 -[NSURLConnection(NSURLConnectionInternal) _sendDidReceiveDataCallback] + 564
14  com.apple.Foundation     	0x92916f04 -[NSURLConnection(NSURLConnectionInternal) _sendCallbacks] + 488
15  com.apple.Foundation     	0x92916ca0 _sendCallbacks + 156
16  com.apple.CoreFoundation 	0x9075da68 __CFRunLoopDoSources0 + 384
17  com.apple.CoreFoundation 	0x9075cf98 __CFRunLoopRun + 452
18  com.apple.CoreFoundation 	0x9075ca18 CFRunLoopRunSpecific + 268
19  com.apple.HIToolbox      	0x9318e1e0 RunCurrentEventLoopInMode + 264
20  com.apple.HIToolbox      	0x9318d874 ReceiveNextEventCommon + 380
21  com.apple.HIToolbox      	0x9318d6e0 BlockUntilNextEventMatchingListInMode + 96
22  com.apple.AppKit         	0x9368c104 _DPSNextEvent + 384
23  com.apple.AppKit         	0x9368bdc8 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 116
24  com.apple.Safari         	0x000072d4 0x1000 + 25300
25  com.apple.AppKit         	0x9368830c -[NSApplication run] + 472
26  com.apple.AppKit         	0x93778e68 NSApplicationMain + 452
27  com.apple.Safari         	0x0005cfdc 0x1000 + 376796
28  com.apple.Safari         	0x0005ce80 0x1000 + 376448</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29584</commentid>
    <comment_count>1</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-01-23 08:17:12 -0800</bug_when>
    <thetext>Adding regression keyword :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29597</commentid>
    <comment_count>2</comment_count>
      <attachid>5881</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-23 10:16:13 -0800</bug_when>
    <thetext>Created attachment 5881
proposed fix

I have no idea what is happening here - just changed the first place I didn&apos;t understand in the code, and the crash went away. Tests from www.hixie.ch show no regressions, leaks tool reports no leaks. FWIW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29604</commentid>
    <comment_count>3</comment_count>
      <attachid>5881</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-23 11:45:03 -0800</bug_when>
    <thetext>Comment on attachment 5881
proposed fix

I&apos;m pretty sure that this change makes it so that you can get a leak if the listener in turn points back to the XMLHttpRequest. We can&apos;t fix it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29668</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-23 22:02:04 -0800</bug_when>
    <thetext>*** Bug 6747 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29677</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-24 00:03:17 -0800</bug_when>
    <thetext>I&apos;ve got a fix in the works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29679</commentid>
    <comment_count>6</comment_count>
      <attachid>5904</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-24 00:27:43 -0800</bug_when>
    <thetext>Created attachment 5904
another cut at a fix, this one restoring the &quot;mark the listeners&quot; behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29704</commentid>
    <comment_count>7</comment_count>
      <attachid>5910</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-24 08:19:58 -0800</bug_when>
    <thetext>Created attachment 5910
another cut at a fix, this one restoring the &quot;mark the listeners&quot; behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29772</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-01-24 15:24:40 -0800</bug_when>
    <thetext>There is a typo in the arguments check:

-  case JSXMLHttpRequest::OverrideMIMEType: {
-    if (args.size() != 1) {
+  case JSXMLHttpRequest::OverrideMIMEType:
+    if (args.size() != 2)
       return jsUndefined();
-    }

Otherwise looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29813</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-01-24 23:09:55 -0800</bug_when>
    <thetext>r12342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29836</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-01-25 07:18:44 -0800</bug_when>
    <thetext>*** Bug 6757 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29840</commentid>
    <comment_count>11</comment_count>
    <who name="Gregory Pierce">gregory.pierce</who>
    <bug_when>2006-01-25 09:00:43 -0800</bug_when>
    <thetext>Confirm this is working fine in 417.8. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30894</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-31 21:20:56 -0800</bug_when>
    <thetext>Removing Regression keyword from bugs already fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5881</attachid>
            <date>2006-01-23 10:16:13 -0800</date>
            <delta_ts>2006-01-24 00:27:43 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>6732r1_patch.txt</filename>
            <type>text/plain</type>
            <size>3068</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VjbWEvSlNYTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0
bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTIyODcpCisrKyBraHRtbC9l
Y21hL0pTWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcg
QEAgSlNWYWx1ZSAqSlNYTUxIdHRwUmVxdWVzdDo6Z2V0VmFsdWVQcm9wZQogICBjYXNlIFN0YXR1
c1RleHQ6CiAgICAgcmV0dXJuIGpzU3RyaW5nT3JVbmRlZmluZWQobV9pbXBsLT5nZXRTdGF0dXNU
ZXh0KCkpOwogICBjYXNlIE9ucmVhZHlzdGF0ZWNoYW5nZToKLSAgIEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKiBvblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5nZXRPblJlYWR5U3RhdGVDaGFuZ2VMaXN0
ZW5lcigpLmdldCgpKTsKKyAgIEpTRXZlbnRMaXN0ZW5lciogb25SZWFkeVN0YXRlQ2hhbmdlTGlz
dGVuZXIgPSBzdGF0aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIqPihtX2ltcGwtPmdldE9uUmVhZHlT
dGF0ZUNoYW5nZUxpc3RlbmVyKCkuZ2V0KCkpOwogICAgaWYgKG9uUmVhZHlTdGF0ZUNoYW5nZUxp
c3RlbmVyKSB7CiAgICAgICBKU09iamVjdCogbGlzdGVuZXJPYmogPSBvblJlYWR5U3RhdGVDaGFu
Z2VMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKICAgICAgIGlmIChsaXN0ZW5lck9iaikKQEAgLTEy
MSw3ICsxMjEsNyBAQCBKU1ZhbHVlICpKU1hNTEh0dHBSZXF1ZXN0OjpnZXRWYWx1ZVByb3BlCiAg
ICB9CiAgICByZXR1cm4ganNOdWxsKCk7CiAgIGNhc2UgT25sb2FkOgotICAgSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqIG9uTG9hZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPmdldE9uTG9hZExpc3RlbmVyKCkuZ2V0KCkpOworICAg
SlNFdmVudExpc3RlbmVyKiBvbkxvYWRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTRXZlbnRMaXN0
ZW5lcio+KG1faW1wbC0+Z2V0T25Mb2FkTGlzdGVuZXIoKS5nZXQoKSk7CiAgICBpZiAob25Mb2Fk
TGlzdGVuZXIpIHsKICAgICAgIEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IG9uTG9hZExpc3RlbmVy
LT5saXN0ZW5lck9iaigpOwogICAgICAgaWYgKGxpc3RlbmVyT2JqKQpAQCAtMTQzLDEwICsxNDMs
MTAgQEAgdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1ZVByb3BlcnR5KAogewogICBzd2l0
Y2godG9rZW4pIHsKICAgY2FzZSBPbnJlYWR5c3RhdGVjaGFuZ2U6Ci0gICAgbV9pbXBsLT5zZXRP
blJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcihXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5n
ZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSkpOworICAgIG1faW1wbC0+
c2V0T25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVj
KS0+Z2V0SlNFdmVudExpc3RlbmVyKHZhbHVlLCB0cnVlKSk7CiAgICAgYnJlYWs7CiAgIGNhc2Ug
T25sb2FkOgotICAgIG1faW1wbC0+c2V0T25Mb2FkTGlzdGVuZXIoV2luZG93OjpyZXRyaWV2ZUFj
dGl2ZShleGVjKS0+Z2V0SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUpKTsK
KyAgICBtX2ltcGwtPnNldE9uTG9hZExpc3RlbmVyKFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhl
YyktPmdldEpTRXZlbnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSkpOwogICAgIGJyZWFrOwogICBkZWZh
dWx0OgogICAgICAgOwpAQCAtMTU0LDIxICsxNTQsNiBAQCB2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6
OnB1dFZhbHVlUHJvcGVydHkoCiAgIH0KIH0KIAotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjptYXJr
KCkKLXsKLSAgRE9NT2JqZWN0OjptYXJrKCk7Ci0KLSAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIqIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPmdldE9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCku
Z2V0KCkpOwotICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIgPSBz
dGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+Z2V0T25Mb2Fk
TGlzdGVuZXIoKS5nZXQoKSk7Ci0KLSAgaWYgKG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKQot
ICAgIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyLT5tYXJrKCk7Ci0KLSAgaWYgKG9uTG9hZExp
c3RlbmVyKQotICAgIG9uTG9hZExpc3RlbmVyLT5tYXJrKCk7Ci19Ci0KLQogSlNYTUxIdHRwUmVx
dWVzdDo6SlNYTUxIdHRwUmVxdWVzdChFeGVjU3RhdGUgKmV4ZWMsIERvY3VtZW50SW1wbCAqZCkK
ICAgOiBtX2ltcGwobmV3IFhNTEh0dHBSZXF1ZXN0KGQpKQogewpJbmRleDoga2h0bWwvZWNtYS9K
U1hNTEh0dHBSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1
ZXN0LmgJKHJldmlzaW9uIDEyMjg3KQorKysga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmly
dHVhbCB2b2lkIHB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5
TmFtZSwgSlNWYWx1ZSAqdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAgICAgdm9pZCBwdXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgaW50
IC8qYXR0ciovKTsKICAgICB2aXJ0dWFsIGJvb2wgdG9Cb29sZWFuKEV4ZWNTdGF0ZSAqKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIAogICBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBKU1hNTEh0dHBSZXF1ZXN0UHJvdG9GdW5jOwo=
</data>
<flag name="review"
          id="1373"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5904</attachid>
            <date>2006-01-24 00:27:43 -0800</date>
            <delta_ts>2006-01-24 08:19:58 -0800</delta_ts>
            <desc>another cut at a fix, this one restoring the &quot;mark the listeners&quot; behavior</desc>
            <filename>XMLHttpRequestPatch.txt</filename>
            <type>text/plain</type>
            <size>10244</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzMw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDYtMDEt
MjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczMgorICAgICAgICAgIFJFR1JFU1NJT046IFJlcHJv
IGNyYXNoIGF0IEdvb2dsZSBNYXBzCisKKyAgICAgICAgKiBraHRtbC9lY21hL0pTWE1MSHR0cFJl
cXVlc3QuY3BwOgorICAgICAgICAoS0pTOjpKU1hNTEh0dHBSZXF1ZXN0OjpnZXRWYWx1ZVByb3Bl
cnR5KTogQ2xlYW4gdXAgYSBiaXQsIHVzaW5nIFBhc3NSZWZQdHIgd2hlcmUgYXBwcm9wcmlhdGUu
CisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3Q6Om1hcmspOiBSZW1vdmUgZ2V0IGNhbGxz
IG5vdyB0aGF0IGdldHRlciBmdW5jdGlvbnMgZG9uJ3QgcmV0dXJuIFBhc3NSZWZQdHIuCisgICAg
ICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3Q6OkpTWE1MSHR0cFJlcXVlc3QpOiBQdXQgdGhlIG9i
amVjdCBpbnRvIHRoZSBET00gb2JqZWN0cyBtYXAuCisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJl
cXVlc3Q6On5KU1hNTEh0dHBSZXF1ZXN0KTogUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgRE9N
IG9iamVjdHMgbWFwLiBBbHNvIGNsZWFyCisgICAgICAgIG91dCBib3RoIGxpc3RlbmVycyBzbyB0
aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGlzbid0IGxlZnQgd2l0aCBkYW5nbGluZyBwb2ludGVy
cyAoc2luY2Ugd2Ugd29uJ3QKKyAgICAgICAgYmUgYXJvdW5kIHRvIG1hcmsgdGhvc2Ugb2JqZWN0
cyBhbnkgbW9yZSkuCisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b0Z1bmM6OmNh
bGxBc0Z1bmN0aW9uKTogVGlnaHRlbmVkIHVwIHRoZSBjb2RlIGEgYml0LgorCisgICAgICAgICog
eG1sL3htbGh0dHByZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL3htbGh0dHByZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZVhNTCk6IENoYW5n
ZSB0byByZXR1cm4ganVzdCBhIHBsYWluIG9sZCBwb2ludGVyLiBSZW1vdmUKKyAgICAgICAgdGhl
IHVubmVjZXNzYXJ5IHR5cGVJc1hNTCBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6Om9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKTogQ2hhbmdlIHRvIHJldHVybiBq
dXN0IGEgcGxhaW4gb2xkIHBvaW50ZXIuCisgICAgICAgIFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldE9uUmVhZHlTdGF0ZUNoYW5n
ZUxpc3RlbmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b25M
b2FkTGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpz
ZXRPbkxvYWRMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNlbmQpOiBQcm90ZWN0IHRoZSBET00gd3JhcHBlciBpZiBhbnkgYXMgd2VsbCBhcyBvdXJz
ZWx2ZXMgd2hpbGUKKyAgICAgICAgdGhlIGxvYWQgaXMgaW4gcHJvZ3Jlc3MuCisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6YWJvcnQpOiBVbnByb3RlY3QgdG8gYmFsYW5jZSBvdXQg
dGhlIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNsb3RGaW5pc2hl
ZCk6IERpdHRvLgorCisgICAgICAgICoga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0Lmg6IEp1
c3QgZm9ybWF0dGluZyBjaGFuZ2VzLgorCiAyMDA2LTAxLTIzICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgRXJpYy4KSW5kZXg6
IGtodG1sL2VjbWEvSlNYTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNt
YS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTIzMjIpCisrKyBraHRtbC9lY21hL0pT
WE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMCArMjAsMTggQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QuaCIKLSNpbmNs
dWRlICJ4bWxodHRwcmVxdWVzdC5oIgogCi0jaW5jbHVkZSAia2pzX3dpbmRvdy5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiZG9tX3N0cmluZy5oIgorI2luY2x1ZGUgImh0bWxfZG9j
dW1lbnRpbXBsLmgiCiAjaW5jbHVkZSAia2pzX2V2ZW50cy5oIgorI2luY2x1ZGUgImtqc193aW5k
b3cuaCIKKyNpbmNsdWRlICJ4bWxodHRwcmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiZG9tL2RvbV9z
dHJpbmcuaCIKLSNpbmNsdWRlICJodG1sL2h0bWxfZG9jdW1lbnRpbXBsLmgiCi0KLSNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QubHV0LmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi0KIG5hbWVzcGFjZSBLSlMgewogCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vIEpTWE1MSHR0cFJlcXVlc3QgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpA
QCAtNTMsNyArNTEsNiBAQAogS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoSlNYTUxIdHRwUmVxdWVz
dFByb3RvRnVuYykKIEtKU19JTVBMRU1FTlRfUFJPVE9UWVBFKCJKU1hNTEh0dHBSZXF1ZXN0Iiwg
SlNYTUxIdHRwUmVxdWVzdFByb3RvLCBKU1hNTEh0dHBSZXF1ZXN0UHJvdG9GdW5jKQogCi0KIEpT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvckltcDo6SlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
SW1wKEV4ZWNTdGF0ZSAqZXhlYywgRG9jdW1lbnRJbXBsICpkKQogICAgIDogZG9jKGQpCiB7CkBA
IC05Myw1MyArOTAsNDMgQEAKICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1hNTEh0dHBS
ZXF1ZXN0LCBET01PYmplY3Q+KGV4ZWMsICZKU1hNTEh0dHBSZXF1ZXN0VGFibGUsIHRoaXMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUgKkpTWE1MSHR0cFJlcXVlc3Q6OmdldFZh
bHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4pIGNvbnN0CitKU1ZhbHVlKiBK
U1hNTEh0dHBSZXF1ZXN0OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRv
a2VuKSBjb25zdAogewogICBzd2l0Y2ggKHRva2VuKSB7CiAgIGNhc2UgUmVhZHlTdGF0ZToKICAg
ICByZXR1cm4ganNOdW1iZXIobV9pbXBsLT5nZXRSZWFkeVN0YXRlKCkpOwogICBjYXNlIFJlc3Bv
bnNlVGV4dDoKICAgICByZXR1cm4ganNTdHJpbmdPck51bGwobV9pbXBsLT5nZXRSZXNwb25zZVRl
eHQoKSk7Ci0gIGNhc2UgUmVzcG9uc2VYTUw6IHsKLSAgICBSZWZQdHI8RG9jdW1lbnRJbXBsPiBy
ZXNwb25zZVhNTCA9IG1faW1wbC0+Z2V0UmVzcG9uc2VYTUwoKTsKLSAgICBpZiAocmVzcG9uc2VY
TUwuZ2V0KCkpCi0gICAgICByZXR1cm4gZ2V0RE9NTm9kZShleGVjLCByZXNwb25zZVhNTC5nZXQo
KSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KKyAgY2FzZSBS
ZXNwb25zZVhNTDoKKyAgICBpZiAoRG9jdW1lbnRJbXBsKiByZXNwb25zZVhNTCA9IG1faW1wbC0+
Z2V0UmVzcG9uc2VYTUwoKSkKKyAgICAgIHJldHVybiBnZXRET01Ob2RlKGV4ZWMsIHJlc3BvbnNl
WE1MKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgY2FzZSBTdGF0dXM6CiAgICAgaW50
IHN0YXR1cyA9IG1faW1wbC0+Z2V0U3RhdHVzKCk7CiAgICAgcmV0dXJuIHN0YXR1cyA+IDAgPyBq
c051bWJlcihzdGF0dXMpIDoganNVbmRlZmluZWQoKTsKICAgY2FzZSBTdGF0dXNUZXh0OgogICAg
IHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKG1faW1wbC0+Z2V0U3RhdHVzVGV4dCgpKTsKICAg
Y2FzZSBPbnJlYWR5c3RhdGVjaGFuZ2U6Ci0gICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
b25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcio+KG1faW1wbC0+Z2V0T25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKS5nZXQo
KSk7Ci0gICBpZiAob25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIpIHsKLSAgICAgIEpTT2JqZWN0
KiBsaXN0ZW5lck9iaiA9IG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyLT5saXN0ZW5lck9iaigp
OwotICAgICAgaWYgKGxpc3RlbmVyT2JqKQorICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4o
bV9pbXBsLT5vblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigpKSkKKyAgICAgIGlmIChKU09iamVj
dCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKICAgICAgICAgcmV0dXJu
IGxpc3RlbmVyT2JqOwotICAgfQogICAgcmV0dXJuIGpzTnVsbCgpOwogICBjYXNlIE9ubG9hZDoK
LSAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkxvYWRMaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5nZXRPbkxvYWRMaXN0ZW5l
cigpLmdldCgpKTsKLSAgIGlmIChvbkxvYWRMaXN0ZW5lcikgewotICAgICAgSlNPYmplY3QqIGxp
c3RlbmVyT2JqID0gb25Mb2FkTGlzdGVuZXItPmxpc3RlbmVyT2JqKCk7Ci0gICAgICBpZiAobGlz
dGVuZXJPYmopCisgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0g
c3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uTG9hZExp
c3RlbmVyKCkpKQorICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5s
aXN0ZW5lck9iaigpKQogICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7Ci0gICB9CiAgICByZXR1
cm4ganNOdWxsKCk7CiAgIGRlZmF1bHQ6Ci0vLyAgICBrZFdhcm5pbmcoKSA8PCAiSlNYTUxIdHRw
UmVxdWVzdDo6Z2V0VmFsdWVQcm9wZXJ0eSB1bmhhbmRsZWQgdG9rZW4gIiA8PCB0b2tlbiA8PCBl
bmRsOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAwOwogICB9CiB9CiAKLXZvaWQgSlNY
TUxIdHRwUmVxdWVzdDo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJv
cGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIpCit2b2lkIEpTWE1MSHR0cFJlcXVl
c3Q6OnB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwg
SlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKQogewogICBsb29rdXBQdXQ8SlNYTUxIdHRwUmVxdWVz
dCxET01PYmplY3Q+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZKU1hNTEh0dHBS
ZXF1ZXN0VGFibGUsIHRoaXMgKTsKIH0KIAotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgaW50
IC8qYXR0ciovKQordm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNT
dGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlKiB2YWx1ZSwgaW50IC8qYXR0ciovKQogewog
ICBzd2l0Y2godG9rZW4pIHsKICAgY2FzZSBPbnJlYWR5c3RhdGVjaGFuZ2U6CkBAIC0xNDgsOSAr
MTM1LDYgQEAKICAgY2FzZSBPbmxvYWQ6CiAgICAgbV9pbXBsLT5zZXRPbkxvYWRMaXN0ZW5lcihX
aW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cih2YWx1ZSwgdHJ1ZSkpOwogICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgICAgOwotLy8gICAg
a2RXYXJuaW5nKCkgPDwgIkhUTUxEb2N1bWVudDo6cHV0VmFsdWVQcm9wZXJ0eSB1bmhhbmRsZWQg
dG9rZW4gIiA8PCB0b2tlbiA8PCBlbmRsOwogICB9CiB9CiAKQEAgLTE1OCw4ICsxNDIsOCBAQAog
ewogICBET01PYmplY3Q6Om1hcmsoKTsKIAotICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
b25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcio+KG1faW1wbC0+Z2V0T25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKS5nZXQo
KSk7Ci0gIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkxvYWRMaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5nZXRPbkxvYWRMaXN0
ZW5lcigpLmdldCgpKTsKKyAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIG9uUmVhZHlTdGF0
ZUNoYW5nZUxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIq
PihtX2ltcGwtPm9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkpOworICBKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25Mb2FkTGlzdGVuZXIoKSk7CiAKICAgaWYgKG9uUmVh
ZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKQogICAgIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyLT5t
YXJrKCk7CkBAIC0xNzMsMTMgKzE1NywxNyBAQAogICA6IG1faW1wbChuZXcgWE1MSHR0cFJlcXVl
c3QoZCkpCiB7CiAgIHNldFByb3RvdHlwZShKU1hNTEh0dHBSZXF1ZXN0UHJvdG86OnNlbGYoZXhl
YykpOworICBTY3JpcHRJbnRlcnByZXRlcjo6cHV0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSwgdGhp
cyk7CiB9CiAKIEpTWE1MSHR0cFJlcXVlc3Q6On5KU1hNTEh0dHBSZXF1ZXN0KCkKIHsKKyAgbV9p
bXBsLT5zZXRPblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigwKTsKKyAgbV9pbXBsLT5zZXRPbkxv
YWRMaXN0ZW5lcigwKTsKKyAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2lt
cGwuZ2V0KCkpOwogfQogCi1KU1ZhbHVlICpKU1hNTEh0dHBSZXF1ZXN0UHJvdG9GdW5jOjpjYWxs
QXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0
ICZhcmdzKQorSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rp
b24oRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYgYXJncykK
IHsKICAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmSlNYTUxIdHRwUmVxdWVzdDo6aW5mbykpCiAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKQEAgLTE4NywzNCArMTc1LDE5
IEBACiAgIEpTWE1MSHR0cFJlcXVlc3QgKnJlcXVlc3QgPSBzdGF0aWNfY2FzdDxKU1hNTEh0dHBS
ZXF1ZXN0ICo+KHRoaXNPYmopOwogCiAgIHN3aXRjaCAoaWQpIHsKLSAgY2FzZSBKU1hNTEh0dHBS
ZXF1ZXN0OjpBYm9ydDogeworICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkFib3J0OgogICAgIHJl
cXVlc3QtPm1faW1wbC0+YWJvcnQoKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgfQot
ICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkdldEFsbFJlc3BvbnNlSGVhZGVyczogewotICAgIGlm
IChhcmdzLnNpemUoKSAhPSAwKSB7Ci0gICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9
Ci0gICAgCisgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0QWxsUmVzcG9uc2VIZWFkZXJzOgog
ICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKHJlcXVlc3QtPm1faW1wbC0+Z2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCkpOwotICB9Ci0gIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0UmVzcG9u
c2VIZWFkZXI6IHsKLSAgICBpZiAoYXJncy5zaXplKCkgIT0gMSkgeworICBjYXNlIEpTWE1MSHR0
cFJlcXVlc3Q6OkdldFJlc3BvbnNlSGVhZGVyOgorICAgIGlmIChhcmdzLnNpemUoKSAhPSAxKQog
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotICAgIAotICAgIERPTVN0cmluZyBo
ZWFkZXIgPSByZXF1ZXN0LT5tX2ltcGwtPmdldFJlc3BvbnNlSGVhZGVyKGFyZ3NbMF0tPnRvU3Ry
aW5nKGV4ZWMpLmRvbVN0cmluZygpKTsKLQotICAgIGlmIChoZWFkZXIuaXNOdWxsKCkpCi0gICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiBqc1N0cmluZyhoZWFkZXIpOwot
ICB9CisgICAgcmV0dXJuIGpzU3RyaW5nT3JVbmRlZmluZWQocmVxdWVzdC0+bV9pbXBsLT5nZXRS
ZXNwb25zZUhlYWRlcihhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSkpOwogICBj
YXNlIEpTWE1MSHR0cFJlcXVlc3Q6Ok9wZW46CiAgICAgewotICAgICAgaWYgKGFyZ3Muc2l6ZSgp
IDwgMiB8fCBhcmdzLnNpemUoKSA+IDUpIHsKKyAgICAgIGlmIChhcmdzLnNpemUoKSA8IDIgfHwg
YXJncy5zaXplKCkgPiA1KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgIH0K
ICAgICAKICAgICAgIERPTVN0cmluZyBtZXRob2QgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKS5k
b21TdHJpbmcoKTsKICAgICAgIEtVUkwgdXJsID0gS1VSTChXaW5kb3c6OnJldHJpZXZlQWN0aXZl
KGV4ZWMpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhcmdzWzFdLT50b1N0cmlu
ZyhleGVjKS5xc3RyaW5nKCkpKTsKQEAgLTIzNyw5ICsyMTAsOCBAQAogICAgIH0KICAgY2FzZSBK
U1hNTEh0dHBSZXF1ZXN0OjpTZW5kOgogICAgIHsKLSAgICAgIGlmIChhcmdzLnNpemUoKSA+IDEp
IHsKKyAgICAgIGlmIChhcmdzLnNpemUoKSA+IDEpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotICAgICAgfQogCiAgICAgICBET01TdHJpbmcgYm9keTsKIApAQCAtMjU4LDIzICsyMzAs
MTcgQEAKIAogICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQotICBjYXNlIEpTWE1M
SHR0cFJlcXVlc3Q6OlNldFJlcXVlc3RIZWFkZXI6IHsKLSAgICBpZiAoYXJncy5zaXplKCkgIT0g
MikgeworICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OlNldFJlcXVlc3RIZWFkZXI6CisgICAgaWYg
KGFyZ3Muc2l6ZSgpICE9IDIpCiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0g
ICAgCiAgICAgcmVxdWVzdC0+bV9pbXBsLT5zZXRSZXF1ZXN0SGVhZGVyKGFyZ3NbMF0tPnRvU3Ry
aW5nKGV4ZWMpLmRvbVN0cmluZygpLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmco
KSk7Ci0gICAgCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KLSAgY2FzZSBKU1hNTEh0
dHBSZXF1ZXN0OjpPdmVycmlkZU1JTUVUeXBlOiB7Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
IHsKKyAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpPdmVycmlkZU1JTUVUeXBlOgorICAgIGlmIChh
cmdzLnNpemUoKSAhPSAyKQogICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogICAg
IHJlcXVlc3QtPm1faW1wbC0+b3ZlcnJpZGVNSU1FVHlwZShhcmdzWzBdLT50b1N0cmluZyhleGVj
KS5kb21TdHJpbmcoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgIH0KLSAgfQogCiAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDoga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlz
aW9uIDEyMzIyKQorKysga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDkgKzI4LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBYTUxI
dHRwUmVxdWVzdDsKICAgICBjbGFzcyBEb2N1bWVudEltcGw7Ci19OworfQogCi0KIG5hbWVzcGFj
ZSBLSlMgewogCiAgIGNsYXNzIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvckltcCA6IHB1Ymxp
YyBKU09iamVjdCB7CkBAIC02NCw2ICs2Myw3IEBACiAgICAgZnJpZW5kIGNsYXNzIEpTWE1MSHR0
cFJlcXVlc3RQcm90b0Z1bmM7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0PiBt
X2ltcGw7CiAgIH07CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5910</attachid>
            <date>2006-01-24 08:19:58 -0800</date>
            <delta_ts>2006-01-24 15:10:41 -0800</delta_ts>
            <desc>another cut at a fix, this one restoring the &quot;mark the listeners&quot; behavior</desc>
            <filename>XMLHttpRequestPatch.txt</filename>
            <type>text/plain</type>
            <size>22257</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzMw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDYtMDEt
MjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczMgorICAgICAgICAgIFJFR1JFU1NJT046IFJlcHJv
IGNyYXNoIGF0IEdvb2dsZSBNYXBzCisKKyAgICAgICAgKiBraHRtbC9lY21hL0pTWE1MSHR0cFJl
cXVlc3QuY3BwOgorICAgICAgICAoS0pTOjpKU1hNTEh0dHBSZXF1ZXN0OjpnZXRWYWx1ZVByb3Bl
cnR5KTogQ2xlYW4gdXAgYSBiaXQsIHVzaW5nIFBhc3NSZWZQdHIgd2hlcmUgYXBwcm9wcmlhdGUu
CisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3Q6Om1hcmspOiBSZW1vdmUgZ2V0IGNhbGxz
IG5vdyB0aGF0IGdldHRlciBmdW5jdGlvbnMgZG9uJ3QgcmV0dXJuIFBhc3NSZWZQdHIuCisgICAg
ICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3Q6OkpTWE1MSHR0cFJlcXVlc3QpOiBQdXQgdGhlIG9i
amVjdCBpbnRvIHRoZSBET00gb2JqZWN0cyBtYXAuCisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJl
cXVlc3Q6On5KU1hNTEh0dHBSZXF1ZXN0KTogUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgRE9N
IG9iamVjdHMgbWFwLiBBbHNvIGNsZWFyCisgICAgICAgIG91dCBib3RoIGxpc3RlbmVycyBzbyB0
aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGlzbid0IGxlZnQgd2l0aCBkYW5nbGluZyBwb2ludGVy
cyAoc2luY2Ugd2Ugd29uJ3QKKyAgICAgICAgYmUgYXJvdW5kIHRvIG1hcmsgdGhvc2Ugb2JqZWN0
cyBhbnkgbW9yZSkuCisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b0Z1bmM6OmNh
bGxBc0Z1bmN0aW9uKTogVGlnaHRlbmVkIHVwIHRoZSBjb2RlIGEgYml0LgorCisgICAgICAgICog
eG1sL3htbGh0dHByZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL3htbGh0dHByZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZVhNTCk6IENoYW5n
ZSB0byByZXR1cm4ganVzdCBhIHBsYWluIG9sZCBwb2ludGVyLiBSZW1vdmUKKyAgICAgICAgdGhl
IHVubmVjZXNzYXJ5IHR5cGVJc1hNTCBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6Om9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKTogQ2hhbmdlIHRvIHJldHVybiBq
dXN0IGEgcGxhaW4gb2xkIHBvaW50ZXIuCisgICAgICAgIFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldE9uUmVhZHlTdGF0ZUNoYW5n
ZUxpc3RlbmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b25M
b2FkTGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpz
ZXRPbkxvYWRMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNlbmQpOiBQcm90ZWN0IHRoZSBET00gd3JhcHBlciBpZiBhbnkgYXMgd2VsbCBhcyBvdXJz
ZWx2ZXMgd2hpbGUKKyAgICAgICAgdGhlIGxvYWQgaXMgaW4gcHJvZ3Jlc3MuCisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6YWJvcnQpOiBVbnByb3RlY3QgdG8gYmFsYW5jZSBvdXQg
dGhlIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNsb3RGaW5pc2hl
ZCk6IERpdHRvLgorCisgICAgICAgICoga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0Lmg6IEp1
c3QgZm9ybWF0dGluZyBjaGFuZ2VzLgorCiAyMDA2LTAxLTIzICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgRXJpYy4KSW5kZXg6
IGtodG1sL2VjbWEvSlNYTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNt
YS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMTIzMjIpCisrKyBraHRtbC9lY21hL0pT
WE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMCArMjAsMTggQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QuaCIKLSNpbmNs
dWRlICJ4bWxodHRwcmVxdWVzdC5oIgogCi0jaW5jbHVkZSAia2pzX3dpbmRvdy5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiZG9tX3N0cmluZy5oIgorI2luY2x1ZGUgImh0bWxfZG9j
dW1lbnRpbXBsLmgiCiAjaW5jbHVkZSAia2pzX2V2ZW50cy5oIgorI2luY2x1ZGUgImtqc193aW5k
b3cuaCIKKyNpbmNsdWRlICJ4bWxodHRwcmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiZG9tL2RvbV9z
dHJpbmcuaCIKLSNpbmNsdWRlICJodG1sL2h0bWxfZG9jdW1lbnRpbXBsLmgiCi0KLSNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QubHV0LmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi0KIG5hbWVzcGFjZSBLSlMgewogCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vIEpTWE1MSHR0cFJlcXVlc3QgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpA
QCAtNTMsNyArNTEsNiBAQAogS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoSlNYTUxIdHRwUmVxdWVz
dFByb3RvRnVuYykKIEtKU19JTVBMRU1FTlRfUFJPVE9UWVBFKCJKU1hNTEh0dHBSZXF1ZXN0Iiwg
SlNYTUxIdHRwUmVxdWVzdFByb3RvLCBKU1hNTEh0dHBSZXF1ZXN0UHJvdG9GdW5jKQogCi0KIEpT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvckltcDo6SlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
SW1wKEV4ZWNTdGF0ZSAqZXhlYywgRG9jdW1lbnRJbXBsICpkKQogICAgIDogZG9jKGQpCiB7CkBA
IC05Myw1MyArOTAsNDMgQEAKICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1hNTEh0dHBS
ZXF1ZXN0LCBET01PYmplY3Q+KGV4ZWMsICZKU1hNTEh0dHBSZXF1ZXN0VGFibGUsIHRoaXMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUgKkpTWE1MSHR0cFJlcXVlc3Q6OmdldFZh
bHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVjLCBpbnQgdG9rZW4pIGNvbnN0CitKU1ZhbHVlKiBK
U1hNTEh0dHBSZXF1ZXN0OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRv
a2VuKSBjb25zdAogewogICBzd2l0Y2ggKHRva2VuKSB7CiAgIGNhc2UgUmVhZHlTdGF0ZToKICAg
ICByZXR1cm4ganNOdW1iZXIobV9pbXBsLT5nZXRSZWFkeVN0YXRlKCkpOwogICBjYXNlIFJlc3Bv
bnNlVGV4dDoKICAgICByZXR1cm4ganNTdHJpbmdPck51bGwobV9pbXBsLT5nZXRSZXNwb25zZVRl
eHQoKSk7Ci0gIGNhc2UgUmVzcG9uc2VYTUw6IHsKLSAgICBSZWZQdHI8RG9jdW1lbnRJbXBsPiBy
ZXNwb25zZVhNTCA9IG1faW1wbC0+Z2V0UmVzcG9uc2VYTUwoKTsKLSAgICBpZiAocmVzcG9uc2VY
TUwuZ2V0KCkpCi0gICAgICByZXR1cm4gZ2V0RE9NTm9kZShleGVjLCByZXNwb25zZVhNTC5nZXQo
KSk7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KKyAgY2FzZSBS
ZXNwb25zZVhNTDoKKyAgICBpZiAoRG9jdW1lbnRJbXBsKiByZXNwb25zZVhNTCA9IG1faW1wbC0+
Z2V0UmVzcG9uc2VYTUwoKSkKKyAgICAgIHJldHVybiBnZXRET01Ob2RlKGV4ZWMsIHJlc3BvbnNl
WE1MKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgY2FzZSBTdGF0dXM6CiAgICAgaW50
IHN0YXR1cyA9IG1faW1wbC0+Z2V0U3RhdHVzKCk7CiAgICAgcmV0dXJuIHN0YXR1cyA+IDAgPyBq
c051bWJlcihzdGF0dXMpIDoganNVbmRlZmluZWQoKTsKICAgY2FzZSBTdGF0dXNUZXh0OgogICAg
IHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKG1faW1wbC0+Z2V0U3RhdHVzVGV4dCgpKTsKICAg
Y2FzZSBPbnJlYWR5c3RhdGVjaGFuZ2U6Ci0gICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
b25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcio+KG1faW1wbC0+Z2V0T25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKS5nZXQo
KSk7Ci0gICBpZiAob25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIpIHsKLSAgICAgIEpTT2JqZWN0
KiBsaXN0ZW5lck9iaiA9IG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyLT5saXN0ZW5lck9iaigp
OwotICAgICAgaWYgKGxpc3RlbmVyT2JqKQorICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4o
bV9pbXBsLT5vblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigpKSkKKyAgICAgIGlmIChKU09iamVj
dCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKICAgICAgICAgcmV0dXJu
IGxpc3RlbmVyT2JqOwotICAgfQogICAgcmV0dXJuIGpzTnVsbCgpOwogICBjYXNlIE9ubG9hZDoK
LSAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkxvYWRMaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5nZXRPbkxvYWRMaXN0ZW5l
cigpLmdldCgpKTsKLSAgIGlmIChvbkxvYWRMaXN0ZW5lcikgewotICAgICAgSlNPYmplY3QqIGxp
c3RlbmVyT2JqID0gb25Mb2FkTGlzdGVuZXItPmxpc3RlbmVyT2JqKCk7Ci0gICAgICBpZiAobGlz
dGVuZXJPYmopCisgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0g
c3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uTG9hZExp
c3RlbmVyKCkpKQorICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5s
aXN0ZW5lck9iaigpKQogICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7Ci0gICB9CiAgICByZXR1
cm4ganNOdWxsKCk7CiAgIGRlZmF1bHQ6Ci0vLyAgICBrZFdhcm5pbmcoKSA8PCAiSlNYTUxIdHRw
UmVxdWVzdDo6Z2V0VmFsdWVQcm9wZXJ0eSB1bmhhbmRsZWQgdG9rZW4gIiA8PCB0b2tlbiA8PCBl
bmRsOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAwOwogICB9CiB9CiAKLXZvaWQgSlNY
TUxIdHRwUmVxdWVzdDo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJv
cGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIpCit2b2lkIEpTWE1MSHR0cFJlcXVl
c3Q6OnB1dChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwg
SlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKQogewogICBsb29rdXBQdXQ8SlNYTUxIdHRwUmVxdWVz
dCxET01PYmplY3Q+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZKU1hNTEh0dHBS
ZXF1ZXN0VGFibGUsIHRoaXMgKTsKIH0KIAotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgaW50
IC8qYXR0ciovKQordm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNT
dGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlKiB2YWx1ZSwgaW50IC8qYXR0ciovKQogewog
ICBzd2l0Y2godG9rZW4pIHsKICAgY2FzZSBPbnJlYWR5c3RhdGVjaGFuZ2U6CkBAIC0xNDgsOSAr
MTM1LDYgQEAKICAgY2FzZSBPbmxvYWQ6CiAgICAgbV9pbXBsLT5zZXRPbkxvYWRMaXN0ZW5lcihX
aW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cih2YWx1ZSwgdHJ1ZSkpOwogICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgICAgOwotLy8gICAg
a2RXYXJuaW5nKCkgPDwgIkhUTUxEb2N1bWVudDo6cHV0VmFsdWVQcm9wZXJ0eSB1bmhhbmRsZWQg
dG9rZW4gIiA8PCB0b2tlbiA8PCBlbmRsOwogICB9CiB9CiAKQEAgLTE1OCw4ICsxNDIsOCBAQAog
ewogICBET01PYmplY3Q6Om1hcmsoKTsKIAotICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
b25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcio+KG1faW1wbC0+Z2V0T25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKS5nZXQo
KSk7Ci0gIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkxvYWRMaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5nZXRPbkxvYWRMaXN0
ZW5lcigpLmdldCgpKTsKKyAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIG9uUmVhZHlTdGF0
ZUNoYW5nZUxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIq
PihtX2ltcGwtPm9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkpOworICBKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25Mb2FkTGlzdGVuZXIoKSk7CiAKICAgaWYgKG9uUmVh
ZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKQogICAgIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyLT5t
YXJrKCk7CkBAIC0xNzMsMTMgKzE1NywxNyBAQAogICA6IG1faW1wbChuZXcgWE1MSHR0cFJlcXVl
c3QoZCkpCiB7CiAgIHNldFByb3RvdHlwZShKU1hNTEh0dHBSZXF1ZXN0UHJvdG86OnNlbGYoZXhl
YykpOworICBTY3JpcHRJbnRlcnByZXRlcjo6cHV0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSwgdGhp
cyk7CiB9CiAKIEpTWE1MSHR0cFJlcXVlc3Q6On5KU1hNTEh0dHBSZXF1ZXN0KCkKIHsKKyAgbV9p
bXBsLT5zZXRPblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigwKTsKKyAgbV9pbXBsLT5zZXRPbkxv
YWRMaXN0ZW5lcigwKTsKKyAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2lt
cGwuZ2V0KCkpOwogfQogCi1KU1ZhbHVlICpKU1hNTEh0dHBSZXF1ZXN0UHJvdG9GdW5jOjpjYWxs
QXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0
ICZhcmdzKQorSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rp
b24oRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYgYXJncykK
IHsKICAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmSlNYTUxIdHRwUmVxdWVzdDo6aW5mbykpCiAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKQEAgLTE4NywzNCArMTc1LDE5
IEBACiAgIEpTWE1MSHR0cFJlcXVlc3QgKnJlcXVlc3QgPSBzdGF0aWNfY2FzdDxKU1hNTEh0dHBS
ZXF1ZXN0ICo+KHRoaXNPYmopOwogCiAgIHN3aXRjaCAoaWQpIHsKLSAgY2FzZSBKU1hNTEh0dHBS
ZXF1ZXN0OjpBYm9ydDogeworICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkFib3J0OgogICAgIHJl
cXVlc3QtPm1faW1wbC0+YWJvcnQoKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgfQot
ICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkdldEFsbFJlc3BvbnNlSGVhZGVyczogewotICAgIGlm
IChhcmdzLnNpemUoKSAhPSAwKSB7Ci0gICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9
Ci0gICAgCisgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0QWxsUmVzcG9uc2VIZWFkZXJzOgog
ICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKHJlcXVlc3QtPm1faW1wbC0+Z2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCkpOwotICB9Ci0gIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0UmVzcG9u
c2VIZWFkZXI6IHsKLSAgICBpZiAoYXJncy5zaXplKCkgIT0gMSkgeworICBjYXNlIEpTWE1MSHR0
cFJlcXVlc3Q6OkdldFJlc3BvbnNlSGVhZGVyOgorICAgIGlmIChhcmdzLnNpemUoKSAhPSAxKQog
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotICAgIAotICAgIERPTVN0cmluZyBo
ZWFkZXIgPSByZXF1ZXN0LT5tX2ltcGwtPmdldFJlc3BvbnNlSGVhZGVyKGFyZ3NbMF0tPnRvU3Ry
aW5nKGV4ZWMpLmRvbVN0cmluZygpKTsKLQotICAgIGlmIChoZWFkZXIuaXNOdWxsKCkpCi0gICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIHJldHVybiBqc1N0cmluZyhoZWFkZXIpOwot
ICB9CisgICAgcmV0dXJuIGpzU3RyaW5nT3JVbmRlZmluZWQocmVxdWVzdC0+bV9pbXBsLT5nZXRS
ZXNwb25zZUhlYWRlcihhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSkpOwogICBj
YXNlIEpTWE1MSHR0cFJlcXVlc3Q6Ok9wZW46CiAgICAgewotICAgICAgaWYgKGFyZ3Muc2l6ZSgp
IDwgMiB8fCBhcmdzLnNpemUoKSA+IDUpIHsKKyAgICAgIGlmIChhcmdzLnNpemUoKSA8IDIgfHwg
YXJncy5zaXplKCkgPiA1KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgIH0K
ICAgICAKICAgICAgIERPTVN0cmluZyBtZXRob2QgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKS5k
b21TdHJpbmcoKTsKICAgICAgIEtVUkwgdXJsID0gS1VSTChXaW5kb3c6OnJldHJpZXZlQWN0aXZl
KGV4ZWMpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhcmdzWzFdLT50b1N0cmlu
ZyhleGVjKS5xc3RyaW5nKCkpKTsKQEAgLTIzNyw5ICsyMTAsOCBAQAogICAgIH0KICAgY2FzZSBK
U1hNTEh0dHBSZXF1ZXN0OjpTZW5kOgogICAgIHsKLSAgICAgIGlmIChhcmdzLnNpemUoKSA+IDEp
IHsKKyAgICAgIGlmIChhcmdzLnNpemUoKSA+IDEpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotICAgICAgfQogCiAgICAgICBET01TdHJpbmcgYm9keTsKIApAQCAtMjU4LDIzICsyMzAs
MTcgQEAKIAogICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQotICBjYXNlIEpTWE1M
SHR0cFJlcXVlc3Q6OlNldFJlcXVlc3RIZWFkZXI6IHsKLSAgICBpZiAoYXJncy5zaXplKCkgIT0g
MikgeworICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OlNldFJlcXVlc3RIZWFkZXI6CisgICAgaWYg
KGFyZ3Muc2l6ZSgpICE9IDIpCiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0g
ICAgCiAgICAgcmVxdWVzdC0+bV9pbXBsLT5zZXRSZXF1ZXN0SGVhZGVyKGFyZ3NbMF0tPnRvU3Ry
aW5nKGV4ZWMpLmRvbVN0cmluZygpLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmco
KSk7Ci0gICAgCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KLSAgY2FzZSBKU1hNTEh0
dHBSZXF1ZXN0OjpPdmVycmlkZU1JTUVUeXBlOiB7Ci0gICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
IHsKKyAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpPdmVycmlkZU1JTUVUeXBlOgorICAgIGlmIChh
cmdzLnNpemUoKSAhPSAyKQogICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQogICAg
IHJlcXVlc3QtPm1faW1wbC0+b3ZlcnJpZGVNSU1FVHlwZShhcmdzWzBdLT50b1N0cmluZyhleGVj
KS5kb21TdHJpbmcoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgIH0KLSAgfQogCiAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDoga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlz
aW9uIDEyMzIyKQorKysga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDkgKzI4LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBYTUxI
dHRwUmVxdWVzdDsKICAgICBjbGFzcyBEb2N1bWVudEltcGw7Ci19OworfQogCi0KIG5hbWVzcGFj
ZSBLSlMgewogCiAgIGNsYXNzIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvckltcCA6IHB1Ymxp
YyBKU09iamVjdCB7CkBAIC02NCw2ICs2Myw3IEBACiAgICAgZnJpZW5kIGNsYXNzIEpTWE1MSHR0
cFJlcXVlc3RQcm90b0Z1bmM7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0PiBt
X2ltcGw7CiAgIH07CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogeG1sL3htbGh0
dHByZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0geG1sL3htbGh0dHByZXF1ZXN0LmgJKHJldmlzaW9u
IDEyMzMyKQorKysgeG1sL3htbGh0dHByZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiAvLyAtKi0gYy1iYXNpYy1vZmZzZXQ6IDIgLSotCiAvKgogICogIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxl
IENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgPGFwQG55cG9wLmNvbT4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjMsOSArMjMsOCBAQAogI2RlZmlu
ZSBYTUxIVFRQUkVRVUVTVF9IXwogCiAjaW5jbHVkZSA8a3VybC5oPgotI2luY2x1ZGUgPGt4bWxj
b3JlL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDxreG1sY29yZS9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8a3htbGNvcmUvSGFzaE1hcC5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDxxZ3VhcmRlZHB0ci5oPgogI2luY2x1ZGUgPHFvYmplY3QuaD4KIApAQCAtNjgsMjYg
KzY3LDI1IEBACiAgICAgRE9NU3RyaW5nIGdldEFsbFJlc3BvbnNlSGVhZGVycygpIGNvbnN0Owog
ICAgIERPTVN0cmluZyBnZXRSZXNwb25zZUhlYWRlcihjb25zdCBET01TdHJpbmcmIG5hbWUpIGNv
bnN0OwogICAgIERPTVN0cmluZyBnZXRSZXNwb25zZVRleHQoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPERvY3VtZW50SW1wbD4gZ2V0UmVzcG9uc2VYTUwoKSBjb25zdDsKKyAgICBEb2N1bWVudElt
cGwqIGdldFJlc3BvbnNlWE1MKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldE9uUmVhZHlTdGF0ZUNo
YW5nZUxpc3RlbmVyKEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIpOwotICAgIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZ2V0T25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKSBjb25zdDsK
LSAgICB2b2lkIHNldE9uTG9hZExpc3RlbmVyKEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIp
OwotICAgIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0T25Mb2FkTGlzdGVuZXIoKSBjb25z
dDsKKyAgICB2b2lkIHNldE9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKEV2ZW50TGlzdGVuZXIq
KTsKKyAgICBFdmVudExpc3RlbmVyKiBvblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigpIGNvbnN0
OworICAgIHZvaWQgc2V0T25Mb2FkTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciopOworICAgIEV2ZW50
TGlzdGVuZXIqIG9uTG9hZExpc3RlbmVyKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgWE1MSHR0cFJlcXVlc3RQcm90b0Z1bmM7CiAgICAgZnJpZW5kIGNsYXNzIFhNTEh0
dHBSZXF1ZXN0UU9iamVjdDsKIAogICAgIGJvb2wgdXJsTWF0Y2hlc0RvY3VtZW50RG9tYWluKGNv
bnN0IEtVUkwmKSBjb25zdDsKIAotICAgIFhNTEh0dHBSZXF1ZXN0UU9iamVjdCAqcU9iamVjdDsK
KyAgICBYTUxIdHRwUmVxdWVzdFFPYmplY3QqIHFPYmplY3Q7CiAKLSAgICB2b2lkIHNsb3REYXRh
KCBLSU86OkpvYiogam9iLCBjb25zdCBjaGFyICpkYXRhLCBpbnQgc2l6ZSApOwotICAgIHZvaWQg
c2xvdEZpbmlzaGVkKCBLSU86OkpvYiogKTsKLSAgICB2b2lkIHNsb3RSZWRpcmVjdGlvbiggS0lP
OjpKb2IqLCBjb25zdCBLVVJMJiApOworICAgIHZvaWQgc2xvdERhdGEoS0lPOjpKb2IqLCBjb25z
dCBjaGFyICpkYXRhLCBpbnQgc2l6ZSk7CisgICAgdm9pZCBzbG90RmluaXNoZWQoS0lPOjpKb2Iq
KTsKKyAgICB2b2lkIHNsb3RSZWRpcmVjdGlvbihLSU86OkpvYiosIGNvbnN0IEtVUkwmKTsKIAot
ICAgIHZvaWQgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhjb25zdCBCeXRlQXJyYXkgJmRhdGEsIGNv
bnN0IEtVUkwgJmZpbmFsVVJMLCBjb25zdCBRU3RyaW5nICZoZWFkZXJzKTsKKyAgICB2b2lkIHBy
b2Nlc3NTeW5jTG9hZFJlc3VsdHMoY29uc3QgQnl0ZUFycmF5JiBkYXRhLCBjb25zdCBLVVJMJiBm
aW5hbFVSTCwgY29uc3QgUVN0cmluZyYgaGVhZGVycyk7CiAKICAgICBib29sIHJlc3BvbnNlSXNY
TUwoKSBjb25zdDsKICAgICAKQEAgLTEwMyw0NSArMTAxLDQxIEBACiAgICAgdm9pZCByZW1vdmVG
cm9tUmVxdWVzdHNCeURvY3VtZW50KCk7CiAKICAgICBRR3VhcmRlZFB0cjxEb2N1bWVudEltcGw+
IGRvYzsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gb25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVu
ZXI7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG9uTG9hZExpc3RlbmVyOworICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyOworICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29uTG9hZExpc3RlbmVyOwogCiAgICAgS1VSTCB1cmw7CiAgICAg
UVN0cmluZyBtZXRob2Q7CiAgICAgYm9vbCBhc3luYzsKICAgICBRU3RyaW5nIHJlcXVlc3RIZWFk
ZXJzOwogCi0gICAgS0lPOjpUcmFuc2ZlckpvYiAqIGpvYjsKKyAgICBLSU86OlRyYW5zZmVySm9i
KiBqb2I7CiAKICAgICBYTUxIdHRwUmVxdWVzdFN0YXRlIHN0YXRlOwogCi0gICAgUmVmUHRyPGto
dG1sOjpEZWNvZGVyPiBkZWNvZGVyOworICAgIFJlZlB0cjxEZWNvZGVyPiBkZWNvZGVyOwogICAg
IFFTdHJpbmcgZW5jb2Rpbmc7CiAgICAgUVN0cmluZyByZXNwb25zZUhlYWRlcnM7CiAgICAgUVN0
cmluZyBNSU1FVHlwZU92ZXJyaWRlOwogCiAgICAgUVN0cmluZyByZXNwb25zZTsKICAgICBtdXRh
YmxlIGJvb2wgY3JlYXRlZERvY3VtZW50OwotICAgIG11dGFibGUgYm9vbCB0eXBlSXNYTUw7CiAg
ICAgbXV0YWJsZSBSZWZQdHI8RG9jdW1lbnRJbXBsPiByZXNwb25zZVhNTDsKIAogICAgIGJvb2wg
YWJvcnRlZDsKICAgfTsKIAotCiAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0UU9iamVjdCA6IHB1Ymxp
YyBRT2JqZWN0IHsKLSAgICBRX09CSkVDVAotCiAgIHB1YmxpYzoKLSAgICBYTUxIdHRwUmVxdWVz
dFFPYmplY3QoWE1MSHR0cFJlcXVlc3QgKl9qc09iamVjdCk7CisgICAgWE1MSHR0cFJlcXVlc3RR
T2JqZWN0KFhNTEh0dHBSZXF1ZXN0KiByKSB7IG1fcmVxdWVzdCA9IHI7IH0KIAogICBwdWJsaWMg
c2xvdHM6Ci0gICAgdm9pZCBzbG90RGF0YSggS0lPOjpKb2IqIGpvYiwgY29uc3QgY2hhciAqZGF0
YSwgaW50IHNpemUgKTsKLSAgICB2b2lkIHNsb3RGaW5pc2hlZCggS0lPOjpKb2IqIGpvYiApOwot
ICAgIHZvaWQgc2xvdFJlZGlyZWN0aW9uKCBLSU86OkpvYiogam9iLCBjb25zdCBLVVJMJiB1cmwp
OworICAgIHZvaWQgc2xvdERhdGEoS0lPOjpKb2IqIGpvYiwgY29uc3QgY2hhciogZGF0YSwgaW50
IHNpemUpIHsgbV9yZXF1ZXN0LT5zbG90RGF0YShqb2IsIGRhdGEsIHNpemUpOyB9CisgICAgdm9p
ZCBzbG90RmluaXNoZWQoS0lPOjpKb2IqIGpvYikgeyBtX3JlcXVlc3QtPnNsb3RGaW5pc2hlZChq
b2IpOyB9CisgICAgdm9pZCBzbG90UmVkaXJlY3Rpb24oS0lPOjpKb2IqIGpvYiwgY29uc3QgS1VS
TCYgdXJsKSB7IG1fcmVxdWVzdC0+c2xvdFJlZGlyZWN0aW9uKGpvYiwgdXJsKTsgfQogCiAgIHBy
aXZhdGU6Ci0gICAgWE1MSHR0cFJlcXVlc3QgKmpzT2JqZWN0OworICAgIFhNTEh0dHBSZXF1ZXN0
KiBtX3JlcXVlc3Q7CiAgIH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiB4bWwveG1saHR0cHJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHhtbC94bWxodHRwcmVxdWVzdC5jcHAJKHJldmlzaW9u
IDEyMzMyKQorKysgeG1sL3htbGh0dHByZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0yMSwyNyArMjEsMjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ4
bWxodHRwcmVxdWVzdC5oIgogCi0jaW5jbHVkZSAia2pzL3Byb3RlY3QuaCIKLQotI2luY2x1ZGUg
ImRvbS9kb21fZXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiZG9tL2RvbV9zdHJpbmcuaCIKLSNpbmNs
dWRlICJkb20vZG9tMl9ldmVudHMuaCIKICNpbmNsdWRlICJDYWNoZS5oIgotI2luY2x1ZGUgImh0
bWwvaHRtbF9kb2N1bWVudGltcGwuaCIKLSNpbmNsdWRlICJtaXNjL2Zvcm1kYXRhLmgiCi0jaW5j
bHVkZSAieG1sL2RvbTJfZXZlbnRzaW1wbC5oIgotI2luY2x1ZGUgInhtbC9FdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb25JbXBsLmgiCi0KKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCisjaW5jbHVkZSAiS1dRTG9hZGVyLmgiCisjaW5jbHVkZSAiZG9tMl9ldmVudHMuaCIK
KyNpbmNsdWRlICJkb20yX2V2ZW50c2ltcGwuaCIKKyNpbmNsdWRlICJkb21fZXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiZG9tX3N0cmluZy5oIgorI2luY2x1ZGUgImZvcm1kYXRhLmgiCisjaW5jbHVk
ZSAiaHRtbF9kb2N1bWVudGltcGwuaCIKKyNpbmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1
ZGUgPGtpby9qb2IuaD4KLSNpbmNsdWRlIDxxb2JqZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3Rl
Y3QuaD4KICNpbmNsdWRlIDxxcmVnZXhwLmg+CiAjaW5jbHVkZSA8cXRleHRjb2RlYy5oPgogCi0j
aW5jbHVkZSAiS1dRTG9hZGVyLmgiCit1c2luZyBuYW1lc3BhY2UgS0lPOwogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTo6RXZlbnROYW1lczsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcg
bmFtZXNwYWNlIEV2ZW50TmFtZXM7CisKIHN0YXRpYyBpbmxpbmUgUVN0cmluZyBnZXRNSU1FVHlw
ZShjb25zdCBRU3RyaW5nJiBjb250ZW50VHlwZVN0cmluZykKIHsKICAgICByZXR1cm4gUVN0cmlu
Z0xpc3Q6OnNwbGl0KCI7IiwgY29udGVudFR5cGVTdHJpbmcsIHRydWUpWzBdLnN0cmlwV2hpdGVT
cGFjZSgpOwpAQCAtODYsMjggKzg3LDYgQEAKICAgICByZXR1cm4gUVN0cmluZygpOwogfQogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVhNTEh0dHBSZXF1ZXN0UU9iamVjdDo6WE1MSHR0cFJlcXVl
c3RRT2JqZWN0KFhNTEh0dHBSZXF1ZXN0ICpfanNPYmplY3QpIAotewotICBqc09iamVjdCA9IF9q
c09iamVjdDsgCi19Ci0KLXZvaWQgWE1MSHR0cFJlcXVlc3RRT2JqZWN0OjpzbG90RGF0YSggS0lP
OjpKb2IqIGpvYiwgY29uc3QgY2hhciAqZGF0YSwgaW50IHNpemUgKQotewotICBqc09iamVjdC0+
c2xvdERhdGEoam9iLCBkYXRhLCBzaXplKTsKLX0KLQotdm9pZCBYTUxIdHRwUmVxdWVzdFFPYmpl
Y3Q6OnNsb3RGaW5pc2hlZCggS0lPOjpKb2IqIGpvYiApCi17Ci0gIGpzT2JqZWN0LT5zbG90Rmlu
aXNoZWQoam9iKTsgCi19Ci0KLXZvaWQgWE1MSHR0cFJlcXVlc3RRT2JqZWN0OjpzbG90UmVkaXJl
Y3Rpb24oIEtJTzo6Sm9iKiBqb2IsIGNvbnN0IEtVUkwmIHVybCkKLXsgCi0gIGpzT2JqZWN0LT5z
bG90UmVkaXJlY3Rpb24oIGpvYiwgdXJsICk7IAotfQotCiBYTUxIdHRwUmVxdWVzdFN0YXRlIFhN
TEh0dHBSZXF1ZXN0OjpnZXRSZWFkeVN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3RhdGU7
CkBAIC0xMTgsNDkgKzk3LDQzIEBACiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCi1QYXNzUmVm
UHRyPERvY3VtZW50SW1wbD4gWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlWE1MKCkgY29uc3QK
K0RvY3VtZW50SW1wbCogWE1MSHR0cFJlcXVlc3Q6OmdldFJlc3BvbnNlWE1MKCkgY29uc3QKIHsK
ICAgICBpZiAoc3RhdGUgIT0gQ29tcGxldGVkKQogICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
IWNyZWF0ZWREb2N1bWVudCkgewotICAgICAgaWYgKHR5cGVJc1hNTCA9IHJlc3BvbnNlSXNYTUwo
KSkgeworICAgICAgaWYgKHJlc3BvbnNlSXNYTUwoKSkgewogICAgICAgICByZXNwb25zZVhNTCA9
IGRvYy0+aW1wbGVtZW50YXRpb24oKS0+Y3JlYXRlRG9jdW1lbnQoKTsKLQotICAgICAgICBEb2N1
bWVudEltcGwgKmRvY0ltcGwgPSByZXNwb25zZVhNTC5nZXQoKTsKLSAgICAgICAgCi0gICAgICAg
IGRvY0ltcGwtPm9wZW4oKTsKLSAgICAgICAgZG9jSW1wbC0+d3JpdGUocmVzcG9uc2UpOwotICAg
ICAgICBkb2NJbXBsLT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgICAgIGRvY0ltcGwtPmNsb3NlKCk7
CisgICAgICAgIHJlc3BvbnNlWE1MLT5vcGVuKCk7CisgICAgICAgIHJlc3BvbnNlWE1MLT53cml0
ZShyZXNwb25zZSk7CisgICAgICAgIHJlc3BvbnNlWE1MLT5maW5pc2hQYXJzaW5nKCk7CisgICAg
ICAgIHJlc3BvbnNlWE1MLT5jbG9zZSgpOwogICAgICAgfQogICAgICAgY3JlYXRlZERvY3VtZW50
ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIXR5cGVJc1hNTCkKLSAgICAgIHJldHVybiAwOwot
Ci0gICAgcmV0dXJuIHJlc3BvbnNlWE1MOworICAgIHJldHVybiByZXNwb25zZVhNTC5nZXQoKTsK
IH0KIAotUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBYTUxIdHRwUmVxdWVzdDo6Z2V0T25SZWFk
eVN0YXRlQ2hhbmdlTGlzdGVuZXIoKSBjb25zdAorRXZlbnRMaXN0ZW5lciogWE1MSHR0cFJlcXVl
c3Q6Om9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gb25S
ZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXI7CisgICAgcmV0dXJuIG1fb25SZWFkeVN0YXRlQ2hhbmdl
TGlzdGVuZXIuZ2V0KCk7CiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldE9uUmVhZHlTdGF0
ZUNoYW5nZUxpc3RlbmVyKEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIpCiB7Ci0gICAgb25S
ZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOworICAgIG1fb25SZWFkeVN0
YXRlQ2hhbmdlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOwogfQogCi1QYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IFhNTEh0dHBSZXF1ZXN0OjpnZXRPbkxvYWRMaXN0ZW5lcigpIGNvbnN0CitFdmVu
dExpc3RlbmVyKiBYTUxIdHRwUmVxdWVzdDo6b25Mb2FkTGlzdGVuZXIoKSBjb25zdAogewotICAg
IHJldHVybiBvbkxvYWRMaXN0ZW5lcjsKKyAgICByZXR1cm4gbV9vbkxvYWRMaXN0ZW5lci5nZXQo
KTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0T25Mb2FkTGlzdGVuZXIoRXZlbnRMaXN0
ZW5lciogZXZlbnRMaXN0ZW5lcikKIHsKLSAgICBvbkxvYWRMaXN0ZW5lciA9IGV2ZW50TGlzdGVu
ZXI7CisgICAgbV9vbkxvYWRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7CiB9CiAKIFhNTEh0dHBS
ZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChEb2N1bWVudEltcGwgKmQpCkBAIC0xODQsMTggKzE1Nywx
OCBAQAogICBpZiAoc3RhdGUgIT0gbmV3U3RhdGUpIHsKICAgICBzdGF0ZSA9IG5ld1N0YXRlOwog
ICAgIAotICAgIGlmIChkb2MgJiYgZG9jLT5mcmFtZSgpICYmIG9uUmVhZHlTdGF0ZUNoYW5nZUxp
c3RlbmVyKSB7CisgICAgaWYgKGRvYyAmJiBkb2MtPmZyYW1lKCkgJiYgbV9vblJlYWR5U3RhdGVD
aGFuZ2VMaXN0ZW5lcikgewogICAgICAgaW50IGlnbm9yZUV4Y2VwdGlvbjsKICAgICAgIFJlZlB0
cjxFdmVudEltcGw+IGV2ID0gZG9jLT5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIsIGlnbm9yZUV4
Y2VwdGlvbik7CiAgICAgICBldi0+aW5pdEV2ZW50KHJlYWR5c3RhdGVjaGFuZ2VFdmVudCwgdHJ1
ZSwgdHJ1ZSk7Ci0gICAgICBvblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lci0+aGFuZGxlRXZlbnRJ
bXBsKGV2LmdldCgpLCB0cnVlKTsKKyAgICAgIG1fb25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIt
PmhhbmRsZUV2ZW50SW1wbChldi5nZXQoKSwgdHJ1ZSk7CiAgICAgfQogICAgIAotICAgIGlmIChk
b2MgJiYgZG9jLT5mcmFtZSgpICYmIHN0YXRlID09IENvbXBsZXRlZCAmJiBvbkxvYWRMaXN0ZW5l
cikgeworICAgIGlmIChkb2MgJiYgZG9jLT5mcmFtZSgpICYmIHN0YXRlID09IENvbXBsZXRlZCAm
JiBtX29uTG9hZExpc3RlbmVyKSB7CiAgICAgICBpbnQgaWdub3JlRXhjZXB0aW9uOwogICAgICAg
UmVmUHRyPEV2ZW50SW1wbD4gZXYgPSBkb2MtPmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIiwgaWdu
b3JlRXhjZXB0aW9uKTsKICAgICAgIGV2LT5pbml0RXZlbnQobG9hZEV2ZW50LCB0cnVlLCB0cnVl
KTsKLSAgICAgIG9uTG9hZExpc3RlbmVyLT5oYW5kbGVFdmVudEltcGwoZXYuZ2V0KCksIHRydWUp
OworICAgICAgbV9vbkxvYWRMaXN0ZW5lci0+aGFuZGxlRXZlbnRJbXBsKGV2LmdldCgpLCB0cnVl
KTsKICAgICB9CiAgIH0KIH0KQEAgLTI4NCwxMCArMjU3LDEwIEBACiAgICAgICBpZiAoIWNvZGVj
KSAgIC8vIEZJWE1FOiByZXBvcnQgYW4gZXJyb3I/CiAgICAgICAgIGNvZGVjID0gUVRleHRDb2Rl
Yzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOwogCi0gICAgICBqb2IgPSBLSU86Omh0dHBfcG9zdCh1
cmwsIGNvZGVjLT5mcm9tVW5pY29kZShfYm9keS5xc3RyaW5nKCkpLCBmYWxzZSk7CisgICAgICBq
b2IgPSBodHRwX3Bvc3QodXJsLCBjb2RlYy0+ZnJvbVVuaWNvZGUoX2JvZHkucXN0cmluZygpKSwg
ZmFsc2UpOwogICB9CiAgIGVsc2UKLSAgICAgam9iID0gS0lPOjpnZXQoIHVybCwgZmFsc2UsIGZh
bHNlICk7CisgICAgIGpvYiA9IGdldCh1cmwsIGZhbHNlLCBmYWxzZSk7CiAgIGlmIChyZXF1ZXN0
SGVhZGVycy5sZW5ndGgoKSA+IDApCiAgICAgam9iLT5hZGRNZXRhRGF0YSgiY3VzdG9tSFRUUEhl
YWRlciIsIHJlcXVlc3RIZWFkZXJzKTsKIApAQCAtMzAwLDcgKzI3Myw3IEBACiAgICAgICAgIC8v
IGF2b2lkIGRlYWRsb2NrIGluIGNhc2UgdGhlIGxvYWRlciB3YW50cyB0byB1c2UgSlMgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZAogICAgICAgICBLSlM6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BM
b2NrczsKIAotICAgICAgICBkYXRhID0gS1dRU2VydmVTeW5jaHJvbm91c1JlcXVlc3Qoa2h0bWw6
OkNhY2hlOjpsb2FkZXIoKSwgZG9jLT5kb2NMb2FkZXIoKSwgam9iLCBmaW5hbFVSTCwgaGVhZGVy
cyk7CisgICAgICAgIGRhdGEgPSBLV1FTZXJ2ZVN5bmNocm9ub3VzUmVxdWVzdChDYWNoZTo6bG9h
ZGVyKCksIGRvYy0+ZG9jTG9hZGVyKCksIGpvYiwgZmluYWxVUkwsIGhlYWRlcnMpOwogICAgIH0K
IAogICAgIGpvYiA9IDA7CkBAIC0zMDksMTggKzI4MiwyNCBAQAogICAgIHJldHVybjsKICAgfQog
Ci0gIHJlZigpOyAvLyB0aGlzIG9iamVjdCBzaG91bGQgbm90IGJlIGRlbGV0ZWQgd2hpbGUgYSBy
ZXF1ZXN0IGlzIGluIHByb2dyZXNzCisgIC8vIE5laXRoZXIgdGhpcyBvYmplY3Qgbm9yIHRoZSBK
YXZhU2NyaXB0IHdyYXBwZXIgc2hvdWxkIGJlIGRlbGV0ZWQgd2hpbGUKKyAgLy8gYSByZXF1ZXN0
IGlzIGluIHByb2dyZXNzIGJlY2F1c2Ugd2UgbmVlZCB0byBrZWVwIHRoZSBsaXN0ZW5lcnMgYWxp
dmUsCisgIC8vIGFuZCB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBKYXZhU2NyaXB0IHdyYXBw
ZXIuCisgIHJlZigpOworICB7CisgICAgS0pTOjpKU0xvY2sgbG9jazsKKyAgICBnY1Byb3RlY3RO
dWxsVG9sZXJhbnQoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NT2JqZWN0KHRoaXMpKTsK
KyAgfQogICAKLSAgcU9iamVjdC0+Y29ubmVjdCggam9iLCBTSUdOQUwoIHJlc3VsdCggS0lPOjpK
b2IqICkgKSwKLSAgICAgICAgICAgICAgICAgICAgU0xPVCggc2xvdEZpbmlzaGVkKCBLSU86Okpv
YiogKSApICk7Ci0gIHFPYmplY3QtPmNvbm5lY3QoIGpvYiwgU0lHTkFMKCBkYXRhKCBLSU86Okpv
YiosIGNvbnN0IGNoYXIqLCBpbnQgKSApLAotICAgICAgICAgICAgICAgICAgICBTTE9UKCBzbG90
RGF0YSggS0lPOjpKb2IqLCBjb25zdCBjaGFyKiwgaW50ICkgKSApOwotICBxT2JqZWN0LT5jb25u
ZWN0KCBqb2IsIFNJR05BTChyZWRpcmVjdGlvbihLSU86OkpvYiosIGNvbnN0IEtVUkwmICkgKSwK
LSAgICAgICAgICAgICAgICAgICAgU0xPVCggc2xvdFJlZGlyZWN0aW9uKEtJTzo6Sm9iKiwgY29u
c3QgS1VSTCYpICkgKTsKKyAgcU9iamVjdC0+Y29ubmVjdChqb2IsIFNJR05BTChyZXN1bHQoS0lP
OjpKb2IqKSksIFNMT1Qoc2xvdEZpbmlzaGVkKEtJTzo6Sm9iKikpKTsKKyAgcU9iamVjdC0+Y29u
bmVjdChqb2IsIFNJR05BTChkYXRhKEtJTzo6Sm9iKiwgY29uc3QgY2hhciosIGludCkpLAorICAg
IFNMT1Qoc2xvdERhdGEoS0lPOjpKb2IqLCBjb25zdCBjaGFyKiwgaW50KSkpOworICBxT2JqZWN0
LT5jb25uZWN0KGpvYiwgU0lHTkFMKHJlZGlyZWN0aW9uKEtJTzo6Sm9iKiwgY29uc3QgS1VSTCYp
KSwKKyAgICBTTE9UKHNsb3RSZWRpcmVjdGlvbihLSU86OkpvYiosIGNvbnN0IEtVUkwmKSkpOwog
CiAgIGFkZFRvUmVxdWVzdHNCeURvY3VtZW50KCk7CiAKLSAgS1dRU2VydmVSZXF1ZXN0KGtodG1s
OjpDYWNoZTo6bG9hZGVyKCksIGRvYy0+ZG9jTG9hZGVyKCksIGpvYik7CisgIEtXUVNlcnZlUmVx
dWVzdChDYWNoZTo6bG9hZGVyKCksIGRvYy0+ZG9jTG9hZGVyKCksIGpvYik7CiB9CiAKIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmFib3J0KCkKQEAgLTMzNSw4ICszMTQsMTMgQEAKICAgZGVjb2RlciA9
IDA7CiAgIGFib3J0ZWQgPSB0cnVlOwogCi0gIGlmIChoYWRKb2IpCisgIGlmIChoYWRKb2IpIHsK
KyAgICB7CisgICAgICBLSlM6OkpTTG9jayBsb2NrOworICAgICAgZ2NVbnByb3RlY3ROdWxsVG9s
ZXJhbnQoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NT2JqZWN0KHRoaXMpKTsKKyAgICB9
CiAgICAgZGVyZWYoKTsKKyAgfQogfQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvdmVycmlkZU1J
TUVUeXBlKGNvbnN0IERPTVN0cmluZyYgb3ZlcnJpZGUpCkBAIC00ODMsNyArNDY3LDcgQEAKICAg
c2xvdEZpbmlzaGVkKDApOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpzbG90RmluaXNoZWQo
S0lPOjpKb2IgKikKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNsb3RGaW5pc2hlZChKb2IqKQogewog
ICBpZiAocmVzcG9uc2VIZWFkZXJzLmlzRW1wdHkoKSAmJiBqb2IpCiAgICAgcmVzcG9uc2VIZWFk
ZXJzID0gam9iLT5xdWVyeU1ldGFEYXRhKCJIVFRQLUhlYWRlcnMiKTsKQEAgLTUwMSwxOCArNDg1
LDIzIEBACiAgIGNoYW5nZVN0YXRlKENvbXBsZXRlZCk7CiAgIGRlY29kZXIgPSAwOwogCi0gIGlm
IChoYWRKb2IpCisgIGlmIChoYWRKb2IpIHsKKyAgICB7CisgICAgICBLSlM6OkpTTG9jayBsb2Nr
OworICAgICAgZ2NVbnByb3RlY3ROdWxsVG9sZXJhbnQoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6
Z2V0RE9NT2JqZWN0KHRoaXMpKTsKKyAgICB9CiAgICAgZGVyZWYoKTsKKyAgfQogfQogCi12b2lk
IFhNTEh0dHBSZXF1ZXN0OjpzbG90UmVkaXJlY3Rpb24oS0lPOjpKb2IqLCBjb25zdCBLVVJMJiB1
cmwpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzbG90UmVkaXJlY3Rpb24oSm9iKiwgY29uc3QgS1VS
TCYgdXJsKQogewogICBpZiAoIXVybE1hdGNoZXNEb2N1bWVudERvbWFpbih1cmwpKSB7CiAgICAg
YWJvcnQoKTsKICAgfQogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpzbG90RGF0YShLSU86Okpv
YiosIGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzbG90
RGF0YShKb2IqLCBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuKQogewogICBpZiAocmVzcG9uc2VI
ZWFkZXJzLmlzRW1wdHkoKSAmJiBqb2IpCiAgICAgcmVzcG9uc2VIZWFkZXJzID0gam9iLT5xdWVy
eU1ldGFEYXRhKCJIVFRQLUhlYWRlcnMiKTsK
</data>
<flag name="review"
          id="1383"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>