<?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>73920</bug_id>
          
          <creation_ts>2011-12-06 06:33:16 -0800</creation_ts>
          <short_desc>[Qt] Tiled backing store failing to update view under certain conditions</short_desc>
          <delta_ts>2014-02-03 03:19:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Bruno Abinader (history only)">bruno.abinader</reporter>
          <assigned_to name="Lamarque V. Souza">lamarque</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>lamarque</cc>
    
    <cc>stephan.binner</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515870</commentid>
    <comment_count>0</comment_count>
      <attachid>118039</attachid>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2011-12-06 06:33:16 -0800</bug_when>
    <thetext>Created attachment 118039
QtWebKit testcase for QGraphicsWebView

When loading a new webpage on a QGraphicsWebView with Tiled Backing Store option enabled, some dirty tiles from the previous webpage are still seen when scrolling down the webpage. The tiles are only updated after a scale change. A testcase is provided as a patch. Desktop and Harmattan device results are the same:

FAIL!  : tst_QGraphicsWebView::widgetsRenderingAfterScale(3 NoResize, TBS, NoFrozen, BeforeScene) &apos;email2AfterScrollPixmap.toImage() == email2AfterScalePixmap.toImage()&apos; returned FALSE. ()
   Loc: [tst_qgraphicswebview.cpp(352)]
FAIL!  : tst_QGraphicsWebView::widgetsRenderingAfterScale(4 NoResize, TBS, NoFrozen, AfterScene) &apos;email2AfterScrollPixmap.toImage() == email2AfterScalePixmap.toImage()&apos; returned FALSE. ()
   Loc: [tst_qgraphicswebview.cpp(352)]
FAIL!  : tst_QGraphicsWebView::widgetsRenderingAfterScale(9 Resize, TBS, NoFrozen, AfterScene) &apos;email2AfterScrollPixmap.toImage() == email2AfterScalePixmap.toImage()&apos; returned FALSE. ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515874</commentid>
    <comment_count>1</comment_count>
    <who name="Bruno Abinader (history only)">bruno.abinader</who>
    <bug_when>2011-12-06 06:36:20 -0800</bug_when>
    <thetext>Also worth noticing that this bug has been tested on QtWebKit 2.2 release and trunk version as well (using Qt 4.8).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750322</commentid>
    <comment_count>2</comment_count>
      <attachid>170541</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-10-24 20:07:35 -0700</bug_when>
    <thetext>Created attachment 170541
Patch

Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750803</commentid>
    <comment_count>3</comment_count>
      <attachid>170646</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-10-25 07:30:17 -0700</bug_when>
    <thetext>Created attachment 170646
Patch

Merge last two patches into one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750812</commentid>
    <comment_count>4</comment_count>
      <attachid>170646</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-25 07:41:34 -0700</bug_when>
    <thetext>Comment on attachment 170646
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2026
&gt; +        frame()-&gt;tiledBackingStore()-&gt;removeAllTiles();

This feels quite wrong to drop all tiles just because of an issue edge tiles, the same tiles can be used between pages, and invalidate calls are responsible of triggering a refresh of the tile contents.
There is a call to tiledBackingStoreContentsRect in TiledBackingStore::createTiles that should return a different contents size for the new page. A change of that rect should be responsible of triggering a call to resizeEdgeTiles. Please check around there to fix your issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754641</commentid>
    <comment_count>5</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-10-30 14:00:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 170646 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170646&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:2026
&gt; &gt; +        frame()-&gt;tiledBackingStore()-&gt;removeAllTiles();
&gt; 
&gt; This feels quite wrong to drop all tiles just because of an issue edge tiles, the same tiles can be used between pages, and invalidate calls are responsible of triggering a refresh of the tile contents.
&gt; There is a call to tiledBackingStoreContentsRect in TiledBackingStore::createTiles that should return a different contents size for the new page. A change of that rect should be responsible of triggering a call to resizeEdgeTiles. Please check around there to fix your issue.

I did some tests and WebKit calls resizeEdgeTiles() when loading the new page. resizeEdgeTiles() does not remove any tile, but TiledBackingStore::updateTileBuffers() detects some dirty tiles, but they are not being updated according to the new update when updateTileBuffers() calls dirtyTiles[n]-&gt;updateBackBuffer() for each of those dirty tiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754646</commentid>
    <comment_count>6</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-10-30 14:06:08 -0700</bug_when>
    <thetext>Just as a note, TiledBackingStore::commitScaleChange() always clears all tiles. Probably that is why this problem does not happen when scaling the page contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756591</commentid>
    <comment_count>7</comment_count>
      <attachid>171921</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-01 13:57:30 -0700</bug_when>
    <thetext>Created attachment 171921
Patch

Fix some issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756598</commentid>
    <comment_count>8</comment_count>
      <attachid>171921</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-01 13:59:58 -0700</bug_when>
    <thetext>Comment on attachment 171921
Patch

