<?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>49830</bug_id>
          
          <creation_ts>2010-11-19 14:03:00 -0800</creation_ts>
          <short_desc>WebKit2: Add Trackpoint driver hack to support IBM trackpads</short_desc>
          <delta_ts>2011-03-24 18:15:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Brian Weinstein">bweinstein</assigned_to>
          <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311680</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-19 14:03:00 -0800</bug_when>
    <thetext>We need to add the Trackpoint driver hack to support IBM trackpads that we had in WebKit1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314464</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-29 09:29:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/8705951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372989</commentid>
    <comment_count>2</comment_count>
      <attachid>86809</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-24 12:30:39 -0700</bug_when>
    <thetext>Created attachment 86809
[PATCH] Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372999</commentid>
    <comment_count>3</comment_count>
      <attachid>86809</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 12:37:47 -0700</bug_when>
    <thetext>Comment on attachment 86809
[PATCH] Fix

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

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:294
&gt; +        // trackpoint scrollbars, so the WebView will receive WM_VSCROLl and WM_HSCROLL messages.

They aren&apos;t &quot;trackpoint scrollbars&quot;, they&apos;re just normal Windows scrollbars.

WM_VSCROLl should be WM_VSCROLL.

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:742
&gt; +    const TCHAR trackPointKeys[][50] = { TEXT(&quot;Software\\Lenovo\\TrackPoint&quot;),
&gt; +        TEXT(&quot;Software\\Lenovo\\UltraNav&quot;),
&gt; +        TEXT(&quot;Software\\Alps\\Apoint\\TrackPoint&quot;),
&gt; +        TEXT(&quot;Software\\Synaptics\\SynTPEnh\\UltraNavUSB&quot;),
&gt; +        TEXT(&quot;Software\\Synaptics\\SynTPEnh\\UltraNavPS2&quot;) };

I&apos;d put the first key on its own line, and put the closing brace and semicolon on their own line.

I think a better type for trackPointKeys would be: const wchar_t* trackPointKeys[].

