<?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>96465</bug_id>
          
          <creation_ts>2012-09-11 21:39:42 -0700</creation_ts>
          <short_desc>[EFL][WK2] TestRunner needs touch events support.</short_desc>
          <delta_ts>2012-09-24 17:53:59 -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 EFL</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>
          <dependson>90662</dependson>
    
    <dependson>96903</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Nikhil Bansal">n.bansal</assigned_to>
          <cc>cdumez</cc>
    
    <cc>enmi.lee</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joone</cc>
    
    <cc>jvnforums10</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>naginenis</cc>
    
    <cc>n.bansal</cc>
    
    <cc>venkat.nj</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717904</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-11 21:39:42 -0700</bug_when>
    <thetext>In order to pass fast/events/touch,
EventSenderProxyEfl needs touch events support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722682</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-18 05:17:36 -0700</bug_when>
    <thetext>*** Bug 96792 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725247</commentid>
    <comment_count>2</comment_count>
      <attachid>165074</attachid>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-21 00:58:20 -0700</bug_when>
    <thetext>Created attachment 165074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725254</commentid>
    <comment_count>3</comment_count>
      <attachid>165074</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-21 01:12:47 -0700</bug_when>
    <thetext>Comment on attachment 165074
Patch

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

Thank you.

&gt; Tools/ChangeLog:3
&gt; +        [EFL][WK2] TestRunner needs touch events support.

We can update testExpectations in LayoutTests. Am I right?

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:37
&gt; +#if ENABLE(TOUCH_EVENTS)

I think that it looks not needed

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:137
&gt; +    Vector&lt;Ewk_Touch_Point&gt; m_touchPoints;