This patch should have not gone to this bug entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756789</commentid>
    <comment_count>9</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-01 18:27:26 -0700</bug_when>
    <thetext>I tried to find a solution that does not involve dropping all tiles but none of my attempts worked for all cases. I tried dropping only the tiles marked as dirty when loading a new page, but if I scroll down to the end of the new page there is a wrong tile there. I fail to see how the same tile can be used for different pages. That would work only if the tile is part of the pagen&apos;s background or the pages are very similar, but the current code does not detect that situation and only takes the coordinates into account, not the page&apos;s url. tiledBackingStoreContentsRect can eventually return the same size for two different pages, can&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757076</commentid>
    <comment_count>10</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-02 03:53:05 -0700</bug_when>
    <thetext>(In reply to comment #9)
When a page change, the part of the backing store that needs to be re-rendered is invalidated. When the new page is loaded, all the backing store needs to be invalidated.
If the page grows or shrink, then the backing store&apos;s size needs to be adjusted as well (an eventual call to createTiles), adding tiles allow growing, and resizeEdgeTiles takes care of resizing or dropping tiles until the size fits.
So to put it differently, each time that the value returned by tiledBackingStoreContentsRect changes, a call to createTiles should be triggered, and this is what seems to be missing.
Right now the only way to trigger it seems to be:
- setContentsFrozen (doesn&apos;t make much sense in this case)
- setTileSize (neither)
- coverWithTilesIfNeeded (won&apos;t call createTiles if the visible rect didn&apos;t change)

So maybe a way to fix it would be to add a TiledBackingStore::contentsRectChanged that would be called when the FrameView size changed and would call createTiles.
Another, less clean way, would be to keep the last ContentsRect and check if it changed in coverWithTilesIfNeeded, so that we also call createTiles in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757077</commentid>
    <comment_count>11</comment_count>
      <attachid>170646</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-02 03:53:40 -0700</bug_when>
    <thetext>Comment on attachment 170646
Patch

Setting it to r- so that it doesn&apos;t appear in the review queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757081</commentid>
    <comment_count>12</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-02 04:12:28 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; - coverWithTilesIfNeeded (won&apos;t call createTiles if the visible rect didn&apos;t change)

Humm if you say that you scroll to the bottom and still see the old tiles, then maybe the problem is different, maybe the value of tiledBackingStoreContentsRect isn&apos;t correct, or resizeEdgeTiles isn&apos;t doing its job properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757889</commentid>
    <comment_count>13</comment_count>
      <attachid>172206</attachid>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-02 21:45:23 -0700</bug_when>
    <thetext>Created attachment 172206
Log with printf of some calls

Check the attached file, it contains some printfs of some calls without any modification in the current behaviour of WebKit (the method WebCore::TiledBackingStore::removeAllTiles() just prints the printf, it does not remove any tile). You can see after the printf in removeAllTiles() that WebKit calls createTiles(), then setKeepRect(), which does not remove any tile (&quot;will remove 0/4&quot; means will remove 0 tile from a total of 4 tiles), then call resizeEdgeTiles() (because the current rect changed). resizeEdgeTiles() resizes two tiles and does not remove any (line with &quot;WebCore::TiledBackingStore::resizeEdgeTiles(): will remove 0/6 1&quot;). In the end it calls updateTileBuffers(), which detects that there are four dirty tiles, but updateTileBuffers() seems to use the old page and not the new page to update the buffers.

The change I mentioned in comment #9 is changing updateTileBuffers() to delete the dirty tiles and create new tiles instead of calling dirtyTiles[n]-&gt;updateBackBuffer(). That change fixed the problem for what I think is the visible area (I have not checked this yet). So when I scroll down to the end of the new page and probably reach a tile that does not intersect the visible area the tile is incorrect.

dirtyTiles[n]-&gt;updateBackBuffer() is platform dependent. I am using Qt platform to test it, I have not tested if this problem also happens with other platform yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758346</commentid>
    <comment_count>14</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-05 01:59:42 -0800</bug_when>
    <thetext>(In reply to comment #13)
Ok, from your output it seems like it&apos;s fine that no tile are removed. The two bottom tiles would be removed only if the height dropped lower than 1024 (1185 in your case).

Maybe the removal and resizing of tiles isn&apos;t the problem here, the problem could be that a resized tile won&apos;t trigger a repaint of the graphics view in the resized area.
The way a shrinking tile repaint works is that TileQt::resize will update TileQt::m_rect which will lead TileQt::paint not to paint over the background on this area.

There should be code that would pass the shrunk rect to the paintedArea with tiledBackingStorePaintEnd to force the QGraphicsView to repaint the background at this area and then call TileQt::paint, but I can&apos;t find any.
A way to do it would be to remove the &quot;if (m_rect.maxX() &gt; oldRect.maxX())&quot; conditions in TileQt::resize and also invalidate the shrunk part of a tile.

If it was the case though you would probably not see the old part of the tile when the tile isn&apos;t visible in the QGraphicsView and then scroll down to see them (which would call TileQt::paint on that area), so it might be a somehow different issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758536</commentid>
    <comment_count>15</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-05 07:59:35 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; Ok, from your output it seems like it&apos;s fine that no tile are removed. The two bottom tiles would be removed only if the height dropped lower than 1024 (1185 in your case).
&gt; 
&gt; Maybe the removal and resizing of tiles isn&apos;t the problem here, the problem could be that a resized tile won&apos;t trigger a repaint of the graphics view in the resized area.
&gt; The way a shrinking tile repaint works is that TileQt::resize will update TileQt::m_rect which will lead TileQt::paint not to paint over the background on this area.
&gt; 
&gt; There should be code that would pass the shrunk rect to the paintedArea with tiledBackingStorePaintEnd to force the QGraphicsView to repaint the background at this area and then call TileQt::paint, but I can&apos;t find any.
&gt; A way to do it would be to remove the &quot;if (m_rect.maxX() &gt; oldRect.maxX())&quot; conditions in TileQt::resize and also invalidate the shrunk part of a tile.

you mean doing this?

void TileQt::resize(const IntSize&amp; newSize)
{
    IntRect oldRect = m_rect;
    m_rect = IntRect(m_rect.location(), newSize);

    //if (m_rect.maxX() &gt; oldRect.maxX())
        invalidate(IntRect(oldRect.maxX(), oldRect.y(), m_rect.maxX() - oldRect.maxX(), m_rect.height()));
    //if (m_rect.maxY() &gt; oldRect.maxY())
        invalidate(IntRect(oldRect.x(), oldRect.maxY(), m_rect.width(), m_rect.maxY() - oldRect.maxY()));
    invalidate(m_rect);
}

If so then it does not fix the entire issue :-( The tiles at the end of the second page are correct now, but not the ones in the middle.
 
&gt; If it was the case though you would probably not see the old part of the tile when the tile isn&apos;t visible in the QGraphicsView and then scroll down to see them (which would call TileQt::paint on that area), so it might be a somehow different issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758581</commentid>
    <comment_count>16</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-05 08:52:09 -0800</bug_when>
    <thetext>(In reply to comment #15)
The coordinates need to be fixed too, so maybe something like this:

void TileQt::resize(const IntSize&amp; newSize)
{
    IntRect oldRect = m_rect;
    m_rect = IntRect(m_rect.location(), newSize);
    invalidate(unionRect(m_rect, oldRect));
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758604</commentid>
    <comment_count>17</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-05 09:15:44 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; The coordinates need to be fixed too, so maybe something like this:
&gt; 
&gt; void TileQt::resize(const IntSize&amp; newSize)
&gt; {
&gt;     IntRect oldRect = m_rect;
&gt;     m_rect = IntRect(m_rect.location(), newSize);
&gt;     invalidate(unionRect(m_rect, oldRect));
&gt; }

Nope, the result is the same as in comment #15.

By what I can see in the logs there are 6 tiles created after loading the second page. 2 of them are resized and 4 are marked as dirty. I guess the 4 marked as dirty are the ones righ below the visible area when I start scrolling and the 2 being resized are the ones at the end of the scrolling. I think that because if I change TiledBackingStore::updateTileBuffers() to delete/recreate the dirty tiles instead of just calling dirtyTiles[n]-&gt;updateBackBuffer() then it almost work (the tiles are created but with a delay, at first the page becomes fully transparent and only after I start scrolling the new tiles show up). I think changing TileQt::resize() is not affecting the 4 dirty tiles in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768411</commentid>
    <comment_count>18</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-15 12:59:04 -0800</bug_when>
    <thetext>Does anyone have any thought about what comment #17? Is my comment there correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769054</commentid>
    <comment_count>19</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-16 02:19:40 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Does anyone have any thought about what comment #17? Is my comment there correct?

Your comment seems right, additionally the only things I can assert are:
- All 6 tiles should be marked as dirty when the next page is loaded, at least under the area covered by the new page
- The two bottom tiles should be resized, no tile should be removed
- The 6 tiles updated should trigger a full repaint of the QGraphicsWebView

You could try to debug a bit more in those areas, printing out dirty and repainted rects. I can&apos;t say much more from the data you provided yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770802</commentid>
    <comment_count>20</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-11-19 09:04:59 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Does anyone have any thought about what comment #17? Is my comment there correct?
&gt; 
&gt; Your comment seems right, additionally the only things I can assert are:
&gt; - All 6 tiles should be marked as dirty when the next page is loaded, at least under the area covered by the new page
&gt; - The two bottom tiles should be resized, no tile should be removed
&gt; - The 6 tiles updated should trigger a full repaint of the QGraphicsWebView
&gt; 
&gt; You could try to debug a bit more in those areas, printing out dirty and repainted rects. I can&apos;t say much more from the data you provided yet.


If I change the line below in TileQt::invalidate() from

IntRect tileDirtyRect = intersection(dirtyRect, m_rect);

to

IntRect tileDirtyRect = unionRect(dirtyRect, m_rect);

The the problem reduces itself. As long as the scroll is small it works as expected while with bigger scrolls the problem still remains although minimized (the area with wrong tiles is smaller). So there must be a problem in the code that calculates the size of the dirty area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791539</commentid>
    <comment_count>21</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-12-14 04:50:09 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; - The 6 tiles updated should trigger a full repaint of the QGraphicsWebView

How can I trigger a full repaint of the QGraphicsWebView.
 
&gt; You could try to debug a bit more in those areas, printing out dirty and repainted rects. I can&apos;t say much more from the data you provided yet.

I did several tests with this bug and just invalidating the tile does not fix the problem. In one of my tests I did this change (the &quot;#if 0&quot; part is the original code):

    Tile::Coordinate topLeft = tileCoordinateForPoint(coverRect.location());
    Tile::Coordinate bottomRight = tileCoordinateForPoint(innerBottomRight(coverRect));
    Vector&lt;Tile::Coordinate&gt; toRemove;
    for (int yCoordinate = topLeft.y(); yCoordinate &lt;= bottomRight.y(); ++yCoordinate) {
        for (int xCoordinate = topLeft.x(); xCoordinate &lt;= bottomRight.x(); ++xCoordinate) {
            Tile::Coordinate currentCoordinate(xCoordinate, yCoordinate);
            RefPtr&lt;Tile&gt; currentTile = tileAt(currentCoordinate);
            if (currentTile) {
#if 0
		continue;
#else
                if (m_removeOutdatedTiles)
                    toRemove.append(currentCoordinate);
                else
                    continue;
#endif
            }
            ++requiredTileCount;
            double distance = tileDistance(visibleRect, currentCoordinate);
            if (distance &gt; shortestDistance)
                continue;
            if (distance &lt; shortestDistance) {
                tilesToCreate.clear();
                shortestDistance = distance;
            }
            tilesToCreate.append(currentCoordinate);
        }
    }

m_removeOutdatedTiles is set to true right after a new page is loaded and set to false at the end of TiledBackingStore::createTiles(). With this change it works, but it is almost equal to the patch in comment #3.

If I change &quot;toRemove.append(currentCoordinate);&quot; with &quot;currentTile-&gt;invalidate(currentTile-&gt;rect()); continue;&quot; then the correct tile image is mixed with outdated tile image as if currentTile-&gt;invalidate() does not erase the outdated image before drawing the new tile image.

I also tried changing TileQt::updateBackBuffer() to always recreate m_backBuffer instead of reusing the m_buffer:

    if (!m_backBuffer) {

#if 1
        if (m_buffer) {
            delete m_buffer;
            m_buffer = 0;
        }
#endif

        if (!m_buffer) {
            m_backBuffer = new QPixmap(m_backingStore-&gt;tileSize().width(), m_backingStore-&gt;tileSize().height());
            m_backBuffer-&gt;fill(m_backingStore-&gt;client()-&gt;tiledBackingStoreBackgroundColor());
        } else {
            // Currently all buffers are updated synchronously at the same time so there is no real need
            // to have separate back and front buffers. Just use the existing buffer.
            m_backBuffer = m_buffer;
            m_buffer = 0;
        }
    }


With this change there is no mixed outdated and new tile, but there is also a blank area in the final page where it should not be. So this change erases more data than it should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791557</commentid>
    <comment_count>22</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-12-14 05:37:40 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; How can I trigger a full repaint of the QGraphicsWebView.

This should be a result of the paintedArea passed to tiledBackingStorePaintEnd.
The QGraphicsView should repaint the parts of its visible area that intersect with the area made dirty by tile modifications/removals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791832</commentid>
    <comment_count>23</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2012-12-14 13:59:59 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; How can I trigger a full repaint of the QGraphicsWebView.
&gt; 
&gt; This should be a result of the paintedArea passed to tiledBackingStorePaintEnd.
&gt; The QGraphicsView should repaint the parts of its visible area that intersect with the area made dirty by tile modifications/removals.

Well, the line &quot;currentTile-&gt;invalidate(currentTile-&gt;rect()); continue;&quot; I mentioned in comment #21 is supposed to add the whole tile&apos;s area to the paintedArea. Unless currentTile-&gt;rect() does not return the whole tile&apos;s area. So this is not working as expected when loading a new page. What seems to happen is that webkit is painting the new tile on top of the old one. That (painting a tile on top of another) is happening even when removing the tile instead of just invalidating it. The unit tests still returns error in this case (the image are not pixel by pixel equal), some parts of the text are darker in one of the images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872776</commentid>
    <comment_count>24</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-04-10 07:14:56 -0700</bug_when>
    <thetext>I believe that those are the same bug, judging from the similar symptoms.

*** This bug has been marked as a duplicate of bug 113752 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873192</commentid>
    <comment_count>25</comment_count>
    <who name="Lamarque V. Souza">lamarque</who>
    <bug_when>2013-04-10 13:20:54 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I believe that those are the same bug, judging from the similar symptoms.
&gt; 
&gt; *** This bug has been marked as a duplicate of bug 113752 ***

The patch in bug 113752 does not fix this bug. The unit tests in my last patch still catch the same errors. You can also see errors when browsing pages with QtTestBrowser with tiled backing store enabled.

I really do not think there is any other option but erasing all tiles when loading a new page, at least for now. When loading a new page the tile objects keep the image buffer of the old page and draws the tile for the new page over that buffer (that is, over the old page&apos;s tile). It should clear the buffer first. That is one of the problems I see. Even after erasing all tiles after loading a new page I still can see errors when browsing with QtTestBrowser, so erasing the tiles is a progress, not a final fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873609</commentid>
    <comment_count>26</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-04-11 01:16:26 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I really do not think there is any other option but erasing all tiles when loading a new page, at least for now. When loading a new page the tile objects keep the image buffer of the old page and draws the tile for the new page over that buffer (that is, over the old page&apos;s tile). It should clear the buffer first. That is one of the problems I see. Even after erasing all tiles after loading a new page I still can see errors when browsing with QtTestBrowser, so erasing the tiles is a progress, not a final fix.

Ok thanks for verifying, it could then be a bug somewhere between TiledBackingStore and QGraphicsWebView.
Erasing tiles must not be necessary, the backing store is completely invalidated when the page is navigated and this should be enough. Applying a workaround like this has a maintenance cost and should only be done if we understand the problem enough to know that this is the best solution we have. Right now it doesn&apos;t seem to be the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975354</commentid>
    <comment_count>27</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:19:23 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118039</attachid>
            <date>2011-12-06 06:33:16 -0800</date>
            <delta_ts>2011-12-06 06:33:16 -0800</delta_ts>
            <desc>QtWebKit testcase for QGraphicsWebView</desc>
            <filename>0001-Testcase-for-bug-290684.patch</filename>
            <type>text/plain</type>
            <size>17673</size>
            <attacher name="Bruno Abinader (history only)">bruno.abinader</attacher>
            
              <data encoding="base64">RnJvbSA2NDc0MDgyOWJmYTA2NmEzMjc3NWMyYzIwYzgzNzQ3ZDQzOGM5NjkwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciA8YnJ1bm8uYWJp
bmFkZXJAYmFzeXNrb20uY29tPgpEYXRlOiBUaHUsIDEgRGVjIDIwMTEgMTI6NDU6NDAgKzAxMDAK
U3ViamVjdDogW1BBVENIXSBUZXN0Y2FzZSBmb3IgYnVnICMyOTA2ODQuCgpTaWduZWQtb2ZmLWJ5
OiBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciA8YnJ1bm8uYWJpbmFkZXJAYmFzeXNrb20uY29t
PgotLS0KIC4uLi90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDEuaHRtbCAg
IHwgICA3NCArKysrKysrKysKIC4uLi90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9l
bWFpbDIuaHRtbCAgIHwgICA2NyArKysrKysrKwogLi4uL3FncmFwaGljc3dlYnZpZXcvdHN0X3Fn
cmFwaGljc3dlYnZpZXcuY3BwICAgICAgfCAgMTU4ICsrKysrKysrKysrKysrKysrKystCiAuLi4v
cWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5xcmMgICAgICB8ICAgIDIgKwog
NCBmaWxlcyBjaGFuZ2VkLCAyOTkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvcmVz
b3VyY2VzL2VtYWlsMS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9xdC90
ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDIuaHRtbAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvZW1haWwx
Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvcmVzb3VyY2Vz
L2VtYWlsMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NGY5YjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZp
ZXcvcmVzb3VyY2VzL2VtYWlsMS5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzxicj48YnI+PGRpdiBj
bGFzcz0iZ21haWxfcXVvdGUiPi0tLS0tLS0tLS0gV2VpdGVyZ2VsZWl0ZXRlIE5hY2hyaWNodCAt
LS0tLS0tLS0tPGJyPlZvbjogPGIgY2xhc3M9ImdtYWlsX3NlbmRlcm5hbWUiPkJhc3kgVGVzdDwv
Yj4gPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86YnN0ZXN0NDQ2QGdvb2dsZW1h
aWwuY29tIj5ic3Rlc3Q0NDZAZ29vZ2xlbWFpbC5jb208L2E+Jmd0Ozwvc3Bhbj48YnI+CitEYXR1
bTogMTcuIE5vdmVtYmVyIDIwMTEgMTM6NDM8YnI+QmV0cmVmZjogUmU6IFRlc3Q8YnI+QW46IDxh
IGhyZWY9Im1haWx0bzpic3Rlc3Q0NDZAZ21haWwuY29tIj5ic3Rlc3Q0NDZAZ21haWwuY29tPC9h
Pjxicj48YnI+PGJyPmNoYWluMzxicj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPkFtIDE3
LiBOb3ZlbWJlciAyMDExIDEzOjQzIHNjaHJpZWIgQmFzeSBUZXN0IDxzcGFuIGRpcj0ibHRyIj4m
bHQ7PGEgaHJlZj0ibWFpbHRvOmJzdGVzdDQ0NkBnb29nbGVtYWlsLmNvbSIgdGFyZ2V0PSJfYmxh
bmsiPmJzdGVzdDQ0NkBnb29nbGVtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPjo8ZGl2PgorPGRpdj48
L2Rpdj48ZGl2IGNsYXNzPSJoNSI+PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIg
c3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRp
bmctbGVmdDoxZXgiPgorY2hhaW4yPGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+QW0g
MTcuIE5vdmVtYmVyIDIwMTEgMTM6MTQgc2NocmllYiBCYXN5IFRlc3QgPHNwYW4gZGlyPSJsdHIi
PiZsdDs8YSBocmVmPSJtYWlsdG86YnN0ZXN0NDQ2QGdvb2dsZW1haWwuY29tIiB0YXJnZXQ9Il9i
bGFuayI+YnN0ZXN0NDQ2QGdvb2dsZW1haWwuY29tPC9hPiZndDs8L3NwYW4+OjxkaXY+PGRpdj48
L2Rpdj48ZGl2PgorCis8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i
bWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0
OjFleCI+Cis8cD4KKyBLw7xuYXN0IHNhZ3RlIGFtIERvbm5lcnN0YWcgaW0gU8O8ZHdlc3RyPHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsIGJsYWNrLHNhbnMtc2VyaWYiPnVuZGZ1bmssIGRp
ZSDDhG10ZXIgZsO8ciAKKyAgVmVyZmFzc3VuZ3NzY2h1dHogbcO8c3N0ZW4g4oCedm9tIEtvcGYg
YXVmIGRpZSBGw7zDn2XigJwgZ2VzdGVsbHQgd2VyZGVuLiBOb2NoIAorICB3aWNodGlnZXIgc2Vp
IGVzIGFiZXIsIFJlY2h0c2V4dHJlbWlzbXVzIGdlc2VsbHNjaGFmdGxpY2ggenUgw6RjaHRlbiB1
bmQgbWVociAKKyAgR2VsZCBmw7xyIFByw6R2ZW50aW9uIGF1c3p1Z2ViZW4sIHp1bSBCZWlzcGll
bCBmw7xyIEp1Z2VuZGFyYmVpdCBpbiBkZW4gCisgIEtvbW11bmVuIAorPC9zcGFuPjwvcD4KKyAg
ICAgICAgICAgIDxwPgorIEdyw7xuZW4tUmVjaHRzZXhwZXJ0ZSBKZXJ6eSBNb250YWcgd2FyZiBk
ZW4gQmVow7ZyZGVuIHZvciwgZGllIEdlZmFocmVuIGRlcyAKKyAgUmVjaHRzcmFkaWthbGlzbXVz
IOKAnnp1bSBUZWlsIG5hY2hsw6Rzc2lnIHVuZCB0ZWlscyBzeXN0ZW1hdGlzY2jigJwgdW50ZXJz
Y2jDpHR6dCAKKyAgenUgaGFiZW4uIERlciBWZXJmYXNzdW5nc3NjaHV0eiBzZWkgaW4gRGV1dHNj
aGxhbmQgc2VpdCBkZW0gS2FsdGVuIEtyaWVnIAorICDigJ5oaXN0b3Jpc2NoIGF1ZiBkaWUgc29n
ZW5hbm50ZSBsaW5rZSBrb21tdW5pc3Rpc2NoZSBHZWZhaHIgZ2Vwb2x04oCcLCBzYWd0ZSAKKyAg
TTxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJnYig1MSwyMDQsMjU1KSI+b250YWcgaW0g
VFYtU2VuZGVyIFBob2VuaXguIEVzIGdlaGUgamV0enQgYXVjaCBkYXJ1bSwgb3JnYW5pc2F0b3Jp
c2NoZSAKKyAgRGVmaXppdGUgYmVpbSBWZXJmYXNzdW5nc3NjaHV0eiB6dSBiZXNlaXRpZ2VuLiAK
Kzwvc3Bhbj48L3A+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6cmdiKDUxLDIwNCwyNTUp
Ij4KKyAgICAgICAgICAgIDwvc3Bhbj48b2w+PGxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOnJnYig1MSwyMDQsMjU1KSI+CitMw7Z0enNjaCBzYWd0ZSBkZW0g4oCeS8O2bG5lciBTdGFk
dC1BbnplaWdlcuKAnCwgZGVyIFZlcmZhc3N1bjwvc3Bhbj5nc3NjaHV0eiDigJ5oYXQgdW5zZXJl
IAorICBWZXJmYXNzdW5nIG5pY2h0IGdlc2Now7x0enQsIHNvbmRlcm4gZ2Vmw6RocmRldOKAnC4g
VmVyYmluZHVuZ3NsZXV0ZSBkZXMgCisgIFZlcmZhc3N1bmdzc2NodXR6ZXMgaMOkdHRlbiBkaWUg
cmVjaHRzZXh0cmVtZSBTemVuZSBzZWxic3QgbWl0IGFtIExlYmVuIAorICBnZWhhbHRlbiB1bmQg
U3RyYWZ0YXRlbiBiZWdhbmdlbi4gU2llIHNwcmFjaCB2b20gZ3LDtsOfdGVuIFZlcmZhc3N1bmdz
c2NodXR6LSAKKyAgdW5kIEp1c3Rpei1Ta2FuZGFsIHNlaXQgZGVyIEdyw7xuZHVuZyBkZXIgQnVu
ZGVzcmVwdWJsaWsuIAorPC9saT48L29sPgorICAgICAgICAgICAgPG9sIHN0eWxlPSJ0ZXh0LWFs
aWduOnJpZ2h0Ij48bGk+CisgVGjDvHJpbmdlbnMgTGlua3NmcmFrdGlvbnNjaGVmIEJvZG8gUmFt
ZWxvdyBzYWd0ZSBpbSA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZ2IoNTEsMjU1LDUx
KSI+RGV1dHNjaGxhbmRmdW5rLCA8L3NwYW4+ZGllIAorICBFbnR3aWNrbHVuZyBkZXMgUmVjaHRz
ZXh0cmVtaXNtdXMgc2VpIHVudGVyc2Now6R0enQgd29yZGVuLiBNYW4gc2VpIOKAnmF1ZiBkZW0g
CisgIHJlY2h0ZW4gQXVnZSBpbW1lciBhbSBWZXJoYXJtbG9zZW7igJwgZ2V3ZXNlbiwgd8OkaHJl
bmQg4oCeZGFzIFNjaMO8cmVuIGRlciAKKyAgSHlzdGVyaWXigJwgc2ljaCDigJ5nZWdlbiBMaW5r
c+KAnCBnZXJpY2h0ZXQgaGFiZS4gCis8L2xpPjwvb2w+CisgICAgICAgICAgICA8b2w+PGxpPgor
IERlciBSZWNodHNleHBlcnRlIGRlciBMaW5rc2ZyYWt0aW9uLCBXb2xmZ2FuZyBOZXNrb3ZpYywg
YmVrbGFndGUgZWJlbmZhbGxzLCAKKyAgZGllIFNpY2hlcmhlaXRzYmVow7ZyZGVuIGjDpHR0ZW4g
R2VzZXR6ZSBiaXNoZXIgaW4gdm9sbGVtIFVtZmFuZyBudXIgYXVmIGRlbiAKKyAgQmVyZWljaCBk
ZXMgaXNsYW1pc3Rpc2NoZW4gVGVycm9yaXNtdXMgdW5kIGRlcyBMaW5rc2V4dHJlbWlzbXVzIGFu
Z2V3ZW5kZXQuIAorICBEaWUgdm9uIEJ1bmRlc2lubmVubWluaXN0ZXIgSGFucy1QZXRlciBGcmll
ZHJpY2ggKENTVSkgdm9yZ2VzY2hsYWdlbmUgCisgIE5lb25hemktWmVudHJhbGRhdGVpIGJlemVp
Y2huZXRlIGVyIGltIFJCQi1TZW5kZXIgUmFkaW8gRWlucyBhbHMgdW50YXVnbGljaCwgCisgIHdl
bm4gZGFzIEJld3Vzc3RzZWluIGltIFVtZ2FuZyBtaXQgcmVjaHRzZXh0cmVtZW4gR2V3YWx0dGF0
ZW4gZmVobGUuIAorPC9saT48L29sPgorICAgICAgICAgICAgPHA+CisgQXVjaCBkZXIgVjxmb250
IHNpemU9IjQiPm9yc2l0emVuZGUgZGVzIFplbnRyYWxyYXRzIGRlciBNdXNsaW1lLCBBaW1hbiBN
YXp5ZWssIGtyaXRpc2llcnRlIAorICBkaWUgRXJtaXR0bHVuZ3NiZWjDtnJkZW4uIERpZSBGYW1p
bGllbiBkZXIgTW9yZG9wZmVyIGjDpHR0ZW4gc2ljaCBmcmFnZW4gCisgIGxhc3NlbiBtw7xzc2Vu
LCBvYiBzaWUgS29udGFrdGUgenVyIFBLSyBoYWJlbiBvZGVyIFNjaHV0emdlbGRlciB6YWhsZW4s
IHNhZ3RlIAorICBNYXp5ZWsgZGVyIOKAnlBhc3NhdWVyIE5ldWVuIFByZXNzZeKAnC4g4oCeVW5k
IGpldHp0IHN0ZWxsdCBzaWNoIGhlcmF1cywgZGFzcyAKKyAgUmVjaHRzZXh0cmVtZSBoaW50ZXIg
ZGVuIE1vcmRlbiBzdGFuZGVuLuKAnCAKKzwvZm9udD48L3A+CisgICAgICAgICAgICA8cD48Zm9u
dCBzaXplPSI0Ij4KKyBBdXNsw7ZzZXIgZGVyIERlYmF0dGUgw7xiZXIgZGllIFJvbGxlIGRlcyBW
ZXJmYXNzdW5nc3NjaHV0emVzIHdhcmVuIHVudGVyIAorICBhbmRlcmVtIE1lZGllbmJlcmljaHRl
LCB3b25hY2ggZWluIGVoZW1hbGlnZXIgS2Fzc2VsZXIgVmVyZmFzc3VuZ3NzY2jDvHR6ZXIgCisg
IGJlaSBlaW5lbSBvZGVyIHNvZ2FyIG1laHJlcmVuIE1vcmRlbiB1bm1pdHRlbGJhciBpbiBUYXRv
cnRuw6RoZSBnZXdlc2VuIHNlaW4gCisgIHNvbGwuIERlciBNYW5uIHNvbGwgcmVjaHRzZXh0cmVt
ZSBBbnNpY2h0ZW4gdmVydHJldGVuLiAKKzwvZm9udD48L3A+CisgICAgICAgICAgICA8cD48Zm9u
dCBzaXplPSI0Ij4KKyBMYXV0IGVpbmVtIEJlcmljaHQgZGVyIOKAnkZyYW5rZnVydGVyIEFsbGdl
bWU8L2ZvbnQ+aW5lbiBaZWl0dW5n4oCcIHByw7xmdCBkaWUgCisgIEJ1bmRlc2Fud2FsdHNjaGFm
dCBudW4gZXJuZXV0IGRpZSBtw7ZnbGljaGUgVmVyYmluZHVuZyBkZXMgTWFubmVzIHp1IGRlbiAK
KyAgVGF0ZW4sIGRpZSBkZXIgWndpY2thdWVyIFRlcnJvcmdydXBwZSDigJ5OYXRpb25hbHNvemlh
bGlzdGlzY2hlciBVbnRlcmdydW5k4oCcIAorICB6dWdlc2NocmllYmVuIHdlcmRlbi4gRGVzaGFs
YiBzZWllbiBzw6RtdGxpY2hlIEFrdGVuIHp1IGRlbSBGYWxsIGF1cyBIZXNzZW4gCisgIGFuZ2Vm
b3JkZXJ0IHdvcmRlbi4gCis8L3A+CisgICAgICAgICAgICA8cD4KKzwvcD48aDM+CitQYW5uZW4g
YmVpbSBWZXJmYXNzdW5nc3NjaHV0eiAKKzwvaDM+CisKKyAgICAgICAgICAgIDxwPgorSW4gVGjD
vHJpbmdlbiB1bmQgaW4gTmllZGVyc2FjaHNlbiB0YXVjaHRlbiBnZXN0ZXJuIHdlaXRlcmUgRnJh
Z2VuIGluIGRlbSBGYWxsIAorICBkZXIgTW9yZHNlcmllIGF1Zi4gRGVyIG5pZWRlcnPDpGNoc2lz
Y2hlIFZlcmZhc3N1bmdzc2NodXR6IHLDpHVtdGUgRmVobGVyIGJlaSAKKyAgZGVyIEZhaG48L3A+
Cis8L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPgorPC9ibG9ja3F1b3RlPjwvZGl2
PjwvZGl2PjwvZGl2Pjxicj4KKzwvZGl2Pjxicj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvcmVz
b3VyY2VzL2VtYWlsMi5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2
aWV3L3Jlc291cmNlcy9lbWFpbDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yMmNiYzFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9x
Z3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDIuaHRtbApAQCAtMCwwICsxLDY3IEBACis8
YnI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4tLS0tLS0tLS0tIFdlaXRlcmdlbGVpdGV0
ZSBOYWNocmljaHQgLS0tLS0tLS0tLTxicj5Wb246IDxiIGNsYXNzPSJnbWFpbF9zZW5kZXJuYW1l
Ij5CYXN5IFRlc3Q8L2I+IDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmJzdGVz
dDQ0NkBnb29nbGVtYWlsLmNvbSI+YnN0ZXN0NDQ2QGdvb2dsZW1haWwuY29tPC9hPiZndDs8L3Nw
YW4+PGJyPgorRGF0dW06IDE3LiBOb3ZlbWJlciAyMDExIDEzOjE0PGJyPkJldHJlZmY6IFRlc3Q8
YnI+QW46IDxhIGhyZWY9Im1haWx0bzpic3Rlc3Q0NDZAZ21haWwuY29tIj5ic3Rlc3Q0NDZAZ21h
aWwuY29tPC9hPjxicj48YnI+PGJyPjxwPgorIEvDvG5hc3Qgc2FndGUgYW0gRG9ubmVyc3RhZyBp
bSBTw7xkd2VzdHI8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwgYmxhY2ssc2Fucy1zZXJp
ZiI+dW5kZnVuaywgZGllIMOEbXRlciBmw7xyIAorICBWZXJmYXNzdW5nc3NjaHV0eiBtw7xzc3Rl
biDigJ52b20gS29wZiBhdWYgZGllIEbDvMOfZeKAnCBnZXN0ZWxsdCB3ZXJkZW4uIE5vY2ggCisg
IHdpY2h0aWdlciBzZWkgZXMgYWJlciwgUmVjaHRzZXh0cmVtaXNtdXMgZ2VzZWxsc2NoYWZ0bGlj
aCB6dSDDpGNodGVuIHVuZCBtZWhyIAorICBHZWxkIGbDvHIgUHLDpHZlbnRpb24gYXVzenVnZWJl
biwgenVtIEJlaXNwaWVsIGbDvHIgSnVnZW5kYXJiZWl0IGluIGRlbiAKKyAgS29tbXVuZW4gCis8
L3NwYW4+PC9wPgorICAgICAgICAgICAgPHA+CisgR3LDvG5lbi1SZWNodHNleHBlcnRlIEplcnp5
IE1vbnRhZyB3YXJmIGRlbiBCZWjDtnJkZW4gdm9yLCBkaWUgR2VmYWhyZW4gZGVzIAorICBSZWNo
dHNyYWRpa2FsaXNtdXMg4oCeenVtIFRlaWwgbmFjaGzDpHNzaWcgdW5kIHRlaWxzIHN5c3RlbWF0
aXNjaOKAnCB1bnRlcnNjaMOkdHp0IAorICB6dSBoYWJlbi4gRGVyIFZlcmZhc3N1bmdzc2NodXR6
IHNlaSBpbiBEZXV0c2NobGFuZCBzZWl0IGRlbSBLYWx0ZW4gS3JpZWcgCisgIOKAnmhpc3Rvcmlz
Y2ggYXVmIGRpZSBzb2dlbmFubnRlIGxpbmtlIGtvbW11bmlzdGlzY2hlIEdlZmFociBnZXBvbHTi
gJwsIHNhZ3RlIAorICBNPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6cmdiKDUxLDIwNCwy
NTUpIj5vbnRhZyBpbSBUVi1TZW5kZXIgUGhvZW5peC4gRXMgZ2VoZSBqZXR6dCBhdWNoIGRhcnVt
LCBvcmdhbmlzYXRvcmlzY2hlIAorICBEZWZpeml0ZSBiZWltIFZlcmZhc3N1bmdzc2NodXR6IHp1
IGJlc2VpdGlnZW4uIAorPC9zcGFuPjwvcD48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpy
Z2IoNTEsMjA0LDI1NSkiPgorICAgICAgICAgICAgPC9zcGFuPjxvbD48bGk+PHNwYW4gc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6cmdiKDUxLDIwNCwyNTUpIj4KK0zDtnR6c2NoIHNhZ3RlIGRlbSDi
gJ5Lw7ZsbmVyIFN0YWR0LUFuemVpZ2Vy4oCcLCBkZXIgVmVyZmFzc3VuPC9zcGFuPmdzc2NodXR6
IOKAnmhhdCB1bnNlcmUgCisgIFZlcmZhc3N1bmcgbmljaHQgZ2VzY2jDvHR6dCwgc29uZGVybiBn
ZWbDpGhyZGV04oCcLiBWZXJiaW5kdW5nc2xldXRlIGRlcyAKKyAgVmVyZmFzc3VuZ3NzY2h1dHpl
cyBow6R0dGVuIGRpZSByZWNodHNleHRyZW1lIFN6ZW5lIHNlbGJzdCBtaXQgYW0gTGViZW4gCisg
IGdlaGFsdGVuIHVuZCBTdHJhZnRhdGVuIGJlZ2FuZ2VuLiBTaWUgc3ByYWNoIHZvbSBncsO2w590
ZW4gVmVyZmFzc3VuZ3NzY2h1dHotIAorICB1bmQgSnVzdGl6LVNrYW5kYWwgc2VpdCBkZXIgR3LD
vG5kdW5nIGRlciBCdW5kZXNyZXB1Ymxpay4gCis8L2xpPjwvb2w+CisgICAgICAgICAgICA8b2wg
c3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxsaT4KKyBUaMO8cmluZ2VucyBMaW5rc2ZyYWt0aW9u
c2NoZWYgQm9kbyBSYW1lbG93IHNhZ3RlIGltIDxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OnJnYig1MSwyNTUsNTEpIj5EZXV0c2NobGFuZGZ1bmssIDwvc3Bhbj5kaWUgCisgIEVudHdpY2ts
dW5nIGRlcyBSZWNodHNleHRyZW1pc211cyBzZWkgdW50ZXJzY2jDpHR6dCB3b3JkZW4uIE1hbiBz
ZWkg4oCeYXVmIGRlbSAKKyAgcmVjaHRlbiBBdWdlIGltbWVyIGFtIFZlcmhhcm1sb3NlbuKAnCBn
ZXdlc2VuLCB3w6RocmVuZCDigJ5kYXMgU2Now7xyZW4gZGVyIAorICBIeXN0ZXJpZeKAnCBzaWNo
IOKAnmdlZ2VuIExpbmtz4oCcIGdlcmljaHRldCBoYWJlLiAKKzwvbGk+PC9vbD4KKyAgICAgICAg
ICAgIDxvbD48bGk+CisgRGVyIFJlY2h0c2V4cGVydGUgZGVyIExpbmtzZnJha3Rpb24sIFdvbGZn
YW5nIE5lc2tvdmljLCBiZWtsYWd0ZSBlYmVuZmFsbHMsIAorICBkaWUgU2ljaGVyaGVpdHNiZWjD
tnJkZW4gaMOkdHRlbiBHZXNldHplIGJpc2hlciBpbiB2b2xsZW0gVW1mYW5nIG51ciBhdWYgZGVu
IAorICBCZXJlaWNoIGRlcyBpc2xhbWlzdGlzY2hlbiBUZXJyb3Jpc211cyB1bmQgZGVzIExpbmtz
ZXh0cmVtaXNtdXMgYW5nZXdlbmRldC4gCisgIERpZSB2b24gQnVuZGVzaW5uZW5taW5pc3RlciBI
YW5zLVBldGVyIEZyaWVkcmljaCAoQ1NVKSB2b3JnZXNjaGxhZ2VuZSAKKyAgTmVvbmF6aS1aZW50
cmFsZGF0ZWkgYmV6ZWljaG5ldGUgZXIgaW0gUkJCLVNlbmRlciBSYWRpbyBFaW5zIGFscyB1bnRh
dWdsaWNoLCAKKyAgd2VubiBkYXMgQmV3dXNzdHNlaW4gaW0gVW1nYW5nIG1pdCByZWNodHNleHRy
ZW1lbiBHZXdhbHR0YXRlbiBmZWhsZS4gCis8L2xpPjwvb2w+CisgICAgICAgICAgICA8cD4KKyBB
dWNoIGRlciBWPGZvbnQgc2l6ZT0iNCI+b3JzaXR6ZW5kZSBkZXMgWmVudHJhbHJhdHMgZGVyIE11
c2xpbWUsIEFpbWFuIE1henllaywga3JpdGlzaWVydGUgCisgIGRpZSBFcm1pdHRsdW5nc2JlaMO2
cmRlbi4gRGllIEZhbWlsaWVuIGRlciBNb3Jkb3BmZXIgaMOkdHRlbiBzaWNoIGZyYWdlbiAKKyAg
bGFzc2VuIG3DvHNzZW4sIG9iIHNpZSBLb250YWt0ZSB6dXIgUEtLIGhhYmVuIG9kZXIgU2NodXR6
Z2VsZGVyIHphaGxlbiwgc2FndGUgCisgIE1henllayBkZXIg4oCeUGFzc2F1ZXIgTmV1ZW4gUHJl
c3Nl4oCcLiDigJ5VbmQgamV0enQgc3RlbGx0IHNpY2ggaGVyYXVzLCBkYXNzIAorICBSZWNodHNl
eHRyZW1lIGhpbnRlciBkZW4gTW9yZGVuIHN0YW5kZW4u4oCcIAorPC9mb250PjwvcD4KKyAgICAg
ICAgICAgIDxwPjxmb250IHNpemU9IjQiPgorIEF1c2zDtnNlciBkZXIgRGViYXR0ZSDDvGJlciBk
aWUgUm9sbGUgZGVzIFZlcmZhc3N1bmdzc2NodXR6ZXMgd2FyZW4gdW50ZXIgCisgIGFuZGVyZW0g
TWVkaWVuYmVyaWNodGUsIHdvbmFjaCBlaW4gZWhlbWFsaWdlciBLYXNzZWxlciBWZXJmYXNzdW5n
c3NjaMO8dHplciAKKyAgYmVpIGVpbmVtIG9kZXIgc29nYXIgbWVocmVyZW4gTW9yZGVuIHVubWl0
dGVsYmFyIGluIFRhdG9ydG7DpGhlIGdld2VzZW4gc2VpbiAKKyAgc29sbC4gRGVyIE1hbm4gc29s
bCByZWNodHNleHRyZW1lIEFuc2ljaHRlbiB2ZXJ0cmV0ZW4uIAorPC9mb250PjwvcD4KKyAgICAg
ICAgICAgIDxwPjxmb250IHNpemU9IjQiPgorIExhdXQgZWluZW0gQmVyaWNodCBkZXIg4oCeRnJh
bmtmdXJ0ZXIgQWxsZ2VtZTwvZm9udD5pbmVuIFplaXR1bmfigJwgcHLDvGZ0IGRpZSAKKyAgQnVu
ZGVzYW53YWx0c2NoYWZ0IG51biBlcm5ldXQgZGllIG3DtmdsaWNoZSBWZXJiaW5kdW5nIGRlcyBN
YW5uZXMgenUgZGVuIAorICBUYXRlbiwgZGllIGRlciBad2lja2F1ZXIgVGVycm9yZ3J1cHBlIOKA
nk5hdGlvbmFsc296aWFsaXN0aXNjaGVyIFVudGVyZ3J1bmTigJwgCisgIHp1Z2VzY2hyaWViZW4g
d2VyZGVuLiBEZXNoYWxiIHNlaWVuIHPDpG10bGljaGUgQWt0ZW4genUgZGVtIEZhbGwgYXVzIEhl
c3NlbiAKKyAgYW5nZWZvcmRlcnQgd29yZGVuLiAKKzwvcD4KKyAgICAgICAgICAgIDxwPgorPC9w
PjxoMz4KK1Bhbm5lbiBiZWltIFZlcmZhc3N1bmdzc2NodXR6IAorPC9oMz4KKworICAgICAgICAg
ICAgPHA+CitJbiBUaMO8cmluZ2VuIHVuZCBpbiBOaWVkZXJzYWNoc2VuIHRhdWNodGVuIGdlc3Rl
cm4gd2VpdGVyZSBGcmFnZW4gaW4gZGVtIEZhbGwgCisgIGRlciBNb3Jkc2VyaWUgYXVmLiBEZXIg
bmllZGVyc8OkY2hzaXNjaGUgVmVyZmFzc3VuZ3NzY2h1dHogcsOkdW10ZSBGZWhsZXIgYmVpIAor
ICBkZXIgRmFobjwvcD4KKzwvZGl2Pjxicj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3Fn
cmFwaGljc3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2
aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcAppbmRleCBkMDk1MzYxLi5iN2Q3OTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFw
aGljc3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vi
dmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRl
IDxxZ3JhcGhpY3N3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxx
d2ViZnJhbWUuaD4KLQogI2lmIGRlZmluZWQoRU5BQkxFX1dFQkdMKSAmJiBFTkFCTEVfV0VCR0wK
ICNpbmNsdWRlIDxRR0xXaWRnZXQ+CiAjZW5kaWYKQEAgLTQxLDYgKzQwLDggQEAgcHJpdmF0ZSBz
bG90czoKICAgICB2b2lkIGZvY3VzSW5wdXRUeXBlcygpOwogICAgIHZvaWQgY3Jhc2hPblNldFNj
YWxlQmVmb3JlU2V0VXJsKCk7CiAgICAgdm9pZCB3aWRnZXRzUmVuZGVyaW5nVGhyb3VnaENhY2hl
KCk7CisgICAgdm9pZCB3aWRnZXRzUmVuZGVyaW5nQWZ0ZXJTY2FsZV9kYXRhKCk7CisgICAgdm9p
ZCB3aWRnZXRzUmVuZGVyaW5nQWZ0ZXJTY2FsZSgpOwogI2lmICEoZGVmaW5lZChXVEZfVVNFX1FU
X01PQklMRV9USEVNRSkgJiYgV1RGX1VTRV9RVF9NT0JJTEVfVEhFTUUpCiAgICAgdm9pZCBzZXRQ
YWxldHRlX2RhdGEoKTsKICAgICB2b2lkIHNldFBhbGV0dGUoKTsKQEAgLTE5OCw3ICsxOTksMTYw
IEBAIHZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OndpZGdldHNSZW5kZXJpbmdUaHJvdWdoQ2Fj
aGUoKQogICAgIFFDT01QQVJFKHJlZmVyZW5jZVBpeG1hcC50b0ltYWdlKCksIHZpZXdXaXRoVGls
aW5nLnRvSW1hZ2UoKSk7CiB9CiAKLSNpZiBkZWZpbmVkKEVOQUJMRV9USUxFRF9CQUNLSU5HX1NU
T1JFKSAmJiBFTkFCTEVfVElMRURfQkFDS0lOR19TVE9SRQordm9pZCB0c3RfUUdyYXBoaWNzV2Vi
Vmlldzo6d2lkZ2V0c1JlbmRlcmluZ0FmdGVyU2NhbGVfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFk
ZENvbHVtbjxib29sPigic2V0UmVzaXplc1RvQ29udGVudHMiKTsKKyAgICBRVGVzdDo6YWRkQ29s
dW1uPGJvb2w+KCJ1c2VUaWxlZEJhY2tpbmdTdG9yZSIpOworICAgIFFUZXN0OjphZGRDb2x1bW48
Ym9vbD4oImZyb3plblRpbGVkQmFja2luZ1N0b3JlIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxi
b29sPigic2V0VGlsZWRCYWNraW5nU3RvcmVCZWZvcmVTY2VuZSIpOworCisgICAgUVRlc3Q6Om5l
d1JvdygiMCBOb1Jlc2l6ZSwgTm9UQlMiKSA8PCBmYWxzZSA8PCBmYWxzZSA8PCBmYWxzZSA8PCBm
YWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCIxIE5vUmVzaXplLCBUQlMsIEZyb3plbiwgQmVmb3Jl
U2NlbmUiKSA8PCBmYWxzZSA8PCB0cnVlIDw8IHRydWUgPDwgdHJ1ZTsKKyAgICBRVGVzdDo6bmV3
Um93KCIyIE5vUmVzaXplLCBUQlMsIEZyb3plbiwgQWZ0ZXJTY2VuZSIpIDw8IGZhbHNlIDw8IHRy
dWUgPDwgdHJ1ZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCIzIE5vUmVzaXplLCBUQlMs
IE5vRnJvemVuLCBCZWZvcmVTY2VuZSIpIDw8IGZhbHNlIDw8IHRydWUgPDwgZmFsc2UgPDwgdHJ1
ZTsKKyAgICBRVGVzdDo6bmV3Um93KCI0IE5vUmVzaXplLCBUQlMsIE5vRnJvemVuLCBBZnRlclNj
ZW5lIikgPDwgZmFsc2UgPDwgdHJ1ZSA8PCBmYWxzZSA8PCBmYWxzZTsKKworICAgIFFUZXN0Ojpu
ZXdSb3coIjUgUmVzaXplLCBOb1RCUyIpIDw8IHRydWUgPDwgZmFsc2UgPDwgZmFsc2UgPDwgZmFs
c2U7CisgICAgUVRlc3Q6Om5ld1JvdygiNiBSZXNpemUsIFRCUywgRnJvemVuLCBCZWZvcmVTY2Vu
ZSIpIDw8IHRydWUgPDwgdHJ1ZSA8PCB0cnVlIDw8IHRydWU7CisgICAgUVRlc3Q6Om5ld1Jvdygi
NyBSZXNpemUsIFRCUywgRnJvemVuLCBBZnRlclNjZW5lIikgPDwgdHJ1ZSA8PCB0cnVlIDw8IHRy
dWUgPDwgZmFsc2U7CisgICAgUVRlc3Q6Om5ld1JvdygiOCBSZXNpemUsIFRCUywgTm9Gcm96ZW4s
IEJlZm9yZVNjZW5lIikgPDwgdHJ1ZSA8PCB0cnVlIDw8IGZhbHNlIDw8IHRydWU7CisgICAgUVRl
c3Q6Om5ld1JvdygiOSBSZXNpemUsIFRCUywgTm9Gcm96ZW4sIEFmdGVyU2NlbmUiKSA8PCB0cnVl
IDw8IHRydWUgPDwgZmFsc2UgPDwgZmFsc2U7Cit9CisKK3ZvaWQgdHN0X1FHcmFwaGljc1dlYlZp
ZXc6OndpZGdldHNSZW5kZXJpbmdBZnRlclNjYWxlKCkKK3sKKyAgICBzdGF0aWMgaW50IHJ1bkNv
dW50cyA9IDA7CisKKyAgICBRRkVUQ0goYm9vbCwgc2V0UmVzaXplc1RvQ29udGVudHMpOworICAg
IFFGRVRDSChib29sLCB1c2VUaWxlZEJhY2tpbmdTdG9yZSk7CisgICAgUUZFVENIKGJvb2wsIGZy
b3plblRpbGVkQmFja2luZ1N0b3JlKTsKKyAgICBRRkVUQ0goYm9vbCwgc2V0VGlsZWRCYWNraW5n
U3RvcmVCZWZvcmVTY2VuZSk7CisKKyAgICBRR3JhcGhpY3NWaWV3IHZpZXc7CisgICAgdmlldy5z
ZXRIb3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5KFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOworICAg
IHZpZXcuc2V0VmVydGljYWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5c09mZik7
CisgICAgdmlldy5zZXRHZW9tZXRyeShRUmVjdCgwLCAwLCA0ODAsIDgwMCkpOworICAgIHZpZXcu
c2V0Vmlld3BvcnRVcGRhdGVNb2RlKFFHcmFwaGljc1ZpZXc6OkZ1bGxWaWV3cG9ydFVwZGF0ZSk7
CisKKyAgICBRR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBuZXcgUUdyYXBoaWNzU2NlbmUoJnZpZXcp
OworICAgIHZpZXcuc2V0U2NlbmUoc2NlbmUpOworICAgIHZpZXcuc2hvdygpOworCisgICAgUVdp
ZGdldCAqY29uc3Qgd2lkZ2V0ID0gJnZpZXc7CisKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NF
dmVudHMoKTsKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dTaG93bih3aWRnZXQpOworCisgICAg
UVBpeG1hcCBlbXB0eVBpeG1hcCh2aWV3LnNpemUoKSk7CisgICAgd2lkZ2V0LT5yZW5kZXIoJmVt
cHR5UGl4bWFwKTsKKworICAgIFFTdHJpbmcgY29udGVudFN0cmluZyA9ICJlbXB0eSIgKyBRU3Ry
aW5nOjpudW1iZXIocnVuQ291bnRzKSArICIucG5nIjsKKworICAgIGVtcHR5UGl4bWFwLnNhdmUo
Y29udGVudFN0cmluZyk7CisKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3IFFH
cmFwaGljc1dlYlZpZXc7CisgICAgd2ViVmlldy0+c2V0UmVzaXplc1RvQ29udGVudHMoc2V0UmVz
aXplc1RvQ29udGVudHMpOworICAgIGlmICghc2V0UmVzaXplc1RvQ29udGVudHMpCisgICAgICAg
IHdlYlZpZXctPnJlc2l6ZShRU2l6ZSg0ODAsIDgwMCkpOworCisgICAgaWYgKHNldFRpbGVkQmFj
a2luZ1N0b3JlQmVmb3JlU2NlbmUpCisgICAgICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEF0
dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCwgdXNlVGlsZWRC
YWNraW5nU3RvcmUpOworCisgICAgc2NlbmUtPmFkZEl0ZW0od2ViVmlldyk7CisKKyAgICBpZiAo
IXNldFRpbGVkQmFja2luZ1N0b3JlQmVmb3JlU2NlbmUpCisgICAgICAgIHdlYlZpZXctPnNldHRp
bmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0b3JlRW5hYmxl
ZCwgdXNlVGlsZWRCYWNraW5nU3RvcmUpOworCisgICAgd2ViVmlldy0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+c2V0U2Nyb2xsQmFyUG9saWN5KFF0OjpIb3Jpem9udGFsLCBRdDo6U2Nyb2xsQmFyQWx3
YXlzT2ZmKTsKKyAgICB3ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5zZXRTY3JvbGxCYXJQ
b2xpY3koUXQ6OlZlcnRpY2FsLCBRdDo6U2Nyb2xsQmFyQWx3YXlzT2ZmKTsKKworICAgIHdlYlZp
ZXctPmhpZGUoKTsKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVGVz
dDo6cVdhaXQoMCk7CisKKyAgICB3ZWJWaWV3LT5sb2FkKFFVcmwoInFyYzovLy9yZXNvdXJjZXMv
ZW1haWwxLmh0bWwiKSk7CisgICAgUUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZlbnRzKCk7CisgICAg
UVRlc3Q6OnFXYWl0KDApOworCisgICAgd2ViVmlldy0+c2hvdygpOworICAgIFFBcHBsaWNhdGlv
bjo6cHJvY2Vzc0V2ZW50cygpOworICAgIFFUZXN0OjpxV2FpdCgwKTsKKworICAgIFFQaXhtYXAg
ZW1haWwxUGl4bWFwKHZpZXcuc2l6ZSgpKTsKKyAgICB3aWRnZXQtPnJlbmRlcigmZW1haWwxUGl4
bWFwKTsKKworICAgIGNvbnRlbnRTdHJpbmcgPSAiZW1haWwxIiArIFFTdHJpbmc6Om51bWJlcihy
dW5Db3VudHMpICsgIi5wbmciOworCisgICAgZW1haWwxUGl4bWFwLnNhdmUoY29udGVudFN0cmlu
Zyk7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZl
bnRzKCk7CisgICAgUVRlc3Q6OnFXYWl0KDApOworCisgICAgd2ViVmlldy0+bG9hZChRVXJsKCJx
cmM6Ly8vcmVzb3VyY2VzL2VtYWlsMi5odG1sIikpOworICAgIFFBcHBsaWNhdGlvbjo6cHJvY2Vz
c0V2ZW50cygpOworICAgIFFUZXN0OjpxV2FpdCgwKTsKKworICAgIHdlYlZpZXctPnNob3coKTsK
KyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVGVzdDo6cVdhaXQoMCk7
CisKKyAgICBRUGl4bWFwIGVtYWlsMlBpeG1hcCh2aWV3LnNpemUoKSk7CisgICAgd2lkZ2V0LT5y
ZW5kZXIoJmVtYWlsMlBpeG1hcCk7CisKKyAgICBjb250ZW50U3RyaW5nID0gImVtYWlsMiIgKyBR
U3RyaW5nOjpudW1iZXIocnVuQ291bnRzKSArICIucG5nIjsKKworICAgIGVtYWlsMlBpeG1hcC5z
YXZlKGNvbnRlbnRTdHJpbmcpOworCisgICAgaWYgKHdlYlZpZXctPnJlc2l6ZXNUb0NvbnRlbnRz
KCkpIHsKKyAgICAgICAgUVBvaW50RiBwb3MgPSB3ZWJWaWV3LT5wb3MoKTsKKyAgICAgICAgcG9z
LnNldFkocG9zLnkoKSAtIDMwMCk7CisgICAgICAgIHdlYlZpZXctPnNldFBvcyhwb3MpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnNjcm9sbCgw
LCAzMDApOworICAgICAgICB3ZWJWaWV3LT51cGRhdGVHZW9tZXRyeSgpOworICAgICAgICB3ZWJW
aWV3LT51cGRhdGUoKTsKKyAgICB9CisKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMo
KTsKKyAgICBRVGVzdDo6cVdhaXQoMCk7CisKKyAgICBRUGl4bWFwIGVtYWlsMkFmdGVyU2Nyb2xs
UGl4bWFwKHZpZXcuc2l6ZSgpKTsKKyAgICB3aWRnZXQtPnJlbmRlcigmZW1haWwyQWZ0ZXJTY3Jv
bGxQaXhtYXApOworCisgICAgY29udGVudFN0cmluZyA9ICJlbWFpbDItYWZ0ZXJzY3JvbGwiICsg
UVN0cmluZzo6bnVtYmVyKHJ1bkNvdW50cykgKyAiLnBuZyI7CisKKyAgICBlbWFpbDJBZnRlclNj
cm9sbFBpeG1hcC5zYXZlKGNvbnRlbnRTdHJpbmcpOworCisgICAgd2ViVmlldy0+c2V0VGlsZWRC
YWNraW5nU3RvcmVGcm96ZW4oZnJvemVuVGlsZWRCYWNraW5nU3RvcmUpOworICAgIHdlYlZpZXct
PnNldFNjYWxlKDIpOworICAgIFFBcHBsaWNhdGlvbjo6cHJvY2Vzc0V2ZW50cygpOworICAgIFFU
ZXN0OjpxV2FpdCgwKTsKKworICAgIHdlYlZpZXctPnNldFNjYWxlKDEpOworICAgIFFBcHBsaWNh
dGlvbjo6cHJvY2Vzc0V2ZW50cygpOworICAgIFFUZXN0OjpxV2FpdCgwKTsKKworICAgIFFQaXht
YXAgZW1haWwyQWZ0ZXJTY2FsZVBpeG1hcCh2aWV3LnNpemUoKSk7CisgICAgd2lkZ2V0LT5yZW5k
ZXIoJmVtYWlsMkFmdGVyU2NhbGVQaXhtYXApOworCisgICAgY29udGVudFN0cmluZyA9ICJlbWFp
bDItYWZ0ZXJzY2FsZSIgKyBRU3RyaW5nOjpudW1iZXIocnVuQ291bnRzKSArICIucG5nIjsKKwor
ICAgIGVtYWlsMkFmdGVyU2NhbGVQaXhtYXAuc2F2ZShjb250ZW50U3RyaW5nKTsKKworICAgIHJ1
bkNvdW50cysrOworCisgICAgUVZFUklGWShlbWFpbDFQaXhtYXAudG9JbWFnZSgpICE9IGVtcHR5
UGl4bWFwLnRvSW1hZ2UoKSk7CisgICAgUVZFUklGWShlbWFpbDJQaXhtYXAudG9JbWFnZSgpICE9
IGVtcHR5UGl4bWFwLnRvSW1hZ2UoKSk7CisgICAgUVZFUklGWShlbWFpbDJBZnRlclNjYWxlUGl4
bWFwLnRvSW1hZ2UoKSAhPSBlbXB0eVBpeG1hcC50b0ltYWdlKCkpOworICAgIFFWRVJJRlkoZW1h
aWwyQWZ0ZXJTY3JvbGxQaXhtYXAudG9JbWFnZSgpICE9IGVtcHR5UGl4bWFwLnRvSW1hZ2UoKSk7
CisKKyAgICBRVkVSSUZZKGVtYWlsMVBpeG1hcC50b0ltYWdlKCkgIT0gZW1haWwyUGl4bWFwLnRv
SW1hZ2UoKSk7CisgICAgUVZFUklGWShlbWFpbDJQaXhtYXAudG9JbWFnZSgpICE9IGVtYWlsMkFm
dGVyU2Nyb2xsUGl4bWFwLnRvSW1hZ2UoKSk7CisgICAgUVZFUklGWShlbWFpbDJBZnRlclNjcm9s
bFBpeG1hcC50b0ltYWdlKCkgPT0gZW1haWwyQWZ0ZXJTY2FsZVBpeG1hcC50b0ltYWdlKCkpOwor
fQorCisgICAgI2lmIGRlZmluZWQoRU5BQkxFX1RJTEVEX0JBQ0tJTkdfU1RPUkUpICYmIEVOQUJM
RV9USUxFRF9CQUNLSU5HX1NUT1JFCiB2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3OjpidWc1Njky
OSgpCiB7CiAgICAgLy8gV2hlbiByZW5kZXJpbmcgZnJvbSB0aWxlcyBzeWNocm9ub3VzIGxheW91
dCBzaG91bGQgbm90IGJlIHRyaWdnZXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90
ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LnFyYyBiL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5xcmMK
aW5kZXggZjkyOWZlNy4uNmQxMmNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC90ZXN0
cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LnFyYworKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcucXJj
CkBAIC00LDUgKzQsNyBAQAogICAgICAgICA8ZmlsZT5yZXNvdXJjZXMvcG9pbnRpbmdfcmlnaHQu
aHRtbDwvZmlsZT4KICAgICAgICAgPGZpbGU+cmVzb3VyY2VzL3BvaW50aW5nX3VwLmh0bWw8L2Zp
bGU+CiAgICAgICAgIDxmaWxlPnJlc291cmNlcy81NjkyOS5odG1sPC9maWxlPgorICAgICAgICA8
ZmlsZT5yZXNvdXJjZXMvZW1haWwxLmh0bWw8L2ZpbGU+CisgICAgICAgIDxmaWxlPnJlc291cmNl
cy9lbWFpbDIuaHRtbDwvZmlsZT4KICAgICA8L3FyZXNvdXJjZT4KIDwvUkNDPgotLSAKMS43LjUu
NAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170541</attachid>
            <date>2012-10-24 20:07:35 -0700</date>
            <delta_ts>2012-10-25 07:30:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73920-20121025010607.patch</filename>
            <type>text/plain</type>
            <size>3641</size>
            <attacher name="Lamarque V. Souza">lamarque</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ5NTUyZTk2YmIwZWQy
MGU5NTQ1NmNmYzgzZWU2YjIyZDVjNmFmYy4uNGZjOWI0ZDFlNDFlMWM1NmI5OTZjMzViNWQzODM4
NjNlODA1ODljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTI0ICBMYW1h
cnF1ZSBWLiBTb3V6YSAgPExhbWFycXVlLlNvdXphLmV4dEBiYXN5c2tvbS5jb20+CisKKyAgICAg
ICAgW1F0XSBGaXggZm9yIHRpbGVkIGJhY2tpbmcgc3RvcmUgZmFpbGluZyB0byB1cGRhdGUgdmll
dyB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczOTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB0aWxl0ZUgZnJvbSBvbGQgcGFnZSB3aGVuIGxv
YWRpbmcgYSBuZXcgcGFnZS4KKworICAgICAgICBQYXRjaCBhZGRpbmcgcGl4ZWwgdGVzdHMgaXMg
aW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTIwLgorICAgICAg
ICBPbmUgb2YgdGhlbSBzdGlsbCByZXBvcnRzIGVycm9yIGJlY2F1c2UgdGhlIGltYWdlIHNhdmVk
IGFmdGVyIHRoZQorICAgICAgICBzY3JvbGwgaXMgbm90IGVxdWFsIHRvIHRoZSBvbmUgYmVmb3Jl
IHRoZSBzY3JvbGwuIFRoZSBkaWZmZXJlbnQgaXMganVzdAorICAgICAgICB0aGF0IGluIHRoZSBz
ZWNvbmQgaW1hZ2UgdGhlIGZvbnQgaXMgYSBsaXR0bGUgZGFya2VyIGJ1dCB0aGUgY29udGVudHMK
KyAgICAgICAgaXMgY29ycmVjdC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y2hlY2tGbHVzaERlZmVycmVkUmVwYWludHNBZnRl
ckxvYWRDb21wbGV0ZSk6IENhbGwKKyAgICAgICAgZnJhbWUoKS0+dGlsZWRCYWNraW5nU3RvcmUo
KS0+cmVtb3ZlQWxsVGlsZXMoKSB0byBjbGVhciBvdXRkYXRlZAorICAgICAgICB0aWxlcy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxsVGlsZXMpOiBuZXcgY2xhc3Mg
bWV0aG9kLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nU3RvcmUuaDogYWRkIHJlbW92ZUFsbFRpbGVzKCkgY2xhc3MKKyAgICAgICAg
bWV0aG9kLgorICAgICAgICAoVGlsZWRCYWNraW5nU3RvcmUpOgorCiAyMDEyLTEwLTIyICBMYW1h
cnF1ZSBWLiBTb3V6YSAgPExhbWFycXVlLlNvdXphLmV4dEBiYXN5c2tvbS5jb20+CiAKICAgICAg
ICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdGV4dCBkZWNvcmF0aW9uICJ3YXZ5IiBzdHlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDczOTAyOGRlYTlmNDkxNmU5ZTljYmIxZWIzYmQ5
MzZjYjM3NjEzM2QuLmU3ZWRlZjY2OWM2NmQxZmFlZjgxMjdiMWViODA3NzVmZTU0ZDQ1YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIwMTksNiArMjAxOSwxNCBAQCB2b2lkIEZy
YW1lVmlldzo6c3RhcnREZWZlcnJlZFJlcGFpbnRUaW1lcihkb3VibGUgZGVsYXkpCiAKIHZvaWQg
RnJhbWVWaWV3OjpjaGVja0ZsdXNoRGVmZXJyZWRSZXBhaW50c0FmdGVyTG9hZENvbXBsZXRlKCkK
IHsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAvLyBtYXliZSB0aGlzIGlzIG5v
dCB0aGUgYmVzdCBwbGFjZSB0byBhZGQgdGhpcy4KKyAgICBpZiAoZnJhbWUoKS0+dGlsZWRCYWNr
aW5nU3RvcmUoKSkgeworICAgICAgICAvLyByZW1vdmUgYWxsIHRpbGVzIGZyb20gb2xkIHBhZ2Ug
d2hlbiBsb2FkaW5nIGEgbmV3IHBhZ2UuCisgICAgICAgIGZyYW1lKCktPnRpbGVkQmFja2luZ1N0
b3JlKCktPnJlbW92ZUFsbFRpbGVzKCk7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoc2hvdWxk
VXNlTG9hZFRpbWVEZWZlcnJlZFJlcGFpbnREZWxheSgpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9kZWZlcnJlZFJlcGFpbnREZWxheSA9IHNfbm9ybWFsRGVmZXJyZWRSZXBhaW50RGVsYXk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggYzU2NGRiZWQwNmQ4ZDkyN2E3MTVkMjM2ZDc3NDhkZTdhZGUwMmM1OS4u
NDViOTEwNDk0ODVkOTZiZmQ4MTJjNzYxMjY4MDJlY2NhZjcwY2ZhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcApA
QCAtNDQ0LDYgKzQ0NCwxMiBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpyZW1vdmVBbGxOb25W
aXNpYmxlVGlsZXMoKQogICAgIHNldEtlZXBSZWN0KHZpc2libGVSZWN0KCkpOwogfQogCit2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjpyZW1vdmVBbGxUaWxlcygpCit7CisgICAgbV90aWxlcy5jbGVh
cigpOworICAgIHN0YXJ0QmFja2luZ1N0b3JlVXBkYXRlVGltZXIoKTsKK30KKwogUGFzc1JlZlB0
cjxUaWxlPiBUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZUF0KGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUm
IGNvb3JkaW5hdGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGlsZXMuZ2V0KGNvb3JkaW5hdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmgKaW5kZXggYjNjMzY1YzM1OWNlMjYxZDk5YWVhODRhZDhjZTU2NWMxY2E4N2U0ZC4u
NzRkZWFiY2ZkMDdjYjViYTIyZjkyYjU2NmExNWQxNWI3MTNhNzhhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCkBAIC03
NSw2ICs3NSw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGNvdmVyUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fY292ZXJSZWN0OyB9CiAgICAgYm9vbCB2aXNpYmxlQXJlYUlzQ292ZXJlZCgpIGNvbnN0
OwogICAgIHZvaWQgcmVtb3ZlQWxsTm9uVmlzaWJsZVRpbGVzKCk7CisgICAgdm9pZCByZW1vdmVB
bGxUaWxlcygpOwogCiAgICAgdm9pZCBzZXRTdXBwb3J0c0FscGhhKGJvb2wpOwogICAgIGJvb2wg
c3VwcG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydHNBbHBoYTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170646</attachid>
            <date>2012-10-25 07:30:17 -0700</date>
            <delta_ts>2012-11-02 03:53:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73920-20121025122848.patch</filename>
            <type>text/plain</type>
            <size>22170</size>
            <attacher name="Lamarque V. Souza">lamarque</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ5NTUyZTk2YmIwZWQy
MGU5NTQ1NmNmYzgzZWU2YjIyZDVjNmFmYy4uYTMwOWVmZGY2ZWI4ODEzOTA4YWVjNjQwYmMzM2Y3
Mjc2OWQ2ZDNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEwLTI1ICBMYW1h
cnF1ZSBWLiBTb3V6YSAgPExhbWFycXVlLlNvdXphLmV4dEBiYXN5c2tvbS5jb20+CisKKyAgICAg
ICAgW1F0XSBQYXJ0aWFsIGZpeCBmb3IgdGlsZWQgYmFja2luZyBzdG9yZSBmYWlsaW5nIHRvIHVw
ZGF0ZSB2aWV3IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGxvYWRpbmcgYSBuZXcgd2VicGFnZSBvbiBh
IFFHcmFwaGljc1dlYlZpZXcgd2l0aCBUaWxlZCBCYWNraW5nCisgICAgICAgIFN0b3JlIG9wdGlv
biBlbmFibGVkLCBzb21lIGRpcnR5IHRpbGVzIGZyb20gdGhlIHByZXZpb3VzIHdlYnBhZ2UgYXJl
CisgICAgICAgIHN0aWxsIHNlZW4gd2hlbiBzY3JvbGxpbmcgZG93biB0aGUgd2VicGFnZS4gVGhl
IHRpbGVzIGFyZSBvbmx5IHVwZGF0ZWQKKyAgICAgICAgYWZ0ZXIgYSBzY2FsZSBjaGFuZ2UuIFRo
aXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uIFRoZXJlIGlzIGFub3RoZXIKKyAgICAgICAgcHJv
YmxlbSB3aXRoIHNjcm9sbCBiYXIgbm90IGJlaW5nIHVwZGF0ZWQgdGhhdCB0aGlzIHBhdGNoIGRv
ZXMgbm90CisgICAgICAgIGZpeC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyA5IHRl
c3QgY2FzZXMgdG8KKyAgICAgICAgdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNz
d2Vidmlldy5jcHAuIE9uZSBvZiB0aGVtIHN0aWxsCisgICAgICAgIHJlcG9ydHMgZXJyb3IgYnV0
IGl0IGxvb2tzIGxpa2UgaXQgaXMgYSBmYWxzZSBwb3NpdGl2ZSwganVzdCB0aGUgZm9udAorICAg
ICAgICBpbiBwaXhlbCB0ZXN0IGNoYW5nZXMsIG5vdCB0aGUgY29udGVudHMuCisKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNoZWNr
Rmx1c2hEZWZlcnJlZFJlcGFpbnRzQWZ0ZXJMb2FkQ29tcGxldGUpOiBDYWxsCisgICAgICAgIGZy
YW1lKCktPnRpbGVkQmFja2luZ1N0b3JlKCktPnJlbW92ZUFsbFRpbGVzKCkgdG8gY2xlYXIgb3V0
ZGF0ZWQKKyAgICAgICAgdGlsZXMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnJl
bW92ZUFsbFRpbGVzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oOiBBZGQgcmVtb3ZlQWxsVGlsZXMoKSBj
bGFzcworICAgICAgICBtZXRob2QuCisgICAgICAgIChUaWxlZEJhY2tpbmdTdG9yZSk6CisKIDIw
MTItMTAtMjIgIExhbWFycXVlIFYuIFNvdXphICA8TGFtYXJxdWUuU291emEuZXh0QGJhc3lza29t
LmNvbT4KIAogICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciB0ZXh0IGRlY29yYXRpb24gIndh
dnkiIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDlhMDg1MDQ3YzY3OTcwYzU3N2ZmMzU3MGFmY2Iz
ZDE0NjAxOTNlYzQuLjQxZDM5M2Y3MGJjYmEzZmVhNTg5YWNjYTQ1NjgxYzc0MTlhMDk0OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTAtMjUgIExhbWFycXVlIFYuIFNv
dXphICA8TGFtYXJxdWUuU291emEuZXh0QGJhc3lza29tLmNvbT4KKworICAgICAgICBbUXRdIFRl
c3RzIHRvIGRldGVjdCB0aWxlZCBiYWNraW5nIHN0b3JlIGZhaWxpbmcgdG8gdXBkYXRlIHZpZXcg
dW5kZXIgY2VydGFpbiBjb25kaXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MzkyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdoZW4gbG9hZGluZyBhIG5ldyB3ZWJwYWdlIG9uIGEgUUdyYXBoaWNz
V2ViVmlldyB3aXRoIFRpbGVkIEJhY2tpbmcKKyAgICAgICAgU3RvcmUgb3B0aW9uIGVuYWJsZWQs
IHNvbWUgZGlydHkgdGlsZXMgZnJvbSB0aGUgcHJldmlvdXMgd2VicGFnZSBhcmUKKyAgICAgICAg
c3RpbGwgc2VlbiB3aGVuIHNjcm9sbGluZyBkb3duIHRoZSB3ZWJwYWdlLiBUaGUgdGlsZXMgYXJl
IG9ubHkgdXBkYXRlZAorICAgICAgICBhZnRlciBhIHNjYWxlIGNoYW5nZS4gVGhpcyBwYXRjaCBh
ZGRzIHRlc3QgY2FzZSB0byBkZXRlY3Qgc3VjaAorICAgICAgICBwcm9ibGVtcy4gVGhlcmUgaXMg
YW5vdGhlciBwcm9ibGVtIHdpdGggc2Nyb2xsIGJhctGVIG5vdCBiZWluZyB1cGRhdGVkCisgICAg
ICAgIHRoYXQgdGhlc2UgdGVzdHMgZG8gbm90IGRldGVjdCB5ZXQuCisKKyAgICAgICAgKiB0ZXN0
cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvZW1haWwyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3Bw
OiAKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3KToKKyAgICAgICAgKHRzdF9RR3JhcGhp
Y3NXZWJWaWV3Ojp3aWRnZXRzUmVuZGVyaW5nQWZ0ZXJTY2FsZV9kYXRhKTogdGVzdCBkYXRhCisg
ICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6d2lkZ2V0c1JlbmRlcmluZ0FmdGVyU2NhbGUp
OiB0ZXN0cworICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dl
YnZpZXcucXJjOgorCiAyMDEyLTEwLTIzICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAZGln
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBkZXZpY2VQaXhlbFJhdGlvIGZyb20gVmlld3BvcnRB
dHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggNzM5MDI4ZGVhOWY0OTE2
ZTllOWNiYjFlYjNiZDkzNmNiMzc2MTMzZC4uZTdlZGVmNjY5YzY2ZDFmYWVmODEyN2IxZWI4MDc3
NWZlNTRkNDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjAxOSw2ICsyMDE5
LDE0IEBAIHZvaWQgRnJhbWVWaWV3OjpzdGFydERlZmVycmVkUmVwYWludFRpbWVyKGRvdWJsZSBk
ZWxheSkKIAogdm9pZCBGcmFtZVZpZXc6OmNoZWNrRmx1c2hEZWZlcnJlZFJlcGFpbnRzQWZ0ZXJM
b2FkQ29tcGxldGUoKQogeworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIC8vIG1h
eWJlIHRoaXMgaXMgbm90IHRoZSBiZXN0IHBsYWNlIHRvIGFkZCB0aGlzLgorICAgIGlmIChmcmFt
ZSgpLT50aWxlZEJhY2tpbmdTdG9yZSgpKSB7CisgICAgICAgIC8vIHJlbW92ZSBhbGwgdGlsZXMg
ZnJvbSBvbGQgcGFnZSB3aGVuIGxvYWRpbmcgYSBuZXcgcGFnZS4KKyAgICAgICAgZnJhbWUoKS0+
dGlsZWRCYWNraW5nU3RvcmUoKS0+cmVtb3ZlQWxsVGlsZXMoKTsKKyAgICB9CisjZW5kaWYKKwog
ICAgIGlmIChzaG91bGRVc2VMb2FkVGltZURlZmVycmVkUmVwYWludERlbGF5KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2RlZmVycmVkUmVwYWludERlbGF5ID0gc19ub3JtYWxEZWZlcnJlZFJl
cGFpbnREZWxheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCBjNTY0ZGJlZDA2ZDhkOTI3YTcxNWQyMzZkNzc0
OGRlN2FkZTAyYzU5Li40NWI5MTA0OTQ4NWQ5NmJmZDgxMmM3NjEyNjgwMmVjY2FmNzBjZmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuY3BwCkBAIC00NDQsNiArNDQ0LDEyIEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OnJlbW92ZUFsbE5vblZpc2libGVUaWxlcygpCiAgICAgc2V0S2VlcFJlY3QodmlzaWJsZVJlY3Qo
KSk7CiB9CiAKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKK3sKKyAg
ICBtX3RpbGVzLmNsZWFyKCk7CisgICAgc3RhcnRCYWNraW5nU3RvcmVVcGRhdGVUaW1lcigpOwor
fQorCiBQYXNzUmVmUHRyPFRpbGU+IFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlQXQoY29uc3QgVGls
ZTo6Q29vcmRpbmF0ZSYgY29vcmRpbmF0ZSkgY29uc3QKIHsKICAgICByZXR1cm4gbV90aWxlcy5n
ZXQoY29vcmRpbmF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nU3RvcmUuaAppbmRleCBiM2MzNjVjMzU5Y2UyNjFkOTlhZWE4NGFkOGNl
NTY1YzFjYTg3ZTRkLi43NGRlYWJjZmQwN2NiNWJhMjJmOTJiNTY2YTE1ZDE1YjcxM2E3OGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2lu
Z1N0b3JlLmgKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgIEludFJlY3QgY292ZXJSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9jb3ZlclJlY3Q7IH0KICAgICBib29sIHZpc2libGVBcmVhSXND
b3ZlcmVkKCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVBbGxOb25WaXNpYmxlVGlsZXMoKTsKKyAg
ICB2b2lkIHJlbW92ZUFsbFRpbGVzKCk7CiAKICAgICB2b2lkIHNldFN1cHBvcnRzQWxwaGEoYm9v
bCk7CiAgICAgYm9vbCBzdXBwb3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c0Fs
cGhhOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZp
ZXcvcmVzb3VyY2VzL2VtYWlsMS5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhp
Y3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTRmOWIyMzhmMzYx
YTgyODk4YTI0MTgxZTc0MzJhYjI0ZWY5MzliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDEuaHRtbApAQCAt
MCwwICsxLDc0IEBACis8YnI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4tLS0tLS0tLS0t
IFdlaXRlcmdlbGVpdGV0ZSBOYWNocmljaHQgLS0tLS0tLS0tLTxicj5Wb246IDxiIGNsYXNzPSJn
bWFpbF9zZW5kZXJuYW1lIj5CYXN5IFRlc3Q8L2I+IDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJl
Zj0ibWFpbHRvOmJzdGVzdDQ0NkBnb29nbGVtYWlsLmNvbSI+YnN0ZXN0NDQ2QGdvb2dsZW1haWwu
Y29tPC9hPiZndDs8L3NwYW4+PGJyPgorRGF0dW06IDE3LiBOb3ZlbWJlciAyMDExIDEzOjQzPGJy
PkJldHJlZmY6IFJlOiBUZXN0PGJyPkFuOiA8YSBocmVmPSJtYWlsdG86YnN0ZXN0NDQ2QGdtYWls
LmNvbSI+YnN0ZXN0NDQ2QGdtYWlsLmNvbTwvYT48YnI+PGJyPjxicj5jaGFpbjM8YnI+PGJyPjxk
aXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5BbSAxNy4gTm92ZW1iZXIgMjAxMSAxMzo0MyBzY2hyaWVi
IEJhc3kgVGVzdCA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpic3Rlc3Q0NDZA
Z29vZ2xlbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5ic3Rlc3Q0NDZAZ29vZ2xlbWFpbC5jb208
L2E+Jmd0Ozwvc3Bhbj46PGRpdj4KKzxkaXY+PC9kaXY+PGRpdiBjbGFzcz0iaDUiPjxicj48Ymxv
Y2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3Jk
ZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KK2NoYWluMjxicj48YnI+
PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPkFtIDE3LiBOb3ZlbWJlciAyMDExIDEzOjE0IHNjaHJp
ZWIgQmFzeSBUZXN0IDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmJzdGVzdDQ0
NkBnb29nbGVtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmJzdGVzdDQ0NkBnb29nbGVtYWlsLmNv
bTwvYT4mZ3Q7PC9zcGFuPjo8ZGl2PjxkaXY+PC9kaXY+PGRpdj4KKworPGJyPjxibG9ja3F1b3Rl
IGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0
OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgorPHA+CisgS8O8bmFzdCBzYWd0ZSBh
bSBEb25uZXJzdGFnIGltIFPDvGR3ZXN0cjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCBi
bGFjayxzYW5zLXNlcmlmIj51bmRmdW5rLCBkaWUgw4RtdGVyIGbDvHIgCisgIFZlcmZhc3N1bmdz
c2NodXR6IG3DvHNzdGVuIOKAnnZvbSBLb3BmIGF1ZiBkaWUgRsO8w59l4oCcIGdlc3RlbGx0IHdl
cmRlbi4gTm9jaCAKKyAgd2ljaHRpZ2VyIHNlaSBlcyBhYmVyLCBSZWNodHNleHRyZW1pc211cyBn
ZXNlbGxzY2hhZnRsaWNoIHp1IMOkY2h0ZW4gdW5kIG1laHIgCisgIEdlbGQgZsO8ciBQcsOkdmVu
dGlvbiBhdXN6dWdlYmVuLCB6dW0gQmVpc3BpZWwgZsO8ciBKdWdlbmRhcmJlaXQgaW4gZGVuIAor
ICBLb21tdW5lbiAKKzwvc3Bhbj48L3A+CisgICAgICAgICAgICA8cD4KKyBHcsO8bmVuLVJlY2h0
c2V4cGVydGUgSmVyenkgTW9udGFnIHdhcmYgZGVuIEJlaMO2cmRlbiB2b3IsIGRpZSBHZWZhaHJl
biBkZXMgCisgIFJlY2h0c3JhZGlrYWxpc211cyDigJ56dW0gVGVpbCBuYWNobMOkc3NpZyB1bmQg
dGVpbHMgc3lzdGVtYXRpc2No4oCcIHVudGVyc2Now6R0enQgCisgIHp1IGhhYmVuLiBEZXIgVmVy
ZmFzc3VuZ3NzY2h1dHogc2VpIGluIERldXRzY2hsYW5kIHNlaXQgZGVtIEthbHRlbiBLcmllZyAK
KyAg4oCeaGlzdG9yaXNjaCBhdWYgZGllIHNvZ2VuYW5udGUgbGlua2Uga29tbXVuaXN0aXNjaGUg
R2VmYWhyIGdlcG9sdOKAnCwgc2FndGUgCisgIE08c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjpyZ2IoNTEsMjA0LDI1NSkiPm9udGFnIGltIFRWLVNlbmRlciBQaG9lbml4LiBFcyBnZWhlIGpl
dHp0IGF1Y2ggZGFydW0sIG9yZ2FuaXNhdG9yaXNjaGUgCisgIERlZml6aXRlIGJlaW0gVmVyZmFz
c3VuZ3NzY2h1dHogenUgYmVzZWl0aWdlbi4gCis8L3NwYW4+PC9wPjxzcGFuIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOnJnYig1MSwyMDQsMjU1KSI+CisgICAgICAgICAgICA8L3NwYW4+PG9sPjxs
aT48c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZ2IoNTEsMjA0LDI1NSkiPgorTMO2dHpz
Y2ggc2FndGUgZGVtIOKAnkvDtmxuZXIgU3RhZHQtQW56ZWlnZXLigJwsIGRlciBWZXJmYXNzdW48
L3NwYW4+Z3NzY2h1dHog4oCeaGF0IHVuc2VyZSAKKyAgVmVyZmFzc3VuZyBuaWNodCBnZXNjaMO8
dHp0LCBzb25kZXJuIGdlZsOkaHJkZXTigJwuIFZlcmJpbmR1bmdzbGV1dGUgZGVzIAorICBWZXJm
YXNzdW5nc3NjaHV0emVzIGjDpHR0ZW4gZGllIHJlY2h0c2V4dHJlbWUgU3plbmUgc2VsYnN0IG1p
dCBhbSBMZWJlbiAKKyAgZ2VoYWx0ZW4gdW5kIFN0cmFmdGF0ZW4gYmVnYW5nZW4uIFNpZSBzcHJh
Y2ggdm9tIGdyw7bDn3RlbiBWZXJmYXNzdW5nc3NjaHV0ei0gCisgIHVuZCBKdXN0aXotU2thbmRh
bCBzZWl0IGRlciBHcsO8bmR1bmcgZGVyIEJ1bmRlc3JlcHVibGlrLiAKKzwvbGk+PC9vbD4KKyAg
ICAgICAgICAgIDxvbCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGxpPgorIFRow7xyaW5nZW5z
IExpbmtzZnJha3Rpb25zY2hlZiBCb2RvIFJhbWVsb3cgc2FndGUgaW0gPHNwYW4gc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6cmdiKDUxLDI1NSw1MSkiPkRldXRzY2hsYW5kZnVuaywgPC9zcGFuPmRp
ZSAKKyAgRW50d2lja2x1bmcgZGVzIFJlY2h0c2V4dHJlbWlzbXVzIHNlaSB1bnRlcnNjaMOkdHp0
IHdvcmRlbi4gTWFuIHNlaSDigJ5hdWYgZGVtIAorICByZWNodGVuIEF1Z2UgaW1tZXIgYW0gVmVy
aGFybWxvc2Vu4oCcIGdld2VzZW4sIHfDpGhyZW5kIOKAnmRhcyBTY2jDvHJlbiBkZXIgCisgIEh5
c3Rlcmll4oCcIHNpY2gg4oCeZ2VnZW4gTGlua3PigJwgZ2VyaWNodGV0IGhhYmUuIAorPC9saT48
L29sPgorICAgICAgICAgICAgPG9sPjxsaT4KKyBEZXIgUmVjaHRzZXhwZXJ0ZSBkZXIgTGlua3Nm
cmFrdGlvbiwgV29sZmdhbmcgTmVza292aWMsIGJla2xhZ3RlIGViZW5mYWxscywgCisgIGRpZSBT
aWNoZXJoZWl0c2JlaMO2cmRlbiBow6R0dGVuIEdlc2V0emUgYmlzaGVyIGluIHZvbGxlbSBVbWZh
bmcgbnVyIGF1ZiBkZW4gCisgIEJlcmVpY2ggZGVzIGlzbGFtaXN0aXNjaGVuIFRlcnJvcmlzbXVz
IHVuZCBkZXMgTGlua3NleHRyZW1pc211cyBhbmdld2VuZGV0LiAKKyAgRGllIHZvbiBCdW5kZXNp
bm5lbm1pbmlzdGVyIEhhbnMtUGV0ZXIgRnJpZWRyaWNoIChDU1UpIHZvcmdlc2NobGFnZW5lIAor
ICBOZW9uYXppLVplbnRyYWxkYXRlaSBiZXplaWNobmV0ZSBlciBpbSBSQkItU2VuZGVyIFJhZGlv
IEVpbnMgYWxzIHVudGF1Z2xpY2gsIAorICB3ZW5uIGRhcyBCZXd1c3N0c2VpbiBpbSBVbWdhbmcg
bWl0IHJlY2h0c2V4dHJlbWVuIEdld2FsdHRhdGVuIGZlaGxlLiAKKzwvbGk+PC9vbD4KKyAgICAg
ICAgICAgIDxwPgorIEF1Y2ggZGVyIFY8Zm9udCBzaXplPSI0Ij5vcnNpdHplbmRlIGRlcyBaZW50
cmFscmF0cyBkZXIgTXVzbGltZSwgQWltYW4gTWF6eWVrLCBrcml0aXNpZXJ0ZSAKKyAgZGllIEVy
bWl0dGx1bmdzYmVow7ZyZGVuLiBEaWUgRmFtaWxpZW4gZGVyIE1vcmRvcGZlciBow6R0dGVuIHNp
Y2ggZnJhZ2VuIAorICBsYXNzZW4gbcO8c3Nlbiwgb2Igc2llIEtvbnRha3RlIHp1ciBQS0sgaGFi
ZW4gb2RlciBTY2h1dHpnZWxkZXIgemFobGVuLCBzYWd0ZSAKKyAgTWF6eWVrIGRlciDigJ5QYXNz
YXVlciBOZXVlbiBQcmVzc2XigJwuIOKAnlVuZCBqZXR6dCBzdGVsbHQgc2ljaCBoZXJhdXMsIGRh
c3MgCisgIFJlY2h0c2V4dHJlbWUgaGludGVyIGRlbiBNb3JkZW4gc3RhbmRlbi7igJwgCis8L2Zv
bnQ+PC9wPgorICAgICAgICAgICAgPHA+PGZvbnQgc2l6ZT0iNCI+CisgQXVzbMO2c2VyIGRlciBE
ZWJhdHRlIMO8YmVyIGRpZSBSb2xsZSBkZXMgVmVyZmFzc3VuZ3NzY2h1dHplcyB3YXJlbiB1bnRl
ciAKKyAgYW5kZXJlbSBNZWRpZW5iZXJpY2h0ZSwgd29uYWNoIGVpbiBlaGVtYWxpZ2VyIEthc3Nl
bGVyIFZlcmZhc3N1bmdzc2Now7x0emVyIAorICBiZWkgZWluZW0gb2RlciBzb2dhciBtZWhyZXJl
biBNb3JkZW4gdW5taXR0ZWxiYXIgaW4gVGF0b3J0bsOkaGUgZ2V3ZXNlbiBzZWluIAorICBzb2xs
LiBEZXIgTWFubiBzb2xsIHJlY2h0c2V4dHJlbWUgQW5zaWNodGVuIHZlcnRyZXRlbi4gCis8L2Zv
bnQ+PC9wPgorICAgICAgICAgICAgPHA+PGZvbnQgc2l6ZT0iNCI+CisgTGF1dCBlaW5lbSBCZXJp
Y2h0IGRlciDigJ5GcmFua2Z1cnRlciBBbGxnZW1lPC9mb250PmluZW4gWmVpdHVuZ+KAnCBwcsO8
ZnQgZGllIAorICBCdW5kZXNhbndhbHRzY2hhZnQgbnVuIGVybmV1dCBkaWUgbcO2Z2xpY2hlIFZl
cmJpbmR1bmcgZGVzIE1hbm5lcyB6dSBkZW4gCisgIFRhdGVuLCBkaWUgZGVyIFp3aWNrYXVlciBU
ZXJyb3JncnVwcGUg4oCeTmF0aW9uYWxzb3ppYWxpc3Rpc2NoZXIgVW50ZXJncnVuZOKAnCAKKyAg
enVnZXNjaHJpZWJlbiB3ZXJkZW4uIERlc2hhbGIgc2VpZW4gc8OkbXRsaWNoZSBBa3RlbiB6dSBk
ZW0gRmFsbCBhdXMgSGVzc2VuIAorICBhbmdlZm9yZGVydCB3b3JkZW4uIAorPC9wPgorICAgICAg
ICAgICAgPHA+Cis8L3A+PGgzPgorUGFubmVuIGJlaW0gVmVyZmFzc3VuZ3NzY2h1dHogCis8L2gz
PgorCisgICAgICAgICAgICA8cD4KK0luIFRow7xyaW5nZW4gdW5kIGluIE5pZWRlcnNhY2hzZW4g
dGF1Y2h0ZW4gZ2VzdGVybiB3ZWl0ZXJlIEZyYWdlbiBpbiBkZW0gRmFsbCAKKyAgZGVyIE1vcmRz
ZXJpZSBhdWYuIERlciBuaWVkZXJzw6RjaHNpc2NoZSBWZXJmYXNzdW5nc3NjaHV0eiByw6R1bXRl
IEZlaGxlciBiZWkgCisgIGRlciBGYWhuPC9wPgorPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2Pjwv
ZGl2Pjxicj4KKzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48L2Rpdj48YnI+Cis8L2Rpdj48YnI+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9lbWFpbDIuaHRtbCBiL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvZW1haWwyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjJjYmMxYzQ4NzFmNjExNDA5Y2ZlZjI2ZTNmZTA3NWY5NTgwMzZmZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNv
dXJjZXMvZW1haWwyLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPGJyPjxicj48ZGl2IGNsYXNzPSJn
bWFpbF9xdW90ZSI+LS0tLS0tLS0tLSBXZWl0ZXJnZWxlaXRldGUgTmFjaHJpY2h0IC0tLS0tLS0t
LS08YnI+Vm9uOiA8YiBjbGFzcz0iZ21haWxfc2VuZGVybmFtZSI+QmFzeSBUZXN0PC9iPiA8c3Bh
biBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpic3Rlc3Q0NDZAZ29vZ2xlbWFpbC5jb20i
PmJzdGVzdDQ0NkBnb29nbGVtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPjxicj4KK0RhdHVtOiAxNy4g
Tm92ZW1iZXIgMjAxMSAxMzoxNDxicj5CZXRyZWZmOiBUZXN0PGJyPkFuOiA8YSBocmVmPSJtYWls
dG86YnN0ZXN0NDQ2QGdtYWlsLmNvbSI+YnN0ZXN0NDQ2QGdtYWlsLmNvbTwvYT48YnI+PGJyPjxi
cj48cD4KKyBLw7xuYXN0IHNhZ3RlIGFtIERvbm5lcnN0YWcgaW0gU8O8ZHdlc3RyPHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OmFyaWFsIGJsYWNrLHNhbnMtc2VyaWYiPnVuZGZ1bmssIGRpZSDDhG10
ZXIgZsO8ciAKKyAgVmVyZmFzc3VuZ3NzY2h1dHogbcO8c3N0ZW4g4oCedm9tIEtvcGYgYXVmIGRp
ZSBGw7zDn2XigJwgZ2VzdGVsbHQgd2VyZGVuLiBOb2NoIAorICB3aWNodGlnZXIgc2VpIGVzIGFi
ZXIsIFJlY2h0c2V4dHJlbWlzbXVzIGdlc2VsbHNjaGFmdGxpY2ggenUgw6RjaHRlbiB1bmQgbWVo
ciAKKyAgR2VsZCBmw7xyIFByw6R2ZW50aW9uIGF1c3p1Z2ViZW4sIHp1bSBCZWlzcGllbCBmw7xy
IEp1Z2VuZGFyYmVpdCBpbiBkZW4gCisgIEtvbW11bmVuIAorPC9zcGFuPjwvcD4KKyAgICAgICAg
ICAgIDxwPgorIEdyw7xuZW4tUmVjaHRzZXhwZXJ0ZSBKZXJ6eSBNb250YWcgd2FyZiBkZW4gQmVo
w7ZyZGVuIHZvciwgZGllIEdlZmFocmVuIGRlcyAKKyAgUmVjaHRzcmFkaWthbGlzbXVzIOKAnnp1
bSBUZWlsIG5hY2hsw6Rzc2lnIHVuZCB0ZWlscyBzeXN0ZW1hdGlzY2jigJwgdW50ZXJzY2jDpHR6
dCAKKyAgenUgaGFiZW4uIERlciBWZXJmYXNzdW5nc3NjaHV0eiBzZWkgaW4gRGV1dHNjaGxhbmQg
c2VpdCBkZW0gS2FsdGVuIEtyaWVnIAorICDigJ5oaXN0b3Jpc2NoIGF1ZiBkaWUgc29nZW5hbm50
ZSBsaW5rZSBrb21tdW5pc3Rpc2NoZSBHZWZhaHIgZ2Vwb2x04oCcLCBzYWd0ZSAKKyAgTTxzcGFu
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJnYig1MSwyMDQsMjU1KSI+b250YWcgaW0gVFYtU2Vu
ZGVyIFBob2VuaXguIEVzIGdlaGUgamV0enQgYXVjaCBkYXJ1bSwgb3JnYW5pc2F0b3Jpc2NoZSAK
KyAgRGVmaXppdGUgYmVpbSBWZXJmYXNzdW5nc3NjaHV0eiB6dSBiZXNlaXRpZ2VuLiAKKzwvc3Bh
bj48L3A+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6cmdiKDUxLDIwNCwyNTUpIj4KKyAg
ICAgICAgICAgIDwvc3Bhbj48b2w+PGxpPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJn
Yig1MSwyMDQsMjU1KSI+CitMw7Z0enNjaCBzYWd0ZSBkZW0g4oCeS8O2bG5lciBTdGFkdC1Bbnpl
aWdlcuKAnCwgZGVyIFZlcmZhc3N1bjwvc3Bhbj5nc3NjaHV0eiDigJ5oYXQgdW5zZXJlIAorICBW
ZXJmYXNzdW5nIG5pY2h0IGdlc2Now7x0enQsIHNvbmRlcm4gZ2Vmw6RocmRldOKAnC4gVmVyYmlu
ZHVuZ3NsZXV0ZSBkZXMgCisgIFZlcmZhc3N1bmdzc2NodXR6ZXMgaMOkdHRlbiBkaWUgcmVjaHRz
ZXh0cmVtZSBTemVuZSBzZWxic3QgbWl0IGFtIExlYmVuIAorICBnZWhhbHRlbiB1bmQgU3RyYWZ0
YXRlbiBiZWdhbmdlbi4gU2llIHNwcmFjaCB2b20gZ3LDtsOfdGVuIFZlcmZhc3N1bmdzc2NodXR6
LSAKKyAgdW5kIEp1c3Rpei1Ta2FuZGFsIHNlaXQgZGVyIEdyw7xuZHVuZyBkZXIgQnVuZGVzcmVw
dWJsaWsuIAorPC9saT48L29sPgorICAgICAgICAgICAgPG9sIHN0eWxlPSJ0ZXh0LWFsaWduOnJp
Z2h0Ij48bGk+CisgVGjDvHJpbmdlbnMgTGlua3NmcmFrdGlvbnNjaGVmIEJvZG8gUmFtZWxvdyBz
YWd0ZSBpbSA8c3BhbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZ2IoNTEsMjU1LDUxKSI+RGV1
dHNjaGxhbmRmdW5rLCA8L3NwYW4+ZGllIAorICBFbnR3aWNrbHVuZyBkZXMgUmVjaHRzZXh0cmVt
aXNtdXMgc2VpIHVudGVyc2Now6R0enQgd29yZGVuLiBNYW4gc2VpIOKAnmF1ZiBkZW0gCisgIHJl
Y2h0ZW4gQXVnZSBpbW1lciBhbSBWZXJoYXJtbG9zZW7igJwgZ2V3ZXNlbiwgd8OkaHJlbmQg4oCe
ZGFzIFNjaMO8cmVuIGRlciAKKyAgSHlzdGVyaWXigJwgc2ljaCDigJ5nZWdlbiBMaW5rc+KAnCBn
ZXJpY2h0ZXQgaGFiZS4gCis8L2xpPjwvb2w+CisgICAgICAgICAgICA8b2w+PGxpPgorIERlciBS
ZWNodHNleHBlcnRlIGRlciBMaW5rc2ZyYWt0aW9uLCBXb2xmZ2FuZyBOZXNrb3ZpYywgYmVrbGFn
dGUgZWJlbmZhbGxzLCAKKyAgZGllIFNpY2hlcmhlaXRzYmVow7ZyZGVuIGjDpHR0ZW4gR2VzZXR6
ZSBiaXNoZXIgaW4gdm9sbGVtIFVtZmFuZyBudXIgYXVmIGRlbiAKKyAgQmVyZWljaCBkZXMgaXNs
YW1pc3Rpc2NoZW4gVGVycm9yaXNtdXMgdW5kIGRlcyBMaW5rc2V4dHJlbWlzbXVzIGFuZ2V3ZW5k
ZXQuIAorICBEaWUgdm9uIEJ1bmRlc2lubmVubWluaXN0ZXIgSGFucy1QZXRlciBGcmllZHJpY2gg
KENTVSkgdm9yZ2VzY2hsYWdlbmUgCisgIE5lb25hemktWmVudHJhbGRhdGVpIGJlemVpY2huZXRl
IGVyIGltIFJCQi1TZW5kZXIgUmFkaW8gRWlucyBhbHMgdW50YXVnbGljaCwgCisgIHdlbm4gZGFz
IEJld3Vzc3RzZWluIGltIFVtZ2FuZyBtaXQgcmVjaHRzZXh0cmVtZW4gR2V3YWx0dGF0ZW4gZmVo
bGUuIAorPC9saT48L29sPgorICAgICAgICAgICAgPHA+CisgQXVjaCBkZXIgVjxmb250IHNpemU9
IjQiPm9yc2l0emVuZGUgZGVzIFplbnRyYWxyYXRzIGRlciBNdXNsaW1lLCBBaW1hbiBNYXp5ZWss
IGtyaXRpc2llcnRlIAorICBkaWUgRXJtaXR0bHVuZ3NiZWjDtnJkZW4uIERpZSBGYW1pbGllbiBk
ZXIgTW9yZG9wZmVyIGjDpHR0ZW4gc2ljaCBmcmFnZW4gCisgIGxhc3NlbiBtw7xzc2VuLCBvYiBz
aWUgS29udGFrdGUgenVyIFBLSyBoYWJlbiBvZGVyIFNjaHV0emdlbGRlciB6YWhsZW4sIHNhZ3Rl
IAorICBNYXp5ZWsgZGVyIOKAnlBhc3NhdWVyIE5ldWVuIFByZXNzZeKAnC4g4oCeVW5kIGpldHp0
IHN0ZWxsdCBzaWNoIGhlcmF1cywgZGFzcyAKKyAgUmVjaHRzZXh0cmVtZSBoaW50ZXIgZGVuIE1v
cmRlbiBzdGFuZGVuLuKAnCAKKzwvZm9udD48L3A+CisgICAgICAgICAgICA8cD48Zm9udCBzaXpl
PSI0Ij4KKyBBdXNsw7ZzZXIgZGVyIERlYmF0dGUgw7xiZXIgZGllIFJvbGxlIGRlcyBWZXJmYXNz
dW5nc3NjaHV0emVzIHdhcmVuIHVudGVyIAorICBhbmRlcmVtIE1lZGllbmJlcmljaHRlLCB3b25h
Y2ggZWluIGVoZW1hbGlnZXIgS2Fzc2VsZXIgVmVyZmFzc3VuZ3NzY2jDvHR6ZXIgCisgIGJlaSBl
aW5lbSBvZGVyIHNvZ2FyIG1laHJlcmVuIE1vcmRlbiB1bm1pdHRlbGJhciBpbiBUYXRvcnRuw6Ro
ZSBnZXdlc2VuIHNlaW4gCisgIHNvbGwuIERlciBNYW5uIHNvbGwgcmVjaHRzZXh0cmVtZSBBbnNp
Y2h0ZW4gdmVydHJldGVuLiAKKzwvZm9udD48L3A+CisgICAgICAgICAgICA8cD48Zm9udCBzaXpl
PSI0Ij4KKyBMYXV0IGVpbmVtIEJlcmljaHQgZGVyIOKAnkZyYW5rZnVydGVyIEFsbGdlbWU8L2Zv
bnQ+aW5lbiBaZWl0dW5n4oCcIHByw7xmdCBkaWUgCisgIEJ1bmRlc2Fud2FsdHNjaGFmdCBudW4g
ZXJuZXV0IGRpZSBtw7ZnbGljaGUgVmVyYmluZHVuZyBkZXMgTWFubmVzIHp1IGRlbiAKKyAgVGF0
ZW4sIGRpZSBkZXIgWndpY2thdWVyIFRlcnJvcmdydXBwZSDigJ5OYXRpb25hbHNvemlhbGlzdGlz
Y2hlciBVbnRlcmdydW5k4oCcIAorICB6dWdlc2NocmllYmVuIHdlcmRlbi4gRGVzaGFsYiBzZWll
biBzw6RtdGxpY2hlIEFrdGVuIHp1IGRlbSBGYWxsIGF1cyBIZXNzZW4gCisgIGFuZ2Vmb3JkZXJ0
IHdvcmRlbi4gCis8L3A+CisgICAgICAgICAgICA8cD4KKzwvcD48aDM+CitQYW5uZW4gYmVpbSBW
ZXJmYXNzdW5nc3NjaHV0eiAKKzwvaDM+CisKKyAgICAgICAgICAgIDxwPgorSW4gVGjDvHJpbmdl
biB1bmQgaW4gTmllZGVyc2FjaHNlbiB0YXVjaHRlbiBnZXN0ZXJuIHdlaXRlcmUgRnJhZ2VuIGlu
IGRlbSBGYWxsIAorICBkZXIgTW9yZHNlcmllIGF1Zi4gRGVyIG5pZWRlcnPDpGNoc2lzY2hlIFZl
cmZhc3N1bmdzc2NodXR6IHLDpHVtdGUgRmVobGVyIGJlaSAKKyAgZGVyIEZhaG48L3A+Cis8L2Rp
dj48YnI+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vi
dmlldy5jcHAKaW5kZXggOWFlOTYwYjljY2MxMjA3YzQ2NjJiZmRlN2QyMjE3ZGViZjBjNjIxMC4u
OGE1YWYwYzlmZjQxMjNmMDk5NzE0MWUzYTE2MDkxYWQwYmZhYzcwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3Fn
cmFwaGljc3dlYnZpZXcuY3BwCkBAIC00Miw2ICs0Miw4IEBAIHByaXZhdGUgUV9TTE9UUzoKICAg
ICB2b2lkIGNyYXNoT25TZXRTY2FsZUJlZm9yZVNldFVybCgpOwogICAgIHZvaWQgd2lkZ2V0c1Jl
bmRlcmluZ1Rocm91Z2hDYWNoZSgpOwogICAgIHZvaWQgd2luZG93UmVzaXplRXZlbnQoKTsKKyAg
ICB2b2lkIHdpZGdldHNSZW5kZXJpbmdBZnRlclNjYWxlX2RhdGEoKTsKKyAgICB2b2lkIHdpZGdl
dHNSZW5kZXJpbmdBZnRlclNjYWxlKCk7CiAKICNpZiAhKGRlZmluZWQoV1RGX1VTRV9RVF9NT0JJ
TEVfVEhFTUUpICYmIFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKQogICAgIHZvaWQgc2V0UGFsZXR0
ZV9kYXRhKCk7CkBAIC0yMDEsNiArMjAzLDE1OSBAQCB2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3
Ojp3aWRnZXRzUmVuZGVyaW5nVGhyb3VnaENhY2hlKCkKICAgICBRQ09NUEFSRShyZWZlcmVuY2VQ
aXhtYXAudG9JbWFnZSgpLCB2aWV3V2l0aFRpbGluZy50b0ltYWdlKCkpOwogfQogCit2b2lkIHRz
dF9RR3JhcGhpY3NXZWJWaWV3Ojp3aWRnZXRzUmVuZGVyaW5nQWZ0ZXJTY2FsZV9kYXRhKCkKK3sK
KyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzZXRSZXNpemVzVG9Db250ZW50cyIpOworICAg
IFFUZXN0OjphZGRDb2x1bW48Ym9vbD4oInVzZVRpbGVkQmFja2luZ1N0b3JlIik7CisgICAgUVRl
c3Q6OmFkZENvbHVtbjxib29sPigiZnJvemVuVGlsZWRCYWNraW5nU3RvcmUiKTsKKyAgICBRVGVz
dDo6YWRkQ29sdW1uPGJvb2w+KCJzZXRUaWxlZEJhY2tpbmdTdG9yZUJlZm9yZVNjZW5lIik7CisK
KyAgICBRVGVzdDo6bmV3Um93KCIwIE5vUmVzaXplLCBOb1RCUyIpIDw8IGZhbHNlIDw8IGZhbHNl
IDw8IGZhbHNlIDw8IGZhbHNlOworICAgIFFUZXN0OjpuZXdSb3coIjEgTm9SZXNpemUsIFRCUywg
RnJvemVuLCBCZWZvcmVTY2VuZSIpIDw8IGZhbHNlIDw8IHRydWUgPDwgdHJ1ZSA8PCB0cnVlOwor
ICAgIFFUZXN0OjpuZXdSb3coIjIgTm9SZXNpemUsIFRCUywgRnJvemVuLCBBZnRlclNjZW5lIikg
PDwgZmFsc2UgPDwgdHJ1ZSA8PCB0cnVlIDw8IGZhbHNlOworICAgIFFUZXN0OjpuZXdSb3coIjMg
Tm9SZXNpemUsIFRCUywgTm9Gcm96ZW4sIEJlZm9yZVNjZW5lIikgPDwgZmFsc2UgPDwgdHJ1ZSA8
PCBmYWxzZSA8PCB0cnVlOworICAgIFFUZXN0OjpuZXdSb3coIjQgTm9SZXNpemUsIFRCUywgTm9G
cm96ZW4sIEFmdGVyU2NlbmUiKSA8PCBmYWxzZSA8PCB0cnVlIDw8IGZhbHNlIDw8IGZhbHNlOwor
CisgICAgUVRlc3Q6Om5ld1JvdygiNSBSZXNpemUsIE5vVEJTIikgPDwgdHJ1ZSA8PCBmYWxzZSA8
PCBmYWxzZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCI2IFJlc2l6ZSwgVEJTLCBGcm96
ZW4sIEJlZm9yZVNjZW5lIikgPDwgdHJ1ZSA8PCB0cnVlIDw8IHRydWUgPDwgdHJ1ZTsKKyAgICBR
VGVzdDo6bmV3Um93KCI3IFJlc2l6ZSwgVEJTLCBGcm96ZW4sIEFmdGVyU2NlbmUiKSA8PCB0cnVl
IDw8IHRydWUgPDwgdHJ1ZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCI4IFJlc2l6ZSwg
VEJTLCBOb0Zyb3plbiwgQmVmb3JlU2NlbmUiKSA8PCB0cnVlIDw8IHRydWUgPDwgZmFsc2UgPDwg
dHJ1ZTsKKyAgICBRVGVzdDo6bmV3Um93KCI5IFJlc2l6ZSwgVEJTLCBOb0Zyb3plbiwgQWZ0ZXJT
Y2VuZSIpIDw8IHRydWUgPDwgdHJ1ZSA8PCBmYWxzZSA8PCBmYWxzZTsKK30KKwordm9pZCB0c3Rf
UUdyYXBoaWNzV2ViVmlldzo6d2lkZ2V0c1JlbmRlcmluZ0FmdGVyU2NhbGUoKQoreworICAgIHN0
YXRpYyBpbnQgcnVuQ291bnRzID0gMDsKKworICAgIFFGRVRDSChib29sLCBzZXRSZXNpemVzVG9D
b250ZW50cyk7CisgICAgUUZFVENIKGJvb2wsIHVzZVRpbGVkQmFja2luZ1N0b3JlKTsKKyAgICBR
RkVUQ0goYm9vbCwgZnJvemVuVGlsZWRCYWNraW5nU3RvcmUpOworICAgIFFGRVRDSChib29sLCBz
ZXRUaWxlZEJhY2tpbmdTdG9yZUJlZm9yZVNjZW5lKTsKKworICAgIFFHcmFwaGljc1ZpZXcgdmll
dzsKKyAgICB2aWV3LnNldEhvcml6b250YWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFs
d2F5c09mZik7CisgICAgdmlldy5zZXRWZXJ0aWNhbFNjcm9sbEJhclBvbGljeShRdDo6U2Nyb2xs
QmFyQWx3YXlzT2ZmKTsKKyAgICB2aWV3LnNldEdlb21ldHJ5KFFSZWN0KDAsIDAsIDQ4MCwgODAw
KSk7CisgICAgdmlldy5zZXRWaWV3cG9ydFVwZGF0ZU1vZGUoUUdyYXBoaWNzVmlldzo6RnVsbFZp
ZXdwb3J0VXBkYXRlKTsKKworICAgIFFHcmFwaGljc1NjZW5lKiBzY2VuZSA9IG5ldyBRR3JhcGhp
Y3NTY2VuZSgmdmlldyk7CisgICAgdmlldy5zZXRTY2VuZShzY2VuZSk7CisgICAgdmlldy5zaG93
KCk7CisKKyAgICBRV2lkZ2V0KiBjb25zdCB3aWRnZXQgPSAmdmlldzsKKworICAgIFFBcHBsaWNh
dGlvbjo6cHJvY2Vzc0V2ZW50cygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQo
d2lkZ2V0KTsKKworICAgIFFQaXhtYXAgZW1wdHlQaXhtYXAodmlldy5zaXplKCkpOworICAgIHdp
ZGdldC0+cmVuZGVyKCZlbXB0eVBpeG1hcCk7CisKKyAgICBRU3RyaW5nIGNvbnRlbnRTdHJpbmcg
PSAiZW1wdHkiICsgUVN0cmluZzo6bnVtYmVyKHJ1bkNvdW50cykgKyAiLnBuZyI7CisKKyAgICBl
bXB0eVBpeG1hcC5zYXZlKGNvbnRlbnRTdHJpbmcpOworCisgICAgUUdyYXBoaWNzV2ViVmlldyog
d2ViVmlldyA9IG5ldyBRR3JhcGhpY3NXZWJWaWV3OworICAgIHdlYlZpZXctPnNldFJlc2l6ZXNU
b0NvbnRlbnRzKHNldFJlc2l6ZXNUb0NvbnRlbnRzKTsKKyAgICBpZiAoIXNldFJlc2l6ZXNUb0Nv
bnRlbnRzKQorICAgICAgICB3ZWJWaWV3LT5yZXNpemUoUVNpemUoNDgwLCA4MDApKTsKKworICAg
IGlmIChzZXRUaWxlZEJhY2tpbmdTdG9yZUJlZm9yZVNjZW5lKQorICAgICAgICB3ZWJWaWV3LT5z
ZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpUaWxlZEJhY2tpbmdTdG9yZUVu
YWJsZWQsIHVzZVRpbGVkQmFja2luZ1N0b3JlKTsKKworICAgIHNjZW5lLT5hZGRJdGVtKHdlYlZp
ZXcpOworCisgICAgaWYgKCFzZXRUaWxlZEJhY2tpbmdTdG9yZUJlZm9yZVNjZW5lKQorICAgICAg
ICB3ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpUaWxlZEJh
Y2tpbmdTdG9yZUVuYWJsZWQsIHVzZVRpbGVkQmFja2luZ1N0b3JlKTsKKworICAgIHdlYlZpZXct
PnBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldFNjcm9sbEJhclBvbGljeShRdDo6SG9yaXpvbnRhbCwg
UXQ6OlNjcm9sbEJhckFsd2F5c09mZik7CisgICAgd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+c2V0U2Nyb2xsQmFyUG9saWN5KFF0OjpWZXJ0aWNhbCwgUXQ6OlNjcm9sbEJhckFsd2F5c09m
Zik7CisKKyAgICB3ZWJWaWV3LT5oaWRlKCk7CisgICAgUUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZl
bnRzKCk7CisgICAgUVRlc3Q6OnFXYWl0KDApOworCisgICAgd2ViVmlldy0+bG9hZChRVXJsKCJx
cmM6Ly8vcmVzb3VyY2VzL2VtYWlsMS5odG1sIikpOworICAgIFFBcHBsaWNhdGlvbjo6cHJvY2Vz
c0V2ZW50cygpOworICAgIFFUZXN0OjpxV2FpdCgwKTsKKworICAgIHdlYlZpZXctPnNob3coKTsK
KyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVGVzdDo6cVdhaXQoMCk7
CisKKyAgICBRUGl4bWFwIGVtYWlsMVBpeG1hcCh2aWV3LnNpemUoKSk7CisgICAgd2lkZ2V0LT5y
ZW5kZXIoJmVtYWlsMVBpeG1hcCk7CisKKyAgICBjb250ZW50U3RyaW5nID0gImVtYWlsMSIgKyBR
U3RyaW5nOjpudW1iZXIocnVuQ291bnRzKSArICIucG5nIjsKKworICAgIGVtYWlsMVBpeG1hcC5z
YXZlKGNvbnRlbnRTdHJpbmcpOworCisgICAgd2ViVmlldy0+aGlkZSgpOworICAgIFFBcHBsaWNh
dGlvbjo6cHJvY2Vzc0V2ZW50cygpOworICAgIFFUZXN0OjpxV2FpdCgwKTsKKworICAgIHdlYlZp
ZXctPmxvYWQoUVVybCgicXJjOi8vL3Jlc291cmNlcy9lbWFpbDIuaHRtbCIpKTsKKyAgICBRQXBw
bGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVGVzdDo6cVdhaXQoMCk7CisKKyAgICB3
ZWJWaWV3LT5zaG93KCk7CisgICAgUUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZlbnRzKCk7CisgICAg
UVRlc3Q6OnFXYWl0KDApOworCisgICAgUVBpeG1hcCBlbWFpbDJQaXhtYXAodmlldy5zaXplKCkp
OworICAgIHdpZGdldC0+cmVuZGVyKCZlbWFpbDJQaXhtYXApOworCisgICAgY29udGVudFN0cmlu
ZyA9ICJlbWFpbDIiICsgUVN0cmluZzo6bnVtYmVyKHJ1bkNvdW50cykgKyAiLnBuZyI7CisKKyAg
ICBlbWFpbDJQaXhtYXAuc2F2ZShjb250ZW50U3RyaW5nKTsKKworICAgIGlmICh3ZWJWaWV3LT5y
ZXNpemVzVG9Db250ZW50cygpKSB7CisgICAgICAgIFFQb2ludEYgcG9zID0gd2ViVmlldy0+cG9z
KCk7CisgICAgICAgIHBvcy5zZXRZKHBvcy55KCkgLSAzMDApOworICAgICAgICB3ZWJWaWV3LT5z
ZXRQb3MocG9zKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3ZWJWaWV3LT5wYWdlKCktPm1haW5G
cmFtZSgpLT5zY3JvbGwoMCwgMzAwKTsKKyAgICAgICAgd2ViVmlldy0+dXBkYXRlR2VvbWV0cnko
KTsKKyAgICAgICAgd2ViVmlldy0+dXBkYXRlKCk7CisgICAgfQorCisgICAgUUFwcGxpY2F0aW9u
Ojpwcm9jZXNzRXZlbnRzKCk7CisgICAgUVRlc3Q6OnFXYWl0KDApOworCisgICAgUVBpeG1hcCBl
bWFpbDJBZnRlclNjcm9sbFBpeG1hcCh2aWV3LnNpemUoKSk7CisgICAgd2lkZ2V0LT5yZW5kZXIo
JmVtYWlsMkFmdGVyU2Nyb2xsUGl4bWFwKTsKKworICAgIGNvbnRlbnRTdHJpbmcgPSAiZW1haWwy
LWFmdGVyc2Nyb2xsIiArIFFTdHJpbmc6Om51bWJlcihydW5Db3VudHMpICsgIi5wbmciOworCisg
ICAgZW1haWwyQWZ0ZXJTY3JvbGxQaXhtYXAuc2F2ZShjb250ZW50U3RyaW5nKTsKKworICAgIHdl
YlZpZXctPnNldFRpbGVkQmFja2luZ1N0b3JlRnJvemVuKGZyb3plblRpbGVkQmFja2luZ1N0b3Jl
KTsKKyAgICB3ZWJWaWV3LT5zZXRTY2FsZSgyKTsKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NF
dmVudHMoKTsKKyAgICBRVGVzdDo6cVdhaXQoMCk7CisKKyAgICB3ZWJWaWV3LT5zZXRTY2FsZSgx
KTsKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVGVzdDo6cVdhaXQo
MCk7CisKKyAgICBRUGl4bWFwIGVtYWlsMkFmdGVyU2NhbGVQaXhtYXAodmlldy5zaXplKCkpOwor
ICAgIHdpZGdldC0+cmVuZGVyKCZlbWFpbDJBZnRlclNjYWxlUGl4bWFwKTsKKworICAgIGNvbnRl
bnRTdHJpbmcgPSAiZW1haWwyLWFmdGVyc2NhbGUiICsgUVN0cmluZzo6bnVtYmVyKHJ1bkNvdW50
cykgKyAiLnBuZyI7CisKKyAgICBlbWFpbDJBZnRlclNjYWxlUGl4bWFwLnNhdmUoY29udGVudFN0
cmluZyk7CisKKyAgICBydW5Db3VudHMrKzsKKworICAgIFFWRVJJRlkoZW1haWwxUGl4bWFwLnRv
SW1hZ2UoKSAhPSBlbXB0eVBpeG1hcC50b0ltYWdlKCkpOworICAgIFFWRVJJRlkoZW1haWwyUGl4
bWFwLnRvSW1hZ2UoKSAhPSBlbXB0eVBpeG1hcC50b0ltYWdlKCkpOworICAgIFFWRVJJRlkoZW1h
aWwyQWZ0ZXJTY2FsZVBpeG1hcC50b0ltYWdlKCkgIT0gZW1wdHlQaXhtYXAudG9JbWFnZSgpKTsK
KyAgICBRVkVSSUZZKGVtYWlsMkFmdGVyU2Nyb2xsUGl4bWFwLnRvSW1hZ2UoKSAhPSBlbXB0eVBp
eG1hcC50b0ltYWdlKCkpOworCisgICAgUVZFUklGWShlbWFpbDFQaXhtYXAudG9JbWFnZSgpICE9
IGVtYWlsMlBpeG1hcC50b0ltYWdlKCkpOworICAgIFFWRVJJRlkoZW1haWwyUGl4bWFwLnRvSW1h
Z2UoKSAhPSBlbWFpbDJBZnRlclNjcm9sbFBpeG1hcC50b0ltYWdlKCkpOworICAgIFFWRVJJRlko
ZW1haWwyQWZ0ZXJTY3JvbGxQaXhtYXAudG9JbWFnZSgpID09IGVtYWlsMkFmdGVyU2NhbGVQaXht
YXAudG9JbWFnZSgpKTsKK30KKwogI2lmIGRlZmluZWQoV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NU
T1JFKSAmJiBXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUKIHZvaWQgdHN0X1FHcmFwaGljc1dl
YlZpZXc6OmJ1ZzU3Nzk4KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMv
cWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5xcmMgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcucXJjCmluZGV4
IDk3NzI2YmE3M2ZlYjgzZDU3OWViNzRiOWVkMzliNmFiYjQ2MGJkNGEuLjFmZTAxNGE1MjgxZTI1
YzZkOWUyNzJkOTQxMzRmYmE5MWU3NjNhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5xcmMKKysrIGIvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3
LnFyYwpAQCAtNCw1ICs0LDcgQEAKICAgICAgICAgPGZpbGU+cmVzb3VyY2VzL3BvaW50aW5nX3Jp
Z2h0Lmh0bWw8L2ZpbGU+CiAgICAgICAgIDxmaWxlPnJlc291cmNlcy9wb2ludGluZ191cC5odG1s
PC9maWxlPgogICAgICAgICA8ZmlsZT5yZXNvdXJjZXMvZ3JlZW5kaXYuaHRtbDwvZmlsZT4KKyAg
ICAgICAgPGZpbGU+cmVzb3VyY2VzL2VtYWlsMS5odG1sPC9maWxlPgorICAgICAgICA8ZmlsZT5y
ZXNvdXJjZXMvZW1haWwyLmh0bWw8L2ZpbGU+CiAgICAgPC9xcmVzb3VyY2U+CiA8L1JDQz4K
</data>
<flag name="review"
          id="186044"
          type_id="1"
          status="-"
          setter="jturcotte"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171921</attachid>
            <date>2012-11-01 13:57:30 -0700</date>
            <delta_ts>2012-11-01 13:59:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73920-20121101185549.patch</filename>
            <type>text/plain</type>
            <size>4754</size>
            <attacher name="Lamarque V. Souza">lamarque</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjNTlkNTFkOWY5ZjZh
ZDZmMzMxMGEzYzc1MDE4MTUzMGUxY2M3OC4uZGNlMDEyYmIyMWQyMjBmM2ViMjg3OThiZWNhYTQ4
YzgzYjFmY2UyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTI5ICBMYW1h
cnF1ZSBWLiBTb3V6YSAgPExhbWFycXVlLlNvdXphQGJhc3lza29tLmNvbT4KKworICAgICAgICBb
UXRdIEFkZCBzdXBwb3J0IGZvciB0ZXh0IGRlY29yYXRpb24gIndhdnkiIHN0eWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0
ZXh0IGRlY29yYXRpb24gIndhdnkiIHN0eWxlIGZvciBRdCBwbGF0Zm9ybS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvUVBlblN0eWxlKToKKyAgICAgICAgUmVtb3ZlIEZJWE1FIGNvbW1lbnRzIG9ic29s
ZXRlZCBieSB0aGlzIHBhdGNoLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZSk6CisgICAgICAgIEltcGxlbWVudCB3YXZ5IHN0eWxlIGxpbmUgdHJhY2VyLgorCiAy
MDEyLTEwLTI5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGJpbmQgcmVkbyB0byBDdHJsK1kgb24gbm9uLW1hYyBwbGF0Zm9y
bXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCA2ZjliZjI2YmI0MTgxMTFkZjhjNThmZmQwYzg1NmFm
ZDMxZDFkYmIyLi40NGJjMGVkYmMxYzNmMjM2OTkyZTAxZmJjY2IzOTVjYjlhNzJjM2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIFF0OjpQZW5TdHlsZSB0
b1FQZW5TdHlsZShTdHJva2VTdHlsZSBzdHlsZSkKICAgICBjYXNlIFNvbGlkU3Ryb2tlOgogI2lm
IEVOQUJMRShDU1MzX1RFWFQpCiAgICAgY2FzZSBEb3VibGVTdHJva2U6Ci0gICAgY2FzZSBXYXZ5
U3Ryb2tlOiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzNTA3IC0gTmVlZHMgcGxhdGZvcm0gc3VwcG9ydC4KKyAgICBjYXNlIFdhdnlTdHJva2U6CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIFF0OjpTb2xpZExpbmU7CiAgICAgICAgIGJyZWFrOwpAQCAt
NDA4LDcgKzQwOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQ
b2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgIGNhc2UgU29saWRTdHJv
a2U6CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICBjYXNlIERvdWJsZVN0cm9rZToKLSAgICBj
YXNlIFdhdnlTdHJva2U6IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTM1MDcgLSBOZWVkcyBwbGF0Zm9ybSBzdXBwb3J0LgorICAgIGNhc2UgV2F2eVN0
cm9rZToKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIERvdHRlZFN0cm9rZTogewpA
QCAtNDcyLDEyICs0NzIsNzcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0
IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgICAgIHAtPnNl
dFBlbihwZW4pOwogICAgIH0KIAorI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgaWYgKHN0eWxl
ID09IFdhdnlTdHJva2UpIHsKKyAgICAgICAgY29uc3QgZmxvYXQgc3RlcCA9IHdpZHRoOyAvLyBN
YWtlIHdhdmUgaGVpZ2h0IGVxdWFsIHRvIHN0cm9rZVRoaWNrbmVzcygpLgorICAgICAgICBzaG9y
dCBzaWduYWwgPSAtMTsKKyAgICAgICAgUVBhaW50ZXJQYXRoIHBhdGg7CisgICAgICAgIHBhdGgu
bW92ZVRvKHAxKTsKKyAgICAgICAgZmxvYXQgeDEsIHkxLCB4MiwgeTI7CisKKyAgICAgICAgaWYg
KGlzVmVydGljYWxMaW5lKSB7CisgICAgICAgICAgICB4MSA9IHgyID0gcDEueCgpOworCisgICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgKHgxLCB5MSkgPCAoeDIsIHkyKQorICAgICAgICAgICAgaWYg
KHAxLnkoKSA8IHAyLnkoKSkgeworICAgICAgICAgICAgICAgIHkxID0gcDEueSgpOworICAgICAg
ICAgICAgICAgIHkyID0gcDIueSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB5MSA9IHAyLnkoKTsKKyAgICAgICAgICAgICAgICB5MiA9IHAxLnkoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gUXQgaW50ZXJwcmV0cyBnZW9tZXRyaWMgdW5pdHMgYXMg
ZW5kLXBvaW50IGluY2x1c2l2ZSwgd2hpbGUgV2ViQ29yZSBpbnRlcnByZXRzIGdlb21ldHJpYyB1
bml0cyBhcyBlbmRwb2ludCBleGNsdXNpdmUuCisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdl
IG5lZWQgdG8gc3VidHJhY3Qgb25lIGZyb20gdGhlIGVuZHBvaW50LCBvciB0aGUgbGluZSB3aWxs
IGJlIHBhaW50ZWQgb25lIHBpeGVsIHRvbyBsb25nLgorICAgICAgICAgICAgeTIgLT0gMTsKKyAg
ICAgICAgICAgIGZsb2F0IHkgPSB5MSArIHN0ZXAgKyAxOworCisgICAgICAgICAgICB3aGlsZSAo
eSA8PSB5MikgeworICAgICAgICAgICAgICAgIHNpZ25hbCA9IC1zaWduYWw7CisgICAgICAgICAg
ICAgICAgcGF0aC5saW5lVG8oeDEgKyBzaWduYWwgKiBzdGVwLCB5KTsKKyAgICAgICAgICAgICAg
ICB5ICs9IHN0ZXAgKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgeTEgPSB5MiA9IHAxLnkoKTsKKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlICh4MSwg
eTEpIDwgKHgyLCB5MikKKyAgICAgICAgICAgIGlmIChwMS54KCkgPCBwMi54KCkpIHsKKyAgICAg
ICAgICAgICAgICB4MSA9IHAxLngoKTsKKyAgICAgICAgICAgICAgICB4MiA9IHAyLngoKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeDEgPSBwMi54KCk7CisgICAgICAg
ICAgICAgICAgeDIgPSBwMS54KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFF0
IGludGVycHJldHMgZ2VvbWV0cmljIHVuaXRzIGFzIGVuZC1wb2ludCBpbmNsdXNpdmUsIHdoaWxl
IFdlYkNvcmUgaW50ZXJwcmV0cyBnZW9tZXRyaWMgdW5pdHMgYXMgZW5kcG9pbnQgZXhjbHVzaXZl
LgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBuZWVkIHRvIHN1YnRyYWN0IG9uZSBmcm9t
IHRoZSBlbmRwb2ludCwgb3IgdGhlIGxpbmUgd2lsbCBiZSBwYWludGVkIG9uZSBwaXhlbCB0b28g
bG9uZy4KKyAgICAgICAgICAgIHgyIC09IDE7CisgICAgICAgICAgICBmbG9hdCB4ID0geDEgKyBz
dGVwICsgMTsKKworICAgICAgICAgICAgd2hpbGUgKHggPD0geDIpIHsKKyAgICAgICAgICAgICAg
ICBzaWduYWwgPSAtc2lnbmFsOworICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKHgsIHkxICsg
c2lnbmFsICogc3RlcCk7CisgICAgICAgICAgICAgICAgeCArPSBzdGVwICsgMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSBsYXN0IHBvaW50IGNyZWF0ZWQgYnkg
dGhlIHdoaWxlIGxvb3BzIGFib3ZlIG1heSBub3QgYmUgdGhlIGVuZAorICAgICAgICAvLyBwb2lu
dCwgc28gY29tcGxldGUgdGhlIGxhc3Qgd2F2ZSBieSBjb25uZWN0aW5nIHRoZSBlbmQgcG9pbnQu
CisgICAgICAgIHBhdGgubGluZVRvKHgyLCB5Mik7CisgICAgICAgIFFQZW4gcGVuID0gcC0+cGVu
KCk7CisgICAgICAgIHBlbi5zZXRKb2luU3R5bGUoUXQ6OkJldmVsSm9pbik7IC8vIEEgYmV2ZWxs
ZWQgbGluZSBqb2luIGlzIG1vcmUgc3VpdGFibGUgZm9yIHdhdnkgdGhhbiBtaXRlciBvciByb3Vu
ZC4KKyAgICAgICAgcC0+c3Ryb2tlUGF0aChwYXRoLCBwZW4pOworICAgIH0gZWxzZSB7CisjZW5k
aWYgLy8gQ1NTM19URVhUCiAgICAgLy8gUXQgaW50ZXJwcmV0cyBnZW9tZXRyaWMgdW5pdHMgYXMg
ZW5kLXBvaW50IGluY2x1c2l2ZSwgd2hpbGUgV2ViQ29yZSBpbnRlcnByZXRzIGdlb210cmljIHVu
aXRzIGFzIGVuZHBvaW50IGV4Y2x1c2l2ZS4KICAgICAvLyBUaGlzIG1lYW5zIHdlIG5lZWQgdG8g
c3VidHJhY3Qgb25lIGZyb20gdGhlIGVuZHBvaW50LCBvciB0aGUgbGluZSB3aWxsIGJlIHBhaW50
ZWQgb25lIHBpeGVsIHRvbyBsb25nLgogICAgIGlmIChwMS54KCkgPT0gcDIueCgpKQogICAgICAg
ICBwLT5kcmF3TGluZShwMSwgcDIgLSBGbG9hdFNpemUoMCwgMSkpOwogICAgIGVsc2UKICAgICAg
ICAgcC0+ZHJhd0xpbmUocDEsIHAyIC0gRmxvYXRTaXplKDEsIDApKTsKKyNpZiBFTkFCTEUoQ1NT
M19URVhUKQorICAgIH0KKyNlbmRpZiAvLyBDU1MzX1RFWFQKIAogICAgIGlmIChwYXRXaWR0aCkK
ICAgICAgICAgcC0+cmVzdG9yZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>172206</attachid>
            <date>2012-11-02 21:45:23 -0700</date>
            <delta_ts>2012-11-02 21:45:23 -0700</delta_ts>
            <desc>Log with printf of some calls</desc>
            <filename>log_do_not_work.txt</filename>
            <type>text/plain</type>
            <size>10902</size>
            <attacher name="Lamarque V. Souza">lamarque</attacher>
            
              <data encoding="base64">bG9hZGVkIHRoZSBkdW1teSBwbHVnaW4gCmxvYWRlZCB0aGUgR2VuZXJpYyBwbHVnaW4gCmxvYWRl
ZCB0aGUgTGludXggcGx1Z2luIApMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGVUaWxlcygpICgwLCAwKSA3ODR4MTQzOApMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6
OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRLZWVwUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik6
IHdpbGwgcmVtb3ZlIDAvMApMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGVUaWxlcygpIGNhbGxpbmcgcmVzaXplRWRnZVRpbGVzIDAKTGFtYXJxdWUgYm9vbCBX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRpbGVzKCk6IHdpbGwgcmVtb3Zl
IDAvMCAwCkxhbWFycXVlIG1fcmVjICAgIHQ6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxl
OjpDb29yZGluYXRlJikgY29uc3QgKDAsIDApIDc4NHgxNDM4CkxhbWFycXVlICAgcmVjdCAgIDog
V2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JD
b29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkg
NTEyeDUxMgpMYW1hcnF1ZSBpbnRlcnNlY3Q6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxl
OjpDb29yZGluYXRlJikgY29uc3QgKDAsIDApIDUxMng1MTIKTGFtYXJxdWUgbV9yZWMgICAgdDog
V2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JD
b29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkg
Nzg0eDE0MzgKTGFtYXJxdWUgICByZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGls
ZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIsIDApIDUxMng1MTIKTGFtYXJxdWUgaW50ZXJzZWN0
OiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZv
ckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIs
IDApIDI3Mng1MTIKTGFtYXJxdWUgbV9yZWMgICAgdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6
OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNzg0eDE0MzgKTGFtYXJxdWUgICByZWN0
ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVj
dEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgw
LCA1MTIpIDUxMng1MTIKTGFtYXJxdWUgaW50ZXJzZWN0OiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNv
cmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29y
ZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgwLCA1MTIpIDUxMng1MTIKTGFtYXJxdWUgbV9y
ZWMgICAgdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGls
ZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25z
dCAoMCwgMCkgNzg0eDE0MzgKTGFtYXJxdWUgICByZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdl
YkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2Vi
Q29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIsIDUxMikgNTEyeDUxMgpMYW1hcnF1
ZSBpbnRlcnNlY3Q6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6
OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikg
Y29uc3QgKDUxMiwgNTEyKSAyNzJ4NTEyCkxhbWFycXVlIG1fcmVjICAgIHQ6IFdlYkNvcmU6Oklu
dFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShj
b25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3QgKDAsIDApIDc4NHgxNDM4Ckxh
bWFycXVlICAgcmVjdCAgIDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdT
dG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5h
dGUmKSBjb25zdCAoMCwgMTAyNCkgNTEyeDUxMgpMYW1hcnF1ZSBpbnRlcnNlY3Q6IFdlYkNvcmU6
OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0
ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3QgKDAsIDEwMjQpIDUxMng0
MTQKTGFtYXJxdWUgbV9yZWMgICAgdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNv
b3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNzg0eDE0MzgKTGFtYXJxdWUgICByZWN0ICAgOiBXZWJD
b3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3Jk
aW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIsIDEwMjQp
IDUxMng1MTIKTGFtYXJxdWUgaW50ZXJzZWN0OiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRp
bGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGls
ZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIsIDEwMjQpIDI3Mng0MTQKTGFtYXJxdWUgbV9yZWMg
ICAgdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJl
Y3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAo
MCwgMCkgNzg0eDE0MzgKTGFtYXJxdWUgICByZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNv
cmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29y
ZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgwLCAwKSA1MTJ4NTEyCkxhbWFycXVlIGludGVy
c2VjdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJl
Y3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAo
MCwgMCkgNTEyeDUxMgpMYW1hcnF1ZSBtX3JlYyAgICB0OiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNv
cmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29y
ZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgwLCAwKSA3ODR4MTQzOApMYW1hcnF1ZSAgIHJl
Y3QgICA6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVS
ZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3Qg
KDUxMiwgMCkgNTEyeDUxMgpMYW1hcnF1ZSBpbnRlcnNlY3Q6IFdlYkNvcmU6OkludFJlY3QgV2Vi
Q29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJD
b3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3QgKDUxMiwgMCkgMjcyeDUxMgpMYW1hcnF1ZSBt
X3JlYyAgICB0OiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNv
bnN0ICgwLCAwKSA3ODR4MTQzOApMYW1hcnF1ZSAgIHJlY3QgICA6IFdlYkNvcmU6OkludFJlY3Qg
V2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBX
ZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3QgKDAsIDUxMikgNTEyeDUxMgpMYW1hcnF1
ZSBpbnRlcnNlY3Q6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6
OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikg
Y29uc3QgKDAsIDUxMikgNTEyeDUxMgpMYW1hcnF1ZSBtX3JlYyAgICB0OiBXZWJDb3JlOjpJbnRS
ZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29u
c3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgwLCAwKSA3ODR4MTQzOApMYW1h
cnF1ZSAgIHJlY3QgICA6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3Rv
cmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRl
JikgY29uc3QgKDUxMiwgNTEyKSA1MTJ4NTEyCkxhbWFycXVlIGludGVyc2VjdDogV2ViQ29yZTo6
SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRl
KGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoNTEyLCA1MTIpIDI3Mng1
MTIKTGFtYXJxdWUgdm9pZCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1
ZmZlcnMoKSBkaXJ0eVRpbGVzLnNpemUoKTogNApMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpICgwLCAwKSA3ODR4MTQzOApMYW1hcnF1ZSB2b2lk
IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpzZXRLZWVwUmVjdChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik6IHdpbGwgcmVtb3ZlIDAvNApMYW1hcnF1ZSBtX3JlYyAgICB0OiBXZWJDb3JlOjpJ
bnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUo
Y29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgwLCAwKSA3ODR4MTQzOApM
YW1hcnF1ZSAgIHJlY3QgICA6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5n
U3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGlu
YXRlJikgY29uc3QgKDAsIDEwMjQpIDUxMng1MTIKTGFtYXJxdWUgaW50ZXJzZWN0OiBXZWJDb3Jl
OjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5h
dGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICgwLCAxMDI0KSA1MTJ4
NDE0CkxhbWFycXVlIG1fcmVjICAgIHQ6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRC
YWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpD
b29yZGluYXRlJikgY29uc3QgKDAsIDApIDc4NHgxNDM4CkxhbWFycXVlICAgcmVjdCAgIDogV2Vi
Q29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29y
ZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoNTEyLCAxMDI0
KSA1MTJ4NTEyCkxhbWFycXVlIGludGVyc2VjdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRp
bGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoNTEyLCAxMDI0KSAyNzJ4NDE0CkxhbWFycXVlIG1fcmVj
ICAgIHQ6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVS
ZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3Qg
KDAsIDApIDc4NHgxNDM4CkxhbWFycXVlICAgcmVjdCAgIDogV2ViQ29yZTo6SW50UmVjdCBXZWJD
b3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNv
cmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMTAyNCkgNTEyeDUxMgpMYW1hcnF1ZSBp
bnRlcnNlY3Q6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRp
bGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29u
c3QgKDAsIDEwMjQpIDUxMng0MTQKTGFtYXJxdWUgbV9yZWMgICAgdDogV2ViQ29yZTo6SW50UmVj
dCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0
IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNzg0eDE0MzgKTGFtYXJx
dWUgICByZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3Jl
Ojp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYp
IGNvbnN0ICg1MTIsIDEwMjQpIDUxMng1MTIKTGFtYXJxdWUgaW50ZXJzZWN0OiBXZWJDb3JlOjpJ
bnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUo
Y29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIsIDEwMjQpIDI3Mng0
MTQKTGFtYXJxdWUgdm9pZCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1
ZmZlcnMoKSBkaXJ0eVRpbGVzLnNpemUoKTogMgpMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjpyZW1vdmVBbGxUaWxlcygpCkxhbWFycXVlIHZvaWQgV2ViQ29yZTo6VGls
ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKTGFtYXJxdWUgdm9pZCBXZWJDb3JlOjpU
aWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZUJ1ZmZlcnMoKSBkaXJ0eVRpbGVzLnNpemUoKTog
NApMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygp
ICgwLCAwKSA3ODR4MTE4NQpMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3Jl
OjpzZXRLZWVwUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik6IHdpbGwgcmVtb3ZlIDAvNgpM
YW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcygpIGNh
bGxpbmcgcmVzaXplRWRnZVRpbGVzIDAKTGFtYXJxdWUgbV9yZWMgICAgdDogV2ViQ29yZTo6SW50
UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNv
bnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNzg0eDExODUKTGFt
YXJxdWUgICByZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0
ZSYpIGNvbnN0ICgwLCAwKSA1MTJ4NTEyCkxhbWFycXVlIGludGVyc2VjdDogV2ViQ29yZTo6SW50
UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNv
bnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNTEyeDUxMgpMYW1h
cnF1ZSBib29sIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKSBl
eHBlY3RlZCAoMCwgMCkgNTEyeDUxMjsgZ290ICgwLCAwKSA1MTJ4NTEyCkxhbWFycXVlIG1fcmVj
ICAgIHQ6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVS
ZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3Qg
KDAsIDApIDc4NHgxMTg1CkxhbWFycXVlICAgcmVjdCAgIDogV2ViQ29yZTo6SW50UmVjdCBXZWJD
b3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNv
cmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoNTEyLCA1MTIpIDUxMng1MTIKTGFtYXJxdWUg
aW50ZXJzZWN0OiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0
aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNv
bnN0ICg1MTIsIDUxMikgMjcyeDUxMgpMYW1hcnF1ZSBib29sIFdlYkNvcmU6OlRpbGVkQmFja2lu
Z1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKSBleHBlY3RlZCAoNTEyLCA1MTIpIDI3Mng1MTI7IGdv
dCAoNTEyLCA1MTIpIDI3Mng1MTIKTGFtYXJxdWUgbV9yZWMgICAgdDogV2ViQ29yZTo6SW50UmVj
dCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0
IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNzg0eDExODUKTGFtYXJx
dWUgICByZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3Jl
Ojp0aWxlUmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYp
IGNvbnN0ICg1MTIsIDEwMjQpIDUxMng1MTIKTGFtYXJxdWUgaW50ZXJzZWN0OiBXZWJDb3JlOjpJ
bnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxlUmVjdEZvckNvb3JkaW5hdGUo
Y29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0ICg1MTIsIDEwMjQpIDI3Mngx
NjEKTGFtYXJxdWUgYm9vbCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRp
bGVzKCkgZXhwZWN0ZWQgKDUxMiwgMTAyNCkgMjcyeDE2MTsgZ290ICg1MTIsIDEwMjQpIDI3Mng0
MTQKTGFtYXJxdWUgYm9vbCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6cmVzaXplRWRnZVRp
bGVzKCkgcmVzaXppbmcKTGFtYXJxdWUgbV9yZWMgICAgdDogV2ViQ29yZTo6SW50UmVjdCBXZWJD
b3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNv
cmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMCkgNzg0eDExODUKTGFtYXJxdWUgICBy
ZWN0ICAgOiBXZWJDb3JlOjpJbnRSZWN0IFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjp0aWxl
UmVjdEZvckNvb3JkaW5hdGUoY29uc3QgV2ViQ29yZTo6VGlsZTo6Q29vcmRpbmF0ZSYpIGNvbnN0
ICgwLCAxMDI0KSA1MTJ4NTEyCkxhbWFycXVlIGludGVyc2VjdDogV2ViQ29yZTo6SW50UmVjdCBX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdl
YkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgMTAyNCkgNTEyeDE2MQpMYW1hcnF1
ZSBib29sIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpyZXNpemVFZGdlVGlsZXMoKSBleHBl
Y3RlZCAoMCwgMTAyNCkgNTEyeDE2MTsgZ290ICgwLCAxMDI0KSA1MTJ4NDE0CkxhbWFycXVlIGJv
b2wgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpIHJlc2l6aW5n
CkxhbWFycXVlIG1fcmVjICAgIHQ6IFdlYkNvcmU6OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNr
aW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29y
ZGluYXRlJikgY29uc3QgKDAsIDApIDc4NHgxMTg1CkxhbWFycXVlICAgcmVjdCAgIDogV2ViQ29y
ZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGlu
YXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoMCwgNTEyKSA1MTJ4
NTEyCkxhbWFycXVlIGludGVyc2VjdDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJh
Y2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNv
b3JkaW5hdGUmKSBjb25zdCAoMCwgNTEyKSA1MTJ4NTEyCkxhbWFycXVlIGJvb2wgV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygpIGV4cGVjdGVkICgwLCA1MTIpIDUx
Mng1MTI7IGdvdCAoMCwgNTEyKSA1MTJ4NTEyCkxhbWFycXVlIG1fcmVjICAgIHQ6IFdlYkNvcmU6
OkludFJlY3QgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnRpbGVSZWN0Rm9yQ29vcmRpbmF0
ZShjb25zdCBXZWJDb3JlOjpUaWxlOjpDb29yZGluYXRlJikgY29uc3QgKDAsIDApIDc4NHgxMTg1
CkxhbWFycXVlICAgcmVjdCAgIDogV2ViQ29yZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGluYXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3Jk
aW5hdGUmKSBjb25zdCAoNTEyLCAwKSA1MTJ4NTEyCkxhbWFycXVlIGludGVyc2VjdDogV2ViQ29y
ZTo6SW50UmVjdCBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6dGlsZVJlY3RGb3JDb29yZGlu
YXRlKGNvbnN0IFdlYkNvcmU6OlRpbGU6OkNvb3JkaW5hdGUmKSBjb25zdCAoNTEyLCAwKSAyNzJ4
NTEyCkxhbWFycXVlIGJvb2wgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VU
aWxlcygpIGV4cGVjdGVkICg1MTIsIDApIDI3Mng1MTI7IGdvdCAoNTEyLCAwKSAyNzJ4NTEyCkxh
bWFycXVlIGJvb2wgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnJlc2l6ZUVkZ2VUaWxlcygp
OiB3aWxsIHJlbW92ZSAwLzYgMQpMYW1hcnF1ZSB2b2lkIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpIGRpcnR5VGlsZXMuc2l6ZSgpOiA0CkxhbWFycXVlIHZv
aWQgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkgZGlydHlU
aWxlcy5zaXplKCk6IDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>