<?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>83360</bug_id>
          
          <creation_ts>2012-04-06 03:47:53 -0700</creation_ts>
          <short_desc>[BlackBerry] Upstreaming BlackBerry-specific changes to PluginView</short_desc>
          <delta_ts>2014-01-28 08:15:05 -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 BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83756</dependson>
    
    <dependson>83767</dependson>
    
    <dependson>83772</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Charles Wei">charles.wei</reporter>
          <assigned_to name="Charles Wei">charles.wei</assigned_to>
          <cc>andersca</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597277</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-04-06 03:47:53 -0700</bug_when>
    <thetext>Need to upstream BlackBerry-specific events in PluginView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597283</commentid>
    <comment_count>1</comment_count>
      <attachid>136001</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-04-06 04:13:51 -0700</bug_when>
    <thetext>Created attachment 136001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597317</commentid>
    <comment_count>2</comment_count>
      <attachid>136001</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-04-06 05:57:02 -0700</bug_when>
    <thetext>Comment on attachment 136001
Patch

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

Still some stuff to clear up.

&gt; Source/WebCore/plugins/PluginView.cpp:186
&gt; +#endif

How about like this:
if (!m_plugin
#if !PLATFORM(BLACKBERRY)
       || m_isWindowed // On BB windowed plugins want to get events.
#endif
    )
    return;

&gt; Source/WebCore/plugins/PluginView.cpp:202
&gt; +    else if (event-&gt;type() == eventNames().DOMFocusOutEvent)

Any difference between DOMFocusOutEvent and focusoutEvent below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598968</commentid>
    <comment_count>3</comment_count>
      <attachid>136001</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-09 20:56:58 -0700</bug_when>
    <thetext>Comment on attachment 136001
Patch

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

&gt;&gt; Source/WebCore/plugins/PluginView.cpp:186
&gt;&gt; +#endif
&gt; 
&gt; How about like this:
&gt; if (!m_plugin
&gt; #if !PLATFORM(BLACKBERRY)
&gt;        || m_isWindowed // On BB windowed plugins want to get events.
&gt; #endif
&gt;     )
&gt;     return;

I would even go with 

if (!m_plugin)
    return;

#if platform(blackberry)
if (m_isWindowed)
    return;
#endif

&gt; Source/WebCore/plugins/PluginView.cpp:300
&gt; +#if PLATFORM(BLACKBERRY)
&gt; +        if (!SecurityPolicy::shouldHideReferrer(m_url, m_parentFrame-&gt;document()-&gt;baseURL()))
&gt; +            frameLoadRequest.resourceRequest().setHTTPReferrer(m_parentFrame-&gt;loader()-&gt;outgoingReferrer());
&gt; +#endif

does not seem event handling related (?)

&gt; Source/WebCore/plugins/PluginView.cpp:462
&gt; +    // Don&apos;t let a plugin start any loads if it no longer has a page associated with it.
&gt; +    if (!m_parentFrame-&gt;page())
&gt; +        return;

it does not seem blackberry specific. Was it a crash issue? Is it possible to come with a layout test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600183</commentid>
    <comment_count>4</comment_count>
      <attachid>136001</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-04-11 03:41:04 -0700</bug_when>
    <thetext>Comment on attachment 136001
Patch

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

&gt;&gt;&gt; Source/WebCore/plugins/PluginView.cpp:186
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; How about like this:
&gt;&gt; if (!m_plugin
&gt;&gt; #if !PLATFORM(BLACKBERRY)
&gt;&gt;        || m_isWindowed // On BB windowed plugins want to get events.
&gt;&gt; #endif
&gt;&gt;     )
&gt;&gt;     return;
&gt; 
&gt; I would even go with 
&gt; 
&gt; if (!m_plugin)
&gt;     return;
&gt; 
&gt; #if platform(blackberry)
&gt; if (m_isWindowed)
&gt;     return;
&gt; #endif

that&apos;s logically wrong, Antonio :-)
it should be 

#if !PLATFORM(BLACKBERRY)
if (m_isWindowed)       //On BlackBerry, windowed plugins want to get events also.
    return;
#endif

&gt;&gt; Source/WebCore/plugins/PluginView.cpp:202
&gt;&gt; +    else if (event-&gt;type() == eventNames().DOMFocusOutEvent)
&gt; 
&gt; Any difference between DOMFocusOutEvent and focusoutEvent below?

DOMFocusOutEvent are DOM2 events, and focusoutEvent are DOM3.  In webkit, whenever there&apos;s a DOMFocusOutEvent sent out, there will be a focusOutEvent sent out also.  WebKit and DOM event spec will obsolete DOMFocusOutEvent, DOMFocusInEvent eventually.   So we will need to remove them here also.
Thanks for your pick this out.

&gt;&gt; Source/WebCore/plugins/PluginView.cpp:300
&gt;&gt; +#endif
&gt; 
&gt; does not seem event handling related (?)

Not event handling related,  it&apos;s loading related. Maybe the title of this bug is not appropriate. It should read &quot;Upstream BlackBerry-specific change to PluginView&quot;.  Will do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600200</commentid>
    <comment_count>5</comment_count>
      <attachid>136659</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-04-11 04:42:51 -0700</bug_when>
    <thetext>Created attachment 136659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600240</commentid>
    <comment_count>6</comment_count>
      <attachid>136659</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-04-11 07:22:43 -0700</bug_when>
    <thetext>Comment on attachment 136659
Patch

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

&gt; Source/WebCore/plugins/PluginView.h:301
&gt; +    void handleFocusOutEvent();

These two could be removed.

&gt; Source/WebCore/plugins/PluginView.h:404
&gt;          void handleFocusOutEvent();

If we re-enable this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600244</commentid>
    <comment_count>7</comment_count>
      <attachid>136659</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-04-11 07:31:54 -0700</bug_when>
    <thetext>Comment on attachment 136659
Patch

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

&gt; Source/WebCore/plugins/PluginView.h:328
&gt; +    Element* getElement() { return m_element; }

I don&apos;t think this is typical, element() would be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600253</commentid>
    <comment_count>8</comment_count>
      <attachid>136659</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-11 07:48:15 -0700</bug_when>
    <thetext>Comment on attachment 136659
Patch

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

Lets upstream it by parts: first the event handling stuff, then networking, etc.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new testsr, initial checkin of BlackBerry porting of PluginView,

testsr*

&gt; Source/WebCore/plugins/PluginView.cpp:460
&gt; +    // Don&apos;t let a plugin start any loads if it no longer has a page associated with it.
&gt; +    if (!m_parentFrame-&gt;page())
&gt; +        return;
&gt; +

this is hard to accept without a test case of failure or a crash. no tests...

&gt; Source/WebCore/plugins/PluginView.h:88
&gt; +#if (PLATFORM(QT) &amp;&amp; USE(ACCELERATED_COMPOSITING) &amp;&amp; ENABLE(NETSCAPE_PLUGIN_API) &amp;&amp; (defined(XP_UNIX) )) || PLATFORM(BLACKBERRY)

I think it should be like:

#if (PLATFORM(QT) || PLATFORM(BLACKBERRY) &amp;&amp; USE(ACCELERATED_COMPOSITING) &amp;&amp; ENABLE(NETSCAPE_PLUGIN_API) &amp;&amp; defined(XP_UNIX)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600255</commentid>
    <comment_count>9</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-04-11 07:49:52 -0700</bug_when>
    <thetext>Looking at this again and after discussion with Antonio, I think this is easier to review if it is split into multiple patches. We see here changes having to do with event handling, networking, graphics, a crash fix, all lumped together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600257</commentid>
    <comment_count>10</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-04-11 07:50:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/plugins/PluginView.cpp:460
&gt; &gt; +    // Don&apos;t let a plugin start any loads if it no longer has a page associated with it.
&gt; &gt; +    if (!m_parentFrame-&gt;page())
&gt; &gt; +        return;
&gt; &gt; +
&gt; 
&gt; this is hard to accept without a test case of failure or a crash. no tests...

An ASSERT may be more acceptible, until we prove that there is a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600265</commentid>
    <comment_count>11</comment_count>
      <attachid>136659</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-04-11 07:53:55 -0700</bug_when>
    <thetext>Comment on attachment 136659
Patch

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

&gt; Source/WebCore/plugins/PluginView.cpp:73
&gt; +#include &quot;TouchEvent.h&quot;

should it get guarded against enabled(touch)?

does any other platform support touch events in flash?