Isn&apos;t it usefull using Eina_List instead of Vector?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:433
&gt; +    for (unsigned i = 0; i &lt; m_touchPoints.size(); i++) {

s/unsigned/size_t and ++i is preferred.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:522
&gt; +    Ewk_Touch_Point* touchPoint = &amp;m_touchPoints[index];
&gt; +    touchPoint-&gt;state = EVAS_TOUCH_POINT_UP;

I think that touchPoint is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725341</commentid>
    <comment_count>4</comment_count>
      <attachid>165074</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-21 03:01:29 -0700</bug_when>
    <thetext>Comment on attachment 165074
Patch

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

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:52
&gt; +typedef Evas_Object* PlatformWKView;

This is commonly used file.
You can use this in EventSenderProxyEfl.cpp

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:107
&gt; +    PlatformWKView getPlatformView() const;

We don&apos;t need this.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:451
&gt; +    for (unsigned i = 0; i &lt; m_touchPoints.size(); i++) {

++i</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726083</commentid>
    <comment_count>5</comment_count>
      <attachid>165253</attachid>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-22 00:43:01 -0700</bug_when>
    <thetext>Created attachment 165253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726084</commentid>
    <comment_count>6</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-22 00:46:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 165074 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165074&amp;action=review
&gt; 
&gt; Thank you.
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        [EFL][WK2] TestRunner needs touch events support.
&gt; 
&gt; We can update testExpectations in LayoutTests. Am I right?

Yes, I have updated it in new patch. Thank you. 

&gt; &gt; Tools/WebKitTestRunner/EventSenderProxy.h:37
&gt; &gt; +#if ENABLE(TOUCH_EVENTS)
&gt; 
&gt; I think that it looks not needed
&gt;
&gt; &gt; Tools/WebKitTestRunner/EventSenderProxy.h:137
&gt; &gt; +    Vector&lt;Ewk_Touch_Point&gt; m_touchPoints;
&gt; 
&gt; Isn&apos;t it usefull using Eina_List instead of Vector?
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:433
&gt; &gt; +    for (unsigned i = 0; i &lt; m_touchPoints.size(); i++) {
&gt; 
&gt; s/unsigned/size_t and ++i is preferred.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:522
&gt; &gt; +    Ewk_Touch_Point* touchPoint = &amp;m_touchPoints[index];
&gt; &gt; +    touchPoint-&gt;state = EVAS_TOUCH_POINT_UP;
&gt; 
&gt; I think that touchPoint is not needed.

I have modified the code to use Eina_List instead of Vector. Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726085</commentid>
    <comment_count>7</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-22 00:51:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 165074 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165074&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/EventSenderProxy.h:52
&gt; &gt; +typedef Evas_Object* PlatformWKView;
&gt; 
&gt; This is commonly used file.
&gt; You can use this in EventSenderProxyEfl.cpp
&gt; 
&gt; &gt; Tools/WebKitTestRunner/EventSenderProxy.h:107
&gt; &gt; +    PlatformWKView getPlatformView() const;
&gt; 
&gt; We don&apos;t need this.
&gt; 

I added getPlatformView() to improve readability. I have now removed it from #if ENABLE(TOUCH_EVENTS) so that other apis can also use it.

I think we can add getPlatformWindow() also to refactor code to improve readability (maybe in another patch). 

Please let me know what you think.

&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:451
&gt; &gt; +    for (unsigned i = 0; i &lt; m_touchPoints.size(); i++) {
&gt; 
&gt; ++i

I have made the changes in new patch. Please review. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726092</commentid>
    <comment_count>8</comment_count>
      <attachid>165253</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-22 01:09:10 -0700</bug_when>
    <thetext>Comment on attachment 165253
Patch

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

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:49
&gt; +typedef Evas_Object* PlatformWKView;

Why do we need this typedef if we use this type only if #if PLATFORM(EFL) protected code? We could just use Evas_Object* directly. It is clearer IMHO.

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:104
&gt; +    void sendTouchEvent(const Ewk_Touch_Event_Type&amp;);

Isn&apos;t Ewk_Touch_Event_Type just an enumeration? We probably don&apos;t need to use a const reference here right?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:297
&gt; +    , m_touchPoints(0)

We should probably free the list and its items in the destructor.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:445
&gt; +    ASSERT(eina_list_count(m_touchPoints));

If you just want to make sure the list is not empty, why not so ASSERT(m_touchPoints) ?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:447
&gt; +    ewk_view_feed_touch_event(getPlatformView(), eventType, m_touchPoints, evas_key_modifier_get(evas_object_evas_get(getPlatformView())));

Maybe we should cache the view to avoid calling getPlatformView() twice?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:449
&gt; +    Eina_List* list = 0;

Can be defined inside the for loop condition

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:456
&gt; +            m_touchPoints = eina_list_remove_list(m_touchPoints, tempList);

You not freeing memory for the item being removed, you&apos;re probably leaking memory here.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:465
&gt; +    if (eina_list_count(m_touchPoints)) {

if (m_touchPoints) ? Calling eina_list_count() is probably costly for checking if a list is empty.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:466
&gt; +        Ewk_Touch_Point* touchPoint = static_cast&lt;Ewk_Touch_Point*&gt;(eina_list_nth(m_touchPoints, eina_list_count(m_touchPoints)-1));

eina_list_last() ?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:470
&gt; +    Ewk_Touch_Point* touchPoint = new Ewk_Touch_Point;

Can&apos;t we pass the initialisation members to Ewk_Touch_Point constructor (Adding one if necessary) ?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:491
&gt; +    static const char* modifierNames[] = { &quot;Shift&quot;, &quot;Control&quot;, &quot;Alt&quot;, &quot;Meta&quot; };

Isn&apos;t this duplicated? I&apos;m pretty sure we have the same code for Keyboard modifier. We can probably refactor to share code here?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:525
&gt; +    eina_list_free(m_touchPoints);

You&apos;re clearing the list but not its items -&gt; leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726132</commentid>
    <comment_count>9</comment_count>
      <attachid>165261</attachid>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-22 06:24:25 -0700</bug_when>
    <thetext>Created attachment 165261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726134</commentid>
    <comment_count>10</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-22 06:36:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 165253 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165253&amp;action=review
&gt; 
&gt; We should probably free the list and its items in the destructor.
&gt; 

Thanks for reviewing. I have the modified the code as per comments. Please review.

&gt; 
&gt; Can&apos;t we pass the initialisation members to Ewk_Touch_Point constructor (Adding one if necessary) ?
&gt;

Currently it is not possible. Shall I add constructor as part of this patch?
 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:491
&gt; &gt; +    static const char* modifierNames[] = { &quot;Shift&quot;, &quot;Control&quot;, &quot;Alt&quot;, &quot;Meta&quot; };
&gt; 
&gt; Isn&apos;t this duplicated? I&apos;m pretty sure we have the same code for Keyboard modifier. We can probably refactor to share code here?
&gt; 

I&apos;ve modified setEvasModifiers(). Please check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726161</commentid>
    <comment_count>11</comment_count>
      <attachid>165261</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-22 11:03:41 -0700</bug_when>
    <thetext>Comment on attachment 165261
Patch

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

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:134
&gt; +static void setEvasModifiers(Evas* evas, WKEventModifiers wkModifiers, bool state = true, bool isTouchModifier = false)

This becomes a bit complicated. Since the behavior is slightly different, maybe we should share only the modifier to const char* converting? e.g. 
static inline const char* toEvasModifier(unsigned modifier);

What do you think?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:465
&gt; +        if (!touchPoint)

How is this possible? Shouldn&apos;t it simply be an assertion?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:482
&gt; +        if (!touchPoint)

Ditto.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:488
&gt; +    Ewk_Touch_Point* touchPoint = new Ewk_Touch_Point;

I would add the needed constructor. It looks weird to assign the members afterwards.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:505
&gt; +    if (!touchPoint)

assert?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:542
&gt; +        if (data) {

Why is this needed?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:554
&gt; +    if (!touchPoint)

assert?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:565
&gt; +    if (!touchPoint)

assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726413</commentid>
    <comment_count>12</comment_count>
      <attachid>165261</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-24 00:10:10 -0700</bug_when>
    <thetext>Comment on attachment 165261
Patch

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

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:102
&gt; +    Evas_Object* getPlatformView() const;

no point in having &apos;const&apos; here since it returns pointer which is not const

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:489
&gt; +    if (!touchPoint)

Checking &apos;new&apos; operator return? have not seen such checking anywhere else in WK code.. Anyway, think, we should not simply return in such error cases even without logging.

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:543
&gt; +            Ewk_Touch_Point* touchPoint = static_cast&lt;Ewk_Touch_Point*&gt;(data);

Does Ewk_Touch_Point have destructor to be invoked?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726521</commentid>
    <comment_count>13</comment_count>
      <attachid>165347</attachid>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 03:52:27 -0700</bug_when>
    <thetext>Created attachment 165347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726525</commentid>
    <comment_count>14</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 04:00:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 165261 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165261&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:134
&gt; &gt; +static void setEvasModifiers(Evas* evas, WKEventModifiers wkModifiers, bool state = true, bool isTouchModifier = false)
&gt; 
&gt; This becomes a bit complicated. Since the behavior is slightly different, maybe we should share only the modifier to const char* converting? e.g. 
&gt; static inline const char* toEvasModifier(unsigned modifier);
&gt; 
&gt; What do you think?
&gt; 
Yes, it gets a little complicated. 
setEvasModifier() is used to set multiple modifiers whereas setTouchModifier() deals with only one modifier at a time.
With setTouchModifier() we can have multiple modifiers enabled at a time
whereas with setEvasModifiers() only one modifier will be enabled.
 
As discussed, I have made the change to use modifierNames in both modifier related APIs.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:488
&gt; &gt; +    Ewk_Touch_Point* touchPoint = new Ewk_Touch_Point;
&gt; 
&gt; I would add the needed constructor. It looks weird to assign the members afterwards.
&gt; 

I think ewk_touch.h is public header and it is not possible to add constructor.

I have made other changes as per comments. Please check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726528</commentid>
    <comment_count>15</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 04:04:30 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 165261 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165261&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:489
&gt; &gt; +    if (!touchPoint)
&gt; 
&gt; Checking &apos;new&apos; operator return? have not seen such checking anywhere else in WK code.. Anyway, think, we should not simply return in such error cases even without logging.
&gt; 
I have removed the check to make it consistent with code. Please review. Thank you.

&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:543
&gt; &gt; +            Ewk_Touch_Point* touchPoint = static_cast&lt;Ewk_Touch_Point*&gt;(data);
&gt; 
&gt; Does Ewk_Touch_Point have destructor to be invoked?
&gt; 
Ewk_Touch_Point does not have a destructor. Memory for touch point is allocated in addTouchPoint().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726534</commentid>
    <comment_count>16</comment_count>
      <attachid>165347</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-24 04:10:43 -0700</bug_when>
    <thetext>Comment on attachment 165347
Patch

LGTM but please make sure to run the layout tests in debug mode before landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726535</commentid>
    <comment_count>17</comment_count>
      <attachid>165347</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-09-24 04:13:31 -0700</bug_when>
    <thetext>Comment on attachment 165347
Patch

Looks good, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726537</commentid>
    <comment_count>18</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 04:17:46 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 165347 [details])
&gt; LGTM but please make sure to run the layout tests in debug mode before landing this.
&gt;
Yes, I tried running touch related layout tests (LayoutTests/fast/events/touch) in debug mode before creating the patch. revision 129339.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726542</commentid>
    <comment_count>19</comment_count>
      <attachid>165347</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-24 04:26:23 -0700</bug_when>
    <thetext>Comment on attachment 165347
Patch

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

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:445
&gt; +inline Evas_Object* EventSenderProxy::getPlatformView()

ALWAYS_INLINE? but you need to declare it in the header with implementation, but then again it is really not needed to be inlined for testing and you are kind of cluttering the api with this method.

Why not just call that directly

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:458
&gt; +    for (Eina_List* list = m_touchPoints; list; ) {

Why not use the eina iteration methods?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:475
&gt; +    int id = 0;

unsigned?

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:479
&gt; +        Ewk_Touch_Point* touchPoint = static_cast&lt;Ewk_Touch_Point*&gt;(eina_list_data_get(last));
&gt; +        ASSERT(touchPoint);

Why are we actually using eina lists here and not a Vector&lt;OwnPtr&lt;Ewk_Touch_Point&gt; &gt; or similar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726544</commentid>
    <comment_count>20</comment_count>
      <attachid>165347</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-24 04:27:01 -0700</bug_when>
    <thetext>Comment on attachment 165347
Patch

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

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:458
&gt; +    for (Eina_List* list = m_touchPoints; list; ) {

If you use EINA_LIST_FOREACH() instead of for loop, can&apos;t we reduce unnecessary codes ?

See also : http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_touch_event.cpp#L81</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726558</commentid>
    <comment_count>21</comment_count>
      <attachid>165347</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-24 04:51:10 -0700</bug_when>
    <thetext>Comment on attachment 165347
Patch

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

&gt;&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:475
&gt;&gt; +    int id = 0;
&gt; 
&gt; unsigned?

Well, it is defined as an int in Ewk_Touch_Point so it is consistent. Otherwise we should fix Ewk_Touch_Point declaration in ewk_touch.h

&gt;&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:479
&gt;&gt; +        ASSERT(touchPoint);
&gt; 
&gt; Why are we actually using eina lists here and not a Vector&lt;OwnPtr&lt;Ewk_Touch_Point&gt; &gt; or similar?

because ewk_view_feed_touch_event() takes an Eina_List in argument. If we use a Vector internally (tempting I know), then we need to convert before calling Ewk_View API which is bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726585</commentid>
    <comment_count>22</comment_count>
      <attachid>165362</attachid>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 05:49:34 -0700</bug_when>
    <thetext>Created attachment 165362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726586</commentid>
    <comment_count>23</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 05:53:23 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 165347 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165347&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:445
&gt; &gt; +inline Evas_Object* EventSenderProxy::getPlatformView()
&gt; 
&gt; ALWAYS_INLINE? but you need to declare it in the header with implementation, but then again it is really not needed to be inlined for testing and you are kind of cluttering the api with this method.
&gt; 
&gt; Why not just call that directly
&gt; 
I have modified the code to remove that api. Please check.
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:458
&gt; &gt; +    for (Eina_List* list = m_touchPoints; list; ) {
&gt; 
&gt; Why not use the eina iteration methods?
&gt; 
I&apos;ve modified code to use EINA_LIST_FOREACH_SAFE since there is a possibility of deleting current node. Please check. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726587</commentid>
    <comment_count>24</comment_count>
    <who name="Nikhil Bansal">n.bansal</who>
    <bug_when>2012-09-24 05:53:56 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 165347 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165347&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:458
&gt; &gt; +    for (Eina_List* list = m_touchPoints; list; ) {
&gt; 
&gt; If you use EINA_LIST_FOREACH() instead of for loop, can&apos;t we reduce unnecessary codes ?
&gt; 
&gt; See also : http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_touch_event.cpp#L81

I&apos;m using EINA_LIST_FOREACH_SAFE now. Please check. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726664</commentid>
    <comment_count>25</comment_count>
      <attachid>165362</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-24 07:53:49 -0700</bug_when>
    <thetext>Comment on attachment 165362
Patch

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

I think this looks fine

&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:462
&gt; +             delete touchPoint;
&gt; +             m_touchPoints = eina_list_remove_list(m_touchPoints, list);

Is this safe when iterating?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726683</commentid>
    <comment_count>26</comment_count>
      <attachid>165362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-24 08:25:57 -0700</bug_when>
    <thetext>Comment on attachment 165362
Patch

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

LGTM.

&gt;&gt; Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp:462
&gt;&gt; +             m_touchPoints = eina_list_remove_list(m_touchPoints, list);
&gt; 
&gt; Is this safe when iterating?

According to the doc (http://docs.enlightenment.org/auto/eina/group__Eina__List__Group.html#ga5b4d2aac696cd2558aaed03e3929d873), yes:
&quot;Since this macro stores a pointer to the next list node in l_next, deleting the current node and continuing looping is safe.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727135</commentid>
    <comment_count>27</comment_count>
      <attachid>165362</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 17:53:53 -0700</bug_when>
    <thetext>Comment on attachment 165362
Patch

Clearing flags on attachment: 165362

Committed r129437: &lt;http://trac.webkit.org/changeset/129437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727136</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 17:53:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165074</attachid>
            <date>2012-09-21 00:58:20 -0700</date>
            <delta_ts>2012-09-22 00:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96465-20120921165731.patch</filename>
            <type>text/plain</type>
            <size>6607</size>
            <attacher name="Nikhil Bansal">n.bansal</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTE5OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMyIEBACisyMDEyLTA5LTIxICBOaWtoaWwgQmFuc2FsICA8bi5iYW5zYWxAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRvdWNoIGV2ZW50cyBz
dXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTY0NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW11bGF0ZSB0b3VjaCBldmVudHMgaW4gV2Via2l0VGVzdFJ1bm5lciBmb3IgdG91Y2ggcmVsYXRl
ZAorICAgICAgICBsYXlvdXQgdGVzdHMuIFRoaXMgcGF0Y2ggdXNlcyBld2tfdmlld19mZWVkX3Rv
dWNoX2V2ZW50KCkgdG8KKyAgICAgICAgZ2VuZXJhdGUgdG91Y2ggZXZlbnRzLiAgCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKFdUUik6
CisgICAgICAgIChFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6Z2V0UGxhdGZvcm1WaWV3KToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OnNlbmRUb3VjaEV2ZW50KTogCisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6c2V0
VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnRvdWNoU3Rh
cnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUpOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6OnRvdWNoQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnJl
bGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6Y2FuY2Vs
VG91Y2hQb2ludCk6CisKIDIwMTItMDktMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29tbWVudCBvdXQgYSBmYWlsaW5nIHdlYmtpdHB5IHVuaXQg
dGVzdCB1bnRpbCBEaXJrIGNhbiBmaXggaXQuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24gMTI5MTk5KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDkg
QEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2VsaWYg
UExBVEZPUk0oRUZMKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSA8V2ViS2l0
Mi9FV2ViS2l0Mi5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjZW5kaWYKIApA
QCAtNDUsNiArNDgsOSBAQCBjbGFzcyBUZXN0Q29udHJvbGxlcjsKIHN0cnVjdCBXVFJFdmVudFF1
ZXVlSXRlbTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKIHN0cnVjdCBXVFJFdmVudDsKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQordHlwZWRlZiBFdmFzX09iamVjdCogUGxhdGZvcm1XS1ZpZXc7Cisj
ZW5kaWYKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKQEAgLTk3LDYgKzEwMywx
MCBAQCBwcml2YXRlOgogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgc2VuZE9yUXVldWVF
dmVudChjb25zdCBXVFJFdmVudCYpOwogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChjb25zdCBXVFJF
dmVudCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgUGxhdGZvcm1XS1ZpZXcgZ2V0
UGxhdGZvcm1WaWV3KCkgY29uc3Q7CisgICAgdm9pZCBzZW5kVG91Y2hFdmVudChjb25zdCBFd2tf
VG91Y2hfRXZlbnRfVHlwZSYpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGRvdWJsZSBtX3RpbWU7
CkBAIC0xMjMsNiArMTMzLDkgQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBE
ZXF1ZTxXVFJFdmVudD4gbV9ldmVudFF1ZXVlOwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b247
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBWZWN0b3I8RXdrX1RvdWNoX1BvaW50PiBt
X3RvdWNoUG9pbnRzOworI2VuZGlmCiAjZW5kaWYKIH07CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCShyZXZpc2lvbiAx
MjkxOTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDU0ICs0MTgsMTE2IEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitpbmxpbmUgUGxhdGZvcm1XS1ZpZXcgRXZlbnRTZW5kZXJQcm94eTo6Z2V0UGxhdGZvcm1WaWV3
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFRvdWNoRXZl
bnQoY29uc3QgRXdrX1RvdWNoX0V2ZW50X1R5cGUmIGV2ZW50VHlwZSkKK3sKKyAgICBBU1NFUlQo
bV90b3VjaFBvaW50cy5zaXplKCkpOworCisgICAgRWluYV9MaXN0KiB0b3VjaFBvaW50TGlzdCA9
IDA7CisgICAgRXdrX1RvdWNoX1BvaW50KiB0b3VjaFBvaW50ID0gMDsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3RvdWNoUG9pbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAg
ICB0b3VjaFBvaW50ID0gbmV3IEV3a19Ub3VjaF9Qb2ludDsKKyAgICAgICAgICAgIHRvdWNoUG9p
bnQtPmlkID0gbV90b3VjaFBvaW50c1tpXS5pZDsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQtPngg
PSBtX3RvdWNoUG9pbnRzW2ldLng7CisgICAgICAgICAgICB0b3VjaFBvaW50LT55ID0gbV90b3Vj
aFBvaW50c1tpXS55OworICAgICAgICAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBtX3RvdWNoUG9p
bnRzW2ldLnN0YXRlOworCisgICAgICAgICAgICB0b3VjaFBvaW50TGlzdCA9IGVpbmFfbGlzdF9h
cHBlbmQodG91Y2hQb2ludExpc3QsIHRvdWNoUG9pbnQpOworICAgIH0KKworICAgIGV3a192aWV3
X2ZlZWRfdG91Y2hfZXZlbnQoZ2V0UGxhdGZvcm1WaWV3KCksIGV2ZW50VHlwZSwgdG91Y2hQb2lu
dExpc3QsIGV2YXNfa2V5X21vZGlmaWVyX2dldChldmFzX29iamVjdF9ldmFzX2dldChnZXRQbGF0
Zm9ybVZpZXcoKSkpKTsKKworICAgIHZvaWQqIGxpc3REYXRhID0gMDsKKyAgICBFSU5BX0xJU1Rf
RlJFRSh0b3VjaFBvaW50TGlzdCwgbGlzdERhdGEpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50
KiBldmVudCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGxpc3REYXRhKTsKKyAgICAg
ICAgZGVsZXRlIGV2ZW50OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3RvdWNoUG9pbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICgobV90b3VjaFBvaW50c1tp
XS5zdGF0ZSA9PSBFVkFTX1RPVUNIX1BPSU5UX1VQKSB8fCAobV90b3VjaFBvaW50c1tpXS5zdGF0
ZSA9PSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTCkpIHsKKyAgICAgICAgICAgICBtX3RvdWNoUG9p
bnRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX3RvdWNoUG9pbnRzW2ldLnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9TVElMTDsKKyAg
ICB9Cit9CisKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6YWRkVG91Y2hQb2ludChpbnQgeCwgaW50
IHkpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb25zdCBpbnQgaWQgPSBtX3RvdWNo
UG9pbnRzLmlzRW1wdHkoKSA/IDAgOiBtX3RvdWNoUG9pbnRzLmxhc3QoKS5pZCArIDE7CisKKyAg
ICBFd2tfVG91Y2hfUG9pbnQgdG91Y2hQb2ludCA9IHsgaWQsIHgsIHksIEVWQVNfVE9VQ0hfUE9J
TlRfRE9XTiB9OworICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKHRvdWNoUG9pbnQpOwogfQogCiB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwg
aW50IHkpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoaW5kZXggPj0gMCAm
JiBpbmRleCA8IG1fdG91Y2hQb2ludHMuc2l6ZSgpKTsKKworICAgIEV3a19Ub3VjaF9Qb2ludCog
dG91Y2hQb2ludCA9ICZtX3RvdWNoUG9pbnRzW2luZGV4XTsKKyAgICB0b3VjaFBvaW50LT54ID0g
eDsKKyAgICB0b3VjaFBvaW50LT55ID0geTsKKyAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IEVWQVNf
VE9VQ0hfUE9JTlRfTU9WRTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaE1v
ZGlmaWVyKFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXIsIGJvb2wgZW5hYmxlKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1vZGlmaWVyTmFtZXNbXSA9
IHsgIlNoaWZ0IiwgIkNvbnRyb2wiLCAiQWx0IiwgIk1ldGEiIH07CisKKyAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCAoc2l6ZW9mKG1vZGlmaWVyTmFtZXMpIC8gc2l6ZW9mKGNo
YXIqKSk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1vZGlmaWVyICYgKDEgPDwgaW5kZXgpKSB7
CisgICAgICAgICAgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgICAgICAgICBldmFzX2tleV9tb2Rp
Zmllcl9vbihldmFzX29iamVjdF9ldmFzX2dldChnZXRQbGF0Zm9ybVZpZXcoKSksIG1vZGlmaWVy
TmFtZXNbaW5kZXhdKTsKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXZhc19r
ZXlfbW9kaWZpZXJfb2ZmKGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGdldFBsYXRmb3JtVmlldygpKSwg
bW9kaWZpZXJOYW1lc1tpbmRleF0pOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6OnRvdWNoU3RhcnQoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
c2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJUKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclBy
b3h5Ojp0b3VjaE1vdmUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgc2VuZFRvdWNo
RXZlbnQoRVdLX1RPVUNIX01PVkUpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNo
RW5kKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19U
T1VDSF9FTkQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoQ2FuY2VsKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9DQU5D
RUwpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91Y2hQb2ludHMoKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV90b3VjaFBvaW50cy5jbGVhcigpOwogfQogCiB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgbV90
b3VjaFBvaW50cy5zaXplKCkpOworCisgICAgRXdrX1RvdWNoX1BvaW50KiB0b3VjaFBvaW50ID0g
Jm1fdG91Y2hQb2ludHNbaW5kZXhdOworICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gRVZBU19UT1VD
SF9QT0lOVF9VUDsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50
KGludCBpbmRleCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+
PSAwICYmIGluZGV4IDwgbV90b3VjaFBvaW50cy5zaXplKCkpOworCisgICAgRXdrX1RvdWNoX1Bv
aW50KiB0b3VjaFBvaW50ID0gJm1fdG91Y2hQb2ludHNbaW5kZXhdOworICAgIHRvdWNoUG9pbnQt
PnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyhpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165253</attachid>
            <date>2012-09-22 00:43:01 -0700</date>
            <delta_ts>2012-09-22 06:24:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96465-20120922164210.patch</filename>
            <type>text/plain</type>
            <size>9434</size>
            <attacher name="Nikhil Bansal">n.bansal</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTMwMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDEyLTA5LTIyICBOaWtoaWwgQmFuc2FsICA8bi5iYW5zYWxAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRvdWNoIGV2ZW50cyBz
dXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTY0NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW11bGF0ZSB0b3VjaCBldmVudHMgaW4gV2Via2l0VGVzdFJ1bm5lciBmb3IgdG91Y2ggcmVsYXRl
ZAorICAgICAgICBsYXlvdXQgdGVzdHMuIFRoaXMgcGF0Y2ggdXNlcyBld2tfdmlld19mZWVkX3Rv
dWNoX2V2ZW50KCkgdG8KKyAgICAgICAgZ2VuZXJhdGUgdG91Y2ggZXZlbnRzLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChXVFIpOgor
ICAgICAgICAoRXZlbnRTZW5kZXJQcm94eSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9l
ZmwvRXZlbnRTZW5kZXJQcm94eUVmbC5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpn
ZXRQbGF0Zm9ybVZpZXcpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dXBkYXRl
VG91Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9k
aWZpZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojp0b3VjaENhbmNlbCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNsZWFy
VG91Y2hQb2ludHMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpyZWxlYXNlVG91
Y2hQb2ludCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNoUG9p
bnQpOgorCiAyMDEyLTA5LTIxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgV2ViUHJvY2VzcyBYUEMgc2VydmljZXMgbmVlZCBoYXZlIHRoZWlyIGVudmlyb25tZW50IHNl
dCB3aXRob3V0IGRpc3J1cHRpbmcgYWxsIG90aGVyIFhQQyBzZXJ2aWNlcwpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHJldmlzaW9uIDEyOTMwMSkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJLaXQyL0VXZWJLaXQy
Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjZW5kaWYKIApAQCAtNDUsNiArNDYsNyBAQCBj
bGFzcyBUZXN0Q29udHJvbGxlcjsKIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbGlmIFBM
QVRGT1JNKEVGTCkKIHN0cnVjdCBXVFJFdmVudDsKK3R5cGVkZWYgRXZhc19PYmplY3QqIFBsYXRm
b3JtV0tWaWV3OwogI2VuZGlmCiAKIGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgewpAQCAtOTcsNiAr
OTksMTAgQEAgcHJpdmF0ZToKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHNlbmRPclF1
ZXVlRXZlbnQoY29uc3QgV1RSRXZlbnQmKTsKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoY29uc3Qg
V1RSRXZlbnQmKTsKKyAgICBQbGF0Zm9ybVdLVmlldyBnZXRQbGF0Zm9ybVZpZXcoKSBjb25zdDsK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoY29uc3Qg
RXdrX1RvdWNoX0V2ZW50X1R5cGUmKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBkb3VibGUgbV90
aW1lOwpAQCAtMTIzLDYgKzEyOSw5IEBAIHByaXZhdGU6CiAjZWxpZiBQTEFURk9STShFRkwpCiAg
ICAgRGVxdWU8V1RSRXZlbnQ+IG1fZXZlbnRRdWV1ZTsKICAgICB1bnNpZ25lZCBtX21vdXNlQnV0
dG9uOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgRWluYV9MaXN0KiBtX3RvdWNoUG9p
bnRzOworI2VuZGlmCiAjZW5kaWYKIH07CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
ZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZWZsL0V2ZW50U2VuZGVyUHJveHlFZmwuY3BwCShyZXZpc2lvbiAxMjkzMDEpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkzLDYgKzI5Myw5IEBAIEV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2Vu
ZGVyUHJveHkoVGVzdEMKICAgICAsIG1fY2xpY2tUaW1lKDApCiAgICAgLCBtX2NsaWNrQnV0dG9u
KFdUUk1vdXNlQnV0dG9uTm9uZSkKICAgICAsIG1fbW91c2VCdXR0b24oV1RSTW91c2VCdXR0b25O
b25lKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoUG9pbnRzKDApCisj
ZW5kaWYKIHsKIH0KIApAQCAtNDMxLDU1ICs0MzQsMTEyIEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBzZXRFdmFzTW9kaWZpZXJzKGV2YXMsIDApOwogfQog
CitpbmxpbmUgUGxhdGZvcm1XS1ZpZXcgRXZlbnRTZW5kZXJQcm94eTo6Z2V0UGxhdGZvcm1WaWV3
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCk7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBFdmVu
dFNlbmRlclByb3h5OjpzZW5kVG91Y2hFdmVudChjb25zdCBFd2tfVG91Y2hfRXZlbnRfVHlwZSYg
ZXZlbnRUeXBlKQoreworICAgIEFTU0VSVChlaW5hX2xpc3RfY291bnQobV90b3VjaFBvaW50cykp
OworCisgICAgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudChnZXRQbGF0Zm9ybVZpZXcoKSwgZXZl
bnRUeXBlLCBtX3RvdWNoUG9pbnRzLCBldmFzX2tleV9tb2RpZmllcl9nZXQoZXZhc19vYmplY3Rf
ZXZhc19nZXQoZ2V0UGxhdGZvcm1WaWV3KCkpKSk7CisKKyAgICBFaW5hX0xpc3QqIGxpc3QgPSAw
OworICAgIGZvciAobGlzdCA9IG1fdG91Y2hQb2ludHM7IGxpc3Q7ICkgeworICAgICAgICBFaW5h
X0xpc3QqIHRlbXBMaXN0ID0gbGlzdDsKKyAgICAgICAgbGlzdCA9IGVpbmFfbGlzdF9uZXh0KGxp
c3QpOworCisgICAgICAgIEV3a19Ub3VjaF9Qb2ludCogdG91Y2hQb2ludCA9IHN0YXRpY19jYXN0
PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9kYXRhX2dldCh0ZW1wTGlzdCkpOworICAgICAg
ICBpZiAoKHRvdWNoUG9pbnQtPnN0YXRlID09IEVWQVNfVE9VQ0hfUE9JTlRfVVApIHx8ICh0b3Vj
aFBvaW50LT5zdGF0ZSA9PSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTCkpCisgICAgICAgICAgICBt
X3RvdWNoUG9pbnRzID0gZWluYV9saXN0X3JlbW92ZV9saXN0KG1fdG91Y2hQb2ludHMsIHRlbXBM
aXN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBFVkFT
X1RPVUNIX1BPSU5UX1NUSUxMOworICAgIH0KK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojph
ZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGludCBpZCA9IDA7CisgICAgaWYgKGVpbmFfbGlzdF9jb3VudChtX3RvdWNoUG9pbnRzKSkgewor
ICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91
Y2hfUG9pbnQqPihlaW5hX2xpc3RfbnRoKG1fdG91Y2hQb2ludHMsIGVpbmFfbGlzdF9jb3VudCht
X3RvdWNoUG9pbnRzKS0xKSk7CisgICAgICAgIGlkID0gdG91Y2hQb2ludC0+aWQgKyAxOworICAg
IH0KKworICAgIEV3a19Ub3VjaF9Qb2ludCogdG91Y2hQb2ludCA9IG5ldyBFd2tfVG91Y2hfUG9p
bnQ7CisgICAgdG91Y2hQb2ludC0+aWQgPSBpZDsKKyAgICB0b3VjaFBvaW50LT54ID0geDsKKyAg
ICB0b3VjaFBvaW50LT55ID0geTsKKyAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IEVWQVNfVE9VQ0hf
UE9JTlRfRE9XTjsKKworICAgIG1fdG91Y2hQb2ludHMgPSBlaW5hX2xpc3RfYXBwZW5kKG1fdG91
Y2hQb2ludHMsIHRvdWNoUG9pbnQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0
ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBBU1NFUlQoaW5kZXggPj0gMCAmJiBpbmRleCA8IGVpbmFfbGlzdF9jb3VudCht
X3RvdWNoUG9pbnRzKSk7CisKKyAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0
aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfbnRoKG1fdG91Y2hQb2ludHMsIGlu
ZGV4KSk7CisgICAgdG91Y2hQb2ludC0+eCA9IHg7CisgICAgdG91Y2hQb2ludC0+eSA9IHk7Cisg
ICAgdG91Y2hQb2ludC0+c3RhdGUgPSBFVkFTX1RPVUNIX1BPSU5UX01PVkU7CiB9CiAKIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10gPSB7ICJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIs
ICJNZXRhIiB9OworCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgKHNpemVv
Zihtb2RpZmllck5hbWVzKSAvIHNpemVvZihjaGFyKikpOyArK2luZGV4KSB7CisgICAgICAgIGlm
IChtb2RpZmllciAmICgxIDw8IGluZGV4KSkgeworICAgICAgICAgICAgIGlmIChlbmFibGUpCisg
ICAgICAgICAgICAgICAgZXZhc19rZXlfbW9kaWZpZXJfb24oZXZhc19vYmplY3RfZXZhc19nZXQo
Z2V0UGxhdGZvcm1WaWV3KCkpLCBtb2RpZmllck5hbWVzW2luZGV4XSk7CisgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGV2YXNfa2V5X21vZGlmaWVyX29mZihldmFzX29iamVjdF9l
dmFzX2dldChnZXRQbGF0Zm9ybVZpZXcoKSksIG1vZGlmaWVyTmFtZXNbaW5kZXhdKTsKKyAgICAg
ICAgfQorICAgIH0KIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9TVEFS
VCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9NT1ZFKTsKIH0KIAog
dm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfRU5EKTsKIH0KIAogdm9pZCBFdmVudFNl
bmRlclByb3h5Ojp0b3VjaENhbmNlbCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBz
ZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfQ0FOQ0VMKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclBy
b3h5OjpjbGVhclRvdWNoUG9pbnRzKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGVp
bmFfbGlzdF9mcmVlKG1fdG91Y2hQb2ludHMpOworICAgIG1fdG91Y2hQb2ludHMgPSAwOwogfQog
CiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwg
ZWluYV9saXN0X2NvdW50KG1fdG91Y2hQb2ludHMpKTsKKworICAgIEV3a19Ub3VjaF9Qb2ludCog
dG91Y2hQb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgo
bV90b3VjaFBvaW50cywgaW5kZXgpKTsKKyAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IEVWQVNfVE9V
Q0hfUE9JTlRfVVA7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2FuY2VsVG91Y2hQb2lu
dChpbnQgaW5kZXgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoaW5kZXgg
Pj0gMCAmJiBpbmRleCA8IGVpbmFfbGlzdF9jb3VudChtX3RvdWNoUG9pbnRzKSk7CisKKyAgICBF
d2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQq
PihlaW5hX2xpc3RfbnRoKG1fdG91Y2hQb2ludHMsIGluZGV4KSk7CisgICAgdG91Y2hQb2ludC0+
c3RhdGUgPSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTDsKIH0KIAogdm9pZCBFdmVudFNlbmRlclBy
b3h5OjpzZXRUb3VjaFBvaW50UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyOTMwMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTIyICBOaWtoaWwgQmFuc2FsICA8bi5iYW5z
YWxAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRv
dWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY0NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUb3VjaCBldmVudHMgc3VwcG9ydCBhZGRlZCBpbiBXZWJLaXRUZXN0UnVubmVy
IGZvciBsYXlvdXQgdGVzdHMuIAorCisgICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDEyLTA5LTIyICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIHdlZWtlbmQgZ2FyZGVuaW5nLCB1bnNr
aXAgbm93IHBhc3NpbmcgdGVzdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
LXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxMjkzMDEpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE1Niwy
MSArMTU2LDggQEAgd2Via2l0Lm9yZy9iLzQyNjc0IGh0dHAvdGVzdHMvbmF2aWdhdGlvbgogd2Vi
a2l0Lm9yZy9iLzkzNDcwIGZhc3QvZG9tL3RpdGxlLWRpcmVjdGlvbmFsaXR5LXJlbW92ZUNoaWxk
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85MzQ3MCBmYXN0L2RvbS90aXRsZS1kaXJl
Y3Rpb25hbGl0eS5odG1sIFsgRmFpbHVyZSBdCiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBldmVudFNl
bmRlciBuZWVkcyB0b3VjaCBldmVudHMgc3VwcG9ydAotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3Qv
ZXZlbnRzL3RvdWNoL2Jhc2ljLW11bHRpLXRvdWNoLWV2ZW50cy1saW1pdGVkLmh0bWwgWyBGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10
b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZl
bnRzL3RvdWNoL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL211bHRpLXRvdWNoLWdyb3VwZWQtdGFy
Z2V0cy5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91
Y2gvc2VuZC1vbmNhbmNlbC1ldmVudC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0
NjUgZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sIFsgRmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtYWN0aXZlLXN0YXRl
Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90
b3VjaC1jb29yZHMtaW4tem9vbS1hbmQtc2Nyb2xsLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnNpZGUtaWZyYW1lLmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnNp
ZGUtaWZyYW1lLXNjcm9sbGVkLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBm
YXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXN0YWxlLW5vZGUtY3Jhc2guaHRtbCBb
IEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRh
cmdldC1saW1pdGVkLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2
ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBbIEZhaWx1cmUgXQorIyBXZWJLaXRUZXN0UnVu
bmVyIHNldFRvdWNoUG9pbnRSYWRpdXMoKSBpcyBub3Qgc3VwcG9ydGVkCitCdWcoRUZMKSBmYXN0
L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0K
IAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciB0ZXN0UnVu
bmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlCiBCdWcoRUZMKSBmYXN0L21lZGlhL21lZGlhLXF1
ZXJ5LWxpc3QtMDIuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165261</attachid>
            <date>2012-09-22 06:24:25 -0700</date>
            <delta_ts>2012-09-24 03:52:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96465-20120922222334.patch</filename>
            <type>text/plain</type>
            <size>10820</size>
            <attacher name="Nikhil Bansal">n.bansal</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTMwNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDEyLTA5LTIyICBOaWtoaWwgQmFuc2FsICA8bi5iYW5zYWxAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRvdWNoIGV2ZW50cyBz
dXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTY0NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW11bGF0ZSB0b3VjaCBldmVudHMgaW4gV2Via2l0VGVzdFJ1bm5lciBmb3IgdG91Y2ggcmVsYXRl
ZAorICAgICAgICBsYXlvdXQgdGVzdHMuIFRoaXMgcGF0Y2ggdXNlcyBld2tfdmlld19mZWVkX3Rv
dWNoX2V2ZW50KCkgdG8KKyAgICAgICAgZ2VuZXJhdGUgdG91Y2ggZXZlbnRzLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChFdmVudFNl
bmRlclByb3h5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclBy
b3h5RWZsLmNwcDoKKyAgICAgICAgKFdUUjo6c2V0RXZhc01vZGlmaWVycyk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojp+RXZlbnRTZW5kZXJQcm94eSk6CisgICAgICAgIChXVFIpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpnZXRQbGF0Zm9ybVZpZXcpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoU3RhcnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUpOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OnRvdWNoQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
Y2FuY2VsVG91Y2hQb2ludCk6CisKIDIwMTItMDktMjIgIFphbiBEb2JlcnNlayAgPHphbmRvYmVy
c2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbmV4cGVjdGVkIHJlZnRlc3QgcGFzc2VzIGFyZSBv
bmx5IHJlcG9ydGVkIHdoZW4gcGl4ZWwgdGVzdGluZyBpcyBlbmFibGVkCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24gMTI5MzAxKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPFdlYktpdDIvRVdlYktpdDIu
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNlbmRpZgogCkBAIC01MCw2ICs1MSw3IEBAIHN0
cnVjdCBXVFJFdmVudDsKIGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgewogcHVibGljOgogICAgIGV4
cGxpY2l0IEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqKTsKKyAgICB+RXZlbnRTZW5k
ZXJQcm94eSgpOwogCiAgICAgdm9pZCBtb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50
TW9kaWZpZXJzKTsKICAgICB2b2lkIG1vdXNlVXAodW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9k
aWZpZXJzKTsKQEAgLTk3LDYgKzk5LDEwIEBAIHByaXZhdGU6CiAjZWxpZiBQTEFURk9STShFRkwp
CiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CiAgICAgdm9pZCBk
aXNwYXRjaEV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7CisgICAgRXZhc19PYmplY3QqIGdldFBsYXRm
b3JtVmlldygpIGNvbnN0OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdm9pZCBzZW5k
VG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSk7CisjZW5kaWYKICNlbmRpZgogCiAgICAg
ZG91YmxlIG1fdGltZTsKQEAgLTEyMyw2ICsxMjksOSBAQCBwcml2YXRlOgogI2VsaWYgUExBVEZP
Uk0oRUZMKQogICAgIERlcXVlPFdUUkV2ZW50PiBtX2V2ZW50UXVldWU7CiAgICAgdW5zaWduZWQg
bV9tb3VzZUJ1dHRvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIEVpbmFfTGlzdCog
bV90b3VjaFBvaW50czsKKyNlbmRpZgogI2VuZGlmCiB9OwogCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAkocmV2aXNpb24g
MTI5MzAxKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwvRXZlbnRTZW5kZXJQcm94eUVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMyArMTMxLDE2IEBAIHN0YXRpYyB1bnNpZ25l
ZCBldmFzTW91c2VCdXR0b24odW5zaWduZWQKICAgICByZXR1cm4gRXZhc01vdXNlQnV0dG9uTm9u
ZTsKIH0KIAotc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFzLCBXS0V2ZW50
TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQorc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhFdmFz
KiBldmFzLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzLCBib29sIHN0YXRlID0gdHJ1ZSwg
Ym9vbCBpc1RvdWNoTW9kaWZpZXIgPSBmYWxzZSkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciog
bW9kaWZpZXJOYW1lc1tdID0geyAiU2hpZnQiLCAiQ29udHJvbCIsICJBbHQiLCAiTWV0YSIgfTsK
ICAgICBmb3IgKHVuc2lnbmVkIG1vZGlmaWVyID0gMDsgbW9kaWZpZXIgPCAoc2l6ZW9mKG1vZGlm
aWVyTmFtZXMpIC8gc2l6ZW9mKGNoYXIqKSk7ICsrbW9kaWZpZXIpIHsKLSAgICAgICAgaWYgKHdr
TW9kaWZpZXJzICYgKDEgPDwgbW9kaWZpZXIpKQotICAgICAgICAgICAgZXZhc19rZXlfbW9kaWZp
ZXJfb24oZXZhcywgbW9kaWZpZXJOYW1lc1ttb2RpZmllcl0pOwotICAgICAgICBlbHNlCisgICAg
ICAgIGlmICh3a01vZGlmaWVycyAmICgxIDw8IG1vZGlmaWVyKSkgeworICAgICAgICAgICAgaWYg
KHN0YXRlKQorICAgICAgICAgICAgICAgIGV2YXNfa2V5X21vZGlmaWVyX29uKGV2YXMsIG1vZGlm
aWVyTmFtZXNbbW9kaWZpZXJdKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBl
dmFzX2tleV9tb2RpZmllcl9vZmYoZXZhcywgbW9kaWZpZXJOYW1lc1ttb2RpZmllcl0pOworICAg
ICAgICB9IGVsc2UgaWYgKCFpc1RvdWNoTW9kaWZpZXIpCiAgICAgICAgICAgICBldmFzX2tleV9t
b2RpZmllcl9vZmYoZXZhcywgbW9kaWZpZXJOYW1lc1ttb2RpZmllcl0pOwogICAgIH0KIH0KQEAg
LTI5Myw5ICsyOTYsMTkgQEAgRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0
QwogICAgICwgbV9jbGlja1RpbWUoMCkKICAgICAsIG1fY2xpY2tCdXR0b24oV1RSTW91c2VCdXR0
b25Ob25lKQogICAgICwgbV9tb3VzZUJ1dHRvbihXVFJNb3VzZUJ1dHRvbk5vbmUpCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hQb2ludHMoMCkKKyNlbmRpZgogewogfQog
CitFdmVudFNlbmRlclByb3h5Ojp+RXZlbnRTZW5kZXJQcm94eSgpCit7CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICBjbGVhclRvdWNoUG9pbnRzKCk7CisjZW5kaWYKK30KKwogdm9pZCBF
dmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pCiB7
CiAgICAgaWYgKG1fdGltZSAtIG1fY2xpY2tUaW1lIDwgMSAmJiBtX3Bvc2l0aW9uID09IG1fY2xp
Y2tQb3NpdGlvbiAmJiBidXR0b24gPT0gbV9jbGlja0J1dHRvbikgewpAQCAtNDMxLDU1ICs0NDQs
MTI4IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXMsIDApOwogfQogCitpbmxpbmUgRXZhc19PYmplY3QqIEV2ZW50U2Vu
ZGVyUHJveHk6OmdldFBsYXRmb3JtVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworfQorCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFRvdWNoRXZlbnQoRXdr
X1RvdWNoX0V2ZW50X1R5cGUgZXZlbnRUeXBlKQoreworICAgIEFTU0VSVChtX3RvdWNoUG9pbnRz
KTsKKworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gZ2V0UGxhdGZvcm1WaWV3KCk7CisgICAg
ZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudChld2tWaWV3LCBldmVudFR5cGUsIG1fdG91Y2hQb2lu
dHMsIGV2YXNfa2V5X21vZGlmaWVyX2dldChldmFzX29iamVjdF9ldmFzX2dldChld2tWaWV3KSkp
OworCisgICAgZm9yIChFaW5hX0xpc3QqIGxpc3QgPSBtX3RvdWNoUG9pbnRzOyBsaXN0OyApIHsK
KyAgICAgICAgRWluYV9MaXN0KiB0ZW1wTGlzdCA9IGxpc3Q7CisgICAgICAgIGxpc3QgPSBlaW5h
X2xpc3RfbmV4dChsaXN0KTsKKworICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQg
PSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfZGF0YV9nZXQodGVtcExp
c3QpKTsKKyAgICAgICAgaWYgKCF0b3VjaFBvaW50KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmICgodG91Y2hQb2ludC0+c3RhdGUgPT0gRVZBU19UT1VDSF9QT0lOVF9VUCkgfHwg
KHRvdWNoUG9pbnQtPnN0YXRlID09IEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMKSkgeworICAgICAg
ICAgICAgZGVsZXRlIHRvdWNoUG9pbnQ7CisgICAgICAgICAgICBtX3RvdWNoUG9pbnRzID0gZWlu
YV9saXN0X3JlbW92ZV9saXN0KG1fdG91Y2hQb2ludHMsIHRlbXBMaXN0KTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IEVWQVNfVE9VQ0hfUE9JTlRfU1RJ
TEw7CisgICAgfQorfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50
IHgsIGludCB5KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaW50IGlkID0gMDsKKyAg
ICBpZiAobV90b3VjaFBvaW50cykgeworICAgICAgICBFaW5hX0xpc3QqIGxhc3QgPSBlaW5hX2xp
c3RfbGFzdChtX3RvdWNoUG9pbnRzKTsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiB0b3VjaFBv
aW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oZWluYV9saXN0X2RhdGFfZ2V0KGxh
c3QpKTsKKyAgICAgICAgaWYgKCF0b3VjaFBvaW50KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlkID0gdG91Y2hQb2ludC0+aWQgKyAxOworICAgIH0KKworICAgIEV3a19Ub3VjaF9Q
b2ludCogdG91Y2hQb2ludCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgaWYgKCF0b3VjaFBv
aW50KQorICAgICAgICByZXR1cm47CisKKyAgICB0b3VjaFBvaW50LT5pZCA9IGlkOworICAgIHRv
dWNoUG9pbnQtPnggPSB4OworICAgIHRvdWNoUG9pbnQtPnkgPSB5OworICAgIHRvdWNoUG9pbnQt
PnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9ET1dOOworCisgICAgbV90b3VjaFBvaW50cyA9IGVp
bmFfbGlzdF9hcHBlbmQobV90b3VjaFBvaW50cywgdG91Y2hQb2ludCk7CiB9CiAKIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6dXBkYXRlVG91Y2hQb2ludChpbnQgaW5kZXgsIGludCB4LCBpbnQgeSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4
IDwgZWluYV9saXN0X2NvdW50KG1fdG91Y2hQb2ludHMpKTsKKworICAgIEV3a19Ub3VjaF9Qb2lu
dCogdG91Y2hQb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9u
dGgobV90b3VjaFBvaW50cywgaW5kZXgpKTsKKyAgICBpZiAoIXRvdWNoUG9pbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIHRvdWNoUG9pbnQtPnggPSB4OworICAgIHRvdWNoUG9pbnQtPnkgPSB5
OworICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9NT1ZFOwogfQogCiB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllciwgYm9vbCBlbmFibGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzZXRF
dmFzTW9kaWZpZXJzKGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGdldFBsYXRmb3JtVmlldygpKSwgbW9k
aWZpZXIsIGVuYWJsZSwgdHJ1ZSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hT
dGFydCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzZW5kVG91Y2hFdmVudChFV0tf
VE9VQ0hfU1RBUlQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoTW92ZSgpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9VQ0hfTU9W
RSk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hFbmQoKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX0VORCk7CiB9CiAKIHZv
aWQgRXZlbnRTZW5kZXJQcm94eTo6dG91Y2hDYW5jZWwoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX0NBTkNFTCk7CiB9CiAKIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICB2b2lkKiBkYXRhID0gMDsKKyAgICBFSU5BX0xJU1RfRlJFRShtX3RvdWNoUG9pbnRz
LCBkYXRhKSB7CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBFd2tfVG91Y2hfUG9p
bnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihkYXRhKTsKKyAg
ICAgICAgICAgIGRlbGV0ZSB0b3VjaFBvaW50OworICAgICAgICB9CisgICAgfQogfQogCiB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgZWluYV9s
aXN0X2NvdW50KG1fdG91Y2hQb2ludHMpKTsKKworICAgIEV3a19Ub3VjaF9Qb2ludCogdG91Y2hQ
b2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgobV90b3Vj
aFBvaW50cywgaW5kZXgpKTsKKyAgICBpZiAoIXRvdWNoUG9pbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9VUDsKIH0KIAogdm9p
ZCBFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBpbmRleCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgZWluYV9s
aXN0X2NvdW50KG1fdG91Y2hQb2ludHMpKTsKKworICAgIEV3a19Ub3VjaF9Qb2ludCogdG91Y2hQ
b2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgobV90b3Vj
aFBvaW50cywgaW5kZXgpKTsKKyAgICBpZiAoIXRvdWNoUG9pbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw7CiB9CiAK
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyhpbnQgcmFkaXVzWCwg
aW50IHJhZGl1c1kpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjkzMDcpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yMiAgTmlr
aGlsIEJhbnNhbCAgPG4uYmFuc2FsQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0g
VGVzdFJ1bm5lciBuZWVkcyB0b3VjaCBldmVudHMgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG91Y2ggZXZlbnRzIHN1cHBvcnQgYWRkZWQg
aW4gV2ViS2l0VGVzdFJ1bm5lciBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA5LTIyICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIHdlZWtl
bmQgZ2FyZGVuaW5nLCB1bnNraXAgbm93IHBhc3NpbmcgdGVzdHMuCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxMjkzMDEp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtp
bmcgY29weSkKQEAgLTE1NiwyMSArMTU2LDggQEAgd2Via2l0Lm9yZy9iLzQyNjc0IGh0dHAvdGVz
dHMvbmF2aWdhdGlvbgogd2Via2l0Lm9yZy9iLzkzNDcwIGZhc3QvZG9tL3RpdGxlLWRpcmVjdGlv
bmFsaXR5LXJlbW92ZUNoaWxkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85MzQ3MCBm
YXN0L2RvbS90aXRsZS1kaXJlY3Rpb25hbGl0eS5odG1sIFsgRmFpbHVyZSBdCiAKLSMgV2ViS2l0
VGVzdFJ1bm5lciBldmVudFNlbmRlciBuZWVkcyB0b3VjaCBldmVudHMgc3VwcG9ydAotd2Via2l0
Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLW11bHRpLXRvdWNoLWV2ZW50cy1s
aW1pdGVkLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90
b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuaHRt
bCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL211bHRp
LXRvdWNoLWdyb3VwZWQtdGFyZ2V0cy5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0
NjUgZmFzdC9ldmVudHMvdG91Y2gvc2VuZC1vbmNhbmNlbC1ldmVudC5odG1sIFsgRmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xv
ci5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtYWN0aXZlLXN0YXRlLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBm
YXN0L2V2ZW50cy90b3VjaC90b3VjaC1jb29yZHMtaW4tem9vbS1hbmQtc2Nyb2xsLmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnNp
ZGUtaWZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50
cy90b3VjaC90b3VjaC1pbnNpZGUtaWZyYW1lLXNjcm9sbGVkLmh0bWwgWyBGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zbGlkZXIuaHRtbCBbIEZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXN0YWxl
LW5vZGUtY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZl
bnRzL3RvdWNoL3RvdWNoLXRhcmdldC1saW1pdGVkLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCBbIEZhaWx1cmUg
XQorIyBXZWJLaXRUZXN0UnVubmVyIHNldFRvdWNoUG9pbnRSYWRpdXMoKSBpcyBub3Qgc3VwcG9y
dGVkCitCdWcoRUZMKSBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRz
Lmh0bWwgWyBGYWlsdXJlIF0KIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVu
dGF0aW9uIGZvciB0ZXN0UnVubmVyLnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlCiBCdWcoRUZMKSBm
YXN0L21lZGlhL21lZGlhLXF1ZXJ5LWxpc3QtMDIuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165347</attachid>
            <date>2012-09-24 03:52:27 -0700</date>
            <delta_ts>2012-09-24 05:49:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96465-20120924195133.patch</filename>
            <type>text/plain</type>
            <size>10492</size>
            <attacher name="Nikhil Bansal">n.bansal</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTM0MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDEyLTA5LTI0ICBOaWtoaWwgQmFuc2FsICA8bi5iYW5zYWxAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRvdWNoIGV2ZW50cyBz
dXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTY0NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW11bGF0ZSB0b3VjaCBldmVudHMgaW4gV2Via2l0VGVzdFJ1bm5lciBmb3IgdG91Y2ggcmVsYXRl
ZAorICAgICAgICBsYXlvdXQgdGVzdHMuIFRoaXMgcGF0Y2ggdXNlcyBld2tfdmlld19mZWVkX3Rv
dWNoX2V2ZW50KCkgdG8KKyAgICAgICAgZ2VuZXJhdGUgdG91Y2ggZXZlbnRzLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChFdmVudFNl
bmRlclByb3h5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclBy
b3h5RWZsLmNwcDoKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OnNldEV2YXNNb2RpZmll
cnMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpnZXRQbGF0Zm9ybVZpZXcpOgorICAgICAgICAo
V1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRl
clByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoU3RhcnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUpOgor
ICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6OnRvdWNoQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
Y2FuY2VsVG91Y2hQb2ludCk6CisKIDIwMTItMDktMjIgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6
b25pQGdvb2dsZS5jb20+CiAKICAgICAgICAgQVg6IExheW91dCB0ZXN0cyB3b3VsZCBiZSBlYXNp
ZXIgdG8gd3JpdGUgaWYgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgY291bGQgZmluZCBhbiBlbGVt
ZW50IGJ5IGlkCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aAkocmV2aXNpb24gMTI5MzM5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxnZGsv
Z2RrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2VsaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgPFdlYktpdDIvRVdlYktpdDIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNlbmRp
ZgogCkBAIC01MCw2ICs1MSw3IEBAIHN0cnVjdCBXVFJFdmVudDsKIGNsYXNzIEV2ZW50U2VuZGVy
UHJveHkgewogcHVibGljOgogICAgIGV4cGxpY2l0IEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRy
b2xsZXIqKTsKKyAgICB+RXZlbnRTZW5kZXJQcm94eSgpOwogCiAgICAgdm9pZCBtb3VzZURvd24o
dW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKICAgICB2b2lkIG1vdXNlVXAodW5z
aWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKQEAgLTk3LDYgKzk5LDEwIEBAIHByaXZh
dGU6CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KGNvbnN0
IFdUUkV2ZW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KGNvbnN0IFdUUkV2ZW50Jik7Cisg
ICAgRXZhc19PYmplY3QqIGdldFBsYXRmb3JtVmlldygpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdm9pZCBzZW5kVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSk7CisjZW5k
aWYKICNlbmRpZgogCiAgICAgZG91YmxlIG1fdGltZTsKQEAgLTEyMyw2ICsxMjksOSBAQCBwcml2
YXRlOgogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIERlcXVlPFdUUkV2ZW50PiBtX2V2ZW50UXVl
dWU7CiAgICAgdW5zaWduZWQgbV9tb3VzZUJ1dHRvbjsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIEVpbmFfTGlzdCogbV90b3VjaFBvaW50czsKKyNlbmRpZgogI2VuZGlmCiB9OwogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclByb3h5
RWZsLmNwcAkocmV2aXNpb24gMTI5MzM5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9lZmwv
RXZlbnRTZW5kZXJQcm94eUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAK
IAogbmFtZXNwYWNlIFdUUiB7CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10g
PSB7ICJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIsICJNZXRhIiB9OworCiBlbnVtIFdUUkV2ZW50
VHlwZSB7CiAgICAgV1RSRXZlbnRUeXBlTm9uZSA9IDAsCiAgICAgV1RSRXZlbnRUeXBlTW91c2VE
b3duLApAQCAtMTMzLDcgKzEzNSw2IEBAIHN0YXRpYyB1bnNpZ25lZCBldmFzTW91c2VCdXR0b24o
dW5zaWduZWQKIAogc3RhdGljIHZvaWQgc2V0RXZhc01vZGlmaWVycyhFdmFzKiBldmFzLCBXS0V2
ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtb2Rp
Zmllck5hbWVzW10gPSB7ICJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIsICJNZXRhIiB9OwogICAg
IGZvciAodW5zaWduZWQgbW9kaWZpZXIgPSAwOyBtb2RpZmllciA8IChzaXplb2YobW9kaWZpZXJO
YW1lcykgLyBzaXplb2YoY2hhciopKTsgKyttb2RpZmllcikgewogICAgICAgICBpZiAod2tNb2Rp
ZmllcnMgJiAoMSA8PCBtb2RpZmllcikpCiAgICAgICAgICAgICBldmFzX2tleV9tb2RpZmllcl9v
bihldmFzLCBtb2RpZmllck5hbWVzW21vZGlmaWVyXSk7CkBAIC0yOTMsNyArMjk0LDE3IEBAIEV2
ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdEMKICAgICAsIG1fY2xpY2tUaW1l
KDApCiAgICAgLCBtX2NsaWNrQnV0dG9uKFdUUk1vdXNlQnV0dG9uTm9uZSkKICAgICAsIG1fbW91
c2VCdXR0b24oV1RSTW91c2VCdXR0b25Ob25lKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgLCBtX3RvdWNoUG9pbnRzKDApCisjZW5kaWYKK3sKK30KKworRXZlbnRTZW5kZXJQcm94eTo6
fkV2ZW50U2VuZGVyUHJveHkoKQogeworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2xl
YXJUb3VjaFBvaW50cygpOworI2VuZGlmCiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBk
YXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKQpAQCAtNDMxLDU1ICs0NDIsMTIzIEBA
IHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBzZXRFdmFzTW9k
aWZpZXJzKGV2YXMsIDApOwogfQogCitpbmxpbmUgRXZhc19PYmplY3QqIEV2ZW50U2VuZGVyUHJv
eHk6OmdldFBsYXRmb3JtVmlldygpCit7CisgICAgcmV0dXJuIG1fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2VuZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50
X1R5cGUgZXZlbnRUeXBlKQoreworICAgIEFTU0VSVChtX3RvdWNoUG9pbnRzKTsKKworICAgIEV2
YXNfT2JqZWN0KiBld2tWaWV3ID0gZ2V0UGxhdGZvcm1WaWV3KCk7CisgICAgZXdrX3ZpZXdfZmVl
ZF90b3VjaF9ldmVudChld2tWaWV3LCBldmVudFR5cGUsIG1fdG91Y2hQb2ludHMsIGV2YXNfa2V5
X21vZGlmaWVyX2dldChldmFzX29iamVjdF9ldmFzX2dldChld2tWaWV3KSkpOworCisgICAgZm9y
IChFaW5hX0xpc3QqIGxpc3QgPSBtX3RvdWNoUG9pbnRzOyBsaXN0OyApIHsKKyAgICAgICAgRWlu
YV9MaXN0KiB0ZW1wTGlzdCA9IGxpc3Q7CisgICAgICAgIGxpc3QgPSBlaW5hX2xpc3RfbmV4dChs
aXN0KTsKKworICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2Fz
dDxFd2tfVG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfZGF0YV9nZXQodGVtcExpc3QpKTsKKyAgICAg
ICAgQVNTRVJUKHRvdWNoUG9pbnQpOworCisgICAgICAgIGlmICgodG91Y2hQb2ludC0+c3RhdGUg
PT0gRVZBU19UT1VDSF9QT0lOVF9VUCkgfHwgKHRvdWNoUG9pbnQtPnN0YXRlID09IEVWQVNfVE9V
Q0hfUE9JTlRfQ0FOQ0VMKSkgeworICAgICAgICAgICAgZGVsZXRlIHRvdWNoUG9pbnQ7CisgICAg
ICAgICAgICBtX3RvdWNoUG9pbnRzID0gZWluYV9saXN0X3JlbW92ZV9saXN0KG1fdG91Y2hQb2lu
dHMsIHRlbXBMaXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0b3VjaFBvaW50LT5z
dGF0ZSA9IEVWQVNfVE9VQ0hfUE9JTlRfU1RJTEw7CisgICAgfQorfQorCiB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgaW50IGlkID0gMDsKKyAgICBpZiAobV90b3VjaFBvaW50cykgeworICAgICAg
ICBFaW5hX0xpc3QqIGxhc3QgPSBlaW5hX2xpc3RfbGFzdChtX3RvdWNoUG9pbnRzKTsKKyAgICAg
ICAgRXdrX1RvdWNoX1BvaW50KiB0b3VjaFBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1Bv
aW50Kj4oZWluYV9saXN0X2RhdGFfZ2V0KGxhc3QpKTsKKyAgICAgICAgQVNTRVJUKHRvdWNoUG9p
bnQpOworCisgICAgICAgIGlkID0gdG91Y2hQb2ludC0+aWQgKyAxOworICAgIH0KKworICAgIEV3
a19Ub3VjaF9Qb2ludCogdG91Y2hQb2ludCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgdG91
Y2hQb2ludC0+aWQgPSBpZDsKKyAgICB0b3VjaFBvaW50LT54ID0geDsKKyAgICB0b3VjaFBvaW50
LT55ID0geTsKKyAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjsK
KworICAgIG1fdG91Y2hQb2ludHMgPSBlaW5hX2xpc3RfYXBwZW5kKG1fdG91Y2hQb2ludHMsIHRv
dWNoUG9pbnQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZVRvdWNoUG9pbnQo
aW50IGluZGV4LCBpbnQgeCwgaW50IHkpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBB
U1NFUlQoaW5kZXggPj0gMCAmJiBpbmRleCA8IGVpbmFfbGlzdF9jb3VudChtX3RvdWNoUG9pbnRz
KSk7CisKKyAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tf
VG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfbnRoKG1fdG91Y2hQb2ludHMsIGluZGV4KSk7CisgICAg
QVNTRVJUKHRvdWNoUG9pbnQpOworCisgICAgdG91Y2hQb2ludC0+eCA9IHg7CisgICAgdG91Y2hQ
b2ludC0+eSA9IHk7CisgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBFVkFTX1RPVUNIX1BPSU5UX01P
VkU7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcihXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IChzaXplb2YobW9kaWZpZXJO
YW1lcykgLyBzaXplb2YoY2hhciopKTsgKytpbmRleCkgeworICAgICAgICBpZiAobW9kaWZpZXIg
JiAoMSA8PCBpbmRleCkpIHsKKyAgICAgICAgICAgIGlmIChlbmFibGUpCisgICAgICAgICAgICAg
ICAgZXZhc19rZXlfbW9kaWZpZXJfb24oZXZhc19vYmplY3RfZXZhc19nZXQoZ2V0UGxhdGZvcm1W
aWV3KCkpLCBtb2RpZmllck5hbWVzW2luZGV4XSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZXZhc19rZXlfbW9kaWZpZXJfb2ZmKGV2YXNfb2JqZWN0X2V2YXNfZ2V0KGdldFBs
YXRmb3JtVmlldygpKSwgbW9kaWZpZXJOYW1lc1tpbmRleF0pOworICAgICAgICB9CisgICAgfQog
fQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoU3RhcnQoKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX1NUQVJUKTsKIH0KIAogdm9p
ZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgc2VuZFRvdWNoRXZlbnQoRVdLX1RPVUNIX01PVkUpOwogfQogCiB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OnRvdWNoRW5kKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNlbmRU
b3VjaEV2ZW50KEVXS19UT1VDSF9FTkQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRv
dWNoQ2FuY2VsKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNlbmRUb3VjaEV2ZW50
KEVXS19UT1VDSF9DQU5DRUwpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNsZWFyVG91
Y2hQb2ludHMoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgdm9pZCogZGF0YSA9IDA7
CisgICAgRUlOQV9MSVNUX0ZSRUUobV90b3VjaFBvaW50cywgZGF0YSkKKyAgICAgICAgZGVsZXRl
IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGRhdGEpOwogfQogCiB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4IDwgZWluYV9saXN0X2NvdW50
KG1fdG91Y2hQb2ludHMpKTsKKworICAgIEV3a19Ub3VjaF9Qb2ludCogdG91Y2hQb2ludCA9IHN0
YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgobV90b3VjaFBvaW50cywg
aW5kZXgpKTsKKyAgICBBU1NFUlQodG91Y2hQb2ludCk7CisKKyAgICB0b3VjaFBvaW50LT5zdGF0
ZSA9IEVWQVNfVE9VQ0hfUE9JTlRfVVA7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2Fu
Y2VsVG91Y2hQb2ludChpbnQgaW5kZXgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBB
U1NFUlQoaW5kZXggPj0gMCAmJiBpbmRleCA8IGVpbmFfbGlzdF9jb3VudChtX3RvdWNoUG9pbnRz
KSk7CisKKyAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tf
VG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfbnRoKG1fdG91Y2hQb2ludHMsIGluZGV4KSk7CisgICAg
QVNTRVJUKHRvdWNoUG9pbnQpOworCisgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBFVkFTX1RPVUNI
X1BPSU5UX0NBTkNFTDsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50
UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTM0
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTA5LTI0ICBOaWtoaWwgQmFuc2FsICA8bi5iYW5zYWxAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRvdWNoIGV2ZW50cyBzdXBwb3J0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3VjaCBl
dmVudHMgc3VwcG9ydCBhZGRlZCBpbiBXZWJLaXRUZXN0UnVubmVyIGZvciBsYXlvdXQgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTIt
MDktMjQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4gVXBkYXRlIHBpeGVsIHJlc3VsdHMgZm9yIDE4IHRlc3RzIG9uIFdpbi4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDEyOTMzOSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVj
dGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTU2LDIxICsxNTYsOCBAQCB3ZWJraXQub3JnL2Iv
NDI2NzQgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uCiB3ZWJraXQub3JnL2IvOTM0NzAgZmFzdC9kb20v
dGl0bGUtZGlyZWN0aW9uYWxpdHktcmVtb3ZlQ2hpbGQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzkzNDcwIGZhc3QvZG9tL3RpdGxlLWRpcmVjdGlvbmFsaXR5Lmh0bWwgWyBGYWlsdXJl
IF0KIAotIyBXZWJLaXRUZXN0UnVubmVyIGV2ZW50U2VuZGVyIG5lZWRzIHRvdWNoIGV2ZW50cyBz
dXBwb3J0Ci13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtbXVsdGkt
dG91Y2gtZXZlbnRzLWxpbWl0ZWQuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1
IGZhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLW11bHRpLXRvdWNoLWV2ZW50cy5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRv
dWNoLWV2ZW50cy5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVu
dHMvdG91Y2gvbXVsdGktdG91Y2gtZ3JvdXBlZC10YXJnZXRzLmh0bWwgWyBGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC9zZW5kLW9uY2FuY2VsLWV2ZW50Lmh0
bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90YXAt
aGlnaGxpZ2h0LWNvbG9yLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0
L2V2ZW50cy90b3VjaC90b3VjaC1hY3RpdmUtc3RhdGUuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWNvb3Jkcy1pbi16b29tLWFuZC1z
Y3JvbGwuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3Rv
dWNoL3RvdWNoLWluc2lkZS1pZnJhbWUuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2
NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLWluc2lkZS1pZnJhbWUtc2Nyb2xsZWQuaHRtbCBb
IEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNs
aWRlci5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtc3RhbGUtbm9kZS1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
OTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtdGFyZ2V0LWxpbWl0ZWQuaHRtbCBbIEZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5o
dG1sIFsgRmFpbHVyZSBdCisjIFdlYktpdFRlc3RSdW5uZXIgc2V0VG91Y2hQb2ludFJhZGl1cygp
IGlzIG5vdCBzdXBwb3J0ZWQKK0J1ZyhFRkwpIGZhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLXNpbmds
ZS10b3VjaC1ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVl
ZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIHRlc3RSdW5uZXIuc2V0Vmlld01vZGVNZWRpYUZlYXR1
cmUKIEJ1ZyhFRkwpIGZhc3QvbWVkaWEvbWVkaWEtcXVlcnktbGlzdC0wMi5odG1sIFsgRmFpbHVy
ZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165362</attachid>
            <date>2012-09-24 05:49:34 -0700</date>
            <delta_ts>2012-09-24 17:53:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96465-20120924214840.patch</filename>
            <type>text/plain</type>
            <size>10251</size>
            <attacher name="Nikhil Bansal">n.bansal</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyOTM1MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDEyLTA5LTI0ICBOaWtoaWwgQmFuc2FsICA8bi5iYW5zYWxAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBUZXN0UnVubmVyIG5lZWRzIHRvdWNoIGV2ZW50cyBz
dXBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTY0NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
aW11bGF0ZSB0b3VjaCBldmVudHMgaW4gV2Via2l0VGVzdFJ1bm5lciBmb3IgdG91Y2ggcmVsYXRl
ZAorICAgICAgICBsYXlvdXQgdGVzdHMuIFRoaXMgcGF0Y2ggdXNlcyBld2tfdmlld19mZWVkX3Rv
dWNoX2V2ZW50KCkgdG8KKyAgICAgICAgZ2VuZXJhdGUgdG91Y2ggZXZlbnRzLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChFdmVudFNl
bmRlclByb3h5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVudFNlbmRlclBy
b3h5RWZsLmNwcDoKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OnNldEV2YXNNb2RpZmll
cnMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkpOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6c2V0VG91Y2hNb2RpZmllcik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnRvdWNoU3RhcnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1v
dmUpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp0b3VjaEVuZCk6CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OnRvdWNoQ2FuY2VsKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6Y2xlYXJUb3VjaFBvaW50cyk6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQ
cm94eTo6Y2FuY2VsVG91Y2hQb2ludCk6CisKIDIwMTItMDktMjQgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGgg
bGF0ZXN0IFF0IDUKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCShyZXZpc2lvbiAxMjkzMzkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2Vu
ZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZWxpZiBQTEFURk9STShFRkwpCisj
aW5jbHVkZSA8V2ViS2l0Mi9FV2ViS2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2Vu
ZGlmCiAKQEAgLTUwLDYgKzUxLDcgQEAgc3RydWN0IFdUUkV2ZW50OwogY2xhc3MgRXZlbnRTZW5k
ZXJQcm94eSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94eShUZXN0Q29u
dHJvbGxlciopOworICAgIH5FdmVudFNlbmRlclByb3h5KCk7CiAKICAgICB2b2lkIG1vdXNlRG93
bih1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRNb2RpZmllcnMpOwogICAgIHZvaWQgbW91c2VVcCh1
bnNpZ25lZCBidXR0b24sIFdLRXZlbnRNb2RpZmllcnMpOwpAQCAtOTcsNiArOTksOSBAQCBwcml2
YXRlOgogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgc2VuZE9yUXVldWVFdmVudChjb25z
dCBXVFJFdmVudCYpOwogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChjb25zdCBXVFJFdmVudCYpOwor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdm9pZCBzZW5kVG91Y2hFdmVudChFd2tfVG91
Y2hfRXZlbnRfVHlwZSk7CisjZW5kaWYKICNlbmRpZgogCiAgICAgZG91YmxlIG1fdGltZTsKQEAg
LTEyMyw2ICsxMjgsOSBAQCBwcml2YXRlOgogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIERlcXVl
PFdUUkV2ZW50PiBtX2V2ZW50UXVldWU7CiAgICAgdW5zaWduZWQgbV9tb3VzZUJ1dHRvbjsKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIEVpbmFfTGlzdCogbV90b3VjaFBvaW50czsKKyNl
bmRpZgogI2VuZGlmCiB9OwogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2VmbC9FdmVu
dFNlbmRlclByb3h5RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L2VmbC9FdmVudFNlbmRlclByb3h5RWZsLmNwcAkocmV2aXNpb24gMTI5MzM5KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9lZmwvRXZlbnRTZW5kZXJQcm94eUVmbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK3N0YXRpYyBjb25zdCBj
aGFyKiBtb2RpZmllck5hbWVzW10gPSB7ICJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIsICJNZXRh
IiB9OworCiBlbnVtIFdUUkV2ZW50VHlwZSB7CiAgICAgV1RSRXZlbnRUeXBlTm9uZSA9IDAsCiAg
ICAgV1RSRXZlbnRUeXBlTW91c2VEb3duLApAQCAtMTMzLDcgKzEzNSw2IEBAIHN0YXRpYyB1bnNp
Z25lZCBldmFzTW91c2VCdXR0b24odW5zaWduZWQKIAogc3RhdGljIHZvaWQgc2V0RXZhc01vZGlm
aWVycyhFdmFzKiBldmFzLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQogewotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBtb2RpZmllck5hbWVzW10gPSB7ICJTaGlmdCIsICJDb250cm9sIiwg
IkFsdCIsICJNZXRhIiB9OwogICAgIGZvciAodW5zaWduZWQgbW9kaWZpZXIgPSAwOyBtb2RpZmll
ciA8IChzaXplb2YobW9kaWZpZXJOYW1lcykgLyBzaXplb2YoY2hhciopKTsgKyttb2RpZmllcikg
ewogICAgICAgICBpZiAod2tNb2RpZmllcnMgJiAoMSA8PCBtb2RpZmllcikpCiAgICAgICAgICAg
ICBldmFzX2tleV9tb2RpZmllcl9vbihldmFzLCBtb2RpZmllck5hbWVzW21vZGlmaWVyXSk7CkBA
IC0yOTMsNyArMjk0LDE3IEBAIEV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVz
dEMKICAgICAsIG1fY2xpY2tUaW1lKDApCiAgICAgLCBtX2NsaWNrQnV0dG9uKFdUUk1vdXNlQnV0
dG9uTm9uZSkKICAgICAsIG1fbW91c2VCdXR0b24oV1RSTW91c2VCdXR0b25Ob25lKQorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoUG9pbnRzKDApCisjZW5kaWYKK3sKK30K
KworRXZlbnRTZW5kZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkoKQogeworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgY2xlYXJUb3VjaFBvaW50cygpOworI2VuZGlmCiB9CiAKIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKQpA
QCAtNDMyLDU0ICs0NDMsMTE3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0
cmluZ1IKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OnNlbmRUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIGV2ZW50VHlwZSkKK3sKKyAg
ICBBU1NFUlQobV90b3VjaFBvaW50cyk7CisKKyAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IG1f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIGV3a192
aWV3X2ZlZWRfdG91Y2hfZXZlbnQoZXdrVmlldywgZXZlbnRUeXBlLCBtX3RvdWNoUG9pbnRzLCBl
dmFzX2tleV9tb2RpZmllcl9nZXQoZXZhc19vYmplY3RfZXZhc19nZXQoZXdrVmlldykpKTsKKwor
ICAgIEVpbmFfTGlzdCogbGlzdDsKKyAgICBFaW5hX0xpc3QqIGxpc3ROZXh0OworICAgIHZvaWQq
IGRhdGE7CisgICAgRUlOQV9MSVNUX0ZPUkVBQ0hfU0FGRShtX3RvdWNoUG9pbnRzLCBsaXN0LCBs
aXN0TmV4dCwgZGF0YSkgeworICAgICAgICAgRXdrX1RvdWNoX1BvaW50KiB0b3VjaFBvaW50ID0g
c3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oZGF0YSk7CisgICAgICAgICBBU1NFUlQodG91
Y2hQb2ludCk7CisKKyAgICAgICAgIGlmICgodG91Y2hQb2ludC0+c3RhdGUgPT0gRVZBU19UT1VD
SF9QT0lOVF9VUCkgfHwgKHRvdWNoUG9pbnQtPnN0YXRlID09IEVWQVNfVE9VQ0hfUE9JTlRfQ0FO
Q0VMKSkgeworICAgICAgICAgICAgIGRlbGV0ZSB0b3VjaFBvaW50OworICAgICAgICAgICAgIG1f
dG91Y2hQb2ludHMgPSBlaW5hX2xpc3RfcmVtb3ZlX2xpc3QobV90b3VjaFBvaW50cywgbGlzdCk7
CisgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IEVWQVNf
VE9VQ0hfUE9JTlRfU1RJTEw7CisgICAgIH0KK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5Ojph
ZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGludCBpZCA9IDA7CisgICAgaWYgKG1fdG91Y2hQb2ludHMpIHsKKyAgICAgICAgRWluYV9MaXN0
KiBsYXN0ID0gZWluYV9saXN0X2xhc3QobV90b3VjaFBvaW50cyk7CisgICAgICAgIEV3a19Ub3Vj
aF9Qb2ludCogdG91Y2hQb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFf
bGlzdF9kYXRhX2dldChsYXN0KSk7CisgICAgICAgIEFTU0VSVCh0b3VjaFBvaW50KTsKKworICAg
ICAgICBpZCA9IHRvdWNoUG9pbnQtPmlkICsgMTsKKyAgICB9CisKKyAgICBFd2tfVG91Y2hfUG9p
bnQqIHRvdWNoUG9pbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50OworICAgIHRvdWNoUG9pbnQtPmlk
ID0gaWQ7CisgICAgdG91Y2hQb2ludC0+eCA9IHg7CisgICAgdG91Y2hQb2ludC0+eSA9IHk7Cisg
ICAgdG91Y2hQb2ludC0+c3RhdGUgPSBFVkFTX1RPVUNIX1BPSU5UX0RPV047CisKKyAgICBtX3Rv
dWNoUG9pbnRzID0gZWluYV9saXN0X2FwcGVuZChtX3RvdWNoUG9pbnRzLCB0b3VjaFBvaW50KTsK
IH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGludCBpbmRleCwg
aW50IHgsIGludCB5KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGluZGV4
ID49IDAgJiYgaW5kZXggPCBlaW5hX2xpc3RfY291bnQobV90b3VjaFBvaW50cykpOworCisgICAg
RXdrX1RvdWNoX1BvaW50KiB0b3VjaFBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50
Kj4oZWluYV9saXN0X250aChtX3RvdWNoUG9pbnRzLCBpbmRleCkpOworICAgIEFTU0VSVCh0b3Vj
aFBvaW50KTsKKworICAgIHRvdWNoUG9pbnQtPnggPSB4OworICAgIHRvdWNoUG9pbnQtPnkgPSB5
OworICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9NT1ZFOwogfQogCiB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllciwgYm9vbCBlbmFibGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCAoc2l6ZW9mKG1vZGlmaWVyTmFtZXMpIC8gc2l6
ZW9mKGNoYXIqKSk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1vZGlmaWVyICYgKDEgPDwgaW5k
ZXgpKSB7CisgICAgICAgICAgICBpZiAoZW5hYmxlKQorICAgICAgICAgICAgICAgIGV2YXNfa2V5
X21vZGlmaWVyX29uKGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdGVzdENvbnRyb2xsZXItPm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpKSwgbW9kaWZpZXJOYW1lc1tpbmRleF0pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV2YXNfa2V5X21vZGlmaWVyX29mZihldmFzX29i
amVjdF9ldmFzX2dldChtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZp
ZXcoKSksIG1vZGlmaWVyTmFtZXNbaW5kZXhdKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9p
ZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaFN0YXJ0KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHNlbmRUb3VjaEV2ZW50KEVXS19UT1VDSF9TVEFSVCk7CiB9CiAKIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6dG91Y2hNb3ZlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNl
bmRUb3VjaEV2ZW50KEVXS19UT1VDSF9NT1ZFKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5
Ojp0b3VjaEVuZCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzZW5kVG91Y2hFdmVu
dChFV0tfVE9VQ0hfRU5EKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaENhbmNl
bCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzZW5kVG91Y2hFdmVudChFV0tfVE9V
Q0hfQ0FOQ0VMKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5OjpjbGVhclRvdWNoUG9pbnRz
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHZvaWQqIGRhdGEgPSAwOworICAgIEVJ
TkFfTElTVF9GUkVFKG1fdG91Y2hQb2ludHMsIGRhdGEpCisgICAgICAgIGRlbGV0ZSBzdGF0aWNf
Y2FzdDxFd2tfVG91Y2hfUG9pbnQqPihkYXRhKTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5
OjpyZWxlYXNlVG91Y2hQb2ludChpbnQgaW5kZXgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBBU1NFUlQoaW5kZXggPj0gMCAmJiBpbmRleCA8IGVpbmFfbGlzdF9jb3VudChtX3RvdWNo
UG9pbnRzKSk7CisKKyAgICBFd2tfVG91Y2hfUG9pbnQqIHRvdWNoUG9pbnQgPSBzdGF0aWNfY2Fz
dDxFd2tfVG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfbnRoKG1fdG91Y2hQb2ludHMsIGluZGV4KSk7
CisgICAgQVNTRVJUKHRvdWNoUG9pbnQpOworCisgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBFVkFT
X1RPVUNIX1BPSU5UX1VQOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNhbmNlbFRvdWNo
UG9pbnQoaW50IGluZGV4KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUKGlu
ZGV4ID49IDAgJiYgaW5kZXggPCBlaW5hX2xpc3RfY291bnQobV90b3VjaFBvaW50cykpOworCisg
ICAgRXdrX1RvdWNoX1BvaW50KiB0b3VjaFBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1Bv
aW50Kj4oZWluYV9saXN0X250aChtX3RvdWNoUG9pbnRzLCBpbmRleCkpOworICAgIEFTU0VSVCh0
b3VjaFBvaW50KTsKKworICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gRVZBU19UT1VDSF9QT0lOVF9D
QU5DRUw7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6c2V0VG91Y2hQb2ludFJhZGl1cyhp
bnQgcmFkaXVzWCwgaW50IHJhZGl1c1kpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjkzNTIpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0wOS0yNCAgTmlraGlsIEJhbnNhbCAgPG4uYmFuc2FsQHNhbXN1bmcuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gVGVzdFJ1bm5lciBuZWVkcyB0b3VjaCBldmVudHMgc3VwcG9ydC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDY1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG91Y2ggZXZlbnRzIHN1
cHBvcnQgYWRkZWQgaW4gV2ViS2l0VGVzdFJ1bm5lciBmb3IgbGF5b3V0IHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA5LTI0ICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gVW5za2lwIHByb3BlciBzaGFkb3cgZG9tIHRlc3QgY2FzZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTI5MzM5
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsMjEgKzE1Niw4IEBAIHdlYmtpdC5vcmcvYi80MjY3NCBodHRwL3Rl
c3RzL25hdmlnYXRpb24KIHdlYmtpdC5vcmcvYi85MzQ3MCBmYXN0L2RvbS90aXRsZS1kaXJlY3Rp
b25hbGl0eS1yZW1vdmVDaGlsZC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTM0NzAg
ZmFzdC9kb20vdGl0bGUtZGlyZWN0aW9uYWxpdHkuaHRtbCBbIEZhaWx1cmUgXQogCi0jIFdlYktp
dFRlc3RSdW5uZXIgZXZlbnRTZW5kZXIgbmVlZHMgdG91Y2ggZXZlbnRzIHN1cHBvcnQKLXdlYmtp
dC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1tdWx0aS10b3VjaC1ldmVudHMt
bGltaXRlZC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMv
dG91Y2gvYmFzaWMtbXVsdGktdG91Y2gtZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLmh0
bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC9tdWx0
aS10b3VjaC1ncm91cGVkLXRhcmdldHMuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2
NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3NlbmQtb25jYW5jZWwtZXZlbnQuaHRtbCBbIEZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29s
b3IuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzk2NDY1IGZhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLWFjdGl2ZS1zdGF0ZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUg
ZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtY29vcmRzLWluLXpvb20tYW5kLXNjcm9sbC5odG1sIFsg
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtaW5z
aWRlLWlmcmFtZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtaW5zaWRlLWlmcmFtZS1zY3JvbGxlZC5odG1sIFsgRmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtc2xpZGVyLmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1zdGFs
ZS1ub2RlLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi85NjQ2NSBmYXN0L2V2
ZW50cy90b3VjaC90b3VjaC10YXJnZXQtbGltaXRlZC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvOTY0NjUgZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtdGFyZ2V0Lmh0bWwgWyBGYWlsdXJl
IF0KKyMgV2ViS2l0VGVzdFJ1bm5lciBzZXRUb3VjaFBvaW50UmFkaXVzKCkgaXMgbm90IHN1cHBv
cnRlZAorQnVnKEVGTCkgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50
cy5odG1sIFsgRmFpbHVyZSBdCiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1l
bnRhdGlvbiBmb3IgdGVzdFJ1bm5lci5zZXRWaWV3TW9kZU1lZGlhRmVhdHVyZQogQnVnKEVGTCkg
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTAyLmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>