<?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>93983</bug_id>
          
          <creation_ts>2012-08-14 09:39:25 -0700</creation_ts>
          <short_desc>[BlackBerry] Robust-fy the LayerWebKitThread ownership with InRegionScroller</short_desc>
          <delta_ts>2012-08-15 09:06:39 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>mifenton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>695056</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-14 09:39:25 -0700</bug_when>
    <thetext>That ensure we have a thread safe cache of it

It came from a offline discussion with Arvid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695373</commentid>
    <comment_count>1</comment_count>
      <attachid>158412</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-14 14:07:41 -0700</bug_when>
    <thetext>Created attachment 158412
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695376</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 14:09:25 -0700</bug_when>
    <thetext>Attachment 158412 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/blackberry/Api/InRegionScrol...&quot; exit_code: 1
Source/WebKit/blackberry/Api/InRegionScroller.cpp:97:  Missing space before ( in while(  [whitespace/parens] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695381</commentid>
    <comment_count>3</comment_count>
      <attachid>158413</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-14 14:13:06 -0700</bug_when>
    <thetext>Created attachment 158413
patch - style issue fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695389</commentid>
    <comment_count>4</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-08-14 14:21:51 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=158412&amp;action=review

&gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:100
&gt; +    while(it != end) {
&gt; +        delete *it;
&gt; +        ++it;
&gt; +    }

WebKit usually use this pattern:

for (size_t i = 0; i &lt; vector.size(); ++i)
   delete vector[i];

Another question, why not use WTF::Vector? It has a method deleteAllValues()

&gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:155
&gt; +    ASSERT(!m_activeInRegionScrollableAreas.size());

empty() is better than !size()

&gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:236
&gt; +std::vector&lt;Platform::ScrollViewBase*&gt; InRegionScrollerPrivate::activeInRegionScrollableAreas() const
&gt; +{
&gt; +    return m_activeInRegionScrollableAreas;
&gt;  }

Is there any reason to return a copy? Can we use const std::vector&amp; ?

&gt; Source/WebKit/blackberry/Api/InRegionScroller_p.h:73
&gt; +    std::vector&lt;Platform::ScrollViewBase*&gt; m_activeInRegionScrollableAreas;

We should prefer WTF::Vector to std::vector

&gt; Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp:45
&gt; +    m_cachedCompositedScrollableLayer = 0;

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695394</commentid>
    <comment_count>5</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-14 14:25:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158412&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:100
&gt; &gt; +    while(it != end) {
&gt; &gt; +        delete *it;
&gt; &gt; +        ++it;
&gt; &gt; +    }
&gt; 
&gt; WebKit usually use this pattern:
&gt; 
&gt; for (size_t i = 0; i &lt; vector.size(); ++i)
&gt;    delete vector[i];
 
Sure. Can change.

&gt; Another question, why not use WTF::Vector? It has a method deleteAllValues()

&lt;anilsson&gt; agomes_: why is using std::vector instead of WTF::Vector?
&lt;anilsson&gt; agomes_: WTF::Vector has convenient delete method that calls delete on each member
&lt;anilsson&gt; oh hang on, it&apos;s probably because you&apos;ll pass the whole vector to platform at some point?
&lt;agomes_&gt; yes :/

&gt; &gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:155
&gt; &gt; +    ASSERT(!m_activeInRegionScrollableAreas.size());
&gt; 
&gt; empty() is better than !size()

Sure

&gt; &gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:236
&gt; &gt; +std::vector&lt;Platform::ScrollViewBase*&gt; InRegionScrollerPrivate::activeInRegionScrollableAreas() const
&gt; &gt; +{
&gt; &gt; +    return m_activeInRegionScrollableAreas;
&gt; &gt;  }
&gt; 
&gt; Is there any reason to return a copy? Can we use const std::vector&amp; ?

It is in a follow-up: Bug 94021  (please review).

I can change the stuff you suggested before landing, if you have no more concerns.


&gt; &gt; Source/WebKit/blackberry/Api/InRegionScroller_p.h:73
&gt; &gt; +    std::vector&lt;Platform::ScrollViewBase*&gt; m_activeInRegionScrollableAreas;
&gt; 
&gt; We should prefer WTF::Vector to std::vector
&gt; 
&gt; &gt; Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp:45
&gt; &gt; +    m_cachedCompositedScrollableLayer = 0;
&gt; 
&gt; Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695395</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-14 14:26:41 -0700</bug_when>
    <thetext>
&gt; &gt; &gt; Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp:45
&gt; &gt; &gt; +    m_cachedCompositedScrollableLayer = 0;
&gt; &gt; 
&gt; &gt; Why is this needed?

Not all layers support composited scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695396</commentid>
    <comment_count>7</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-14 14:27:18 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; &gt; &gt; Source/WebKit/blackberry/WebKitSupport/InRegionScrollableArea.cpp:45
&gt; &gt; &gt; &gt; +    m_cachedCompositedScrollableLayer = 0;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why is this needed?
&gt; 
&gt; Not all layers support composited scrolling.

Err, ignore that. It was just to clear the RefPtr. Is it not needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695412</commentid>
    <comment_count>8</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-08-14 14:41:43 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158412&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:100
&gt; &gt; &gt; +    while(it != end) {
&gt; &gt; &gt; +        delete *it;
&gt; &gt; &gt; +        ++it;
&gt; &gt; &gt; +    }
&gt; &gt; 
&gt; &gt; WebKit usually use this pattern:
&gt; &gt; 
&gt; &gt; for (size_t i = 0; i &lt; vector.size(); ++i)
&gt; &gt;    delete vector[i];
&gt; 
&gt; Sure. Can change.
&gt; 
&gt; &gt; Another question, why not use WTF::Vector? It has a method deleteAllValues()
&gt; 
&gt; &lt;anilsson&gt; agomes_: why is using std::vector instead of WTF::Vector?
&gt; &lt;anilsson&gt; agomes_: WTF::Vector has convenient delete method that calls delete on each member
&gt; &lt;anilsson&gt; oh hang on, it&apos;s probably because you&apos;ll pass the whole vector to platform at some point?
&gt; &lt;agomes_&gt; yes :/

Hm... not a big deal.

&gt; &gt; &gt; Source/WebKit/blackberry/Api/InRegionScroller.cpp:236
&gt; &gt; &gt; +std::vector&lt;Platform::ScrollViewBase*&gt; InRegionScrollerPrivate::activeInRegionScrollableAreas() const
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    return m_activeInRegionScrollableAreas;
&gt; &gt; &gt;  }
&gt; &gt; 
&gt; &gt; Is there any reason to return a copy? Can we use const std::vector&amp; ?
&gt; 
&gt; It is in a follow-up: Bug 94021  (please review).
&gt; 
&gt; I can change the stuff you suggested before landing, if you have no more concerns.

Yeah. it should be independent to Bug 94021. could save one copy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695414</commentid>
    <comment_count>9</comment_count>
      <attachid>158413</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-08-14 14:42:44 -0700</bug_when>
    <thetext>Comment on attachment 158413
patch - style issue fixed

LGTM. please change the return value to const std::vector&amp; before landing. Also the dtor isn&apos;t necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696044</commentid>
    <comment_count>10</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-08-15 09:06:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 158413 [details])
&gt; LGTM. please change the return value to const std::vector&amp; before landing. Also the dtor isn&apos;t necessary.

Committed http://trac.webkit.org/changeset/125678</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158412</attachid>
            <date>2012-08-14 14:07:41 -0700</date>
            <delta_ts>2012-08-14 14:13:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-2012-08-14-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>17384</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBhMTQ4NTRmMzliMzMxODhhNmFkNGEwYTMxN2Q2MDViMjgzNGM4NzJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VHVlLCAxNCBBdWcgMjAxMiAxMjo0MDo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDgt
MTQgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUm9idXN0LWZ5IHRo
ZSBMYXllcldlYktpdFRocmVhZCBvd25lcnNoaXAgd2l0aCBJblJlZ2lvblNjcm9sbGVyCiAgICAg
ICAgUFIgIzE5MTczNwoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgUGF0Y2ggY2hhbmdlcyB0aGUgd2F5IHdlIGN1cnJlbnRseSBrZWVwIHRyYWNrIG9mIHRoZSBh
Y3RpdmUgc2Nyb2xsYWJsZSBhcmVhCiAgICAgICAgb2JqZWN0czogYmVmb3JlLCB3ZSBhY3F1aXJl
ZCB0aGUgc2Nyb2xsYWJsZSBhcmVhcyBhbmQganVzdCBwYXNzZWQgdGhlbSBpbiBhIHZlY3RvciB1
cAogICAgICAgIHRvIHRoZSBjbGllbnQsIGNvcHlpbmcgaXQgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4g
QWxzbywgaXQgd2FzIGEgY2xpZW50IHJlc3BvbnNhYmlsaXR5IHRvCiAgICAgICAgZGVsZXRlIHN0
dWZmIChCQUQhKS4KICAgICAgICBOb3csIHdlIGtlZXAgdHJhY2sgb2YgdmVjdG9yIHdpdGhpbiBJ
blJlZ2lvblNjcm9sbGVyLCBhcyBhIGNsYXNzIG1lbWJlciwgd2hpY2ggYWxsb3dzIHVzIHRvCiAg
ICAgICAgYXZvaWQgY29waWVzIChpbiBmb2xsb3cgdXAgcGF0Y2gpLCBhbmQgY29udHJvbCB1bnRp
bCB3aGVuIHRoZXNlIG9iamVjdHMgb3V0bGl2ZS4KCiAgICAgICAgUGF0Y2ggYWxzbyBjaGFuZ2Vz
IEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEgdG8gInJldHB0ciIgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIK
ICAgICAgICBhc3NvY2lhdGVkIHRvIGl0IChpZiBhbnkpLiBUaGlzIGVuc3VyZSB3ZSBoYXZlIGEg
bm9uLW51bGwgc2Nyb2xsYWJsZSBlbGVtZW50IGFsd2F5cy4KCiAgICAgICAgQXMgbWVudGlvbmVk
LCBJblJlZ2lvblNjcm9sbGVyIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgYW5kIHZl
Y3RvciBvZiBzY3JvbGxhYmxlIGFyZWFzLgoKICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5
IEFydmlkIE5pbHNzb24uCgogICAgICAgICogQXBpL0luUmVnaW9uU2Nyb2xsZXIuY3BwOgogICAg
ICAgIChXZWJLaXQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xs
ZXJQcml2YXRlOjpyZXNldCk6IE1ldGhvZCBpcyBub3cgcmVzcG9uc2libGUgZm9yCiAgICAgICAg
ZGVsZXRpbmcgdGhlIHRyYWNrZWQgc2Nyb2xsYWJsZSBhcmVhcy4KICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6Y2FsY3VsYXRlSW5SZWdpb25TY3Jv
bGxhYmxlQXJlYXNGb3JQb2ludCk6CiAgICAgICAgUmVuYW1lZCBmcm9tICdpblJlZ2lvblNjcm9s
bGFibGVBcmVhc0ZvclBvaW50Jy4gSXQgd2FzIGNoYW5nZWQgaW4gb3JkZXIgdG8gc3RvcmUgdGhl
CiAgICAgICAgc2Nyb2xsYWJsZSBhcmVhIG9iamVjdHMgaW5zdGVhZCBvZiBqdXN0IHBhc3MgYSBj
b3B5IG9mIHRoZW0gdXAgdG8gdGhlIGNsaWVudC4KICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6YWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMp
OiBHZXR0ZXIuCiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxlclBy
aXZhdGU6OnB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKTogSXQgd2FzCiAgICAgICAgcHJvbW90
ZWQgdG8gYSBjbGFzcyBtZXRob2QgaW5zdGVhZCBvZiBhIGxvY2FsIGhlbHBlci4KICAgICAgICAq
IEFwaS9JblJlZ2lvblNjcm9sbGVyX3AuaDoKICAgICAgICAoV2ViS2l0KToKICAgICAgICAoSW5S
ZWdpb25TY3JvbGxlclByaXZhdGUpOgogICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgogICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRTY3JvbGxPcmlnaW5Qb2lu
dCk6IEFkanVzdG1lbnRzIG5lZWRlZCBkdWUgdG8gdGhlCiAgICAgICAgYWJvdmUgY2hhbmdlZC4K
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5SZWdpb25TY3JvbGxhYmxlQXJlYS5jcHA6CiAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6fkluUmVnaW9u
U2Nyb2xsYWJsZUFyZWEpOiBDbGVhciB1cCB0aGUgY2FjaGVkIGxheWVyLgogICAgICAgIChXZWJL
aXQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xsYWJsZUFyZWE6
OkluUmVnaW9uU2Nyb2xsYWJsZUFyZWEpOgogICAgICAgICogV2ViS2l0U3VwcG9ydC9JblJlZ2lv
blNjcm9sbGFibGVBcmVhLmg6CiAgICAgICAgKEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEpOgotLS0K
IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdpb25TY3JvbGxlci5jcHAgIHwgICA1
MiArKysrKysrKysrKystLS0tLS0tLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9JblJl
Z2lvblNjcm9sbGVyX3AuaCAgfCAgICA3ICsrLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcCAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDbGllbnQuaCAgICAgICB8ICAgIDEgLQogU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgIDQ1ICsrKysrKysrKysrKysrKysr
CiAuLi4vV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcCAgICAgICB8ICAg
IDggKysrLQogLi4uL1dlYktpdFN1cHBvcnQvSW5SZWdpb25TY3JvbGxhYmxlQXJlYS5oICAgICAg
ICAgfCAgICA1ICsrCiA3IGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDI1IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdp
b25TY3JvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0luUmVnaW9uU2Ny
b2xsZXIuY3BwCmluZGV4IGVhOWY3MmQuLmRmMGU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdpb25TY3JvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9JblJlZ2lvblNjcm9sbGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQCBz
dGF0aWMgYm9vbCBjYW5TY3JvbGxSZW5kZXJCb3goUmVuZGVyQm94Kik7CiBzdGF0aWMgUmVuZGVy
TGF5ZXIqIHBhcmVudExheWVyKFJlbmRlckxheWVyKik7CiBzdGF0aWMgTm9kZSogZW5jbG9zaW5n
TGF5ZXJOb2RlKFJlbmRlckxheWVyKik7CiBzdGF0aWMgYm9vbCBpc05vblJlbmRlclZpZXdGaXhl
ZFBvc2l0aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqKTsKLXN0YXRpYyB2b2lkIHB1c2hCYWNr
SW5SZWdpb25TY3JvbGxhYmxlKHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+
JiwgSW5SZWdpb25TY3JvbGxhYmxlQXJlYSosIEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlKik7CiAK
IEluUmVnaW9uU2Nyb2xsZXI6OkluUmVnaW9uU2Nyb2xsZXIoV2ViUGFnZVByaXZhdGUqIHdlYlBh
Z2VQcml2YXRlKQogICAgIDogZChuZXcgSW5SZWdpb25TY3JvbGxlclByaXZhdGUod2ViUGFnZVBy
aXZhdGUpKQpAQCAtOTIsNiArOTEsMTQgQEAgV2ViQ29yZTo6Tm9kZSogSW5SZWdpb25TY3JvbGxl
clByaXZhdGU6Om5vZGUoKSBjb25zdAogdm9pZCBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6cmVz
ZXQoKQogewogICAgIHNldE5vZGUoMCk7CisKKyAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Ny
b2xsVmlld0Jhc2UqPjo6aXRlcmF0b3IgZW5kID0gbV9hY3RpdmVJblJlZ2lvblNjcm9sbGFibGVB
cmVhcy5lbmQoKTsKKyAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Nyb2xsVmlld0Jhc2UqPjo6
aXRlcmF0b3IgaXQgPSBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzLmJlZ2luKCk7Cisg
ICAgd2hpbGUoaXQgIT0gZW5kKSB7CisgICAgICAgIGRlbGV0ZSAqaXQ7CisgICAgICAgICsraXQ7
CisgICAgfQorICAgIG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMuY2xlYXIoKTsKIH0K
IAogYm9vbCBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6aGFzTm9kZSgpIGNvbnN0CkBAIC0xNDMs
MTUgKzE1MCwxNCBAQCBib29sIEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjpzY3JvbGxCeShjb25z
dCBQbGF0Zm9ybTo6SW50U2l6ZSYgZGVsdGEpCiAgICAgcmV0dXJuIHNjcm9sbE5vZGVSZWN1cnNp
dmVseShub2RlKCksIGRlbHRhKTsKIH0KIAotc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZp
ZXdCYXNlKj4gSW5SZWdpb25TY3JvbGxlclByaXZhdGU6OmluUmVnaW9uU2Nyb2xsYWJsZUFyZWFz
Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQordm9pZCBJblJlZ2lvblNj
cm9sbGVyUHJpdmF0ZTo6Y2FsY3VsYXRlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXNGb3JQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgc3RkOjp2ZWN0b3I8UGxhdGZv
cm06OlNjcm9sbFZpZXdCYXNlKj4gdmFsaWRSZXR1cm47Ci0gICAgc3RkOjp2ZWN0b3I8UGxhdGZv
cm06OlNjcm9sbFZpZXdCYXNlKj4gZW1wdHlSZXR1cm47CisgICAgQVNTRVJUKCFtX2FjdGl2ZUlu
UmVnaW9uU2Nyb2xsYWJsZUFyZWFzLnNpemUoKSk7CiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IG1fd2ViUGFnZS0+bV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtX3dlYlBhZ2UtPm1hcEZyb21WaWV3cG9ydFRvQ29udGVudHMocG9pbnQpLCBmYWxz
ZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpOwogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgcmV0dXJuIGVtcHR5UmV0dXJuOworICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJM
YXllciogbGF5ZXIgPSBub2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOwogICAgIGRv
IHsKQEAgLTE2MCwzNyArMTY2LDM5IEBAIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3
QmFzZSo+IEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjppblJlZ2lvblNjcm9sbGFiCiAgICAgICAg
IGlmIChyZW5kZXJlci0+aXNSZW5kZXJWaWV3KCkpIHsKICAgICAgICAgICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdG9SZW5kZXJWaWV3KHJlbmRlcmVyKSkgewogICAgICAgICAgICAg
ICAgIEZyYW1lVmlldyogdmlldyA9IHJlbmRlclZpZXctPmZyYW1lVmlldygpOwotICAgICAgICAg
ICAgICAgIGlmICghdmlldykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5UmV0dXJu
OworICAgICAgICAgICAgICAgIGlmICghdmlldykgeworICAgICAgICAgICAgICAgICAgICByZXNl
dCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGNhblNjcm9sbElubmVyRnJhbWUodmlldy0+ZnJhbWUoKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgcHVzaEJhY2tJblJlZ2lvblNjcm9sbGFibGUodmFsaWRSZXR1
cm4sIG5ldyBJblJlZ2lvblNjcm9sbGFibGVBcmVhKG1fd2ViUGFnZSwgbGF5ZXIpLCB0aGlzKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaEJhY2tJblJlZ2lvblNjcm9sbGFibGUobmV3IEluUmVn
aW9uU2Nyb2xsYWJsZUFyZWEobV93ZWJQYWdlLCBsYXllcikpOwogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAoY2FuU2Nyb2xsUmVuZGVyQm94KGxheWVyLT5yZW5kZXJCb3goKSkpIHsKLSAgICAg
ICAgICAgIHB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKHZhbGlkUmV0dXJuLCBuZXcgSW5SZWdp
b25TY3JvbGxhYmxlQXJlYShtX3dlYlBhZ2UsIGxheWVyKSwgdGhpcyk7CisgICAgICAgICAgICBw
dXNoQmFja0luUmVnaW9uU2Nyb2xsYWJsZShuZXcgSW5SZWdpb25TY3JvbGxhYmxlQXJlYShtX3dl
YlBhZ2UsIGxheWVyKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIElmIHdlIHJ1biBpbnRvIGEgZml4IHBvc2l0aW9uZWQgbGF5ZXIsIHNldCB0aGUgbGFz
dCBzY3JvbGxhYmxlIGluLXJlZ2lvbiBvYmplY3QKICAgICAgICAgLy8gYXMgbm90IGFibGUgdG8g
cHJvcGFnYXRlIHNjcm9sbCB0byBpdHMgcGFyZW50IHNjcm9sbGFibGUuCi0gICAgICAgIGlmIChp
c05vblJlbmRlclZpZXdGaXhlZFBvc2l0aW9uZWRDb250YWluZXIobGF5ZXIpICYmIHZhbGlkUmV0
dXJuLnNpemUoKSkgewotICAgICAgICAgICAgUGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKiBlbmQg
PSB2YWxpZFJldHVybi5iYWNrKCk7CisgICAgICAgIGlmIChpc05vblJlbmRlclZpZXdGaXhlZFBv
c2l0aW9uZWRDb250YWluZXIobGF5ZXIpICYmIG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJl
YXMuc2l6ZSgpKSB7CisgICAgICAgICAgICBQbGF0Zm9ybTo6U2Nyb2xsVmlld0Jhc2UqIGVuZCA9
IG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMuYmFjaygpOwogICAgICAgICAgICAgZW5k
LT5zZXRDYW5Qcm9wYWdhdGVTY3JvbGxpbmdUb0VuY2xvc2luZ1Njcm9sbGFibGUoZmFsc2UpOwog
ICAgICAgICB9CiAKICAgICB9IHdoaWxlIChsYXllciA9IHBhcmVudExheWVyKGxheWVyKSk7CiAK
LSAgICBpZiAodmFsaWRSZXR1cm4uZW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5UmV0dXJu
OworICAgIGlmIChtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzLmVtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFBvc3QtY2FsY3VsYXRlIHRoZSB2aXNpYmxlIHdpbmRvdyBy
ZWN0cyBpbiByZXZlcnNlIGhpdCB0ZXN0IG9yZGVyIHNvCiAgICAgLy8gd2UgYWNjb3VudCBmb3Ig
YWxsIGFuZCBhbnkgY2xpcHBpbmcgcmVjdHMuCiAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN1cnNp
dmVDbGlwcGluZ1JlY3QoV2ViQ29yZTo6SW50UG9pbnQ6Onplcm8oKSwgbV93ZWJQYWdlLT50cmFu
c2Zvcm1lZFZpZXdwb3J0U2l6ZSgpKTsKIAotICAgIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3Jv
bGxWaWV3QmFzZSo+OjpyZXZlcnNlX2l0ZXJhdG9yIHJlbmQgPSB2YWxpZFJldHVybi5yZW5kKCk7
Ci0gICAgZm9yIChzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Nyb2xsVmlld0Jhc2UqPjo6cmV2ZXJz
ZV9pdGVyYXRvciByaXQgPSB2YWxpZFJldHVybi5yYmVnaW4oKTsgcml0ICE9IHJlbmQ7ICsrcml0
KSB7CisgICAgc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKj46OnJldmVyc2Vf
aXRlcmF0b3IgcmVuZCA9IG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMucmVuZCgpOwor
ICAgIGZvciAoc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKj46OnJldmVyc2Vf
aXRlcmF0b3Igcml0ID0gbV9hY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhcy5yYmVnaW4oKTsg
cml0ICE9IHJlbmQ7ICsrcml0KSB7CiAKICAgICAgICAgSW5SZWdpb25TY3JvbGxhYmxlQXJlYSog
Y3VyciA9IHN0YXRpY19jYXN0PEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEqPigqcml0KTsKICAgICAg
ICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gY3Vyci0+bGF5ZXIoKTsKQEAgLTIyMCw4ICsyMjgsMTEg
QEAgc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKj4gSW5SZWdpb25TY3JvbGxl
clByaXZhdGU6OmluUmVnaW9uU2Nyb2xsYWIKICAgICAgICAgICAgIHJlY3Vyc2l2ZUNsaXBwaW5n
UmVjdCA9IHZpc2libGVXaW5kb3dSZWN0OwogICAgICAgICB9CiAgICAgfQorfQogCi0gICAgcmV0
dXJuIHZhbGlkUmV0dXJuOworc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKj4g
SW5SZWdpb25TY3JvbGxlclByaXZhdGU6OmFjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9hY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhczsKIH0K
IAogYm9vbCBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6c2V0TGF5ZXJTY3JvbGxQb3NpdGlvbihS
ZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKQEAgLTQz
MSwxNiArNDQyLDE1IEBAIHN0YXRpYyBib29sIGlzTm9uUmVuZGVyVmlld0ZpeGVkUG9zaXRpb25l
ZENvbnRhaW5lcihSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgcmV0dXJuIG8tPmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpICYmIG8tPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbjsK
IH0KIAotc3RhdGljIHZvaWQgcHVzaEJhY2tJblJlZ2lvblNjcm9sbGFibGUoc3RkOjp2ZWN0b3I8
UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKj4mIHZlY3RvciwgSW5SZWdpb25TY3JvbGxhYmxlQXJl
YSogc2Nyb2xsYWJsZUFyZWEsIEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlKiBzY3JvbGxlcikKK3Zv
aWQgSW5SZWdpb25TY3JvbGxlclByaXZhdGU6OnB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKElu
UmVnaW9uU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewotICAgIEFTU0VSVChzY3Jv
bGxlcik7CiAgICAgQVNTRVJUKCFzY3JvbGxhYmxlQXJlYS0+aXNOdWxsKCkpOwogCiAgICAgc2Ny
b2xsYWJsZUFyZWEtPnNldENhblByb3BhZ2F0ZVNjcm9sbGluZ1RvRW5jbG9zaW5nU2Nyb2xsYWJs
ZSghaXNOb25SZW5kZXJWaWV3Rml4ZWRQb3NpdGlvbmVkQ29udGFpbmVyKHNjcm9sbGFibGVBcmVh
LT5sYXllcigpKSk7Ci0gICAgdmVjdG9yLnB1c2hfYmFjayhzY3JvbGxhYmxlQXJlYSk7Ci0gICAg
aWYgKHZlY3Rvci5zaXplKCkgPT0gMSkgeworICAgIG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxl
QXJlYXMucHVzaF9iYWNrKHNjcm9sbGFibGVBcmVhKTsKKyAgICBpZiAobV9hY3RpdmVJblJlZ2lv
blNjcm9sbGFibGVBcmVhcy5zaXplKCkgPT0gMSkgewogICAgICAgICAvLyBGSVhNRTogVXNlIFJl
bmRlckxheWVyOjpyZW5kZXJCb3goKS0+bm9kZSgpIGluc3RlYWQ/Ci0gICAgICAgIHNjcm9sbGVy
LT5zZXROb2RlKGVuY2xvc2luZ0xheWVyTm9kZShzY3JvbGxhYmxlQXJlYS0+bGF5ZXIoKSkpOwor
ICAgICAgICBzZXROb2RlKGVuY2xvc2luZ0xheWVyTm9kZShzY3JvbGxhYmxlQXJlYS0+bGF5ZXIo
KSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9JblJlZ2lvblNjcm9sbGVyX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSW5S
ZWdpb25TY3JvbGxlcl9wLmgKaW5kZXggZTMyMzkzZC4uYjQzYjYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9JblJlZ2lvblNjcm9sbGVyX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0luUmVnaW9uU2Nyb2xsZXJfcC5oCkBAIC0zNSw2ICsz
NSw3IEBAIGNsYXNzIFJlbmRlckxheWVyOwogbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIEluUmVnaW9uU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBXZWJQ
YWdlUHJpdmF0ZTsKIAogY2xhc3MgSW5SZWdpb25TY3JvbGxlclByaXZhdGUgewpAQCAtNTMsMTkg
KzU0LDIzIEBAIHB1YmxpYzoKICAgICBib29sIHNldFNjcm9sbFBvc2l0aW9uQ29tcG9zaXRpbmdU
aHJlYWQodW5zaWduZWQgY2Ftb3VmbGFnZWRMYXllciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKTsKICAgICBib29sIHNldFNjcm9sbFBvc2l0aW9uV2ViS2l0VGhyZWFk
KHVuc2lnbmVkIGNhbW91ZmxhZ2VkTGF5ZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3Jv
bGxQb3NpdGlvbik7CiAKLSAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Nyb2xsVmlld0Jhc2Uq
PiBpblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CisgICAgdm9pZCBjYWxjdWxhdGVJblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9s
bFZpZXdCYXNlKj4gYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMoKSBjb25zdDsKIAogICAg
IFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBzZXRMYXll
clNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OlJlbmRlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKIAorICAgIHZvaWQgcHVzaEJhY2tJblJlZ2lvblNjcm9s
bGFibGUoSW5SZWdpb25TY3JvbGxhYmxlQXJlYSopOworCiAgICAgLy8gT2Jzb2xldGUgY29kZXBh
dGguCiAgICAgYm9vbCBzY3JvbGxOb2RlUmVjdXJzaXZlbHkoV2ViQ29yZTo6Tm9kZSosIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGRlbHRhKTsKICAgICBib29sIHNjcm9sbFJlbmRlcmVyKFdlYkNv
cmU6OlJlbmRlck9iamVjdCosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGRlbHRhKTsKICAgICB2
b2lkIGFkanVzdFNjcm9sbERlbHRhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtYXhPZmZzZXQs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjdXJyZW50T2Zmc2V0LCBXZWJDb3JlOjpJbnRTaXpl
JiBkZWx0YSkgY29uc3Q7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9pblJlZ2lvblNj
cm9sbFN0YXJ0aW5nTm9kZTsKKyAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Nyb2xsVmlld0Jh
c2UqPiBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggMzgxOTUyMy4uMjE4NzFjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC00MTgzLDcgKzQxODMs
OSBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRTY3JvbGxPcmlnaW5Qb2ludChjb25zdCBQbGF0
Zm9ybTo6SW50UG9pbnQmIHBvaW50KQogICAgIGlmICghbV9oYXNJblJlZ2lvblNjcm9sbGFibGVB
cmVhcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPm5vdGlmeUluUmVnaW9uU2Ny
b2xsaW5nU3RhcnRpbmdQb2ludENoYW5nZWQobV9pblJlZ2lvblNjcm9sbGVyLT5kLT5pblJlZ2lv
blNjcm9sbGFibGVBcmVhc0ZvclBvaW50KHBvaW50KSk7CisgICAgbV9pblJlZ2lvblNjcm9sbGVy
LT5kLT5jYWxjdWxhdGVJblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBvaW50KHBvaW50KTsKKyAg
ICBpZiAoIW1faW5SZWdpb25TY3JvbGxlci0+ZC0+YWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJl
YXMoKS5lbXB0eSgpKQorICAgICAgICBtX2NsaWVudC0+bm90aWZ5SW5SZWdpb25TY3JvbGxpbmdT
dGFydGluZ1BvaW50Q2hhbmdlZChtX2luUmVnaW9uU2Nyb2xsZXItPmQtPmFjdGl2ZUluUmVnaW9u
U2Nyb2xsYWJsZUFyZWFzKCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbE9yaWdpblBv
aW50KGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZUNsaWVudC5oCmluZGV4IDBkYTczMTguLmUyYWNhMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNsaWVudC5oCkBAIC05OSw3ICs5
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlSdW5MYXlvdXRUZXN0c0Zp
bmlzaGVkKCkgPSAwOwogCi0gICAgLy8gQ2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGlu
ZyB0aGUgdmVjdG9yIGVsZW1lbnRzLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlJblJlZ2lvblNj
cm9sbGluZ1N0YXJ0aW5nUG9pbnRDaGFuZ2VkKHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxW
aWV3QmFzZSo+KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RG9jdW1lbnRPbkxvYWQo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCA1NWVkNDZhLi5lY2U5ZDFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0w
OC0xNCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBSb2J1c3QtZnkgdGhlIExheWVyV2ViS2l0VGhyZWFkIG93bmVyc2hpcCB3aXRoIEluUmVn
aW9uU2Nyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkzOTgzCisgICAgICAgIFBSICMxOTE3MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBjaGFuZ2VzIHRoZSB3YXkgd2UgY3VycmVudGx5
IGtlZXAgdHJhY2sgb2YgdGhlIGFjdGl2ZSBzY3JvbGxhYmxlIGFyZWEKKyAgICAgICAgb2JqZWN0
czogYmVmb3JlLCB3ZSBhY3F1aXJlZCB0aGUgc2Nyb2xsYWJsZSBhcmVhcyBhbmQganVzdCBwYXNz
ZWQgdGhlbSBpbiBhIHZlY3RvciB1cAorICAgICAgICB0byB0aGUgY2xpZW50LCBjb3B5aW5nIGl0
IG92ZXIgYW5kIG92ZXIgYWdhaW4uIEFsc28sIGl0IHdhcyBhIGNsaWVudCByZXNwb25zYWJpbGl0
eSB0bworICAgICAgICBkZWxldGUgc3R1ZmYgKEJBRCEpLgorICAgICAgICBOb3csIHdlIGtlZXAg
dHJhY2sgb2YgdmVjdG9yIHdpdGhpbiBJblJlZ2lvblNjcm9sbGVyLCBhcyBhIGNsYXNzIG1lbWJl
ciwgd2hpY2ggYWxsb3dzIHVzIHRvCisgICAgICAgIGF2b2lkIGNvcGllcyAoaW4gZm9sbG93IHVw
IHBhdGNoKSwgYW5kIGNvbnRyb2wgdW50aWwgd2hlbiB0aGVzZSBvYmplY3RzIG91dGxpdmUuCisK
KyAgICAgICAgUGF0Y2ggYWxzbyBjaGFuZ2VzIEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEgdG8gInJl
dHB0ciIgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIKKyAgICAgICAgYXNzb2NpYXRlZCB0byBpdCAoaWYg
YW55KS4gVGhpcyBlbnN1cmUgd2UgaGF2ZSBhIG5vbi1udWxsIHNjcm9sbGFibGUgZWxlbWVudCBh
bHdheXMuCisKKyAgICAgICAgQXMgbWVudGlvbmVkLCBJblJlZ2lvblNjcm9sbGVyIGlzIG5vdyBy
ZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgYW5kIHZlY3RvciBvZiBzY3JvbGxhYmxlIGFyZWFzLgor
CisgICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgQXJ2aWQgTmlsc3Nvbi4KKworICAgICAg
ICAqIEFwaS9JblJlZ2lvblNjcm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjpyZXNldCk6IE1l
dGhvZCBpcyBub3cgcmVzcG9uc2libGUgZm9yCisgICAgICAgIGRlbGV0aW5nIHRoZSB0cmFja2Vk
IHNjcm9sbGFibGUgYXJlYXMuCisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9u
U2Nyb2xsZXJQcml2YXRlOjpjYWxjdWxhdGVJblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBvaW50
KToKKyAgICAgICAgUmVuYW1lZCBmcm9tICdpblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBvaW50
Jy4gSXQgd2FzIGNoYW5nZWQgaW4gb3JkZXIgdG8gc3RvcmUgdGhlCisgICAgICAgIHNjcm9sbGFi
bGUgYXJlYSBvYmplY3RzIGluc3RlYWQgb2YganVzdCBwYXNzIGEgY29weSBvZiB0aGVtIHVwIHRv
IHRoZSBjbGllbnQuCisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xs
ZXJQcml2YXRlOjphY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhcyk6IEdldHRlci4KKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxlclByaXZhdGU6OnB1c2hCYWNr
SW5SZWdpb25TY3JvbGxhYmxlKTogSXQgd2FzCisgICAgICAgIHByb21vdGVkIHRvIGEgY2xhc3Mg
bWV0aG9kIGluc3RlYWQgb2YgYSBsb2NhbCBoZWxwZXIuCisgICAgICAgICogQXBpL0luUmVnaW9u
U2Nyb2xsZXJfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluUmVnaW9uU2Nyb2xs
ZXJQcml2YXRlKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRTY3JvbGxPcmlnaW5Qb2ludCk6IEFkanVz
dG1lbnRzIG5lZWRlZCBkdWUgdG8gdGhlCisgICAgICAgIGFib3ZlIGNoYW5nZWQuCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6fkluUmVnaW9uU2Nyb2xs
YWJsZUFyZWEpOiBDbGVhciB1cCB0aGUgY2FjaGVkIGxheWVyLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6SW5S
ZWdpb25TY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNj
cm9sbGFibGVBcmVhLmg6CisgICAgICAgIChJblJlZ2lvblNjcm9sbGFibGVBcmVhKToKKwogMjAx
Mi0wOC0xMyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFj
a0JlcnJ5XSBSb3VuZGluZyBlcnJvciBzb21ld2hlcmUgd2hlbiB0cmFuc2xhdGluZyBDb21wb3Np
dGluZ0xheWVyICdzIGZvciBpbi1yZWdpb24gc2Nyb2xsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUmVnaW9uU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IDc2NGQyMDguLmQwNWViZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUmVnaW9uU2Nyb2xsYWJsZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUmVnaW9uU2Ny
b2xsYWJsZUFyZWEuY3BwCkBAIC00MCw2ICs0MCwxMSBAQCBJblJlZ2lvblNjcm9sbGFibGVBcmVh
OjpJblJlZ2lvblNjcm9sbGFibGVBcmVhKCkKIHsKIH0KIAorSW5SZWdpb25TY3JvbGxhYmxlQXJl
YTo6fkluUmVnaW9uU2Nyb2xsYWJsZUFyZWEoKQoreworICAgIG1fY2FjaGVkQ29tcG9zaXRlZFNj
cm9sbGFibGVMYXllciA9IDA7Cit9CisKIEluUmVnaW9uU2Nyb2xsYWJsZUFyZWE6OkluUmVnaW9u
U2Nyb2xsYWJsZUFyZWEoV2ViUGFnZVByaXZhdGUqIHdlYlBhZ2UsIFJlbmRlckxheWVyKiBsYXll
cikKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogICAgICwgbV9sYXllcihsYXllcikKQEAgLTg5
LDcgKzk0LDggQEAgSW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6SW5SZWdpb25TY3JvbGxhYmxlQXJl
YShXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwgUmVuZGVyTGEKICAgICAgICAgaWYgKG1fbGF5ZXIt
PnVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkpIHsKICAgICAgICAgICAgIG1fc3VwcG9ydHNDb21w
b3NpdGVkU2Nyb2xsaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIEFTU0VSVChtX2xheWVyLT5iYWNr
aW5nKCktPmhhc1Njcm9sbGluZ0xheWVyKCkpOwotICAgICAgICAgICAgbV9jYWNoZWRDb21wb3Np
dGVkU2Nyb2xsYWJsZUxheWVyID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9sYXllci0+
YmFja2luZygpLT5zY3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAgICAg
ICAgbV9jYW1vdWZsYWdlZENvbXBvc2l0ZWRTY3JvbGxhYmxlTGF5ZXIgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkPihtX2xheWVyLT5iYWNraW5nKCktPnNjcm9sbGluZ0xheWVyKCktPnBsYXRm
b3JtTGF5ZXIoKSk7CisgICAgICAgICAgICBtX2NhY2hlZENvbXBvc2l0ZWRTY3JvbGxhYmxlTGF5
ZXIgPSBtX2xheWVyLT5iYWNraW5nKCktPnNjcm9sbGluZ0xheWVyKCktPnBsYXRmb3JtTGF5ZXIo
KTsKICAgICAgICAgfQogCiAgICAgICAgIG1fb3ZlcnNjcm9sbExpbWl0RmFjdG9yID0gMC4wOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5SZWdp
b25TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvSW5SZWdpb25TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDFlODQ4MjkuLjY3OWU0OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUmVnaW9uU2Ny
b2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxp
bnRlcmFjdGlvbi9TY3JvbGxWaWV3QmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBMYXllcldlYktpdFRocmVhZDsKIGNsYXNzIFJlbmRlckxheWVyOwogfQogCkBAIC0zNyw2ICsz
OCw3IEBAIHB1YmxpYzoKIAogICAgIEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEoKTsKICAgICBJblJl
Z2lvblNjcm9sbGFibGVBcmVhKFdlYlBhZ2VQcml2YXRlKiwgV2ViQ29yZTo6UmVuZGVyTGF5ZXIq
KTsKKyAgICB2aXJ0dWFsIH5JblJlZ2lvblNjcm9sbGFibGVBcmVhKCk7CiAKICAgICB2b2lkIHNl
dFZpc2libGVXaW5kb3dSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICBQbGF0Zm9y
bTo6SW50UmVjdCB2aXNpYmxlV2luZG93UmVjdCgpIGNvbnN0OwpAQCAtNDYsNiArNDgsOSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CiAgICAgV2Vi
Q29yZTo6UmVuZGVyTGF5ZXIqIG1fbGF5ZXI7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6TGF5ZXJX
ZWJLaXRUaHJlYWQ+IG1fY2FjaGVkQ29tcG9zaXRlZFNjcm9sbGFibGVMYXllcjsKKwogICAgIGJv
b2wgbV9oYXNXaW5kb3dWaXNpYmxlUmVjdENhbGN1bGF0ZWQ7CiB9OwogCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158413</attachid>
            <date>2012-08-14 14:13:06 -0700</date>
            <delta_ts>2012-08-14 14:42:44 -0700</delta_ts>
            <desc>patch - style issue fixed</desc>
            <filename>0001-2012-08-14-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>17364</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAzMzUxYWQ0ZTcwMDA0OTExNzgyMTUwZTZjODA4NjYzMmMzYTk5NWI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VHVlLCAxNCBBdWcgMjAxMiAxMjo0MDo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDgt
MTQgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUm9idXN0LWZ5IHRo
ZSBMYXllcldlYktpdFRocmVhZCBvd25lcnNoaXAgd2l0aCBJblJlZ2lvblNjcm9sbGVyCiAgICAg
ICAgUFIgIzE5MTczNwoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAg
ICAgUGF0Y2ggY2hhbmdlcyB0aGUgd2F5IHdlIGN1cnJlbnRseSBrZWVwIHRyYWNrIG9mIHRoZSBh
Y3RpdmUgc2Nyb2xsYWJsZSBhcmVhCiAgICAgICAgb2JqZWN0czogYmVmb3JlLCB3ZSBhY3F1aXJl
ZCB0aGUgc2Nyb2xsYWJsZSBhcmVhcyBhbmQganVzdCBwYXNzZWQgdGhlbSBpbiBhIHZlY3RvciB1
cAogICAgICAgIHRvIHRoZSBjbGllbnQsIGNvcHlpbmcgaXQgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4g
QWxzbywgaXQgd2FzIGEgY2xpZW50IHJlc3BvbnNhYmlsaXR5IHRvCiAgICAgICAgZGVsZXRlIHN0
dWZmIChCQUQhKS4KICAgICAgICBOb3csIHdlIGtlZXAgdHJhY2sgb2YgdmVjdG9yIHdpdGhpbiBJ
blJlZ2lvblNjcm9sbGVyLCBhcyBhIGNsYXNzIG1lbWJlciwgd2hpY2ggYWxsb3dzIHVzIHRvCiAg
ICAgICAgYXZvaWQgY29waWVzIChpbiBmb2xsb3cgdXAgcGF0Y2gpLCBhbmQgY29udHJvbCB1bnRp
bCB3aGVuIHRoZXNlIG9iamVjdHMgb3V0bGl2ZS4KCiAgICAgICAgUGF0Y2ggYWxzbyBjaGFuZ2Vz
IEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEgdG8gInJldHB0ciIgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIK
ICAgICAgICBhc3NvY2lhdGVkIHRvIGl0IChpZiBhbnkpLiBUaGlzIGVuc3VyZSB3ZSBoYXZlIGEg
bm9uLW51bGwgc2Nyb2xsYWJsZSBlbGVtZW50IGFsd2F5cy4KCiAgICAgICAgQXMgbWVudGlvbmVk
LCBJblJlZ2lvblNjcm9sbGVyIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgYW5kIHZl
Y3RvciBvZiBzY3JvbGxhYmxlIGFyZWFzLgoKICAgICAgICBJbnRlcm5hbGx5IHJldmlld2VkIGJ5
IEFydmlkIE5pbHNzb24uCgogICAgICAgICogQXBpL0luUmVnaW9uU2Nyb2xsZXIuY3BwOgogICAg
ICAgIChXZWJLaXQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xs
ZXJQcml2YXRlOjpyZXNldCk6IE1ldGhvZCBpcyBub3cgcmVzcG9uc2libGUgZm9yCiAgICAgICAg
ZGVsZXRpbmcgdGhlIHRyYWNrZWQgc2Nyb2xsYWJsZSBhcmVhcy4KICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6Y2FsY3VsYXRlSW5SZWdpb25TY3Jv
bGxhYmxlQXJlYXNGb3JQb2ludCk6CiAgICAgICAgUmVuYW1lZCBmcm9tICdpblJlZ2lvblNjcm9s
bGFibGVBcmVhc0ZvclBvaW50Jy4gSXQgd2FzIGNoYW5nZWQgaW4gb3JkZXIgdG8gc3RvcmUgdGhl
CiAgICAgICAgc2Nyb2xsYWJsZSBhcmVhIG9iamVjdHMgaW5zdGVhZCBvZiBqdXN0IHBhc3MgYSBj
b3B5IG9mIHRoZW0gdXAgdG8gdGhlIGNsaWVudC4KICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6YWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMp
OiBHZXR0ZXIuCiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxlclBy
aXZhdGU6OnB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKTogSXQgd2FzCiAgICAgICAgcHJvbW90
ZWQgdG8gYSBjbGFzcyBtZXRob2QgaW5zdGVhZCBvZiBhIGxvY2FsIGhlbHBlci4KICAgICAgICAq
IEFwaS9JblJlZ2lvblNjcm9sbGVyX3AuaDoKICAgICAgICAoV2ViS2l0KToKICAgICAgICAoSW5S
ZWdpb25TY3JvbGxlclByaXZhdGUpOgogICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgogICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRTY3JvbGxPcmlnaW5Qb2lu
dCk6IEFkanVzdG1lbnRzIG5lZWRlZCBkdWUgdG8gdGhlCiAgICAgICAgYWJvdmUgY2hhbmdlZC4K
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5SZWdpb25TY3JvbGxhYmxlQXJlYS5jcHA6CiAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6fkluUmVnaW9u
U2Nyb2xsYWJsZUFyZWEpOiBDbGVhciB1cCB0aGUgY2FjaGVkIGxheWVyLgogICAgICAgIChXZWJL
aXQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xsYWJsZUFyZWE6
OkluUmVnaW9uU2Nyb2xsYWJsZUFyZWEpOgogICAgICAgICogV2ViS2l0U3VwcG9ydC9JblJlZ2lv
blNjcm9sbGFibGVBcmVhLmg6CiAgICAgICAgKEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEpOgotLS0K
IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdpb25TY3JvbGxlci5jcHAgIHwgICA1
MiArKysrKysrKysrKystLS0tLS0tLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9JblJl
Z2lvblNjcm9sbGVyX3AuaCAgfCAgICA3ICsrLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlLmNwcCAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDbGllbnQuaCAgICAgICB8ICAgIDEgLQogU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgfCAgIDQ1ICsrKysrKysrKysrKysrKysr
CiAuLi4vV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcCAgICAgICB8ICAg
IDggKysrLQogLi4uL1dlYktpdFN1cHBvcnQvSW5SZWdpb25TY3JvbGxhYmxlQXJlYS5oICAgICAg
ICAgfCAgICA1ICsrCiA3IGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDI1IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdp
b25TY3JvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0luUmVnaW9uU2Ny
b2xsZXIuY3BwCmluZGV4IGVhOWY3MmQuLjc3YzllZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdpb25TY3JvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9JblJlZ2lvblNjcm9sbGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQCBz
dGF0aWMgYm9vbCBjYW5TY3JvbGxSZW5kZXJCb3goUmVuZGVyQm94Kik7CiBzdGF0aWMgUmVuZGVy
TGF5ZXIqIHBhcmVudExheWVyKFJlbmRlckxheWVyKik7CiBzdGF0aWMgTm9kZSogZW5jbG9zaW5n
TGF5ZXJOb2RlKFJlbmRlckxheWVyKik7CiBzdGF0aWMgYm9vbCBpc05vblJlbmRlclZpZXdGaXhl
ZFBvc2l0aW9uZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqKTsKLXN0YXRpYyB2b2lkIHB1c2hCYWNr
SW5SZWdpb25TY3JvbGxhYmxlKHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+
JiwgSW5SZWdpb25TY3JvbGxhYmxlQXJlYSosIEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlKik7CiAK
IEluUmVnaW9uU2Nyb2xsZXI6OkluUmVnaW9uU2Nyb2xsZXIoV2ViUGFnZVByaXZhdGUqIHdlYlBh
Z2VQcml2YXRlKQogICAgIDogZChuZXcgSW5SZWdpb25TY3JvbGxlclByaXZhdGUod2ViUGFnZVBy
aXZhdGUpKQpAQCAtOTIsNiArOTEsMTQgQEAgV2ViQ29yZTo6Tm9kZSogSW5SZWdpb25TY3JvbGxl
clByaXZhdGU6Om5vZGUoKSBjb25zdAogdm9pZCBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6cmVz
ZXQoKQogewogICAgIHNldE5vZGUoMCk7CisKKyAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Ny
b2xsVmlld0Jhc2UqPjo6aXRlcmF0b3IgZW5kID0gbV9hY3RpdmVJblJlZ2lvblNjcm9sbGFibGVB
cmVhcy5lbmQoKTsKKyAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Nyb2xsVmlld0Jhc2UqPjo6
aXRlcmF0b3IgaXQgPSBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzLmJlZ2luKCk7Cisg
ICAgd2hpbGUgKGl0ICE9IGVuZCkgeworICAgICAgICBkZWxldGUgKml0OworICAgICAgICArK2l0
OworICAgIH0KKyAgICBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzLmNsZWFyKCk7CiB9
CiAKIGJvb2wgSW5SZWdpb25TY3JvbGxlclByaXZhdGU6Omhhc05vZGUoKSBjb25zdApAQCAtMTQz
LDE1ICsxNTAsMTQgQEAgYm9vbCBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6c2Nyb2xsQnkoY29u
c3QgUGxhdGZvcm06OkludFNpemUmIGRlbHRhKQogICAgIHJldHVybiBzY3JvbGxOb2RlUmVjdXJz
aXZlbHkobm9kZSgpLCBkZWx0YSk7CiB9CiAKLXN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxW
aWV3QmFzZSo+IEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjppblJlZ2lvblNjcm9sbGFibGVBcmVh
c0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3ZvaWQgSW5SZWdpb25T
Y3JvbGxlclByaXZhdGU6OmNhbGN1bGF0ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzRm9yUG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQogewotICAgIHN0ZDo6dmVjdG9yPFBsYXRm
b3JtOjpTY3JvbGxWaWV3QmFzZSo+IHZhbGlkUmV0dXJuOwotICAgIHN0ZDo6dmVjdG9yPFBsYXRm
b3JtOjpTY3JvbGxWaWV3QmFzZSo+IGVtcHR5UmV0dXJuOworICAgIEFTU0VSVCghbV9hY3RpdmVJ
blJlZ2lvblNjcm9sbGFibGVBcmVhcy5zaXplKCkpOwogCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBtX3dlYlBhZ2UtPm1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV93ZWJQYWdlLT5tYXBGcm9tVmlld3BvcnRUb0NvbnRlbnRzKHBvaW50KSwgZmFs
c2UgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRlcmVyKCkpCi0g
ICAgICAgIHJldHVybiBlbXB0eVJldHVybjsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVy
TGF5ZXIqIGxheWVyID0gbm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICBk
byB7CkBAIC0xNjAsMzcgKzE2NiwzOSBAQCBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Nyb2xsVmll
d0Jhc2UqPiBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZTo6aW5SZWdpb25TY3JvbGxhYgogICAgICAg
ICBpZiAocmVuZGVyZXItPmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IHRvUmVuZGVyVmlldyhyZW5kZXJlcikpIHsKICAgICAgICAgICAg
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSByZW5kZXJWaWV3LT5mcmFtZVZpZXcoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXZpZXcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVJldHVy
bjsKKyAgICAgICAgICAgICAgICBpZiAoIXZpZXcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmIChjYW5TY3JvbGxJbm5lckZyYW1lKHZpZXctPmZyYW1lKCkpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKHZhbGlkUmV0
dXJuLCBuZXcgSW5SZWdpb25TY3JvbGxhYmxlQXJlYShtX3dlYlBhZ2UsIGxheWVyKSwgdGhpcyk7
CisgICAgICAgICAgICAgICAgICAgIHB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKG5ldyBJblJl
Z2lvblNjcm9sbGFibGVBcmVhKG1fd2ViUGFnZSwgbGF5ZXIpKTsKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKGNhblNjcm9sbFJlbmRlckJveChsYXllci0+cmVuZGVyQm94KCkpKSB7Ci0gICAg
ICAgICAgICBwdXNoQmFja0luUmVnaW9uU2Nyb2xsYWJsZSh2YWxpZFJldHVybiwgbmV3IEluUmVn
aW9uU2Nyb2xsYWJsZUFyZWEobV93ZWJQYWdlLCBsYXllciksIHRoaXMpOworICAgICAgICAgICAg
cHVzaEJhY2tJblJlZ2lvblNjcm9sbGFibGUobmV3IEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEobV93
ZWJQYWdlLCBsYXllcikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBJZiB3ZSBydW4gaW50byBhIGZpeCBwb3NpdGlvbmVkIGxheWVyLCBzZXQgdGhlIGxh
c3Qgc2Nyb2xsYWJsZSBpbi1yZWdpb24gb2JqZWN0CiAgICAgICAgIC8vIGFzIG5vdCBhYmxlIHRv
IHByb3BhZ2F0ZSBzY3JvbGwgdG8gaXRzIHBhcmVudCBzY3JvbGxhYmxlLgotICAgICAgICBpZiAo
aXNOb25SZW5kZXJWaWV3Rml4ZWRQb3NpdGlvbmVkQ29udGFpbmVyKGxheWVyKSAmJiB2YWxpZFJl
dHVybi5zaXplKCkpIHsKLSAgICAgICAgICAgIFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSogZW5k
ID0gdmFsaWRSZXR1cm4uYmFjaygpOworICAgICAgICBpZiAoaXNOb25SZW5kZXJWaWV3Rml4ZWRQ
b3NpdGlvbmVkQ29udGFpbmVyKGxheWVyKSAmJiBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFy
ZWFzLnNpemUoKSkgeworICAgICAgICAgICAgUGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKiBlbmQg
PSBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzLmJhY2soKTsKICAgICAgICAgICAgIGVu
ZC0+c2V0Q2FuUHJvcGFnYXRlU2Nyb2xsaW5nVG9FbmNsb3NpbmdTY3JvbGxhYmxlKGZhbHNlKTsK
ICAgICAgICAgfQogCiAgICAgfSB3aGlsZSAobGF5ZXIgPSBwYXJlbnRMYXllcihsYXllcikpOwog
Ci0gICAgaWYgKHZhbGlkUmV0dXJuLmVtcHR5KCkpCi0gICAgICAgIHJldHVybiBlbXB0eVJldHVy
bjsKKyAgICBpZiAobV9hY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhcy5lbXB0eSgpKQorICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBQb3N0LWNhbGN1bGF0ZSB0aGUgdmlzaWJsZSB3aW5kb3cg
cmVjdHMgaW4gcmV2ZXJzZSBoaXQgdGVzdCBvcmRlciBzbwogICAgIC8vIHdlIGFjY291bnQgZm9y
IGFsbCBhbmQgYW55IGNsaXBwaW5nIHJlY3RzLgogICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdXJz
aXZlQ2xpcHBpbmdSZWN0KFdlYkNvcmU6OkludFBvaW50Ojp6ZXJvKCksIG1fd2ViUGFnZS0+dHJh
bnNmb3JtZWRWaWV3cG9ydFNpemUoKSk7CiAKLSAgICBzdGQ6OnZlY3RvcjxQbGF0Zm9ybTo6U2Ny
b2xsVmlld0Jhc2UqPjo6cmV2ZXJzZV9pdGVyYXRvciByZW5kID0gdmFsaWRSZXR1cm4ucmVuZCgp
OwotICAgIGZvciAoc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNlKj46OnJldmVy
c2VfaXRlcmF0b3Igcml0ID0gdmFsaWRSZXR1cm4ucmJlZ2luKCk7IHJpdCAhPSByZW5kOyArK3Jp
dCkgeworICAgIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+OjpyZXZlcnNl
X2l0ZXJhdG9yIHJlbmQgPSBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzLnJlbmQoKTsK
KyAgICBmb3IgKHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+OjpyZXZlcnNl
X2l0ZXJhdG9yIHJpdCA9IG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXMucmJlZ2luKCk7
IHJpdCAhPSByZW5kOyArK3JpdCkgewogCiAgICAgICAgIEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEq
IGN1cnIgPSBzdGF0aWNfY2FzdDxJblJlZ2lvblNjcm9sbGFibGVBcmVhKj4oKnJpdCk7CiAgICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IGN1cnItPmxheWVyKCk7CkBAIC0yMjAsOCArMjI4LDEx
IEBAIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+IEluUmVnaW9uU2Nyb2xs
ZXJQcml2YXRlOjppblJlZ2lvblNjcm9sbGFiCiAgICAgICAgICAgICByZWN1cnNpdmVDbGlwcGlu
Z1JlY3QgPSB2aXNpYmxlV2luZG93UmVjdDsKICAgICAgICAgfQogICAgIH0KK30KIAotICAgIHJl
dHVybiB2YWxpZFJldHVybjsKK3N0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+
IEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjphY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWN0aXZlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXM7CiB9
CiAKIGJvb2wgSW5SZWdpb25TY3JvbGxlclByaXZhdGU6OnNldExheWVyU2Nyb2xsUG9zaXRpb24o
UmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC00
MzEsMTYgKzQ0MiwxNSBAQCBzdGF0aWMgYm9vbCBpc05vblJlbmRlclZpZXdGaXhlZFBvc2l0aW9u
ZWRDb250YWluZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIHJldHVybiBvLT5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSAmJiBvLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb247
CiB9CiAKLXN0YXRpYyB2b2lkIHB1c2hCYWNrSW5SZWdpb25TY3JvbGxhYmxlKHN0ZDo6dmVjdG9y
PFBsYXRmb3JtOjpTY3JvbGxWaWV3QmFzZSo+JiB2ZWN0b3IsIEluUmVnaW9uU2Nyb2xsYWJsZUFy
ZWEqIHNjcm9sbGFibGVBcmVhLCBJblJlZ2lvblNjcm9sbGVyUHJpdmF0ZSogc2Nyb2xsZXIpCit2
b2lkIEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjpwdXNoQmFja0luUmVnaW9uU2Nyb2xsYWJsZShJ
blJlZ2lvblNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICBBU1NFUlQoc2Ny
b2xsZXIpOwogICAgIEFTU0VSVCghc2Nyb2xsYWJsZUFyZWEtPmlzTnVsbCgpKTsKIAogICAgIHNj
cm9sbGFibGVBcmVhLT5zZXRDYW5Qcm9wYWdhdGVTY3JvbGxpbmdUb0VuY2xvc2luZ1Njcm9sbGFi
bGUoIWlzTm9uUmVuZGVyVmlld0ZpeGVkUG9zaXRpb25lZENvbnRhaW5lcihzY3JvbGxhYmxlQXJl
YS0+bGF5ZXIoKSkpOwotICAgIHZlY3Rvci5wdXNoX2JhY2soc2Nyb2xsYWJsZUFyZWEpOwotICAg
IGlmICh2ZWN0b3Iuc2l6ZSgpID09IDEpIHsKKyAgICBtX2FjdGl2ZUluUmVnaW9uU2Nyb2xsYWJs
ZUFyZWFzLnB1c2hfYmFjayhzY3JvbGxhYmxlQXJlYSk7CisgICAgaWYgKG1fYWN0aXZlSW5SZWdp
b25TY3JvbGxhYmxlQXJlYXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgLy8gRklYTUU6IFVzZSBS
ZW5kZXJMYXllcjo6cmVuZGVyQm94KCktPm5vZGUoKSBpbnN0ZWFkPwotICAgICAgICBzY3JvbGxl
ci0+c2V0Tm9kZShlbmNsb3NpbmdMYXllck5vZGUoc2Nyb2xsYWJsZUFyZWEtPmxheWVyKCkpKTsK
KyAgICAgICAgc2V0Tm9kZShlbmNsb3NpbmdMYXllck5vZGUoc2Nyb2xsYWJsZUFyZWEtPmxheWVy
KCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvSW5SZWdpb25TY3JvbGxlcl9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0lu
UmVnaW9uU2Nyb2xsZXJfcC5oCmluZGV4IGUzMjM5M2QuLmI0M2I2MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvSW5SZWdpb25TY3JvbGxlcl9wLmgKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9JblJlZ2lvblNjcm9sbGVyX3AuaApAQCAtMzUsNiAr
MzUsNyBAQCBjbGFzcyBSZW5kZXJMYXllcjsKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBJblJlZ2lvblNjcm9sbGFibGVBcmVhOwogY2xhc3MgV2Vi
UGFnZVByaXZhdGU7CiAKIGNsYXNzIEluUmVnaW9uU2Nyb2xsZXJQcml2YXRlIHsKQEAgLTUzLDE5
ICs1NCwyMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXRTY3JvbGxQb3NpdGlvbkNvbXBvc2l0aW5n
VGhyZWFkKHVuc2lnbmVkIGNhbW91ZmxhZ2VkTGF5ZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzY3JvbGxQb3NpdGlvbik7CiAgICAgYm9vbCBzZXRTY3JvbGxQb3NpdGlvbldlYktpdFRocmVh
ZCh1bnNpZ25lZCBjYW1vdWZsYWdlZExheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Ny
b2xsUG9zaXRpb24pOwogCi0gICAgc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdCYXNl
Kj4gaW5SZWdpb25TY3JvbGxhYmxlQXJlYXNGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOworICAgIHZvaWQgY2FsY3VsYXRlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXNGb3JQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3Jv
bGxWaWV3QmFzZSo+IGFjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFyZWFzKCkgY29uc3Q7CiAKICAg
ICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwogCiBwcml2YXRlOgogICAgIGJvb2wgc2V0TGF5
ZXJTY3JvbGxQb3NpdGlvbihXZWJDb3JlOjpSZW5kZXJMYXllciosIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CiAKKyAgICB2b2lkIHB1c2hCYWNrSW5SZWdpb25TY3Jv
bGxhYmxlKEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEqKTsKKwogICAgIC8vIE9ic29sZXRlIGNvZGVw
YXRoLgogICAgIGJvb2wgc2Nyb2xsTm9kZVJlY3Vyc2l2ZWx5KFdlYkNvcmU6Ok5vZGUqLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBkZWx0YSk7CiAgICAgYm9vbCBzY3JvbGxSZW5kZXJlcihXZWJD
b3JlOjpSZW5kZXJPYmplY3QqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBkZWx0YSk7CiAgICAg
dm9pZCBhZGp1c3RTY3JvbGxEZWx0YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWF4T2Zmc2V0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY3VycmVudE9mZnNldCwgV2ViQ29yZTo6SW50U2l6
ZSYgZGVsdGEpIGNvbnN0OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1faW5SZWdpb25T
Y3JvbGxTdGFydGluZ05vZGU7CisgICAgc3RkOjp2ZWN0b3I8UGxhdGZvcm06OlNjcm9sbFZpZXdC
YXNlKj4gbV9hY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhczsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGJmNmRkM2UuLjVlZjY1ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtNDE3Nyw3ICs0MTc3
LDkgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0U2Nyb2xsT3JpZ2luUG9pbnQoY29uc3QgUGxh
dGZvcm06OkludFBvaW50JiBwb2ludCkKICAgICBpZiAoIW1faGFzSW5SZWdpb25TY3JvbGxhYmxl
QXJlYXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LT5ub3RpZnlJblJlZ2lvblNj
cm9sbGluZ1N0YXJ0aW5nUG9pbnRDaGFuZ2VkKG1faW5SZWdpb25TY3JvbGxlci0+ZC0+aW5SZWdp
b25TY3JvbGxhYmxlQXJlYXNGb3JQb2ludChwb2ludCkpOworICAgIG1faW5SZWdpb25TY3JvbGxl
ci0+ZC0+Y2FsY3VsYXRlSW5SZWdpb25TY3JvbGxhYmxlQXJlYXNGb3JQb2ludChwb2ludCk7Cisg
ICAgaWYgKCFtX2luUmVnaW9uU2Nyb2xsZXItPmQtPmFjdGl2ZUluUmVnaW9uU2Nyb2xsYWJsZUFy
ZWFzKCkuZW1wdHkoKSkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUluUmVnaW9uU2Nyb2xsaW5n
U3RhcnRpbmdQb2ludENoYW5nZWQobV9pblJlZ2lvblNjcm9sbGVyLT5kLT5hY3RpdmVJblJlZ2lv
blNjcm9sbGFibGVBcmVhcygpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxPcmlnaW5Q
b2ludChjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaAppbmRleCA2ZTUzNjhlLi5lOWI3MjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDbGllbnQuaApAQCAtMTAwLDcg
KzEwMCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlSdW5MYXlvdXRUZXN0
c0ZpbmlzaGVkKCkgPSAwOwogCi0gICAgLy8gQ2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciBkZWxl
dGluZyB0aGUgdmVjdG9yIGVsZW1lbnRzLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlJblJlZ2lv
blNjcm9sbGluZ1N0YXJ0aW5nUG9pbnRDaGFuZ2VkKHN0ZDo6dmVjdG9yPFBsYXRmb3JtOjpTY3Jv
bGxWaWV3QmFzZSo+KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RG9jdW1lbnRPbkxv
YWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBhN2IxMmE2Li45OTFj
ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAx
Mi0wOC0xNCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFtCbGFj
a0JlcnJ5XSBSb2J1c3QtZnkgdGhlIExheWVyV2ViS2l0VGhyZWFkIG93bmVyc2hpcCB3aXRoIElu
UmVnaW9uU2Nyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkzOTgzCisgICAgICAgIFBSICMxOTE3MzcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBjaGFuZ2VzIHRoZSB3YXkgd2UgY3VycmVu
dGx5IGtlZXAgdHJhY2sgb2YgdGhlIGFjdGl2ZSBzY3JvbGxhYmxlIGFyZWEKKyAgICAgICAgb2Jq
ZWN0czogYmVmb3JlLCB3ZSBhY3F1aXJlZCB0aGUgc2Nyb2xsYWJsZSBhcmVhcyBhbmQganVzdCBw
YXNzZWQgdGhlbSBpbiBhIHZlY3RvciB1cAorICAgICAgICB0byB0aGUgY2xpZW50LCBjb3B5aW5n
IGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4uIEFsc28sIGl0IHdhcyBhIGNsaWVudCByZXNwb25zYWJp
bGl0eSB0bworICAgICAgICBkZWxldGUgc3R1ZmYgKEJBRCEpLgorICAgICAgICBOb3csIHdlIGtl
ZXAgdHJhY2sgb2YgdmVjdG9yIHdpdGhpbiBJblJlZ2lvblNjcm9sbGVyLCBhcyBhIGNsYXNzIG1l
bWJlciwgd2hpY2ggYWxsb3dzIHVzIHRvCisgICAgICAgIGF2b2lkIGNvcGllcyAoaW4gZm9sbG93
IHVwIHBhdGNoKSwgYW5kIGNvbnRyb2wgdW50aWwgd2hlbiB0aGVzZSBvYmplY3RzIG91dGxpdmUu
CisKKyAgICAgICAgUGF0Y2ggYWxzbyBjaGFuZ2VzIEluUmVnaW9uU2Nyb2xsYWJsZUFyZWEgdG8g
InJldHB0ciIgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIKKyAgICAgICAgYXNzb2NpYXRlZCB0byBpdCAo
aWYgYW55KS4gVGhpcyBlbnN1cmUgd2UgaGF2ZSBhIG5vbi1udWxsIHNjcm9sbGFibGUgZWxlbWVu
dCBhbHdheXMuCisKKyAgICAgICAgQXMgbWVudGlvbmVkLCBJblJlZ2lvblNjcm9sbGVyIGlzIG5v
dyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgYW5kIHZlY3RvciBvZiBzY3JvbGxhYmxlIGFyZWFz
LgorCisgICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgQXJ2aWQgTmlsc3Nvbi4KKworICAg
ICAgICAqIEFwaS9JblJlZ2lvblNjcm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Nyb2xsZXJQcml2YXRlOjpyZXNldCk6
IE1ldGhvZCBpcyBub3cgcmVzcG9uc2libGUgZm9yCisgICAgICAgIGRlbGV0aW5nIHRoZSB0cmFj
a2VkIHNjcm9sbGFibGUgYXJlYXMuCisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVn
aW9uU2Nyb2xsZXJQcml2YXRlOjpjYWxjdWxhdGVJblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBv
aW50KToKKyAgICAgICAgUmVuYW1lZCBmcm9tICdpblJlZ2lvblNjcm9sbGFibGVBcmVhc0ZvclBv
aW50Jy4gSXQgd2FzIGNoYW5nZWQgaW4gb3JkZXIgdG8gc3RvcmUgdGhlCisgICAgICAgIHNjcm9s
bGFibGUgYXJlYSBvYmplY3RzIGluc3RlYWQgb2YganVzdCBwYXNzIGEgY29weSBvZiB0aGVtIHVw
IHRvIHRoZSBjbGllbnQuCisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUmVnaW9uU2Ny
b2xsZXJQcml2YXRlOjphY3RpdmVJblJlZ2lvblNjcm9sbGFibGVBcmVhcyk6IEdldHRlci4KKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxlclByaXZhdGU6OnB1c2hC
YWNrSW5SZWdpb25TY3JvbGxhYmxlKTogSXQgd2FzCisgICAgICAgIHByb21vdGVkIHRvIGEgY2xh
c3MgbWV0aG9kIGluc3RlYWQgb2YgYSBsb2NhbCBoZWxwZXIuCisgICAgICAgICogQXBpL0luUmVn
aW9uU2Nyb2xsZXJfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluUmVnaW9uU2Ny
b2xsZXJQcml2YXRlKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRTY3JvbGxPcmlnaW5Qb2ludCk6IEFk
anVzdG1lbnRzIG5lZWRlZCBkdWUgdG8gdGhlCisgICAgICAgIGFib3ZlIGNoYW5nZWQuCisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6fkluUmVnaW9uU2Ny
b2xsYWJsZUFyZWEpOiBDbGVhciB1cCB0aGUgY2FjaGVkIGxheWVyLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6
SW5SZWdpb25TY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JblJlZ2lv
blNjcm9sbGFibGVBcmVhLmg6CisgICAgICAgIChJblJlZ2lvblNjcm9sbGFibGVBcmVhKToKKwog
MjAxMi0wOC0xNCAgTmltYSBHaGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgogCiAg
ICAgICAgIFtCbGFja0JlcnJ5XSBRdWV1ZSBzcGVsbGNoZWNrIHJlcXVlc3RzIHdpdGggY2hhci1j
b3VudCBsaW1pdGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvSW5SZWdpb25TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcAppbmRleCA3
NjRkMjA4Li5kMDVlYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmNwcApAQCAt
NDAsNiArNDAsMTEgQEAgSW5SZWdpb25TY3JvbGxhYmxlQXJlYTo6SW5SZWdpb25TY3JvbGxhYmxl
QXJlYSgpCiB7CiB9CiAKK0luUmVnaW9uU2Nyb2xsYWJsZUFyZWE6On5JblJlZ2lvblNjcm9sbGFi
bGVBcmVhKCkKK3sKKyAgICBtX2NhY2hlZENvbXBvc2l0ZWRTY3JvbGxhYmxlTGF5ZXIgPSAwOwor
fQorCiBJblJlZ2lvblNjcm9sbGFibGVBcmVhOjpJblJlZ2lvblNjcm9sbGFibGVBcmVhKFdlYlBh
Z2VQcml2YXRlKiB3ZWJQYWdlLCBSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgOiBtX3dlYlBhZ2Uo
d2ViUGFnZSkKICAgICAsIG1fbGF5ZXIobGF5ZXIpCkBAIC04OSw3ICs5NCw4IEBAIEluUmVnaW9u
U2Nyb2xsYWJsZUFyZWE6OkluUmVnaW9uU2Nyb2xsYWJsZUFyZWEoV2ViUGFnZVByaXZhdGUqIHdl
YlBhZ2UsIFJlbmRlckxhCiAgICAgICAgIGlmIChtX2xheWVyLT51c2VzQ29tcG9zaXRlZFNjcm9s
bGluZygpKSB7CiAgICAgICAgICAgICBtX3N1cHBvcnRzQ29tcG9zaXRlZFNjcm9sbGluZyA9IHRy
dWU7CiAgICAgICAgICAgICBBU1NFUlQobV9sYXllci0+YmFja2luZygpLT5oYXNTY3JvbGxpbmdM
YXllcigpKTsKLSAgICAgICAgICAgIG1fY2FjaGVkQ29tcG9zaXRlZFNjcm9sbGFibGVMYXllciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1fbGF5ZXItPmJhY2tpbmcoKS0+c2Nyb2xsaW5n
TGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgICAgIG1fY2Ftb3VmbGFnZWRDb21w
b3NpdGVkU2Nyb2xsYWJsZUxheWVyID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9sYXll
ci0+YmFja2luZygpLT5zY3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAg
ICAgICAgbV9jYWNoZWRDb21wb3NpdGVkU2Nyb2xsYWJsZUxheWVyID0gbV9sYXllci0+YmFja2lu
ZygpLT5zY3JvbGxpbmdMYXllcigpLT5wbGF0Zm9ybUxheWVyKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBtX292ZXJzY3JvbGxMaW1pdEZhY3RvciA9IDAuMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUmVnaW9uU2Nyb2xsYWJsZUFyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUmVnaW9uU2Nyb2xsYWJs
ZUFyZWEuaAppbmRleCAxZTg0ODI5Li42NzllNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblJlZ2lvblNjcm9sbGFibGVBcmVhLmgKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5SZWdpb25TY3JvbGxhYmxl
QXJlYS5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8aW50ZXJhY3Rpb24vU2Nyb2xsVmll
d0Jhc2UuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGF5ZXJXZWJLaXRUaHJlYWQ7
CiBjbGFzcyBSZW5kZXJMYXllcjsKIH0KIApAQCAtMzcsNiArMzgsNyBAQCBwdWJsaWM6CiAKICAg
ICBJblJlZ2lvblNjcm9sbGFibGVBcmVhKCk7CiAgICAgSW5SZWdpb25TY3JvbGxhYmxlQXJlYShX
ZWJQYWdlUHJpdmF0ZSosIFdlYkNvcmU6OlJlbmRlckxheWVyKik7CisgICAgdmlydHVhbCB+SW5S
ZWdpb25TY3JvbGxhYmxlQXJlYSgpOwogCiAgICAgdm9pZCBzZXRWaXNpYmxlV2luZG93UmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgUGxhdGZvcm06OkludFJlY3QgdmlzaWJsZVdp
bmRvd1JlY3QoKSBjb25zdDsKQEAgLTQ2LDYgKzQ4LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwogICAgIFdlYkNvcmU6OlJlbmRlckxheWVyKiBt
X2xheWVyOworCisgICAgUmVmUHRyPFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkPiBtX2NhY2hl
ZENvbXBvc2l0ZWRTY3JvbGxhYmxlTGF5ZXI7CisKICAgICBib29sIG1faGFzV2luZG93VmlzaWJs
ZVJlY3RDYWxjdWxhdGVkOwogfTsKIAotLSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="168535"
          type_id="1"
          status="+"
          setter="yong.li.webkit"
    />
          </attachment>
      

    </bug>

</bugzilla>