&gt; Source/WebCore/plugins/PluginView.cpp:185
&gt; +#if !PLATFORM(BLACKBERRY) // On BlackBerry, even windowed plugins want to get events.
&gt; +    if (m_isWindowed)
&gt;          return;
&gt; +#endif

maybe add a static local fucntion:

bool bypassEventsToWindowedPlugin()
{
if platform(bb)
   return false;
endif

return true;
}

&gt; Source/WebCore/plugins/PluginView.cpp:196
&gt; +#if PLATFORM(BLACKBERRY) &amp;&amp; ENABLE(NETSCAPE_PLUGIN_API)

is not #if platform(bb) enough here?

&gt; Source/WebCore/plugins/PluginView.cpp:200
&gt; +    else if (event-&gt;interfaceName() == eventNames().interfaceForTouchEvent)
&gt; +        handleTouchEvent(static_cast&lt;TouchEvent*&gt;(event));

do we need to guard enable(touch)?

&gt; Source/WebCore/plugins/PluginView.cpp:489
&gt; +#if PLATFORM(BLACKBERRY)
&gt; +            ResourceRequest resourceRequest = request-&gt;frameLoadRequest().resourceRequest();
&gt; +            resourceRequest.setIsRequestedByPlugin(true);
&gt; +            m_parentFrame-&gt;loader()-&gt;load(resourceRequest, targetFrameName, false);
&gt; +#else
&gt;              m_parentFrame-&gt;loader()-&gt;load(request-&gt;frameLoadRequest().resourceRequest(), targetFrameName, false);
&gt; +#endif

maybe this should get re-worked. see my comments in bug 83447</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136001</attachid>
            <date>2012-04-06 04:13:51 -0700</date>
            <delta_ts>2012-04-11 04:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83360-20120406191922.patch</filename>
            <type>text/plain</type>
            <size>13037</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUxNzllMTFkMzUzOWZm
YmM1NWFkZGNjNjM5Mzc5N2Q0MWI3ZjgxYi4uY2M2MGNjOWU0ZDMxZDViOGFiNzZlNWRhOGFlZTQ4
ZThhNTFiYzljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA0LTA2ICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxh
Y2tCZXJyeV0gVXBzdHJlYW1pbmcgQmxhY2tCZXJyeS1zcGVjaWZpYyBQbHVnaW5WaWV3IGV2ZW50
IGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MzM2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyxpbml0aWFsIGNoZWNraW4gb2YgQmxhY2tCZXJyeSBwb3J0aW5nIG9mIFBs
dWdpblZpZXcsCisgICAgICAgIHRvIGhhbmRsZSBCbGFja0JlcnJ5LXNwZWNpZmljIGV2ZW50cy4K
KworICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6Z2V0VVJMTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blZpZXc6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZVBvc3QpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
Vmlldy5oOgorICAgICAgICAoR3JhcGhpY3MpOgorICAgICAgICAoUGx1Z2luV2luZG93SW5mbyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBsdWdpblZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6Z2V0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3OjpnZXRQcml2YXRlKToKKwogMjAxMi0wNC0wNiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVG91Y2ggQ2hyb21lQ2xpZW50LmggdG8gZml4IENocm9taXVt
IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNzQ5ZjYwOTc5
ZjdlZTlhOTg4YTkzNWFlZWMxNWEzM2EzZjQ1Y2VhOS4uNjk3NTM2Zjg5YTcyODA0NzAyZDQ0ODAw
NjFlMzUyZWFjZTJlOWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC02MSwxMCArNjEsMjYgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisKKyNpZiBQTEFURk9S
TShCTEFDS0JFUlJZKQorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCisjZW5kaWYKKwogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorI2luY2x1ZGUg
IlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCisjZW5kaWYKKwogI2luY2x1
ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAorI2lm
IFBMQVRGT1JNKEJMQUNLQkVSUlkpCisvLyBUaGlzIGlzIGRlZmluZWQgaW4gbnBhcGkuaCwgYnV0
IHNob3VsZG4ndCBhcHBseSBzaW5jZSB3ZSdyZSBub3QgcmVhbGx5IF9XSU4zMgorI3VuZGVmIFhQ
X1dJTgorI2VuZGlmCisKICNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICNpbmNsdWRlICJQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgiCiAjZW5kaWYKQEAg
LTE0Niw3ICsxNjIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8gT24gV2luZG93cyBhbHdheXMgY2Fs
bCBwbHVnaW4gdG8gY2hhbmdlIGdlb21ldHJ5LgogICAgIHNldE5QV2luZG93UmVjdChyZWN0KTsK
LSNlbGlmIGRlZmluZWQoWFBfVU5JWCkKKyNlbGlmIGRlZmluZWQoWFBfVU5JWCkgJiYgIVBMQVRG
T1JNKEJMQUNLQkVSUlkpCiAgICAgLy8gT24gVW5peCwgbXVsdGlwbGUgY2FsbHMgdG8gc2V0TlBX
aW5kb3coKSBpbiB3aW5kb3dlZCBtb2RlIGNhdXNlcyBGbGFzaCB0byBjcmFzaAogICAgIGlmICht
X21vZGUgPT0gTlBfRlVMTCB8fCAhbV9pc1dpbmRvd2VkKQogICAgICAgICBzZXROUFdpbmRvd1Jl
Y3QocmVjdCk7CkBAIC0xNjAsOCArMTc2LDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6ZnJhbWVSZWN0
c0NoYW5nZWQoKQogCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkK
IHsKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgIC8vIEV2ZW4gd2luZG93ZWQgcGx1Z2lu
cyB3YW50IHRvIGdldCBldmVudHMuCisgICAgaWYgKCFtX3BsdWdpbikKKyAgICAgICAgcmV0dXJu
OworI2Vsc2UKICAgICBpZiAoIW1fcGx1Z2luIHx8IG1faXNXaW5kb3dlZCkKICAgICAgICAgcmV0
dXJuOworI2VuZGlmCiAKICAgICAvLyBQcm90ZWN0IHRoZSBwbHVnLWluIGZyb20gZGVsZXRpb24g
d2hpbGUgZGlzcGF0Y2hpbmcgdGhlIGV2ZW50LgogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwcm90
ZWN0KHRoaXMpOwpAQCAtMTcyLDcgKzE5NCwxNiBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2
ZW50KEV2ZW50KiBldmVudCkKICAgICAgICAgaGFuZGxlS2V5Ym9hcmRFdmVudChzdGF0aWNfY2Fz
dDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpKTsKICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5jb250ZXh0bWVudUV2ZW50KQogICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsgLy8gV2UgZG9uJ3Qga25vdyBpZiB0aGUgcGx1Zy1pbiBoYXMgaGFuZGxlZCBt
b3VzZWRvd24gZXZlbnQgYnkgZGlzcGxheWluZyBhIGNvbnRleHQgbWVudSwgc28gd2UgbmV2ZXIg
d2FudCBXZWJLaXQgdG8gc2hvdyBhIGRlZmF1bHQgb25lLgotI2lmIGRlZmluZWQoWFBfVU5JWCkg
JiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkg
JiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgZWxzZSBpZiAoZXZlbnQtPmludGVy
ZmFjZU5hbWUoKSA9PSBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yV2hlZWxFdmVudCkKKyAgICAg
ICAgaGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxXaGVlbEV2ZW50Kj4oZXZlbnQpKTsKKyAg
ICBlbHNlIGlmIChldmVudC0+aW50ZXJmYWNlTmFtZSgpID09IGV2ZW50TmFtZXMoKS5pbnRlcmZh
Y2VGb3JUb3VjaEV2ZW50KQorICAgICAgICBoYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19jYXN0PFRv
dWNoRXZlbnQqPihldmVudCkpOworICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLkRPTUZvY3VzT3V0RXZlbnQpCisgICAgICAgIHNldEZvY3VzKGZhbHNlKTsKKyAgICBl
bHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQpCisg
ICAgICAgIHNldEZvY3VzKHRydWUpOworI2VsaWYgZGVmaW5lZChYUF9VTklYKSAmJiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5mb2N1c291dEV2ZW50KQogICAgICAgICBoYW5kbGVGb2N1c091dEV2ZW50KCk7CiAg
ICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZm9jdXNpbkV2ZW50KQpA
QCAtMjYyLDYgKzI5MywxMiBAQCBib29sIFBsdWdpblZpZXc6OnN0YXJ0KCkKICAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnNldEhUVFBNZXRob2QoIkdFVCIpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnNldFVSTChtX3VybCk7CisKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZ
KQorICAgICAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIobV91cmws
IG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSkpCisgICAgICAgICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihtX3BhcmVudEZy
YW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKKyNlbmRpZgorCiAgICAgICAgIGxv
YWQoZnJhbWVMb2FkUmVxdWVzdCwgZmFsc2UsIDApOwogICAgIH0KIApAQCAtNDIwLDYgKzQ1Nywx
MCBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgaWYgKCFtX2lzU3RhcnRlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gRG9u
J3QgbGV0IGEgcGx1Z2luIHN0YXJ0IGFueSBsb2FkcyBpZiBpdCBubyBsb25nZXIgaGFzIGEgcGFn
ZSBhc3NvY2lhdGVkIHdpdGggaXQuCisgICAgaWYgKCFtX3BhcmVudEZyYW1lLT5wYWdlKCkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIC8vIGRvbid0IGxldCBhIHBsdWdpbiBzdGFydCBhbnkgbG9h
ZHMgaWYgaXQgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgYSBkb2N1bWVudCB0aGF0IGlzIGJlaW5nIAog
ICAgIC8vIGRpc3BsYXllZCB1bmxlc3MgdGhlIGxvYWRzIGFyZSBpbiB0aGUgc2FtZSBmcmFtZSBh
cyB0aGUgcGx1Z2luLgogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0RnJhbWVOYW1lID0gcmVxdWVz
dC0+ZnJhbWVMb2FkUmVxdWVzdCgpLmZyYW1lTmFtZSgpOwpAQCAtNDQyLDcgKzQ4MywxMyBAQCB2
b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAg
ICAgICAgICAgICAvLyBQbHVnaW5WaWV3LCBzbyB3ZSBwcm90ZWN0IGl0LiA8cmRhcjovL3Byb2Js
ZW0vNjk5MTI1MT4KICAgICAgICAgICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwcm90ZWN0KHRoaXMp
OwogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICAgICAgICAgIFJlc291cmNlUmVxdWVz
dCByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VS
ZXF1ZXN0KCk7CisgICAgICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNSZXF1ZXN0ZWRCeVBs
dWdpbih0cnVlKTsKKyAgICAgICAgICAgIG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT5sb2FkKHJl
c291cmNlUmVxdWVzdCwgdGFyZ2V0RnJhbWVOYW1lLCBmYWxzZSk7CisjZWxzZQogICAgICAgICAg
ICAgbV9wYXJlbnRGcmFtZS0+bG9hZGVyKCktPmxvYWQocmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVz
dCgpLnJlc291cmNlUmVxdWVzdCgpLCB0YXJnZXRGcmFtZU5hbWUsIGZhbHNlKTsKKyNlbmRpZgog
CiAgICAgICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ4MDc0Njk+IFRoaXMgc2hv
dWxkIGJlIHNlbnQgd2hlbiB0aGUgZG9jdW1lbnQgaGFzIGZpbmlzaGVkIGxvYWRpbmcKICAgICAg
ICAgICAgIGlmIChyZXF1ZXN0LT5zZW5kTm90aWZpY2F0aW9uKCkpIHsKQEAgLTU2NCw2ICs2MTEs
MTEgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRVUkxOb3RpZnkoY29uc3QgY2hhciogdXJsLCBj
b25zdCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGkKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2QoIkdFVCIpOwogICAgIGZyYW1lTG9hZFJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1ha2VVUkwobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQo
KS0+YmFzZVVSTCgpLCB1cmwpKTsKIAorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgaWYg
KCFTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGZyYW1lTG9hZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCksIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwo
KSkpCisgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJl
ZmVycmVyKG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOworI2Vu
ZGlmCisKICAgICByZXR1cm4gbG9hZChmcmFtZUxvYWRSZXF1ZXN0LCB0cnVlLCBub3RpZnlEYXRh
KTsKIH0KIApAQCAtNTc1LDYgKzYyNywxMSBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFVSTChj
b25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCkKICAgICBmcmFtZUxvYWRSZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2QoIkdFVCIpOwogICAgIGZyYW1lTG9hZFJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1ha2VVUkwobV9wYXJlbnRGcmFtZS0+ZG9j
dW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpKTsKIAorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisg
ICAgaWYgKCFTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGZyYW1lTG9hZFJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJh
c2VVUkwoKSkpCisgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0
SFRUUFJlZmVycmVyKG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkp
OworI2VuZGlmCisKICAgICByZXR1cm4gbG9hZChmcmFtZUxvYWRSZXF1ZXN0LCBmYWxzZSwgMCk7
CiB9CiAKQEAgLTY3NCw2ICs3MzEsMTEgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpzZXRWYWx1ZShO
UFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCiAgICAgICAgIH0KICAgICB9CiAjZW5k
aWYgLy8gZGVmaW5lZChYUF9NQUNPU1gpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICBj
YXNlIE5QUFZiYWNrZ3JvdW5kUGxheUJvb2w6CisgICAgICAgIHNldEJhY2tncm91bmRQbGF5KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBOUEVSUl9O
T19FUlJPUjsKKyNlbmRpZgogCiAgICAgZGVmYXVsdDoKICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKQEAgLTg1Niw3ICs5MTgsNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEZyYW1lKiBwYXJl
bnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGx1Z2luUGFja2FnZSogcAogICAgICwgbV9j
b250ZXh0UmVmKDApCiAgICAgLCBtX2Zha2VXaW5kb3coMCkKICNlbmRpZgotI2lmIGRlZmluZWQo
WFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjaWYgZGVmaW5lZChYUF9V
TklYKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgIVBMQVRGT1JNKEJMQUNLQkVS
UlkpCiAgICAgLCBtX2hhc1BlbmRpbmdHZW9tZXRyeUNoYW5nZSh0cnVlKQogICAgICwgbV9kcmF3
YWJsZSgwKQogICAgICwgbV92aXN1YWwoMCkKQEAgLTg3MCw2ICs5MzIsOSBAQCBQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGx1
Z2luUGFja2FnZSogcAogICAgICwgbV9tYW51YWxTdHJlYW0oMCkKICAgICAsIG1faXNKYXZhU2Ny
aXB0UGF1c2VkKGZhbHNlKQogICAgICwgbV9oYXZlQ2FsbGVkU2V0V2luZG93KGZhbHNlKQorI2lm
IFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgLCBtX3ByaXZhdGUoMCkKKyNlbmRpZgogewogICAg
IGlmICghbV9wbHVnaW4pIHsKICAgICAgICAgbV9zdGF0dXMgPSBQbHVnaW5TdGF0dXNDYW5Ob3RG
aW5kUGx1Z2luOwpAQCAtMTIwNCw2ICsxMjY5LDExIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFu
ZGxlUG9zdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVu
CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3Jt
RGF0YTo6Y3JlYXRlKHBvc3REYXRhLCBwb3N0RGF0YUxlbmd0aCkpOwogICAgIGZyYW1lTG9hZFJl
cXVlc3Quc2V0RnJhbWVOYW1lKHRhcmdldCk7CiAKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQor
ICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihmcmFtZUxvYWRSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5i
YXNlVVJMKCkpKQorICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNl
dEhUVFBSZWZlcnJlcihtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
KTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGxvYWQoZnJhbWVMb2FkUmVxdWVzdCwgc2VuZE5vdGlm
aWNhdGlvbiwgbm90aWZ5RGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgK
aW5kZXggMTEyODUyMmQwMjFmODFhOGJmNWZkZTFkZDc2MWMzNjBkNDhjMWY1Mi4uYzMxYjVhNjJj
NGJlMjg5YTFiNGMxMGVmZjg0M2U3NjllOGI4OGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmgKQEAgLTQ3LDYgKzQ3LDE2IEBACiAjaW5jbHVkZSAibnBydW50aW1lX2ludGVybmFs
LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCituYW1lc3BhY2UgQmxhY2tC
ZXJyeSB7CituYW1lc3BhY2UgUGxhdGZvcm0geworbmFtZXNwYWNlIEdyYXBoaWNzIHsKK2NsYXNz
IEJ1ZmZlcjsKK30KK30KK30KKyNlbmRpZgorCiAjaWYgT1MoV0lORE9XUykgJiYgKFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShXWCkpCiB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiB0eXBl
ZGVmIEhXTkQgUGxhdGZvcm1QbHVnaW5XaWRnZXQ7CkBAIC02Niw3ICs3NiwxNSBAQCBRVF9CRUdJ
Tl9OQU1FU1BBQ0UKIGNsYXNzIFFQYWludGVyOwogUVRfRU5EX05BTUVTUEFDRQogI2VuZGlmCi0j
aWYgUExBVEZPUk0oUVQpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIGRlZmluZWQoWFBfVU5JWCkKKworI2lmIFBMQVRGT1JN
KEJMQUNLQkVSUlkpCitzdHJ1Y3QgUGx1Z2luV2luZG93SW5mbyB7CisgICAgdm9pZCogd2luZG93
UHRyOworICAgIFdlYkNvcmU6OkludFJlY3Qgd2luZG93UmVjdDsKK307CisjZW5kaWYKKworI2lm
IChQTEFURk9STShRVCkgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgKGRlZmluZWQoWFBfVU5JWCkgKSkgfHwgUExBVEZPUk0o
QkxBQ0tCRVJSWSkKICNpZm5kZWYgV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElOR19QTFVH
SU5fTEFZRVIKICNkZWZpbmUgV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElOR19QTFVHSU5f
TEFZRVIgMQogI2VuZGlmCkBAIC05OCw2ICsxMTYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIFBsdWdpblN0cmVhbTsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwogICAgIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICBjbGFz
cyBXaGVlbEV2ZW50OworICAgIGNsYXNzIFRvdWNoRXZlbnQ7CisgICAgY2xhc3MgUGx1Z2luVmll
d1ByaXZhdGU7CisjZW5kaWYKIAogICAgIGVudW0gUGx1Z2luU3RhdHVzIHsKICAgICAgICAgUGx1
Z2luU3RhdHVzQ2FuTm90RmluZFBsdWdpbiwKQEAgLTI2NCw2ICsyODcsNTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBzZXRJc1J1bm5pbmdVbmRlckRSVChib29s
IGZsYWcpIHsgc19pc1J1bm5pbmdVbmRlckRSVCA9IGZsYWc7IH0KICNlbmRpZgogCisjaWYgUExB
VEZPUk0oQkxBQ0tCRVJSWSkKKyAgICBmcmllbmQgY2xhc3MgUGx1Z2luVmlld1ByaXZhdGU7CisK
KyAgICAvLyBNZXRob2RzIHRvIHNlbmQgZXZlbnRzIHRvIHRoZSBwbHVnaW4KKyAgICB2b2lkIGhh
bmRsZVBhdXNlRXZlbnQoKTsKKyAgICB2b2lkIGhhbmRsZVJlc3VtZUV2ZW50KCk7CisgICAgdm9p
ZCBoYW5kbGVTY3JvbGxFdmVudCgpOworICAgIHZvaWQgaGFuZGxlT25Mb2FkRXZlbnQoKTsKKyAg
ICB2b2lkIGhhbmRsZUZyZWVNZW1vcnlFdmVudCgpOworICAgIHZvaWQgaGFuZGxlRm9jdXNJbkV2
ZW50KCk7CisgICAgdm9pZCBoYW5kbGVGb2N1c091dEV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVC
YWNrZ3JvdW5kRXZlbnQoKTsKKyAgICB2b2lkIGhhbmRsZUZvcmVncm91bmRFdmVudCgpOworICAg
IHZvaWQgaGFuZGxlRnVsbFNjcmVlbkFsbG93ZWRFdmVudCgpOworICAgIHZvaWQgaGFuZGxlRnVs
bFNjcmVlbkV4aXRFdmVudCgpOworICAgIHZvaWQgaGFuZGxlSWRsZUV2ZW50KGJvb2wgZW50ZXJJ
ZGxlKTsKKyAgICB2b2lkIGhhbmRsZUFwcEFjdGl2YXRlZEV2ZW50KCk7CisgICAgdm9pZCBoYW5k
bGVBcHBEZWFjdGl2YXRlZEV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVBcHBTdGFuZGJ5RXZlbnQo
KTsKKworICAgIHZvaWQgaGFuZGxlT3JpZW50YXRpb25FdmVudChpbnQgYW5nbGUpOworICAgIHZv
aWQgaGFuZGxlU3dpcGVFdmVudCgpOworICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2
ZW50Kik7CisgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqKTsKKyAgICB2b2lk
IGhhbmRsZVNjcmVlblBvd2VyRXZlbnQoYm9vbCBwb3dlcmVkKTsKKworICAgIEludFJlY3QgY2Fs
Y3VsYXRlQ2xpcFJlY3QoKSBjb25zdDsKKworICAgIC8vIEEgcmVjdGFuZ2xlIHRoYXQgdGhlIHBs
dWdpbiBleHBlY3RzIHRvIGJlIGtlcHQgc2Nyb2xsZWQgaW50byB2aWV3LgorICAgIEludFJlY3Qg
ZW5zdXJlVmlzaWJsZVJlY3QoKTsKKyAgICBib29sIGRpc3BhdGNoRnVsbFNjcmVlbk5QRXZlbnQo
TlBFdmVudCYpOworCisgICAgIC8vIEFkZHMgdGhlIHdpbmRvd3MgdGhhdCB3ZXJlIGNyZWF0ZWQg
YnkgdGhpcyBwbHVnaW4gdG8gdGhlIHNwZWNpZmllZCAKKyAgICAgLy8gd2luZG93IGxpc3QuCisg
ICAgdm9pZCBnZXRXaW5kb3dJbmZvKFZlY3RvcjxQbHVnaW5XaW5kb3dJbmZvPiYgd2luZG93TGlz
dCk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBlbGVtZW50IHRoaXMgcGx1Z2luIGlzIGFzc29jaWF0
ZWQgd2l0aC4KKyAgICBFbGVtZW50KiBnZXRFbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9
CisgICAgUGx1Z2luVmlld1ByaXZhdGUqIGdldFByaXZhdGUoKSB7IHJldHVybiBtX3ByaXZhdGU7
IH0KKworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogbG9ja0Zyb250QnVmZmVy
Rm9yUmVhZCgpIGNvbnN0OworICAgIHZvaWQgdW5sb2NrRnJvbnRCdWZmZXIoKSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0QmFja2dyb3VuZFBsYXkoYm9vbCB2YWx1ZSk7CisjZW5kaWYKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIFBsdWdpblZpZXcoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRT
aXplJiwgUGx1Z2luUGFja2FnZSosIEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCkBAIC0zMjgsNyAr
Mzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgaGFuZGxlS2V5Ym9h
cmRFdmVudChLZXlib2FyZEV2ZW50Kik7CiAgICAgICAgIHZvaWQgaGFuZGxlTW91c2VFdmVudChN
b3VzZUV2ZW50Kik7Ci0jaWYgZGVmaW5lZChYUF9VTklYKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKKyNpZiBkZWZpbmVkKFhQX1VOSVgpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICAgICAgdm9pZCBoYW5kbGVGb2N1c0lu
RXZlbnQoKTsKICAgICAgICAgdm9pZCBoYW5kbGVGb2N1c091dEV2ZW50KCk7CiAjZW5kaWYKQEAg
LTQxMSw3ICs0ODEsNyBAQCBwcml2YXRlOgogICAgICAgICBQb2ludCBtb3VzZVBvc0ZvclBsdWdp
bihNb3VzZUV2ZW50KiBldmVudCA9IDApIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFhQ
X1VOSVgpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2lmIGRlZmluZWQoWFBfVU5J
WCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmICFQTEFURk9STShCTEFDS0JFUlJZ
KQogICAgICAgICBib29sIG1faGFzUGVuZGluZ0dlb21ldHJ5Q2hhbmdlOwogICAgICAgICBQaXht
YXAgbV9kcmF3YWJsZTsKICAgICAgICAgVmlzdWFsKiBtX3Zpc3VhbDsKQEAgLTQ1Miw2ICs1MjIs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtX2hhdmVDYWxsZWRTZXRXaW5kb3c7CiAKICAg
ICAgICAgc3RhdGljIFBsdWdpblZpZXcqIHNfY3VycmVudFBsdWdpblZpZXc7CisKKyNpZiBQTEFU
Rk9STShCTEFDS0JFUlJZKQorICAgICAgICBQbHVnaW5WaWV3UHJpdmF0ZSogbV9wcml2YXRlOwor
I2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136659</attachid>
            <date>2012-04-11 04:42:51 -0700</date>
            <delta_ts>2012-04-11 07:53:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83360-20120411194841.patch</filename>
            <type>text/plain</type>
            <size>19439</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU4NWFhNzMwYTE1ZDVk