You should use L instead of TEXT().

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:744
&gt; +    for (int i = 0; i &lt; 5; ++i) {

WTF_ARRAY_LENGTH

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:746
&gt; +        int readKeyResult = ::RegOpenKeyEx(HKEY_CURRENT_USER, trackPointKeys[i], 0, KEY_READ, &amp;trackPointKey);

You should use ::RegOpenKeyExW.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:336
&gt; +void WebPage::scrollBy(uint32_t scrollDirection, uint32_t scrollGranularity)
&gt; +{
&gt; +    scroll(m_page.get(), static_cast&lt;ScrollDirection&gt;(scrollDirection), static_cast&lt;ScrollGranularity&gt;(scrollGranularity));
&gt; +}

Why is this code duplicated in WebPageMac and WebPageWin? Just put it in WebPage.cpp.

We should probably check that the uint32_ts we get are in the correct range. You could use helper functions to do that (like toScrollDirection and toScrollGranularity).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373001</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-24 12:42:38 -0700</bug_when>
    <thetext>Attachment 86809 did not build on qt:
Build output: http://queues.webkit.org/results/8235541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373048</commentid>
    <comment_count>5</comment_count>
      <attachid>86821</attachid>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-24 13:35:27 -0700</bug_when>
    <thetext>Created attachment 86821
[PATCH] Fix v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373049</commentid>
    <comment_count>6</comment_count>
      <attachid>86821</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-24 13:38:00 -0700</bug_when>
    <thetext>Comment on attachment 86821
[PATCH] Fix v2

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

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:294
&gt; +        // scrollbars, so the WebView will receive WM_VSCROLl and WM_HSCROLL messages.

WM_VSCROLl should be WM_VSCROLL.

&gt; Source/WebKit2/UIProcess/win/WebView.cpp:746
&gt; +    for (int i = 0; i &lt; WTF_ARRAY_LENGTH(trackPointKeys); ++i) {

i should be a size_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373053</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-24 13:48:22 -0700</bug_when>
    <thetext>Landed in r81895.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373228</commentid>
    <comment_count>8</comment_count>
      <attachid>86809</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-24 17:44:50 -0700</bug_when>
    <thetext>Comment on attachment 86809
[PATCH] Fix

This breaks the Qt build by adding scrollBy but not implementing it for Qt. Probably same for GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373240</commentid>
    <comment_count>9</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-03-24 18:15:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 86809 [details])
&gt; This breaks the Qt build by adding scrollBy but not implementing it for Qt. Probably same for GTK.

The second patch I uploaded and landed put scrollBy in a cross-platform location and seemed to build fine on Qt. Thanks for catching that though!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86809</attachid>
            <date>2011-03-24 12:30:39 -0700</date>
            <delta_ts>2011-03-24 17:44:50 -0700</delta_ts>
            <desc>[PATCH] Fix</desc>
            <filename>scroll_by_message.patch</filename>
            <type>text/plain</type>
            <size>11940</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxODg0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDMtMjQgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6IEFkZCBUcmFja3BvaW50IGRyaXZlciBo
YWNrIHRvIHN1cHBvcnQgSUJNIHRyYWNrcGFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk4MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3MDU5
NTE+CisKKyAgICAgICAgQ29weSBjb2RlIGZyb20gV2ViS2l0MSB0byBXZWJLaXQyIHRvIGhhbmRs
ZSBpbml0aWFsaXppbmcgZmFrZSBzY3JvbGxiYXJzIHNvIAorICAgICAgICBJQk0gbWFjaGluZXMg
d2l0aCBhIHRyYWNrcGFkIHNlbmQgdXMgV01fVlNDUk9MTCBhbmQgV01fSFNDUk9MTCBtZXNzYWdl
cy4KKworICAgICAgICBMaXN0ZW4gZm9yIHRoZSBXTV9WU0NST0xMIGFuZCBXTV9IU0NST0xMIG1l
c3NhZ2VzLCBhbmQgdHVybiB0aGUgdmFsdWVzIGludG8KKyAgICAgICAgU2Nyb2xsRGlyZWN0aW9u
IGFuZCBTY3JvbGxHcmFudWxhcml0eSwgYW5kIHNlbmQgYSBzY3JvbGwgY29tbWFuZCB0byB0aGUK
KyAgICAgICAgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbEJ5KTogU2VuZCBhIG1l
c3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnduZFByb2MpOiBBZGQgV01fVlNDUk9MTCBhbmQgV01fSFNDUk9MTCBtZXNz
YWdlIGhhbmRsaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppbml0aWFsaXplKTogQ2Fs
bCBzaG91bGRJbml0aWFsaXplVHJhY2tQb2ludEhhY2suCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6Om9uSG9yaXpvbnRhbFNjcm9sbCk6IFR1cm4gd1BhcmFtIGludG8gYSBTY3JvbGxEaXJlY3Rp
b24gYW5kIFNjcm9sbEdyYW51bGFyaXR5LiAKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6b25W
ZXJ0aWNhbFNjcm9sbCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzaG91bGRJ
bml0aWFsaXplVHJhY2tQb2ludEhhY2spOiBDaGVjayB0aGUgcmVnaXN0cnkgZm9yIGtleXMgdGhh
dCBpbmRpY2F0ZQorICAgICAgICAgICAgdGhlIG1hY2hpbmUgaGFzIGEgSUJNIFRyYWNrcG9pbnQg
ZHJpdmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBhIG5ldyBzY3JvbGxCeSBtZXNzYWdlLiAKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNjcm9sbEJ5KTogQ2FsbCB0aGUgaW5saW5lIHNjb2xsIG1ldGhvZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzY3JvbGxCeSk6IERpdHRvLgorCiAyMDExLTAzLTI0ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biA4MTg3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MzksNiArODM5LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVUb3VjaEV2ZW50KGNvbnMKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xs
QnkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxh
cml0eSksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA4MTg3OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVUlDbGllbnQuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTI3Nyw2ICsyNzgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZl
bnQmKTsKICNlbmRpZgogCisgICAgdm9pZCBzY3JvbGxCeShXZWJDb3JlOjpTY3JvbGxEaXJlY3Rp
b24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKKwogICAgIFN0cmluZyBwYWdlVGl0bGUo
KSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHRvb2xUaXAoKSBjb25zdCB7IHJldHVybiBtX3Rv
b2xUaXA7IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3Bw
CShyZXZpc2lvbiA4MTg3OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsMTIgQEAgTFJFU1VMVCBXZWJWaWV3
Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVAogICAgIGNhc2UgV01fVklTVEFfTU9VU0VIV0hFRUw6
CiAgICAgICAgIGxSZXN1bHQgPSBvbldoZWVsRXZlbnQoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBs
UGFyYW0sIGhhbmRsZWQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX0hTQ1JPTEw6Cisg
ICAgICAgIGxSZXN1bHQgPSBvbkhvcml6b250YWxTY3JvbGwoaFduZCwgbWVzc2FnZSwgd1BhcmFt
LCBsUGFyYW0sIGhhbmRsZWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdNX1ZTQ1JPTEw6
CisgICAgICAgIGxSZXN1bHQgPSBvblZlcnRpY2FsU2Nyb2xsKGhXbmQsIG1lc3NhZ2UsIHdQYXJh
bSwgbFBhcmFtLCBoYW5kbGVkKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXTV9TWVNLRVlE
T1dOOgogICAgIGNhc2UgV01fS0VZRE9XTjoKICAgICBjYXNlIFdNX1NZU0NIQVI6CkBAIC0yODIs
NiArMjg4LDE1IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIHZvaWQgV2ViVmlldzo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgOjpSZWdpc3RlckRyYWdEcm9wKG1fd2luZG93LCB0aGlzKTsKKworICAgIGlm
IChzaG91bGRJbml0aWFsaXplVHJhY2tQb2ludEhhY2soKSkgeworICAgICAgICAvLyBJZiB3ZSBk
ZXRlY3RlZCBhIHJlZ2lzdHJ5IGtleSBiZWxvbmdpbmcgdG8gYSBUcmFja1BvaW50IGRyaXZlciwg
dGhlbiBjcmVhdGUgZmFrZQorICAgICAgICAvLyB0cmFja3BvaW50IHNjcm9sbGJhcnMsIHNvIHRo
ZSBXZWJWaWV3IHdpbGwgcmVjZWl2ZSBXTV9WU0NST0xsIGFuZCBXTV9IU0NST0xMIG1lc3NhZ2Vz
LgorICAgICAgICAvLyBXZSBjcmVhdGUgYW4gaW52aXNpYmxlIHZlcnRpY2FsIHNjcm9sbGJhciBh
bmQgYW4gaW52aXNpYmxlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRvIGFsbG93CisgICAgICAgIC8v
IGZvciByZWNlaXZpbmcgYm90aCB0eXBlcyBvZiBtZXNzYWdlcy4KKyAgICAgICAgOjpDcmVhdGVX
aW5kb3coVEVYVCgiU0NST0xMQkFSIiksIFRFWFQoIkZBS0VUUkFDS1BPSU5USFNDUk9MTEJBUiIp
LCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBTQlNfSE9SWiwgMCwgMCwgMCwgMCwgbV93aW5kb3cs
IDAsIGluc3RhbmNlSGFuZGxlKCksIDApOworICAgICAgICA6OkNyZWF0ZVdpbmRvdyhURVhUKCJT
Q1JPTExCQVIiKSwgVEVYVCgiRkFLRVRSQUNLUE9JTlRWU0NST0xMQkFSIiksIFdTX0NISUxEIHwg
V1NfVklTSUJMRSB8IFNCU19WRVJULCAwLCAwLCAwLCAwLCBtX3dpbmRvdywgMCwgaW5zdGFuY2VI
YW5kbGUoKSwgMCk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXc6OmluaXRpYWxpemVVbmRvQ2xp
ZW50KGNvbnN0IFdLVmlld1VuZG9DbGllbnQqIGNsaWVudCkKQEAgLTQwMSw2ICs0MTYsNzAgQEAg
TFJFU1VMVCBXZWJWaWV3OjpvbldoZWVsRXZlbnQoSFdORCBoV25kLAogICAgIHJldHVybiAwOwog
fQogCitMUkVTVUxUIFdlYlZpZXc6Om9uSG9yaXpvbnRhbFNjcm9sbChIV05EIGhXbmQsIFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYgaGFuZGxlZCkKK3sK
KyAgICBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uOworICAgIFNjcm9sbEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5OworICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKKyAgICBjYXNlIFNCX0xJ
TkVMRUZUOgorICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5TGluZTsKKyAgICAgICAgZGly
ZWN0aW9uID0gU2Nyb2xsTGVmdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTQl9MSU5FUklH
SFQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlMaW5lOworICAgICAgICBkaXJlY3Rp
b24gPSBTY3JvbGxSaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTQl9QQUdFTEVGVDoK
KyAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeURvY3VtZW50OworICAgICAgICBkaXJlY3Rp
b24gPSBTY3JvbGxMZWZ0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNCX1BBR0VSSUdIVDoK
KyAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeURvY3VtZW50OworICAgICAgICBkaXJlY3Rp
b24gPSBTY3JvbGxSaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
aGFuZGxlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtX3BhZ2Ut
PnNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworCisgICAgaGFuZGxlZCA9IHRydWU7
CisgICAgcmV0dXJuIDA7Cit9CisKK0xSRVNVTFQgV2ViVmlldzo6b25WZXJ0aWNhbFNjcm9sbChI
V05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9v
bCYgaGFuZGxlZCkKK3sKKyAgICBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uOworICAgIFNjcm9s
bEdyYW51bGFyaXR5IGdyYW51bGFyaXR5OworICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsK
KyAgICBjYXNlIFNCX0xJTkVET1dOOgorICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5TGlu
ZTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2Nyb2xsRG93bjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTQl9MSU5FVVA6CisgICAgICAgIGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlMaW5lOworICAg
ICAgICBkaXJlY3Rpb24gPSBTY3JvbGxVcDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTQl9Q
QUdFRE9XTjoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeURvY3VtZW50OworICAgICAg
ICBkaXJlY3Rpb24gPSBTY3JvbGxEb3duOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNCX1BB
R0VVUDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeURvY3VtZW50OworICAgICAgICBk
aXJlY3Rpb24gPSBTY3JvbGxVcDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgaGFuZGxlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtX3Bh
Z2UtPnNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworCisgICAgaGFuZGxlZCA9IHRy
dWU7CisgICAgcmV0dXJuIDA7Cit9CisKIExSRVNVTFQgV2ViVmlldzo6b25LZXlFdmVudChIV05E
IGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYg
aGFuZGxlZCkKIHsKICAgICBtX3BhZ2UtPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudChoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSkpOwpAQCAtNjQ3LDYgKzcy
NiwzNCBAQCB2b2lkIFdlYlZpZXc6OnN0b3BUcmFja2luZ01vdXNlTGVhdmUoKQogICAgIDo6VHJh
Y2tNb3VzZUV2ZW50KCZ0cmFja01vdXNlRXZlbnQpOwogfQogCitib29sIFdlYlZpZXc6OnNob3Vs
ZEluaXRpYWxpemVUcmFja1BvaW50SGFjaygpCit7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ3Jl
YXRlU2Nyb2xsYmFyczsKKyAgICBzdGF0aWMgYm9vbCBoYXNSdW5UcmFja1BvaW50Q2hlY2s7CisK
KyAgICBpZiAoaGFzUnVuVHJhY2tQb2ludENoZWNrKQorICAgICAgICByZXR1cm4gc2hvdWxkQ3Jl
YXRlU2Nyb2xsYmFyczsKKworICAgIGhhc1J1blRyYWNrUG9pbnRDaGVjayA9IHRydWU7CisgICAg
Y29uc3QgVENIQVIgdHJhY2tQb2ludEtleXNbXVs1MF0gPSB7IFRFWFQoIlNvZnR3YXJlXFxMZW5v
dm9cXFRyYWNrUG9pbnQiKSwKKyAgICAgICAgVEVYVCgiU29mdHdhcmVcXExlbm92b1xcVWx0cmFO
YXYiKSwKKyAgICAgICAgVEVYVCgiU29mdHdhcmVcXEFscHNcXEFwb2ludFxcVHJhY2tQb2ludCIp
LAorICAgICAgICBURVhUKCJTb2Z0d2FyZVxcU3luYXB0aWNzXFxTeW5UUEVuaFxcVWx0cmFOYXZV
U0IiKSwKKyAgICAgICAgVEVYVCgiU29mdHdhcmVcXFN5bmFwdGljc1xcU3luVFBFbmhcXFVsdHJh
TmF2UFMyIikgfTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAg
IEhLRVkgdHJhY2tQb2ludEtleTsKKyAgICAgICAgaW50IHJlYWRLZXlSZXN1bHQgPSA6OlJlZ09w
ZW5LZXlFeChIS0VZX0NVUlJFTlRfVVNFUiwgdHJhY2tQb2ludEtleXNbaV0sIDAsIEtFWV9SRUFE
LCAmdHJhY2tQb2ludEtleSk7CisgICAgICAgIDo6UmVnQ2xvc2VLZXkodHJhY2tQb2ludEtleSk7
CisgICAgICAgIGlmIChyZWFkS2V5UmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAg
ICAgIHNob3VsZENyZWF0ZVNjcm9sbGJhcnMgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHNo
b3VsZENyZWF0ZVNjcm9sbGJhcnM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc2hv
dWxkQ3JlYXRlU2Nyb2xsYmFyczsKK30KKwogdm9pZCBXZWJWaWV3OjpjbG9zZSgpCiB7CiAgICAg
bV91bmRvQ2xpZW50LmluaXRpYWxpemUoMCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuaAkocmV2aXNpb24gODE4NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsOCBAQCBwcml2YXRl
OgogCiAgICAgTFJFU1VMVCBvbk1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKICAgICBMUkVTVUxUIG9uV2hlZWxFdmVudChI
V05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwor
ICAgIExSRVNVTFQgb25Ib3Jpem9udGFsU2Nyb2xsKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuZGxlZCk7CisgICAgTFJFU1VMVCBvblZlcnRpY2FsU2Ny
b2xsKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuZGxl
ZCk7CiAgICAgTFJFU1VMVCBvbktleUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0sIExQQVJBTSwgYm9vbCYgaGFuZGxlZCk7CiAgICAgTFJFU1VMVCBvblBhaW50RXZlbnQoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKICAg
ICBMUkVTVUxUIG9uUHJpbnRDbGllbnRFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BB
UkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwpAQCAtMTI5LDYgKzEzMSw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdGFydFRyYWNraW5nTW91c2VMZWF2ZSgpOwogICAgIHZvaWQgc3RvcFRyYWNr
aW5nTW91c2VMZWF2ZSgpOwogCisgICAgYm9vbCBzaG91bGRJbml0aWFsaXplVHJhY2tQb2ludEhh
Y2soKTsKKwogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIEhDVVJTT1IgY3Vyc29yVG9TaG93KCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDgxODc5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CiAKKyAgICB2b2lkIHNjcm9sbEJ5KHVpbnQz
Ml90IHNjcm9sbERpcmVjdGlvbiwgdWludDMyX3Qgc2Nyb2xsR3JhbnVsYXJpdHkpOworCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gODE4NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBUb3VjaEV2ZW50KFdlYktpdDo6
V2ViVG91Y2hFdmVudCBldmVudCkKICNlbmRpZgogCisgICAgU2Nyb2xsQnkodWludDMyX3Qgc2Ny
b2xsRGlyZWN0aW9uLCB1aW50MzJfdCBzY3JvbGxHcmFudWxhcml0eSkKKwogICAgIEdvQmFjayh1
aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICBHb0ZvcndhcmQodWludDY0X3QgYmFja0Zv
cndhcmRJdGVtSUQsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpCiAgICAgR29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2Fy
ZEl0ZW1JRCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDgxODc5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzAsNiArMzMwLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2dpY2FsU2Nyb2xsKFBhZ2UqIHAK
ICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2Nyb2xsQnkodWludDMyX3Qgc2Nyb2xsRGlyZWN0aW9u
LCB1aW50MzJfdCBzY3JvbGxHcmFudWxhcml0eSkKK3sKKyAgICBzY3JvbGwobV9wYWdlLmdldCgp
LCBzdGF0aWNfY2FzdDxTY3JvbGxEaXJlY3Rpb24+KHNjcm9sbERpcmVjdGlvbiksIHN0YXRpY19j
YXN0PFNjcm9sbEdyYW51bGFyaXR5PihzY3JvbGxHcmFudWxhcml0eSkpOworfQorCiBib29sIFdl
YlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogewogICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSAh
PSBXZWJFdmVudDo6S2V5RG93bikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAkocmV2aXNpb24gODE4NzkpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2dpY2Fs
U2Nyb2xsKFBhZ2UqIHAKICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0
aW9uLCBncmFudWxhcml0eSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2Nyb2xsQnkodWludDMyX3Qg
c2Nyb2xsRGlyZWN0aW9uLCB1aW50MzJfdCBzY3JvbGxHcmFudWxhcml0eSkKK3sKKyAgICBzY3Jv
bGwobV9wYWdlLmdldCgpLCBzdGF0aWNfY2FzdDxTY3JvbGxEaXJlY3Rpb24+KHNjcm9sbERpcmVj
dGlvbiksIHN0YXRpY19jYXN0PFNjcm9sbEdyYW51bGFyaXR5PihzY3JvbGxHcmFudWxhcml0eSkp
OworfQorCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogewogICAgIGlmIChrZXlib2Fy
ZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93biAmJiBrZXlib2FyZEV2ZW50LnR5cGUo
KSAhPSBXZWJFdmVudDo6UmF3S2V5RG93bikK
</data>
<flag name="review"
          id="79160"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86821</attachid>
            <date>2011-03-24 13:35:27 -0700</date>
            <delta_ts>2011-03-24 13:38:00 -0700</delta_ts>
            <desc>[PATCH] Fix v2</desc>
            <filename>scroll_by_message.patch</filename>
            <type>text/plain</type>
            <size>14304</size>
            <attacher name="Brian Weinstein">bweinstein</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxODg0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDMtMjQgIEJyaWFuIFdl
aW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6IEFkZCBUcmFja3BvaW50IGRyaXZlciBo
YWNrIHRvIHN1cHBvcnQgSUJNIHRyYWNrcGFkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk4MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3MDU5
NTE+CisKKyAgICAgICAgQ29weSBjb2RlIGZyb20gV2ViS2l0MSB0byBXZWJLaXQyIHRvIGhhbmRs
ZSBpbml0aWFsaXppbmcgZmFrZSBzY3JvbGxiYXJzIHNvIAorICAgICAgICBJQk0gbWFjaGluZXMg
d2l0aCBhIHRyYWNrcGFkIHNlbmQgdXMgV01fVlNDUk9MTCBhbmQgV01fSFNDUk9MTCBtZXNzYWdl
cy4KKworICAgICAgICBMaXN0ZW4gZm9yIHRoZSBXTV9WU0NST0xMIGFuZCBXTV9IU0NST0xMIG1l
c3NhZ2VzLCBhbmQgdHVybiB0aGUgdmFsdWVzIGludG8KKyAgICAgICAgU2Nyb2xsRGlyZWN0aW9u
IGFuZCBTY3JvbGxHcmFudWxhcml0eSwgYW5kIHNlbmQgYSBzY3JvbGwgY29tbWFuZCB0byB0aGUK
KyAgICAgICAgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbEJ5KTogU2VuZCBhIG1l
c3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnduZFByb2MpOiBBZGQgV01fVlNDUk9MTCBhbmQgV01fSFNDUk9MTCBtZXNz
YWdlIGhhbmRsaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppbml0aWFsaXplKTogQ2Fs
bCBzaG91bGRJbml0aWFsaXplVHJhY2tQb2ludEhhY2suCisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6Om9uSG9yaXpvbnRhbFNjcm9sbCk6IFR1cm4gd1BhcmFtIGludG8gYSBTY3JvbGxEaXJlY3Rp
b24gYW5kIFNjcm9sbEdyYW51bGFyaXR5LiAKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6b25W
ZXJ0aWNhbFNjcm9sbCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzaG91bGRJ
bml0aWFsaXplVHJhY2tQb2ludEhhY2spOiBDaGVjayB0aGUgcmVnaXN0cnkgZm9yIGtleXMgdGhh
dCBpbmRpY2F0ZQorICAgICAgICAgICAgdGhlIG1hY2hpbmUgaGFzIGEgSUJNIFRyYWNrcG9pbnQg
ZHJpdmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2Nyb2xsQnkpOiBDYWxsIHNjcm9sbCBtZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNjcm9sbCk6IE1vdmVkIGZyb20gV2ViUGFnZU1hYyBhbmQgV2ViUGFnZVdpbi4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9naWNhbFNjcm9sbCk6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46IEFkZCBhIG5ldyBzY3JvbGxCeSBtZXNzYWdlLiAKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06IFJlbW92ZSBzY3JvbGwgYW5k
IGxvZ2ljYWxTY3JvbGwsIHRoZXkgYXJlIG5vdyBpbiBXZWJQYWdlLmNwcC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwOiBEaXR0by4KKwogMjAxMS0wMy0y
NCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gODE4NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM5LDYgKzgzOSwxNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJv
eHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlv
biwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkqIGZy
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGlmICghaXNWYWxpZCgpKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gODE4NzkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0y
NzcsNiArMjc4LDggQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlVG91Y2hFdmVudChjb25zdCBX
ZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2Nyb2xsQnkoV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CisKICAgICBTdHJpbmcg
cGFnZVRpdGxlKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB0b29sVGlwKCkgY29uc3QgeyBy
ZXR1cm4gbV90b29sVGlwOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gODE4NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDEyIEBAIExSRVNV
TFQgV2ViVmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQKICAgICBjYXNlIFdNX1ZJU1RBX01P
VVNFSFdIRUVMOgogICAgICAgICBsUmVzdWx0ID0gb25XaGVlbEV2ZW50KGhXbmQsIG1lc3NhZ2Us
IHdQYXJhbSwgbFBhcmFtLCBoYW5kbGVkKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9I
U0NST0xMOgorICAgICAgICBsUmVzdWx0ID0gb25Ib3Jpem9udGFsU2Nyb2xsKGhXbmQsIG1lc3Nh
Z2UsIHdQYXJhbSwgbFBhcmFtLCBoYW5kbGVkKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
TV9WU0NST0xMOgorICAgICAgICBsUmVzdWx0ID0gb25WZXJ0aWNhbFNjcm9sbChoV25kLCBtZXNz
YWdlLCB3UGFyYW0sIGxQYXJhbSwgaGFuZGxlZCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V01fU1lTS0VZRE9XTjoKICAgICBjYXNlIFdNX0tFWURPV046CiAgICAgY2FzZSBXTV9TWVNDSEFS
OgpAQCAtMjgyLDYgKzI4OCwxNSBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiB2b2lkIFdlYlZpZXc6
OmluaXRpYWxpemUoKQogewogICAgIDo6UmVnaXN0ZXJEcmFnRHJvcChtX3dpbmRvdywgdGhpcyk7
CisKKyAgICBpZiAoc2hvdWxkSW5pdGlhbGl6ZVRyYWNrUG9pbnRIYWNrKCkpIHsKKyAgICAgICAg
Ly8gSWYgd2UgZGV0ZWN0ZWQgYSByZWdpc3RyeSBrZXkgYmVsb25naW5nIHRvIGEgVHJhY2tQb2lu
dCBkcml2ZXIsIHRoZW4gY3JlYXRlIGZha2UKKyAgICAgICAgLy8gc2Nyb2xsYmFycywgc28gdGhl
IFdlYlZpZXcgd2lsbCByZWNlaXZlIFdNX1ZTQ1JPTGwgYW5kIFdNX0hTQ1JPTEwgbWVzc2FnZXMu
CisgICAgICAgIC8vIFdlIGNyZWF0ZSBhbiBpbnZpc2libGUgdmVydGljYWwgc2Nyb2xsYmFyIGFu
ZCBhbiBpbnZpc2libGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgdG8gYWxsb3cKKyAgICAgICAgLy8g
Zm9yIHJlY2VpdmluZyBib3RoIHR5cGVzIG9mIG1lc3NhZ2VzLgorICAgICAgICA6OkNyZWF0ZVdp
bmRvdyhURVhUKCJTQ1JPTExCQVIiKSwgVEVYVCgiRkFLRVRSQUNLUE9JTlRIU0NST0xMQkFSIiks
IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFNCU19IT1JaLCAwLCAwLCAwLCAwLCBtX3dpbmRvdywg
MCwgaW5zdGFuY2VIYW5kbGUoKSwgMCk7CisgICAgICAgIDo6Q3JlYXRlV2luZG93KFRFWFQoIlND
Uk9MTEJBUiIpLCBURVhUKCJGQUtFVFJBQ0tQT0lOVFZTQ1JPTExCQVIiKSwgV1NfQ0hJTEQgfCBX
U19WSVNJQkxFIHwgU0JTX1ZFUlQsIDAsIDAsIDAsIDAsIG1fd2luZG93LCAwLCBpbnN0YW5jZUhh
bmRsZSgpLCAwKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmlldzo6aW5pdGlhbGl6ZVVuZG9DbGll
bnQoY29uc3QgV0tWaWV3VW5kb0NsaWVudCogY2xpZW50KQpAQCAtNDAxLDYgKzQxNiw3MCBAQCBM
UkVTVUxUIFdlYlZpZXc6Om9uV2hlZWxFdmVudChIV05EIGhXbmQsCiAgICAgcmV0dXJuIDA7CiB9
CiAKK0xSRVNVTFQgV2ViVmlldzo6b25Ib3Jpem9udGFsU2Nyb2xsKEhXTkQgaFduZCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLCBib29sJiBoYW5kbGVkKQorewor
ICAgIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247CisgICAgU2Nyb2xsR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHk7CisgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgeworICAgIGNhc2UgU0JfTElO
RUxFRlQ6CisgICAgICAgIGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlMaW5lOworICAgICAgICBkaXJl
Y3Rpb24gPSBTY3JvbGxMZWZ0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNCX0xJTkVSSUdI
VDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeUxpbmU7CisgICAgICAgIGRpcmVjdGlv
biA9IFNjcm9sbFJpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNCX1BBR0VMRUZUOgor
ICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgIGRpcmVjdGlv
biA9IFNjcm9sbExlZnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0JfUEFHRVJJR0hUOgor
ICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgIGRpcmVjdGlv
biA9IFNjcm9sbFJpZ2h0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBo
YW5kbGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fcGFnZS0+
c2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisKKyAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICByZXR1cm4gMDsKK30KKworTFJFU1VMVCBXZWJWaWV3OjpvblZlcnRpY2FsU2Nyb2xsKEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLCBib29s
JiBoYW5kbGVkKQoreworICAgIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb247CisgICAgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CisgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewor
ICAgIGNhc2UgU0JfTElORURPV046CisgICAgICAgIGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlMaW5l
OworICAgICAgICBkaXJlY3Rpb24gPSBTY3JvbGxEb3duOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNCX0xJTkVVUDoKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeUxpbmU7CisgICAg
ICAgIGRpcmVjdGlvbiA9IFNjcm9sbFVwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNCX1BB
R0VET1dOOgorICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAg
IGRpcmVjdGlvbiA9IFNjcm9sbERvd247CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU0JfUEFH
RVVQOgorICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgIGRp
cmVjdGlvbiA9IFNjcm9sbFVwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fcGFn
ZS0+c2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisKKyAgICBoYW5kbGVkID0gdHJ1
ZTsKKyAgICByZXR1cm4gMDsKK30KKwogTFJFU1VMVCBXZWJWaWV3OjpvbktleUV2ZW50KEhXTkQg
aFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtLCBib29sJiBo
YW5kbGVkKQogewogICAgIG1fcGFnZS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKSk7CkBAIC02NDcsNiArNzI2
LDM2IEBAIHZvaWQgV2ViVmlldzo6c3RvcFRyYWNraW5nTW91c2VMZWF2ZSgpCiAgICAgOjpUcmFj
a01vdXNlRXZlbnQoJnRyYWNrTW91c2VFdmVudCk7CiB9CiAKK2Jvb2wgV2ViVmlldzo6c2hvdWxk
SW5pdGlhbGl6ZVRyYWNrUG9pbnRIYWNrKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRDcmVh
dGVTY3JvbGxiYXJzOworICAgIHN0YXRpYyBib29sIGhhc1J1blRyYWNrUG9pbnRDaGVjazsKKwor
ICAgIGlmIChoYXNSdW5UcmFja1BvaW50Q2hlY2spCisgICAgICAgIHJldHVybiBzaG91bGRDcmVh
dGVTY3JvbGxiYXJzOworCisgICAgaGFzUnVuVHJhY2tQb2ludENoZWNrID0gdHJ1ZTsKKyAgICBj
b25zdCB3Y2hhcl90KiB0cmFja1BvaW50S2V5c1tdID0geyAKKyAgICAgICAgTCJTb2Z0d2FyZVxc
TGVub3ZvXFxUcmFja1BvaW50IiwKKyAgICAgICAgTCJTb2Z0d2FyZVxcTGVub3ZvXFxVbHRyYU5h
diIsCisgICAgICAgIEwiU29mdHdhcmVcXEFscHNcXEFwb2ludFxcVHJhY2tQb2ludCIsCisgICAg
ICAgIEwiU29mdHdhcmVcXFN5bmFwdGljc1xcU3luVFBFbmhcXFVsdHJhTmF2VVNCIiwKKyAgICAg
ICAgTCJTb2Z0d2FyZVxcU3luYXB0aWNzXFxTeW5UUEVuaFxcVWx0cmFOYXZQUzIiCisgICAgfTsK
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSCh0cmFja1BvaW50S2V5
cyk7ICsraSkgeworICAgICAgICBIS0VZIHRyYWNrUG9pbnRLZXk7CisgICAgICAgIGludCByZWFk
S2V5UmVzdWx0ID0gOjpSZWdPcGVuS2V5RXhXKEhLRVlfQ1VSUkVOVF9VU0VSLCB0cmFja1BvaW50
S2V5c1tpXSwgMCwgS0VZX1JFQUQsICZ0cmFja1BvaW50S2V5KTsKKyAgICAgICAgOjpSZWdDbG9z
ZUtleSh0cmFja1BvaW50S2V5KTsKKyAgICAgICAgaWYgKHJlYWRLZXlSZXN1bHQgPT0gRVJST1Jf
U1VDQ0VTUykgeworICAgICAgICAgICAgc2hvdWxkQ3JlYXRlU2Nyb2xsYmFycyA9IHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gc2hvdWxkQ3JlYXRlU2Nyb2xsYmFyczsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBzaG91bGRDcmVhdGVTY3JvbGxiYXJzOworfQorCiB2b2lkIFdlYlZp
ZXc6OmNsb3NlKCkKIHsKICAgICBtX3VuZG9DbGllbnQuaW5pdGlhbGl6ZSgwKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA4MTg3OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw2ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBMUkVTVUxUIG9uTW91c2VFdmVudChIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhhbmRsZWQpOwogICAgIExS
RVNVTFQgb25XaGVlbEV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJB
TSwgYm9vbCYgaGFuZGxlZCk7CisgICAgTFJFU1VMVCBvbkhvcml6b250YWxTY3JvbGwoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKKyAgICBM
UkVTVUxUIG9uVmVydGljYWxTY3JvbGwoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwg
TFBBUkFNLCBib29sJiBoYW5kbGVkKTsKICAgICBMUkVTVUxUIG9uS2V5RXZlbnQoSFdORCBoV25k
LCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW5kbGVkKTsKICAgICBMUkVT
VUxUIG9uUGFpbnRFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0s
IGJvb2wmIGhhbmRsZWQpOwogICAgIExSRVNVTFQgb25QcmludENsaWVudEV2ZW50KEhXTkQgaFdu
ZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuZGxlZCk7CkBAIC0xMjks
NiArMTMxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VHJhY2tpbmdNb3VzZUxlYXZlKCk7
CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdNb3VzZUxlYXZlKCk7CiAKKyAgICBib29sIHNob3VsZElu
aXRpYWxpemVUcmFja1BvaW50SGFjaygpOworCiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgSENV
UlNPUiBjdXJzb3JUb1Nob3coKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDgxODc5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDU2LDYgKzEwNTYsMjEgQEAgdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNo
RQogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZTo6c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAg
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworfQorCit2
b2lkIFdlYlBhZ2U6OmxvZ2ljYWxTY3JvbGwoUGFnZSogcGFnZSwgU2Nyb2xsTG9naWNhbERpcmVj
dGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQoreworICAgIHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30K
Kwordm9pZCBXZWJQYWdlOjpzY3JvbGxCeSh1aW50MzJfdCBzY3JvbGxEaXJlY3Rpb24sIHVpbnQz
Ml90IHNjcm9sbEdyYW51bGFyaXR5KQoreworICAgIHNjcm9sbChtX3BhZ2UuZ2V0KCksIHN0YXRp
Y19jYXN0PFNjcm9sbERpcmVjdGlvbj4oc2Nyb2xsRGlyZWN0aW9uKSwgc3RhdGljX2Nhc3Q8U2Ny
b2xsR3JhbnVsYXJpdHk+KHNjcm9sbEdyYW51bGFyaXR5KSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6
c2V0QWN0aXZlKGJvb2wgaXNBY3RpdmUpCiB7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+c2V0QWN0aXZlKGlzQWN0aXZlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gODE4NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlS2V5Ym9hcmRV
SU1vZGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KQEAgLTEzOSw2ICsxNDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjcm9sbE1haW5GcmFt
ZUlmTm90QXRNYXhTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxP
ZmZzZXQpOwogCisgICAgdm9pZCBzY3JvbGxCeSh1aW50MzJfdCBzY3JvbGxEaXJlY3Rpb24sIHVp
bnQzMl90IHNjcm9sbEdyYW51bGFyaXR5KTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAg
V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKTsKICNlbmRpZgpAQCAtNDEzLDYgKzQxNiw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRp
ZgogCisgICAgc3RhdGljIHZvaWQgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKKyAgICBzdGF0aWMgdm9p
ZCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGly
ZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CisKICAgICB1aW50NjRfdCByZXN0
b3JlU2Vzc2lvbihjb25zdCBTZXNzaW9uU3RhdGUmKTsKICAgICB2b2lkIHJlc3RvcmVTZXNzaW9u
QW5kTmF2aWdhdGVUb0N1cnJlbnRJdGVtKGNvbnN0IFNlc3Npb25TdGF0ZSYsIGNvbnN0IFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gODE4Nzkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsK
ICAgICBUb3VjaEV2ZW50KFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKICNlbmRpZgogCisg
ICAgU2Nyb2xsQnkodWludDMyX3Qgc2Nyb2xsRGlyZWN0aW9uLCB1aW50MzJfdCBzY3JvbGxHcmFu
dWxhcml0eSkKKwogICAgIEdvQmFjayh1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICBH
b0ZvcndhcmQodWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgR29Ub0JhY2tGb3J3YXJk
SXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDgx
ODc5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTYgKzMyMCw2IEBAIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBGb3IKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHJhbmdlVGV4dCwgZGljdGlvbmFyeVBvcHVwSW5m
bykpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQotewotICAg
IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotfQotCi1z
dGF0aWMgaW5saW5lIHZvaWQgbG9naWNhbFNjcm9sbChQYWdlKiBwYWdlLCBTY3JvbGxMb2dpY2Fs
RGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCi17Ci0g
ICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkp
OwotfQotCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogewogICAgIGlmIChrZXlib2Fy
ZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5RG93bikKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAkocmV2aXNp
b24gODE4NzkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBh
Z2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTYgKzE5Miw2IEBAIGNvbnN0IGNoYXIq
IFdlYlBhZ2U6OmludGVycHJldEtleUV2ZW50KGMKICAgICByZXR1cm4gbWFwS2V5ID8ga2V5UHJl
c3NDb21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg
c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KQotewotICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVj
dGlvbiwgZ3JhbnVsYXJpdHkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgbG9naWNhbFNjcm9s
bChQYWdlKiBwYWdlLCBTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCi17Ci0gICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+bG9naWNhbFNjcm9sbFJlY3Vyc2l2
ZWx5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotfQotCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1E
ZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2Fy
ZEV2ZW50KQogewogICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6S2V5
RG93biAmJiBrZXlib2FyZEV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6UmF3S2V5RG93bikK
</data>
<flag name="review"
          id="79174"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>