<?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>95134</bug_id>
          
          <creation_ts>2012-08-27 15:17:28 -0700</creation_ts>
          <short_desc>[chromium] Support high DPI scroll bar on top level web frame.</short_desc>
          <delta_ts>2012-09-19 10:57:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Flack">flackr</reporter>
          <assigned_to name="Robert Flack">flackr</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rbyers</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>705740</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-08-27 15:17:28 -0700</bug_when>
    <thetext>Currently the ScrollbarLayerChromium of the top level frame is in a ScrollbarLayerChromium with a regular 1x scale factor regardless of the current content scale factor. The scroll bar should match the content scale of the rest of the browser drawing a high DPI scrollbar when running on a high DPI display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705750</commentid>
    <comment_count>1</comment_count>
      <attachid>160824</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-08-27 15:24:17 -0700</bug_when>
    <thetext>Created attachment 160824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712035</commentid>
    <comment_count>2</comment_count>
      <attachid>162243</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-05 07:45:55 -0700</bug_when>
    <thetext>Created attachment 162243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712036</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 07:49:26 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712197</commentid>
    <comment_count>4</comment_count>
      <attachid>162243</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-05 10:23:14 -0700</bug_when>
    <thetext>Comment on attachment 162243
Patch

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

As a note for reviewers: Twiz is working on a change (wkb.ug/95094) to set contentsScale on all layers in the tree appropriately, which would eliminate the need for these changes to Frame/FrameView/ScrollingCoordiatorChromium/WebLayer. So I&apos;m not sure that this should land before that change, unless it is at risk for m23.

&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:268
&gt; +        IntRect thumbRect = m_geometry-&gt;thumbRect(m_scrollbar.get());

Why&apos;d this change to a IntRect?

&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:282
&gt; +    // Paint and upload the entire part.

I don&apos;t feel like this comment is adding much value here. Is there something to explain that the code does not?

&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:293
&gt; +    IntRect thumbRect = m_geometry-&gt;thumbRect(m_scrollbar.get());

Why switched to IntRect again?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:108
&gt; -    m_geometry-&gt;splitTrack(&amp;m_scrollbar, m_geometry-&gt;trackRect(&amp;m_scrollbar), backTrackRect, thumbRect, foreTrackRect);
&gt; +    WebRect trackRect = m_geometry-&gt;trackRect(&amp;m_scrollbar);
&gt; +    m_geometry-&gt;splitTrack(&amp;m_scrollbar, trackRect, backTrackRect, thumbRect, foreTrackRect);

no-op change? should this be in the diff?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:113
&gt; -        OwnPtr&lt;CCTextureDrawQuad&gt; quad = CCTextureDrawQuad::create(sharedQuadState, IntRect(thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height), m_thumbResourceId, premultipledAlpha, uvRect, flipped);
&gt; +        OwnPtr&lt;CCTextureDrawQuad&gt; quad = CCTextureDrawQuad::create(sharedQuadState, IntRect(thumbRect.x * widthScale, thumbRect.y * heightScale, thumbRect.width * widthScale, thumbRect.height * heightScale), m_thumbResourceId, premultipledAlpha, uvRect, flipped);

Style-wise, how about we add some local variables here: thumbContentRect and foreTrackContentRect? These will be the original rects scale()d up by width and height scale. Then we don&apos;t have to add multiplications inline here.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:155
&gt; -    return WebKit::WebSize(m_owner-&gt;contentBounds().width(), m_owner-&gt;contentBounds().height());
&gt; +    return WebKit::WebSize(m_owner-&gt;bounds().width(), m_owner-&gt;bounds().height());

Who does this change affect, can you justify this one? It seems unrelated to the other changes somehow, is this fixing a separate bug than rendering scale?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712253</commentid>
    <comment_count>5</comment_count>
      <attachid>162243</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-05 10:50:10 -0700</bug_when>
    <thetext>Comment on attachment 162243
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:268
&gt;&gt; +        IntRect thumbRect = m_geometry-&gt;thumbRect(m_scrollbar.get());
&gt; 
&gt; Why&apos;d this change to a IntRect?

Not sure, changing to WebRect. Maybe this came out of merging, or just testing.

&gt;&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:282
&gt;&gt; +    // Paint and upload the entire part.
&gt; 
&gt; I don&apos;t feel like this comment is adding much value here. Is there something to explain that the code does not?

Removed.

&gt;&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:293
&gt;&gt; +    IntRect thumbRect = m_geometry-&gt;thumbRect(m_scrollbar.get());
&gt; 
&gt; Why switched to IntRect again?

Changed back.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:108
&gt;&gt; +    m_geometry-&gt;splitTrack(&amp;m_scrollbar, trackRect, backTrackRect, thumbRect, foreTrackRect);
&gt; 
&gt; no-op change? should this be in the diff?

No, this was from testing. Removed.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:113
&gt;&gt; +        OwnPtr&lt;CCTextureDrawQuad&gt; quad = CCTextureDrawQuad::create(sharedQuadState, IntRect(thumbRect.x * widthScale, thumbRect.y * heightScale, thumbRect.width * widthScale, thumbRect.height * heightScale), m_thumbResourceId, premultipledAlpha, uvRect, flipped);
&gt; 
&gt; Style-wise, how about we add some local variables here: thumbContentRect and foreTrackContentRect? These will be the original rects scale()d up by width and height scale. Then we don&apos;t have to add multiplications inline here.

Done.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:155
&gt;&gt; +    return WebKit::WebSize(m_owner-&gt;bounds().width(), m_owner-&gt;bounds().height());
&gt; 
&gt; Who does this change affect, can you justify this one? It seems unrelated to the other changes somehow, is this fixing a separate bug than rendering scale?

splitRect uses the trackRect which comes from WebScrollBar::size to compute the size of the scrollbar components. The size was coming from this class which was giving the pixel size and the resulting calculations were using a combination of pixel size and DIP size which resulted in the incorrect positioning I was originally seeing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712257</commentid>
    <comment_count>6</comment_count>
      <attachid>162285</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-05 10:51:05 -0700</bug_when>
    <thetext>Created attachment 162285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712780</commentid>
    <comment_count>7</comment_count>
      <attachid>162285</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-05 19:12:20 -0700</bug_when>
    <thetext>Comment on attachment 162285
Patch

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

&gt; Source/Platform/chromium/public/WebLayer.h:108
&gt; +    // Set to apply a scale factor used when painting and drawing this layer&apos;s content. Defaults to 1.0.
&gt; +    virtual void setContentsScale(float) = 0;
&gt; +    virtual float contentsScale() = 0;
&gt; +

No no no.  I think twiz&apos;s change in bug 95094 makes this unnecessary.

&gt; Source/WebCore/page/FrameView.cpp:708
&gt; +void FrameView::deviceOrPageScaleFactorChanged()
&gt; +{
&gt; +    frame()-&gt;page()-&gt;scrollingCoordinator()-&gt;frameViewHorizontalScrollbarLayerDidChange(
&gt; +        this, layerForHorizontalScrollbar());
&gt; +    frame()-&gt;page()-&gt;scrollingCoordinator()-&gt;frameViewVerticalScrollbarLayerDidChange(
&gt; +        this, layerForVerticalScrollbar());
&gt; +}

I think all this is unnecessary too.

&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:285
&gt; +    float widthScale = static_cast&lt;float&gt;(contentBounds().width()) / bounds().width();
&gt; +    float heightScale = static_cast&lt;float&gt;(contentBounds().height()) / bounds().height();
&gt; +
&gt; +    scrollbarOrigin.scale(widthScale, heightScale);

Can I suggest a helper function to convert an IntRect from layer space into content space?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:157
&gt; -    return WebKit::WebSize(m_owner-&gt;contentBounds().width(), m_owner-&gt;contentBounds().height());
&gt; +    return WebKit::WebSize(m_owner-&gt;bounds().width(), m_owner-&gt;bounds().height());

Yeah, this is definitely correct.  It only worked before because bounds() == contentBounds() for scrollbar layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714034</commentid>
    <comment_count>8</comment_count>
      <attachid>162656</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-06 19:48:16 -0700</bug_when>
    <thetext>Created attachment 162656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714037</commentid>
    <comment_count>9</comment_count>
      <attachid>162285</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-06 19:59:16 -0700</bug_when>
    <thetext>Comment on attachment 162285
Patch

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

Thanks for the reviews!

&gt;&gt; Source/Platform/chromium/public/WebLayer.h:108
&gt;&gt; +
&gt; 
&gt; No no no.  I think twiz&apos;s change in bug 95094 makes this unnecessary.

Right, I was just waiting on the change to land to remove it :-).

&gt;&gt; Source/WebCore/page/FrameView.cpp:708
&gt;&gt; +}
&gt; 
&gt; I think all this is unnecessary too.

Done, and other now unnecessary code.

&gt;&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:285
&gt;&gt; +    scrollbarOrigin.scale(widthScale, heightScale);
&gt; 
&gt; Can I suggest a helper function to convert an IntRect from layer space into content space?

Not quite sure exactly what you&apos;re proposing. Something on LayerChromium like IntRect LayerChromium::convertToContentSpace(const IntRect&amp;);?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714610</commentid>
    <comment_count>10</comment_count>
      <attachid>162285</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 09:39:23 -0700</bug_when>
    <thetext>Comment on attachment 162285
Patch

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

The rest of the new patch looks really good.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:285
&gt;&gt;&gt; +    scrollbarOrigin.scale(widthScale, heightScale);
&gt;&gt; 
&gt;&gt; Can I suggest a helper function to convert an IntRect from layer space into content space?
&gt; 
&gt; Not quite sure exactly what you&apos;re proposing. Something on LayerChromium like IntRect LayerChromium::convertToContentSpace(const IntRect&amp;);?

Yeah, exactly something like LayerChromium::layerRectToContentRect(IntRect).  Mostly just for readability so that you don&apos;t have to parse all the additional scale factors on every x, y, w, h value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714717</commentid>
    <comment_count>11</comment_count>
      <attachid>162656</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 10:42:37 -0700</bug_when>
    <thetext>Comment on attachment 162656
Patch

Attachment 162656 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13785526

New failing tests:
compositing/geometry/fixed-position-iframe-composited-page-scale-down.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714876</commentid>
    <comment_count>12</comment_count>
      <attachid>162849</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-07 12:59:06 -0700</bug_when>
    <thetext>Created attachment 162849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714882</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-07 13:01:41 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 162285 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162285&amp;action=review
&gt; 
&gt; The rest of the new patch looks really good.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:285
&gt; &gt;&gt;&gt; +    scrollbarOrigin.scale(widthScale, heightScale);
&gt; &gt;&gt; 
&gt; &gt;&gt; Can I suggest a helper function to convert an IntRect from layer space into content space?
&gt; &gt; 
&gt; &gt; Not quite sure exactly what you&apos;re proposing. Something on LayerChromium like IntRect LayerChromium::convertToContentSpace(const IntRect&amp;);?
&gt; 
&gt; Yeah, exactly something like LayerChromium::layerRectToContentRect(IntRect).  Mostly just for readability so that you don&apos;t have to parse all the additional scale factors on every x, y, w, h value.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714887</commentid>
    <comment_count>14</comment_count>
      <attachid>162849</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 13:05:06 -0700</bug_when>
    <thetext>Comment on attachment 162849
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:296
&gt; +    IntRect layerRectToContentRect(const IntRect&amp; layerRect);
&gt; +

How about on CCLayerImpl too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714952</commentid>
    <comment_count>15</comment_count>
      <attachid>162863</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-07 14:06:11 -0700</bug_when>
    <thetext>Created attachment 162863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714956</commentid>
    <comment_count>16</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-07 14:08:20 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 162849 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162849&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:296
&gt; &gt; +    IntRect layerRectToContentRect(const IntRect&amp; layerRect);
&gt; &gt; +
&gt; 
&gt; How about on CCLayerImpl too?

Done too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714959</commentid>
    <comment_count>17</comment_count>
      <attachid>162863</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 14:12:34 -0700</bug_when>
    <thetext>Comment on attachment 162863
Patch

I am a bit on the fence about this layerRectToContentRect thing.

Content space has a different origin than layer space does. It makes sense to scale a rect&apos;s size between these two spaces but not its position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715014</commentid>
    <comment_count>18</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 14:53:59 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 162863 [details])
&gt; I am a bit on the fence about this layerRectToContentRect thing.
&gt; 
&gt; Content space has a different origin than layer space does. It makes sense to scale a rect&apos;s size between these two spaces but not its position.

Sorry, I was out to lunch here completely. This is right as is. We do similar in TLC also:

void TiledLayerChromium::setNeedsDisplayRect(const FloatRect&amp; dirtyRect)
{
    float contentsWidthScale = static_cast&lt;float&gt;(contentBounds().width()) / bounds().width();
    float contentsHeightScale = static_cast&lt;float&gt;(contentBounds().height()) / bounds().height();
    FloatRect scaledDirtyRect(dirtyRect);
    scaledDirtyRect.scale(contentsWidthScale, contentsHeightScale);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715022</commentid>
    <comment_count>19</comment_count>
      <attachid>162863</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 14:58:48 -0700</bug_when>
    <thetext>Comment on attachment 162863
Patch

R=me.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715214</commentid>
    <comment_count>20</comment_count>
      <attachid>162863</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 18:50:34 -0700</bug_when>
    <thetext>Comment on attachment 162863
Patch

Attachment 162863 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13772968

New failing tests:
compositing/geometry/fixed-position-iframe-composited-page-scale-down.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717909</commentid>
    <comment_count>21</comment_count>
      <attachid>163517</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-11 21:50:03 -0700</bug_when>
    <thetext>Created attachment 163517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717911</commentid>
    <comment_count>22</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-11 21:56:08 -0700</bug_when>
    <thetext>The failing test compositing/geometry/fixed-position-iframe-composited-page-scale-down.html calls window.internals.settings.setPageScaleFactor(0.5, 0, 0). Trying to draw the scrollbar at a ~0.5 scale factor seems to cause some off by one issues however I&apos;m not sure why we draw the top-level scroll bar differently when the final pixel size in the layout test is the same as at 1x. The latest patch uses  rounded sizes and existing FloatRect operations which should be more correct but I think this will still fail the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717943</commentid>
    <comment_count>23</comment_count>
      <attachid>163517</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-11 23:11:06 -0700</bug_when>
    <thetext>Comment on attachment 163517
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:152
&gt; +    FloatRect contentRect(layerRect);
&gt; +    contentRect.scale(widthScale, heightScale);
&gt; +    return roundedIntRect(contentRect);

I feel like this should be an containingIntRect not rounded, so that it always includes the whole layerRect given to the method. I think there&apos;s very few cases we want to round, typically we take the containing/contained rect.

&gt; Source/WebCore/platform/graphics/chromium/ScrollbarLayerChromium.cpp:152
&gt; +    return IntSize(lroundf(bounds().width() * contentsScale()), lroundf(bounds().height() * contentsScale()));

This is the rounding exception, but it&apos;s fine here because it&apos;s defining the space, not moving between spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717964</commentid>
    <comment_count>24</comment_count>
      <attachid>163517</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 23:41:18 -0700</bug_when>
    <thetext>Comment on attachment 163517
Patch

Attachment 163517 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13824567

New failing tests:
compositing/geometry/fixed-position-iframe-composited-page-scale-down.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718254</commentid>
    <comment_count>25</comment_count>
      <attachid>163604</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-12 05:38:39 -0700</bug_when>
    <thetext>Created attachment 163604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718272</commentid>
    <comment_count>26</comment_count>
      <attachid>163517</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-12 05:52:37 -0700</bug_when>
    <thetext>Comment on attachment 163517
Patch

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

I found that the test was failing because the page scale was being applied to the scrollbar contentBounds, which I believe is incorrect. See the ScrollbarLayerChromium constructor in the latest patch where I call setBoundsContainPageScale. Not sure if the constructor is the correct place/way to call a parent class method so please correct me if I got it wrong. Thanks!

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:152
&gt;&gt; +    return roundedIntRect(contentRect);
&gt; 
&gt; I feel like this should be an containingIntRect not rounded, so that it always includes the whole layerRect given to the method. I think there&apos;s very few cases we want to round, typically we take the containing/contained rect.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718342</commentid>
    <comment_count>27</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-12 07:38:16 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 163517 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163517&amp;action=review
&gt; 
&gt; I found that the test was failing because the page scale was being applied to the scrollbar contentBounds, which I believe is incorrect. See the ScrollbarLayerChromium constructor in the latest patch where I call setBoundsContainPageScale. Not sure if the constructor is the correct place/way to call a parent class method so please correct me if I got it wrong. Thanks!

Will this affect only the root scrollbar or others too. What&apos;s expected here? I think non-root scrollbars will actually be scaled by page scale (though we should be using overlay scrollbars under pinch anyway).

Is it possible to set this flag on the root scrollbar layer from CCLTHImpl?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718432</commentid>
    <comment_count>28</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-12 09:08:38 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (From update of attachment 163517 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163517&amp;action=review
&gt; &gt; 
&gt; &gt; I found that the test was failing because the page scale was being applied to the scrollbar contentBounds, which I believe is incorrect. See the ScrollbarLayerChromium constructor in the latest patch where I call setBoundsContainPageScale. Not sure if the constructor is the correct place/way to call a parent class method so please correct me if I got it wrong. Thanks!
&gt; 
&gt; Will this affect only the root scrollbar or others too. What&apos;s expected here? I think non-root scrollbars will actually be scaled by page scale (though we should be using overlay scrollbars under pinch anyway).

Actually, I think we expect non-root scrollbars to be scaled down by page scale. I&apos;ve locally run a layout test of page scale 0.5 and the image result of the non-root scrollbar is unaffected by this line, in both cases it is scaled down to half size.

&gt; Is it possible to set this flag on the root scrollbar layer from CCLTHImpl?

I don&apos;t think so, perhaps there&apos;s a way between them that I haven&apos;t found yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719151</commentid>
    <comment_count>29</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 00:30:32 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; (From update of attachment 163517 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163517&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; I found that the test was failing because the page scale was being applied to the scrollbar contentBounds, which I believe is incorrect. See the ScrollbarLayerChromium constructor in the latest patch where I call setBoundsContainPageScale. Not sure if the constructor is the correct place/way to call a parent class method so please correct me if I got it wrong. Thanks!
&gt; &gt; 
&gt; &gt; Will this affect only the root scrollbar or others too. What&apos;s expected here? I think non-root scrollbars will actually be scaled by page scale (though we should be using overlay scrollbars under pinch anyway).
&gt; 
&gt; Actually, I think we expect non-root scrollbars to be scaled down by page scale. I&apos;ve locally run a layout test of page scale 0.5 and the image result of the non-root scrollbar is unaffected by this line, in both cases it is scaled down to half size.

To clarify, this line won&apos;t prevent the scrollbar from changing its size, it prevents it from having its contentsScale adjusted by the page scale. So if you pinched in and the scrollbar was 5x as big, you would still get a scrollbar rendered at 1x (or 2x in hi-dpi). If the flag was not set, then the scrollbar would be painted in a bitmap scaled 5x (whether we have resources for that or how it would appear is another issue that I&apos;m not sure about).

&gt; &gt; Is it possible to set this flag on the root scrollbar layer from CCLTHImpl?
&gt; 
&gt; I don&apos;t think so, perhaps there&apos;s a way between them that I haven&apos;t found yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719644</commentid>
    <comment_count>30</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-13 10:24:56 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt;
&gt; &gt; Is it possible to set this flag on the root scrollbar layer from CCLTHImpl?
&gt; 
&gt; I don&apos;t think so, perhaps there&apos;s a way between them that I haven&apos;t found yet.

NCCH has enough information to find the root scrollbar layers and set flags on them.  It used to do this in the past to reserve scrollbar textures (see: https://bugs.webkit.org/show_bug.cgi?id=77251).  There&apos;s no reason you couldn&apos;t do something like that and explicitly set the flag you need on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719712</commentid>
    <comment_count>31</comment_count>
      <attachid>163918</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-13 11:28:34 -0700</bug_when>
    <thetext>Created attachment 163918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719714</commentid>
    <comment_count>32</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-13 11:31:08 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt;
&gt; &gt; &gt; Is it possible to set this flag on the root scrollbar layer from CCLTHImpl?
&gt; &gt; 
&gt; &gt; I don&apos;t think so, perhaps there&apos;s a way between them that I haven&apos;t found yet.
&gt; 
&gt; NCCH has enough information to find the root scrollbar layers and set flags on them.  It used to do this in the past to reserve scrollbar textures (see: https://bugs.webkit.org/show_bug.cgi?id=77251).  There&apos;s no reason you couldn&apos;t do something like that and explicitly set the flag you need on them.

Dana, I misunderstood your comment before, thanks for the clarification.

Adrienne, thanks for the example! I&apos;ve updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720122</commentid>
    <comment_count>33</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 17:03:46 -0700</bug_when>
    <thetext>I spoke with twiz and enne today about an idea I had to avoid the need to set boundsContainPageScale on this layer at all: basically we only include pageScale in the contentsScale for layers in the subtree of the rootScrollLayer.

I think this patch shouldn&apos;t worry about that. When the function to set contentsScale on all layers is changed, then the boundsContainPageScale should be removed here though. And hopefully writing this here will remind us all at that time.

Cheers!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720935</commentid>
    <comment_count>34</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-14 10:41:45 -0700</bug_when>
    <thetext>Ping, are we happy with this patch now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721060</commentid>
    <comment_count>35</comment_count>
      <attachid>163918</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-14 13:01:11 -0700</bug_when>
    <thetext>Comment on attachment 163918
Patch

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

I like the changes.  This code has all moved.  Can you create a Chromium bug and rebase your Source/WebCore/platform/graphics/chromium/cc on top of /cc instead? I&apos;ll lgtm that.

&gt; Source/WebKit/chromium/src/NonCompositedContentHost.cpp:34
&gt; +#include &quot;LayerChromium.h&quot;

You can&apos;t include or use LayerChromium in NonCompositedContentHost.  You have to go through WebContentLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723006</commentid>
    <comment_count>36</comment_count>
      <attachid>164610</attachid>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-18 13:07:44 -0700</bug_when>
    <thetext>Created attachment 164610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723043</commentid>
    <comment_count>37</comment_count>
      <attachid>164610</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-18 14:11:48 -0700</bug_when>
    <thetext>Comment on attachment 164610
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        Calls setAppliesPageScale(true) on root scrollbar layers as these are not scaled.

can we test this? we have layout tests that cover high-DPI mode and we can use non-mock scrollbars on a given test by calling window.internals.setMockScrollbarsEnabled()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723053</commentid>
    <comment_count>38</comment_count>
      <attachid>164610</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-18 14:30:24 -0700</bug_when>
    <thetext>Comment on attachment 164610
Patch

R=me.  Thanks for moving this code here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723606</commentid>
    <comment_count>39</comment_count>
    <who name="Robert Flack">flackr</who>
    <bug_when>2012-09-19 09:20:27 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 164610 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164610&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:8
&gt; &gt; +        Calls setAppliesPageScale(true) on root scrollbar layers as these are not scaled.
&gt; 
&gt; can we test this? we have layout tests that cover high-DPI mode and we can use non-mock scrollbars on a given test by calling window.internals.setMockScrollbarsEnabled()

Yes, there is a difference, however it will still be low DPI until after we land http://codereview.chromium.org/10909255/ which we can&apos;t land without this fix for page scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723664</commentid>
    <comment_count>40</comment_count>
      <attachid>164610</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 10:57:45 -0700</bug_when>
    <thetext>Comment on attachment 164610
Patch

Clearing flags on attachment: 164610

Committed r129023: &lt;http://trac.webkit.org/changeset/129023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723665</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 10:57:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160824</attachid>
            <date>2012-08-27 15:24:17 -0700</date>
            <delta_ts>2012-09-05 07:45:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120827182409.patch</filename>
            <type>text/plain</type>
            <size>13451</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMzViMTUyNzI4NTcz
M2FjZTg3MmNjNThiMjBmMjk4MTlkYmJiMmIyLi5jNTFiNjU0MTVmNTU5NTYzN2VlMTNkYjQ3NTFk
YWRmOTJlM2RmZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0yNyAg
Um9iZXJ0IEZsYWNrICA8ZmxhY2tyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFN1cHBvcnQgaGlnaCBEUEkgc2Nyb2xsIGJhciBvbiB0b3AgbGV2ZWwgd2ViIGZyYW1lLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdmly
dHVhbCBjb250ZW50IHNjYWxlIGZ1bmN0aW9ucyB0byB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIHRv
IGFsbG93IHNldHRpbmcgc2NhbGUgZmFjdG9yIG9uIGdlbmVyYWwgbGF5ZXJzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6CisKIDIw
MTItMDgtMjMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIENvbnZlcnQgV2ViTGF5ZXJUcmVlVmlldyBpbnRlcmZhY2UgaW50byBwdXJl
IHZpcnR1YWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZDgwOTIzODM2YzI5OTNhMzBkMDFkYWNhMWRkMDI4MzQ3
MjUwZGY0Li5lOTViYTZmZDg4MWY5MzY0YThiM2QyZjMxMGNlNDczNWJlMGNhNmYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDgtMjcgIFJvYmVydCBGbGFjayAgPGZsYWNrckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IGhpZ2ggRFBJIHNjcm9s
bCBiYXIgb24gdG9wIGxldmVsIHdlYiBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBub3RpZmllcyB0aGUgc2Nyb2xsYmFyIHdoZW4gdGhl
IGRldmljZSBzY2FsZSBmYWN0b3IgY2hhbmdlcyBzbyB0aGF0IGl0IGNhbiBiZSByZWNyZWF0ZWQg
YXQgdGhlIGNvcnJlY3Qgc2NhbGUgZmFjdG9yLiBEcmF3aW5nIG9wZXJhdGlvbnMgb2YgdGhlIHNj
cm9sbCBiYXIgYXJlIHVwZGF0ZWQgdG8gZHJhdyBvbiBhIGxhcmdlciBjYW52YXMgZm9yIGRpZmZl
cmVudCBjb250ZW50IHNjYWxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhlIHBvc2l0
aW9uaW5nIG9mIHRoZSBzY3JvbGwgYmFyIGJ1dHRvbiBpcyBub3QgeWV0IGNvcnJlY3QuCisKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6Cisg
ICAgICAgIChGcmFtZVZpZXcpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2Nyb2xsYmFyTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nj
cm9sbGJhckxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bSk6CisKIDIwMTItMDgtMjQg
IEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBU1NFUlRJ
T04gRkFJTEVEOiAhYXR0YWNoZWQoKSBpbiBXZWJDb3JlOjpOb2RlOjphdHRhY2goKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwODA5NTEyZDFkYTQ5MDc5ZWUxZmNkNjkyZGE4OGNjNzdk
Y2YxYTQ5Li4zNTM0MDI2OTc2NDc5YTg3ZWVlMWZlZjEzMjAyODYwMGQ3ZTllZWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTI3ICBSb2JlcnQg
RmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3VwcG9y
dCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgY29udGVudCBz
Y2FsZSBzZXR0ZXJzIC8gZ2V0dGVycyBvbiBXZWJMYXllcnMgdG8gYWxsb3cgc2V0dGluZyBjb250
ZW50IHNjYWxlIG9uIHNjcm9sbCBiYXIgbGF5ZXIuCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRDb250ZW50c1NjYWxl
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6Y29u
dGVudHNTY2FsZSk6CisgICAgICAgICogc3JjL1dlYkxheWVySW1wbC5oOgorICAgICAgICAoV2Vi
TGF5ZXJJbXBsKToKKwogMjAxMi0wOC0yNCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBXZWJWaWV3SW1wbDo6ZW5hYmxlVG91
Y2hIaWdobGlnaHQoKSBzaG91bGQgYWx3YXlzIGNsZWFyIGFueSBleGlzdGluZyBoaWdobGlnaHQg
d2hlbiBpbnZva2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5o
CmluZGV4IDliZGViNGMwMWJiYzQzMDlkYTY4ODA3YjRhYzFiYThmOGM5ODZjYTEuLjhmYWRmNjQ1
YWFlY2FkN2YyMDk5NjgwYWFlMGU2YjU2ZGI2Y2E0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgKQEAgLTEwMiw2ICsxMDIsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSA9IDA7CiAgICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKIAor
ICAgIC8vIFNldCB0byBhcHBseSBhIHNjYWxlIGZhY3RvciB1c2VkIHdoZW4gcGFpbnRpbmcgYW5k
IGRyYXdpbmcgdGhpcyBsYXllcidzIGNvbnRlbnQuIERlZmF1bHRzIHRvIDEuMC4KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOworICAgIHZpcnR1YWwgZmxvYXQg
Y29udGVudHNTY2FsZSgpID0gMDsKKwogICAgIC8vIFNldHMgd2hldGhlciB0aGUgbGF5ZXIgZHJh
d3MgaXRzIGNvbnRlbnQgd2hlbiBjb21wb3NpdGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RHJh
d3NDb250ZW50KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAxODc0ZGRlZjJlMWQxNjQ0Njg1ZmEyMGYx
OTkwNDE3NTQyZWYzOTgyLi5lM2NhZWJhNzhhY2QzZGEyOWQzOGQyY2IxY2I2ZTY4YWQ4MDQzYmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTAwMiw2ICsxMDAyLDggQEAgdm9pZCBGcmFtZTo6
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICBSZW5kZXJWaWV3KiByb290ID0g
Y29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+Y29tcG9zaXRvcigpKQog
ICAgICAgICByb290LT5jb21wb3NpdG9yKCktPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpOworCisgICAgdmlldygpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKIH0K
ICNlbmRpZgogdm9pZCBGcmFtZTo6bm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhhbmRsZXJD
b3VudENoYW5nZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDRjNDk1
ZmQ1YTUzODFjOTFjNjQ0NDJkMjE3OTFjNGMyZDVmYWY2YjIuLmFmM2YyZWNkNWQwNDg0NWYwMWFm
YzVkZDI0ZTQ3M2NiZDJlMWQyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTY4
MSw2ICs2ODEsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9y
TGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXIKIH0KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKK3ZvaWQgRnJhbWVWaWV3OjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKQoreworICAgIGZyYW1lKCktPnBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKS0+ZnJhbWVWaWV3SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKAorICAgICAg
ICB0aGlzLCBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSk7CisgICAgZnJhbWUoKS0+cGFn
ZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5mcmFtZVZpZXdWZXJ0aWNhbFNjcm9sbGJhckxh
eWVyRGlkQ2hhbmdlKAorICAgICAgICB0aGlzLCBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkp
OworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclN0eWxl
Q2hhbmdlKCkKIHsKICAgICBSZW5kZXJWaWV3KiByb290ID0gcm9vdFJlbmRlcmVyKHRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggN2U3MzE1MGI4NzA1ZDY5ZWIzMzY3OWQ2Y2U4N2Ex
YTg2YzE1ZmZmMS4uNGYwN2NkOWRkMDBmZjkzYmU0YmRmMzM3M2Q1ZmM5NDBmOTNhOGQ3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0xMTksNiArMTE5LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdm9pZCBkZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJz
QWZ0ZXJTdHlsZUNoYW5nZSgpOwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRl
ckxheW91dCgpOwogICAgIGJvb2wgc3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzRnJhbWUoRnJh
bWUqIHJvb3RGcmFtZUZvclN5bmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNo
cm9taXVtLmNwcAppbmRleCBlMjU2YmRlMWE1YTRhZTg3YTY2MDgxOThjNzNkZmFmOGUxOTgxM2Y2
Li5kOThhMzQ5NDA4YmQ4YTdiMTlkM2JhMjU2YjYzNTM4OGY4MTgyODVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1
bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcApAQCAtMTU0LDYgKzE1NCw3IEBAIHN0
YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxiYXJMYXllcihT
Y3JvbGxiYXIqIHNjcm9sbGJhciwKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5PiBnZW9tZXRyeShXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRp
dmU6OmNyZWF0ZSh0aGVtZUNvbXBvc2l0ZSkpOwogCiAgICAgT3duUHRyPFdlYlNjcm9sbGJhckxh
eWVyPiBzY3JvbGxiYXJMYXllciA9IGFkb3B0UHRyKFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUo
c2Nyb2xsYmFyLCBwYWludGVyLCBnZW9tZXRyeS5yZWxlYXNlKCkpKTsKKyAgICBzY3JvbGxiYXJM
YXllci0+bGF5ZXIoKS0+c2V0Q29udGVudHNTY2FsZShzY3JvbGxMYXllci0+Y29udGVudHNTY2Fs
ZSgpKTsKICAgICBzY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOwog
CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01lZGlhKHNjcm9sbGJh
ckxheWVyLT5sYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNWRkMTA0NWFiMTk3MDFmMjIwYzE4NmMyYjM2Njc5MDliMjlmNzMyOS4uMjQwMTljNjlm
MDBkNWI4ODJlN2NjN2FhNWM3ZGUxZjEyMDdmZjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE0Miw2ICsxNDIsMTYgQEAgcHJpdmF0ZToKICAgICBXZWJL
aXQ6OldlYlNjcm9sbGJhcjo6U2Nyb2xsYmFyUGFydCBtX3RyYWNrUGFydDsKIH07CiAKK2Jvb2wg
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworSW50U2l6ZSBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjb250
ZW50Qm91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygp
LndpZHRoKCkgKiBjb250ZW50c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICog
Y29udGVudHNTY2FsZSgpKSk7Cit9CisKIGNsYXNzIFNjcm9sbGJhclRodW1iUGFpbnRlciA6IHB1
YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Ny
b2xsYmFyVGh1bWJQYWludGVyKTsKIHB1YmxpYzoKQEAgLTIyNCw4ICsyMzQsMTEgQEAgdm9pZCBT
Y3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHBh
aW50ZXIsIExheWVyVGV4dHUKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGFpbnQgYW5kIHVw
bG9hZCB0aGUgZW50aXJlIHBhcnQuCisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IGJvdW5kcygpLndp
ZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpOworICAg
IGZsb2F0IGhlaWdodFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKTsKKwogICAgIEludFJlY3QgcGFpbnRlZE9wYXF1
ZVJlY3Q7Ci0gICAgcGFpbnRlci0+cHJlcGFyZVRvVXBkYXRlKHJlY3QsIHJlY3Quc2l6ZSgpLCAx
LCAxLCBwYWludGVkT3BhcXVlUmVjdCwgc3RhdHMpOworICAgIHBhaW50ZXItPnByZXBhcmVUb1Vw
ZGF0ZShyZWN0LCByZWN0LnNpemUoKSwgMSAvIHdpZHRoU2NhbGUsIDEgLyBoZWlnaHRTY2FsZSwg
cGFpbnRlZE9wYXF1ZVJlY3QsIHN0YXRzKTsKICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChyZWN0
LCBzdGF0cyk7CiAKICAgICBJbnRTaXplIGRlc3RPZmZzZXQoMCwgMCk7CkBAIC0yNTEsOCArMjY0
LDEwIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMo
Y29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogICAgICAgICBtX2ZvcmVUcmFjay0+dGV4dHVy
ZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJpb3JpdHko
ZHJhd3NUb1Jvb3QpKTsKICAgICB9CiAgICAgaWYgKG1fdGh1bWIpIHsKLSAgICAgICAgV2ViS2l0
OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRodW1iUmVjdChtX3Njcm9sbGJhci5n
ZXQoKSk7Ci0gICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0RGltZW5zaW9ucyhJbnRTaXpl
KHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGV4dHVyZUZvcm1hdCk7Cisg
ICAgICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5k
cygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsKKyAgICAgICAgZmxvYXQgaGVpZ2h0U2Nh
bGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKSAvIGJvdW5k
cygpLmhlaWdodCgpOworICAgICAgICBJbnRSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRo
dW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSk7CisgICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+
c2V0RGltZW5zaW9ucyhJbnRTaXplKHRodW1iUmVjdC53aWR0aCgpICogd2lkdGhTY2FsZSwgdGh1
bWJSZWN0LmhlaWdodCgpICogaGVpZ2h0U2NhbGUpLCBtX3RleHR1cmVGb3JtYXQpOwogICAgICAg
ICBtX3RodW1iLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3Vs
YXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdCkpOwogICAgIH0KIH0KQEAgLTI2NSwxNCArMjgw
LDE5IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0
ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NPY2NsdXNpCiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJ
Zk5lZWRlZCgpOwogCiAgICAgSW50UG9pbnQgc2Nyb2xsYmFyT3JpZ2luKG1fc2Nyb2xsYmFyLT5s
b2NhdGlvbigpLngsIG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigpLnkpOworICAgIC8vIFBhaW50IGFu
ZCB1cGxvYWQgdGhlIGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsK
KyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRz
KCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisKKyAgICBzY3JvbGxiYXJPcmlnaW4u
c2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwogICAgIEludFJlY3QgY29udGVudFJlY3Qo
c2Nyb2xsYmFyT3JpZ2luLCBjb250ZW50Qm91bmRzKCkpOwogICAgIHVwZGF0ZVBhcnQobV9iYWNr
VHJhY2tVcGRhdGVyLmdldCgpLCBtX2JhY2tUcmFjay5nZXQoKSwgY29udGVudFJlY3QsIHF1ZXVl
LCBzdGF0cyk7CiAgICAgaWYgKG1fZm9yZVRyYWNrICYmIG1fZm9yZVRyYWNrVXBkYXRlcikKICAg
ICAgICAgdXBkYXRlUGFydChtX2ZvcmVUcmFja1VwZGF0ZXIuZ2V0KCksIG1fZm9yZVRyYWNrLmdl
dCgpLCBjb250ZW50UmVjdCwgcXVldWUsIHN0YXRzKTsKIAogICAgIC8vIENvbnNpZGVyIHRoZSB0
aHVtYiB0byBiZSBhdCB0aGUgb3JpZ2luIHdoZW4gcGFpbnRpbmcuCi0gICAgV2ViS2l0OjpXZWJS
ZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSk7
Ci0gICAgSW50UmVjdCBvcmlnaW5UaHVtYlJlY3QgPSBJbnRSZWN0KDAsIDAsIHRodW1iUmVjdC53
aWR0aCwgdGh1bWJSZWN0LmhlaWdodCk7CisgICAgSW50UmVjdCB0aHVtYlJlY3QgPSBtX2dlb21l
dHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIEludFJlY3Qgb3JpZ2luVGh1
bWJSZWN0ID0gSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGgoKSAqIHdpZHRoU2NhbGUsIHRo
dW1iUmVjdC5oZWlnaHQoKSAqIGhlaWdodFNjYWxlKTsKICAgICBpZiAoIW9yaWdpblRodW1iUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHVwZGF0ZVBhcnQobV90aHVtYlVwZGF0ZXIuZ2V0KCksIG1f
dGh1bWIuZ2V0KCksIG9yaWdpblRodW1iUmVjdCwgcXVldWUsIHN0YXRzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAppbmRleCAxMTVmYjY2MTBmYjExMGQzODQwMjI3ZTYx
NzdhMDcwYjE5MDgxMTQ5Li41NTU2Y2FiYjRjYzhlMDEyZGM0NWRkZmQ4MTcwYWI4ZTQ5YzFiMTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
Y3JvbGxiYXJMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCkBAIC00Niw2ICs0Niw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXJMYXllckNocm9taXVtPiBj
cmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4sIFdlYktpdDo6V2ViU2Nyb2xs
YmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9t
ZXRyeT4sIGludCBzY3JvbGxMYXllcklkKTsKIAogICAgIC8vIExheWVyQ2hyb21pdW0gaW50ZXJm
YWNlCisgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50Qm91bmRzKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlDYWxj
dWxhdG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRh
dGVRdWV1ZSYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhv
c3QqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwu
Y3BwCmluZGV4IGJmNjRhOGYyYTM0MWViOTA2NDIwMGExN2Q4ZjEyMzdmMTg5ODc1ZGQuLjdjNTNi
NWJjZDExMTg3NDk2MGU2ZTVhZDMwYjMxNTliNDYyNDIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApAQCAtMjQzLDYgKzI0MywxNiBAQCBTa01hdHJp
eDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gc2tNYXRyaXg0
NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT50cmFuc2Zvcm0oKSk7CiB9CiAKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIG1f
bGF5ZXItPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOworfQorCitmbG9hdCBXZWJMYXllckltcGw6
OmNvbnRlbnRzU2NhbGUoKQoreworICAgIHJldHVybiBtX2xheWVyLT5jb250ZW50c1NjYWxlKCk7
Cit9CisKIHZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRl
bnQpCiB7CiAgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaAppbmRleCAwYTYxODI2YTVkYzA3NmVi
ZTY3MjliYzA2MzRkNTQ0MDZjODc3MzllLi5iZWQ4MjcwOGY4NWI1Mzc1NjQ2MjA5ZmMyOTA0N2U5
MzFhZDg0ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaApA
QCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShj
b25zdCBTa01hdHJpeDQ0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
U2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNTY2FsZShmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBjb250
ZW50c1NjYWxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldERyYXdzQ29udGVudChi
b29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162243</attachid>
            <date>2012-09-05 07:45:55 -0700</date>
            <delta_ts>2012-09-05 10:51:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120905104537.patch</filename>
            <type>text/plain</type>
            <size>17045</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwNDlhNDAwNjk3OWZi
MjIyZTU2NzY3N2E4ZmE0MjQ3ZTJjZjNkNzg4Li41N2NkZWIwODljMGU5NzcyMTM4MzI0NjA3NDNm
MzkzNDcwYmJiM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAg
Um9iZXJ0IEZsYWNrICA8ZmxhY2tyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFN1cHBvcnQgaGlnaCBEUEkgc2Nyb2xsIGJhciBvbiB0b3AgbGV2ZWwgd2ViIGZyYW1lLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdmly
dHVhbCBjb250ZW50IHNjYWxlIGZ1bmN0aW9ucyB0byB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIHRv
IGFsbG93IHNldHRpbmcgc2NhbGUgZmFjdG9yIG9uIGdlbmVyYWwgbGF5ZXJzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6CisKIDIw
MTItMDktMDQgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gQXR0ZW1wdCB0byBmaXggYnVpbGQgZmFpbHVyZSBvbiBXaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA2ZmNiYmJhZGRkMTg0YmExYTE2MmJlZWZkMjRjMWJhY2VlMDQxOWJiLi41MTA5NDEy
NzY1MzgxMGJmOTQ0ZjY3MjZiNGZjNDA3ODQ2MjBjMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMTItMDktMDUgIFJvYmVydCBGbGFjayAgPGZsYWNrckBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IGhpZ2ggRFBJIHNjcm9sbCBiYXIgb24gdG9wIGxl
dmVsIHdlYiBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBub3RpZmllcyB0aGUgc2Nyb2xsYmFyIHdoZW4gdGhlIGRldmljZSBzY2FsZSBm
YWN0b3IgY2hhbmdlcyBzbyB0aGF0IGl0IGNhbiBiZSByZWNyZWF0ZWQgYXQgdGhlIGNvcnJlY3Qg
c2NhbGUgZmFjdG9yLiBEcmF3aW5nIG9wZXJhdGlvbnMgb2YgdGhlIHNjcm9sbCBiYXIgYXJlIHVw
ZGF0ZWQgdG8gZHJhdyBvbiBhIGxhcmdlciBjYW52YXMgZm9yIGRpZmZlcmVudCBjb250ZW50IHNj
YWxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBz
Y3JvbGxiYXIgZG9lcyBub3QgY2hhbmdlLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcm9sbGJhckxheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVudHNT
Y2FsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxh
eWVyQ2hyb21pdW06OmNvbnRlbnRCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFNjcm9sbGJh
ckxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxh
eWVySW1wbDo6Q0NTY3JvbGxiYXI6OnNpemUpOgorCiAyMDEyLTA5LTA1ICBUb3IgQXJuZSBWZXN0
YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJ1aWxkIGZp
eCBvbiBPUyBYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDUzNTFhOTg2ZGU4NGE3ZGY4
ZGE0NWY3OTk0NjJjN2U0OTM5ZmY2MzQuLmMyNzQ1ZGViNDM4NzE2ZjQxZmZlY2I5ZjkwNjkxYTA1
MmY2MTBjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDktMDUgIFJvYmVydCBGbGFjayAgPGZsYWNrckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBTdXBwb3J0IGhpZ2ggRFBJIHNjcm9sbCBiYXIgb24gdG9wIGxldmVsIHdlYiBm
cmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50cyBjb250ZW50IHNjYWxlIHNldHRlcnMgLyBnZXR0ZXJzIG9uIFdlYkxheWVycyB0byBh
bGxvdyBzZXR0aW5nIGNvbnRlbnQgc2NhbGUgb24gc2Nyb2xsIGJhciBsYXllci4KKworICAgICAg
ICAqIHNyYy9XZWJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpjb250ZW50c1NjYWxlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChXZWJMYXllckltcGwpOgorCiAyMDEyLTA5LTA1ICBQZXRlciBCZXZlcmxv
byAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERF
UFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggOWJk
ZWI0YzAxYmJjNDMwOWRhNjg4MDdiNGFjMWJhOGY4Yzk4NmNhMS4uOGZhZGY2NDVhYWVjYWQ3ZjIw
OTk2ODBhYWUwZTZiNTZkYjZjYTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaApAQCAtMTAyLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAg
ICB2aXJ0dWFsIFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCisgICAgLy8gU2V0
IHRvIGFwcGx5IGEgc2NhbGUgZmFjdG9yIHVzZWQgd2hlbiBwYWludGluZyBhbmQgZHJhd2luZyB0
aGlzIGxheWVyJ3MgY29udGVudC4gRGVmYXVsdHMgdG8gMS4wLgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1Nj
YWxlKCkgPSAwOworCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBsYXllciBkcmF3cyBpdHMgY29u
dGVudCB3aGVuIGNvbXBvc2l0aW5nLgogICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IGIzNjQ4ZjUyNDcwMTlkYzI5ZDNkZjU1MTFkOTI4NmJiODhh
MTExYWUuLmVmZTUzNzg3NDI4Nzg3ZGY3OGZmZmI0OWMyMTc2MjU2NzA4MTlmMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0xMDAxLDYgKzEwMDEsOCBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKQogICAgIFJlbmRlclZpZXcqIHJvb3QgPSBjb250ZW50UmVu
ZGVyZXIoKTsKICAgICBpZiAocm9vdCAmJiByb290LT5jb21wb3NpdG9yKCkpCiAgICAgICAgIHJv
b3QtPmNvbXBvc2l0b3IoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisKKyAg
ICB2aWV3KCktPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogfQogI2VuZGlmCiB2
b2lkIEZyYW1lOjpub3RpZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTIwYzI3YzdhYzM1NzA3
MmQ5NGNhMWMwM2I1MTc2YTQwNGFkNTc2YS4uN2QyNGRlMGMwMTJlNTAxNDg3ODEwZGQ0ODNlZTU2
ZjY5NmQ3ZmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNjk5LDYgKzY5OSwx
NCBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Ny
b2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQordm9pZCBGcmFtZVZpZXc6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpCit7CisgICAgZnJhbWUoKS0+cGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5mcmFt
ZVZpZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoCisgICAgICAgIHRoaXMsIGxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICBmcmFtZSgpLT5wYWdlKCktPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCktPmZyYW1lVmlld1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoCisgICAgICAgIHRoaXMsIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSk7Cit9CisKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU3R5bGVDaGFuZ2UoKQog
ewogICAgIFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVyZXIodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCBkY2MyZGViNmM1NTI1YzkyMjA0NWZkZmQwZWFhNGJmYzNhZTJiYjJi
Li45MGE4NjcwMWMzNzE5NTljNDFmMWI5OWZkZTY0OGFhMTJhYmU1YjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTExOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclN0eWxl
Q2hhbmdlKCk7CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyTGF5b3V0KCk7
CiAgICAgYm9vbCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShGcmFtZSogcm9vdEZy
YW1lRm9yU3luYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
aHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3Bw
CmluZGV4IGJjNzlhYTg3MTJkZTNkYTAxNzNiNjllYzFiMDk1ZmFkN2M3YTA0MGMuLjk0ODUxNmVh
NmQ1ZmJkNzcwZWNmMWY0MGVjZDg1NWI1OTk4YWVmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0xNjIsNiArMTYyLDcgQEAgc3RhdGljIFBhc3NP
d25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGNyZWF0ZVNjcm9sbGJhckxheWVyKFNjcm9sbGJhciog
c2Nyb2xsYmFyLAogICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+
IGdlb21ldHJ5KFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6Y3JlYXRl
KHRoZW1lQ29tcG9zaXRlKSk7CiAKICAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IHNjcm9s
bGJhckxheWVyID0gYWRvcHRQdHIoV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShuZXcgV2ViS2l0
OjpXZWJTY3JvbGxiYXJJbXBsKHNjcm9sbGJhciksIHBhaW50ZXIsIGdlb21ldHJ5LmxlYWtQdHIo
KSkpOworICAgIHNjcm9sbGJhckxheWVyLT5sYXllcigpLT5zZXRDb250ZW50c1NjYWxlKHNjcm9s
bExheWVyLT5jb250ZW50c1NjYWxlKCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5zZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllcik7CiAKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlZ2lzdGVy
Q29udGVudHNMYXllcihzY3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9s
bGJhckxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVmZjE0ZGRmZGJjOTc4OTc2NDA2OGIwNWJjZDYx
MmMyMTFlNWFjYTEuLmNmODEwOGQ3NTM0ZjgxN2Q3NGY1OTc4N2UyOTQ0ZTM2OTA2ODg1ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9s
bGJhckxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBAIC0xNDIsNiArMTQyLDE2
IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXI6OlNjcm9sbGJhclBhcnQgbV90
cmFja1BhcnQ7CiB9OwogCitib29sIFNjcm9sbGJhckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVu
dHNTY2FsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ludFNpemUgU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIElu
dFNpemUobHJvdW5kZihib3VuZHMoKS53aWR0aCgpICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5k
Zihib3VuZHMoKS5oZWlnaHQoKSAqIGNvbnRlbnRzU2NhbGUoKSkpOworfQorCiBjbGFzcyBTY3Jv
bGxiYXJUaHVtYlBhaW50ZXIgOiBwdWJsaWMgTGF5ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGJhclRodW1iUGFpbnRlcik7CiBwdWJsaWM6CkBAIC0y
MjQsOCArMjM0LDEwIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydChM
YXllclRleHR1cmVVcGRhdGVyKiBwYWludGVyLCBMYXllclRleHR1CiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFBhaW50IGFuZCB1cGxvYWQgdGhlIGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CiAgICAg
SW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAgICBwYWludGVyLT5wcmVwYXJlVG9VcGRhdGUo
cmVjdCwgcmVjdC5zaXplKCksIDEsIDEsIHBhaW50ZWRPcGFxdWVSZWN0LCBzdGF0cyk7CisgICAg
cGFpbnRlci0+cHJlcGFyZVRvVXBkYXRlKHJlY3QsIHJlY3Quc2l6ZSgpLCB3aWR0aFNjYWxlLCBo
ZWlnaHRTY2FsZSwgcGFpbnRlZE9wYXF1ZVJlY3QsIHN0YXRzKTsKICAgICB0ZXh0dXJlLT5wcmVw
YXJlUmVjdChyZWN0LCBzdGF0cyk7CiAKICAgICBJbnRTaXplIGRlc3RPZmZzZXQoMCwgMCk7CkBA
IC0yNTEsOCArMjYzLDEwIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVy
ZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogICAgICAgICBtX2ZvcmVU
cmFjay0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6
OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiAgICAgaWYgKG1fdGh1bWIpIHsKLSAg
ICAgICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRodW1iUmVjdCht
X3Njcm9sbGJhci5nZXQoKSk7Ci0gICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0RGltZW5z
aW9ucyhJbnRTaXplKHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGV4dHVy
ZUZvcm1hdCk7CisgICAgICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsKKyAgICAgICAgZmxv
YXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdo
dCgpKSAvIGJvdW5kcygpLmhlaWdodCgpOworICAgICAgICBJbnRSZWN0IHRodW1iUmVjdCA9IG1f
Z2VvbWV0cnktPnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSk7CisgICAgICAgIG1fdGh1bWIt
PnRleHR1cmUoKS0+c2V0RGltZW5zaW9ucyhJbnRTaXplKHRodW1iUmVjdC53aWR0aCgpICogd2lk
dGhTY2FsZSwgdGh1bWJSZWN0LmhlaWdodCgpICogaGVpZ2h0U2NhbGUpLCBtX3RleHR1cmVGb3Jt
YXQpOwogICAgICAgICBtX3RodW1iLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShDQ1By
aW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdCkpOwogICAgIH0KIH0KQEAg
LTI2NSwxNCArMjc5LDE5IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKEND
VGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NPY2NsdXNpCiAgICAgY3JlYXRlVGV4
dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAgICAgSW50UG9pbnQgc2Nyb2xsYmFyT3JpZ2luKG1f
c2Nyb2xsYmFyLT5sb2NhdGlvbigpLngsIG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigpLnkpOworICAg
IC8vIFBhaW50IGFuZCB1cGxvYWQgdGhlIGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdpZHRoU2Nh
bGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRz
KCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihj
b250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisKKyAgICBzY3Jv
bGxiYXJPcmlnaW4uc2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwogICAgIEludFJlY3Qg
Y29udGVudFJlY3Qoc2Nyb2xsYmFyT3JpZ2luLCBjb250ZW50Qm91bmRzKCkpOwogICAgIHVwZGF0
ZVBhcnQobV9iYWNrVHJhY2tVcGRhdGVyLmdldCgpLCBtX2JhY2tUcmFjay5nZXQoKSwgY29udGVu
dFJlY3QsIHF1ZXVlLCBzdGF0cyk7CiAgICAgaWYgKG1fZm9yZVRyYWNrICYmIG1fZm9yZVRyYWNr
VXBkYXRlcikKICAgICAgICAgdXBkYXRlUGFydChtX2ZvcmVUcmFja1VwZGF0ZXIuZ2V0KCksIG1f
Zm9yZVRyYWNrLmdldCgpLCBjb250ZW50UmVjdCwgcXVldWUsIHN0YXRzKTsKIAogICAgIC8vIENv
bnNpZGVyIHRoZSB0aHVtYiB0byBiZSBhdCB0aGUgb3JpZ2luIHdoZW4gcGFpbnRpbmcuCi0gICAg
V2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRodW1iUmVjdChtX3Njcm9s
bGJhci5nZXQoKSk7Ci0gICAgSW50UmVjdCBvcmlnaW5UaHVtYlJlY3QgPSBJbnRSZWN0KDAsIDAs
IHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCk7CisgICAgSW50UmVjdCB0aHVtYlJl
Y3QgPSBtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIEludFJl
Y3Qgb3JpZ2luVGh1bWJSZWN0ID0gSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGgoKSAqIHdp
ZHRoU2NhbGUsIHRodW1iUmVjdC5oZWlnaHQoKSAqIGhlaWdodFNjYWxlKTsKICAgICBpZiAoIW9y
aWdpblRodW1iUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHVwZGF0ZVBhcnQobV90aHVtYlVwZGF0
ZXIuZ2V0KCksIG1fdGh1bWIuZ2V0KCksIG9yaWdpblRodW1iUmVjdCwgcXVldWUsIHN0YXRzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAppbmRleCAxMTVmYjY2MTBmYjEx
MGQzODQwMjI3ZTYxNzdhMDcwYjE5MDgxMTQ5Li41NTU2Y2FiYjRjYzhlMDEyZGM0NWRkZmQ4MTcw
YWI4ZTQ5YzFiMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCkBAIC00
Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXJMYXll
ckNocm9taXVtPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4sIFdlYktp
dDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xs
YmFyVGhlbWVHZW9tZXRyeT4sIGludCBzY3JvbGxMYXllcklkKTsKIAogICAgIC8vIExheWVyQ2hy
b21pdW0gaW50ZXJmYWNlCisgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50Qm91bmRzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IEND
UHJpb3JpdHlDYWxjdWxhdG9yJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShD
Q1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciosIENDUmVuZGVy
aW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChD
Q0xheWVyVHJlZUhvc3QqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcAppbmRleCA4MDRkNmZmZDhhYzhkMTY3ODEyYTY1M2FkOTNhMTdjYzdlZDZiZWRl
Li5hOGE2MWIyY2M3M2Y2N2EwZDkzZTQyY2ExOGEwYzgxZTI0ZjY3NTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC05NSw2ICs5NSw4IEBAIHZvaWQgQ0NT
Y3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0Fw
cGVuZFF1YWRzRGF0YSYKIHsKICAgICBib29sIHByZW11bHRpcGxlZEFscGhhID0gZmFsc2U7CiAg
ICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19j
YXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgoKSkgLyBib3VuZHMoKS53aWR0aCgpOwor
ICAgIGZsb2F0IGhlaWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMo
KS5oZWlnaHQoKSkgLyBib3VuZHMoKS5oZWlnaHQoKTsKICAgICBGbG9hdFJlY3QgdXZSZWN0KDAs
IDAsIDEsIDEpOwogICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91
bmRzKCkpOwogCkBAIC0xMDIsMTIgKzEwNCwxMyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmCiAg
ICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUsIGFwcGVu
ZFF1YWRzRGF0YSk7CiAKICAgICBXZWJSZWN0IHRodW1iUmVjdCwgYmFja1RyYWNrUmVjdCwgZm9y
ZVRyYWNrUmVjdDsKLSAgICBtX2dlb21ldHJ5LT5zcGxpdFRyYWNrKCZtX3Njcm9sbGJhciwgbV9n
ZW9tZXRyeS0+dHJhY2tSZWN0KCZtX3Njcm9sbGJhciksIGJhY2tUcmFja1JlY3QsIHRodW1iUmVj
dCwgZm9yZVRyYWNrUmVjdCk7CisgICAgV2ViUmVjdCB0cmFja1JlY3QgPSBtX2dlb21ldHJ5LT50
cmFja1JlY3QoJm1fc2Nyb2xsYmFyKTsKKyAgICBtX2dlb21ldHJ5LT5zcGxpdFRyYWNrKCZtX3Nj
cm9sbGJhciwgdHJhY2tSZWN0LCBiYWNrVHJhY2tSZWN0LCB0aHVtYlJlY3QsIGZvcmVUcmFja1Jl
Y3QpOwogICAgIGlmICghbV9nZW9tZXRyeS0+aGFzVGh1bWIoJm1fc2Nyb2xsYmFyKSkKICAgICAg
ICAgdGh1bWJSZWN0ID0gV2ViUmVjdCgpOwogCiAgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYm
ICF0aHVtYlJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVh
ZD4gcXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRS
ZWN0KHRodW1iUmVjdC54LCB0aHVtYlJlY3QueSwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3Qu
aGVpZ2h0KSwgbV90aHVtYlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZs
aXBwZWQpOworICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1
cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCh0aHVtYlJlY3QueCAq
IHdpZHRoU2NhbGUsIHRodW1iUmVjdC55ICogaGVpZ2h0U2NhbGUsIHRodW1iUmVjdC53aWR0aCAq
IHdpZHRoU2NhbGUsIHRodW1iUmVjdC5oZWlnaHQgKiBoZWlnaHRTY2FsZSksIG1fdGh1bWJSZXNv
dXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVh
ZC0+c2V0TmVlZHNCbGVuZGluZygpOwogICAgICAgICBxdWFkU2luay5hcHBlbmQocXVhZC5yZWxl
YXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgfQpAQCAtMTE3LDcgKzEyMCw3IEBAIHZvaWQg
Q0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBD
Q0FwcGVuZFF1YWRzRGF0YSYKIAogICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGluIHR3
byBwYXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJhY2sg
cGFydC4KICAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KGZvcmVUcmFja1JlY3QueCwgZm9yZVRyYWNrUmVj
dC55LCBmb3JlVHJhY2tSZWN0LndpZHRoLCBmb3JlVHJhY2tSZWN0LmhlaWdodCksIG1fZm9yZVRy
YWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3Qs
IGJvdW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICAgICAgcXVhZFNp
bmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRS
ZWN0KGZvcmVUcmFja1JlY3QueCAqIHdpZHRoU2NhbGUsIGZvcmVUcmFja1JlY3QueSAqIGhlaWdo
dFNjYWxlLCBmb3JlVHJhY2tSZWN0LndpZHRoICogd2lkdGhTY2FsZSwgZm9yZVRyYWNrUmVjdC5o
ZWlnaHQgKiBoZWlnaHRTY2FsZSksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVk
QWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBw
ZW5kUXVhZHNEYXRhKTsKIAogICAgIC8vIE9yZGVyIG1hdHRlcnMgaGVyZTogc2luY2UgdGhlIGJh
Y2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0aGUgZW50aXJlIGNvbnRlbnRzIHJl
Y3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBhbmQKICAgICAvLyBmb3JlIHRy
YWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNvbnRhaW5zIChhbmQgZGlzcGxheXMp
IHRoZSBidXR0b25zLgpAQCAtMTQ5LDcgKzE1Miw3IEBAIFdlYktpdDo6V2ViUG9pbnQgQ0NTY3Jv
bGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyOjpsb2NhdGlvbigpIGNvbnN0CiAKIFdlYktpdDo6
V2ViU2l6ZSBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxiYXI6OnNpemUoKSBjb25zdAog
ewotICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUobV9vd25lci0+Y29udGVudEJvdW5kcygpLndp
ZHRoKCksIG1fb3duZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIFdl
YktpdDo6V2ViU2l6ZShtX293bmVyLT5ib3VuZHMoKS53aWR0aCgpLCBtX293bmVyLT5ib3VuZHMo
KS5oZWlnaHQoKSk7CiB9CiAKIGJvb2wgQ0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFy
OjplbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllcklt
cGwuY3BwCmluZGV4IDNhMzE2ZGZjZTAyMGQxNWQ3MGRkYmRmZDlkOGRiM2U5MzQ3NTA0OGEuLmNi
ZTkwZWQ3YzBkY2E1ZWVkMGRiOWVkNzA1ZDY0NTk4NWIzZjk3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApAQCAtMjQ5LDYgKzI0OSwxNiBAQCBTa01h
dHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QKICAgICByZXR1cm4gc2tNYXRy
aXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT50cmFuc2Zvcm0oKSk7CiB9CiAK
K3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQoreworICAg
IG1fbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOworfQorCitmbG9hdCBXZWJMYXllcklt
cGw6OmNvbnRlbnRzU2NhbGUoKQoreworICAgIHJldHVybiBtX2xheWVyLT5jb250ZW50c1NjYWxl
KCk7Cit9CisKIHZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0Nv
bnRlbnQpCiB7CiAgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaAppbmRleCBlMzRhZGRjZGIyZjY3
ZmFiOGVlNmZjMjVkMmI4NDQ4OTk0M2ZmN2E5Li45ZjYzOWZkYjM0N2NmMzUzNTU1MTc2ZDBhYWM4
MTVlOTEwYWYwZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwu
aApAQCAtNzMsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBTa01hdHJpeDQ0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYW5z
Zm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBj
b250ZW50c1NjYWxlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldERyYXdzQ29udGVu
dChib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpIE9WRVJSSURF
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162285</attachid>
            <date>2012-09-05 10:51:05 -0700</date>
            <delta_ts>2012-09-07 09:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120905135046.patch</filename>
            <type>text/plain</type>
            <size>16593</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwNDlhNDAwNjk3OWZi
MjIyZTU2NzY3N2E4ZmE0MjQ3ZTJjZjNkNzg4Li41N2NkZWIwODljMGU5NzcyMTM4MzI0NjA3NDNm
MzkzNDcwYmJiM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAg
Um9iZXJ0IEZsYWNrICA8ZmxhY2tyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFN1cHBvcnQgaGlnaCBEUEkgc2Nyb2xsIGJhciBvbiB0b3AgbGV2ZWwgd2ViIGZyYW1lLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxMzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgdmly
dHVhbCBjb250ZW50IHNjYWxlIGZ1bmN0aW9ucyB0byB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIHRv
IGFsbG93IHNldHRpbmcgc2NhbGUgZmFjdG9yIG9uIGdlbmVyYWwgbGF5ZXJzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmg6CisgICAgICAgIChXZWJMYXllcik6CisKIDIw
MTItMDktMDQgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gQXR0ZW1wdCB0byBmaXggYnVpbGQgZmFpbHVyZSBvbiBXaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA2ZmNiYmJhZGRkMTg0YmExYTE2MmJlZWZkMjRjMWJhY2VlMDQxOWJiLi41MTA5NDEy
NzY1MzgxMGJmOTQ0ZjY3MjZiNGZjNDA3ODQ2MjBjMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMTItMDktMDUgIFJvYmVydCBGbGFjayAgPGZsYWNrckBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IGhpZ2ggRFBJIHNjcm9sbCBiYXIgb24gdG9wIGxl
dmVsIHdlYiBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBub3RpZmllcyB0aGUgc2Nyb2xsYmFyIHdoZW4gdGhlIGRldmljZSBzY2FsZSBm
YWN0b3IgY2hhbmdlcyBzbyB0aGF0IGl0IGNhbiBiZSByZWNyZWF0ZWQgYXQgdGhlIGNvcnJlY3Qg
c2NhbGUgZmFjdG9yLiBEcmF3aW5nIG9wZXJhdGlvbnMgb2YgdGhlIHNjcm9sbCBiYXIgYXJlIHVw
ZGF0ZWQgdG8gZHJhdyBvbiBhIGxhcmdlciBjYW52YXMgZm9yIGRpZmZlcmVudCBjb250ZW50IHNj
YWxlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBz
Y3JvbGxiYXIgZG9lcyBub3QgY2hhbmdlLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNjcm9sbGJhckxheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVudHNT
Y2FsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxh
eWVyQ2hyb21pdW06OmNvbnRlbnRCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFNjcm9sbGJh
ckxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxh
eWVySW1wbDo6Q0NTY3JvbGxiYXI6OnNpemUpOgorCiAyMDEyLTA5LTA1ICBUb3IgQXJuZSBWZXN0
YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEJ1aWxkIGZp
eCBvbiBPUyBYCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDUzNTFhOTg2ZGU4NGE3ZGY4
ZGE0NWY3OTk0NjJjN2U0OTM5ZmY2MzQuLmMyNzQ1ZGViNDM4NzE2ZjQxZmZlY2I5ZjkwNjkxYTA1
MmY2MTBjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDktMDUgIFJvYmVydCBGbGFjayAgPGZsYWNrckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBTdXBwb3J0IGhpZ2ggRFBJIHNjcm9sbCBiYXIgb24gdG9wIGxldmVsIHdlYiBm
cmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50cyBjb250ZW50IHNjYWxlIHNldHRlcnMgLyBnZXR0ZXJzIG9uIFdlYkxheWVycyB0byBh
bGxvdyBzZXR0aW5nIGNvbnRlbnQgc2NhbGUgb24gc2Nyb2xsIGJhciBsYXllci4KKworICAgICAg
ICAqIHNyYy9XZWJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpjb250ZW50c1NjYWxlKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChXZWJMYXllckltcGwpOgorCiAyMDEyLTA5LTA1ICBQZXRlciBCZXZlcmxv
byAgPHBldGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERF
UFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggOWJk
ZWI0YzAxYmJjNDMwOWRhNjg4MDdiNGFjMWJhOGY4Yzk4NmNhMS4uOGZhZGY2NDVhYWVjYWQ3ZjIw
OTk2ODBhYWUwZTZiNTZkYjZjYTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaApAQCAtMTAyLDYgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAg
ICB2aXJ0dWFsIFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCisgICAgLy8gU2V0
IHRvIGFwcGx5IGEgc2NhbGUgZmFjdG9yIHVzZWQgd2hlbiBwYWludGluZyBhbmQgZHJhd2luZyB0
aGlzIGxheWVyJ3MgY29udGVudC4gRGVmYXVsdHMgdG8gMS4wLgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1NjYWxlKGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1Nj
YWxlKCkgPSAwOworCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBsYXllciBkcmF3cyBpdHMgY29u
dGVudCB3aGVuIGNvbXBvc2l0aW5nLgogICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IGIzNjQ4ZjUyNDcwMTlkYzI5ZDNkZjU1MTFkOTI4NmJiODhh
MTExYWUuLmVmZTUzNzg3NDI4Nzg3ZGY3OGZmZmI0OWMyMTc2MjU2NzA4MTlmMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0xMDAxLDYgKzEwMDEsOCBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKQogICAgIFJlbmRlclZpZXcqIHJvb3QgPSBjb250ZW50UmVu
ZGVyZXIoKTsKICAgICBpZiAocm9vdCAmJiByb290LT5jb21wb3NpdG9yKCkpCiAgICAgICAgIHJv
b3QtPmNvbXBvc2l0b3IoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisKKyAg
ICB2aWV3KCktPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogfQogI2VuZGlmCiB2
b2lkIEZyYW1lOjpub3RpZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTIwYzI3YzdhYzM1NzA3
MmQ5NGNhMWMwM2I1MTc2YTQwNGFkNTc2YS4uN2QyNGRlMGMwMTJlNTAxNDg3ODEwZGQ0ODNlZTU2
ZjY5NmQ3ZmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNjk5LDYgKzY5OSwx
NCBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Ny
b2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQordm9pZCBGcmFtZVZpZXc6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpCit7CisgICAgZnJhbWUoKS0+cGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5mcmFt
ZVZpZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoCisgICAgICAgIHRoaXMsIGxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICBmcmFtZSgpLT5wYWdlKCktPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCktPmZyYW1lVmlld1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoCisgICAgICAgIHRoaXMsIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSk7Cit9CisKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyU3R5bGVDaGFuZ2UoKQog
ewogICAgIFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVyZXIodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCBkY2MyZGViNmM1NTI1YzkyMjA0NWZkZmQwZWFhNGJmYzNhZTJiYjJi
Li45MGE4NjcwMWMzNzE5NTljNDFmMWI5OWZkZTY0OGFhMTJhYmU1YjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTExOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpOwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclN0eWxl
Q2hhbmdlKCk7CiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVyTGF5b3V0KCk7
CiAgICAgYm9vbCBzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZShGcmFtZSogcm9vdEZy
YW1lRm9yU3luYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
aHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3Bw
CmluZGV4IGJjNzlhYTg3MTJkZTNkYTAxNzNiNjllYzFiMDk1ZmFkN2M3YTA0MGMuLjk0ODUxNmVh
NmQ1ZmJkNzcwZWNmMWY0MGVjZDg1NWI1OTk4YWVmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0xNjIsNiArMTYyLDcgQEAgc3RhdGljIFBhc3NP
d25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGNyZWF0ZVNjcm9sbGJhckxheWVyKFNjcm9sbGJhciog
c2Nyb2xsYmFyLAogICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+
IGdlb21ldHJ5KFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6Y3JlYXRl
KHRoZW1lQ29tcG9zaXRlKSk7CiAKICAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IHNjcm9s
bGJhckxheWVyID0gYWRvcHRQdHIoV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShuZXcgV2ViS2l0
OjpXZWJTY3JvbGxiYXJJbXBsKHNjcm9sbGJhciksIHBhaW50ZXIsIGdlb21ldHJ5LmxlYWtQdHIo
KSkpOworICAgIHNjcm9sbGJhckxheWVyLT5sYXllcigpLT5zZXRDb250ZW50c1NjYWxlKHNjcm9s
bExheWVyLT5jb250ZW50c1NjYWxlKCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5zZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllcik7CiAKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlZ2lzdGVy
Q29udGVudHNMYXllcihzY3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9s
bGJhckxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVmZjE0ZGRmZGJjOTc4OTc2NDA2OGIwNWJjZDYx
MmMyMTFlNWFjYTEuLmUxYjQwYTY4NjVmM2NjNjcyYzg2ZjI2YTE2YzE4ODBkYTEzMDJlOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9s
bGJhckxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBAIC0xNDIsNiArMTQyLDE2
IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXI6OlNjcm9sbGJhclBhcnQgbV90
cmFja1BhcnQ7CiB9OwogCitib29sIFNjcm9sbGJhckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVu
dHNTY2FsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ludFNpemUgU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIElu
dFNpemUobHJvdW5kZihib3VuZHMoKS53aWR0aCgpICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5k
Zihib3VuZHMoKS5oZWlnaHQoKSAqIGNvbnRlbnRzU2NhbGUoKSkpOworfQorCiBjbGFzcyBTY3Jv
bGxiYXJUaHVtYlBhaW50ZXIgOiBwdWJsaWMgTGF5ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGJhclRodW1iUGFpbnRlcik7CiBwdWJsaWM6CkBAIC0y
MjQsOCArMjM0LDEwIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydChM
YXllclRleHR1cmVVcGRhdGVyKiBwYWludGVyLCBMYXllclRleHR1CiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFBhaW50IGFuZCB1cGxvYWQgdGhlIGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CiAgICAg
SW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAgICBwYWludGVyLT5wcmVwYXJlVG9VcGRhdGUo
cmVjdCwgcmVjdC5zaXplKCksIDEsIDEsIHBhaW50ZWRPcGFxdWVSZWN0LCBzdGF0cyk7CisgICAg
cGFpbnRlci0+cHJlcGFyZVRvVXBkYXRlKHJlY3QsIHJlY3Quc2l6ZSgpLCB3aWR0aFNjYWxlLCBo
ZWlnaHRTY2FsZSwgcGFpbnRlZE9wYXF1ZVJlY3QsIHN0YXRzKTsKICAgICB0ZXh0dXJlLT5wcmVw
YXJlUmVjdChyZWN0LCBzdGF0cyk7CiAKICAgICBJbnRTaXplIGRlc3RPZmZzZXQoMCwgMCk7CkBA
IC0yNTEsOCArMjYzLDEwIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVy
ZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogICAgICAgICBtX2ZvcmVU
cmFjay0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6
OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiAgICAgaWYgKG1fdGh1bWIpIHsKKyAg
ICAgICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRz
KCkud2lkdGgoKSkgLyBib3VuZHMoKS53aWR0aCgpOworICAgICAgICBmbG9hdCBoZWlnaHRTY2Fs
ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRz
KCkuaGVpZ2h0KCk7CiAgICAgICAgIFdlYktpdDo6V2ViUmVjdCB0aHVtYlJlY3QgPSBtX2dlb21l
dHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOwotICAgICAgICBtX3RodW1iLT50ZXh0
dXJlKCktPnNldERpbWVuc2lvbnMoSW50U2l6ZSh0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVjdC5o
ZWlnaHQpLCBtX3RleHR1cmVGb3JtYXQpOworICAgICAgICBtX3RodW1iLT50ZXh0dXJlKCktPnNl
dERpbWVuc2lvbnMoSW50U2l6ZSh0aHVtYlJlY3Qud2lkdGggKiB3aWR0aFNjYWxlLCB0aHVtYlJl
Y3QuaGVpZ2h0ICogaGVpZ2h0U2NhbGUpLCBtX3RleHR1cmVGb3JtYXQpOwogICAgICAgICBtX3Ro
dW1iLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6
dWlQcmlvcml0eShkcmF3c1RvUm9vdCkpOwogICAgIH0KIH0KQEAgLTI2NSw2ICsyNzksMTAgQEAg
dm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlUXVldWUm
IHF1ZXVlLCBjb25zdCBDQ09jY2x1c2kKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVk
KCk7CiAKICAgICBJbnRQb2ludCBzY3JvbGxiYXJPcmlnaW4obV9zY3JvbGxiYXItPmxvY2F0aW9u
KCkueCwgbV9zY3JvbGxiYXItPmxvY2F0aW9uKCkueSk7CisgICAgZmxvYXQgd2lkdGhTY2FsZSA9
IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgoKSkgLyBib3VuZHMoKS53
aWR0aCgpOworICAgIGZsb2F0IGhlaWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRl
bnRCb3VuZHMoKS5oZWlnaHQoKSkgLyBib3VuZHMoKS5oZWlnaHQoKTsKKworICAgIHNjcm9sbGJh
ck9yaWdpbi5zY2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CiAgICAgSW50UmVjdCBjb250
ZW50UmVjdChzY3JvbGxiYXJPcmlnaW4sIGNvbnRlbnRCb3VuZHMoKSk7CiAgICAgdXBkYXRlUGFy
dChtX2JhY2tUcmFja1VwZGF0ZXIuZ2V0KCksIG1fYmFja1RyYWNrLmdldCgpLCBjb250ZW50UmVj
dCwgcXVldWUsIHN0YXRzKTsKICAgICBpZiAobV9mb3JlVHJhY2sgJiYgbV9mb3JlVHJhY2tVcGRh
dGVyKQpAQCAtMjcyLDcgKzI5MCw3IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NPY2NsdXNpCiAKICAgICAv
LyBDb25zaWRlciB0aGUgdGh1bWIgdG8gYmUgYXQgdGhlIG9yaWdpbiB3aGVuIHBhaW50aW5nLgog
ICAgIFdlYktpdDo6V2ViUmVjdCB0aHVtYlJlY3QgPSBtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9z
Y3JvbGxiYXIuZ2V0KCkpOwotICAgIEludFJlY3Qgb3JpZ2luVGh1bWJSZWN0ID0gSW50UmVjdCgw
LCAwLCB0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVjdC5oZWlnaHQpOworICAgIEludFJlY3Qgb3Jp
Z2luVGh1bWJSZWN0ID0gSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGggKiB3aWR0aFNjYWxl
LCB0aHVtYlJlY3QuaGVpZ2h0ICogaGVpZ2h0U2NhbGUpOwogICAgIGlmICghb3JpZ2luVGh1bWJS
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdXBkYXRlUGFydChtX3RodW1iVXBkYXRlci5nZXQoKSwg
bV90aHVtYi5nZXQoKSwgb3JpZ2luVGh1bWJSZWN0LCBxdWV1ZSwgc3RhdHMpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDExNWZiNjYxMGZiMTEwZDM4NDAyMjdl
NjE3N2EwNzBiMTkwODExNDkuLjU1NTZjYWJiNGNjOGUwMTJkYzQ1ZGRmZDgxNzBhYjhlNDljMWIx
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgKQEAgLTQ2LDYgKzQ2LDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckxheWVyQ2hyb21pdW0+
IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwgV2ViS2l0OjpXZWJTY3Jv
bGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5PiwgaW50IHNjcm9sbExheWVySWQpOwogCiAgICAgLy8gTGF5ZXJDaHJvbWl1bSBpbnRl
cmZhY2UKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNh
bGN1bGF0b3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVw
ZGF0ZVF1ZXVlJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdCopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3Bw
CmluZGV4IDgwNGQ2ZmZkOGFjOGQxNjc4MTJhNjUzYWQ5M2ExN2NjN2VkNmJlZGUuLjRkMmEzYmQ0
NDZmMTA1MzhiMjkwOTkzZGFjYWQ2YjA2MGFhNTIzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTk1LDYgKzk1LDggQEAgdm9pZCBDQ1Njcm9sbGJhckxh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNE
YXRhJgogewogICAgIGJvb2wgcHJlbXVsdGlwbGVkQWxwaGEgPSBmYWxzZTsKICAgICBib29sIGZs
aXBwZWQgPSBmYWxzZTsKKyAgICBmbG9hdCB3aWR0aFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSAvIGJvdW5kcygpLndpZHRoKCk7CisgICAgZmxvYXQg
aGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgp
KSAvIGJvdW5kcygpLmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgMSwgMSk7
CiAgICAgSW50UmVjdCBib3VuZHNSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7CiAK
QEAgLTEwNyw3ICsxMDksOCBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmCiAgICAgICAgIHRodW1i
UmVjdCA9IFdlYlJlY3QoKTsKIAogICAgIGlmIChtX3RodW1iUmVzb3VyY2VJZCAmJiAhdGh1bWJS
ZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQg
PSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCh0aHVt
YlJlY3QueCwgdGh1bWJSZWN0LnksIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCks
IG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsK
KyAgICAgICAgSW50UmVjdCB0aHVtYkNvbnRlbnRSZWN0KHRodW1iUmVjdC54ICogd2lkdGhTY2Fs
ZSwgdGh1bWJSZWN0LnkgKiBoZWlnaHRTY2FsZSwgdGh1bWJSZWN0LndpZHRoICogd2lkdGhTY2Fs
ZSwgdGh1bWJSZWN0LmhlaWdodCAqIGhlaWdodFNjYWxlKTsKKyAgICAgICAgT3duUHRyPENDVGV4
dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIHRodW1iQ29udGVudFJlY3QsIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRB
bHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZC0+c2V0TmVlZHNCbGVuZGluZygp
OwogICAgICAgICBxdWFkU2luay5hcHBlbmQocXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0
YSk7CiAgICAgfQpAQCAtMTE2LDggKzExOSwxMCBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGluIHR3byBw
YXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJhY2sgcGFy
dC4KLSAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KGZvcmVUcmFja1JlY3QueCwgZm9yZVRyYWNrUmVjdC55
LCBmb3JlVHJhY2tSZWN0LndpZHRoLCBmb3JlVHJhY2tSZWN0LmhlaWdodCksIG1fZm9yZVRyYWNr
UmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJv
dW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICBpZiAobV9mb3JlVHJh
Y2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBJbnRS
ZWN0IGZvcmVUcmFja0NvbnRlbnRSZWN0KGZvcmVUcmFja1JlY3QueCAqIHdpZHRoU2NhbGUsIGZv
cmVUcmFja1JlY3QueSAqIGhlaWdodFNjYWxlLCBmb3JlVHJhY2tSZWN0LndpZHRoICogd2lkdGhT
Y2FsZSwgZm9yZVRyYWNrUmVjdC5oZWlnaHQgKiBoZWlnaHRTY2FsZSk7CisgICAgICAgIHF1YWRT
aW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgZm9y
ZVRyYWNrQ29udGVudFJlY3QsIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxw
aGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5k
UXVhZHNEYXRhKTsKKyAgICB9CiAKICAgICAvLyBPcmRlciBtYXR0ZXJzIGhlcmU6IHNpbmNlIHRo
ZSBiYWNrIHRyYWNrIHRleHR1cmUgaXMgYmVpbmcgZHJhd24gdG8gdGhlIGVudGlyZSBjb250ZW50
cyByZWN0LCB3ZSBtdXN0IGFwcGVuZCBpdCBhZnRlciB0aGUgdGh1bWIgYW5kCiAgICAgLy8gZm9y
ZSB0cmFjayBxdWFkcy4gVGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBjb250YWlucyAoYW5kIGRpc3Bs
YXlzKSB0aGUgYnV0dG9ucy4KQEAgLTE0OSw3ICsxNTQsNyBAQCBXZWJLaXQ6OldlYlBvaW50IEND
U2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6bG9jYXRpb24oKSBjb25zdAogCiBXZWJL
aXQ6OldlYlNpemUgQ0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyOjpzaXplKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gV2ViS2l0OjpXZWJTaXplKG1fb3duZXItPmNvbnRlbnRCb3VuZHMo
KS53aWR0aCgpLCBtX293bmVyLT5jb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOworICAgIHJldHVy
biBXZWJLaXQ6OldlYlNpemUobV9vd25lci0+Ym91bmRzKCkud2lkdGgoKSwgbV9vd25lci0+Ym91
bmRzKCkuaGVpZ2h0KCkpOwogfQogCiBib29sIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9s
bGJhcjo6ZW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJJbXBsLmNwcAppbmRleCAzYTMxNmRmY2UwMjBkMTVkNzBkZGJkZmQ5ZDhkYjNlOTM0NzUwNDhh
Li5jYmU5MGVkN2MwZGNhNWVlZDBkYjllZDcwNWQ2NDU5ODViM2Y5NzhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKQEAgLTI0OSw2ICsyNDksMTYgQEAg
U2tNYXRyaXg0NCBXZWJMYXllckltcGw6OnRyYW5zZm9ybSgpIGNvbnN0CiAgICAgcmV0dXJuIHNr
TWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9sYXllci0+dHJhbnNmb3JtKCkpOwog
fQogCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKK3sK
KyAgICBtX2xheWVyLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKK30KKworZmxvYXQgV2ViTGF5
ZXJJbXBsOjpjb250ZW50c1NjYWxlKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci0+Y29udGVudHNT
Y2FsZSgpOworfQorCiB2b2lkIFdlYkxheWVySW1wbDo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJh
d3NDb250ZW50KQogewogICAgIG1fbGF5ZXItPnNldElzRHJhd2FibGUoZHJhd3NDb250ZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggZTM0YWRkY2Ri
MmY2N2ZhYjhlZTZmYzI1ZDJiODQ0ODk5NDNmZjdhOS4uOWY2MzlmZGIzNDdjZjM1MzU1NTE3NmQw
YWFjODE1ZTkxMGFmMGZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJ
bXBsLmgKQEAgLTczLDYgKzczLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFu
c2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRU
cmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxv
YXQgY29udGVudHNTY2FsZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0Nv
bnRlbnQoYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVS
UklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162656</attachid>
            <date>2012-09-06 19:48:16 -0700</date>
            <delta_ts>2012-09-07 12:59:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120906224756.patch</filename>
            <type>text/plain</type>
            <size>9284</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMzOTYzZWMzNmI0OWVl
MDVjN2MyYTY1YzhmMGE2ODRmM2UzNjA3OC4uNDg2NmFhZWViMTQ4ZGI2MjA0Mjk0ODg2NTI0OWRl
YWUzMmU2NzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA2ICBSb2Jl
cnQgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbGJhckxheWVyQ2hy
b21pdW0gaXMgdXBkYXRlZCB0byB1c2UgY29udGVudCBzY2FsZSB0byBkcmF3IGEgaGlnaCByZXMg
c2Nyb2xsYmFyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZSBwb3NpdGlvbmluZyBvZiB0aGUgc2Nyb2xsYmFyIGRvZXMgbm90IGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSk6CisKIDIwMTItMDktMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dW1JlZmFjdG9y
aW5nXSBFbGVtZW50IHN1YmNsYXNzZXMgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVqZWN0IGF1dGhv
ciBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcAppbmRleCBl
ZmYxNGRkZmRiYzk3ODk3NjQwNjhiMDViY2Q2MTJjMjExZTVhY2ExLi5lMWI0MGE2ODY1ZjNjYzY3
MmM4NmYyNmExNmMxODgwZGExMzAyZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNo
cm9taXVtLmNwcApAQCAtMTQyLDYgKzE0MiwxNiBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6V2Vi
U2Nyb2xsYmFyOjpTY3JvbGxiYXJQYXJ0IG1fdHJhY2tQYXJ0OwogfTsKIAorYm9vbCBTY3JvbGxi
YXJMYXllckNocm9taXVtOjpuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdAoreworICAgIHJldHVy
biB0cnVlOworfQorCitJbnRTaXplIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNvbnRlbnRCb3Vu
ZHMoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKGxyb3VuZGYoYm91bmRzKCkud2lkdGgo
KSAqIGNvbnRlbnRzU2NhbGUoKSksIGxyb3VuZGYoYm91bmRzKCkuaGVpZ2h0KCkgKiBjb250ZW50
c1NjYWxlKCkpKTsKK30KKwogY2xhc3MgU2Nyb2xsYmFyVGh1bWJQYWludGVyIDogcHVibGljIExh
eWVyUGFpbnRlckNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JvbGxiYXJU
aHVtYlBhaW50ZXIpOwogcHVibGljOgpAQCAtMjI0LDggKzIzNCwxMCBAQCB2b2lkIFNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnVwZGF0ZVBhcnQoTGF5ZXJUZXh0dXJlVXBkYXRlciogcGFpbnRlciwg
TGF5ZXJUZXh0dQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBQYWludCBhbmQgdXBsb2FkIHRo
ZSBlbnRpcmUgcGFydC4KKyAgICBmbG9hdCB3aWR0aFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSAvIGJvdW5kcygpLndpZHRoKCk7CisgICAgZmxvYXQg
aGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgp
KSAvIGJvdW5kcygpLmhlaWdodCgpOwogICAgIEludFJlY3QgcGFpbnRlZE9wYXF1ZVJlY3Q7Ci0g
ICAgcGFpbnRlci0+cHJlcGFyZVRvVXBkYXRlKHJlY3QsIHJlY3Quc2l6ZSgpLCAxLCAxLCBwYWlu
dGVkT3BhcXVlUmVjdCwgc3RhdHMpOworICAgIHBhaW50ZXItPnByZXBhcmVUb1VwZGF0ZShyZWN0
LCByZWN0LnNpemUoKSwgd2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUsIHBhaW50ZWRPcGFxdWVSZWN0
LCBzdGF0cyk7CiAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3QocmVjdCwgc3RhdHMpOwogCiAgICAg
SW50U2l6ZSBkZXN0T2Zmc2V0KDAsIDApOwpAQCAtMjUxLDggKzI2MywxMCBAQCB2b2lkIFNjcm9s
bGJhckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlD
YWxjdWxhdG9yJikKICAgICAgICAgbV9mb3JlVHJhY2stPnRleHR1cmUoKS0+c2V0UmVxdWVzdFBy
aW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5KGRyYXdzVG9Sb290KSk7CiAg
ICAgfQogICAgIGlmIChtX3RodW1iKSB7CisgICAgICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgo
KTsKKyAgICAgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVu
dEJvdW5kcygpLmhlaWdodCgpKSAvIGJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICBXZWJLaXQ6
OldlYlJlY3QgdGh1bWJSZWN0ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdl
dCgpKTsKLSAgICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKEludFNpemUo
dGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KSwgbV90ZXh0dXJlRm9ybWF0KTsKKyAg
ICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKEludFNpemUodGh1bWJSZWN0
LndpZHRoICogd2lkdGhTY2FsZSwgdGh1bWJSZWN0LmhlaWdodCAqIGhlaWdodFNjYWxlKSwgbV90
ZXh0dXJlRm9ybWF0KTsKICAgICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJp
b3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAg
ICB9CiB9CkBAIC0yNjUsNiArMjc5LDEwIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NPY2NsdXNpCiAgICAg
Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAgICAgSW50UG9pbnQgc2Nyb2xsYmFy
T3JpZ2luKG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigpLngsIG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigp
LnkpOworICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJv
dW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2Fs
ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRz
KCkuaGVpZ2h0KCk7CisKKyAgICBzY3JvbGxiYXJPcmlnaW4uc2NhbGUod2lkdGhTY2FsZSwgaGVp
Z2h0U2NhbGUpOwogICAgIEludFJlY3QgY29udGVudFJlY3Qoc2Nyb2xsYmFyT3JpZ2luLCBjb250
ZW50Qm91bmRzKCkpOwogICAgIHVwZGF0ZVBhcnQobV9iYWNrVHJhY2tVcGRhdGVyLmdldCgpLCBt
X2JhY2tUcmFjay5nZXQoKSwgY29udGVudFJlY3QsIHF1ZXVlLCBzdGF0cyk7CiAgICAgaWYgKG1f
Zm9yZVRyYWNrICYmIG1fZm9yZVRyYWNrVXBkYXRlcikKQEAgLTI3Miw3ICsyOTAsNyBAQCB2b2lk
IFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgcXVl
dWUsIGNvbnN0IENDT2NjbHVzaQogCiAgICAgLy8gQ29uc2lkZXIgdGhlIHRodW1iIHRvIGJlIGF0
IHRoZSBvcmlnaW4gd2hlbiBwYWludGluZy4KICAgICBXZWJLaXQ6OldlYlJlY3QgdGh1bWJSZWN0
ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsKLSAgICBJbnRSZWN0
IG9yaWdpblRodW1iUmVjdCA9IEludFJlY3QoMCwgMCwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJl
Y3QuaGVpZ2h0KTsKKyAgICBJbnRSZWN0IG9yaWdpblRodW1iUmVjdCA9IEludFJlY3QoMCwgMCwg
dGh1bWJSZWN0LndpZHRoICogd2lkdGhTY2FsZSwgdGh1bWJSZWN0LmhlaWdodCAqIGhlaWdodFNj
YWxlKTsKICAgICBpZiAoIW9yaWdpblRodW1iUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHVwZGF0
ZVBhcnQobV90aHVtYlVwZGF0ZXIuZ2V0KCksIG1fdGh1bWIuZ2V0KCksIG9yaWdpblRodW1iUmVj
dCwgcXVldWUsIHN0YXRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaApp
bmRleCAxMTVmYjY2MTBmYjExMGQzODQwMjI3ZTYxNzdhMDcwYjE5MDgxMTQ5Li41NTU2Y2FiYjRj
YzhlMDEyZGM0NWRkZmQ4MTcwYWI4ZTQ5YzFiMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bS5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTY3JvbGxiYXJMYXllckNocm9taXVtPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6Oldl
YlNjcm9sbGJhcj4sIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRy
PFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4sIGludCBzY3JvbGxMYXllcklkKTsK
IAogICAgIC8vIExheWVyQ2hyb21pdW0gaW50ZXJmYWNlCisgICAgdmlydHVhbCBib29sIG5lZWRz
Q29udGVudHNTY2FsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBjb250
ZW50Qm91bmRzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVQ
cmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlDYWxjdWxhdG9yJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFy
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCA4MDRkNmZmZDhhYzhkMTY3ODEyYTY1
M2FkOTNhMTdjYzdlZDZiZWRlLi40ZDJhM2JkNDQ2ZjEwNTM4YjI5MDk5M2RhY2FkNmIwNjBhYTUy
M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC05NSw2
ICs5NSw4IEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYKIHsKICAgICBib29sIHByZW11bHRpcGxl
ZEFscGhhID0gZmFsc2U7CiAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CisgICAgZmxvYXQgd2lk
dGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgoKSkgLyBi
b3VuZHMoKS53aWR0aCgpOworICAgIGZsb2F0IGhlaWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkgLyBib3VuZHMoKS5oZWlnaHQoKTsKICAgICBG
bG9hdFJlY3QgdXZSZWN0KDAsIDAsIDEsIDEpOwogICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQ
b2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwogCkBAIC0xMDcsNyArMTA5LDggQEAgdm9pZCBDQ1Nj
cm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBw
ZW5kUXVhZHNEYXRhJgogICAgICAgICB0aHVtYlJlY3QgPSBXZWJSZWN0KCk7CiAKICAgICBpZiAo
bV90aHVtYlJlc291cmNlSWQgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3du
UHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIEludFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVjdC55LCB0aHVtYlJl
Y3Qud2lkdGgsIHRodW1iUmVjdC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJZCwgcHJlbXVsdGlw
bGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CisgICAgICAgIEludFJlY3QgdGh1bWJDb250ZW50
UmVjdCh0aHVtYlJlY3QueCAqIHdpZHRoU2NhbGUsIHRodW1iUmVjdC55ICogaGVpZ2h0U2NhbGUs
IHRodW1iUmVjdC53aWR0aCAqIHdpZHRoU2NhbGUsIHRodW1iUmVjdC5oZWlnaHQgKiBoZWlnaHRT
Y2FsZSk7CisgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gcXVhZCA9IENDVGV4dHVy
ZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aHVtYkNvbnRlbnRSZWN0LCBtX3Ro
dW1iUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CiAgICAg
ICAgIHF1YWQtPnNldE5lZWRzQmxlbmRpbmcoKTsKICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHF1
YWQucmVsZWFzZSgpLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgIH0KQEAgLTExNiw4ICsxMTksMTAg
QEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVh
ZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJgogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBv
bmx5IHBhaW50IHRoZSB0cmFjayBpbiB0d28gcGFydHMgaWYgd2Ugd2VyZSBnaXZlbiBhIHRleHR1
cmUgZm9yIHRoZSBmb3J3YXJkIHRyYWNrIHBhcnQuCi0gICAgaWYgKG1fZm9yZVRyYWNrUmVzb3Vy
Y2VJZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRTaW5rLmFwcGVu
ZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdChmb3Jl
VHJhY2tSZWN0LngsIGZvcmVUcmFja1JlY3QueSwgZm9yZVRyYWNrUmVjdC53aWR0aCwgZm9yZVRy
YWNrUmVjdC5oZWlnaHQpLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhh
LCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCksIGFwcGVuZFF1
YWRzRGF0YSk7CisgICAgaWYgKG1fZm9yZVRyYWNrUmVzb3VyY2VJZCAmJiAhZm9yZVRyYWNrUmVj
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgSW50UmVjdCBmb3JlVHJhY2tDb250ZW50UmVjdChmb3Jl
VHJhY2tSZWN0LnggKiB3aWR0aFNjYWxlLCBmb3JlVHJhY2tSZWN0LnkgKiBoZWlnaHRTY2FsZSwg
Zm9yZVRyYWNrUmVjdC53aWR0aCAqIHdpZHRoU2NhbGUsIGZvcmVUcmFja1JlY3QuaGVpZ2h0ICog
aGVpZ2h0U2NhbGUpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGZvcmVUcmFja0NvbnRlbnRSZWN0LCBtX2ZvcmVUcmFj
a1Jlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBi
b3VuZHNSZWN0KSwgZmxpcHBlZCksIGFwcGVuZFF1YWRzRGF0YSk7CisgICAgfQogCiAgICAgLy8g
T3JkZXIgbWF0dGVycyBoZXJlOiBzaW5jZSB0aGUgYmFjayB0cmFjayB0ZXh0dXJlIGlzIGJlaW5n
IGRyYXduIHRvIHRoZSBlbnRpcmUgY29udGVudHMgcmVjdCwgd2UgbXVzdCBhcHBlbmQgaXQgYWZ0
ZXIgdGhlIHRodW1iIGFuZAogICAgIC8vIGZvcmUgdHJhY2sgcXVhZHMuIFRoZSBiYWNrIHRyYWNr
IHRleHR1cmUgY29udGFpbnMgKGFuZCBkaXNwbGF5cykgdGhlIGJ1dHRvbnMuCkBAIC0xNDksNyAr
MTU0LDcgQEAgV2ViS2l0OjpXZWJQb2ludCBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxi
YXI6OmxvY2F0aW9uKCkgY29uc3QKIAogV2ViS2l0OjpXZWJTaXplIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6V2Vi
U2l6ZShtX293bmVyLT5jb250ZW50Qm91bmRzKCkud2lkdGgoKSwgbV9vd25lci0+Y29udGVudEJv
dW5kcygpLmhlaWdodCgpKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJTaXplKG1fb3duZXItPmJv
dW5kcygpLndpZHRoKCksIG1fb3duZXItPmJvdW5kcygpLmhlaWdodCgpKTsKIH0KIAogYm9vbCBD
Q1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxiYXI6OmVuYWJsZWQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162849</attachid>
            <date>2012-09-07 12:59:06 -0700</date>
            <delta_ts>2012-09-07 14:06:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120907155845.patch</filename>
            <type>text/plain</type>
            <size>10534</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMzOTYzZWMzNmI0OWVl
MDVjN2MyYTY1YzhmMGE2ODRmM2UzNjA3OC4uNDg2NmFhZWViMTQ4ZGI2MjA0Mjk0ODg2NTI0OWRl
YWUzMmU2NzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA2ICBSb2Jl
cnQgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbGJhckxheWVyQ2hy
b21pdW0gaXMgdXBkYXRlZCB0byB1c2UgY29udGVudCBzY2FsZSB0byBkcmF3IGEgaGlnaCByZXMg
c2Nyb2xsYmFyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZSBwb3NpdGlvbmluZyBvZiB0aGUgc2Nyb2xsYmFyIGRvZXMgbm90IGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSk6CisKIDIwMTItMDktMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dW1JlZmFjdG9y
aW5nXSBFbGVtZW50IHN1YmNsYXNzZXMgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVqZWN0IGF1dGhv
ciBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyNDE4ZmRlZDc2M2ZlYTQ4NTQ3
MTFiODNiN2ZiMDJlZjdkMGQ1OTA0Li5mMjBjZTg5NTdmOTUwYTVmOWQzMTdlNDc0ZDQyZDc2NGE4
MmE5Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTQzLDYgKzE0MywxMyBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCitJbnRSZWN0IExheWVyQ2hyb21pdW06OmxheWVyUmVj
dFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisgICAg
cmV0dXJuIEludFJlY3QobGF5ZXJSZWN0LngoKSAqIHdpZHRoU2NhbGUsIGxheWVyUmVjdC55KCkg
KiBoZWlnaHRTY2FsZSwgbGF5ZXJSZWN0LndpZHRoKCkgKiB3aWR0aFNjYWxlLCBsYXllclJlY3Qu
aGVpZ2h0KCkgKiBoZWlnaHRTY2FsZSk7Cit9CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0UGFy
ZW50KExheWVyQ2hyb21pdW0qIGxheWVyKQogewogICAgIEFTU0VSVCghbGF5ZXIgfHwgIWxheWVy
LT5oYXNBbmNlc3Rvcih0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZWUwZWE3NzU2YTVl
ZjM4NzVjY2ExNDZlYzExYjExMDcwNmY1ODQyYy4uNTFlZTAwMTRhNzE4NmViYmM2Y2M5NzYwODNl
ZGM0YzMyZDk3YzRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjkyLDYgKzI5Miw4IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIEludFJlY3QgbGF5
ZXJSZWN0VG9Db250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAgICAgLy8g
VGhpcyBmbGFnIGlzIHNldCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGluZy91cGRhdGluZy4KICAg
ICBib29sIG1fbmVlZHNEaXNwbGF5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGVmZjE0ZGRmZGJjOTc4OTc2NDA2OGIwNWJjZDYxMmMyMTFlNWFjYTEuLjc0
NTFkZDVjZGU2ODBkMjUzMmM2NzlhOWIyN2VlOWI3YzE3YmRhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nj
cm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBAIC0xNDIsNiArMTQyLDE2IEBAIHByaXZhdGU6CiAg
ICAgV2ViS2l0OjpXZWJTY3JvbGxiYXI6OlNjcm9sbGJhclBhcnQgbV90cmFja1BhcnQ7CiB9Owog
Citib29sIFNjcm9sbGJhckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ludFNpemUgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bTo6Y29udGVudEJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUobHJvdW5kZihi
b3VuZHMoKS53aWR0aCgpICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5kZihib3VuZHMoKS5oZWln
aHQoKSAqIGNvbnRlbnRzU2NhbGUoKSkpOworfQorCiBjbGFzcyBTY3JvbGxiYXJUaHVtYlBhaW50
ZXIgOiBwdWJsaWMgTGF5ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjcm9sbGJhclRodW1iUGFpbnRlcik7CiBwdWJsaWM6CkBAIC0yMjQsOCArMjM0LDEwIEBA
IHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydChMYXllclRleHR1cmVVcGRh
dGVyKiBwYWludGVyLCBMYXllclRleHR1CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBhaW50
IGFuZCB1cGxvYWQgdGhlIGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgo
KTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91
bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CiAgICAgSW50UmVjdCBwYWludGVk
T3BhcXVlUmVjdDsKLSAgICBwYWludGVyLT5wcmVwYXJlVG9VcGRhdGUocmVjdCwgcmVjdC5zaXpl
KCksIDEsIDEsIHBhaW50ZWRPcGFxdWVSZWN0LCBzdGF0cyk7CisgICAgcGFpbnRlci0+cHJlcGFy
ZVRvVXBkYXRlKHJlY3QsIHJlY3Quc2l6ZSgpLCB3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSwgcGFp
bnRlZE9wYXF1ZVJlY3QsIHN0YXRzKTsKICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChyZWN0LCBz
dGF0cyk7CiAKICAgICBJbnRTaXplIGRlc3RPZmZzZXQoMCwgMCk7CkBAIC0yNTEsOCArMjYzLDgg
QEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25z
dCBDQ1ByaW9yaXR5Q2FsY3VsYXRvciYpCiAgICAgICAgIG1fZm9yZVRyYWNrLT50ZXh0dXJlKCkt
PnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3
c1RvUm9vdCkpOwogICAgIH0KICAgICBpZiAobV90aHVtYikgewotICAgICAgICBXZWJLaXQ6Oldl
YlJlY3QgdGh1bWJSZWN0ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgp
KTsKLSAgICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKEludFNpemUodGh1
bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KSwgbV90ZXh0dXJlRm9ybWF0KTsKKyAgICAg
ICAgSW50U2l6ZSB0aHVtYlNpemUgPSBsYXllclJlY3RUb0NvbnRlbnRSZWN0KG1fZ2VvbWV0cnkt
PnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSkpLnNpemUoKTsKKyAgICAgICAgbV90aHVtYi0+
dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKHRodW1iU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKICAg
ICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNh
bGN1bGF0b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiB9CkBAIC0yNjUsMTQg
KzI3NywxNCBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVRdWV1ZSYgcXVldWUsIGNvbnN0IENDT2NjbHVzaQogICAgIGNyZWF0ZVRleHR1cmVVcGRh
dGVySWZOZWVkZWQoKTsKIAogICAgIEludFBvaW50IHNjcm9sbGJhck9yaWdpbihtX3Njcm9sbGJh
ci0+bG9jYXRpb24oKS54LCBtX3Njcm9sbGJhci0+bG9jYXRpb24oKS55KTsKLSAgICBJbnRSZWN0
IGNvbnRlbnRSZWN0KHNjcm9sbGJhck9yaWdpbiwgY29udGVudEJvdW5kcygpKTsKKyAgICBJbnRS
ZWN0IGNvbnRlbnRSZWN0ID0gbGF5ZXJSZWN0VG9Db250ZW50UmVjdChJbnRSZWN0KHNjcm9sbGJh
ck9yaWdpbiwgYm91bmRzKCkpKTsKICAgICB1cGRhdGVQYXJ0KG1fYmFja1RyYWNrVXBkYXRlci5n
ZXQoKSwgbV9iYWNrVHJhY2suZ2V0KCksIGNvbnRlbnRSZWN0LCBxdWV1ZSwgc3RhdHMpOwogICAg
IGlmIChtX2ZvcmVUcmFjayAmJiBtX2ZvcmVUcmFja1VwZGF0ZXIpCiAgICAgICAgIHVwZGF0ZVBh
cnQobV9mb3JlVHJhY2tVcGRhdGVyLmdldCgpLCBtX2ZvcmVUcmFjay5nZXQoKSwgY29udGVudFJl
Y3QsIHF1ZXVlLCBzdGF0cyk7CiAKICAgICAvLyBDb25zaWRlciB0aGUgdGh1bWIgdG8gYmUgYXQg
dGhlIG9yaWdpbiB3aGVuIHBhaW50aW5nLgogICAgIFdlYktpdDo6V2ViUmVjdCB0aHVtYlJlY3Qg
PSBtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOwotICAgIEludFJlY3Qg
b3JpZ2luVGh1bWJSZWN0ID0gSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVj
dC5oZWlnaHQpOworICAgIEludFJlY3Qgb3JpZ2luVGh1bWJSZWN0ID0gbGF5ZXJSZWN0VG9Db250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCkp
OwogICAgIGlmICghb3JpZ2luVGh1bWJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdXBkYXRlUGFy
dChtX3RodW1iVXBkYXRlci5nZXQoKSwgbV90aHVtYi5nZXQoKSwgb3JpZ2luVGh1bWJSZWN0LCBx
dWV1ZSwgc3RhdHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDExNWZiNjYxMGZiMTEwZDM4NDAyMjdlNjE3N2EwNzBiMTkwODExNDkuLjU1NTZjYWJiNGNjOGUw
MTJkYzQ1ZGRmZDgxNzBhYjhlNDljMWIxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNo
cm9taXVtLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjcm9sbGJhckxheWVyQ2hyb21pdW0+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Ny
b2xsYmFyPiwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiwgaW50IHNjcm9sbExheWVySWQpOwogCiAg
ICAgLy8gTGF5ZXJDaHJvbWl1bSBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250
ZW50c1NjYWxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRC
b3VuZHMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZVByaW9y
aXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IDgwNGQ2ZmZkOGFjOGQxNjc4MTJhNjUzYWQ5
M2ExN2NjN2VkNmJlZGUuLjRkMmEzYmQ0NDZmMTA1MzhiMjkwOTkzZGFjYWQ2YjA2MGFhNTIzZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTk1LDYgKzk1
LDggQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJgogewogICAgIGJvb2wgcHJlbXVsdGlwbGVkQWxw
aGEgPSBmYWxzZTsKICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKKyAgICBmbG9hdCB3aWR0aFNj
YWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSAvIGJvdW5k
cygpLndpZHRoKCk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29udGVudEJvdW5kcygpLmhlaWdodCgpKSAvIGJvdW5kcygpLmhlaWdodCgpOwogICAgIEZsb2F0
UmVjdCB1dlJlY3QoMCwgMCwgMSwgMSk7CiAgICAgSW50UmVjdCBib3VuZHNSZWN0KEludFBvaW50
KCksIGNvbnRlbnRCb3VuZHMoKSk7CiAKQEAgLTEwNyw3ICsxMDksOCBAQCB2b2lkIENDU2Nyb2xs
YmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRR
dWFkc0RhdGEmCiAgICAgICAgIHRodW1iUmVjdCA9IFdlYlJlY3QoKTsKIAogICAgIGlmIChtX3Ro
dW1iUmVzb3VyY2VJZCAmJiAhdGh1bWJSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8
Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgSW50UmVjdCh0aHVtYlJlY3QueCwgdGh1bWJSZWN0LnksIHRodW1iUmVjdC53
aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRB
bHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgSW50UmVjdCB0aHVtYkNvbnRlbnRSZWN0
KHRodW1iUmVjdC54ICogd2lkdGhTY2FsZSwgdGh1bWJSZWN0LnkgKiBoZWlnaHRTY2FsZSwgdGh1
bWJSZWN0LndpZHRoICogd2lkdGhTY2FsZSwgdGh1bWJSZWN0LmhlaWdodCAqIGhlaWdodFNjYWxl
KTsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRodW1iQ29udGVudFJlY3QsIG1fdGh1bWJS
ZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAg
cXVhZC0+c2V0TmVlZHNCbGVuZGluZygpOwogICAgICAgICBxdWFkU2luay5hcHBlbmQocXVhZC5y
ZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CiAgICAgfQpAQCAtMTE2LDggKzExOSwxMCBAQCB2
b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2lu
aywgQ0NBcHBlbmRRdWFkc0RhdGEmCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG9ubHkg
cGFpbnQgdGhlIHRyYWNrIGluIHR3byBwYXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBm
b3IgdGhlIGZvcndhcmQgdHJhY2sgcGFydC4KLSAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlk
ICYmICFmb3JlVHJhY2tSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcXVhZFNpbmsuYXBwZW5kKEND
VGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KGZvcmVUcmFj
a1JlY3QueCwgZm9yZVRyYWNrUmVjdC55LCBmb3JlVHJhY2tSZWN0LndpZHRoLCBmb3JlVHJhY2tS
ZWN0LmhlaWdodCksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRv
VVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNE
YXRhKTsKKyAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICBJbnRSZWN0IGZvcmVUcmFja0NvbnRlbnRSZWN0KGZvcmVUcmFj
a1JlY3QueCAqIHdpZHRoU2NhbGUsIGZvcmVUcmFja1JlY3QueSAqIGhlaWdodFNjYWxlLCBmb3Jl
VHJhY2tSZWN0LndpZHRoICogd2lkdGhTY2FsZSwgZm9yZVRyYWNrUmVjdC5oZWlnaHQgKiBoZWln
aHRTY2FsZSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgZm9yZVRyYWNrQ29udGVudFJlY3QsIG1fZm9yZVRyYWNrUmVz
b3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5k
c1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICB9CiAKICAgICAvLyBPcmRl
ciBtYXR0ZXJzIGhlcmU6IHNpbmNlIHRoZSBiYWNrIHRyYWNrIHRleHR1cmUgaXMgYmVpbmcgZHJh
d24gdG8gdGhlIGVudGlyZSBjb250ZW50cyByZWN0LCB3ZSBtdXN0IGFwcGVuZCBpdCBhZnRlciB0
aGUgdGh1bWIgYW5kCiAgICAgLy8gZm9yZSB0cmFjayBxdWFkcy4gVGhlIGJhY2sgdHJhY2sgdGV4
dHVyZSBjb250YWlucyAoYW5kIGRpc3BsYXlzKSB0aGUgYnV0dG9ucy4KQEAgLTE0OSw3ICsxNTQs
NyBAQCBXZWJLaXQ6OldlYlBvaW50IENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6
bG9jYXRpb24oKSBjb25zdAogCiBXZWJLaXQ6OldlYlNpemUgQ0NTY3JvbGxiYXJMYXllckltcGw6
OkNDU2Nyb2xsYmFyOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViS2l0OjpXZWJTaXpl
KG1fb3duZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpLCBtX293bmVyLT5jb250ZW50Qm91bmRz
KCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUobV9vd25lci0+Ym91bmRz
KCkud2lkdGgoKSwgbV9vd25lci0+Ym91bmRzKCkuaGVpZ2h0KCkpOwogfQogCiBib29sIENDU2Ny
b2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6ZW5hYmxlZCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162863</attachid>
            <date>2012-09-07 14:06:11 -0700</date>
            <delta_ts>2012-09-11 21:49:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120907170550.patch</filename>
            <type>text/plain</type>
            <size>11436</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMzOTYzZWMzNmI0OWVl
MDVjN2MyYTY1YzhmMGE2ODRmM2UzNjA3OC4uNDg2NmFhZWViMTQ4ZGI2MjA0Mjk0ODg2NTI0OWRl
YWUzMmU2NzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA2ICBSb2Jl
cnQgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbGJhckxheWVyQ2hy
b21pdW0gaXMgdXBkYXRlZCB0byB1c2UgY29udGVudCBzY2FsZSB0byBkcmF3IGEgaGlnaCByZXMg
c2Nyb2xsYmFyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZSBwb3NpdGlvbmluZyBvZiB0aGUgc2Nyb2xsYmFyIGRvZXMgbm90IGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSk6CisKIDIwMTItMDktMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dW1JlZmFjdG9y
aW5nXSBFbGVtZW50IHN1YmNsYXNzZXMgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVqZWN0IGF1dGhv
ciBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyNDE4ZmRlZDc2M2ZlYTQ4NTQ3
MTFiODNiN2ZiMDJlZjdkMGQ1OTA0Li5mMjBjZTg5NTdmOTUwYTVmOWQzMTdlNDc0ZDQyZDc2NGE4
MmE5Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTQzLDYgKzE0MywxMyBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCitJbnRSZWN0IExheWVyQ2hyb21pdW06OmxheWVyUmVj
dFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisgICAg
cmV0dXJuIEludFJlY3QobGF5ZXJSZWN0LngoKSAqIHdpZHRoU2NhbGUsIGxheWVyUmVjdC55KCkg
KiBoZWlnaHRTY2FsZSwgbGF5ZXJSZWN0LndpZHRoKCkgKiB3aWR0aFNjYWxlLCBsYXllclJlY3Qu
aGVpZ2h0KCkgKiBoZWlnaHRTY2FsZSk7Cit9CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0UGFy
ZW50KExheWVyQ2hyb21pdW0qIGxheWVyKQogewogICAgIEFTU0VSVCghbGF5ZXIgfHwgIWxheWVy
LT5oYXNBbmNlc3Rvcih0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZWUwZWE3NzU2YTVl
ZjM4NzVjY2ExNDZlYzExYjExMDcwNmY1ODQyYy4uNTFlZTAwMTRhNzE4NmViYmM2Y2M5NzYwODNl
ZGM0YzMyZDk3YzRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjkyLDYgKzI5Miw4IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIEludFJlY3QgbGF5
ZXJSZWN0VG9Db250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAgICAgLy8g
VGhpcyBmbGFnIGlzIHNldCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGluZy91cGRhdGluZy4KICAg
ICBib29sIG1fbmVlZHNEaXNwbGF5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGVmZjE0ZGRmZGJjOTc4OTc2NDA2OGIwNWJjZDYxMmMyMTFlNWFjYTEuLjc0
NTFkZDVjZGU2ODBkMjUzMmM2NzlhOWIyN2VlOWI3YzE3YmRhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nj
cm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBAIC0xNDIsNiArMTQyLDE2IEBAIHByaXZhdGU6CiAg
ICAgV2ViS2l0OjpXZWJTY3JvbGxiYXI6OlNjcm9sbGJhclBhcnQgbV90cmFja1BhcnQ7CiB9Owog
Citib29sIFNjcm9sbGJhckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ludFNpemUgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bTo6Y29udGVudEJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUobHJvdW5kZihi
b3VuZHMoKS53aWR0aCgpICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5kZihib3VuZHMoKS5oZWln
aHQoKSAqIGNvbnRlbnRzU2NhbGUoKSkpOworfQorCiBjbGFzcyBTY3JvbGxiYXJUaHVtYlBhaW50
ZXIgOiBwdWJsaWMgTGF5ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjcm9sbGJhclRodW1iUGFpbnRlcik7CiBwdWJsaWM6CkBAIC0yMjQsOCArMjM0LDEwIEBA
IHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydChMYXllclRleHR1cmVVcGRh
dGVyKiBwYWludGVyLCBMYXllclRleHR1CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBhaW50
IGFuZCB1cGxvYWQgdGhlIGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgo
KTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91
bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CiAgICAgSW50UmVjdCBwYWludGVk
T3BhcXVlUmVjdDsKLSAgICBwYWludGVyLT5wcmVwYXJlVG9VcGRhdGUocmVjdCwgcmVjdC5zaXpl
KCksIDEsIDEsIHBhaW50ZWRPcGFxdWVSZWN0LCBzdGF0cyk7CisgICAgcGFpbnRlci0+cHJlcGFy
ZVRvVXBkYXRlKHJlY3QsIHJlY3Quc2l6ZSgpLCB3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSwgcGFp
bnRlZE9wYXF1ZVJlY3QsIHN0YXRzKTsKICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChyZWN0LCBz
dGF0cyk7CiAKICAgICBJbnRTaXplIGRlc3RPZmZzZXQoMCwgMCk7CkBAIC0yNTEsOCArMjYzLDgg
QEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25z
dCBDQ1ByaW9yaXR5Q2FsY3VsYXRvciYpCiAgICAgICAgIG1fZm9yZVRyYWNrLT50ZXh0dXJlKCkt
PnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3
c1RvUm9vdCkpOwogICAgIH0KICAgICBpZiAobV90aHVtYikgewotICAgICAgICBXZWJLaXQ6Oldl
YlJlY3QgdGh1bWJSZWN0ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgp
KTsKLSAgICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKEludFNpemUodGh1
bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KSwgbV90ZXh0dXJlRm9ybWF0KTsKKyAgICAg
ICAgSW50U2l6ZSB0aHVtYlNpemUgPSBsYXllclJlY3RUb0NvbnRlbnRSZWN0KG1fZ2VvbWV0cnkt
PnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSkpLnNpemUoKTsKKyAgICAgICAgbV90aHVtYi0+
dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKHRodW1iU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKICAg
ICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNh
bGN1bGF0b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiB9CkBAIC0yNjUsMTQg
KzI3NywxNCBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVRdWV1ZSYgcXVldWUsIGNvbnN0IENDT2NjbHVzaQogICAgIGNyZWF0ZVRleHR1cmVVcGRh
dGVySWZOZWVkZWQoKTsKIAogICAgIEludFBvaW50IHNjcm9sbGJhck9yaWdpbihtX3Njcm9sbGJh
ci0+bG9jYXRpb24oKS54LCBtX3Njcm9sbGJhci0+bG9jYXRpb24oKS55KTsKLSAgICBJbnRSZWN0
IGNvbnRlbnRSZWN0KHNjcm9sbGJhck9yaWdpbiwgY29udGVudEJvdW5kcygpKTsKKyAgICBJbnRS
ZWN0IGNvbnRlbnRSZWN0ID0gbGF5ZXJSZWN0VG9Db250ZW50UmVjdChJbnRSZWN0KHNjcm9sbGJh
ck9yaWdpbiwgYm91bmRzKCkpKTsKICAgICB1cGRhdGVQYXJ0KG1fYmFja1RyYWNrVXBkYXRlci5n
ZXQoKSwgbV9iYWNrVHJhY2suZ2V0KCksIGNvbnRlbnRSZWN0LCBxdWV1ZSwgc3RhdHMpOwogICAg
IGlmIChtX2ZvcmVUcmFjayAmJiBtX2ZvcmVUcmFja1VwZGF0ZXIpCiAgICAgICAgIHVwZGF0ZVBh
cnQobV9mb3JlVHJhY2tVcGRhdGVyLmdldCgpLCBtX2ZvcmVUcmFjay5nZXQoKSwgY29udGVudFJl
Y3QsIHF1ZXVlLCBzdGF0cyk7CiAKICAgICAvLyBDb25zaWRlciB0aGUgdGh1bWIgdG8gYmUgYXQg
dGhlIG9yaWdpbiB3aGVuIHBhaW50aW5nLgogICAgIFdlYktpdDo6V2ViUmVjdCB0aHVtYlJlY3Qg
PSBtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOwotICAgIEludFJlY3Qg
b3JpZ2luVGh1bWJSZWN0ID0gSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVj
dC5oZWlnaHQpOworICAgIEludFJlY3Qgb3JpZ2luVGh1bWJSZWN0ID0gbGF5ZXJSZWN0VG9Db250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCkp
OwogICAgIGlmICghb3JpZ2luVGh1bWJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdXBkYXRlUGFy
dChtX3RodW1iVXBkYXRlci5nZXQoKSwgbV90aHVtYi5nZXQoKSwgb3JpZ2luVGh1bWJSZWN0LCBx
dWV1ZSwgc3RhdHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDExNWZiNjYxMGZiMTEwZDM4NDAyMjdlNjE3N2EwNzBiMTkwODExNDkuLjU1NTZjYWJiNGNjOGUw
MTJkYzQ1ZGRmZDgxNzBhYjhlNDljMWIxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNo
cm9taXVtLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNjcm9sbGJhckxheWVyQ2hyb21pdW0+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Ny
b2xsYmFyPiwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiwgaW50IHNjcm9sbExheWVySWQpOwogCiAg
ICAgLy8gTGF5ZXJDaHJvbWl1bSBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250
ZW50c1NjYWxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRC
b3VuZHMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZVByaW9y
aXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCmluZGV4IDM4MDBiMDg3NmFkNTE5N2ViY2RlMmZiZmE0ZmU2YzI0M2QxY2JmYWYuLjcy
YTljZDU1YzNjNGViNmQ5OWExOGQ1MThlNmIwNzkzYmI1ZDQ2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKQEAgLTIzMSw2ICsyMzEsMTMgQEAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bFN0YXR1cyBDQ0xheWVySW1wbDo6dHJ5U2Nyb2xsKGNvbnN0IEludFBvaW50JiB2aWV3cG8KICAg
ICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ7CiB9CiAKK0ludFJl
Y3QgQ0NMYXllckltcGw6OmxheWVyUmVjdFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KQoreworICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29u
dGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWln
aHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8g
Ym91bmRzKCkuaGVpZ2h0KCk7CisgICAgcmV0dXJuIEludFJlY3QobGF5ZXJSZWN0LngoKSAqIHdp
ZHRoU2NhbGUsIGxheWVyUmVjdC55KCkgKiBoZWlnaHRTY2FsZSwgbGF5ZXJSZWN0LndpZHRoKCkg
KiB3aWR0aFNjYWxlLCBsYXllclJlY3QuaGVpZ2h0KCkgKiBoZWlnaHRTY2FsZSk7Cit9CisKIHZv
aWQgQ0NMYXllckltcGw6OndyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQog
ewogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggZjhhZDA2NzAxYTYwZWE5OGQwYmFjZTM4NWIwZDM3MTMzNDllMmRjZi4uNDkyOGQ0
M2Q3ZjlkODI2N2Q3ZTY3MGIzY2Y3ZmQxODBiODUxYjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC0yNzgsNiArMjc4LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBhcHBlbmREZWJ1Z0Jv
cmRlclF1YWQoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgQ0NBcHBlbmRR
dWFkc0RhdGEmKSBjb25zdDsKIAorICAgIEludFJlY3QgbGF5ZXJSZWN0VG9Db250ZW50UmVjdChj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclBy
b3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lk
IHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IDgwNGQ2ZmZkOGFjOGQxNjc4MTJhNjUzYWQ5
M2ExN2NjN2VkNmJlZGUuLjFkZjg4NmNmNWIxZDk5YTQxNGU5NDBlNTg3MDMzZTY1ZjFiNjFkMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmCiAgICAgICAgIHRodW1iUmVjdCA9IFdlYlJl
Y3QoKTsKIAogICAgIGlmIChtX3RodW1iUmVzb3VyY2VJZCAmJiAhdGh1bWJSZWN0LmlzRW1wdHko
KSkgewotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCh0aHVtYlJlY3QueCwgdGh1
bWJSZWN0LnksIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGh1bWJSZXNv
dXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3du
UHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIGxheWVyUmVjdFRvQ29udGVudFJlY3QodGh1bWJSZWN0KSwgbV90aHVt
YlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAg
ICBxdWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7CiAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChxdWFk
LnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAg
dm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNp
bmssIENDQXBwZW5kUXVhZHNEYXRhJgogCiAgICAgLy8gV2Ugb25seSBwYWludCB0aGUgdHJhY2sg
aW4gdHdvIHBhcnRzIGlmIHdlIHdlcmUgZ2l2ZW4gYSB0ZXh0dXJlIGZvciB0aGUgZm9yd2FyZCB0
cmFjayBwYXJ0LgogICAgIGlmIChtX2ZvcmVUcmFja1Jlc291cmNlSWQgJiYgIWZvcmVUcmFja1Jl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoZm9yZVRyYWNrUmVjdC54LCBmb3JlVHJh
Y2tSZWN0LnksIGZvcmVUcmFja1JlY3Qud2lkdGgsIGZvcmVUcmFja1JlY3QuaGVpZ2h0KSwgbV9m
b3JlVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNr
UmVjdCwgYm91bmRzUmVjdCksIGZsaXBwZWQpLCBhcHBlbmRRdWFkc0RhdGEpOworICAgICAgICBx
dWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IGxheWVyUmVjdFRvQ29udGVudFJlY3QoZm9yZVRyYWNrUmVjdCksIG1fZm9yZVRyYWNrUmVzb3Vy
Y2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1Jl
Y3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsKIAogICAgIC8vIE9yZGVyIG1hdHRlcnMg
aGVyZTogc2luY2UgdGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0aGUg
ZW50aXJlIGNvbnRlbnRzIHJlY3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBh
bmQKICAgICAvLyBmb3JlIHRyYWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNvbnRh
aW5zIChhbmQgZGlzcGxheXMpIHRoZSBidXR0b25zLgpAQCAtMTQ5LDcgKzE0OSw3IEBAIFdlYktp
dDo6V2ViUG9pbnQgQ0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyOjpsb2NhdGlvbigp
IGNvbnN0CiAKIFdlYktpdDo6V2ViU2l6ZSBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxi
YXI6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUobV9vd25lci0+
Y29udGVudEJvdW5kcygpLndpZHRoKCksIG1fb3duZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViU2l6ZShtX293bmVyLT5ib3VuZHMoKS53aWR0aCgp
LCBtX293bmVyLT5ib3VuZHMoKS5oZWlnaHQoKSk7CiB9CiAKIGJvb2wgQ0NTY3JvbGxiYXJMYXll
ckltcGw6OkNDU2Nyb2xsYmFyOjplbmFibGVkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163517</attachid>
            <date>2012-09-11 21:50:03 -0700</date>
            <delta_ts>2012-09-12 05:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120912004937.patch</filename>
            <type>text/plain</type>
            <size>11406</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMzOTYzZWMzNmI0OWVl
MDVjN2MyYTY1YzhmMGE2ODRmM2UzNjA3OC4uNDg2NmFhZWViMTQ4ZGI2MjA0Mjk0ODg2NTI0OWRl
YWUzMmU2NzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA2ICBSb2Jl
cnQgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbGJhckxheWVyQ2hy
b21pdW0gaXMgdXBkYXRlZCB0byB1c2UgY29udGVudCBzY2FsZSB0byBkcmF3IGEgaGlnaCByZXMg
c2Nyb2xsYmFyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZSBwb3NpdGlvbmluZyBvZiB0aGUgc2Nyb2xsYmFyIGRvZXMgbm90IGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSk6CisKIDIwMTItMDktMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dW1JlZmFjdG9y
aW5nXSBFbGVtZW50IHN1YmNsYXNzZXMgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVqZWN0IGF1dGhv
ciBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyNDE4ZmRlZDc2M2ZlYTQ4NTQ3
MTFiODNiN2ZiMDJlZjdkMGQ1OTA0Li4yYTRiYjBiODBlZjI3NmNlMmJhMGYyODdkNWRmNTJjNzE0
ZjA5ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTQzLDYgKzE0MywxNSBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCitJbnRSZWN0IExheWVyQ2hyb21pdW06OmxheWVyUmVj
dFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisgICAg
RmxvYXRSZWN0IGNvbnRlbnRSZWN0KGxheWVyUmVjdCk7CisgICAgY29udGVudFJlY3Quc2NhbGUo
d2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOworICAgIHJldHVybiByb3VuZGVkSW50UmVjdChjb250
ZW50UmVjdCk7Cit9CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0UGFyZW50KExheWVyQ2hyb21p
dW0qIGxheWVyKQogewogICAgIEFTU0VSVCghbGF5ZXIgfHwgIWxheWVyLT5oYXNBbmNlc3Rvcih0
aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZWUwZWE3NzU2YTVlZjM4NzVjY2ExNDZlYzEx
YjExMDcwNmY1ODQyYy4uNTFlZTAwMTRhNzE4NmViYmM2Y2M5NzYwODNlZGM0YzMyZDk3YzRmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjkyLDYgKzI5Miw4IEBAIHByb3RlY3RlZDoKIAogICAg
IHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIEludFJlY3QgbGF5ZXJSZWN0VG9Db250ZW50
UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAgICAgLy8gVGhpcyBmbGFnIGlzIHNl
dCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGluZy91cGRhdGluZy4KICAgICBib29sIG1fbmVlZHNE
aXNwbGF5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVm
ZjE0ZGRmZGJjOTc4OTc2NDA2OGIwNWJjZDYxMmMyMTFlNWFjYTEuLjc0NTFkZDVjZGU2ODBkMjUz
MmM2NzlhOWIyN2VlOWI3YzE3YmRhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uY3BwCkBAIC0xNDIsNiArMTQyLDE2IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJT
Y3JvbGxiYXI6OlNjcm9sbGJhclBhcnQgbV90cmFja1BhcnQ7CiB9OwogCitib29sIFNjcm9sbGJh
ckxheWVyQ2hyb21pdW06Om5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK0ludFNpemUgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5k
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUobHJvdW5kZihib3VuZHMoKS53aWR0aCgp
ICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5kZihib3VuZHMoKS5oZWlnaHQoKSAqIGNvbnRlbnRz
U2NhbGUoKSkpOworfQorCiBjbGFzcyBTY3JvbGxiYXJUaHVtYlBhaW50ZXIgOiBwdWJsaWMgTGF5
ZXJQYWludGVyQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGJhclRo
dW1iUGFpbnRlcik7CiBwdWJsaWM6CkBAIC0yMjQsOCArMjM0LDEwIEBAIHZvaWQgU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydChMYXllclRleHR1cmVVcGRhdGVyKiBwYWludGVyLCBM
YXllclRleHR1CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFBhaW50IGFuZCB1cGxvYWQgdGhl
IGVudGlyZSBwYXJ0LgorICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29udGVudEJvdW5kcygpLndpZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBo
ZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkp
IC8gYm91bmRzKCkuaGVpZ2h0KCk7CiAgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAg
ICBwYWludGVyLT5wcmVwYXJlVG9VcGRhdGUocmVjdCwgcmVjdC5zaXplKCksIDEsIDEsIHBhaW50
ZWRPcGFxdWVSZWN0LCBzdGF0cyk7CisgICAgcGFpbnRlci0+cHJlcGFyZVRvVXBkYXRlKHJlY3Qs
IHJlY3Quc2l6ZSgpLCB3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSwgcGFpbnRlZE9wYXF1ZVJlY3Qs
IHN0YXRzKTsKICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChyZWN0LCBzdGF0cyk7CiAKICAgICBJ
bnRTaXplIGRlc3RPZmZzZXQoMCwgMCk7CkBAIC0yNTEsOCArMjYzLDggQEAgdm9pZCBTY3JvbGxi
YXJMYXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25zdCBDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvciYpCiAgICAgICAgIG1fZm9yZVRyYWNrLT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlv
cml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQcmlvcml0eShkcmF3c1RvUm9vdCkpOwogICAg
IH0KICAgICBpZiAobV90aHVtYikgewotICAgICAgICBXZWJLaXQ6OldlYlJlY3QgdGh1bWJSZWN0
ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsKLSAgICAgICAgbV90
aHVtYi0+dGV4dHVyZSgpLT5zZXREaW1lbnNpb25zKEludFNpemUodGh1bWJSZWN0LndpZHRoLCB0
aHVtYlJlY3QuaGVpZ2h0KSwgbV90ZXh0dXJlRm9ybWF0KTsKKyAgICAgICAgSW50U2l6ZSB0aHVt
YlNpemUgPSBsYXllclJlY3RUb0NvbnRlbnRSZWN0KG1fZ2VvbWV0cnktPnRodW1iUmVjdChtX3Nj
cm9sbGJhci5nZXQoKSkpLnNpemUoKTsKKyAgICAgICAgbV90aHVtYi0+dGV4dHVyZSgpLT5zZXRE
aW1lbnNpb25zKHRodW1iU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KTsKICAgICAgICAgbV90aHVtYi0+
dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJp
b3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiB9CkBAIC0yNjUsMTQgKzI3NywxNCBAQCB2b2lk
IFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgcXVl
dWUsIGNvbnN0IENDT2NjbHVzaQogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsK
IAogICAgIEludFBvaW50IHNjcm9sbGJhck9yaWdpbihtX3Njcm9sbGJhci0+bG9jYXRpb24oKS54
LCBtX3Njcm9sbGJhci0+bG9jYXRpb24oKS55KTsKLSAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KHNj
cm9sbGJhck9yaWdpbiwgY29udGVudEJvdW5kcygpKTsKKyAgICBJbnRSZWN0IGNvbnRlbnRSZWN0
ID0gbGF5ZXJSZWN0VG9Db250ZW50UmVjdChJbnRSZWN0KHNjcm9sbGJhck9yaWdpbiwgYm91bmRz
KCkpKTsKICAgICB1cGRhdGVQYXJ0KG1fYmFja1RyYWNrVXBkYXRlci5nZXQoKSwgbV9iYWNrVHJh
Y2suZ2V0KCksIGNvbnRlbnRSZWN0LCBxdWV1ZSwgc3RhdHMpOwogICAgIGlmIChtX2ZvcmVUcmFj
ayAmJiBtX2ZvcmVUcmFja1VwZGF0ZXIpCiAgICAgICAgIHVwZGF0ZVBhcnQobV9mb3JlVHJhY2tV
cGRhdGVyLmdldCgpLCBtX2ZvcmVUcmFjay5nZXQoKSwgY29udGVudFJlY3QsIHF1ZXVlLCBzdGF0
cyk7CiAKICAgICAvLyBDb25zaWRlciB0aGUgdGh1bWIgdG8gYmUgYXQgdGhlIG9yaWdpbiB3aGVu
IHBhaW50aW5nLgogICAgIFdlYktpdDo6V2ViUmVjdCB0aHVtYlJlY3QgPSBtX2dlb21ldHJ5LT50
aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOwotICAgIEludFJlY3Qgb3JpZ2luVGh1bWJSZWN0
ID0gSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVjdC5oZWlnaHQpOworICAg
IEludFJlY3Qgb3JpZ2luVGh1bWJSZWN0ID0gbGF5ZXJSZWN0VG9Db250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCkpOwogICAgIGlmICghb3Jp
Z2luVGh1bWJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdXBkYXRlUGFydChtX3RodW1iVXBkYXRl
ci5nZXQoKSwgbV90aHVtYi5nZXQoKSwgb3JpZ2luVGh1bWJSZWN0LCBxdWV1ZSwgc3RhdHMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDExNWZiNjYxMGZiMTEw
ZDM4NDAyMjdlNjE3N2EwNzBiMTkwODExNDkuLjU1NTZjYWJiNGNjOGUwMTJkYzQ1ZGRmZDgxNzBh
YjhlNDljMWIxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgKQEAgLTQ2
LDYgKzQ2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckxheWVy
Q2hyb21pdW0+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwgV2ViS2l0
OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5PiwgaW50IHNjcm9sbExheWVySWQpOwogCiAgICAgLy8gTGF5ZXJDaHJv
bWl1bSBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQ
cmlvcml0eUNhbGN1bGF0b3ImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKEND
VGV4dHVyZVVwZGF0ZVF1ZXVlJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiwgQ0NSZW5kZXJp
bmdTdGF0cyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KEND
TGF5ZXJUcmVlSG9zdCopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDM4
MDBiMDg3NmFkNTE5N2ViY2RlMmZiZmE0ZmU2YzI0M2QxY2JmYWYuLjYzYjk1NzgxMjM2ODc4YTU4
NTMxYzNiNzA0NmM1YzkzODg5YjkwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTIz
MSw2ICsyMzEsMTUgQEAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVy
SW1wbDo6dHJ5U2Nyb2xsKGNvbnN0IEludFBvaW50JiB2aWV3cG8KICAgICByZXR1cm4gQ0NJbnB1
dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQ7CiB9CiAKK0ludFJlY3QgQ0NMYXllckltcGw6
OmxheWVyUmVjdFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAg
IGZsb2F0IHdpZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndp
ZHRoKCkpIC8gYm91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRp
Y19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0
KCk7CisgICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0KGxheWVyUmVjdCk7CisgICAgY29udGVudFJl
Y3Quc2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOworICAgIHJldHVybiByb3VuZGVkSW50
UmVjdChjb250ZW50UmVjdCk7Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OndyaXRlSW5kZW50KFRl
eHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGlu
ZGVudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggZjhhZDA2NzAxYTYwZWE5OGQwYmFj
ZTM4NWIwZDM3MTMzNDllMmRjZi4uNDkyOGQ0M2Q3ZjlkODI2N2Q3ZTY3MGIzY2Y3ZmQxODBiODUx
YjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0yNzgsNiArMjc4LDggQEAgcHJvdGVjdGVk
OgogCiAgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkU2luayYsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKSBjb25zdDsKIAorICAgIEludFJl
Y3QgbGF5ZXJSZWN0VG9Db250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRl
bnQpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQg
aW5kZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4
IDgwNGQ2ZmZkOGFjOGQxNjc4MTJhNjUzYWQ5M2ExN2NjN2VkNmJlZGUuLjFkZjg4NmNmNWIxZDk5
YTQxNGU5NDBlNTg3MDMzZTY1ZjFiNjFkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJh
ckxheWVySW1wbC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEm
CiAgICAgICAgIHRodW1iUmVjdCA9IFdlYlJlY3QoKTsKIAogICAgIGlmIChtX3RodW1iUmVzb3Vy
Y2VJZCAmJiAhdGh1bWJSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8Q0NUZXh0dXJl
RHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0
ZSwgSW50UmVjdCh0aHVtYlJlY3QueCwgdGh1bWJSZWN0LnksIHRodW1iUmVjdC53aWR0aCwgdGh1
bWJSZWN0LmhlaWdodCksIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0g
Q0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGxheWVyUmVjdFRvQ29u
dGVudFJlY3QodGh1bWJSZWN0KSwgbV90aHVtYlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhh
LCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAgICBxdWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7CiAg
ICAgICAgIHF1YWRTaW5rLmFwcGVuZChxdWFkLnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsK
ICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJgogCiAgICAg
Ly8gV2Ugb25seSBwYWludCB0aGUgdHJhY2sgaW4gdHdvIHBhcnRzIGlmIHdlIHdlcmUgZ2l2ZW4g
YSB0ZXh0dXJlIGZvciB0aGUgZm9yd2FyZCB0cmFjayBwYXJ0LgogICAgIGlmIChtX2ZvcmVUcmFj
a1Jlc291cmNlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBxdWFkU2lu
ay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJl
Y3QoZm9yZVRyYWNrUmVjdC54LCBmb3JlVHJhY2tSZWN0LnksIGZvcmVUcmFja1JlY3Qud2lkdGgs
IGZvcmVUcmFja1JlY3QuaGVpZ2h0KSwgbV9mb3JlVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBs
ZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwgYm91bmRzUmVjdCksIGZsaXBwZWQpLCBh
cHBlbmRRdWFkc0RhdGEpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGxheWVyUmVjdFRvQ29udGVudFJlY3QoZm9yZVRy
YWNrUmVjdCksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZS
ZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRh
KTsKIAogICAgIC8vIE9yZGVyIG1hdHRlcnMgaGVyZTogc2luY2UgdGhlIGJhY2sgdHJhY2sgdGV4
dHVyZSBpcyBiZWluZyBkcmF3biB0byB0aGUgZW50aXJlIGNvbnRlbnRzIHJlY3QsIHdlIG11c3Qg
YXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBhbmQKICAgICAvLyBmb3JlIHRyYWNrIHF1YWRzLiBU
aGUgYmFjayB0cmFjayB0ZXh0dXJlIGNvbnRhaW5zIChhbmQgZGlzcGxheXMpIHRoZSBidXR0b25z
LgpAQCAtMTQ5LDcgKzE0OSw3IEBAIFdlYktpdDo6V2ViUG9pbnQgQ0NTY3JvbGxiYXJMYXllcklt
cGw6OkNDU2Nyb2xsYmFyOjpsb2NhdGlvbigpIGNvbnN0CiAKIFdlYktpdDo6V2ViU2l6ZSBDQ1Nj
cm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxiYXI6OnNpemUoKSBjb25zdAogewotICAgIHJldHVy
biBXZWJLaXQ6OldlYlNpemUobV9vd25lci0+Y29udGVudEJvdW5kcygpLndpZHRoKCksIG1fb3du
ZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViU2l6
ZShtX293bmVyLT5ib3VuZHMoKS53aWR0aCgpLCBtX293bmVyLT5ib3VuZHMoKS5oZWlnaHQoKSk7
CiB9CiAKIGJvb2wgQ0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyOjplbmFibGVkKCkg
Y29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163604</attachid>
            <date>2012-09-12 05:38:39 -0700</date>
            <delta_ts>2012-09-13 11:28:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120912083813.patch</filename>
            <type>text/plain</type>
            <size>11721</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMzOTYzZWMzNmI0OWVl
MDVjN2MyYTY1YzhmMGE2ODRmM2UzNjA3OC4uNDg2NmFhZWViMTQ4ZGI2MjA0Mjk0ODg2NTI0OWRl
YWUzMmU2NzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA2ICBSb2Jl
cnQgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbGJhckxheWVyQ2hy
b21pdW0gaXMgdXBkYXRlZCB0byB1c2UgY29udGVudCBzY2FsZSB0byBkcmF3IGEgaGlnaCByZXMg
c2Nyb2xsYmFyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZSBwb3NpdGlvbmluZyBvZiB0aGUgc2Nyb2xsYmFyIGRvZXMgbm90IGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSk6CisKIDIwMTItMDktMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dW1JlZmFjdG9y
aW5nXSBFbGVtZW50IHN1YmNsYXNzZXMgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVqZWN0IGF1dGhv
ciBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyNDE4ZmRlZDc2M2ZlYTQ4NTQ3
MTFiODNiN2ZiMDJlZjdkMGQ1OTA0Li5iZGYyZDQwZDYzZGU2ODA2ZDgxYmE0NWE5YzZlOGYxZjhj
YTNlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTQzLDYgKzE0MywxNSBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCitJbnRSZWN0IExheWVyQ2hyb21pdW06OmxheWVyUmVj
dFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisgICAg
RmxvYXRSZWN0IGNvbnRlbnRSZWN0KGxheWVyUmVjdCk7CisgICAgY29udGVudFJlY3Quc2NhbGUo
d2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGNv
bnRlbnRSZWN0KTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRQYXJlbnQoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFsYXllciB8fCAhbGF5ZXItPmhhc0FuY2VzdG9y
KHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBlZTBlYTc3NTZhNWVmMzg3NWNjYTE0NmVj
MTFiMTEwNzA2ZjU4NDJjLi41MWVlMDAxNGE3MTg2ZWJiYzZjYzk3NjA4M2VkYzRjMzJkOTdjNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yOTIsNiArMjkyLDggQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgSW50UmVjdCBsYXllclJlY3RUb0NvbnRl
bnRSZWN0KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisKICAgICAvLyBUaGlzIGZsYWcgaXMg
c2V0IHdoZW4gbGF5ZXIgbmVlZCByZXBhaW50aW5nL3VwZGF0aW5nLgogICAgIGJvb2wgbV9uZWVk
c0Rpc3BsYXk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
ZWZmMTRkZGZkYmM5Nzg5NzY0MDY4YjA1YmNkNjEyYzIxMWU1YWNhMS4uNzg3NzI1ZTcyMGJjYjdl
ODllY2EzMDZmMDg5YjU2MGYwNWM3ZDEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6U2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPgogICAg
ICwgbV9zY3JvbGxMYXllcklkKHNjcm9sbExheWVySWQpCiAgICAgLCBtX3RleHR1cmVGb3JtYXQo
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSkKIHsKKyAgICB0aGlzLT5zZXRCb3VuZHND
b250YWluUGFnZVNjYWxlKHRydWUpOwogfQogCiB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTQyLDYgKzE0MywxNiBA
QCBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyOjpTY3JvbGxiYXJQYXJ0IG1fdHJh
Y2tQYXJ0OwogfTsKIAorYm9vbCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpuZWVkc0NvbnRlbnRz
U2NhbGUoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitJbnRTaXplIFNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OmNvbnRlbnRCb3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBJbnRT
aXplKGxyb3VuZGYoYm91bmRzKCkud2lkdGgoKSAqIGNvbnRlbnRzU2NhbGUoKSksIGxyb3VuZGYo
Ym91bmRzKCkuaGVpZ2h0KCkgKiBjb250ZW50c1NjYWxlKCkpKTsKK30KKwogY2xhc3MgU2Nyb2xs
YmFyVGh1bWJQYWludGVyIDogcHVibGljIExheWVyUGFpbnRlckNocm9taXVtIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTY3JvbGxiYXJUaHVtYlBhaW50ZXIpOwogcHVibGljOgpAQCAtMjI0
LDggKzIzNSwxMCBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZVBhcnQoTGF5
ZXJUZXh0dXJlVXBkYXRlciogcGFpbnRlciwgTGF5ZXJUZXh0dQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBQYWludCBhbmQgdXBsb2FkIHRoZSBlbnRpcmUgcGFydC4KKyAgICBmbG9hdCB3aWR0
aFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSAvIGJv
dW5kcygpLndpZHRoKCk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9h
dD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKSAvIGJvdW5kcygpLmhlaWdodCgpOwogICAgIElu
dFJlY3QgcGFpbnRlZE9wYXF1ZVJlY3Q7Ci0gICAgcGFpbnRlci0+cHJlcGFyZVRvVXBkYXRlKHJl
Y3QsIHJlY3Quc2l6ZSgpLCAxLCAxLCBwYWludGVkT3BhcXVlUmVjdCwgc3RhdHMpOworICAgIHBh
aW50ZXItPnByZXBhcmVUb1VwZGF0ZShyZWN0LCByZWN0LnNpemUoKSwgd2lkdGhTY2FsZSwgaGVp
Z2h0U2NhbGUsIHBhaW50ZWRPcGFxdWVSZWN0LCBzdGF0cyk7CiAgICAgdGV4dHVyZS0+cHJlcGFy
ZVJlY3QocmVjdCwgc3RhdHMpOwogCiAgICAgSW50U2l6ZSBkZXN0T2Zmc2V0KDAsIDApOwpAQCAt
MjUxLDggKzI2NCw4IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVBy
aW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogICAgICAgICBtX2ZvcmVUcmFj
ay0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVp
UHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiAgICAgaWYgKG1fdGh1bWIpIHsKLSAgICAg
ICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRodW1iUmVjdChtX3Nj
cm9sbGJhci5nZXQoKSk7Ci0gICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0RGltZW5zaW9u
cyhJbnRTaXplKHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGV4dHVyZUZv
cm1hdCk7CisgICAgICAgIEludFNpemUgdGh1bWJTaXplID0gbGF5ZXJSZWN0VG9Db250ZW50UmVj
dChtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpKS5zaXplKCk7CisgICAg
ICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0RGltZW5zaW9ucyh0aHVtYlNpemUsIG1fdGV4dHVy
ZUZvcm1hdCk7CiAgICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5
KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5KGRyYXdzVG9Sb290KSk7CiAgICAgfQog
fQpAQCAtMjY1LDE0ICsyNzgsMTQgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRh
dGUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlLCBjb25zdCBDQ09jY2x1c2kKICAgICBjcmVh
dGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAKICAgICBJbnRQb2ludCBzY3JvbGxiYXJPcmln
aW4obV9zY3JvbGxiYXItPmxvY2F0aW9uKCkueCwgbV9zY3JvbGxiYXItPmxvY2F0aW9uKCkueSk7
Ci0gICAgSW50UmVjdCBjb250ZW50UmVjdChzY3JvbGxiYXJPcmlnaW4sIGNvbnRlbnRCb3VuZHMo
KSk7CisgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IGxheWVyUmVjdFRvQ29udGVudFJlY3QoSW50
UmVjdChzY3JvbGxiYXJPcmlnaW4sIGJvdW5kcygpKSk7CiAgICAgdXBkYXRlUGFydChtX2JhY2tU
cmFja1VwZGF0ZXIuZ2V0KCksIG1fYmFja1RyYWNrLmdldCgpLCBjb250ZW50UmVjdCwgcXVldWUs
IHN0YXRzKTsKICAgICBpZiAobV9mb3JlVHJhY2sgJiYgbV9mb3JlVHJhY2tVcGRhdGVyKQogICAg
ICAgICB1cGRhdGVQYXJ0KG1fZm9yZVRyYWNrVXBkYXRlci5nZXQoKSwgbV9mb3JlVHJhY2suZ2V0
KCksIGNvbnRlbnRSZWN0LCBxdWV1ZSwgc3RhdHMpOwogCiAgICAgLy8gQ29uc2lkZXIgdGhlIHRo
dW1iIHRvIGJlIGF0IHRoZSBvcmlnaW4gd2hlbiBwYWludGluZy4KICAgICBXZWJLaXQ6OldlYlJl
Y3QgdGh1bWJSZWN0ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsK
LSAgICBJbnRSZWN0IG9yaWdpblRodW1iUmVjdCA9IEludFJlY3QoMCwgMCwgdGh1bWJSZWN0Lndp
ZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KTsKKyAgICBJbnRSZWN0IG9yaWdpblRodW1iUmVjdCA9IGxh
eWVyUmVjdFRvQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCB0aHVtYlJlY3Qud2lkdGgsIHRodW1i
UmVjdC5oZWlnaHQpKTsKICAgICBpZiAoIW9yaWdpblRodW1iUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHVwZGF0ZVBhcnQobV90aHVtYlVwZGF0ZXIuZ2V0KCksIG1fdGh1bWIuZ2V0KCksIG9yaWdp
blRodW1iUmVjdCwgcXVldWUsIHN0YXRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uaAppbmRleCAxMTVmYjY2MTBmYjExMGQzODQwMjI3ZTYxNzdhMDcwYjE5MDgxMTQ5Li41
NTU2Y2FiYjRjYzhlMDEyZGM0NWRkZmQ4MTcwYWI4ZTQ5YzFiMTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bS5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXJMYXllckNocm9taXVtPiBjcmVhdGUoUGFzc093blB0cjxX
ZWJLaXQ6OldlYlNjcm9sbGJhcj4sIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBQ
YXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4sIGludCBzY3JvbGxM
YXllcklkKTsKIAogICAgIC8vIExheWVyQ2hyb21pdW0gaW50ZXJmYWNlCisgICAgdmlydHVhbCBi
b29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50
U2l6ZSBjb250ZW50Qm91bmRzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlDYWxjdWxhdG9yJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAzODAwYjA4NzZhZDUxOTdlYmNkZTJmYmZhNGZlNmMy
NDNkMWNiZmFmLi5jZjVmOGQ5ZTU2NzlkZmIyZDJjNzIyY2YzMTcyMmI0YmFlZmQ4NjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yMzEsNiArMjMxLDE1IEBAIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllckltcGw6OnRyeVNjcm9sbChjb25zdCBJbnRQb2lu
dCYgdmlld3BvCiAgICAgcmV0dXJuIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVk
OwogfQogCitJbnRSZWN0IENDTGF5ZXJJbXBsOjpsYXllclJlY3RUb0NvbnRlbnRSZWN0KGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCkKK3sKKyAgICBmbG9hdCB3aWR0aFNjYWxlID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSAvIGJvdW5kcygpLndpZHRoKCk7Cisg
ICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygp
LmhlaWdodCgpKSAvIGJvdW5kcygpLmhlaWdodCgpOworICAgIEZsb2F0UmVjdCBjb250ZW50UmVj
dChsYXllclJlY3QpOworICAgIGNvbnRlbnRSZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNj
YWxlKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChjb250ZW50UmVjdCk7Cit9CisKIHZv
aWQgQ0NMYXllckltcGw6OndyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQog
ewogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggZjhhZDA2NzAxYTYwZWE5OGQwYmFjZTM4NWIwZDM3MTMzNDllMmRjZi4uNDkyOGQ0
M2Q3ZjlkODI2N2Q3ZTY3MGIzY2Y3ZmQxODBiODUxYjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC0yNzgsNiArMjc4LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBhcHBlbmREZWJ1Z0Jv
cmRlclF1YWQoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgQ0NBcHBlbmRR
dWFkc0RhdGEmKSBjb25zdDsKIAorICAgIEludFJlY3QgbGF5ZXJSZWN0VG9Db250ZW50UmVjdChj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclBy
b3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lk
IHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IDgwNGQ2ZmZkOGFjOGQxNjc4MTJhNjUzYWQ5
M2ExN2NjN2VkNmJlZGUuLjFkZjg4NmNmNWIxZDk5YTQxNGU5NDBlNTg3MDMzZTY1ZjFiNjFkMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmCiAgICAgICAgIHRodW1iUmVjdCA9IFdlYlJl
Y3QoKTsKIAogICAgIGlmIChtX3RodW1iUmVzb3VyY2VJZCAmJiAhdGh1bWJSZWN0LmlzRW1wdHko
KSkgewotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCh0aHVtYlJlY3QueCwgdGh1
bWJSZWN0LnksIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGh1bWJSZXNv
dXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3du
UHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIGxheWVyUmVjdFRvQ29udGVudFJlY3QodGh1bWJSZWN0KSwgbV90aHVt
YlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAg
ICBxdWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7CiAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChxdWFk
LnJlbGVhc2UoKSwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAg
dm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNp
bmssIENDQXBwZW5kUXVhZHNEYXRhJgogCiAgICAgLy8gV2Ugb25seSBwYWludCB0aGUgdHJhY2sg
aW4gdHdvIHBhcnRzIGlmIHdlIHdlcmUgZ2l2ZW4gYSB0ZXh0dXJlIGZvciB0aGUgZm9yd2FyZCB0
cmFjayBwYXJ0LgogICAgIGlmIChtX2ZvcmVUcmFja1Jlc291cmNlSWQgJiYgIWZvcmVUcmFja1Jl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoZm9yZVRyYWNrUmVjdC54LCBmb3JlVHJh
Y2tSZWN0LnksIGZvcmVUcmFja1JlY3Qud2lkdGgsIGZvcmVUcmFja1JlY3QuaGVpZ2h0KSwgbV9m
b3JlVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNr
UmVjdCwgYm91bmRzUmVjdCksIGZsaXBwZWQpLCBhcHBlbmRRdWFkc0RhdGEpOworICAgICAgICBx
dWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IGxheWVyUmVjdFRvQ29udGVudFJlY3QoZm9yZVRyYWNrUmVjdCksIG1fZm9yZVRyYWNrUmVzb3Vy
Y2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1Jl
Y3QpLCBmbGlwcGVkKSwgYXBwZW5kUXVhZHNEYXRhKTsKIAogICAgIC8vIE9yZGVyIG1hdHRlcnMg
aGVyZTogc2luY2UgdGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0aGUg
ZW50aXJlIGNvbnRlbnRzIHJlY3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBh
bmQKICAgICAvLyBmb3JlIHRyYWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNvbnRh
aW5zIChhbmQgZGlzcGxheXMpIHRoZSBidXR0b25zLgpAQCAtMTQ5LDcgKzE0OSw3IEBAIFdlYktp
dDo6V2ViUG9pbnQgQ0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyOjpsb2NhdGlvbigp
IGNvbnN0CiAKIFdlYktpdDo6V2ViU2l6ZSBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxi
YXI6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUobV9vd25lci0+
Y29udGVudEJvdW5kcygpLndpZHRoKCksIG1fb3duZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViU2l6ZShtX293bmVyLT5ib3VuZHMoKS53aWR0aCgp
LCBtX293bmVyLT5ib3VuZHMoKS5oZWlnaHQoKSk7CiB9CiAKIGJvb2wgQ0NTY3JvbGxiYXJMYXll
ckltcGw6OkNDU2Nyb2xsYmFyOjplbmFibGVkKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163918</attachid>
            <date>2012-09-13 11:28:34 -0700</date>
            <delta_ts>2012-09-18 13:07:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120913142806.patch</filename>
            <type>text/plain</type>
            <size>13373</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWMzOTYzZWMzNmI0OWVl
MDVjN2MyYTY1YzhmMGE2ODRmM2UzNjA3OC4uNDg2NmFhZWViMTQ4ZGI2MjA0Mjk0ODg2NTI0OWRl
YWUzMmU2NzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTA2ICBSb2Jl
cnQgRmxhY2sgIDxmbGFja3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vw
cG9ydCBoaWdoIERQSSBzY3JvbGwgYmFyIG9uIHRvcCBsZXZlbCB3ZWIgZnJhbWUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbGJhckxheWVyQ2hy
b21pdW0gaXMgdXBkYXRlZCB0byB1c2UgY29udGVudCBzY2FsZSB0byBkcmF3IGEgaGlnaCByZXMg
c2Nyb2xsYmFyIHdoZW4gYXBwcm9wcmlhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRo
ZSBwb3NpdGlvbmluZyBvZiB0aGUgc2Nyb2xsYmFyIGRvZXMgbm90IGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50
c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
ckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6c2l6ZSk6CisKIDIwMTItMDktMDYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dW1JlZmFjdG9y
aW5nXSBFbGVtZW50IHN1YmNsYXNzZXMgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVqZWN0IGF1dGhv
ciBzaGFkb3dzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyNDE4ZmRlZDc2M2ZlYTQ4NTQ3
MTFiODNiN2ZiMDJlZjdkMGQ1OTA0Li5iZGYyZDQwZDYzZGU2ODA2ZDgxYmE0NWE5YzZlOGYxZjhj
YTNlZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMTQzLDYgKzE0MywxNSBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldE5lZWRzQ29tbWl0KCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXROZWVkc0NvbW1pdCgpOwogfQogCitJbnRSZWN0IExheWVyQ2hyb21pdW06OmxheWVyUmVj
dFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGZsb2F0IHdp
ZHRoU2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpIC8g
Ym91bmRzKCkud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpIC8gYm91bmRzKCkuaGVpZ2h0KCk7CisgICAg
RmxvYXRSZWN0IGNvbnRlbnRSZWN0KGxheWVyUmVjdCk7CisgICAgY29udGVudFJlY3Quc2NhbGUo
d2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGNv
bnRlbnRSZWN0KTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRQYXJlbnQoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFsYXllciB8fCAhbGF5ZXItPmhhc0FuY2VzdG9y
KHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBlZTBlYTc3NTZhNWVmMzg3NWNjYTE0NmVj
MTFiMTEwNzA2ZjU4NDJjLi41MWVlMDAxNGE3MTg2ZWJiYzZjYzk3NjA4M2VkYzRjMzJkOTdjNGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yOTIsNiArMjkyLDggQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgSW50UmVjdCBsYXllclJlY3RUb0NvbnRl
bnRSZWN0KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisKICAgICAvLyBUaGlzIGZsYWcgaXMg
c2V0IHdoZW4gbGF5ZXIgbmVlZCByZXBhaW50aW5nL3VwZGF0aW5nLgogICAgIGJvb2wgbV9uZWVk
c0Rpc3BsYXk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
ZWZmMTRkZGZkYmM5Nzg5NzY0MDY4YjA1YmNkNjEyYzIxMWU1YWNhMS4uNzQ1MWRkNWNkZTY4MGQy
NTMyYzY3OWE5YjI3ZWU5YjdjMTdiZGE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTE0Miw2ICsxNDIsMTYgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6Oldl
YlNjcm9sbGJhcjo6U2Nyb2xsYmFyUGFydCBtX3RyYWNrUGFydDsKIH07CiAKK2Jvb2wgU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6bmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworSW50U2l6ZSBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjb250ZW50Qm91
bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRo
KCkgKiBjb250ZW50c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVu
dHNTY2FsZSgpKSk7Cit9CisKIGNsYXNzIFNjcm9sbGJhclRodW1iUGFpbnRlciA6IHB1YmxpYyBM
YXllclBhaW50ZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nyb2xsYmFy
VGh1bWJQYWludGVyKTsKIHB1YmxpYzoKQEAgLTIyNCw4ICsyMzQsMTAgQEAgdm9pZCBTY3JvbGxi
YXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHBhaW50ZXIs
IExheWVyVGV4dHUKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUGFpbnQgYW5kIHVwbG9hZCB0
aGUgZW50aXJlIHBhcnQuCisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0
Pihjb250ZW50Qm91bmRzKCkud2lkdGgoKSkgLyBib3VuZHMoKS53aWR0aCgpOworICAgIGZsb2F0
IGhlaWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQo
KSkgLyBib3VuZHMoKS5oZWlnaHQoKTsKICAgICBJbnRSZWN0IHBhaW50ZWRPcGFxdWVSZWN0Owot
ICAgIHBhaW50ZXItPnByZXBhcmVUb1VwZGF0ZShyZWN0LCByZWN0LnNpemUoKSwgMSwgMSwgcGFp
bnRlZE9wYXF1ZVJlY3QsIHN0YXRzKTsKKyAgICBwYWludGVyLT5wcmVwYXJlVG9VcGRhdGUocmVj
dCwgcmVjdC5zaXplKCksIHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlLCBwYWludGVkT3BhcXVlUmVj
dCwgc3RhdHMpOwogICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHJlY3QsIHN0YXRzKTsKIAogICAg
IEludFNpemUgZGVzdE9mZnNldCgwLCAwKTsKQEAgLTI1MSw4ICsyNjMsOCBAQCB2b2lkIFNjcm9s
bGJhckxheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlD
YWxjdWxhdG9yJikKICAgICAgICAgbV9mb3JlVHJhY2stPnRleHR1cmUoKS0+c2V0UmVxdWVzdFBy
aW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5KGRyYXdzVG9Sb290KSk7CiAg
ICAgfQogICAgIGlmIChtX3RodW1iKSB7Ci0gICAgICAgIFdlYktpdDo6V2ViUmVjdCB0aHVtYlJl
Y3QgPSBtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIuZ2V0KCkpOwotICAgICAgICBt
X3RodW1iLT50ZXh0dXJlKCktPnNldERpbWVuc2lvbnMoSW50U2l6ZSh0aHVtYlJlY3Qud2lkdGgs
IHRodW1iUmVjdC5oZWlnaHQpLCBtX3RleHR1cmVGb3JtYXQpOworICAgICAgICBJbnRTaXplIHRo
dW1iU2l6ZSA9IGxheWVyUmVjdFRvQ29udGVudFJlY3QobV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1f
c2Nyb2xsYmFyLmdldCgpKSkuc2l6ZSgpOworICAgICAgICBtX3RodW1iLT50ZXh0dXJlKCktPnNl
dERpbWVuc2lvbnModGh1bWJTaXplLCBtX3RleHR1cmVGb3JtYXQpOwogICAgICAgICBtX3RodW1i
LT50ZXh0dXJlKCktPnNldFJlcXVlc3RQcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6dWlQ
cmlvcml0eShkcmF3c1RvUm9vdCkpOwogICAgIH0KIH0KQEAgLTI2NSwxNCArMjc3LDE0IEBAIHZv
aWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBx
dWV1ZSwgY29uc3QgQ0NPY2NsdXNpCiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgp
OwogCiAgICAgSW50UG9pbnQgc2Nyb2xsYmFyT3JpZ2luKG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigp
LngsIG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigpLnkpOwotICAgIEludFJlY3QgY29udGVudFJlY3Qo
c2Nyb2xsYmFyT3JpZ2luLCBjb250ZW50Qm91bmRzKCkpOworICAgIEludFJlY3QgY29udGVudFJl
Y3QgPSBsYXllclJlY3RUb0NvbnRlbnRSZWN0KEludFJlY3Qoc2Nyb2xsYmFyT3JpZ2luLCBib3Vu
ZHMoKSkpOwogICAgIHVwZGF0ZVBhcnQobV9iYWNrVHJhY2tVcGRhdGVyLmdldCgpLCBtX2JhY2tU
cmFjay5nZXQoKSwgY29udGVudFJlY3QsIHF1ZXVlLCBzdGF0cyk7CiAgICAgaWYgKG1fZm9yZVRy
YWNrICYmIG1fZm9yZVRyYWNrVXBkYXRlcikKICAgICAgICAgdXBkYXRlUGFydChtX2ZvcmVUcmFj
a1VwZGF0ZXIuZ2V0KCksIG1fZm9yZVRyYWNrLmdldCgpLCBjb250ZW50UmVjdCwgcXVldWUsIHN0
YXRzKTsKIAogICAgIC8vIENvbnNpZGVyIHRoZSB0aHVtYiB0byBiZSBhdCB0aGUgb3JpZ2luIHdo
ZW4gcGFpbnRpbmcuCiAgICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnkt
PnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSk7Ci0gICAgSW50UmVjdCBvcmlnaW5UaHVtYlJl
Y3QgPSBJbnRSZWN0KDAsIDAsIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCk7Cisg
ICAgSW50UmVjdCBvcmlnaW5UaHVtYlJlY3QgPSBsYXllclJlY3RUb0NvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KSk7CiAgICAgaWYgKCFv
cmlnaW5UaHVtYlJlY3QuaXNFbXB0eSgpKQogICAgICAgICB1cGRhdGVQYXJ0KG1fdGh1bWJVcGRh
dGVyLmdldCgpLCBtX3RodW1iLmdldCgpLCBvcmlnaW5UaHVtYlJlY3QsIHF1ZXVlLCBzdGF0cyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgKaW5kZXggMTE1ZmI2NjEwZmIx
MTBkMzg0MDIyN2U2MTc3YTA3MGIxOTA4MTE0OS4uNTU1NmNhYmI0Y2M4ZTAxMmRjNDVkZGZkODE3
MGFiOGU0OWMxYjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaApAQCAt
NDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXI+LCBXZWJL
aXQ6OldlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnk+LCBpbnQgc2Nyb2xsTGF5ZXJJZCk7CiAKICAgICAvLyBMYXllckNo
cm9taXVtIGludGVyZmFjZQorICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFNpemUgY29udGVudEJvdW5kcygpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25zdCBD
Q1ByaW9yaXR5Q2FsY3VsYXRvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUo
Q0NUZXh0dXJlVXBkYXRlUXVldWUmLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBDQ1JlbmRl
cmluZ1N0YXRzJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3Qo
Q0NMYXllclRyZWVIb3N0KikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXgg
MzgwMGIwODc2YWQ1MTk3ZWJjZGUyZmJmYTRmZTZjMjQzZDFjYmZhZi4uY2Y1ZjhkOWU1Njc5ZGZi
MmQyYzcyMmNmMzE3MjJiNGJhZWZkODY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAt
MjMxLDYgKzIzMSwxNSBAQCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5
ZXJJbXBsOjp0cnlTY3JvbGwoY29uc3QgSW50UG9pbnQmIHZpZXdwbwogICAgIHJldHVybiBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDsKIH0KIAorSW50UmVjdCBDQ0xheWVySW1w
bDo6bGF5ZXJSZWN0VG9Db250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit7Cisg
ICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCku
d2lkdGgoKSkgLyBib3VuZHMoKS53aWR0aCgpOworICAgIGZsb2F0IGhlaWdodFNjYWxlID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSkgLyBib3VuZHMoKS5oZWln
aHQoKTsKKyAgICBGbG9hdFJlY3QgY29udGVudFJlY3QobGF5ZXJSZWN0KTsKKyAgICBjb250ZW50
UmVjdC5zY2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CisgICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3QoY29udGVudFJlY3QpOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjp3cml0ZUluZGVu
dChUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSAh
PSBpbmRlbnQ7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGY4YWQwNjcwMWE2MGVhOThk
MGJhY2UzODViMGQzNzEzMzQ5ZTJkY2YuLjQ5MjhkNDNkN2Y5ZDgyNjdkN2U2NzBiM2NmN2ZkMTgw
Yjg1MWI1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMjc4LDYgKzI3OCw4IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZFNpbmsmLCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIENDQXBwZW5kUXVhZHNEYXRhJikgY29uc3Q7CiAKKyAgICBJ
bnRSZWN0IGxheWVyUmVjdFRvQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsK
KwogICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQg
aW5kZW50KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCB3cml0ZUluZGVudChUZXh0U3RyZWFtJiwg
aW50IGluZGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApp
bmRleCA4MDRkNmZmZDhhYzhkMTY3ODEyYTY1M2FkOTNhMTdjYzdlZDZiZWRlLi4xZGY4ODZjZjVi
MWQ5OWE0MTRlOTQwZTU4NzAzM2U2NWYxYjYxZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3Jv
bGxiYXJMYXllckltcGwuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNE
YXRhJgogICAgICAgICB0aHVtYlJlY3QgPSBXZWJSZWN0KCk7CiAKICAgICBpZiAobV90aHVtYlJl
c291cmNlSWQgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPENDVGV4
dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIEludFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVjdC55LCB0aHVtYlJlY3Qud2lkdGgs
IHRodW1iUmVjdC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEs
IHV2UmVjdCwgZmxpcHBlZCk7CisgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gcXVh
ZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBsYXllclJlY3RU
b0NvbnRlbnRSZWN0KHRodW1iUmVjdCksIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRB
bHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZC0+c2V0TmVlZHNCbGVuZGluZygp
OwogICAgICAgICBxdWFkU2luay5hcHBlbmQocXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0
YSk7CiAgICAgfQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYKIAog
ICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGluIHR3byBwYXJ0cyBpZiB3ZSB3ZXJlIGdp
dmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJhY2sgcGFydC4KICAgICBpZiAobV9mb3Jl
VHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcXVh
ZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJ
bnRSZWN0KGZvcmVUcmFja1JlY3QueCwgZm9yZVRyYWNrUmVjdC55LCBmb3JlVHJhY2tSZWN0Lndp
ZHRoLCBmb3JlVHJhY2tSZWN0LmhlaWdodCksIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVs
dGlwbGVkQWxwaGEsIHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVk
KSwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBsYXllclJlY3RUb0NvbnRlbnRSZWN0KGZv
cmVUcmFja1JlY3QpLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB0
b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCksIGFwcGVuZFF1YWRz
RGF0YSk7CiAKICAgICAvLyBPcmRlciBtYXR0ZXJzIGhlcmU6IHNpbmNlIHRoZSBiYWNrIHRyYWNr
IHRleHR1cmUgaXMgYmVpbmcgZHJhd24gdG8gdGhlIGVudGlyZSBjb250ZW50cyByZWN0LCB3ZSBt
dXN0IGFwcGVuZCBpdCBhZnRlciB0aGUgdGh1bWIgYW5kCiAgICAgLy8gZm9yZSB0cmFjayBxdWFk
cy4gVGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBjb250YWlucyAoYW5kIGRpc3BsYXlzKSB0aGUgYnV0
dG9ucy4KQEAgLTE0OSw3ICsxNDksNyBAQCBXZWJLaXQ6OldlYlBvaW50IENDU2Nyb2xsYmFyTGF5
ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6bG9jYXRpb24oKSBjb25zdAogCiBXZWJLaXQ6OldlYlNpemUg
Q0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyOjpzaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJTaXplKG1fb3duZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpLCBt
X293bmVyLT5jb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBXZWJLaXQ6Oldl
YlNpemUobV9vd25lci0+Ym91bmRzKCkud2lkdGgoKSwgbV9vd25lci0+Ym91bmRzKCkuaGVpZ2h0
KCkpOwogfQogCiBib29sIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhcjo6ZW5hYmxl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBhZTk5YmE4ODlkMGYzNGVjOTRiYjk5M2Y2MjZm
YjViNWEzYzcwZjZmLi45MmMyMWIxNzhjMDZmMDRmM2QyOWFlMjI5MDE3N2QxNTI3MmNhNWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRlICJXZWJWaWV3
SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViRmxvYXRQb2ludC5oPgpAQCAtODgsNiArOTAsMjAgQEAgdm9pZCBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxh
eWVyKQogICAgIEFTU0VSVChoYXZlU2Nyb2xsTGF5ZXIoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNl
dFNjcm9sbGJhckJvdW5kc0NvbnRhaW5QYWdlU2NhbGUoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSog
bGF5ZXIsIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0qIGNsaXBMYXllcikKK3sKKyAgICAvLyBTY3Jv
bGxiYXJzIGFyZSBhdHRhY2hlZCBvdXRzaWRlIHRoZSByb290IGNsaXAgcmVjdCwgc28gc2tpcCB0
aGUKKyAgICAvLyBjbGlwTGF5ZXIgc3VidHJlZS4KKyAgICBpZiAobGF5ZXIgPT0gY2xpcExheWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVyLT5j
aGlsZHJlbigpLnNpemUoKTsgKytpKQorICAgICAgICBzZXRTY3JvbGxiYXJCb3VuZHNDb250YWlu
UGFnZVNjYWxlKGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpLCBjbGlwTGF5ZXIpOworCisgICAg
aWYgKGxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgbGF5ZXItPnNldEJvdW5kc0NvbnRh
aW5QYWdlU2NhbGUodHJ1ZSk7Cit9CisKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpz
ZXRWaWV3cG9ydChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNj
cm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogewog
ICAgIGlmICghaGF2ZVNjcm9sbExheWVyKCkpCkBAIC0xMTksNiArMTM1LDkgQEAgdm9pZCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHZpZXdwb3J0U2l6ZSwKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKICAgICB9IGVsc2UgaWYgKHZpc2libGVSZWN0Q2hhbmdlZCkKICAgICAgICAgbV9ncmFwaGlj
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0q
IGNsaXBMYXllciA9IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KHNjcm9sbExheWVyKCkpLT5s
YXllcigpLT5wYXJlbnQoKTsKKyAgICBzZXRTY3JvbGxiYXJCb3VuZHNDb250YWluUGFnZVNjYWxl
KGNsaXBMYXllci0+cm9vdExheWVyKCksIGNsaXBMYXllcik7CiB9CiAKIGJvb2wgTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OjpoYXZlU2Nyb2xsTGF5ZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164610</attachid>
            <date>2012-09-18 13:07:44 -0700</date>
            <delta_ts>2012-09-19 10:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95134-20120918160710.patch</filename>
            <type>text/plain</type>
            <size>2655</size>
            <attacher name="Robert Flack">flackr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg1MWU0Mzk3NjI5OTllYzM4NWE2ZDY3MjNlNGUwODdkZDkxNGIzNzYuLmVmMTY0MTUxNDA2NDM1
Mzk0YmJiYzBlZmM4NDAyYjBlZTNjODg0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMTggIFJvYmVydCBGbGFjayAgPGZsYWNrckBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IGhpZ2ggRFBJIHNjcm9sbCBiYXIg
b24gdG9wIGxldmVsIHdlYiBmcmFtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2FsbHMgc2V0QXBwbGllc1BhZ2VTY2FsZSh0cnVlKSBvbiByb290IHNj
cm9sbGJhciBsYXllcnMgYXMgdGhlc2UgYXJlIG5vdCBzY2FsZWQuCisKKyAgICAgICAgKiBzcmMv
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2V0U2Nyb2xs
YmFyQm91bmRzQ29udGFpblBhZ2VTY2FsZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0KToKKwogMjAxMi0w
OS0xNyAgQnJpYW4gQW5kZXJzb24gIDxicmlhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBBZGQgcmVuZGVyaW5nIGNvbW1pdCBzdGF0aXN0aWNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNw
cAppbmRleCBhZTk5YmE4ODlkMGYzNGVjOTRiYjk5M2Y2MjZmYjViNWEzYzcwZjZmLi45NzI5ZDA1
ZWM0ZmM0ZGEzZTYzZjFlMWY1NjQyNmNiYTdkZjg0YTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTg4
LDYgKzg4LDIwIEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTY3JvbGxMYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBBU1NFUlQoaGF2ZVNjcm9sbExh
eWVyKCkpOwogfQogCitzdGF0aWMgdm9pZCBzZXRTY3JvbGxiYXJCb3VuZHNDb250YWluUGFnZVNj
YWxlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyLCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBjbGlwTGF5ZXIpCit7CisgICAgLy8gU2Nyb2xsYmFycyBhcmUgYXR0YWNoZWQgb3V0c2lkZSB0
aGUgcm9vdCBjbGlwIHJlY3QsIHNvIHNraXAgdGhlCisgICAgLy8gY2xpcExheWVyIHN1YnRyZWUu
CisgICAgaWYgKGxheWVyID09IGNsaXBMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAg
ICAgc2V0U2Nyb2xsYmFyQm91bmRzQ29udGFpblBhZ2VTY2FsZShsYXllci0+Y2hpbGRyZW4oKVtp
XSwgY2xpcExheWVyKTsKKworICAgIGlmIChsYXllci0+Y2hpbGRyZW4oKS5pc0VtcHR5KCkpCisg
ICAgICAgIGxheWVyLT5zZXRBcHBsaWVzUGFnZVNjYWxlKHRydWUpOworfQorCiB2b2lkIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHNjcm9sbE9yaWdpbikKIHsKICAgICBpZiAoIWhhdmVTY3JvbGxMYXllcigpKQpAQCAtMTE5
LDYgKzEzMywxMiBAQCB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld3BvcnRTaXplLAogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0gZWxzZSBpZiAodmlzaWJsZVJlY3RDaGFu
Z2VkKQogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciogY2xpcExheWVyID0gbV9ncmFwaGljc0xheWVyLT5wYXJl
bnQoKS0+cGFyZW50KCk7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogcm9vdExheWVyID0g
Y2xpcExheWVyOworICAgIHdoaWxlIChyb290TGF5ZXItPnBhcmVudCgpKQorICAgICAgICByb290
TGF5ZXIgPSByb290TGF5ZXItPnBhcmVudCgpOworICAgIHNldFNjcm9sbGJhckJvdW5kc0NvbnRh
aW5QYWdlU2NhbGUocm9vdExheWVyLCBjbGlwTGF5ZXIpOwogfQogCiBib29sIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6aGF2ZVNjcm9sbExheWVyKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>