MDFlZjQ3OTFjMjE4YTZlZjY4YmFmMGQ4YS4uOGI0Y2Y2NTg0OTQ2ZWQ0YjgwMjEwNjRlOGY1ZTFi
N2I4N2RkYmYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA0LTExICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxh
Y2tCZXJyeV0gVXBzdHJlYW1pbmcgQmxhY2tCZXJyeS1zcGVjaWZpYyBjaGFuZ2VzIHRvIFBsdWdp
blZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
MzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzciwgaW5pdGlhbCBjaGVja2luIG9mIEJsYWNrQmVycnkgcG9ydGluZyBvZiBQbHVn
aW5WaWV3LAorICAgICAgICB0byBoYW5kbGUgQmxhY2tCZXJyeS1zcGVjaWZpYyBldmVudHMsIGFu
ZCBCbGFja0JlcnJ5LXNwZWNpZmljIGxvYWRpbmcuCisKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdp
blZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpblZpZXc6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFVSTE5v
dGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKEdyYXBoaWNz
KToKKyAgICAgICAgKFBsdWdpbldpbmRvd0luZm8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0UHJpdmF0ZSk6CisgICAgICAg
ICogcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6aGFuZGxlRm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXc6OmhhbmRsZUZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
Vmlldzo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2lu
ZG93SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGxhdGZvcm1HZXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3kpOgor
CiAyMDEyLTA0LTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbVjhdIENhbGVuZGFyIFBpY2tlcjogQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGV4cG9zZSBQ
YWdlUG9wdXBDbGllbnQ6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgpIHRvIEphdmFTY3JpcHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDc0OWY2MDk3OWY3ZWU5YTk4OGE5
MzVhZWVjMTVhMzNhM2Y0NWNlYTkuLmQxOTZhM2JhNzdmMGVmYzNiYzk1MmZkYzA1MDJhYWYzMzdi
Y2Y3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMiw2ICsyLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHaXJpc2gg
UmFtYWtyaXNobmFuIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDEwICs2MiwyNiBAQAogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKworI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIldo
ZWVsRXZlbnQuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKy8vIFRo
aXMgaXMgZGVmaW5lZCBpbiBucGFwaS5oLCBidXQgc2hvdWxkbid0IGFwcGx5IHNpbmNlIHdlJ3Jl
IG5vdCByZWFsbHkgX1dJTjMyCisjdW5kZWYgWFBfV0lOCisjZW5kaWYKKwogI2lmIE9TKFdJTkRP
V1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2luY2x1ZGUgIlBsdWdpbk1lc3Nh
Z2VUaHJvdHRsZXJXaW4uaCIKICNlbmRpZgpAQCAtMTQ2LDcgKzE2Myw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAjaWYgT1MoV0lORE9XUykK
ICAgICAvLyBPbiBXaW5kb3dzIGFsd2F5cyBjYWxsIHBsdWdpbiB0byBjaGFuZ2UgZ2VvbWV0cnku
CiAgICAgc2V0TlBXaW5kb3dSZWN0KHJlY3QpOwotI2VsaWYgZGVmaW5lZChYUF9VTklYKQorI2Vs
aWYgZGVmaW5lZChYUF9VTklYKSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICAvLyBPbiBV
bml4LCBtdWx0aXBsZSBjYWxscyB0byBzZXROUFdpbmRvdygpIGluIHdpbmRvd2VkIG1vZGUgY2F1
c2VzIEZsYXNoIHRvIGNyYXNoCiAgICAgaWYgKG1fbW9kZSA9PSBOUF9GVUxMIHx8ICFtX2lzV2lu
ZG93ZWQpCiAgICAgICAgIHNldE5QV2luZG93UmVjdChyZWN0KTsKQEAgLTE2MCw4ICsxNzcsMTIg
QEAgdm9pZCBQbHVnaW5WaWV3OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAKIHZvaWQgUGx1Z2luVmll
dzo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIGlmICghbV9wbHVnaW4gfHwgbV9p
c1dpbmRvd2VkKQorICAgIGlmICghbV9wbHVnaW4pCisgICAgICAgIHJldHVybjsKKyNpZiAhUExB
VEZPUk0oQkxBQ0tCRVJSWSkgLy8gT24gQmxhY2tCZXJyeSwgZXZlbiB3aW5kb3dlZCBwbHVnaW5z
IHdhbnQgdG8gZ2V0IGV2ZW50cy4KKyAgICBpZiAobV9pc1dpbmRvd2VkKQogICAgICAgICByZXR1
cm47CisjZW5kaWYKIAogICAgIC8vIFByb3RlY3QgdGhlIHBsdWctaW4gZnJvbSBkZWxldGlvbiB3
aGlsZSBkaXNwYXRjaGluZyB0aGUgZXZlbnQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IHByb3Rl
Y3QodGhpcyk7CkBAIC0xNzIsNiArMTkzLDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRXZl
bnQoRXZlbnQqIGV2ZW50KQogICAgICAgICBoYW5kbGVLZXlib2FyZEV2ZW50KHN0YXRpY19jYXN0
PEtleWJvYXJkRXZlbnQqPihldmVudCkpOwogICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOyAvLyBXZSBkb24ndCBrbm93IGlmIHRoZSBwbHVnLWluIGhhcyBoYW5kbGVkIG1v
dXNlZG93biBldmVudCBieSBkaXNwbGF5aW5nIGEgY29udGV4dCBtZW51LCBzbyB3ZSBuZXZlciB3
YW50IFdlYktpdCB0byBzaG93IGEgZGVmYXVsdCBvbmUuCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJS
WSkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgZWxzZSBpZiAoZXZlbnQtPmlu
dGVyZmFjZU5hbWUoKSA9PSBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yV2hlZWxFdmVudCkKKyAg
ICAgICAgaGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxXaGVlbEV2ZW50Kj4oZXZlbnQpKTsK
KyAgICBlbHNlIGlmIChldmVudC0+aW50ZXJmYWNlTmFtZSgpID09IGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JUb3VjaEV2ZW50KQorICAgICAgICBoYW5kbGVUb3VjaEV2ZW50KHN0YXRpY19jYXN0
PFRvdWNoRXZlbnQqPihldmVudCkpOworI2VuZGlmCisKICNpZiBkZWZpbmVkKFhQX1VOSVgpICYm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmZvY3Vzb3V0RXZlbnQpCiAgICAgICAgIGhhbmRsZUZvY3VzT3V0RXZl
bnQoKTsKQEAgLTI2Miw2ICsyOTAsMTIgQEAgYm9vbCBQbHVnaW5WaWV3OjpzdGFydCgpCiAgICAg
ICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdChtX3BhcmVudEZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKICAgICAgICAgZnJhbWVMb2FkUmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobV91cmwpOworCisjaWYgUExBVEZPUk0oQkxB
Q0tCRVJSWSkKKyAgICAgICAgaWYgKCFTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVy
KG1fdXJsLCBtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCkpKQorICAgICAgICAg
ICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIobV9w
YXJlbnRGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSk7CisjZW5kaWYKKwogICAg
ICAgICBsb2FkKGZyYW1lTG9hZFJlcXVlc3QsIGZhbHNlLCAwKTsKICAgICB9CiAKQEAgLTQyMCw2
ICs0NTQsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0
KiByZXF1ZXN0KQogICAgIGlmICghbV9pc1N0YXJ0ZWQpCiAgICAgICAgIHJldHVybjsKIAorICAg
IC8vIERvbid0IGxldCBhIHBsdWdpbiBzdGFydCBhbnkgbG9hZHMgaWYgaXQgbm8gbG9uZ2VyIGhh
cyBhIHBhZ2UgYXNzb2NpYXRlZCB3aXRoIGl0LgorICAgIGlmICghbV9wYXJlbnRGcmFtZS0+cGFn
ZSgpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBkb24ndCBsZXQgYSBwbHVnaW4gc3RhcnQg
YW55IGxvYWRzIGlmIGl0IGlzIG5vIGxvbmdlciBwYXJ0IG9mIGEgZG9jdW1lbnQgdGhhdCBpcyBi
ZWluZyAKICAgICAvLyBkaXNwbGF5ZWQgdW5sZXNzIHRoZSBsb2FkcyBhcmUgaW4gdGhlIHNhbWUg
ZnJhbWUgYXMgdGhlIHBsdWdpbi4KICAgICBjb25zdCBTdHJpbmcmIHRhcmdldEZyYW1lTmFtZSA9
IHJlcXVlc3QtPmZyYW1lTG9hZFJlcXVlc3QoKS5mcmFtZU5hbWUoKTsKQEAgLTQ0Miw3ICs0ODAs
MTMgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1
ZXN0KQogICAgICAgICAgICAgLy8gUGx1Z2luVmlldywgc28gd2UgcHJvdGVjdCBpdC4gPHJkYXI6
Ly9wcm9ibGVtLzY5OTEyNTE+CiAgICAgICAgICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJvdGVj
dCh0aGlzKTsKIAorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0ID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJl
c291cmNlUmVxdWVzdCgpOworICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzUmVxdWVz
dGVkQnlQbHVnaW4odHJ1ZSk7CisgICAgICAgICAgICBtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS0+
bG9hZChyZXNvdXJjZVJlcXVlc3QsIHRhcmdldEZyYW1lTmFtZSwgZmFsc2UpOworI2Vsc2UKICAg
ICAgICAgICAgIG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT5sb2FkKHJlcXVlc3QtPmZyYW1lTG9h
ZFJlcXVlc3QoKS5yZXNvdXJjZVJlcXVlc3QoKSwgdGFyZ2V0RnJhbWVOYW1lLCBmYWxzZSk7Cisj
ZW5kaWYKIAogICAgICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS80ODA3NDY5PiBU
aGlzIHNob3VsZCBiZSBzZW50IHdoZW4gdGhlIGRvY3VtZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5n
CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+c2VuZE5vdGlmaWNhdGlvbigpKSB7CkBAIC01NjQs
NiArNjA4LDExIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VVJMTm90aWZ5KGNvbnN0IGNoYXIq
IHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3RpCiAgICAgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKICAgICBmcmFtZUxvYWRS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTChtYWtlVVJMKG1fcGFyZW50RnJhbWUtPmRv
Y3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKSk7CiAKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQor
ICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihmcmFtZUxvYWRSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5i
YXNlVVJMKCkpKQorICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNl
dEhUVFBSZWZlcnJlcihtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigp
KTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGxvYWQoZnJhbWVMb2FkUmVxdWVzdCwgdHJ1ZSwgbm90
aWZ5RGF0YSk7CiB9CiAKQEAgLTU3NSw2ICs2MjQsMTEgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpn
ZXRVUkwoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQpCiAgICAgZnJhbWVMb2Fk
UmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTChtYWtlVVJMKG1fcGFyZW50RnJh
bWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKSk7CiAKKyNpZiBQTEFURk9STShCTEFDS0JF
UlJZKQorICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihmcmFtZUxv
YWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBtX3BhcmVudEZyYW1lLT5kb2N1bWVu
dCgpLT5iYXNlVVJMKCkpKQorICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnNldEhUVFBSZWZlcnJlcihtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIGxvYWQoZnJhbWVMb2FkUmVxdWVzdCwgZmFs
c2UsIDApOwogfQogCkBAIC02NzQsNiArNzI4LDExIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6c2V0
VmFsdWUoTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQogICAgICAgICB9CiAgICAg
fQogI2VuZGlmIC8vIGRlZmluZWQoWFBfTUFDT1NYKQorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CisgICAgY2FzZSBOUFBWYmFja2dyb3VuZFBsYXlCb29sOgorICAgICAgICBzZXRCYWNrZ3JvdW5k
UGxheShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih2YWx1ZSkpOworICAgICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CisjZW5kaWYKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CkBAIC04NTYsNyArOTE1LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFt
ZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHAKICAg
ICAsIG1fY29udGV4dFJlZigwKQogICAgICwgbV9mYWtlV2luZG93KDApCiAjZW5kaWYKLSNpZiBk
ZWZpbmVkKFhQX1VOSVgpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorI2lmIGRlZmlu
ZWQoWFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmICFQTEFURk9STShC
TEFDS0JFUlJZKQogICAgICwgbV9oYXNQZW5kaW5nR2VvbWV0cnlDaGFuZ2UodHJ1ZSkKICAgICAs
IG1fZHJhd2FibGUoMCkKICAgICAsIG1fdmlzdWFsKDApCkBAIC04NzAsNiArOTI5LDkgQEAgUGx1
Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIFBsdWdpblBhY2thZ2UqIHAKICAgICAsIG1fbWFudWFsU3RyZWFtKDApCiAgICAgLCBtX2lz
SmF2YVNjcmlwdFBhdXNlZChmYWxzZSkKICAgICAsIG1faGF2ZUNhbGxlZFNldFdpbmRvdyhmYWxz
ZSkKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgICwgbV9wcml2YXRlKDApCisjZW5kaWYK
IHsKICAgICBpZiAoIW1fcGx1Z2luKSB7CiAgICAgICAgIG1fc3RhdHVzID0gUGx1Z2luU3RhdHVz
Q2FuTm90RmluZFBsdWdpbjsKQEAgLTEyMDQsNiArMTI2NiwxMSBAQCBOUEVycm9yIFBsdWdpblZp
ZXc6OmhhbmRsZVBvc3QoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQz
Ml90IGxlbgogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJv
ZHkoRm9ybURhdGE6OmNyZWF0ZShwb3N0RGF0YSwgcG9zdERhdGFMZW5ndGgpKTsKICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnNldEZyYW1lTmFtZSh0YXJnZXQpOwogCisjaWYgUExBVEZPUk0oQkxBQ0tC
RVJSWSkKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoZnJhbWVM
b2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgbV9wYXJlbnRGcmFtZS0+ZG9jdW1l
bnQoKS0+YmFzZVVSTCgpKSkKKyAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS5zZXRIVFRQUmVmZXJyZXIobV9wYXJlbnRGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKSk7CisjZW5kaWYKKwogICAgIHJldHVybiBsb2FkKGZyYW1lTG9hZFJlcXVlc3QsIHNl
bmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IDExMjg1MjJkMDIxZjgxYThiZjVmZGUxZGQ3NjFjMzYwZDQ4YzFmNTIuLmM5
MTZkMzc3OTRhZTE0NzNkNzM3YzA5NDA2NDE0N2ZlOTU1MTg2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdpcmlzaCBSYW1ha3Jpc2huYW4gPGdpcmlzaEBmb3J3YXJk
Ymlhcy5pbj4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDcsNiArNDgsMTYgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW50ZXJuYWwuaCIKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25h
bWVzcGFjZSBQbGF0Zm9ybSB7CituYW1lc3BhY2UgR3JhcGhpY3MgeworY2xhc3MgQnVmZmVyOwor
fQorfQorfQorI2VuZGlmCisKICNpZiBPUyhXSU5ET1dTKSAmJiAoUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKFdYKSkKIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIHR5cGVkZWYgSFdORCBQ
bGF0Zm9ybVBsdWdpbldpZGdldDsKQEAgLTY2LDcgKzc3LDE1IEBAIFFUX0JFR0lOX05BTUVTUEFD
RQogY2xhc3MgUVBhaW50ZXI7CiBRVF9FTkRfTkFNRVNQQUNFCiAjZW5kaWYKLSNpZiBQTEFURk9S
TShRVCkgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkgJiYgZGVmaW5lZChYUF9VTklYKQorCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJS
WSkKK3N0cnVjdCBQbHVnaW5XaW5kb3dJbmZvIHsKKyAgICB2b2lkKiB3aW5kb3dQdHI7CisgICAg
V2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZWN0OworfTsKKyNlbmRpZgorCisjaWYgKFBMQVRGT1JN
KFFUKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKSAmJiAoZGVmaW5lZChYUF9VTklYKSApKSB8fCBQTEFURk9STShCTEFDS0JFUlJZ
KQogI2lmbmRlZiBXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HX1BMVUdJTl9MQVlFUgog
I2RlZmluZSBXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HX1BMVUdJTl9MQVlFUiAxCiAj
ZW5kaWYKQEAgLTk4LDYgKzExNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
UGx1Z2luU3RyZWFtOwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgIGNsYXNzIFdoZWVsRXZl
bnQ7CisgICAgY2xhc3MgVG91Y2hFdmVudDsKKyAgICBjbGFzcyBQbHVnaW5WaWV3UHJpdmF0ZTsK
KyNlbmRpZgogCiAgICAgZW51bSBQbHVnaW5TdGF0dXMgewogICAgICAgICBQbHVnaW5TdGF0dXND
YW5Ob3RGaW5kUGx1Z2luLApAQCAtMjY0LDYgKzI4OCw1MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHNldElzUnVubmluZ1VuZGVyRFJUKGJvb2wgZmxhZykgeyBz
X2lzUnVubmluZ1VuZGVyRFJUID0gZmxhZzsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShCTEFD
S0JFUlJZKQorICAgIGZyaWVuZCBjbGFzcyBQbHVnaW5WaWV3UHJpdmF0ZTsKKworICAgIC8vIE1l
dGhvZHMgdG8gc2VuZCBldmVudHMgdG8gdGhlIHBsdWdpbgorICAgIHZvaWQgaGFuZGxlUGF1c2VF
dmVudCgpOworICAgIHZvaWQgaGFuZGxlUmVzdW1lRXZlbnQoKTsKKyAgICB2b2lkIGhhbmRsZVNj
cm9sbEV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVPbkxvYWRFdmVudCgpOworICAgIHZvaWQgaGFu
ZGxlRnJlZU1lbW9yeUV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVGb2N1c0luRXZlbnQoKTsKKyAg
ICB2b2lkIGhhbmRsZUZvY3VzT3V0RXZlbnQoKTsKKyAgICB2b2lkIGhhbmRsZUJhY2tncm91bmRF
dmVudCgpOworICAgIHZvaWQgaGFuZGxlRm9yZWdyb3VuZEV2ZW50KCk7CisgICAgdm9pZCBoYW5k
bGVGdWxsU2NyZWVuQWxsb3dlZEV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVGdWxsU2NyZWVuRXhp
dEV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVJZGxlRXZlbnQoYm9vbCBlbnRlcklkbGUpOworICAg
IHZvaWQgaGFuZGxlQXBwQWN0aXZhdGVkRXZlbnQoKTsKKyAgICB2b2lkIGhhbmRsZUFwcERlYWN0
aXZhdGVkRXZlbnQoKTsKKyAgICB2b2lkIGhhbmRsZUFwcFN0YW5kYnlFdmVudCgpOworCisgICAg
dm9pZCBoYW5kbGVPcmllbnRhdGlvbkV2ZW50KGludCBhbmdsZSk7CisgICAgdm9pZCBoYW5kbGVT
d2lwZUV2ZW50KCk7CisgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqKTsKKyAg
ICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopOworICAgIHZvaWQgaGFuZGxlU2Ny
ZWVuUG93ZXJFdmVudChib29sIHBvd2VyZWQpOworCisgICAgSW50UmVjdCBjYWxjdWxhdGVDbGlw
UmVjdCgpIGNvbnN0OworCisgICAgLy8gQSByZWN0YW5nbGUgdGhhdCB0aGUgcGx1Z2luIGV4cGVj
dHMgdG8gYmUga2VwdCBzY3JvbGxlZCBpbnRvIHZpZXcuCisgICAgSW50UmVjdCBlbnN1cmVWaXNp
YmxlUmVjdCgpOworICAgIGJvb2wgZGlzcGF0Y2hGdWxsU2NyZWVuTlBFdmVudChOUEV2ZW50Jik7
CisKKyAgICAgLy8gQWRkcyB0aGUgd2luZG93cyB0aGF0IHdlcmUgY3JlYXRlZCBieSB0aGlzIHBs
dWdpbiB0byB0aGUgc3BlY2lmaWVkIAorICAgICAvLyB3aW5kb3cgbGlzdC4KKyAgICB2b2lkIGdl
dFdpbmRvd0luZm8oVmVjdG9yPFBsdWdpbldpbmRvd0luZm8+JiB3aW5kb3dMaXN0KTsKKworICAg
IC8vIFJldHVybnMgdGhlIGVsZW1lbnQgdGhpcyBwbHVnaW4gaXMgYXNzb2NpYXRlZCB3aXRoLgor
ICAgIEVsZW1lbnQqIGdldEVsZW1lbnQoKSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKyAgICBQbHVn
aW5WaWV3UHJpdmF0ZSogZ2V0UHJpdmF0ZSgpIHsgcmV0dXJuIG1fcHJpdmF0ZTsgfQorCisgICAg
dm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBsb2NrRnJvbnRCdWZmZXJGb3JSZWFkKCkg
Y29uc3Q7CisgICAgdm9pZCB1bmxvY2tGcm9udEJ1ZmZlcigpIGNvbnN0OworCisgICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kUGxheShib29sIHZhbHVlKTsKKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBQbHVn
aW5QYWNrYWdlKiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CiAKQEAgLTMyOCw3ICszOTksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqKTsKICAgICAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQq
KTsKLSNpZiBkZWZpbmVkKFhQX1VOSVgpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQor
I2lmIGRlZmluZWQoWFBfVU5JWCkgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmICFQ
TEFURk9STShCTEFDS0JFUlJZKQogICAgICAgICB2b2lkIGhhbmRsZUZvY3VzSW5FdmVudCgpOwog
ICAgICAgICB2b2lkIGhhbmRsZUZvY3VzT3V0RXZlbnQoKTsKICNlbmRpZgpAQCAtNDExLDcgKzQ4
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFBvaW50IG1vdXNlUG9zRm9yUGx1Z2luKE1vdXNlRXZl
bnQqIGV2ZW50ID0gMCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoWFBfVU5JWCkgJiYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisjaWYgZGVmaW5lZChYUF9VTklYKSAmJiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgICAg
IGJvb2wgbV9oYXNQZW5kaW5nR2VvbWV0cnlDaGFuZ2U7CiAgICAgICAgIFBpeG1hcCBtX2RyYXdh
YmxlOwogICAgICAgICBWaXN1YWwqIG1fdmlzdWFsOwpAQCAtNDUyLDYgKzUyMywxMCBAQCBwcml2
YXRlOgogICAgICAgICBib29sIG1faGF2ZUNhbGxlZFNldFdpbmRvdzsKIAogICAgICAgICBzdGF0
aWMgUGx1Z2luVmlldyogc19jdXJyZW50UGx1Z2luVmlldzsKKworI2lmIFBMQVRGT1JNKEJMQUNL
QkVSUlkpCisgICAgICAgIFBsdWdpblZpZXdQcml2YXRlKiBtX3ByaXZhdGU7CisjZW5kaWYKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAppbmRleCBj
ZjkyYjNjZGVhZDI2NmY5MDM0ZGJlOTgzOGE2NDZjMmRhZTlmZDY3Li5iNmM1MDQ4NGQ2Y2EwNGYw
Zjg1ZWM3NDdiN2E4NGQ2MmNlNDVhNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL2JsYWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKQEAgLTU2Nyw3
ICs1NjcsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCog
ZXZlbnQpCiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3du
RXZlbnQpIHsKICAgICAgICAgbW91c2VFdmVudC50eXBlID0gTU9VU0VfQlVUVE9OX0RPV047Ci0g
ICAgICAgIHBhcmVudEZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUobm9kZSgpKTsKKyAgICAgICAgcGFyZW50RnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZShnZXRFbGVtZW50KCkpOwogICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCiAgICAgICAg
IG1vdXNlRXZlbnQudHlwZSA9IE1PVVNFX01PVElPTjsKICAgICBlbHNlIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KQpAQCAtNTk0LDEyICs1OTQsMTAgQEAg
dm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogCiB2
b2lkIFBsdWdpblZpZXc6OmhhbmRsZUZvY3VzSW5FdmVudCgpCiB7Ci0gICAgaWYgKCFtX3ByaXZh
dGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3ByaXZhdGUtPm1faXNGb2N1c2VkKQor
ICAgIGlmICghbV9wcml2YXRlIHx8IG1fcHJpdmF0ZS0+bV9pc0ZvY3VzZWQpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIFdpZGdldDo6c2V0Rm9jdXModHJ1ZSk7CiAgICAgbV9wcml2YXRlLT5tX2lz
Rm9jdXNlZCA9IHRydWU7CiAKICAgICBOUEV2ZW50IG5wRXZlbnQ7CkBAIC02MTAsMTIgKzYwOCwx
MCBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUZvY3VzSW5FdmVudCgpCiAKIHZvaWQgUGx1Z2lu
Vmlldzo6aGFuZGxlRm9jdXNPdXRFdmVudCgpCiB7Ci0gICAgaWYgKCFtX3ByaXZhdGUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmICghbV9wcml2YXRlLT5tX2lzRm9jdXNlZCkKKyAgICBpZiAo
IW1fcHJpdmF0ZSB8fCAhbV9wcml2YXRlLT5tX2lzRm9jdXNlZCkKICAgICAgICAgcmV0dXJuOwog
CisgICAgV2lkZ2V0OjpzZXRGb2N1cyhmYWxzZSk7CiAgICAgbV9wcml2YXRlLT5tX2lzRm9jdXNl
ZCA9IGZhbHNlOwogCiAgICAgTlBFdmVudCBucEV2ZW50OwpAQCAtODk3LDcgKzg5Myw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHBhcmVudFdpZGdldCkKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgICAgICAvLyBJZiB3ZSBoYWQgYSBo
b2xlIHB1bmNoIHJlY3Qgc2V0LCBjbGVhciBpdC4KICAgICAgICAgICAgIGlmIChtX3ByaXZhdGUt
Pm1fcGxhdGZvcm1MYXllciAmJiAhbV9wcml2YXRlLT5tX2hvbGVQdW5jaFJlY3QuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgIG1fcHJpdmF0ZS0+bV9wbGF0Zm9ybUxheWVyLT5zZXRIb2xlUHVu
Y2hSZWN0KEludFJlY3QoKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UGx1Z2luTGF5
ZXJXZWJLaXRUaHJlYWQqPihtX3ByaXZhdGUtPm1fcGxhdGZvcm1MYXllci5nZXQoKSktPnNldEhv
bGVQdW5jaFJlY3QoSW50UmVjdCgpKTsKICNlbmRpZgogICAgICAgICAgICAgZnJhbWVWaWV3LT5o
b3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5yZWdpc3RlclBsdWdpbih0aGlzLCBm
YWxzZSAvKnNob3VsZFJlZ2lzdGVyKi8pOwogICAgICAgICB9CkBAIC05NzMsMTEgKzk2OSw4IEBA
IHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCiAgICAgbV9ucFdpbmRvdy50
eXBlID0gTlBXaW5kb3dUeXBlRHJhd2FibGU7CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OldpbmRvdyogd2luZG93ID0gZnJhbWVWaWV3LT5ob3N0V2luZG93KCktPnBsYXRm
b3JtUGFnZUNsaWVudCgpLT5wbGF0Zm9ybVdpbmRvdygpOwotICAgIGlmICh3aW5kb3cpIHsKLSAg
ICAgICAgLy8gTWFrZSBhIGxvY2FsIGNvcHkgb2YgdGhlIHdpbmRvdyBncm91cCB0byBiZSBzdXJl
IGl0IGRvZXNuJ3QgZ28gb3V0IG9mIHNjb3BlIHdoaWxlIHRoZSB3c19pbmZvIHN0cnVjdCBleGlz
dHMKLSAgICAgICAgbV9wcml2YXRlLT5tX3dpbmRvd0dyb3VwID0gd2luZG93LT53aW5kb3dHcm91
cCgpOwotICAgICAgICAoKE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqKSBtX25wV2luZG93Lndz
X2luZm8pLT53aW5kb3dHcm91cCA9IG1fcHJpdmF0ZS0+bV93aW5kb3dHcm91cC5jX3N0cigpOwot
ICAgIH0KKyAgICBpZiAod2luZG93KQorICAgICAgICAoKE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1
Y3QqKW1fbnBXaW5kb3cud3NfaW5mbyktPndpbmRvd0dyb3VwID0gd2luZG93LT53aW5kb3dHcm91
cCgpOwogCiAgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcodGhpcyk7CiAgICAg
SlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwpAQCAtMTA5NiwxMiArMTA4OSw4IEBAIGJvb2wgUGx1Z2luVmlldzo6cGxhdGZv
cm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJl
CiAgICAgICAgIGlmIChmcmFtZVZpZXcpIHsKICAgICAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6V2luZG93ICp3aW5kb3cgPSBmcmFtZVZpZXctPmhvc3RXaW5kb3coKS0+
cGxhdGZvcm1QYWdlQ2xpZW50KCktPnBsYXRmb3JtV2luZG93KCk7CiAgICAgICAgICAgICBpZiAo
d2luZG93KSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIHJvb3QgZ3Jv
dXAgdG8gYmUgc3VyZSBpdCBkb2Vzbid0IGdvIG91dCBvZiBzY29wZS4KLSAgICAgICAgICAgICAg
ICBtX3ByaXZhdGUtPm1fcm9vdEdyb3VwID0gd2luZG93LT5yb290R3JvdXAoKTsKLQotICAgICAg
ICAgICAgICAgIC8vIFN0b3JlIGl0IGludG8gdmFsdWUgdGhyb3VnaCBhbiBpbmRpcmVjdCBwb2lu
dGVyLgogICAgICAgICAgICAgICAgIHZvaWQqKiB0ZW1wVmFsdWUgPSBzdGF0aWNfY2FzdDx2b2lk
Kio+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICAqdGVtcFZhbHVlID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29uc3RfY2FzdDxjaGFyKj4obV9wcml2YXRlLT5tX3Jvb3RHcm91cC5jX3N0cigp
KSk7CisgICAgICAgICAgICAgICAgKnRlbXBWYWx1ZSA9ICh2b2lkKil3aW5kb3ctPnJvb3RHcm91
cCgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCp0ZW1wVmFsdWUpIHsKICAgICAgICAgICAgICAg
ICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwpAQCAtMTExOCwxMiArMTEwNyw4IEBAIGJv
b2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9p
ZCogdmFsdWUsIE5QRXJyb3IqIHJlCiAgICAgICAgIGlmIChmcmFtZVZpZXcpIHsKICAgICAgICAg
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93KiB3aW5kb3cgPSBmcmFt
ZVZpZXctPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnBsYXRmb3JtV2luZG93
KCk7CiAgICAgICAgICAgICBpZiAod2luZG93KSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBh
IGNvcHkgb2YgdGhlIHdpbmRvdyBncm91cCB0byBiZSBzdXJlIGl0IGRvZXNuJ3QgZ28gb3V0IG9m
IHNjb3BlLgotICAgICAgICAgICAgICAgIG1fcHJpdmF0ZS0+bV93aW5kb3dHcm91cCA9IHdpbmRv
dy0+d2luZG93R3JvdXAoKTsKLQotICAgICAgICAgICAgICAgIC8vIFN0b3JlIGl0IGludG8gdmFs
dWUgdGhyb3VnaCBhbiBpbmRpcmVjdCBwb2ludGVyLgogICAgICAgICAgICAgICAgIHZvaWQqKiB0
ZW1wVmFsdWUgPSBzdGF0aWNfY2FzdDx2b2lkKio+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICAq
dGVtcFZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDxjaGFyKj4obV9w
cml2YXRlLT5tX3dpbmRvd0dyb3VwLmNfc3RyKCkpKTsKKyAgICAgICAgICAgICAgICAqdGVtcFZh
bHVlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDxjaGFyKj4od2luZG93LT53
aW5kb3dHcm91cCgpKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoKnRlbXBWYWx1ZSkgewogICAg
ICAgICAgICAgICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CkBAIC0xMjgzLDEwICsx
MjY4LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgIGlmICghbV9w
cml2YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyB3c19pbmZvLT53aW5kb3dHcm91cCBw
b2ludHMgdG8gbWVtb3J5IGluIG1fcHJpdmF0ZSwgd2hpY2ggaXMgYWJvdXQgdG8gZ28gYXdheSAo
dW5sZXNzIGl0IGlzIHVuaW5pdGlhbGl6ZWQgYXQgdGhpcyBwb2ludCkKLSAgICBpZiAobV9ucFdp
bmRvdy53c19pbmZvKQotICAgICAgICAoKE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QqKW1fbnBX
aW5kb3cud3NfaW5mbyktPndpbmRvd0dyb3VwID0gMDsKLQogICAgIC8vIFRoaXMgd2lsbCB1bmxv
Y2sgdGhlIGlkbGUgKGlmIHdlIGhhdmUgbG9ja2VkIGl0KS4KICAgICBtX3ByaXZhdGUtPnByZXZl
bnRJZGxlKGZhbHNlKTsKIApAQCAtMTMxNSwxNCArMTI5Niw2IEBAIHZvaWQgUGx1Z2luVmlldzo6
cGxhdGZvcm1EZXN0cm95KCkKICAgICBtX3ByaXZhdGUgPSAwOwogfQogCi12b2lkIFBsdWdpblZp
ZXc6OmhhbHQoKQotewotfQotCi12b2lkIFBsdWdpblZpZXc6OnJlc3RhcnQoKQotewotfQotCiB2
b2lkIFBsdWdpblZpZXc6OmdldFdpbmRvd0luZm8oVmVjdG9yPFBsdWdpbldpbmRvd0luZm8+JiB3
aW5kb3dMaXN0KQogewogICAgIGlmICghbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmdldHZhbHVl
KQo=
</data>
<flag name="review"
          id="141538"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
      

    </bug>

</bugzilla>