<?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>97801</bug_id>
          
          <creation_ts>2012-09-27 10:19:52 -0700</creation_ts>
          <short_desc>Support invalidation tracking for composited layers</short_desc>
          <delta_ts>2012-11-04 04:06:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99605</dependson>
    
    <dependson>100584</dependson>
    
    <dependson>101165</dependson>
          <blocked>96087</blocked>
    
    <blocked>100524</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sami Kyöstilä">skyostil</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>philn</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyostil</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>trchen</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>729663</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-27 10:19:52 -0700</bug_when>
    <thetext>TestRunner.display() should also work for tracking repaints when accelerated compositing is enabled.

There already are some tests that use display() when compositing is on, so to avoid breaking them this should either be opt-in, or we should introduce another method for forcing a composition cycle without highlighting repaints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744508</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-17 12:40:00 -0700</bug_when>
    <thetext>I think we should deprecate display(). I think we should add:

internals.startTrackingRepaints()
internals.stopTrackingRepaints()
ClientRectList internals.clientRepaintRects();

or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745177</commentid>
    <comment_count>2</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-18 05:21:45 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I think we should deprecate display(). I think we should add:
&gt; 
&gt; internals.startTrackingRepaints()
&gt; internals.stopTrackingRepaints()
&gt; ClientRectList internals.clientRepaintRects();
&gt; 
&gt; or something like that.

Do you mean the visual display of repaint rectangles would go away completely and these would be dumped in text form? I think the visual display is handy for figuring out what changed, but it&apos;s also a maintenance burden.

Also, in bug 99605 I considered making that a list of absolute FloatQuads to support transforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745234</commentid>
    <comment_count>3</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-10-18 07:16:51 -0700</bug_when>
    <thetext>Having access to the list of repaint rects would also let us detect when we&apos;ve repainted a region multiple times, which would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745300</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-18 08:59:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Do you mean the visual display of repaint rectangles would go away completely and these would be dumped in text form? I think the visual display is handy for figuring out what changed, but it&apos;s also a maintenance burden.

It&apos;s nice to have the visual display, but the main objective would be to allow for testing repaints without doing pixel tests.

&gt; Also, in bug 99605 I considered making that a list of absolute FloatQuads to support transforms.

Sounds good, but you&apos;d have to find a way to expose quads to JS.

Simon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745397</commentid>
    <comment_count>5</comment_count>
      <attachid>169439</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-18 11:12:22 -0700</bug_when>
    <thetext>Created attachment 169439
Patch

This patch switches to tracking absolute float quads for the transformed paint
rects. It also adds tracking for composited layers (and the non-composited
content host). It is still missing tests, and does not tackle the problem of
moving away from display() and pixel-based repaint testing to the text-based
approach mentioned in earlier comments. Could this possibly be done in a
separate patch?

Note: this patch builds on https://bugs.webkit.org/show_bug.cgi?id=99605.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745401</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 11:14:57 -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>745406</commentid>
    <comment_count>7</comment_count>
      <attachid>169439</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-18 11:19:11 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

Attachment 169439 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14408020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745407</commentid>
    <comment_count>8</comment_count>
      <attachid>169439</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-18 11:19:26 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

Attachment 169439 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14412652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745417</commentid>
    <comment_count>9</comment_count>
      <attachid>169439</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-18 11:26:19 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestShell.cpp:630
&gt; +        m_webViewHost-&gt;paintTrackedRepaintRectangleOverlay();

This is a bug from my patch; here (or in WebViewHost) we need to check whether we&apos;re actually tracking repaints. Otherwise all non-repaint tracking tests will end up gray.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745426</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-18 11:34:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; Do you mean the visual display of repaint rectangles would go away completely and these would be dumped in text form? I think the visual display is handy for figuring out what changed, but it&apos;s also a maintenance burden.
&gt; 
&gt; It&apos;s nice to have the visual display, but the main objective would be to allow for testing repaints without doing pixel tests.
&gt; 

This is somewhat crazy but I&apos;d like to extend our test tools (maybe garden-o-matic) to try to visualize the rects from the dumped text info.  That&apos;d be best of both worlds - easy to maintain, easy to visually tell WTF is going on in at a glance.

&gt; &gt; Also, in bug 99605 I considered making that a list of absolute FloatQuads to support transforms.
&gt; 
&gt; Sounds good, but you&apos;d have to find a way to expose quads to JS.
&gt; 
&gt; Simon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745431</commentid>
    <comment_count>11</comment_count>
      <attachid>169439</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-18 11:39:59 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

Attachment 169439 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14400905</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745437</commentid>
    <comment_count>12</comment_count>
      <attachid>169439</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-18 11:44:58 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

Attachment 169439 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14465073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745471</commentid>
    <comment_count>13</comment_count>
      <attachid>169439</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-18 12:33:36 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

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

&gt; Source/WebCore/page/FrameView.h:527
&gt; -    Vector&lt;IntRect&gt; m_trackedRepaintRects;
&gt; +    Vector&lt;FloatQuad&gt; m_trackedTransformedRepaintRects;

I don&apos;t see any benefit from having &apos;transformed&apos; in the name. &apos;absolute&apos; would be more descriptive.

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1490
&gt; +    FrameView* frameView = renderer()-&gt;frame()-&gt;view();
&gt; +    if (frameView-&gt;isTrackingRepaints())
&gt; +        frameView-&gt;addTransformedRepaintRect(renderer()-&gt;localToAbsoluteQuad(FloatRect(clip), SnapOffsetForTransforms));
&gt; +

This is the wrong place for this. This isn&apos;t a &quot;repaint&quot;. You need to move this code to RenderLayerBacking::setContentsNeedDisplay() and RenderLayerBacking::setContentsNeedDisplayInRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745538</commentid>
    <comment_count>14</comment_count>
      <attachid>169439</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 13:56:53 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

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

New failing tests:
compositing/checkerboard.html
compositing/layer-creation/fixed-position-and-transform.html
animations/3d/matrix-transform-type-animation.html
animations/3d/state-at-end-event-transform.html
animations/additive-transform-animations.html
http/tests/images/jpg-img-partial-load.html
animations/3d/replace-filling-transform.html
animations/opacity-transform-animation.html
compositing/clip-change.html
compositing/images/content-image-change.html
http/tests/images/jpeg-partial-load.html
animations/cross-fade-webkit-mask-box-image.html
animations/3d/change-transform-in-end-event.html
animations/suspend-transform-animation.html
animations/missing-values-last-keyframe.html
compositing/absolute-position-changed-with-composited-parent-layer.html
compositing/absolute-position-changed-in-composited-layer.html
compositing/images/direct-svg-image.html
compositing/geometry/horizontal-scroll-composited.html
compositing/images/direct-image-background-color.html
animations/cross-fade-list-style-image.html
compositing/masks/layer-mask-placement.html
animations/missing-values-first-keyframe.html
compositing/geometry/foreground-offset-change.html
animations/cross-fade-background-image.html
compositing/iframes/fixed-position-iframe.html
animations/cross-fade-border-image-source.html
compositing/masks/direct-image-mask.html
animations/cross-fade-webkit-mask-image.html
animations/state-at-end-event.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745553</commentid>
    <comment_count>15</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-10-18 14:04:04 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1490
&gt; &gt; +    FrameView* frameView = renderer()-&gt;frame()-&gt;view();
&gt; &gt; +    if (frameView-&gt;isTrackingRepaints())
&gt; &gt; +        frameView-&gt;addTransformedRepaintRect(renderer()-&gt;localToAbsoluteQuad(FloatRect(clip), SnapOffsetForTransforms));
&gt; &gt; +
&gt; 
&gt; This is the wrong place for this. This isn&apos;t a &quot;repaint&quot;. You need to move this code to RenderLayerBacking::setContentsNeedDisplay() and RenderLayerBacking::setContentsNeedDisplayInRect().

I&apos;m curious about this. This is where I&apos;d originally stuck the code to grab the repaint rects, but I hit a snag. I&apos;m particularly interested in tracking repaints that are caused by composited scrolling. On the composited scrolling path, we eventually call GraphicsLayer::setOffsetFromRenderer, which results in a call to GraphicsLayer::setNeedsDisplay. I notice that the RenderLayerBacking::setContentsNeedDisplay*() functions turn around and call setNeedsDisplay on the appropriate graphics layers, but it seems in the case of setOffsetFromRenderer, we&apos;re able to skip past the RLB functions (and the repaint tracking) and get right to GraphicsLayer::setNeedsDisplay and cause invalidations.

I&apos;m sure that RLB::paintIntoLayer isn&apos;t the right place to add the tracking code, but I&apos;m having a tough time finding a good spot where I can catch every repaint. Perhaps in GraphicsLayer::setNeedsDisplay and GraphicsLayer::setNeedsDisplayInRect, the graphics layers could pass the repaint rect to a new GraphicsLayerClient function (GLC::addRepaintRect(...), maybe) so that we can be sure we never miss one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745557</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-18 14:09:13 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1490
&gt; &gt; &gt; +    FrameView* frameView = renderer()-&gt;frame()-&gt;view();
&gt; &gt; &gt; +    if (frameView-&gt;isTrackingRepaints())
&gt; &gt; &gt; +        frameView-&gt;addTransformedRepaintRect(renderer()-&gt;localToAbsoluteQuad(FloatRect(clip), SnapOffsetForTransforms));
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; This is the wrong place for this. This isn&apos;t a &quot;repaint&quot;. You need to move this code to RenderLayerBacking::setContentsNeedDisplay() and RenderLayerBacking::setContentsNeedDisplayInRect().
&gt; 
&gt; I&apos;m curious about this. This is where I&apos;d originally stuck the code to grab the repaint rects, but I hit a snag. I&apos;m particularly interested in tracking repaints that are caused by composited scrolling. On the composited scrolling path, we eventually call GraphicsLayer::setOffsetFromRenderer, which results in a call to GraphicsLayer::setNeedsDisplay. I notice that the RenderLayerBacking::setContentsNeedDisplay*() functions turn around and call setNeedsDisplay on the appropriate graphics layers, but it seems in the case of setOffsetFromRenderer, we&apos;re able to skip past the RLB functions (and the repaint tracking) and get right to GraphicsLayer::setNeedsDisplay and cause invalidations.

Yeah, this will miss the scrolling ones.
&gt; 
&gt; I&apos;m sure that RLB::paintIntoLayer isn&apos;t the right place to add the tracking code, but I&apos;m having a tough time finding a good spot where I can catch every repaint. Perhaps in GraphicsLayer::setNeedsDisplay and GraphicsLayer::setNeedsDisplayInRect, the graphics layers could pass the repaint rect to a new GraphicsLayerClient function (GLC::addRepaintRect(...), maybe) so that we can be sure we never miss one?

That would be an OK way to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746207</commentid>
    <comment_count>17</comment_count>
      <attachid>169439</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-19 04:08:05 -0700</bug_when>
    <thetext>Comment on attachment 169439
Patch

Attachment 169439 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14456448</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747847</commentid>
    <comment_count>18</comment_count>
      <attachid>169974</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-22 13:53:38 -0700</bug_when>
    <thetext>Created attachment 169974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747866</commentid>
    <comment_count>19</comment_count>
      <attachid>169974</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-22 14:05:09 -0700</bug_when>
    <thetext>Comment on attachment 169974
Patch

Attachment 169974 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14496383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747874</commentid>
    <comment_count>20</comment_count>
      <attachid>169974</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 14:14:37 -0700</bug_when>
    <thetext>Comment on attachment 169974
Patch

Attachment 169974 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14482668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747883</commentid>
    <comment_count>21</comment_count>
      <attachid>169974</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 14:25:59 -0700</bug_when>
    <thetext>Comment on attachment 169974
Patch

Attachment 169974 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14486642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747885</commentid>
    <comment_count>22</comment_count>
      <attachid>169974</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-22 14:28:11 -0700</bug_when>
    <thetext>Comment on attachment 169974
Patch

Attachment 169974 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14492598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748468</commentid>
    <comment_count>23</comment_count>
      <attachid>169974</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-23 03:54:03 -0700</bug_when>
    <thetext>Comment on attachment 169974
Patch

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

Neat, I like the idea of dumping the paint rectangles as a part of the layer tree.

&gt; Source/WebCore/platform/graphics/blackberry/GraphicsLayerBlackBerry.h:96
&gt; +protected:

This doesn&apos;t seem to match the cpp file.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:456
&gt; +            m_trackedRepaintRects.append(FloatRect(

It seems like LinkHighlight::updateGeometry() would be a better place for this because the underlying graphics layer isn&apos;t invalidated unconditionally.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:476
&gt; +            m_trackedRepaintRects.append(FloatRect(

Ditto for LinkHighlight::updateGeometry().

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1570
&gt; +    return renderer()-&gt;frame()-&gt;view()-&gt;isTrackingRepaints();

I think either frame() or view() might be null here.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1989
&gt; +    for (size_t i = 0; i &lt; graphicsLayer-&gt;children().size(); ++i)

We should also walk mask and replica layers here.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2019
&gt; +bool RenderLayerCompositor::isTrackingRepaints() const

It seems like nobody is calling this (and by extension RenderLayerBacking::isTrackingRepaints) so we could get rid of both?

&gt; Source/WebCore/testing/Internals.cpp:1375
&gt; +void Internals::startTrackingRepaints(Document* document, ExceptionCode&amp; ec)

Since we&apos;re poking at FrameView/RLC directly here, do we need the WebView API changes at all? They seem kind of unnecessary because you can&apos;t retrieve the repaint rectangles through that API anyway.

&gt; Source/WebCore/testing/Internals.cpp:1390
&gt; +    RenderLayerCompositor* compositor = renderView-&gt;compositor();

Nit: FrameView already knows about RenderLayerCompositor, so it might as well do this internally in resetTrackedRepaints().

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:448
&gt; +    , m_isTrackingRepaints(false)

Not used?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1836
&gt; +    if (!isAcceleratedCompositingActive())

Again, FrameView could do the rest internally.

&gt; Source/WebKit/chromium/src/WebViewImpl.h:880
&gt; +    Vector&lt;WebFloatQuad&gt; m_trackedTransformedRepaintRects;

Not used?

&gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:4
&gt; +This test checks that the contents of accelerated scrolling layers are properly

This comment seems out of date.

&gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:18
&gt; +		background: blue;

Some space/tab weirdness going on here?

&gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:34
&gt; +          if (!window.testRunner) {

Might want to check for window.internals too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748953</commentid>
    <comment_count>24</comment_count>
      <attachid>169974</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 13:57:06 -0700</bug_when>
    <thetext>Comment on attachment 169974
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Allows tracking of graphics layer invalidations. The graphics layers
&gt; +        can now store (local) invalidation rects and include them in the
&gt; +        layer tree dump.

It&apos;s not clear to me that this is sufficiently better than just tracking absolute repaint rects on FrameView to justify the extra overhead of having each GraphicsLayer track repaint rects. It&apos;s worse in the sense that you can&apos;t easily draw the repaints rects into an overlay, and that existing repaint tests with compositing layers won&apos;t work unless changed to use layerTreeAsText() etc.

&gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:55
&gt; +          text.innerHTML = window.internals.layerTreeAsText(document);

It&apos;s better to use a &lt;pre&gt; to preserve whitespace and wrapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748956</commentid>
    <comment_count>25</comment_count>
      <attachid>170231</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-23 13:58:53 -0700</bug_when>
    <thetext>Created attachment 170231
Patch

(In reply to comment #23)
&gt; (From update of attachment 169974 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169974&amp;action=review
&gt;
&gt; Neat, I like the idea of dumping the paint rectangles as a part of the layer tree.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/blackberry/GraphicsLayerBlackBerry.h:96
&gt; &gt; +protected:
&gt;
&gt; This doesn&apos;t seem to match the cpp file.
Leftovers from a failed approach. Removed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:456
&gt; &gt; +            m_trackedRepaintRects.append(FloatRect(
&gt;
&gt; It seems like LinkHighlight::updateGeometry() would be a better place for this because the underlying graphics layer isn&apos;t invalidated unconditionally.
Good idea. Done.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:476
&gt; &gt; +            m_trackedRepaintRects.append(FloatRect(
&gt;
&gt; Ditto for LinkHighlight::updateGeometry().
Done.
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1570
&gt; &gt; +    return renderer()-&gt;frame()-&gt;view()-&gt;isTrackingRepaints();
&gt;
&gt; I think either frame() or view() might be null here.
Changed to something hopefully more robust.
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1989
&gt; &gt; +    for (size_t i = 0; i &lt; graphicsLayer-&gt;children().size(); ++i)
&gt;
&gt; We should also walk mask and replica layers here.
Done.
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2019
&gt; &gt; +bool RenderLayerCompositor::isTrackingRepaints() const
&gt;
&gt; It seems like nobody is calling this (and by extension RenderLayerBacking::isTrackingRepaints) so we could get rid of both?
GraphicsLayers check if their GraphicsLayerClient is tracking repaints, so I think we need this for classes that implement GraphicsLayerClient.
&gt;
&gt; &gt; Source/WebCore/testing/Internals.cpp:1375
&gt; &gt; +void Internals::startTrackingRepaints(Document* document, ExceptionCode&amp; ec)
&gt;
&gt; Since we&apos;re poking at FrameView/RLC directly here, do we need the WebView API changes at all? They seem kind of unnecessary because you can&apos;t retrieve the repaint rectangles through that API anyway.
Only isTrackingRepaints, I think. This is how the NonCompositedContentHost (a GraphicsLayerClient) checks if we&apos;re tracking repaints.
&gt;
&gt; &gt; Source/WebCore/testing/Internals.cpp:1390
&gt; &gt; +    RenderLayerCompositor* compositor = renderView-&gt;compositor();
&gt;
&gt; Nit: FrameView already knows about RenderLayerCompositor, so it might as well do this internally in resetTrackedRepaints().
Good idea. Done.
&gt;
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:448
&gt; &gt; +    , m_isTrackingRepaints(false)
&gt;
&gt; Not used?
Removed.
&gt;
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1836
&gt; &gt; +    if (!isAcceleratedCompositingActive())
&gt;
&gt; Again, FrameView could do the rest internally.
Removed.
&gt;
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.h:880
&gt; &gt; +    Vector&lt;WebFloatQuad&gt; m_trackedTransformedRepaintRects;
&gt;
&gt; Not used?
Removed.
&gt;
&gt; &gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:4
&gt; &gt; +This test checks that the contents of accelerated scrolling layers are properly
&gt;
&gt; This comment seems out of date.
Fixed.
&gt;
&gt; &gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:18
&gt; &gt; +		background: blue;
&gt;
&gt; Some space/tab weirdness going on here?
Yeah, my editor got confused. Fixed.
&gt;
&gt; &gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:34
&gt; &gt; +          if (!window.testRunner) {
&gt;
&gt; Might want to check for window.internals too.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748999</commentid>
    <comment_count>26</comment_count>
      <attachid>170231</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-23 14:37:08 -0700</bug_when>
    <thetext>Comment on attachment 170231
Patch

Attachment 170231 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14496817</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749015</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-23 14:48:15 -0700</bug_when>
    <thetext>I think tracking per-GraphicsLayer provides a lot of value relative to smooshing everything on to the FrameView.  Consider the case of a compositor layer scrolling down over a heavy background.  Ideally, we would have invalidations only on the scrolling GraphicsLayer and not on the FrameView underneath.  If we collapsed it all down to the FrameView, we wouldn&apos;t be able to tell what was going on.

The visualization question is somewhat separate - we can visualize on a per-GraphicsLayer basis if we really want to but I think the maintenance overhead of having pixel tests for repaint costs us far more than we gain.  How often are the mac pixel baselines for fast/repaint up-to-date enough to be able to spot regressions on the mac port?  In my experience, they basically never are up to date.  Text baselines would be far easier to maintain and thus provide much better coverage in practice on the bots and the cost of making it slightly harder in some cases to understand failures.  Ideally, we would generally not be creating new failures so I think optimizing for better coverage is the right way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749086</commentid>
    <comment_count>28</comment_count>
      <attachid>170231</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-23 16:01:03 -0700</bug_when>
    <thetext>Comment on attachment 170231
Patch

Attachment 170231 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14532057

New failing tests:
compositing/repaint/invalidations-on-composited-layers.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749606</commentid>
    <comment_count>29</comment_count>
      <attachid>170380</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-24 06:30:09 -0700</bug_when>
    <thetext>Created attachment 170380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749702</commentid>
    <comment_count>30</comment_count>
      <attachid>170406</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-24 08:34:55 -0700</bug_when>
    <thetext>Created attachment 170406
Patch

Sorry for the spam. I&apos;d missed Simon&apos;s comment about using &lt;pre&gt; in the layout
tests -- I&apos;ve made that change in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750233</commentid>
    <comment_count>31</comment_count>
      <attachid>170406</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-10-24 17:19:31 -0700</bug_when>
    <thetext>Comment on attachment 170406
Patch

I think this is good - what do you think, Simon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750240</commentid>
    <comment_count>32</comment_count>
      <attachid>170406</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-24 17:29:39 -0700</bug_when>
    <thetext>Comment on attachment 170406
Patch

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

Seems good. But I&apos;d like to see a few things:
1. Do the FrameView part in isolation first, and convert a few repaint tests to use it.
2. Do the chromium parts in a separate patch.

&gt; Source/WebCore/page/FrameView.h:342
&gt; +    void setTracksRepaints(bool, ResetTrackedRepaintsBehavior = ResetTrackedRepaints);
&gt;      bool isTrackingRepaints() const { return m_isTrackingRepaints; }
&gt;      void resetTrackedRepaints() { m_trackedRepaintRects.clear(); }

Why doesn&apos;t resetTrackedRepaints() call setTracksRepaints(false, ResetTrackedRepaints)? Right now you have a bug where resetTrackedRepaints() doesn&apos;t call into the compositor.

&gt; Source/WebCore/platform/graphics/GraphicsLayer.h:506
&gt; +    Vector&lt;FloatRect&gt; m_trackedRepaintRects; // Used for debugging.

Let&apos;s make this a Vector* to avoid wasting space for end users. In fact, maybe we should use a singleton HashMap, since we really don&apos;t want to waste space for a testing-only feature.

&gt; Source/WebCore/platform/graphics/GraphicsLayerClient.h:88
&gt; +    virtual bool isTrackingRepaints() const { return false; }

I think shouldTrackRepaints() is a better name for this.

&gt; Source/WebCore/platform/graphics/blackberry/GraphicsLayerBlackBerry.cpp:395
&gt;  void GraphicsLayerBlackBerry::setNeedsDisplay()
&gt;  {
&gt; -    if (drawsContent())
&gt; +    if (drawsContent()) {
&gt;          m_layer-&gt;setNeedsDisplay();
&gt; +
&gt; +        addRepaintRect(FloatRect(m_position, m_size));
&gt; +    }

Rather than require every port to do this, maybe make GraphicsLayer::setNeedsDisplay() etc non-virtual and require overrides call the base class method.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1155
&gt; +    // The true root layer is not included in the dump, so if we want to report
&gt; +    // its repaint rects, they must be appended here.
&gt; +    if (flags &amp; LayerTreeFlagsIncludeRepaintRects)
&gt; +        layerTreeText.append(m_renderView-&gt;frameView()-&gt;trackedRepaintRectsAsText());

I think this should be a prepend, since we dump layers starting at the root.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2046
&gt; +bool RenderLayerCompositor::isTrackingRepaints() const
&gt; +{
&gt; +    RenderLayerBacking* backing = rootRenderLayer()-&gt;backing();
&gt; +    if (!backing)
&gt; +        return false;
&gt; +
&gt; +    return backing-&gt;isTrackingRepaints();
&gt; +}

This is backwards from how we normally handle the fact that both RenderLayerBacking and RenderLayerCompositor are GraphicsLayerClients. You should move the code from RenderLayerBacking::isTrackingRepaints() to here, and have RLB just call the compositor method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750630</commentid>
    <comment_count>33</comment_count>
      <attachid>170406</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-25 03:46:48 -0700</bug_when>
    <thetext>Comment on attachment 170406
Patch

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

I like the way this looks. Thanks for doing this.

&gt;&gt; Source/WebCore/page/FrameView.h:342
&gt;&gt;      void resetTrackedRepaints() { m_trackedRepaintRects.clear(); }
&gt; 
&gt; Why doesn&apos;t resetTrackedRepaints() call setTracksRepaints(false, ResetTrackedRepaints)? Right now you have a bug where resetTrackedRepaints() doesn&apos;t call into the compositor.

Seems a little redundant to have both setTracksRepaints(..., ResetTrackedRepaints) and resetTrackedRepaints(). Maybe we only need one way to reset?

&gt; LayoutTests/compositing/repaint/invalidations-on-composited-layers.html:36
&gt; +              alert(&apos;This test requires window.interals to run!&apos;);

Typo: interals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750910</commentid>
    <comment_count>34</comment_count>
      <attachid>170406</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-10-25 09:18:05 -0700</bug_when>
    <thetext>Comment on attachment 170406
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:3669
&gt; +    ts &lt;&lt; &quot;(repaint rects\n&quot;;

Could check whether the list of rects is empty here for consistency with GraphicsLayers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755458</commentid>
    <comment_count>35</comment_count>
      <attachid>171685</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-31 10:54:36 -0700</bug_when>
    <thetext>Created attachment 171685
Patch

&gt; (From update of attachment 170406 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170406&amp;action=review
&gt;
&gt; &gt; Source/WebCore/page/FrameView.h:342
&gt; &gt; +    void setTracksRepaints(bool, ResetTrackedRepaintsBehavior = ResetTrackedRepaints);
&gt; &gt;      bool isTrackingRepaints() const { return m_isTrackingRepaints; }
&gt; &gt;      void resetTrackedRepaints() { m_trackedRepaintRects.clear(); }
&gt;
&gt; Why doesn&apos;t resetTrackedRepaints() call setTracksRepaints(false, ResetTrackedRepaints)? Right now you have a bug where resetTrackedRepaints() doesn&apos;t call into the compositor.

Since setTracksRepaints now always calls resetTrackedRepaints, I think this is now a non-issue.

&gt;
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayer.h:506
&gt; &gt; +    Vector&lt;FloatRect&gt; m_trackedRepaintRects; // Used for debugging.
&gt;
&gt; Let&apos;s make this a Vector* to avoid wasting space for end users. In fact, maybe we should use a singleton HashMap, since we really don&apos;t want to waste space for a testing-only feature.
Done.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayerClient.h:88
&gt; &gt; +    virtual bool isTrackingRepaints() const { return false; }
&gt;
&gt; I think shouldTrackRepaints() is a better name for this.
I chose this name to be consistent with FrameView::isTrackingRepaints. I&apos;d be happy to change this everywhere, though. Should I do this?
&gt;
&gt; &gt; Source/WebCore/platform/graphics/blackberry/GraphicsLayerBlackBerry.cpp:395
&gt; &gt;  void GraphicsLayerBlackBerry::setNeedsDisplay()
&gt; &gt;  {
&gt; &gt; -    if (drawsContent())
&gt; &gt; +    if (drawsContent()) {
&gt; &gt;          m_layer-&gt;setNeedsDisplay();
&gt; &gt; +
&gt; &gt; +        addRepaintRect(FloatRect(m_position, m_size));
&gt; &gt; +    }
&gt;
&gt; Rather than require every port to do this, maybe make GraphicsLayer::setNeedsDisplay() etc non-virtual and require overrides call the base class method.
I had started down this route. I had initially made GraphicsLayer::setNeedsDisplay() non virtual and changed the implementation to first update the list of tracked repaint rects, and then turn around and call the pure virtual GraphicsLayer::setNeedsDisplayInternal(). Unfortunately, every port seems to use different logic to decide whether or not it would actually invalidate so I abandoned this approach and added the addRepaintRect calls to the GraphicsLayer subclasses. Please let me know if I&apos;m just misunderstanding your suggestion.
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1155
&gt; &gt; +    // The true root layer is not included in the dump, so if we want to report
&gt; &gt; +    // its repaint rects, they must be appended here.
&gt; &gt; +    if (flags &amp; LayerTreeFlagsIncludeRepaintRects)
&gt; &gt; +        layerTreeText.append(m_renderView-&gt;frameView()-&gt;trackedRepaintRectsAsText());
&gt;
&gt; I think this should be a prepend, since we dump layers starting at the root.
Done.
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2046
&gt; &gt; +bool RenderLayerCompositor::isTrackingRepaints() const
&gt; &gt; +{
&gt; &gt; +    RenderLayerBacking* backing = rootRenderLayer()-&gt;backing();
&gt; &gt; +    if (!backing)
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    return backing-&gt;isTrackingRepaints();
&gt; &gt; +}
&gt;
&gt; This is backwards from how we normally handle the fact that both RenderLayerBacking and RenderLayerCompositor are GraphicsLayerClients. You should move the code from RenderLayerBacking::isTrackingRepaints() to here, and have RLB just call the compositor method.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755500</commentid>
    <comment_count>36</comment_count>
      <attachid>171685</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-31 11:44:32 -0700</bug_when>
    <thetext>Comment on attachment 171685
Patch

Attachment 171685 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14625969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755582</commentid>
    <comment_count>37</comment_count>
      <attachid>171709</attachid>
    <who name="">vollick</who>
    <bug_when>2012-10-31 13:12:36 -0700</bug_when>
    <thetext>Created attachment 171709
Patch

Exporting FrameView::resetRepaintRects to fix mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755599</commentid>
    <comment_count>38</comment_count>
      <attachid>171709</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-31 13:49:42 -0700</bug_when>
    <thetext>Comment on attachment 171709
Patch

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

This is getting close! Just a few wrinkles to work out.

&gt; Source/WebCore/ChangeLog:8
&gt; +        GraphicsLayer&apos;s now store invalidated rects and can include them in

GraphicsLayers. Not possessive.

&gt; Source/WebCore/ChangeLog:37
&gt; +        (WebCore):

You should delete lines like this.

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        GraphicsLayer&apos;s now store invalidated rects and can include them in

Ditto.

&gt; Source/WebCore/page/FrameView.cpp:3658
&gt; +void FrameView::resetTrackedRepaints()
&gt; +{
&gt; +    m_trackedRepaintRects.clear();
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    if (RenderView* root = rootRenderer(this)) {
&gt; +        RenderLayerCompositor* compositor = root-&gt;compositor();
&gt; +        compositor-&gt;resetTrackedRepaintRects();
&gt; +    }
&gt; +#endif
&gt; +}
&gt; +

If you want this to work in subframes as well, this needs to traverse the frame tree. (Or maybe that should be done up in Frame code).

&gt; Source/WebCore/platform/graphics/GraphicsLayer.cpp:57
&gt; +    static RepaintMap* theMap = 0;
&gt; +    if (!theMap)
&gt; +        theMap = new RepaintMap();

Use Use DEFINE_STATIC_LOCAL

&gt; Source/WebCore/platform/graphics/GraphicsLayer.cpp:559
&gt; +    if (repaintRectMap().contains(this))
&gt; +        repaintRectMap().remove(this);

The contains() test is redundant.

&gt; Source/WebCore/platform/graphics/GraphicsLayer.h:410
&gt; +    void resetTrackedRepaints();
&gt; +    void addRepaintRect(const FloatRect&amp;);

Shouldn&apos;t these be protected? They are only called by subclasses. I think.

&gt; Source/WebCore/platform/graphics/blackberry/GraphicsLayerBlackBerry.cpp:392
&gt; +        addRepaintRect(FloatRect(m_position, m_size));

I think the repaint rect should be local, so don&apos;t use m_position as the origin.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:674
&gt; +    addRepaintRect(rect);

setNeedsDisplay() on GraphicsLayerCA passes hugeRect:

    FloatRect hugeRect(-numeric_limits&lt;float&gt;::max() / 2, -numeric_limits&lt;float&gt;::max() / 2,
                       numeric_limits&lt;float&gt;::max(), numeric_limits&lt;float&gt;::max());

so this won&apos;t match other platforms. We could possibly change that to use 0,0, m_size.

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:449
&gt; +        addRepaintRect(FloatRect(m_position, m_size));

Ditto.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:91
&gt; +    addRepaintRect(FloatRect(m_position, m_size));

Ditto.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2042
&gt; +    GraphicsLayer* graphicsLayer = backing-&gt;graphicsLayer();
&gt; +    resetTrackedRepaintRectsRecursive(graphicsLayer);

This is missing the fact that a RenderLayerBacking owns lots of GraphicsLayers:

    OwnPtr&lt;GraphicsLayer&gt; m_ancestorClippingLayer; // only used if we are clipped by an ancestor which is not a stacking context
    OwnPtr&lt;GraphicsLayer&gt; m_graphicsLayer;
    OwnPtr&lt;GraphicsLayer&gt; m_foregroundLayer;       // only used in cases where we need to draw the foreground separately
    OwnPtr&lt;GraphicsLayer&gt; m_containmentLayer; // Only used if we have clipping on a stacking context with compositing children, or if the layer has a tile cache.
    OwnPtr&lt;GraphicsLayer&gt; m_maskLayer;             // only used if we have a mask

    OwnPtr&lt;GraphicsLayer&gt; m_layerForHorizontalScrollbar;
    OwnPtr&lt;GraphicsLayer&gt; m_layerForVerticalScrollbar;
    OwnPtr&lt;GraphicsLayer&gt; m_layerForScrollCorner;

    OwnPtr&lt;GraphicsLayer&gt; m_scrollingLayer; // only used if the layer is using composited scrolling.
    OwnPtr&lt;GraphicsLayer&gt; m_scrollingContentsLayer; // only used if the layer is using composited scrolling.

Which do you wnat to dump repaint rects for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756428</commentid>
    <comment_count>39</comment_count>
      <attachid>171890</attachid>
    <who name="">vollick</who>
    <bug_when>2012-11-01 10:38:53 -0700</bug_when>
    <thetext>Created attachment 171890
Patch

(In reply to comment #38)
&gt; (From update of attachment 171709 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171709&amp;action=review
&gt;
&gt; This is getting close! Just a few wrinkles to work out.
&gt;
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        GraphicsLayer&apos;s now store invalidated rects and can include them in
&gt;
&gt; GraphicsLayers. Not possessive.
Done.
&gt;
&gt; &gt; Source/WebCore/ChangeLog:37
&gt; &gt; +        (WebCore):
&gt;
&gt; You should delete lines like this.
Done.
&gt;
&gt; &gt; Source/WebKit/chromium/ChangeLog:8
&gt; &gt; +        GraphicsLayer&apos;s now store invalidated rects and can include them in
&gt;
&gt; Ditto.
Done.
&gt;
&gt; &gt; Source/WebCore/page/FrameView.cpp:3658
&gt; &gt; +void FrameView::resetTrackedRepaints()
&gt; &gt; +{
&gt; &gt; +    m_trackedRepaintRects.clear();
&gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; +    if (RenderView* root = rootRenderer(this)) {
&gt; &gt; +        RenderLayerCompositor* compositor = root-&gt;compositor();
&gt; &gt; +        compositor-&gt;resetTrackedRepaintRects();
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; &gt; +}
&gt; &gt; +
&gt;
&gt; If you want this to work in subframes as well, this needs to traverse the frame tree. (Or maybe that should be done up in Frame code).
As I mucked with subframes, it looked like repaint rects were only being stored on the root frame view, and if the subframes were composited, their graphics layers appeared to be part of the larger graphics layer tree.
It seems like clearing this list of rects and walking the graphics layer tree will catch all tracked repaint rects. Please let me know if that&apos;s wrong.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayer.cpp:57
&gt; &gt; +    static RepaintMap* theMap = 0;
&gt; &gt; +    if (!theMap)
&gt; &gt; +        theMap = new RepaintMap();
&gt;
&gt; Use Use DEFINE_STATIC_LOCAL
Done.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayer.cpp:559
&gt; &gt; +    if (repaintRectMap().contains(this))
&gt; &gt; +        repaintRectMap().remove(this);
&gt;
&gt; The contains() test is redundant.
Removed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayer.h:410
&gt; &gt; +    void resetTrackedRepaints();
&gt; &gt; +    void addRepaintRect(const FloatRect&amp;);
&gt;
&gt; Shouldn&apos;t these be protected? They are only called by subclasses. I think.
They&apos;re needed by LinkHighlight which causes invalidations in an unusual way.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/blackberry/GraphicsLayerBlackBerry.cpp:392
&gt; &gt; +        addRepaintRect(FloatRect(m_position, m_size));
&gt;
&gt; I think the repaint rect should be local, so don&apos;t use m_position as the origin.
Fixed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:674
&gt; &gt; +    addRepaintRect(rect);
&gt;
&gt; setNeedsDisplay() on GraphicsLayerCA passes hugeRect:
&gt;
&gt;     FloatRect hugeRect(-numeric_limits&lt;float&gt;::max() / 2, -numeric_limits&lt;float&gt;::max() / 2,
&gt;                        numeric_limits&lt;float&gt;::max(), numeric_limits&lt;float&gt;::max());
&gt;
&gt; so this won&apos;t match other platforms. We could possibly change that to use 0,0, m_size.
I&apos;ve made it so we clip the repaint rects before storing them. Is that ok?
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.cpp:449
&gt; &gt; +        addRepaintRect(FloatRect(m_position, m_size));
&gt;
&gt; Ditto.
Fixed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:91
&gt; &gt; +    addRepaintRect(FloatRect(m_position, m_size));
&gt;
&gt; Ditto.
Fixed.
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2042
&gt; &gt; +    GraphicsLayer* graphicsLayer = backing-&gt;graphicsLayer();
&gt; &gt; +    resetTrackedRepaintRectsRecursive(graphicsLayer);
&gt;
&gt; This is missing the fact that a RenderLayerBacking owns lots of GraphicsLayers:
&gt;
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_ancestorClippingLayer; // only used if we are clipped by an ancestor which is not a stacking context
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_graphicsLayer;
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_foregroundLayer;       // only used in cases where we need to draw the foreground separately
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_containmentLayer; // Only used if we have clipping on a stacking context with compositing children, or if the layer has a tile cache.
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_maskLayer;             // only used if we have a mask
&gt;
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_layerForHorizontalScrollbar;
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_layerForVerticalScrollbar;
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_layerForScrollCorner;
&gt;
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_scrollingLayer; // only used if the layer is using composited scrolling.
&gt;     OwnPtr&lt;GraphicsLayer&gt; m_scrollingContentsLayer; // only used if the layer is using composited scrolling.
&gt;
&gt; Which do you wnat to dump repaint rects for?

This was a mistake -- I&apos;ve changed the code to start recurring from the root graphics layer as is done elsewhere in RLC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756454</commentid>
    <comment_count>40</comment_count>
      <attachid>171890</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-01 10:58:28 -0700</bug_when>
    <thetext>Comment on attachment 171890
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2066
&gt; +bool RenderLayerCompositor::isTrackingRepaints() const
&gt; +{
&gt; +    FrameView* frameView = m_renderView ? m_renderView-&gt;frameView() : 0;
&gt; +    if (!frameView)
&gt; +        return false;
&gt; +    FrameView* rootFrameView = frameView-&gt;frame()-&gt;tree()-&gt;top()-&gt;view();
&gt; +    if (!rootFrameView)
&gt; +        return false;
&gt; +    return rootFrameView-&gt;isTrackingRepaints();
&gt; +}

This code is going to run in release builds. I wonder if we should cache the flag in RLC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756563</commentid>
    <comment_count>41</comment_count>
      <attachid>171916</attachid>
    <who name="">vollick</who>
    <bug_when>2012-11-01 13:16:52 -0700</bug_when>
    <thetext>Created attachment 171916
Patch

(In reply to comment #40)
&gt; (From update of attachment 171890 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171890&amp;action=review
&gt;
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2066
&gt; &gt; +bool RenderLayerCompositor::isTrackingRepaints() const
&gt; &gt; +{
&gt; &gt; +    FrameView* frameView = m_renderView ? m_renderView-&gt;frameView() : 0;
&gt; &gt; +    if (!frameView)
&gt; &gt; +        return false;
&gt; &gt; +    FrameView* rootFrameView = frameView-&gt;frame()-&gt;tree()-&gt;top()-&gt;view();
&gt; &gt; +    if (!rootFrameView)
&gt; &gt; +        return false;
&gt; &gt; +    return rootFrameView-&gt;isTrackingRepaints();
&gt; &gt; +}
&gt;
&gt; This code is going to run in release builds. I wonder if we should cache the flag in RLC?

Sounds good. Done. I&apos;ve put another r? on this in case I&apos;ve gone about this the wrong way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756567</commentid>
    <comment_count>42</comment_count>
      <attachid>171916</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-01 13:23:11 -0700</bug_when>
    <thetext>Comment on attachment 171916
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:3650
&gt; +static void setTracksRepaintsRecursive(Frame* frame, bool trackRepaints)
&gt; +{
&gt; +    if (!frame)
&gt; +        return;
&gt; +
&gt; +    if (RenderView* root = frame-&gt;contentRenderer())
&gt; +        root-&gt;compositor()-&gt;setTracksRepaints(trackRepaints);
&gt; +
&gt; +    for (unsigned i = 0; i &lt; frame-&gt;tree()-&gt;childCount(); ++i)
&gt; +        setTracksRepaintsRecursive(frame-&gt;tree()-&gt;child(i), trackRepaints);
&gt; +}

You can do this non-recursively; the FrameTree can enumerate all subframes for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756571</commentid>
    <comment_count>43</comment_count>
      <attachid>171917</attachid>
    <who name="">vollick</who>
    <bug_when>2012-11-01 13:31:02 -0700</bug_when>
    <thetext>Created attachment 171917
Patch

(In reply to comment #42)
&gt; (From update of attachment 171916 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171916&amp;action=review
&gt;
&gt; &gt; Source/WebCore/page/FrameView.cpp:3650
&gt; &gt; +static void setTracksRepaintsRecursive(Frame* frame, bool trackRepaints)
&gt; &gt; +{
&gt; &gt; +    if (!frame)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    if (RenderView* root = frame-&gt;contentRenderer())
&gt; &gt; +        root-&gt;compositor()-&gt;setTracksRepaints(trackRepaints);
&gt; &gt; +
&gt; &gt; +    for (unsigned i = 0; i &lt; frame-&gt;tree()-&gt;childCount(); ++i)
&gt; &gt; +        setTracksRepaintsRecursive(frame-&gt;tree()-&gt;child(i), trackRepaints);
&gt; &gt; +}
&gt;
&gt; You can do this non-recursively; the FrameTree can enumerate all subframes for you.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757373</commentid>
    <comment_count>44</comment_count>
      <attachid>171917</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-02 11:26:20 -0700</bug_when>
    <thetext>Comment on attachment 171917
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsLayer.cpp:49
&gt; +namespace {

I don&apos;t think there&apos;s any benefit having this in an anonymous namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757446</commentid>
    <comment_count>45</comment_count>
      <attachid>172104</attachid>
    <who name="">vollick</who>
    <bug_when>2012-11-02 12:13:26 -0700</bug_when>
    <thetext>Created attachment 172104
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757504</commentid>
    <comment_count>46</comment_count>
      <attachid>172104</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 12:59:16 -0700</bug_when>
    <thetext>Comment on attachment 172104
Patch for landing

Clearing flags on attachment: 172104

Committed r133332: &lt;http://trac.webkit.org/changeset/133332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757506</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 12:59:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169439</attachid>
            <date>2012-10-18 11:12:22 -0700</date>
            <delta_ts>2012-10-22 13:53:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121018141107.patch</filename>
            <type>text/plain</type>
            <size>18224</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM3NDM3ZmYzMWFhNzU0
NzhmYTZkMTJhYjA1MTZjMjQ2MjY5N2U1YS4uYmExN2RmN2RkZWRkODI3YTlkODJhMDg0ZTA2ZjQ2
Zjc2ZDgyY2NhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEwLTE4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgVGVzdFJ1bm5l
ci5kaXNwbGF5KCkgd29yayB3aXRoIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpdGggdGhpcyBwYXRjaCwgRnJhbWVWaWV3
IG5vdyBzdG9yZXMgRmxvYXRRdWFkcyB3aGVuIHRyYWNraW5nCisgICAgICAgIHJlcGFpbnQgcmVj
dHMgKHRoZXkgcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSwgdHJhbnNmb3JtZWQgcmVjdHMpLgorICAg
ICAgICBDb21wb3NpdGVkIGxheWVycyBhbmQgdGhlIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCBu
b3cgcmVwb3J0CisgICAgICAgIHRoZWlyIHRyYW5zZm9ybWVkIHJlcGFpbnQgcmVjdHMgYXMgd2Vs
bCAodGhlIE5DQ0ggc2VuZHMgdGhlbQorICAgICAgICBhbG9uZyB0byBpdHMgV2ViVmlldykuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmFkZFRyYW5zZm9ybWVkUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cmVzZXRUcmFja2VkUmVwYWludHMpOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dHJhY2tlZFRyYW5zZm9ybWVkUmVwYWludFJlY3RzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisKIDIwMTItMTAtMTYgIEp1
bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBS
ZW5kZXJPYmplY3QgZGVzdHJ1Y3Rpb24gZHVyaW5nIGRldGFjaCBhIHRvcC1kb3duIG9wZXJhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5ZDJmZjM0OTMzMWJhZTM3NWE4ZmQzZTI2
MDA5YjI0NmMzMmQ5ODBlLi5kYjQzOGExMTE5NzM2ZGZlZjVlNTQ2Y2Q1MWI0OTM4OWExZWRhMWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTE4
ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgVGVz
dFJ1bm5lci5kaXNwbGF5KCkgd29yayB3aXRoIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAgIFdp
dGggdGhpcyBwYXRjaCwgRnJhbWVWaWV3IG5vdyBzdG9yZXMgRmxvYXRRdWFkcyB3aGVuIHRyYWNr
aW5nCisgICAgICAgIHJlcGFpbnQgcmVjdHMgKHRoZXkgcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSwg
dHJhbnNmb3JtZWQgcmVjdHMpLgorICAgICAgICBDb21wb3NpdGVkIGxheWVycyBhbmQgdGhlIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdCBub3cgcmVwb3J0CisgICAgICAgIHRoZWlyIHRyYW5zZm9y
bWVkIHJlcGFpbnQgcmVjdHMgYXMgd2VsbCAodGhlIE5DQ0ggc2VuZHMgdGhlbQorICAgICAgICBh
bG9uZyB0byBpdHMgV2ViVmlldykuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBv
ZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXIt
ZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViV2lkZ2V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0OjpzdGFydFRyYWNraW5nUmVwYWludHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChXZWJL
aXQ6OldlYldpZGdldDo6YWRkVHJhbnNmb3JtZWRSZXBhaW50UmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYldpZGdldDo6dHJhY2tlZFRyYW5zZm9ybWVkUmVwYWludFJlY3RhbmdsZXMpOgorICAg
ICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzdGFydFRyYWNraW5nUmVwYWlu
dHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFk
ZFRyYW5zZm9ybWVkUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
dHJhY2tlZFRyYW5zZm9ybWVkUmVwYWludFJlY3RhbmdsZXMpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTEwLTE2ICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFN0dWIg
b3V0IGNocm9taXVtIHN1Y2Nlc3MgaGFuZGxlcnMgZm9yIGludGVnZXJzIGFuZCB1bmRlZmluZWQg
dmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMWJlMGM1NGMyNWFhOGE5OWI3
OTE4OTQ1MTY0ZGNmZjMwZTdjZDcxNS4uZjM1NzBiYmI2NmRlMTI4Zjk1YzIyMzc5NjQxMGZkZTQ0
ZjZhM2RiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9kZWZlcnJlZFJlcGFpbnREZWxheSA9IHNf
aW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKICAgICBtX2RlZmVycmVk
UmVwYWludFRpbWVyLnN0b3AoKTsKICAgICBtX2lzVHJhY2tpbmdSZXBhaW50cyA9IGZhbHNlOwot
ICAgIG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOworICAgIG1fdHJhY2tlZFRyYW5zZm9y
bWVkUmVwYWludFJlY3RzLmNsZWFyKCk7CiAgICAgbV9sYXN0UGFpbnRUaW1lID0gMDsKICAgICBt
X3BhaW50QmVoYXZpb3IgPSBQYWludEJlaGF2aW9yTm9ybWFsOwogICAgIG1faXNQYWludGluZyA9
IGZhbHNlOwpAQCAtMTkwNCw3ICsxOTA0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRDb250
ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKQogICAgIGlmICht
X2lzVHJhY2tpbmdSZXBhaW50cykgewogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0gcjsK
ICAgICAgICAgcmVwYWludFJlY3QubW92ZSgtc2Nyb2xsT2Zmc2V0KCkpOwotICAgICAgICBtX3Ry
YWNrZWRSZXBhaW50UmVjdHMuYXBwZW5kKHJlcGFpbnRSZWN0KTsKKyAgICAgICAgbV90cmFja2Vk
VHJhbnNmb3JtZWRSZXBhaW50UmVjdHMuYXBwZW5kKHJlcGFpbnRSZWN0KTsKICAgICB9CiAKICAg
ICBkb3VibGUgZGVsYXkgPSBtX2RlZmVycmluZ1JlcGFpbnRzID8gMCA6IGFkanVzdGVkRGVmZXJy
ZWRSZXBhaW50RGVsYXkoKTsKQEAgLTM2NDQsMTAgKzM2NDQsMTUgQEAgdm9pZCBGcmFtZVZpZXc6
OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJhY2tSZXBhaW50cykKICAgICBpZiAodHJhY2tSZXBh
aW50cyA9PSBtX2lzVHJhY2tpbmdSZXBhaW50cykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOworICAgIG1fdHJhY2tlZFRyYW5zZm9ybWVk
UmVwYWludFJlY3RzLmNsZWFyKCk7CiAgICAgbV9pc1RyYWNraW5nUmVwYWludHMgPSB0cmFja1Jl
cGFpbnRzOwogfQogCit2b2lkIEZyYW1lVmlldzo6YWRkVHJhbnNmb3JtZWRSZXBhaW50UmVjdChj
b25zdCBGbG9hdFF1YWQmIHRyYW5zZm9ybWVkUmVjdCkKK3sKKyAgICBtX3RyYWNrZWRUcmFuc2Zv
cm1lZFJlcGFpbnRSZWN0cy5hcHBlbmQodHJhbnNmb3JtZWRSZWN0KTsKK30KKwogdm9pZCBGcmFt
ZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5k
ZXggMWYxYWRiNDU5M2JlMzJlZmZhYWI3NGQzZGE3MWU5MWQ3ZTc5ZDlhNC4uMmVmOTE2Mzg1YjI2
ZWVlM2I3MzNmMDFkOWQwZmIyMzcyYmEzN2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlvbi5oIgpAQCAt
MzM4LDggKzMzOSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldFRyYWNrc1JlcGFpbnRz
KGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9p
c1RyYWNraW5nUmVwYWludHM7IH0KLSAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRzKCkgeyBt
X3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsgfQotICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYgdHJhY2tlZFJlcGFpbnRSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tlZFJlcGFpbnRS
ZWN0czsgfQorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKSB7IG1fdHJhY2tlZFRyYW5z
Zm9ybWVkUmVwYWludFJlY3RzLmNsZWFyKCk7IH0KKyAgICB2b2lkIGFkZFRyYW5zZm9ybWVkUmVw
YWludFJlY3QoY29uc3QgRmxvYXRRdWFkJik7CisgICAgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4m
IHRyYWNrZWRUcmFuc2Zvcm1lZFJlcGFpbnRSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tl
ZFRyYW5zZm9ybWVkUmVwYWludFJlY3RzOyB9CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2Nyb2xs
YWJsZUFyZWEqPiBTY3JvbGxhYmxlQXJlYVNldDsKICAgICB2b2lkIGFkZFNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhKik7CkBAIC01MjIsNyArNTI0LDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2Rpc2FibGVSZXBhaW50czsKIAogICAgIGJvb2wgbV9pc1RyYWNraW5nUmVwYWludHM7
IC8vIFVzZWQgZm9yIHRlc3RpbmcuCi0gICAgVmVjdG9yPEludFJlY3Q+IG1fdHJhY2tlZFJlcGFp
bnRSZWN0czsKKyAgICBWZWN0b3I8RmxvYXRRdWFkPiBtX3RyYWNrZWRUcmFuc2Zvcm1lZFJlcGFp
bnRSZWN0czsKIAogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAx
ZWY3NWU3YjI5ODJmZTU2Yzk3MDViYmUzYjNjZTdhNmY3YTBhZjcxLi5mZDEwZDljNTcwYzg3ZDE5
YjcyN2I0YWViM2VhYzRiNmIwZGI4ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTQ4NCw2ICsxNDg0LDEwIEBAIHN0YXRpYyB2
b2lkIHBhaW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0CiAvLyBVcC1jYWxsIGZyb20gY29tcG9zaXRpbmcgbGF5ZXIgZHJhd2lu
ZyBjYWxsYmFjay4KIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UgcGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVjdCYg
Y2xpcCkKIHsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHJlbmRlcmVyKCktPmZyYW1lKCkt
PnZpZXcoKTsKKyAgICBpZiAoZnJhbWVWaWV3LT5pc1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAg
ICAgZnJhbWVWaWV3LT5hZGRUcmFuc2Zvcm1lZFJlcGFpbnRSZWN0KHJlbmRlcmVyKCktPmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGNsaXApLCBTbmFwT2Zmc2V0Rm9yVHJhbnNmb3Jtcykp
OworCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS0+ZnJh
bWUoKS0+cGFnZSgpKQogICAgICAgICBwYWdlLT5zZXRJc1BhaW50aW5nKHRydWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAppbmRleCBmYTQ1NjIzOGEzYmQxNzhh
OWUxMmE5MjMyZThlMTc4YTNiMWYyYjNmLi5jODA3YmYzMWNiZWY2NTE5M2E3ZDk3NWE5MWYzZTI3
YjhkNDk3NmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
aWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApA
QCAtMzYsOCArMzYsMTAgQEAKICNpbmNsdWRlICJXZWJUZXh0SW5wdXRJbmZvLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJWZWN0b3IuaCIKIAogI2RlZmluZSBXRUJLSVRfSEFTX05FV19GVUxMU0NSRUVOX0FQ
SSAxCiAjZGVmaW5lIFdFQldJREdFVF9IQVNfU0VUQ09NUE9TSVRPUlNVUkZBQ0VSRUFEWSAxCkBA
IC01MCw3ICs1Miw2IEBAIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiBz
dHJ1Y3QgV2ViUG9pbnQ7CiBzdHJ1Y3QgV2ViUmVuZGVyaW5nU3RhdHM7Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwogCiBjbGFzcyBXZWJXaWRnZXQgewogcHVibGljOgpA
QCAtMTI1LDYgKzEyNiwyMCBAQCBwdWJsaWM6CiAgICAgLy8gYW5pbWF0ZSBvciBsYXlvdXQgaW4g
dGhpcyBjYXNlLgogICAgIHZpcnR1YWwgdm9pZCBjb21wb3NpdGUoYm9vbCBmaW5pc2gpID0gMDsK
IAorICAgIC8vIFN0YXJ0IHRyYWNraW5nIHJlcGFpbnQgcmVjdGFuZ2xlcy4gQ2xlYXJzIHRoZSBs
aXN0IG9mIHJlY3RhbmdsZXMKKyAgICAvLyBjb2xsZWN0ZWQgc28gZmFyLiBVc2VkIGZvciBsYXlv
dXQgdGVzdGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRUcmFja2luZ1JlcGFpbnRzKCkgeyB9
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UndmUgc3RhcnRlZCB0cmFja2luZyByZXBhaW50
IHJlY3RhbmdsZXMuCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBBZGRzIGEgdHJhbnNmb3JtZWQgcmVwYWludCBy
ZWN0YW5nbGUgdG8gdGhlIGxpc3Qgb2YgdHJhY2tlZCByZXBhaW50cy4KKyAgICB2aXJ0dWFsIHZv
aWQgYWRkVHJhbnNmb3JtZWRSZXBhaW50UmVjdChjb25zdCBXZWJGbG9hdFF1YWQmKSB7IH0KKwor
ICAgIC8vIFJldHVybnMgdGhlIGNvbGxlY3RlZCByZXBhaW50IHJlY3RhbmdsZXMgc2luY2Ugc3Rh
cnRUcmFja2luZ1JlcGFpbnRzKCkKKyAgICAvLyB3YXMgbGFzdCBjYWxsZWQuCisgICAgdmlydHVh
bCBXZWJWZWN0b3I8V2ViRmxvYXRRdWFkPiB0cmFja2VkVHJhbnNmb3JtZWRSZXBhaW50UmVjdGFu
Z2xlcygpIGNvbnN0IHsgcmV0dXJuIFdlYlZlY3RvcjxXZWJGbG9hdFF1YWQ+KCk7IH0KKwogICAg
IC8vIEluZGljYXRlcyB0aGF0IHRoZSBjb21wb3NpdGluZyBzdXJmYWNlIGFzc29jaWF0ZWQgd2l0
aCB0aGlzIFdlYldpZGdldCBpcwogICAgIC8vIHJlYWR5IHRvIHVzZS4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29tcG9zaXRvclN1cmZhY2VSZWFkeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDIx
Yjk3MjViMGVhNWQwMGEwOGJhMzY0MTZlNWI4MDVjMGYzZmViZTEuLjk0YmJkNzJkYzExMDk2MzUy
Mjc2MWNlNWIxOTUxMWNhYTk1Nzg2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRM
YXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkZsb2F0UXVhZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTgzLDYgKzE4
NCw5IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpwYWludENvbnRlbnRzKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDCiAgICAgV2ViQ29yZTo6SW50UmVjdCBhZGp1
c3RlZENsaXBSZWN0ID0gY2xpcFJlY3Q7CiAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKG1fbGF5
ZXJBZGp1c3QpOwogICAgIG1fd2ViVmlldy0+cGFpbnRSb290TGF5ZXIoY29udGV4dCwgYWRqdXN0
ZWRDbGlwUmVjdCk7CisKKyAgICBpZiAobV93ZWJWaWV3LT5pc1RyYWNraW5nUmVwYWludHMoKSkK
KyAgICAgICAgbV93ZWJWaWV3LT5hZGRUcmFuc2Zvcm1lZFJlcGFpbnRSZWN0KFdlYkZsb2F0UXVh
ZChXZWJDb3JlOjpGbG9hdFJlY3QoYWRqdXN0ZWRDbGlwUmVjdCkpKTsKIH0KIAogdm9pZCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCBzaG93RGVidWdC
b3JkZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IGQ2YmY5NGI5Njc2Mzk4NDc5NzQ2ZDhiMzMxN2MwNzE5MTM4OTVmMDYuLjkxZDVjZDMyZDlkMTUy
YmQ1NThhNDg3NzkzZmU5OTM1ODdmMTNmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQ0NSw2ICs0NDUsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmll
d0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2VuZGlmCiAgICAgLCBtX2ZsaW5nTW9kaWZp
ZXIoMCkKICAgICAsIG1fdmFsaWRhdGlvbk1lc3NhZ2UoVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnRJ
bXBsOjpjcmVhdGUoKmNsaWVudCkpCisgICAgLCBtX2lzVHJhY2tpbmdSZXBhaW50cyhmYWxzZSkK
IHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4
Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRo
aXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC0xODIxLDYgKzE4MjIsMzMg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJl
Y3QmIHJlY3QsIFBhaW50T3B0aW9ucyBvcHQKICAgICB9CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6
OnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpCit7CisgICAgaWYgKCFwYWdlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7
CisgICAgdmlldy0+c2V0VHJhY2tzUmVwYWludHModHJ1ZSk7CisgICAgdmlldy0+cmVzZXRUcmFj
a2VkUmVwYWludHMoKTsKKyAgICBtX2lzVHJhY2tpbmdSZXBhaW50cyA9IHRydWU7CisgICAgbV90
cmFja2VkVHJhbnNmb3JtZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJWaWV3
SW1wbDo6YWRkVHJhbnNmb3JtZWRSZXBhaW50UmVjdChjb25zdCBXZWJGbG9hdFF1YWQmIHF1YWQp
Cit7CisgICAgbV90cmFja2VkVHJhbnNmb3JtZWRSZXBhaW50UmVjdHMuYXBwZW5kKHF1YWQpOwor
fQorCitXZWJWZWN0b3I8V2ViRmxvYXRRdWFkPiBXZWJWaWV3SW1wbDo6dHJhY2tlZFRyYW5zZm9y
bWVkUmVwYWludFJlY3RhbmdsZXMoKSBjb25zdAoreworICAgIGlmICghcGFnZSgpKQorICAgICAg
ICByZXR1cm4gV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4oKTsKKworICAgIFZlY3RvcjxXZWJGbG9h
dFF1YWQ+IHRvUmV0dXJuID0gbV90cmFja2VkVHJhbnNmb3JtZWRSZXBhaW50UmVjdHM7CisgICAg
RnJhbWVWaWV3KiB2aWV3ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIHRvUmV0
dXJuLmFwcGVuZFZlY3Rvcih2aWV3LT50cmFja2VkVHJhbnNmb3JtZWRSZXBhaW50UmVjdHMoKSk7
CisgICAgcmV0dXJuIHRvUmV0dXJuOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjp0aGVtZUNoYW5n
ZWQoKQogewogICAgIGlmICghcGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggNDc5MDdmMTI0MTdlM2YyMjBhYzhiMDBmOTM2MGFlZmFhYTBkYWY0Mi4u
NDIyMDYwODc2ZGYxYTUyOGFkNDQ1NTQ1NTdiZjQ1MWY2NWY5YWZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xNDYsNiArMTQ2LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsgLy8gQWxzbyBpbXBsZW1lbnRzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ6OmxheW91dCgp
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmLCBQYWlu
dE9wdGlvbnMgPSBSZWFkYmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUpOworICAgIHZpcnR1
YWwgdm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pc1RyYWNr
aW5nUmVwYWludHM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNmb3JtZWRSZXBhaW50UmVj
dChjb25zdCBXZWJGbG9hdFF1YWQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlZlY3RvcjxX
ZWJGbG9hdFF1YWQ+IHRyYWNrZWRUcmFuc2Zvcm1lZFJlcGFpbnRSZWN0YW5nbGVzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBjb21wb3NpdGUoYm9vbCBmaW5pc2gpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Jl
ZHJhdygpOwpAQCAtODcyLDYgKzg3Niw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPExpbmtIaWdo
bGlnaHQ+IG1fbGlua0hpZ2hsaWdodDsKICNlbmRpZgogICAgIE93blB0cjxWYWxpZGF0aW9uTWVz
c2FnZUNsaWVudEltcGw+IG1fdmFsaWRhdGlvbk1lc3NhZ2U7CisKKyAgICBib29sIG1faXNUcmFj
a2luZ1JlcGFpbnRzOyAvLyBVc2VkIGZvciB0ZXN0aW5nLgorICAgIFZlY3RvcjxXZWJGbG9hdFF1
YWQ+IG1fdHJhY2tlZFRyYW5zZm9ybWVkUmVwYWludFJlY3RzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMTY2OGM2YmVmNWJhYWI3YzhhOTkyOTM1MzBlYjZhMDAzMDQ0YWJhOC4uMWNmM2RmYjM5
N2YwZTM3MWNlN2JhNjIxNTIyM2E1YWNmOTE1ZDY5MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTE4ICBJ
YW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgVGVzdFJ1
bm5lci5kaXNwbGF5KCkgd29yayB3aXRoIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAgIFdpdGgg
dGhpcyBwYXRjaCwgRnJhbWVWaWV3IG5vdyBzdG9yZXMgRmxvYXRRdWFkcyB3aGVuIHRyYWNraW5n
CisgICAgICAgIHJlcGFpbnQgcmVjdHMgKHRoZXkgcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSwgdHJh
bnNmb3JtZWQgcmVjdHMpLgorICAgICAgICBDb21wb3NpdGVkIGxheWVycyBhbmQgdGhlIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdCBub3cgcmVwb3J0CisgICAgICAgIHRoZWlyIHRyYW5zZm9ybWVk
IHJlcGFpbnQgcmVjdHMgYXMgd2VsbCAodGhlIE5DQ0ggc2VuZHMgdGhlbQorICAgICAgICBhbG9u
ZyB0byBpdHMgV2ViVmlldykuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6
OmRpc3BsYXkpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6ZGlzcGxheUludmFsaWRhdGVkUmVn
aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgor
ICAgICAgICAoVGVzdFNoZWxsOjpkdW1wKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c3RhcnRUcmFja2lu
Z1JlcGFpbnRzKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpwYWludFRyYWNrZWRSZXBhaW50UmVj
dGFuZ2xlT3ZlcmxheSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaDoKKyAgICAgICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0xMC0xNiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdIENyZWF0ZSBPYmplY3Rp
dmUtQyBBUEkgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdXNlciBzY3JpcHRzCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IDhhZWU3YzVi
MmM3NDAxMDRjODAyMjM4OTQ1OGEwYmZkZmMyOWQ0ZjguLjNlZTliNjc1NGY5NTY1ZjcxYWRhMjI0
NDRlZTQyNmFlOTNkN2JkMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB2b2lkIERSVFRlc3RSdW5u
ZXI6OmRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdAogICAgIFdlYlJlY3QgcmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7
CiAgICAgaG9zdC0+dXBkYXRlUGFpbnRSZWN0KHJlY3QpOwogICAgIGhvc3QtPnBhaW50SW52YWxp
ZGF0ZWRSZWdpb24oKTsKLSAgICBob3N0LT5kaXNwbGF5UmVwYWludE1hc2soKTsKKyAgICBob3N0
LT5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIApA
QCAtMTI3Myw3ICsxMjczLDcgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjpkaXNwbGF5SW52YWxpZGF0
ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEMKIHsKICAgICBXZWJW
aWV3SG9zdCogaG9zdCA9IG1fc2hlbGwtPndlYlZpZXdIb3N0KCk7CiAgICAgaG9zdC0+cGFpbnRJ
bnZhbGlkYXRlZFJlZ2lvbigpOwotICAgIGhvc3QtPmRpc3BsYXlSZXBhaW50TWFzaygpOworICAg
IGhvc3QtPnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCAz
MjU4NWZhYTFiMmQ4YWQ4MWE4M2IxNWU4ZjcxMmJkOGNhNzI0ODliLi42ZjlkYjBjNTQxMTc5NjU3
MTFkOTFlZWZjNDJiMzRmMTA1ZTQ1OTE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTYyNyw2ICs2MjcsNyBAQCB2b2lkIFRlc3RTaGVsbDo6ZHVt
cCgpCiAgICAgICAgICAgICBtX3dlYlZpZXdIb3N0LT5wYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMo
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV93ZWJWaWV3SG9zdC0+cGFpbnRJbnZhbGlk
YXRlZFJlZ2lvbigpOworICAgICAgICBtX3dlYlZpZXdIb3N0LT5wYWludFRyYWNrZWRSZXBhaW50
UmVjdGFuZ2xlT3ZlcmxheSgpOwogCiAgICAgICAgIC8vIFNlZSBpZiB3ZSBuZWVkIHRvIGRyYXcg
dGhlIHNlbGVjdGlvbiBib3VuZHMgcmVjdC4gU2VsZWN0aW9uIGJvdW5kcwogICAgICAgICAvLyBy
ZWN0IGlzIHRoZSByZWN0IGVuY2xvc2luZyB0aGUgKHBvc3NpYmx5IHRyYW5zZm9ybWVkKSBzZWxl
Y3Rpb24uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
aW5kZXggYzdhYjQ3NWU3ZmU3OWVmMThkNTI4ODJlMzU3MjZhNDU5NjU2ZDdlOS4uZTNkNjZiMDMx
ZWUxMDc1Yzc2MzMxOTdiNWY3NzE2MjQ1ZWNkNGFhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtMTk0NiwxMSArMTk0NiwzMiBAQCB2b2lk
IFdlYlZpZXdIb3N0OjpkaXNjYXJkQmFja2luZ1N0b3JlKCkKICAgICBtX2NhbnZhcy5jbGVhcigp
OwogfQogCi0vLyBQYWludHMgdGhlIGVudGlyZSBjYW52YXMgYSBzZW1pLXRyYW5zcGFyZW50IGJs
YWNrIChncmF5aXNoKS4gVGhpcyBpcyB1c2VkCi0vLyBieSB0aGUgbGF5b3V0IHRlc3RzIGluIGZh
c3QvcmVwYWludC4gVGhlIGFscGhhIHZhbHVlIG1hdGNoZXMgdXBzdHJlYW0uCi12b2lkIFdlYlZp
ZXdIb3N0OjpkaXNwbGF5UmVwYWludE1hc2soKQordm9pZCBXZWJWaWV3SG9zdDo6c3RhcnRUcmFj
a2luZ1JlcGFpbnRzKCkKIHsKLSAgICBjYW52YXMoKS0+ZHJhd0FSR0IoMTY3LCAwLCAwLCAwKTsK
KyAgICB3ZWJXaWRnZXQoKS0+c3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKK3ZvaWQgV2Vi
Vmlld0hvc3Q6OnBhaW50VHJhY2tlZFJlcGFpbnRSZWN0YW5nbGVPdmVybGF5KCkKK3sKKyAgICBT
a1BhdGggcGF0aDsKKyAgICBXZWJWZWN0b3I8V2ViRmxvYXRRdWFkPiBxdWFkcyA9IHdlYldpZGdl
dCgpLT50cmFja2VkVHJhbnNmb3JtZWRSZXBhaW50UmVjdGFuZ2xlcygpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU2tQb2ludCBwb2lu
dHNbXSA9IHsKKyAgICAgICAgICAgIFNrUG9pbnQ6Ok1ha2UocXVhZHNbaV0ucFswXS54LCBxdWFk
c1tpXS5wWzBdLnkpLAorICAgICAgICAgICAgU2tQb2ludDo6TWFrZShxdWFkc1tpXS5wWzFdLngs
IHF1YWRzW2ldLnBbMV0ueSksCisgICAgICAgICAgICBTa1BvaW50OjpNYWtlKHF1YWRzW2ldLnBb
Ml0ueCwgcXVhZHNbaV0ucFsyXS55KSwKKyAgICAgICAgICAgIFNrUG9pbnQ6Ok1ha2UocXVhZHNb
aV0ucFszXS54LCBxdWFkc1tpXS5wWzNdLnkpCisgICAgICAgIH07CisgICAgICAgIHBhdGguYWRk
UG9seShwb2ludHMsIDQsIHRydWUpOworICAgIH0KKworICAgIFdlYlNpemUgd2lkZ2V0U2l6ZSA9
IHdlYldpZGdldCgpLT5zaXplKCk7CisgICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRD
b2xvcigweEE3MDAwMDAwKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHls
ZSk7CisgICAgcGFpbnQuc2V0RmxhZ3MoU2tQYWludDo6a0FudGlBbGlhc19GbGFnKTsKKyAgICBj
YW52YXMoKS0+Y2xpcFBhdGgocGF0aCwgU2tSZWdpb246OmtEaWZmZXJlbmNlX09wKTsKKyAgICBj
YW52YXMoKS0+ZHJhd1JlY3RDb29yZHMoMCwgMCwgd2lkZ2V0U2l6ZS53aWR0aCwgd2lkZ2V0U2l6
ZS5oZWlnaHQsIHBhaW50KTsKIH0KIAogLy8gU2ltdWxhdGUgYSBwcmludCBieSBnb2luZyBpbnRv
IHByaW50IG1vZGUgYW5kIHRoZW4gZXhpdCBzdHJhaWdodCBhd2F5LgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggYzllMTdiMDdmZDhhNDUwMWEyOTA0
N2UzZGVkOTRjYWYwNmI0NDgwNS4uZDQxMTU4YjA0NTdiMzUwNmJjNmU1YTRkNTM0Nzk5MTEzMDdm
YzllOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBA
IC0xMDcsNyArMTA3LDggQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJW
aWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2b2lkIHBhaW50
SW52YWxpZGF0ZWRSZWdpb24oKTsKICAgICB2b2lkIHBhaW50UGFnZXNXaXRoQm91bmRhcmllcygp
OwogICAgIFNrQ2FudmFzKiBjYW52YXMoKTsKLSAgICB2b2lkIGRpc3BsYXlSZXBhaW50TWFzaygp
OworICAgIHZvaWQgc3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgdm9pZCBwYWludFRyYWNr
ZWRSZXBhaW50UmVjdGFuZ2xlT3ZlcmxheSgpOwogCiAgICAgdm9pZCBsb2FkVVJMRm9yRnJhbWUo
Y29uc3QgV2ViS2l0OjpXZWJVUkwmLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZnJhbWVOYW1l
KTsKICAgICBUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyKCkg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169974</attachid>
            <date>2012-10-22 13:53:38 -0700</date>
            <delta_ts>2012-10-23 13:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121022165216.patch</filename>
            <type>text/plain</type>
            <size>39617</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIwNjgwYjAzZWFhMTc3
YTAyNDkxODJkODAxOTc5M2EzNTI5ZGRmNC4uYWY2MDBjYjA3MWJmNWY5NzEwODUzMGY1ODRlY2Jl
MGQ2MTE3YjI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTEwLTIyICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgVGVzdFJ1bm5l
ci5kaXNwbGF5KCkgd29yayB3aXRoIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFja2luZyBvZiBncmFwaGlj
cyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJzCisgICAgICAgIGNhbiBu
b3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0
aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzKToKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoK
KyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldE5lZWRz
RGlzcGxheUluUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9H
cmFwaGljc0xheWVyQmxhY2tCZXJyeS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckJsYWNrQmVy
cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5l
ZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgIChSZW5kZXJM
YXllckJhY2tpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9z
aXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpzdGFydFRyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnN0b3BUcmFja2luZ1JlcGFpbnRzKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxMi0xMC0yMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgbW9udGhGb3JtYXRJbkxETUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYjJhMzhkMmI3NzIxM2EwMzViMDZjMmZkMTM1MjI0NTZiYzY1YWU4ZS4uYWFmNGU5
NDNlMTA0YTc3NTkzMWY4NjliNTdmZjYxZDNhYTlkZmExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0xMC0yMiAgSWFuIFZvbGxpY2sgIDx2b2xsaWNr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFRlc3RSdW5uZXIuZGlzcGxheSgpIHdvcmsg
d2l0aCBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbGxvd3MgdHJhY2tpbmcgb2YgZ3JhcGhpY3MgbGF5ZXIgaW52YWxpZGF0
aW9ucy4gVGhlIGdyYXBoaWNzIGxheWVycworICAgICAgICBjYW4gbm93IHN0b3JlIChsb2NhbCkg
aW52YWxpZGF0aW9uIHJlY3RzIGFuZCBpbmNsdWRlIHRoZW0gaW4gdGhlCisgICAgICAgIGxheWVy
IHRyZWUgZHVtcC4KKworICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAgKFdl
YldpZGdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6c3RhcnRUcmFja2luZ1JlcGFp
bnRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0OjpzdG9wVHJhY2tpbmdSZXBhaW50cyk6
CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAg
ICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAg
ICAgIChOb25Db21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAqIHNyYy9QYWdlT3Zlcmxh
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1wbDo6
aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKE92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50
SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnN0YXJ0VHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c3RvcFRyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9HcmFwaGlj
c0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TW9ja0dyYXBoaWNzTGF5
ZXJDbGllbnQ6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgICogdGVzdHMvSW1hZ2VMYXll
ckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR3JhcGhpY3NMYXllckNs
aWVudDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKwogMjAxMi0xMC0yMiAgS2Vpc2hpIEhhdHRvcmkg
IDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbW9udGhGb3JtYXRJbkxETUwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMzQxNDNlNjkxMTQzMzljNGQyYTY2M2IzNmIzNWNmNTc3MjViOWIxLi4x
ZGU3Y2EzM2I1NDQzYTc2MjgyMGE0MzM2YjY0NWQ0ZGVmYjcxZGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMTAtMjIgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgTWFrZSBUZXN0UnVubmVyLmRpc3BsYXkoKSB3b3JrIHdpdGggY29tcG9z
aXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3ODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWxsb3dzIHRyYWNraW5nIG9mIGdyYXBoaWNzIGxheWVyIGludmFsaWRhdGlvbnMuIFRoZSBn
cmFwaGljcyBsYXllcnMKKyAgICAgICAgY2FuIG5vdyBzdG9yZSAobG9jYWwpIGludmFsaWRhdGlv
biByZWN0cyBhbmQgaW5jbHVkZSB0aGVtIGluIHRoZQorICAgICAgICBsYXllciB0cmVlIGR1bXAu
CisKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKwogMjAxMi0xMC0yMiAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVp
bGQgd2l0aG91dCBRdFdpZGdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMjc4ZDIyNGM5ZDY5
MmMyYWMyNTA4ZmMzODAzMmExMTUyZGE2ZTdjNC4uNjQ3YzBjYjNmMmExNGYzNjYzOWI4ZGI5MjEw
Yzc1OTQ4ZWY1ZDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI2Myw2ICsyNjMsOCBAQCBf
X1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNWNsZWFyRXYKIF9fWk43V2ViQ29yZTE0RnJhbWVT
ZWxlY3Rpb242bW9kaWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9u
RU5TXzE1VGV4dEdyYW51bGFyaXR5RU5TXzE0RVVzZXJUcmlnZ2VyZWRFCiBfX1pON1dlYkNvcmUx
NEZyYW1lU2VsZWN0aW9uOXNlbGVjdEFsbEV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9u
QzFFUE5TXzVGcmFtZUUKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRz
RWIKK19fWk43V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMjRyZXNldFRyYWNrZWRSZXBh
aW50UmVjdHNFdgogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEycGx1Z2luV2lkZ2V0RXYK
IF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXIxMmNyZWF0ZU5TRGF0YUV2CiBfX1pON1dlYkNv
cmUxNFJlc291cmNlQnVmZmVyRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCAzYTMyYjUxNDViOTI3ZWRhZWQ0NWY5MTll
NWQ2MDk1MTUxYzQ0M2UzLi43ZGNiMTZjYTQwODk2ZjNjZTEyODZjYTZiYTYwNTE5MWY2OWE4N2Zl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcApAQCAtNjYxLDYgKzY2MSwyMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9w
ZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50LCBMYXllclRyZWVBc1RleHRCZQogICAg
ICAgICAgICAgdHMgPDwgIiAiIDw8IG1fcmVwbGljYXRlZExheWVyOzsKICAgICAgICAgdHMgPDwg
IilcbiI7CiAgICAgfQorCisgICAgaWYgKCFtX3RyYWNrZWRSZXBhaW50UmVjdHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwg
IihyZXBhaW50IHJlY3RzXG4iOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdHJh
Y2tlZFJlcGFpbnRSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fdHJhY2tl
ZFJlcGFpbnRSZWN0c1tpXS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMik7CisgICAgICAgICAgICB0cyA8
PCAiKHJlY3QgIjsKKyAgICAgICAgICAgIHRzIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0c1tpXS54
KCkgPDwgIiAiOworICAgICAgICAgICAgdHMgPDwgbV90cmFja2VkUmVwYWludFJlY3RzW2ldLnko
KSA8PCAiICI7CisgICAgICAgICAgICB0cyA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0ud2lk
dGgoKSA8PCAiICI7CisgICAgICAgICAgICB0cyA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0u
aGVpZ2h0KCk7CisgICAgICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgfQorICAgIH0KICAg
ICAKICAgICBkdW1wQWRkaXRpb25hbFByb3BlcnRpZXModHMsIGluZGVudCwgYmVoYXZpb3IpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oCmluZGV4IGU2N2ExN2VhZTA0OThiYjI1YmFjMDE4NmFmMjk4ZGYyZjY5MjI3OWEuLjgxYmJk
NjRkZGJiY2M0MmU0Y2U2MDIyYmVjZWVmNDI4Y2RjNDJmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM1LDYgKzM1LDcgQEAK
ICNlbmRpZgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0Qu
aCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNDAz
LDYgKzQwNCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJh
Y2tpbmcoKSB7IHJldHVybiAwOyB9CiAKKyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0
cygpIHsgbV90cmFja2VkUmVwYWludFJlY3RzLmNsZWFyKCk7IH0KKwogI2lmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICAvLyBUaGlzIGFsbG93cyBz
ZXZlcmFsIGFsdGVybmF0aXZlIEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBz
YW1lIHBvcnQsCiAgICAgLy8gZS5nLiBpZiBhIGRpZmZlcmVudCBHcmFwaGljc0xheWVyIGltcGxl
bWVudGF0aW9uIGlzIG5lZWRlZCBpbiBXZWJLaXQxIHZzLiBXZWJLaXQyLgpAQCAtNDk3LDYgKzUw
MCw3IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0IG1fY29udGVudHNSZWN0OwogCiAgICAgaW50
IG1fcmVwYWludENvdW50OworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fdHJhY2tlZFJlcGFpbnRS
ZWN0czsgLy8gVXNlZCBmb3IgZGVidWdnaW5nLgogCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRpYyBHcmFwaGljc0xheWVyOjpHcmFw
aGljc0xheWVyRmFjdG9yeUNhbGxiYWNrKiBzX2dyYXBoaWNzTGF5ZXJGYWN0b3J5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVu
dC5oCmluZGV4IDNlMTA1Y2U2YjM5YWVhMWEyOTVlZTFmZjM2YzJmMzllNzBiZTI2ZDIuLmMwN2Nh
OTA2NGIyOTkxMWYxZjViYzZkMjJjMTA4ODNmYjg2MjBiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKQEAgLTg1
LDYgKzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBh
aW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgPSAwOwogCisgICAgdmlydHVh
bCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0ID0gMDsKKwogI2lmbmRlZiBOREVCVUcK
ICAgICAvLyBSZW5kZXJMYXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMgdG8gdmVyaWZ5IHRoYXQg
aXQgaXMgbm90CiAgICAgLy8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRlbnRzLiBBbiBBU1NFUlQg
ZmFpbHMsIGlmIGl0IGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5
LmNwcAppbmRleCBjMWE3MDNhY2QyZmRkODgzZjBhZGY0NTM3MTk0N2U0NzUxZGE2NzBmLi5mYTBm
MmM1NDZmNjdlZThiYjg5ZmMzZDA4NjUyZTJkY2NjYmE2ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApAQCAtMzc5LDIwICszNzksMzAgQEAgdm9pZCBH
cmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0g
ICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAg
ICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICAgICAgaWYgKG1f
Y2xpZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgICAgIG1fdHJhY2tlZFJlcGFp
bnRSZWN0cy5hcHBlbmQoY29udGVudHNSZWN0KCkpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGlj
c0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250
ZW50KCkpCiAgICAgICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAgaWYgKG1f
Y2xpZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJl
Y3RzLmFwcGVuZChGbG9hdFJlY3QobV9wb3NpdGlvbiwgbV9zaXplKSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllckJsYWNrQmVycnk6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQogICAgICAgICBtX2xheWVyLT5z
ZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisKKyAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tp
bmdSZXBhaW50cygpKQorICAgICAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuYXBwZW5kKHJlY3Qp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnku
aAppbmRleCA1Yzg2MTI2NGU1NjYxYjQwYmQxNDcxOTc3YTJhNDlmOTIxYmQzNjk0Li5hNjIzMTg5
ZDMyNGI2ZjUzMWVhOGY2NmMzNjhkNTlhMDYyZDgxNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFw
aGljc0xheWVyQmxhY2tCZXJyeS5oCkBAIC05Myw5ICs5MywxMSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5SW50ZXJuYWwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0SW50
ZXJuYWwoY29uc3QgRmxvYXRSZWN0Jik7CiAKK3B1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYTc0YmIxY2QwZmQ1NTNjM2Mx
NTI5ODFlNzU5MWMwOWQyMzk3NWIyYy4uNjAzZGQxNTIwODUxZGYzYWIzNDE5NzE5YThmOGU2MmJk
M2U0NTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC02NzAsNiArNjcwLDkgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAg
ICAgIG1fZGlydHlSZWN0c1swXS51bml0ZShyZWN0KTsKIAogICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZChEaXJ0eVJlY3RzQ2hhbmdlZCk7CisKKyAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tp
bmdSZXBhaW50cygpKQorICAgICAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuYXBwZW5kKHJlY3Qp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDc1NzQ5ZTlhMWI4ZWM2
MTdmZGVjYTg5Y2ZmZDJlNDlhODgyOTY4ZC4uN2QyZTQ4NmQzY2VkYTlhZDEwM2FhZDhlOGEwY2Rj
MzNhNGM3Yjg0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00
MzQsMTYgKzQzNCwzMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVwbGljYXRl
ZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKFdlYkxheWVyKiBjb250
ZW50c0xheWVyID0gY29udGVudHNMYXllcklmUmVnaXN0ZXJlZCgpKQorICAgIGlmIChXZWJMYXll
ciogY29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXJJZlJlZ2lzdGVyZWQoKSkgewogICAgICAg
ICBjb250ZW50c0xheWVyLT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgaWYgKG1fY2xpZW50LT5p
c1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgICAgIG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5h
cHBlbmQoY29udGVudHNSZWN0KCkpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAg
ICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKLSAgICAgICAgaWYgKG1fbGlu
a0hpZ2hsaWdodCkKKworICAgICAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tpbmdSZXBhaW50cygp
KQorICAgICAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3RzLmFwcGVuZChGbG9hdFJlY3QobV9w
b3NpdGlvbiwgbV9zaXplKSk7CisKKyAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkgewogICAg
ICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgICAgIG1f
dHJhY2tlZFJlcGFpbnRSZWN0cy5hcHBlbmQoRmxvYXRSZWN0KAorICAgICAgICAgICAgICAgIG1f
bGlua0hpZ2hsaWdodC0+bGF5ZXIoKS0+cG9zaXRpb24oKS54LAorICAgICAgICAgICAgICAgIG1f
bGlua0hpZ2hsaWdodC0+bGF5ZXIoKS0+cG9zaXRpb24oKS55LAorICAgICAgICAgICAgICAgIG1f
bGlua0hpZ2hsaWdodC0+bGF5ZXIoKS0+Ym91bmRzKCkud2lkdGgsCisgICAgICAgICAgICAgICAg
bV9saW5rSGlnaGxpZ2h0LT5sYXllcigpLT5ib3VuZHMoKS5oZWlnaHQpKTsKKyAgICAgICAgfQog
ICAgIH0KIH0KIApAQCAtNDUxLDggKzQ2NiwxOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBp
ZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0
ZVJlY3QocmVjdCk7Ci0gICAgICAgIGlmIChtX2xpbmtIaWdobGlnaHQpCisKKyAgICAgICAgaWYg
KG1fY2xpZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgICAgIG1fdHJhY2tlZFJl
cGFpbnRSZWN0cy5hcHBlbmQocmVjdCk7CisKKyAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkg
ewogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAg
ICAgIG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5hcHBlbmQoRmxvYXRSZWN0KAorICAgICAgICAgICAg
ICAgIG1fbGlua0hpZ2hsaWdodC0+bGF5ZXIoKS0+cG9zaXRpb24oKS54LAorICAgICAgICAgICAg
ICAgIG1fbGlua0hpZ2hsaWdodC0+bGF5ZXIoKS0+cG9zaXRpb24oKS55LAorICAgICAgICAgICAg
ICAgIG1fbGlua0hpZ2hsaWdodC0+bGF5ZXIoKS0+Ym91bmRzKCkud2lkdGgsCisgICAgICAgICAg
ICAgICAgbV9saW5rSGlnaGxpZ2h0LT5sYXllcigpLT5ib3VuZHMoKS5oZWlnaHQpKTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAppbmRleCAx
MDRiNzk4MmIwZGEwYzEwZmRhM2E4NTVjMmEzMWRiMjczODI3OTYwLi40OTRkMzhiMDU4ZmZkN2I1
MGI3MGZmNDkwMWE4Njg4ODgxNjM1MTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVy
LmNwcApAQCAtNjcsMTEgKzY3LDE3IEBAIENsdXR0ZXJBY3RvciogR3JhcGhpY3NMYXllckNsdXR0
ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0
TmVlZHNEaXNwbGF5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgaWYgKG1fY2xp
ZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3Rz
LmFwcGVuZChGbG9hdFJlY3QobV9wb3NpdGlvbiwgbV9zaXplKSk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmKQor
dm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgaWYgKG1fY2xp
ZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3Rz
LmFwcGVuZChyZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNDI5NTRhNDk5NjFjYTNjZmZkZTZk
M2ZlYWQzODgwZGRjMDRkOTZjYy4uZjg3MmRhYTE0MzcxZjVlOTM0NGQzMWFkNTY1NTRmNTRhY2My
NjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC04
Nyw2ICs4Nyw5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlz
cGxheSgpCiB7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVlOwogICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworCisgICAgaWYgKG1fY2xpZW50LT5p
c1RyYWNraW5nUmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3RzLmFwcGVu
ZChGbG9hdFJlY3QobV9wb3NpdGlvbiwgbV9zaXplKSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhp
Y3NMYXllci5oKQpAQCAtOTQsNiArOTcsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFw
cGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworCisgICAgaWYgKG1fY2xpZW50LT5pc1RyYWNraW5n
UmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3RzLmFwcGVuZChjb250ZW50
c1JlY3QoKSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAtMTA0LDYgKzEx
MCw5IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUlu
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHJldHVybjsKICAgICBtX25lZWRz
RGlzcGxheVJlY3QudW5pdGUocmVjdCk7CiAgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJM
YXllcjo6RGlzcGxheUNoYW5nZSk7CisKKyAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tpbmdSZXBh
aW50cygpKQorICAgICAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuYXBwZW5kKHJlY3QpOwogfQog
CiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggOGMxNDdlMTQxN2JmNzFmMTgxNjhhMDJm
YWY5NDUzZTk3NjkyNDYxZi4uYTk5YzQwOGI1NTI1ZjNmNDlhZmM4MTkwOTRjYmM0MzRhYWYzNjQ2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTE1NjUsNiArMTU2NSwxMSBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c2hvd1Jl
cGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdAogICAgIHJldHVybiBjb21w
b3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPmNvbXBvc2l0b3JTaG93UmVwYWludENvdW50ZXIoKSA6
IGZhbHNlOwogfQogCitib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNUcmFja2luZ1JlcGFpbnRz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+dmlldygpLT5pc1Ry
YWNraW5nUmVwYWludHMoKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp2ZXJpZnlOb3RQYWludGluZygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggOTQ2OGZlOWQzMDAyNzMzZjYyNTQ5NzdmZmI2
ZjE5ZWNmOWY5MjQ5MC4uYjUxN2IyMjlmOTM5NzBjOGY0YWIxN2E4OTAwNzVkOGNmMjE1YzdmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAt
MTU0LDYgKzE1NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVy
cyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7CisKICNpZm5k
ZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeU5vdFBhaW50aW5nKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKaW5kZXggNTU2NjRjMjI4NDVmMGE1MmNmNmMzZDM4Zjc5NDA2MGZhMzYyMzI5NC4uYjEyNzlk
YWI5ZGU0Y2QxNDg2YjE3MTY4YTUwODEzNDM2M2U0MDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTE5NzksNiArMTk3
OSwyNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29s
b3JEaWRDaGFuZ2UoKQogICAgIGdyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihiYWNr
Z3JvdW5kQ29sb3IpOwogfQogCitzdGF0aWMgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNS
ZWN1cnNpdmUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBpZiAoIWdyYXBo
aWNzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGdyYXBoaWNzTGF5ZXItPnJlc2V0VHJh
Y2tlZFJlcGFpbnRSZWN0cygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFwaGlj
c0xheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBh
aW50UmVjdHNSZWN1cnNpdmUoZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKVtpXSk7Cit9CisKK3Zv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKQorewor
ICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHJvb3RSZW5kZXJMYXllcigpLT5iYWNr
aW5nKCk7CisgICAgaWYgKCFiYWNraW5nIHx8ICFiYWNraW5nLT51c2luZ1RpbGVDYWNoZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyID0gYmFj
a2luZy0+Z3JhcGhpY3NMYXllcigpOworICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vy
c2l2ZShncmFwaGljc0xheWVyKTsKK30KKwogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNo
b3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpIGNvbnN0CiB7CiAgICAg
aWYgKGxheWVyID09IG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyIHx8IGxheWVyID09IG1f
bGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciB8fCBsYXllciA9PSBtX2xheWVyRm9yU2Nyb2xsQ29y
bmVyKQpAQCAtMTk5NSw2ICsyMDE2LDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpz
aG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNUcmFja2lu
Z1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBy
b290UmVuZGVyTGF5ZXIoKS0+YmFja2luZygpOworICAgIGlmICghYmFja2luZykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGJhY2tpbmctPmlzVHJhY2tpbmdSZXBhaW50cygp
OworfQorCiBmbG9hdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldmljZVNjYWxlRmFjdG9yKCkg
Y29uc3QKIHsKICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDI1OTFjODgyYWM0
OWIwNGQyY2M0MjJkYThkYzQ2NDc2Zjg3ZGM1ZGYuLjU5YWEwOWFlZTM5NGMyYzRkMTZhZmE4M2Fm
MzA5MjAwNDkzOGEzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTIyNiw2ICsyMjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRvY3VtZW50QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAKKyAgICB2b2lkIHJlc2V0VHJh
Y2tlZFJlcGFpbnRSZWN0cygpOworCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAK
QEAgLTIzNiw3ICsyMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1
Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9W
RVJSSURFOwotICAgIAorCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNv
bnN0IE9WRVJSSURFOworCiAgICAgLy8gR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgaW1wbGVt
ZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hMYXllcnMoR3JhcGhpY3NMYXllclVwZGF0
ZXIqKSBPVkVSUklERTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBjMjZkNmVhNGY5NzhhNzU0MjcwMmEwNmY1YTRlNjM4MTI3YTM0NWRkLi4zNGUxM2YzNTBhZWQ4
ZTI3YzFlMWFmM2YwZjVmNDFjZjRmODUyMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC02NCw4ICs2NCwxMCBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
cmludENvbnRleHQuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVy
Q29tcG9zaXRvci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
clRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKQEAgLTEzNzAsNCArMTM3MiwzNyBAQCBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IEludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0CiAgICAgcmV0
dXJuIHN0cmluZ0xpc3QucmVsZWFzZSgpOwogfQogCit2b2lkIEludGVybmFsczo6c3RhcnRUcmFj
a2luZ1JlcGFpbnRzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKKyAgICBmcmFtZVZpZXctPnNldFRyYWNr
c1JlcGFpbnRzKHRydWUpOworICAgIGZyYW1lVmlldy0+cmVzZXRUcmFja2VkUmVwYWludHMoKTsK
KworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBkb2N1bWVudC0+cmVuZGVyVmlldygpOwor
ICAgIGlmICghcmVuZGVyVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yKiBjb21wb3NpdG9yID0gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpOworICAgIGlm
ICghY29tcG9zaXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29tcG9zaXRvci0+cmVzZXRU
cmFja2VkUmVwYWludFJlY3RzKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzdG9wVHJhY2tpbmdS
ZXBhaW50cyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IGRvY3VtZW50LT52aWV3KCk7CisgICAgZnJhbWVWaWV3LT5zZXRUcmFja3NSZXBh
aW50cyhmYWxzZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGJi
YzVjNWI3YjlkNTE5NTIzYThhYmU2ZWVlZDU5NWNhZDBiM2Y2ZTQuLmFjYWUwMGNkMTcwY2MzODY1
YjVkZDI0NjQ1ODg2YzU3ZjdiMDRmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApA
QCAtMjI4LDYgKzIyOCw5IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gZ2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OwogCisgICAgdm9pZCBzdGFydFRyYWNr
aW5nUmVwYWludHMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzdG9wVHJh
Y2tpbmdSZXBhaW50cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERv
Y3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNzdi
YTY2MDEwMjFkNThlNWI3ZjBiMjAwNGQyMWJiNDFiZThkNDFiMC4uMGVjNWJhZjc3ODkxZmEwNDBj
ZDZmYzlhYzg2ZGEzMmFhYTk3NzdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bApAQCAtMTk5LDQgKzE5OSw3IEBACiAgICAgTWFsbG9jU3RhdGlzdGljcyBtYWxsb2NTdGF0aXN0
aWNzKCk7CiAKICAgICBET01TdHJpbmdbXSBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CisKKyAg
ICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOworICAgIHZvaWQgc3RvcFRyYWNraW5nUmVwYWludHMoaW4gRG9jdW1l
bnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGZhNDU2MjM4YTNiZDE3OGE5ZTEyYTkyMzJl
OGUxNzhhM2IxZjJiM2YuLmE0NDBhNzIwMGRiZjk2OWJmZGRmNGQ4MDYzZWVhY2I3ZDZiZjYwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCkBAIC0xMjUsNiAr
MTI1LDE3IEBAIHB1YmxpYzoKICAgICAvLyBhbmltYXRlIG9yIGxheW91dCBpbiB0aGlzIGNhc2Uu
CiAgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCkgPSAwOwogCisgICAgLy8g
U3RhcnQgdHJhY2tpbmcgcmVwYWludCByZWN0YW5nbGVzLiBDbGVhcnMgdGhlIGxpc3Qgb2YgcmVj
dGFuZ2xlcworICAgIC8vIGNvbGxlY3RlZCBzbyBmYXIuIFVzZWQgZm9yIGxheW91dCB0ZXN0aW5n
LgorICAgIHZpcnR1YWwgdm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoKSB7IH0KKworICAgIC8v
IFN0b3AgdHJhY2tpbmcgcmVwYWludCByZWN0YW5nbGVzLiBEb2VzIG5vdCBjbGVhciB0aGUgbGlz
dCBvZiByZWN0YW5nbGVzCisgICAgLy8gY29sbGVjdGVkIHNvIGZhci4gVXNlZCBmb3IgbGF5b3V0
IHRlc3RpbmcuCisgICAgdmlydHVhbCB2b2lkIHN0b3BUcmFja2luZ1JlcGFpbnRzKCkgeyB9CisK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UndmUgc3RhcnRlZCB0cmFja2luZyByZXBhaW50IHJl
Y3RhbmdsZXMuCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcg
c3VyZmFjZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJXaWRnZXQgaXMKICAgICAvLyByZWFkeSB0
byB1c2UuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmNwcAppbmRleCAyMWI5NzI1YjBlYTVkMDBhMDhiYTM2NDE2ZTViODA1YzBmM2Zl
YmUxLi4yM2RjZGRlOWI3OWI0OTg5NWEyZjIyMWI3YmE1MTAwYTM2Y2MzYTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5jcHAKQEAgLTIwMSw0ICsyMDEsOSBAQCBib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6
c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tp
bmdSZXBhaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+aXNUcmFja2luZ1Jl
cGFpbnRzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCAwOGU5
YzY5YjJmN2NhMWYzZTRjODAwZTg5MjI4MTljMmU5NTZiY2I0Li4yYjZkZGMxYWFiMDAyNjE1ZTJi
OTFmNzg5YTY2NWQ0M2YyYjViMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtNzMsNiArNzMsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOwogICAg
IHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2lu
Z1JlcGFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGhhdmVTY3JvbGxMYXllcigpOwogICAgIFdl
YkxheWVyKiBzY3JvbGxMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92
ZXJsYXkuY3BwCmluZGV4IGExNmEwMTA3N2ViMzVhYmM4MjcwODc3OTkyOTUzNjU0OWM0YjhmNjMu
LmYxYmE3YThmNzQwNDNmNmMzYTAxMGZlYzNkYzg2YzM0ODZjYWRiYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9QYWdlT3ZlcmxheS5jcHAKQEAgLTEwNCw2ICsxMDQsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV93ZWJWaWV3SW1wbC0+cGFnZSgpLT5zZXR0aW5ncygpLT5z
aG93UmVwYWludENvdW50ZXIoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2lu
Z1JlcGFpbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dlYlZpZXdJbXBsLT5p
c1RyYWNraW5nUmVwYWludHMoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgT3ZlcmxheUdyYXBo
aWNzTGF5ZXJDbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwgV2ViUGFnZU92ZXJs
YXkqIG92ZXJsYXkpCiAgICAgICAgIDogbV9vdmVybGF5KG92ZXJsYXkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggOWYyYTg0NWRkZmY5OGY4ODliYWZj
NmFiMDFlNGRmNzY3NTIxNTdhZi4uYmNlOWQ1NjY4OWI0OGZmM2EwOTJmNjkzYTBiNzc0NzM2NGQ2
ZjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
NDQ1LDYgKzQ0NSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQpCiAjZW5kaWYKICAgICAsIG1fZmxpbmdNb2RpZmllcigwKQogICAgICwgbV92YWxpZGF0
aW9uTWVzc2FnZShWYWxpZGF0aW9uTWVzc2FnZUNsaWVudEltcGw6OmNyZWF0ZSgqY2xpZW50KSkK
KyAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRzKGZhbHNlKQogewogICAgIC8vIFdlYktpdC93aW4v
V2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAg
ICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8g
aGF2ZSB0aHJlYWRpbmcKQEAgLTE4MjQsNiArMTgyNSw0MCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpw
YWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25z
IG9wdAogICAgIH0KIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRUcmFja2luZ1JlcGFpbnRz
KCkKK3sKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lVmlldyog
dmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICB2aWV3LT5zZXRUcmFja3NS
ZXBhaW50cyh0cnVlKTsKKyAgICB2aWV3LT5yZXNldFRyYWNrZWRSZXBhaW50cygpOworCisgICAg
aWYgKCFpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KTsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsK
KyAgICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSByZW5kZXJWaWV3LT5jb21w
b3NpdG9yKCk7CisKKyAgICBjb21wb3NpdG9yLT5yZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKTsK
K30KKwordm9pZCBXZWJWaWV3SW1wbDo6c3RvcFRyYWNraW5nUmVwYWludHMoKQoreworICAgIGlm
ICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZSgp
LT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIHZpZXctPnNldFRyYWNrc1JlcGFpbnRzKGZhbHNl
KTsKK30KKworYm9vbCBXZWJWaWV3SW1wbDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sK
KyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lVmlldyog
dmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICByZXR1cm4gdmlldy0+aXNU
cmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnRoZW1lQ2hhbmdlZCgp
CiB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCA0NzkwN2YxMjQxN2UzZjIyMGFjOGIwMGY5MzYwYWVmYWFhMGRhZjQyLi44ODNl
N2JlMzIzZGI3ZDAyZGVmMGRkNDVkYTVlZmVjNTQzZGIzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE0Niw2ICsxNDYsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGFuaW1hdGUoZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7
IC8vIEFsc28gaW1wbGVtZW50cyBXZWJMYXllclRyZWVWaWV3Q2xpZW50OjpsYXlvdXQoKQogICAg
IHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiwgUGFpbnRPcHRp
b25zID0gUmVhZGJhY2tGcm9tQ29tcG9zaXRvcklmQXZhaWxhYmxlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RhcnRUcmFja2luZ1JlcGFpbnRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0
b3BUcmFja2luZ1JlcGFpbnRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzVHJhY2tp
bmdSZXBhaW50cygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5n
ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKQEAgLTg3Miw2ICs4NzUsOSBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxMaW5rSGlnaGxpZ2h0PiBtX2xpbmtIaWdobGlnaHQ7CiAjZW5kaWYKICAgICBP
d25QdHI8VmFsaWRhdGlvbk1lc3NhZ2VDbGllbnRJbXBsPiBtX3ZhbGlkYXRpb25NZXNzYWdlOwor
CisgICAgYm9vbCBtX2lzVHJhY2tpbmdSZXBhaW50czsgLy8gVXNlZCBmb3IgdGVzdGluZy4KKyAg
ICBWZWN0b3I8V2ViRmxvYXRRdWFkPiBtX3RyYWNrZWRUcmFuc2Zvcm1lZFJlcGFpbnRSZWN0czsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMGNl
ODQyNTdiNWJhN2JiODMwMWVlN2VkNjEzN2JiNWRiMDQ0NWZlNy4uMWMxMDFhMjMxOGFjMjViMjEy
MTk1OWE5OTllODc0ZGVhNTU2MzA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01NCw2ICs1
NCw3IEBAIGNsYXNzIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5
ZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNz
TGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29u
c3QgSW50UmVjdCYgaW5DbGlwKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvd0Rl
YnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAy
OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdl
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFn
ZUxheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBiZmIwM2VkMzA0ZjQ5OGM4M2QwOGVmZDcxNTNi
NjFhYTYyZmVlNWI1Li5lMDdlZWQyNGM4NjViYTNmNTlkOWViYzIwZWRiOTVkYzNhMWI1ODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgTW9ja0dyYXBoaWNzTGF5ZXJD
bGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBo
aWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBpbkNsaXApIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29u
c3QgR3JhcGhpY3NMYXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiBj
bGFzcyBUZXN0SW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpp
bmRleCAyMWNhMmZmNmNlM2FiYmU3Y2U3MTQ2MTQ1M2RjNjM1ZTI5ZTM2ZWYwLi5lMjlkY2FiYWQ5
NjE4NDZkOWQxYzhhOGYwNGQ5NGI0NzQ0MTZlNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRl
cgpAQCAtMzM4NCwzICszMzg0LDUgQEAgX1dLQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFuaW1h
dGlvbgogX1dLQXBwS2l0RHJhd0RlY295V2luZG93X2lzS2V5V2luZG93CiBfX1pONldlYktpdDdX
ZWJQYWdlMzZzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjZXZWJL
aXQ3V2ViUGFnZTM1cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgorX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgorX19aTjdXZWJDb3JlMjFSZW5k
ZXJMYXllckNvbXBvc2l0b3IyNHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c0V2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgppbmRleCBlODFhNjZhOGViODU0ZDBkMDRmNDdkNzlkYWU2ODc4ZWEzMThmNDY3
Li40MTU1YTI3NWU1N2MyNjBlZWIyMDVlY2MxMGVlZDk5ODIxY2Y5N2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKQEAgLTIwNCw2ICsyMDQsOCBAQCBfWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0
MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VQTlNfNUZyYW1lRWlpaWlpaWk7CiBfWk5LN1dl
YkNvcmU5RE9NV2luZG93OGRvY3VtZW50RXY7CiBfWlRWTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOFNldHRpbmdzRTsKIF9aTks3V2ViQ29yZTVGcmFtZTE1bGF5ZXJUcmVl
QXNUZXh0RWo7CitfWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWI7Citf
Wk43V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMjRyZXNldFRyYWNrZWRSZXBhaW50UmVj
dHNFdjsKIAogbG9jYWw6CiBfWio7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMTgwYjZiMjc1ZGM4YmNmM2E4Zjg4Zjg4MWQ3OWFmYThhNjg3Mjhh
Ny4uYjZhOTc0ZjEwNWUzMzE0ZjhjYzk4YTAyZTNiZjc2YTY0YmUxYjE4MiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDEyLTEwLTIyICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IE1ha2UgVGVzdFJ1bm5lci5kaXNwbGF5KCkgd29yayB3aXRoIGNvbXBvc2l0ZWQgbGF5ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFj
a2luZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJz
CisgICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGlu
Y2x1ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChEUlRU
ZXN0UnVubmVyOjpkaXNwbGF5KToKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6OmRpc3BsYXlJbnZh
bGlkYXRlZFJlZ2lvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnN0YXJ0VHJhY2tpbmdSZXBhaW50cyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAg
ICAgKFdlYlZpZXdIb3N0KToKKwogMjAxMi0xMC0yMiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggY29tcGlsYXRpb24gYWZ0
ZXIgcjEzMjA1OS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5jcHAKaW5kZXggMDgyNTk3YTExN2I5MmQ1OTcyODA3ZTlmMGUzYTM3MjM0ZWQ5YzJhMy4u
OTNlM2MwMGI4ZGY1OTg1YmY4NmFjZDA0MzBmMjIzZmRiYzkzMDljYyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAgLTEyNjUsNyArMTI2
NSw2IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6ZGlzcGxheShjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0CiAgICAgV2ViUmVjdCByZWN0KDAsIDAsIHNp
emUud2lkdGgsIHNpemUuaGVpZ2h0KTsKICAgICBob3N0LT51cGRhdGVQYWludFJlY3QocmVjdCk7
CiAgICAgaG9zdC0+cGFpbnRJbnZhbGlkYXRlZFJlZ2lvbigpOwotICAgIGhvc3QtPmRpc3BsYXlS
ZXBhaW50TWFzaygpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCkBAIC0xMjczLDcgKzEy
NzIsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbihjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQwogewogICAgIFdlYlZpZXdIb3N0KiBob3N0
ID0gbV9zaGVsbC0+d2ViVmlld0hvc3QoKTsKICAgICBob3N0LT5wYWludEludmFsaWRhdGVkUmVn
aW9uKCk7Ci0gICAgaG9zdC0+ZGlzcGxheVJlcGFpbnRNYXNrKCk7CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAppbmRleCAxMDZjYWE5Nzg1ZjUzY2I3MjJiYzBmNmFjMTIxZjQzM2IzMzA4OWZmLi4yOWUz
M2E0MDIwMWRhNTI0OTgyZjNiOTYzMzE2N2NkMzMxMmMwNDhhIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xOTQ4LDYgKzE5NDgsMTEgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6ZGlzY2FyZEJhY2tpbmdTdG9yZSgpCiAgICAgbV9jYW52YXMuY2xl
YXIoKTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6c3RhcnRUcmFja2luZ1JlcGFpbnRzKCkKK3sK
KyAgICB3ZWJXaWRnZXQoKS0+c3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIC8vIFBhaW50
cyB0aGUgZW50aXJlIGNhbnZhcyBhIHNlbWktdHJhbnNwYXJlbnQgYmxhY2sgKGdyYXlpc2gpLiBU
aGlzIGlzIHVzZWQKIC8vIGJ5IHRoZSBsYXlvdXQgdGVzdHMgaW4gZmFzdC9yZXBhaW50LiBUaGUg
YWxwaGEgdmFsdWUgbWF0Y2hlcyB1cHN0cmVhbS4KIHZvaWQgV2ViVmlld0hvc3Q6OmRpc3BsYXlS
ZXBhaW50TWFzaygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aAppbmRleCBiYTc2MzUwM2FhZTZkNjY4MTA1YThkOTUwOWVkYWM5MDViZGVlOTQ3Li5kYjZhZjE4
NzUzZGZjYjA2NWUwNzdmZTZhY2M0NzE0M2EyYjljZTRjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50LAogICAgIHZvaWQgcGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKCk7CiAgICAg
U2tDYW52YXMqIGNhbnZhcygpOwogICAgIHZvaWQgZGlzcGxheVJlcGFpbnRNYXNrKCk7CisgICAg
dm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoKTsKIAogICAgIHZvaWQgbG9hZFVSTEZvckZyYW1l
KGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZyYW1lTmFt
ZSk7CiAgICAgVGVzdE5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxlcigp
IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NjZiNGY4
MDQ3YmZlOThkOWY5MTk0MzcwMGU4ZTg3OWM3YjJhOGJkLi44YzNjYjNjYjIzOWRiNDg2YzUwMTBm
OTFjYWRjZGFhNWU1MzhiYzgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTAtMjIgIElh
biBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBUZXN0UnVu
bmVyLmRpc3BsYXkoKSB3b3JrIHdpdGggY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3dzIHRyYWNraW5nIG9mIGdyYXBo
aWNzIGxheWVyIGludmFsaWRhdGlvbnMuIFRoZSBncmFwaGljcyBsYXllcnMKKyAgICAgICAgY2Fu
IG5vdyBzdG9yZSAobG9jYWwpIGludmFsaWRhdGlvbiByZWN0cyBhbmQgaW5jbHVkZSB0aGVtIGlu
IHRoZQorICAgICAgICBsYXllciB0cmVlIGR1bXAuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9y
ZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29t
cG9zaXRlZC1sYXllcnMuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMjIgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFNr
aXAgcGx1Z2lucy9ucHJ1bnRpbWUvcmVtb3ZlLXByb3BlcnR5Lmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVk
LWxheWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2lu
dmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkzNzBjMWM2ZmUzOTkzYTQ3Y2QzZjg3ZWVjMjEzOWY4NmU4OWE5MGEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29t
cG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorKEdyYXBoaWNzTGF5
ZXIgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKSAoY2hpbGRyZW4gMSAoR3JhcGhpY3NMYXllciAoYm91
bmRzIDgwMC4wMCA2MDAuMDApIChjaGlsZHJlbiAxIChHcmFwaGljc0xheWVyIChwb3NpdGlvbiA4
LjAwIDguMDApIChib3VuZHMgNDAwLjAwIDQwMC4wMCkgKGRyYXdzQ29udGVudCAxKSAocmVwYWlu
dCByZWN0cyAocmVjdCA4LjAwIDguMDAgNDAwLjAwIDQwMC4wMCkgKGNoaWxkcmVuIDEgKEdyYXBo
aWNzTGF5ZXIgKHBvc2l0aW9uIDUwLjAwIDUwLjAwKSAoYm91bmRzIDc1LjAwIDc1LjAwKSAoZHJh
d3NDb250ZW50IDEpIChyZXBhaW50IHJlY3RzIChyZWN0IDUwLjAwIDUwLjAwIDc1LjAwIDc1LjAw
KSApICkgKSApICkgKSApCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Jl
cGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWNiMzYyNWUyMzgwMjA2Y2Q1NzMyYjE4YzNhYzcxMTNhOGUxNWQ5
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52
YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwh
RE9DVFlQRSBodG1sPgorCis8IS0tCitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGNvbnRlbnRz
IG9mIGFjY2VsZXJhdGVkIHNjcm9sbGluZyBsYXllcnMgYXJlIHByb3Blcmx5Cit1cGRhdGVkIGFs
c28gb3V0c2lkZSB0aGUgY3VycmVudCBvdmVyZmxvdyBjbGlwLiBTZWUKK2h0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjA4Ny4KKworUGFzc2luZyBjcml0ZXJpYTogZ3Jl
ZW4gcmVjdGFuZ2xlIHNob3duIGluc3RlYWQgb2YgcmVkLgorLS0+CisKKzxodG1sPgorPGhlYWQ+
CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgI3BhcmVudCB7CisgICAgICAgIC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAg
ICAgICAgaGVpZ2h0OiA0MDBweDsKKwkJYmFja2dyb3VuZDogYmx1ZTsKKyAgICB9CisKKyAgICAj
Y2hpbGQgeworCQktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgpOworCQlwb3NpdGlv
bjogcmVsYXRpdmU7CisJCWxlZnQ6IDUwcHg7CisJCXRvcDogNTBweDsKKwkJd2lkdGg6IDc1cHg7
CisgICAgICAgIGhlaWdodDogNzVweDsKKwkJYmFja2dyb3VuZDogZ3JlZW47CisgICAgfQorCisg
IDwvc3R5bGU+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgaWYgKCF3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICBhbGVydCgnVGhpcyB0ZXN0IHJlcXVp
cmVzIHRlc3RSdW5uZXIgdG8gcnVuIScpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgfQorCisJCSAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKworICAgICAgICAgIHZh
ciBwYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFyZW50Jyk7CisgICAgICAgICAg
dmFyIGNoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisKKwkJICB3aW5k
b3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKwkJICBjaGls
ZC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2JsdWUnOworCQkgIHBhcmVudC5zdHlsZS5iYWNrZ3JvdW5k
ID0gJ2dyZWVuJzsKKworCQkgIC8vIEZvcmNlIGEgc3R5bGUgcmVjYWxjLgorCQkgIHZhciBkdW1t
eSA9IGNoaWxkLm9mZnNldFRvcDsKKworCQkgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRyYWNraW5n
UmVwYWludHMoZG9jdW1lbnQpOworCisJCSAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGV4dCcpOworICAgICAgICAgIHRleHQuaW5uZXJIVE1MID0gd2luZG93LmludGVybmFs
cy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgfSk7CisgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisgIDxkaXYgaWQ9InRleHQiPjwvZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQi
PgorICAgIDxkaXYgaWQ9ImNoaWxkIj48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTJhNDFmYjYxYWFlY2Vm
MTNlZWJmM2M0ODM5YjYyMTc2OWM5Y2FjYS4uNjJlYTQyNzVlN2VjMzViZjgyYjI3MTdmZWZiY2U5
MmRhYTg3M2NkMCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEyLTEwLTIyICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIE1ha2UgVGVzdFJ1bm5lci5kaXNwbGF5KCkgd29yayB3aXRoIGNvbXBvc2l0
ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93cyB0cmFja2luZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3Jh
cGhpY3MgbGF5ZXJzCisgICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24g
cmVjdHMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0xMC0y
MiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBtZXJnZSAiZG9ja2VkIiBzdGF0ZSBpbnRvIHRoZSAiZG9jayBzaWRlIiBlbnVt
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170231</attachid>
            <date>2012-10-23 13:58:53 -0700</date>
            <delta_ts>2012-10-24 06:30:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121023165730.patch</filename>
            <type>text/plain</type>
            <size>37887</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYjA4MGVlMzZmMmNhYjdmZDkyZmMwNTQyYTE1OTU5NGQyZWM4YTMwLi4w
Mjc3YzgwYzI4NjU0ZDZmMGU3OGM1OGVkN2NlYWFmNzBkM2MzM2VlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzIgQEAKKzIwMTItMTAtMjMgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0
ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93cyB0cmFja2luZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3Jh
cGhpY3MgbGF5ZXJzCisgICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24g
cmVjdHMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgor
CisgICAgICAgIFRlc3Q6IGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21w
b3NpdGVkLWxheWVycy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKEZyYW1lVmlldyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAo
R3JhcGhpY3NMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudDo6aXNUcmFj
a2luZ1JlcGFpbnRzKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5
OjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNr
QmVycnk6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheUluUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1
dHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNUcmFja2luZ1JlcGFpbnRz
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNl
dFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRS
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzVHJhY2tp
bmdSZXBhaW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
OgorICAgICAgICAoUmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmxheWVyVHJlZUFzVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnN0YXJ0VHJhY2tpbmdSZXBhaW50cyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c3RvcFRy
YWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTEwLTIzICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1Y4XSBFbnVtZXJhdGUgTm9kZXMgdmlhIHRoZSBW
OCBoZWFwIHJhdGhlciB0aGFuIHZpYSBhIGxpc3QgaW4gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBiOGVjYWU5MDZmMzg3ZTM3MTdhMzE0MjJiOGQ0YWE5ZGQwYmJkMTk3Li5i
N2Q3OTYwZGUzN2IzOThhOTc4ZjY0YTM5NGQwMzE4YWNiMWE2YWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTIzICBJYW4gVm9sbGljayAgPHZv
bGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxpZGF0aW9uIHRyYWNr
aW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBbGxvd3MgdHJhY2tpbmcgb2YgZ3JhcGhpY3MgbGF5ZXIgaW52YWxp
ZGF0aW9ucy4gVGhlIGdyYXBoaWNzIGxheWVycworICAgICAgICBjYW4gbm93IHN0b3JlIChsb2Nh
bCkgaW52YWxpZGF0aW9uIHJlY3RzIGFuZCBpbmNsdWRlIHRoZW0gaW4gdGhlCisgICAgICAgIGxh
eWVyIHRyZWUgZHVtcC4KKworICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAg
KFdlYldpZGdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6aXNUcmFja2luZ1JlcGFp
bnRzKToKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkxpbmtIaWdobGlnaHQ6OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKiBzcmMvTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgIChOb25Db21wb3NpdGVk
Q29udGVudEhvc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToK
KwogMjAxMi0xMC0yMyAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJlc29sdXRpb24gbWVkaWEgcXVlcnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhYWY5NDUxMDA1YzRmYTVhOTk0ZDhkMjQ5NGI5ODFhNDhjMWJlNzczLi40
ZDgyYTc1ZmQ5ODRiOTkxMDVjY2EyM2NmOGZlNDAxNWVmNGNkZjk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMTAtMjMgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0
ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93cyB0cmFja2luZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3Jh
cGhpY3MgbGF5ZXJzCisgICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24g
cmVjdHMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgor
CisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6CisKIDIwMTItMTAtMjMgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJd
IEFkZCBwcmVmZXJlbmNlIGZvciBlbmFibGluZyBzY3JvbGwgYW5pbWF0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDM1MTYzZTQ0OTFkYmI5OTMzNmI2ZDk2ZWQyMDhiYzQzOWJlYmJjYmQuLjMy
NWZkNGE5ZTEwMGNmZTQ3N2IyYzRjYTFiN2M4NmY0YTUzYjM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yNjMsNiArMjYzLDcgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjVjbGVh
ckV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNm1vZGlmeUVOUzBfMTFFQWx0ZXJhdGlv
bkVOU18xOFNlbGVjdGlvbkRpcmVjdGlvbkVOU18xNVRleHRHcmFudWxhcml0eUVOU18xNEVVc2Vy
VHJpZ2dlcmVkRQogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxlY3RBbGxFdgogX19a
TjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCitfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MTdzZXRUcmFja3NSZXBhaW50c0ViTlMwXzI4UmVzZXRUcmFja2VkUmVwYWludHNCZWhh
dmlvckUKIF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2CiBfX1pO
N1dlYkNvcmUxNFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgogX19aTjdXZWJDb3JlMTRS
ZXNvdXJjZUJ1ZmZlckQxRXYKQEAgLTk5MSw3ICs5OTIsNiBAQCBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MTZzZXRQYWludEJlaGF2aW9yRWoKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN2FkZFNjcm9s
bGFibGVBcmVhRVBOU18xNFNjcm9sbGFibGVBcmVhRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3
cGFpbnRDb250cm9sVGludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0U2Nyb2xsUG9z
aXRpb25FUktOU184SW50UG9pbnRFCi1fX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRUcmFja3NS
ZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1cGRhdGVDb250cm9sVGludHNFdgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVjdEVQTlNfN0VsZW1lbnRF
UktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmdN
b2RlRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCAyM2E1OWViZGNlMjgxMzQ0MDRjZWQyY2MxM2QwZTM2
NzA3Mjg2MDM1Li5hZmJhNjk1N2JhYzYyYzUwZTY0YmE1MTk1YzM4YjljNWQ1ODMyNDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCkBAIC03OCw3ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGVudW0gewogICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVEZWJ1Z0luZm8gPSAxIDw8IDAs
Ci0gICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMgorICAg
ICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDIsCisgICAgICAg
IExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cyA9IDEgPDwgMwogICAgIH07CiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDczOTAyOGRlYTlmNDkxNmU5ZTljYmIxZWIzYmQ5MzZjYjM3NjEzM2QuLjQ4NTg2
YmYxMDk2OTkyYzE1ZTZiODcxMWZhOGFhOGQwNmNiNTAxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgpAQCAtMzY0NSwxNSArMzY0NiwzMyBAQCB2
b2lkIEZyYW1lVmlldzo6c2V0UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheUlu
Y3JlbWVudER1cmluZ0xvYWRpbmcoZAogICAgIHNfZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1l
bnREdXJpbmdMb2FkaW5nID0gcDsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldFRyYWNrc1JlcGFp
bnRzKGJvb2wgdHJhY2tSZXBhaW50cykKK3ZvaWQgRnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50
cyhib29sIHRyYWNrUmVwYWludHMsIFJlc2V0VHJhY2tlZFJlcGFpbnRzQmVoYXZpb3IgYmVoYXZp
b3IpCiB7CiAgICAgaWYgKHRyYWNrUmVwYWludHMgPT0gbV9pc1RyYWNraW5nUmVwYWludHMpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsK
KyAgICBpZiAoYmVoYXZpb3IgPT0gUmVzZXRUcmFja2VkUmVwYWludHMpIHsKKyAgICAgICAgbV90
cmFja2VkUmVwYWludFJlY3RzLmNsZWFyKCk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgICAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IHJvb3RSZW5kZXJlcih0aGlzKSkg
eworICAgICAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gcm9vdC0+
Y29tcG9zaXRvcigpOworICAgICAgICAgICAgY29tcG9zaXRvci0+cmVzZXRUcmFja2VkUmVwYWlu
dFJlY3RzKCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KICAgICBtX2lzVHJhY2tpbmdSZXBh
aW50cyA9IHRyYWNrUmVwYWludHM7CiB9CiAKK1N0cmluZyBGcmFtZVZpZXc6OnRyYWNrZWRSZXBh
aW50UmVjdHNBc1RleHQoKSBjb25zdAoreworICAgIFRleHRTdHJlYW0gdHM7CisgICAgdHMgPDwg
IihyZXBhaW50IHJlY3RzXG4iOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFja2Vk
UmVwYWludFJlY3RzLnNpemUoKTsgKytpKQorICAgICAgICB0cyA8PCAiICAocmVjdCAiIDw8IG1f
dHJhY2tlZFJlcGFpbnRSZWN0c1tpXS54KCkgPDwgIiAiIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0
c1tpXS55KCkgPDwgIiAiIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0c1tpXS53aWR0aCgpIDw8ICIg
IiA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0uaGVpZ2h0KCkgPDwgIilcbiI7CisgICAgdHMg
PDwgIilcbiI7CisgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKK30KKwogdm9pZCBGcmFtZVZpZXc6
OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAg
ICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMWYx
YWRiNDU5M2JlMzJlZmZhYWI3NGQzZGE3MWU5MWQ3ZTc5ZDlhNC4uNWUyMmViZmQ1MTMyMTg0ZjIy
YmZjZGE5YTkxNjM2ZTNmZjljMmY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0zMzYs
MTAgKzMzNiwxMiBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJv
eCgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgc2V0VHJhY2tzUmVwYWludHMoYm9vbCk7CisgICAg
ZW51bSBSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yIHsgUmVzZXRUcmFja2VkUmVwYWludHMs
IERvTm90UmVzZXRUcmFja2VkUmVwYWludHMgfTsKKyAgICB2b2lkIHNldFRyYWNrc1JlcGFpbnRz
KGJvb2wsIFJlc2V0VHJhY2tlZFJlcGFpbnRzQmVoYXZpb3IgPSBSZXNldFRyYWNrZWRSZXBhaW50
cyk7CiAgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBtX2lzVHJh
Y2tpbmdSZXBhaW50czsgfQogICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKSB7IG1fdHJh
Y2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOyB9CiAgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0
cmFja2VkUmVwYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja2VkUmVwYWludFJlY3Rz
OyB9CisgICAgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdDsKIAogICAg
IHR5cGVkZWYgSGFzaFNldDxTY3JvbGxhYmxlQXJlYSo+IFNjcm9sbGFibGVBcmVhU2V0OwogICAg
IHZvaWQgYWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggM2EzMmI1
MTQ1YjkyN2VkYWVkNDVmOTE5ZTVkNjA5NTE1MWM0NDNlMy4uNzMxYTAyOTg4NjRjMTYwZDliMjM3
NzcxZjRlMzY1NDI0MzBjNWQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzNiw2ICs1MzYsMTIgQEAgZG91YmxlIEdy
YXBoaWNzTGF5ZXI6OmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgY29uc3QKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPig0ICogc2l6ZSgpLndpZHRoKCkpICogc2l6ZSgpLmhlaWdo
dCgpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tpbmdSZXBhaW50cygpKQor
ICAgICAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuYXBwZW5kKHJlY3QpOworfQorCiB2b2lkIEdy
YXBoaWNzTGF5ZXI6OndyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQogewog
ICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQpAQCAtNjYxLDYgKzY2NywyMyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQg
aW5kZW50LCBMYXllclRyZWVBc1RleHRCZQogICAgICAgICAgICAgdHMgPDwgIiAiIDw8IG1fcmVw
bGljYXRlZExheWVyOzsKICAgICAgICAgdHMgPDwgIilcbiI7CiAgICAgfQorCisgICAgaWYgKGJl
aGF2aW9yICYgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVJlcGFpbnRSZWN0cyAmJiAhbV90cmFja2Vk
UmVwYWludFJlY3RzLmlzRW1wdHkoKSkgeworICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50
ICsgMSk7CisgICAgICAgIHRzIDw8ICIocmVwYWludCByZWN0c1xuIjsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RyYWNrZWRSZXBhaW50UmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCAr
IDIpOworICAgICAgICAgICAgdHMgPDwgIihyZWN0ICI7CisgICAgICAgICAgICB0cyA8PCBtX3Ry
YWNrZWRSZXBhaW50UmVjdHNbaV0ueCgpIDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IG1fdHJh
Y2tlZFJlcGFpbnRSZWN0c1tpXS55KCkgPDwgIiAiOworICAgICAgICAgICAgdHMgPDwgbV90cmFj
a2VkUmVwYWludFJlY3RzW2ldLndpZHRoKCkgPDwgIiAiOworICAgICAgICAgICAgdHMgPDwgbV90
cmFja2VkUmVwYWludFJlY3RzW2ldLmhlaWdodCgpOworICAgICAgICAgICAgdHMgPDwgIilcbiI7
CisgICAgICAgIH0KKyAgICAgICAgdHMgPDwgIilcbiI7CisgICAgfQogICAgIAogICAgIGR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyh0cywgaW5kZW50LCBiZWhhdmlvcik7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggZTY3
YTE3ZWFlMDQ5OGJiMjViYWMwMTg2YWYyOThkZjJmNjkyMjc5YS4uNTk5YzJkMGRiM2NiZjZjMDQ3
ZWRkZjUyZWYyODczZTcxNDFmNDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2VuZGlmCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC00OCw2ICs0OSw3IEBAIGVu
dW0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JGbGFncyB7CiAgICAgTGF5ZXJUcmVlQXNUZXh0QmVo
YXZpb3JOb3JtYWwgPSAwLAogICAgIExheWVyVHJlZUFzVGV4dERlYnVnID0gMSA8PCAwLCAvLyBE
dW1wIGV4dHJhIGRlYnVnZ2luZyBpbmZvIGxpa2UgbGF5ZXIgYWRkcmVzc2VzLgogICAgIExheWVy
VHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDEsCisgICAgTGF5ZXJUcmVlQXNU
ZXh0SW5jbHVkZVJlcGFpbnRSZWN0cyA9IDEgPDwgMgogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5
ZXJUcmVlQXNUZXh0QmVoYXZpb3I7CiAKQEAgLTQwMyw2ICs0MDUsOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgeyByZXR1cm4gMDsgfQogCisg
ICAgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKSB7IG1fdHJhY2tlZFJlcGFpbnRSZWN0
cy5jbGVhcigpOyB9CisgICAgdm9pZCBhZGRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsK
KwogI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAg
ICAvLyBUaGlzIGFsbG93cyBzZXZlcmFsIGFsdGVybmF0aXZlIEdyYXBoaWNzTGF5ZXIgaW1wbGVt
ZW50YXRpb25zIGluIHRoZSBzYW1lIHBvcnQsCiAgICAgLy8gZS5nLiBpZiBhIGRpZmZlcmVudCBH
cmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9uIGlzIG5lZWRlZCBpbiBXZWJLaXQxIHZzLiBXZWJL
aXQyLgpAQCAtNDk3LDYgKzUwMiw3IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0IG1fY29udGVu
dHNSZWN0OwogCiAgICAgaW50IG1fcmVwYWludENvdW50OworICAgIFZlY3RvcjxGbG9hdFJlY3Q+
IG1fdHJhY2tlZFJlcGFpbnRSZWN0czsgLy8gVXNlZCBmb3IgZGVidWdnaW5nLgogCiAjaWYgUExB
VEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRpYyBH
cmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyRmFjdG9yeUNhbGxiYWNrKiBzX2dyYXBoaWNzTGF5
ZXJGYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllckNsaWVudC5oCmluZGV4IDNlMTA1Y2U2YjM5YWVhMWEyOTVlZTFmZjM2YzJm
MzllNzBiZTI2ZDIuLjA2ZmZiOGEyMWU4MGY0OTA1YmMxMWE2ZDczYjEyNDdkZWU4OTE5ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyQ2xpZW50LmgKQEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG93RGVidWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gUmVuZGVyTGF5ZXJCYWNraW5n
IG92ZXJyaWRlcyB0aGlzIHRvIHZlcmlmeSB0aGF0IGl0IGlzIG5vdAogICAgIC8vIGN1cnJlbnRs
eSBwYWludGluZyBjb250ZW50cy4gQW4gQVNTRVJUIGZhaWxzLCBpZiBpdCBpcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NM
YXllckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKaW5kZXggYzFhNzAzYWNkMmZkZDg4
M2YwYWRmNDUzNzE5NDdlNDc1MWRhNjcwZi4uZWQ3OTkyYzI4MDJhMmY4ODBmYmUyYWU1YmFlN2Ni
YmZjZjliNGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5j
cHAKQEAgLTM3OSwyMCArMzc5LDI5IEBAIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNl
dE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKIAogdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisg
ICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOworCisgICAgICAgIGFkZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsK
KyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldE5lZWRzRGlzcGxh
eSgpCiB7Ci0gICAgaWYgKGRyYXdzQ29udGVudCgpKQorICAgIGlmIChkcmF3c0NvbnRlbnQoKSkg
ewogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgICAgICBhZGRSZXBh
aW50UmVjdChGbG9hdFJlY3QobV9wb3NpdGlvbiwgbV9zaXplKSk7CisgICAgfQogfQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewotICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKKyAgICBpZiAoZHJhd3ND
b250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3Qp
OworCisgICAgICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQmxhY2tCZXJyeTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAppbmRleCBhNzRiYjFjZDBmZDU1M2MzYzE1Mjk4MWU3NTkxYzA5ZDIzOTc1
YjJjLi4wOGE0YTRmN2NmYzY1ZjNjYWRlMDcyNDJlNjEzNTZkNTJkN2RlYjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKQEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICAgICAgbV9kaXJ0eVJlY3RzWzBd
LnVuaXRlKHJlY3QpOwogCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERpcnR5UmVjdHND
aGFuZ2VkKTsKKworICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTU5NWRmMjhkYTE2YTQwNWU0ZmM0ODM0Njc3MzBjNzJmNWNl
YTZlZi4uMzQ0YjJiN2QxNGUwY2UxZDk3NmUwYWIyYjMyYzNlZGVkODRlNTkwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MzUsMTQgKzQzNSwyMCBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXll
ciogbGF5ZXIpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRz
RGlzcGxheSgpCiB7Ci0gICAgaWYgKFdlYkxheWVyKiBjb250ZW50c0xheWVyID0gY29udGVudHNM
YXllcklmUmVnaXN0ZXJlZCgpKQorICAgIGlmIChXZWJMYXllciogY29udGVudHNMYXllciA9IGNv
bnRlbnRzTGF5ZXJJZlJlZ2lzdGVyZWQoKSkgewogICAgICAgICBjb250ZW50c0xheWVyLT5pbnZh
bGlkYXRlKCk7CisKKyAgICAgICAgYWRkUmVwYWludFJlY3QoY29udGVudHNSZWN0KCkpOworICAg
IH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgpCiB7
CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmlu
dmFsaWRhdGUoKTsKKworICAgICAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QobV9wb3NpdGlv
biwgbV9zaXplKSk7CisKICAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkKICAgICAgICAgICAg
IG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAgIH0KQEAgLTQ1Miw2ICs0NTgsOSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAg
bV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CisKKyAgICAgICAgYWRkUmVw
YWludFJlY3QocmVjdCk7CisKICAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkKICAgICAgICAg
ICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGlj
c0xheWVyQ2x1dHRlci5jcHAKaW5kZXggMTA0Yjc5ODJiMGRhMGMxMGZkYTNhODU1YzJhMzFkYjI3
MzgyNzk2MC4uZDZhMWY5NGZmOTM5YWMzYmQ5YmJkNDgxZmIwNzk3ODU2NzYxZGRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xh
eWVyQ2x1dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAKQEAgLTY3LDExICs2NywxNSBAQCBDbHV0dGVy
QWN0b3IqIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHZvaWQg
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChtX3Bvc2l0aW9uLCBtX3Np
emUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVk
c0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CisKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
NDI5NTRhNDk5NjFjYTNjZmZkZTZkM2ZlYWQzODgwZGRjMDRkOTZjYy4uNjJkOGQ2MDk0ZTI4YWNm
NzA1NTRkNjljNDM5NGQ0MjA0Y2U2ZDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCkBAIC04Nyw2ICs4Nyw4IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSB0cnVl
OwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOwor
CisgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KG1fcG9zaXRpb24sIG1fc2l6ZSkpOwogfQog
CiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTk0LDYgKzk2LDggQEAgdm9pZCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKICAgICBub3Rp
ZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKworICAgIGFkZFJl
cGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVy
LmgpCkBAIC0xMDQsNiArMTA4LDggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShyZWN0KTsKICAgICBub3RpZnlDaGFu
Z2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKworICAgIGFkZFJlcGFpbnRS
ZWN0KHJlY3QpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjEwZTJkMGUw
ZWNjMzI5NWQxOTk5NzMzYzgxNGYyNTBmM2IyYmRkOS4uNmI5ZTI1OTNmNTU1MGU3NGI5MGRkMzRh
MWU4OTk2MzcwZWRhZjczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTE1NjUsNiArMTU2NSwxNSBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdAog
ICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPmNvbXBvc2l0b3JTaG93UmVw
YWludENvdW50ZXIoKSA6IGZhbHNlOwogfQogCitib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNU
cmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigp
LT5mcmFtZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiAwOwor
ICAgIGlmIChwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpICYmIHBhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCkpCisgICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pc1RyYWNr
aW5nUmVwYWludHMoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZm5kZWYgTkRFQlVHCiB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dmVyaWZ5Tm90UGFpbnRpbmcoKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDk0NjhmZTlkMzAw
MjczM2Y2MjU0OTc3ZmZiNmYxOWVjZjlmOTI0OTAuLjg1MDgyYjhmMDllYzE0ZGEyNmViM2MxZDc3
MzhlNDMxOGJkODFlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKQEAgLTE1NCw2ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciop
IGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygp
IGNvbnN0IE9WRVJSSURFOworCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCB2ZXJp
ZnlOb3RQYWludGluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDU1NjY0YzIyODQ1ZjBhNTJjZjZjM2Qz
OGY3OTQwNjBmYTM2MjMyOTQuLjliZGUzZTU3MWRmOTBiZDA0YTBlZTIzYzI3NzViNjZjYmY3MWQ1
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC0xMTM3LDEwICsxMTM3LDE5IEBAIFN0cmluZyBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAgbGF5
ZXJUcmVlQmVoYXZpb3IgfD0gTGF5ZXJUcmVlQXNUZXh0RGVidWc7CiAgICAgaWYgKGZsYWdzICYg
TGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzKQogICAgICAgICBsYXllclRyZWVCZWhh
dmlvciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVmlzaWJsZVJlY3RzOwotICAgIAorICAgIGlm
IChmbGFncyAmIExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cykKKyAgICAgICAgbGF5
ZXJUcmVlQmVoYXZpb3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVJlcGFpbnRSZWN0czsKKwog
ICAgIC8vIFdlIHNraXAgZHVtcGluZyB0aGUgc2Nyb2xsIGFuZCBjbGlwIGxheWVycyB0byBrZWVw
IGxheWVyVHJlZUFzVGV4dCBvdXRwdXQKICAgICAvLyBzaW1pbGFyIGJldHdlZW4gcGxhdGZvcm1z
LgotICAgIHJldHVybiBtX3Jvb3RDb250ZW50TGF5ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRy
ZWVCZWhhdmlvcik7CisgICAgU3RyaW5nIGxheWVyVHJlZVRleHQgPSBtX3Jvb3RDb250ZW50TGF5
ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVCZWhhdmlvcik7CisKKyAgICAvLyBUaGUgdHJ1
ZSByb290IGxheWVyIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgZHVtcCwgc28gaWYgd2Ugd2FudCB0
byByZXBvcnQKKyAgICAvLyBpdHMgcmVwYWludCByZWN0cywgdGhleSBtdXN0IGJlIGFwcGVuZGVk
IGhlcmUuCisgICAgaWYgKGZsYWdzICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3Rz
KQorICAgICAgICBsYXllclRyZWVUZXh0LmFwcGVuZChtX3JlbmRlclZpZXctPmZyYW1lVmlldygp
LT50cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkpOworCisgICAgcmV0dXJuIGxheWVyVHJlZVRl
eHQ7CiB9CiAKIFJlbmRlckxheWVyQ29tcG9zaXRvciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpm
cmFtZUNvbnRlbnRzQ29tcG9zaXRvcihSZW5kZXJQYXJ0KiByZW5kZXJlcikKQEAgLTE5NzksNiAr
MTk4OCwzMyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3JEaWRDaGFuZ2UoKQogICAgIGdyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihi
YWNrZ3JvdW5kQ29sb3IpOwogfQogCitzdGF0aWMgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVj
dHNSZWN1cnNpdmUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBpZiAoIWdy
YXBoaWNzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGdyYXBoaWNzTGF5ZXItPnJlc2V0
VHJhY2tlZFJlcGFpbnRSZWN0cygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFw
aGljc0xheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQorICAgICAgICByZXNldFRyYWNrZWRS
ZXBhaW50UmVjdHNSZWN1cnNpdmUoZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKVtpXSk7CisKKyAg
ICBpZiAoR3JhcGhpY3NMYXllciogcmVwbGljYUxheWVyID0gZ3JhcGhpY3NMYXllci0+cmVwbGlj
YUxheWVyKCkpCisgICAgICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShyZXBs
aWNhTGF5ZXIpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllciA9IGdyYXBoaWNz
TGF5ZXItPm1hc2tMYXllcigpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1
cnNpdmUobWFza0xheWVyKTsKK30KKwordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlc2V0
VHJhY2tlZFJlcGFpbnRSZWN0cygpCit7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5n
ID0gcm9vdFJlbmRlckxheWVyKCktPmJhY2tpbmcoKTsKKyAgICBpZiAoIWJhY2tpbmcgfHwgIWJh
Y2tpbmctPnVzaW5nVGlsZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIgPSBiYWNraW5nLT5ncmFwaGljc0xheWVyKCk7CisgICAgcmVz
ZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXIpOworfQorCiBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xh
eWVyKiBsYXllcikgY29uc3QKIHsKICAgICBpZiAobGF5ZXIgPT0gbV9sYXllckZvckhvcml6b250
YWxTY3JvbGxiYXIgfHwgbGF5ZXIgPT0gbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyIHx8IGxh
eWVyID09IG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIpCkBAIC0xOTk1LDYgKzIwMzEsMTUgQEAgYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGlj
c0xheWVyKiBsYXllcikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIFJlbmRl
ckxheWVyQmFja2luZyogYmFja2luZyA9IHJvb3RSZW5kZXJMYXllcigpLT5iYWNraW5nKCk7Cisg
ICAgaWYgKCFiYWNraW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYmFj
a2luZy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIGZsb2F0IFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKaW5kZXggMjU5MWM4ODJhYzQ5YjA0ZDJjYzQyMmRhOGRjNDY0NzZmODdkYzVkZi4u
NTlhYTA5YWVlMzk0YzJjNGQxNmFmYTgzYWYzMDkyMDA0OTM4YTM5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjI2LDYgKzIy
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UoKTsKIAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCk7CisKIHByaXZhdGU6
CiAgICAgY2xhc3MgT3ZlcmxhcE1hcDsKIApAQCAtMjM2LDcgKzIzOCw5IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25z
dCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgCisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBHcmFwaGlj
c0xheWVyVXBkYXRlckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBmbHVz
aExheWVycyhHcmFwaGljc0xheWVyVXBkYXRlciopIE9WRVJSSURFOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGMyNmQ2ZWE0Zjk3OGE3NTQyNzAyYTA2ZjVhNGU2
MzgxMjdhMzQ1ZGQuLjcxYTRjMDRhMGQ3M2Q5N2U5NzI0OTViNDE5OTliOWU5MmYxOTBiZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyMzcsNiArMTIzNyw4IEBAIFN0
cmluZyBJbnRlcm5hbHM6OmxheWVyVHJlZUFzVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2ln
bmVkIGZsYWdzLCBFeGNlcHRpb25DCiAgICAgTGF5ZXJUcmVlRmxhZ3MgbGF5ZXJUcmVlRmxhZ3Mg
PSAwOwogICAgIGlmIChmbGFncyAmIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUykK
ICAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJl
Y3RzOworICAgIGlmIChmbGFncyAmIExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUykK
KyAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJl
Y3RzOwogCiAgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5sYXllclRyZWVBc1RleHQobGF5
ZXJUcmVlRmxhZ3MpOwogfQpAQCAtMTM3MCw0ICsxMzcyLDI2IEBAIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSW50ZXJuYWxzOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzdGFydFRy
YWNraW5nUmVwYWludHMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAgIGZyYW1lVmlldy0+c2V0VHJh
Y2tzUmVwYWludHModHJ1ZSk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzdG9wVHJhY2tpbmdSZXBh
aW50cyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IGRvY3VtZW50LT52aWV3KCk7CisgICAgZnJhbWVWaWV3LT5zZXRUcmFja3NSZXBhaW50
cyhmYWxzZSwgRnJhbWVWaWV3OjpEb05vdFJlc2V0VHJhY2tlZFJlcGFpbnRzKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYmJjNWM1YjdiOWQ1MTk1MjNhOGFiZTZl
ZWVkNTk1Y2FkMGIzZjZlNC4uZTg3NzUzMDg2MTRmODk0Yzc5MjNkMmY5NzlkMGUyYWM4ODJkZTg2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xODgsNyArMTg4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKIAogICAgIGVudW0gewotICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lC
TEVfUkVDVFMgPSAxIC8vIFZhbHVlcyBuZWVkIHRvIGtlcHQgaW4gc3luYyB3aXRoIEludGVybmFs
cy5pZGwuCisgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDEsIC8v
IFZhbHVlcyBuZWVkIHRvIGtlcHQgaW4gc3luYyB3aXRoIEludGVybmFscy5pZGwuCisgICAgICAg
IExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUyA9IDIKICAgICB9OwogICAgIFN0cmlu
ZyBsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqLCB1bnNpZ25lZCBmbGFncywgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7CkBAIC0yMjgsNiArMjI5LDkgQEAgcHVibGljOgogCiAgICAgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CiAKKyAg
ICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHN0b3BUcmFja2luZ1JlcGFpbnRzKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYp
OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAgIERv
Y3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCA3N2JhNjYwMTAyMWQ1OGU1YjdmMGIyMDA0ZDIxYmI0MWJlOGQ0MWIwLi4z
MTc4MzZhY2VmMTQ4OTIyNjA5NTNmZTZmOGU0ODFkM2E3MTQ4Mjg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTgsNiArMTU4LDcgQEAKIAogICAgIC8vIEZsYWdzIGZv
ciBsYXllclRyZWVBc1RleHQuCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9J
TkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlF
Ul9UUkVFX0lOQ0xVREVTX1JFUEFJTlRfUkVDVFMgPSAyOwogICAgIERPTVN0cmluZyBsYXllclRy
ZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hv
cnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlcyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNl
cHRpb24pOwpAQCAtMTk5LDQgKzIwMCw3IEBACiAgICAgTWFsbG9jU3RhdGlzdGljcyBtYWxsb2NT
dGF0aXN0aWNzKCk7CiAKICAgICBET01TdHJpbmdbXSBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7
CisKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgIHZvaWQgc3RvcFRyYWNraW5nUmVwYWludHMoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGZhNDU2MjM4YTNiZDE3OGE5ZTEy
YTkyMzJlOGUxNzhhM2IxZjJiM2YuLmQ5OTlkNjIwYWI0NjYwZWY2MWZhODQzMDIwYWNlMGE3ZWMw
ZjYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdl
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCkBAIC0x
MjUsNiArMTI1LDkgQEAgcHVibGljOgogICAgIC8vIGFuaW1hdGUgb3IgbGF5b3V0IGluIHRoaXMg
Y2FzZS4KICAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKSA9IDA7CiAKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgd2UndmUgc3RhcnRlZCB0cmFja2luZyByZXBhaW50IHJlY3Rh
bmdsZXMuCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcgc3Vy
ZmFjZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJXaWRnZXQgaXMKICAgICAvLyByZWFkeSB0byB1
c2UuCiAgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDgxNWEw
YzMwMGU5YWI1MTk2MGNlOTQwZDkyZGRhMTU2YTk0MGU1OWMuLjFhM2E3N2NmNTRjOTg0MTYxMDE5
ZTkxOGUzNTU3NzBlZTU0MjkwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0xpbmtIaWdobGlnaHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xp
bmtIaWdobGlnaHQuY3BwCkBAIC0zMDIsNiArMzAyLDkgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0Ojp1
cGRhdGVHZW9tZXRyeSgpCiAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIHRo
ZSBsYXllciBpZiB0aGUgaGlnaGxpZ2h0IHNpemUgaGFzIGNoYW5nZWQsIG90aGVyd2lzZQogICAg
ICAgICAvLyB3ZSBjYW4ganVzdCByZS1wb3NpdGlvbiB0aGUgbGF5ZXIgd2l0aG91dCBuZWVkaW5n
IHRvIHJlcGFpbnQuCiAgICAgICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5pbnZhbGlkYXRl
KCk7CisKKyAgICAgICAgaWYgKG1fY3VycmVudEdyYXBoaWNzTGF5ZXIpCisgICAgICAgICAgICBt
X2N1cnJlbnRHcmFwaGljc0xheWVyLT5hZGRSZXBhaW50UmVjdChGbG9hdFJlY3QobGF5ZXIoKS0+
cG9zaXRpb24oKS54LCBsYXllcigpLT5wb3NpdGlvbigpLnksIGxheWVyKCktPmJvdW5kcygpLndp
ZHRoLCBsYXllcigpLT5ib3VuZHMoKS5oZWlnaHQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3Bw
CmluZGV4IDIxYjk3MjViMGVhNWQwMGEwOGJhMzY0MTZlNWI4MDVjMGYzZmViZTEuLjIzZGNkZGU5
Yjc5YjQ5ODk1YTJmMjIxYjdiYTUxMDBhMzZjYzNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMjAx
LDQgKzIwMSw5IEBAIGJvb2wgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzaG93UmVwYWludENv
dW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6aXNUcmFja2luZ1JlcGFpbnRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IDA4ZTljNjliMmY3Y2ExZjNl
NGM4MDBlODkyMjgxOWMyZTk1NmJjYjQuLjJiNmRkYzFhYWIwMDI2MTVlMmI5MWY3ODlhNjY1ZDQz
ZjJiNWIwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5oCkBAIC03Myw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1Bo
YXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCBib29s
IHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBj
b25zdDsKIAogICAgIGJvb2wgaGF2ZVNjcm9sbExheWVyKCk7CiAgICAgV2ViTGF5ZXIqIHNjcm9s
bExheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggNTI3N2I3YjM0NmFlNGE3ZTMzNzFjOWFiY2ZhYmZlNzQ2YWQ2ZmNlMS4uNjk3ZDQzMzZkZThk
ZTVkMGEwMjBkMDczNmFlN2M5MGNhZTdhY2FiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTgyNSw2ICsxODI1LDE0IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9w
dGlvbnMgb3B0CiAgICAgfQogfQogCitib29sIFdlYlZpZXdJbXBsOjppc1RyYWNraW5nUmVwYWlu
dHMoKSBjb25zdAoreworICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIHJl
dHVybiB2aWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
dGhlbWVDaGFuZ2VkKCkKIHsKICAgICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDQzOWUwZTZiMTc3MjNjNmQ5NDY2ZTMxOTZiZDY5OTlj
ZmI5YmY5OWUuLmMxNDM1ZGMyNmE3ZmZhMDAwMGQ1MzQyYzhkMmJmMmFlY2Q0OWEwNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTQ2LDYgKzE0Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUpOwogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsgLy8gQWxzbyBpbXBsZW1lbnRzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ6
OmxheW91dCgpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJl
Y3QmLCBQYWludE9wdGlvbnMgPSBSZWFkYmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFibGUpOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0
ZShib29sIGZpbmlzaCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQy
L21hYy9XZWJLaXQyLm9yZGVyCmluZGV4IDIxY2EyZmY2Y2UzYWJiZTdjZTcxNDYxNDUzZGM2MzVl
MjllMzZlZjAuLjYxOGY1NWQzMTc3NGZkMmM5Yzc3MWNlZDdlYzU5MzA5MTk4MWU4NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJL
aXQyL21hYy9XZWJLaXQyLm9yZGVyCkBAIC0zMzg0LDMgKzMzODQsNCBAQCBfV0tBZHZhbmNlRGVm
YXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uCiBfV0tBcHBLaXREcmF3RGVjb3lXaW5kb3dfaXNLZXlX
aW5kb3cKIF9fWk42V2ViS2l0N1dlYlBhZ2UzNnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc0V2CiBfX1pONldlYktpdDdXZWJQYWdlMzVyZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9uc0V2CitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRUcmFja3NSZXBhaW50c0Vi
TlMwXzI4UmVzZXRUcmFja2VkUmVwYWludHNCZWhhdmlvckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CmluZGV4IDU3MTU1ZGY1ZWFkYmUyZjhhN2M3MGQ4ZDdjMDg4ZTc5YmU2Y2IwODcuLmFjMGNjOTFl
OTM3ZmRhYmI2YTJhYWE1Y2E5NjNjYTE3NTk5NzQyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgpAQCAtMjA1LDYgKzIwNSw3IEBAIF9aTjdXZWJDb3JlMTJQcmludENvbnRleHQyNnBhZ2VTaXpl
QW5kTWFyZ2luc0luUGl4ZWxzRVBOU181RnJhbWVFaWlpaWlpaTsKIF9aTks3V2ViQ29yZTlET01X
aW5kb3c4ZG9jdW1lbnRFdjsKIF9aVFZON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw4U2V0dGluZ3NFOwogX1pOSzdXZWJDb3JlNUZyYW1lMTVsYXllclRyZWVBc1RleHRFajsK
K19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYk5TMF8yOFJlc2V0VHJh
Y2tlZFJlcGFpbnRzQmVoYXZpb3JFOwogCiBsb2NhbDoKIF9aKjsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNTIzMWIwNTU1
MGYyY2ZkNDdlZWIyNDYyZWFjODhlMjdhMDNiNGUyLi41Y2NiYTk3MGU3ZjIyNGRiNjAyMzBjNTRi
MDFiODVhNzcxYmQ4YTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTAtMjMgIElhbiBW
b2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBpbnZhbGlk
YXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFja2luZyBvZiBncmFwaGljcyBs
YXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJzCisgICAgICAgIGNhbiBub3cg
c3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUK
KyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogY29tcG9zaXRpbmcvcmVwYWlu
dC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0
ZWQtbGF5ZXJzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTIzICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFycmF5IGdyb3Vw
aW5nIGRvZXMgbm90IHdvcmsgZm9yIGFycmF5cyB3aXRoIGV4YWN0bHkgMTAwMDAgZWxlbWVudHMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlv
bnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NGU4NDA2MTcxMzIxYzkyOTc0NmE5Zjk4MmViMjFmOWIxYTBhOWZm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZh
bGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIg
QEAKKyhHcmFwaGljc0xheWVyIChib3VuZHMgODAwLjAwIDYwMC4wMCkgKGNoaWxkcmVuIDEgKEdy
YXBoaWNzTGF5ZXIgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKSAoY2hpbGRyZW4gMSAoR3JhcGhpY3NM
YXllciAocG9zaXRpb24gOC4wMCAyOC4wMCkgKGJvdW5kcyA0MDAuMDAgNDAwLjAwKSAoZHJhd3ND
b250ZW50IDEpIChyZXBhaW50IHJlY3RzIChyZWN0IDguMDAgMjguMDAgNDAwLjAwIDQwMC4wMCkg
KSAoY2hpbGRyZW4gMSAoR3JhcGhpY3NMYXllciAocG9zaXRpb24gNTAuMDAgNTAuMDApIChib3Vu
ZHMgNzUuMDAgNzUuMDApIChkcmF3c0NvbnRlbnQgMSkgKHJlcGFpbnQgcmVjdHMgKHJlY3QgNTAu
MDAgNTAuMDAgNzUuMDAgNzUuMDApICkgKSApICkgKSApICkgKSAocmVwYWludCByZWN0cyAocmVj
dCAwIDAgODAwIDYwMCkgKHJlY3QgMCAwIDgwMCA2MDApIChyZWN0IDAgMCA4MDAgNDM2KSAocmVj
dCAwIDAgODAwIDYwMCkgKHJlY3QgMCAwIDgwMCA0MzYpIChyZWN0IDAgMCA4MDAgNjAwKSApCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9u
cy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVw
YWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTI1M2M0YjE5NGIwYjQ3ZjY4ZmE0ZDVjZWYyMmEyZTY0NWY5YTZmMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21w
b3NpdGVkLWxheWVycy5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzwhRE9DVFlQRSBodG1sPgorCis8
IS0tCitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgcmVwYWludCB0ZXN0aW5nIHdvcmtzIHdpdGggY29t
cG9zaXRlZCBsYXllcnMuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAjcGFyZW50IHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5z
bGF0ZVooMHB4KTsKKyAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDQwMHB4
OworICAgICAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgIH0KKworICAgICNjaGlsZCB7CisgICAg
ICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7CisgICAgICAgIHBvc2l0aW9u
OiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogNTBweDsKKyAgICAgICAgdG9wOiA1MHB4OworICAg
ICAgICB3aWR0aDogNzVweDsKKyAgICAgICAgaGVpZ2h0OiA3NXB4OworICAgICAgICBiYWNrZ3Jv
dW5kOiBncmVlbjsKKyAgICB9CisKKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAg
IGFsZXJ0KCdUaGlzIHRlc3QgcmVxdWlyZXMgdGVzdFJ1bm5lciB0byBydW4hJyk7CisgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRl
cm5hbHMpIHsKKyAgICAgICAgICAgICAgYWxlcnQoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cu
aW50ZXJhbHMgdG8gcnVuIScpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQor
CisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKworICAgICAgICAgIHZh
ciBwYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFyZW50Jyk7CisgICAgICAgICAg
dmFyIGNoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisKKyAgICAgICAg
ICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAg
ICAgICAgICBjaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2JsdWUnOworICAgICAgICAgIHBhcmVu
dC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2dyZWVuJzsKKworICAgICAgICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQnKTsKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9
ICdUaGlzIHRleHQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBsYXllciB0cmVlJzsKKworICAg
ICAgICAgIC8vIEZvcmNlIGEgc3R5bGUgcmVjYWxjLgorICAgICAgICAgIHZhciBkdW1teSA9IGNo
aWxkLm9mZnNldFRvcDsKKworICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRyYWNraW5n
UmVwYWludHMoZG9jdW1lbnQpOworCisgICAgICAgICAgdGV4dC5pbm5lckhUTUwgPSB3aW5kb3cu
aW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVf
SU5DTFVERVNfUkVQQUlOVF9SRUNUUyk7CisgICAgICB9KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPGRpdiBpZD0idGV4dCI+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudCI+Cisg
ICAgPGRpdiBpZD0iY2hpbGQiPjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwZTZiYzhiMTJlMjBhODg0NmFm
ODJiM2ZkOWFhM2Y5YzU0ZGIzODQxLi5lZmEyNGQ3NTViOGZkMjljMTMzZjk4MDNkNjczMDc4MDdi
YjYwY2UwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMTAtMjMgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzgw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93
cyB0cmFja2luZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3Mg
bGF5ZXJzCisgICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMg
YW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAg
ICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0xMC0yMyAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIHJlc29sdXRpb24gbWVkaWEgcXVlcnkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170380</attachid>
            <date>2012-10-24 06:30:09 -0700</date>
            <delta_ts>2012-10-24 08:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121024092844.patch</filename>
            <type>text/plain</type>
            <size>40516</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIyYWYzZGU5ZjBlY2Fm
NmVmZmQ0MGQ0NDRjM2YzZjI2MzUyOTYwOC4uYjE5ZWE1ZTE1YWNjZGNkOGE1OTljNzIzMjFlOWMx
M2E3OWExNGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTEwLTI0ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvd3MgdHJhY2tpbmcgb2YgZ3JhcGhpY3Mg
bGF5ZXIgaW52YWxpZGF0aW9ucy4gVGhlIGdyYXBoaWNzIGxheWVycworICAgICAgICBjYW4gbm93
IHN0b3JlIChsb2NhbCkgaW52YWxpZGF0aW9uIHJlY3RzIGFuZCBpbmNsdWRlIHRoZW0gaW4gdGhl
CisgICAgICAgIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9y
ZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbAorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0VHJhY2tz
UmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJl
Y3RzQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgIChGcmFtZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YWRkUmVw
YWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cmVzZXRUcmFj
a2VkUmVwYWludFJlY3RzKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChHcmFw
aGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXlJblJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29u
dGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRz
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgIChSZW5kZXJMYXll
ckJhY2tpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9z
aXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpzdGFydFRyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnN0b3BUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxMi0wOS0yNyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIG1lbW9yeSBpbnN0cnVtZW50YXRpb24gZm9yIExp
c3RIYXNoU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhkMzY0ZGQ1ZDJhODdkYjYx
NmQxYzMxMTljZGYxNmVhM2MxZGE1MjEuLmQ0M2YzM2UzNmRkNWM3ZWRlODU5ODRkNjZmZTRjOGUx
MWI5YzE5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTItMTAtMjQgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
U3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFja2lu
ZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJzCisg
ICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGluY2x1
ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogcHVi
bGljL1dlYldpZGdldC5oOgorICAgICAgICAoV2ViV2lkZ2V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHNyYy9MaW5rSGlnaGxp
Z2h0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdodDo6dXBkYXRlR2VvbWV0cnkp
OgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cyk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
aDoKKyAgICAgICAgKE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzVHJhY2tpbmdS
ZXBhaW50cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA5LTI3ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUg
bWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgTGlzdEhhc2hTZXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZTI0
YTQ0Y2QyMzkxNDliMTVlOTliMjQ0YWI1NTZiOTIzMjkwNzMyLi40NTM3OGFiZjNkZjlhMGY5ZTM2
NGUwOTc2ZmQ2YTc5ODQzYWUxMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MTAtMjQgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Vw
cG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFja2luZyBv
ZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJzCisgICAg
ICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGluY2x1ZGUg
dGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogbWFjL1dl
YktpdDIub3JkZXI6CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0xMC0yNCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3Vk
YXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFTU0VSVElP
TiBGQUlMRUQ6IGVkamUoKTogY291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQgZHVlIHRv
IG1pc3NpbmcgdGhlbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOThiYjQ4ZDRjYzI0YTNiOGM0
YzQ1MmI1ZWFlZjk1NThkMDhjZWJmYS4uOTc4ZmJiMjVkNDc2NTFhZjA3MDUxMmY0ZmY5ZjI5ZmJl
OWIyYzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI2Myw2ICsyNjMsNyBAQCBfX1pON1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uNWNsZWFyRXYKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b242bW9kaWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1
VGV4dEdyYW51bGFyaXR5RU5TXzE0RVVzZXJUcmlnZ2VyZWRFCiBfX1pON1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uOXNlbGVjdEFsbEV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5T
XzVGcmFtZUUKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWJOUzBf
MjhSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yRQogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1
bWVudDEycGx1Z2luV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXIxMmNyZWF0
ZU5TRGF0YUV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyRDFFdgpAQCAtOTkxLDcgKzk5
Miw2IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNnNldFBhaW50QmVoYXZpb3JFagogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzE3YWRkU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFyZWFF
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdwYWludENvbnRyb2xUaW50c0V2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTdzZXRTY3JvbGxQb3NpdGlvbkVSS05TXzhJbnRQb2ludEUKLV9fWk43V2Vi
Q29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcxOHVwZGF0ZUNvbnRyb2xUaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTlzY3JvbGxF
bGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IGIxYTEz
MTYxZmU0ODc5M2M0MzMxNDg1ODViMDZjOWI2OGJlY2RmY2MuLjQ4YWJiN2ZhYjdiNTg3MGUxNzU3
Y2U3NzgwMTBmOTg2ZjdiMjU1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTc5LDcgKzc5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGVudW0gewogICAgICAgICBMYXllclRyZWVGbGFnc0lu
Y2x1ZGVEZWJ1Z0luZm8gPSAxIDw8IDAsCiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVZp
c2libGVSZWN0cyA9IDEgPDwgMSwKLSAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNh
Y2hlcyA9IDEgPDwgMgorICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzID0g
MSA8PCAyLAorICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMgPSAxIDw8
IDMKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlRmxhZ3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3MzkwMjhkZWE5ZjQ5MTZlOWU5Y2JiMWViM2JkOTM2
Y2IzNzYxMzNkLi40ODU4NmJmMTA5Njk5MmMxNWU2Yjg3MTFmYThhYThkMDZjYjUwMTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KQEAgLTM2NDUs
MTUgKzM2NDYsMzMgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJy
ZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKGQKICAgICBzX2RlZmVycmVkUmVw
YWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZyA9IHA7CiB9CiAKLXZvaWQgRnJhbWVWaWV3
OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCit2b2lkIEZyYW1lVmlldzo6
c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzLCBSZXNldFRyYWNrZWRSZXBhaW50
c0JlaGF2aW9yIGJlaGF2aW9yKQogewogICAgIGlmICh0cmFja1JlcGFpbnRzID09IG1faXNUcmFj
a2luZ1JlcGFpbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV90cmFja2VkUmVwYWlu
dFJlY3RzLmNsZWFyKCk7CisgICAgaWYgKGJlaGF2aW9yID09IFJlc2V0VHJhY2tlZFJlcGFpbnRz
KSB7CisgICAgICAgIG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290
UmVuZGVyZXIodGhpcykpIHsKKyAgICAgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29t
cG9zaXRvciA9IHJvb3QtPmNvbXBvc2l0b3IoKTsKKyAgICAgICAgICAgIGNvbXBvc2l0b3ItPnJl
c2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CiAgICAg
bV9pc1RyYWNraW5nUmVwYWludHMgPSB0cmFja1JlcGFpbnRzOwogfQogCitTdHJpbmcgRnJhbWVW
aWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3QKK3sKKyAgICBUZXh0U3RyZWFt
IHRzOworICAgIHRzIDw8ICIocmVwYWludCByZWN0c1xuIjsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgdHMgPDwg
IiAgKHJlY3QgIiA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0ueCgpIDw8ICIgIiA8PCBtX3Ry
YWNrZWRSZXBhaW50UmVjdHNbaV0ueSgpIDw8ICIgIiA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNb
aV0ud2lkdGgoKSA8PCAiICIgPDwgbV90cmFja2VkUmVwYWludFJlY3RzW2ldLmhlaWdodCgpIDw8
ICIpXG4iOworICAgIHRzIDw8ICIpXG4iOworICAgIHJldHVybiB0cy5yZWxlYXNlKCk7Cit9CisK
IHZvaWQgRnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCmluZGV4IDFmMWFkYjQ1OTNiZTMyZWZmYWFiNzRkM2RhNzFlOTFkN2U3OWQ5YTQuLjVl
MjJlYmZkNTEzMjE4NGYyMmJmY2RhOWE5MTYzNmUzZmY5YzJmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaApAQCAtMzM2LDEwICszMzYsMTIgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBl
bWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKICAgICAKLSAgICB2b2lkIHNldFRyYWNrc1JlcGFp
bnRzKGJvb2wpOworICAgIGVudW0gUmVzZXRUcmFja2VkUmVwYWludHNCZWhhdmlvciB7IFJlc2V0
VHJhY2tlZFJlcGFpbnRzLCBEb05vdFJlc2V0VHJhY2tlZFJlcGFpbnRzIH07CisgICAgdm9pZCBz
ZXRUcmFja3NSZXBhaW50cyhib29sLCBSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yID0gUmVz
ZXRUcmFja2VkUmVwYWludHMpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KICAgICB2b2lkIHJlc2V0VHJhY2tlZFJl
cGFpbnRzKCkgeyBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgdHJhY2tlZFJlcGFpbnRSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
Y2tlZFJlcGFpbnRSZWN0czsgfQorICAgIFN0cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0
KCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiBTY3JvbGxh
YmxlQXJlYVNldDsKICAgICB2b2lkIGFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM0Y2MwODU5ZjJjMzgzN2VkZWIxZDA2ZjU4OWRmYjUzNGQzZTdkNGQuLmJiZmUx
MmU2YTlmZmIyZWMxZWMwYjcwNjg1MWY1NWNjOGU2ZDA3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC01MzYsNiArNTM2
LDEyIEBAIGRvdWJsZSBHcmFwaGljc0xheWVyOjpiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oNCAqIHNpemUoKS53aWR0aCgp
KSAqIHNpemUoKS5oZWlnaHQoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKG1fY2xpZW50LT5pc1RyYWNr
aW5nUmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3RzLmFwcGVuZChyZWN0
KTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjp3cml0ZUluZGVudChUZXh0U3RyZWFtJiB0cywg
aW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBpbmRlbnQ7ICsraSkKQEAg
LTY2MSw2ICs2NjcsMjMgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNUZXh0QmUKICAgICAgICAgICAgIHRz
IDw8ICIgIiA8PCBtX3JlcGxpY2F0ZWRMYXllcjs7CiAgICAgICAgIHRzIDw8ICIpXG4iOwogICAg
IH0KKworICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50UmVj
dHMgJiYgIW1fdHJhY2tlZFJlcGFpbnRSZWN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgd3JpdGVJ
bmRlbnQodHMsIGluZGVudCArIDEpOworICAgICAgICB0cyA8PCAiKHJlcGFpbnQgcmVjdHNcbiI7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFja2VkUmVwYWludFJlY3RzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV90cmFja2VkUmVwYWludFJlY3RzW2ldLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHdyaXRlSW5k
ZW50KHRzLCBpbmRlbnQgKyAyKTsKKyAgICAgICAgICAgIHRzIDw8ICIocmVjdCAiOworICAgICAg
ICAgICAgdHMgPDwgbV90cmFja2VkUmVwYWludFJlY3RzW2ldLngoKSA8PCAiICI7CisgICAgICAg
ICAgICB0cyA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0ueSgpIDw8ICIgIjsKKyAgICAgICAg
ICAgIHRzIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0c1tpXS53aWR0aCgpIDw8ICIgIjsKKyAgICAg
ICAgICAgIHRzIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0c1tpXS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIHRzIDw8ICIpXG4iOworICAgICAgICB9CisgICAgICAgIHRzIDw8ICIpXG4iOworICAgIH0K
ICAgICAKICAgICBkdW1wQWRkaXRpb25hbFByb3BlcnRpZXModHMsIGluZGVudCwgYmVoYXZpb3Ip
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCmluZGV4IDUwODkzY2RmY2VmNGVmZjc3NjgzYWY5MWM3NjU1NjFlYTM3Y2ZhODMuLjY0
NjUyMGZiNzUxYmY0NDdiOWJhOGZiMjBmMWFhNWZjNjM1MzdkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM1LDYgKzM1LDcg
QEAKICNlbmRpZgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50
M0QuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNp
bmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAt
NDgsNyArNDksOCBAQCBlbnVtIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yRmxhZ3MgewogICAgIExh
eWVyVHJlZUFzVGV4dEJlaGF2aW9yTm9ybWFsID0gMCwKICAgICBMYXllclRyZWVBc1RleHREZWJ1
ZyA9IDEgPDwgMCwgLy8gRHVtcCBleHRyYSBkZWJ1Z2dpbmcgaW5mbyBsaWtlIGxheWVyIGFkZHJl
c3Nlcy4KICAgICBMYXllclRyZWVBc1RleHRJbmNsdWRlVmlzaWJsZVJlY3RzID0gMSA8PCAxLAot
ICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyCisgICAgTGF5ZXJU
cmVlQXNUZXh0SW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIsCisgICAgTGF5ZXJUcmVlQXNUZXh0
SW5jbHVkZVJlcGFpbnRSZWN0cyA9IDEgPDwgMwogfTsKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJU
cmVlQXNUZXh0QmVoYXZpb3I7CiAKQEAgLTQwNCw2ICs0MDYsOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
CisgICAgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKSB7IG1fdHJhY2tlZFJlcGFpbnRS
ZWN0cy5jbGVhcigpOyB9CisgICAgdm9pZCBhZGRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3Qm
KTsKKwogI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkK
ICAgICAvLyBUaGlzIGFsbG93cyBzZXZlcmFsIGFsdGVybmF0aXZlIEdyYXBoaWNzTGF5ZXIgaW1w
bGVtZW50YXRpb25zIGluIHRoZSBzYW1lIHBvcnQsCiAgICAgLy8gZS5nLiBpZiBhIGRpZmZlcmVu
dCBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9uIGlzIG5lZWRlZCBpbiBXZWJLaXQxIHZzLiBX
ZWJLaXQyLgpAQCAtNDk4LDYgKzUwMyw3IEBAIHByb3RlY3RlZDoKICAgICBJbnRSZWN0IG1fY29u
dGVudHNSZWN0OwogCiAgICAgaW50IG1fcmVwYWludENvdW50OworICAgIFZlY3RvcjxGbG9hdFJl
Y3Q+IG1fdHJhY2tlZFJlcGFpbnRSZWN0czsgLy8gVXNlZCBmb3IgZGVidWdnaW5nLgogCiAjaWYg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIHN0YXRp
YyBHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyRmFjdG9yeUNhbGxiYWNrKiBzX2dyYXBoaWNz
TGF5ZXJGYWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllckNsaWVudC5oCmluZGV4IDNlMTA1Y2U2YjM5YWVhMWEyOTVlZTFmZjM2
YzJmMzllNzBiZTI2ZDIuLjA2ZmZiOGEyMWU4MGY0OTA1YmMxMWE2ZDczYjEyNDdkZWU4OTE5ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyQ2xpZW50LmgKQEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29u
c3QgPSAwOwogCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gUmVuZGVyTGF5ZXJCYWNr
aW5nIG92ZXJyaWRlcyB0aGlzIHRvIHZlcmlmeSB0aGF0IGl0IGlzIG5vdAogICAgIC8vIGN1cnJl
bnRseSBwYWludGluZyBjb250ZW50cy4gQW4gQVNTRVJUIGZhaWxzLCBpZiBpdCBpcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhp
Y3NMYXllckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKaW5kZXggYzFhNzAzYWNkMmZk
ZDg4M2YwYWRmNDUzNzE5NDdlNDc1MWRhNjcwZi4uZWQ3OTkyYzI4MDJhMmY4ODBmYmUyYWU1YmFl
N2NiYmZjZjliNGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJy
eS5jcHAKQEAgLTM3OSwyMCArMzc5LDI5IEBAIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6
OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKIAogdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJy
eTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIp
CisgICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOworCisgICAgICAgIGFkZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgp
KTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldE5lZWRzRGlz
cGxheSgpCiB7Ci0gICAgaWYgKGRyYXdzQ29udGVudCgpKQorICAgIGlmIChkcmF3c0NvbnRlbnQo
KSkgewogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgICAgICBhZGRS
ZXBhaW50UmVjdChGbG9hdFJlY3QobV9wb3NpdGlvbiwgbV9zaXplKSk7CisgICAgfQogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKKyAgICBpZiAoZHJh
d3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJl
Y3QpOworCisgICAgICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAppbmRleCA2ZWU5YzAyMmI5MjIyMTU4MzVmYzM0N2U1MWI4N2IyM2Y1
MWJmMTk0Li5iNDhiOTA1YjQ5MjI3ODUzOGU5YTBiYTNhY2ZiZmUyMjg0NzFmYmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKQEAgLTY3MCw2ICs2NzAsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICAgICAgbV9kaXJ0eVJlY3Rz
WzBdLnVuaXRlKHJlY3QpOwogCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERpcnR5UmVj
dHNDaGFuZ2VkKTsKKworICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOwogfQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTU5NWRmMjhkYTE2YTQwNWU0ZmM0ODM0Njc3MzBjNzJm
NWNlYTZlZi4uMzQ0YjJiN2QxNGUwY2UxZDk3NmUwYWIyYjMyYzNlZGVkODRlNTkwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MzUsMTQgKzQzNSwyMCBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NM
YXllciogbGF5ZXIpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05l
ZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKFdlYkxheWVyKiBjb250ZW50c0xheWVyID0gY29udGVu
dHNMYXllcklmUmVnaXN0ZXJlZCgpKQorICAgIGlmIChXZWJMYXllciogY29udGVudHNMYXllciA9
IGNvbnRlbnRzTGF5ZXJJZlJlZ2lzdGVyZWQoKSkgewogICAgICAgICBjb250ZW50c0xheWVyLT5p
bnZhbGlkYXRlKCk7CisKKyAgICAgICAgYWRkUmVwYWludFJlY3QoY29udGVudHNSZWN0KCkpOwor
ICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgp
CiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1fbGF5ZXItPmxheWVyKCkt
PmludmFsaWRhdGUoKTsKKworICAgICAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QobV9wb3Np
dGlvbiwgbV9zaXplKSk7CisKICAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkKICAgICAgICAg
ICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAgIH0KQEAgLTQ1Miw2ICs0NTgs
OSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAg
ICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CisKKyAgICAgICAgYWRk
UmVwYWludFJlY3QocmVjdCk7CisKICAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkKICAgICAg
ICAgICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNs
dXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFw
aGljc0xheWVyQ2x1dHRlci5jcHAKaW5kZXggMTA0Yjc5ODJiMGRhMGMxMGZkYTNhODU1YzJhMzFk
YjI3MzgyNzk2MC4uZDZhMWY5NGZmOTM5YWMzYmQ5YmJkNDgxZmIwNzk3ODU2NzYxZGRkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGlj
c0xheWVyQ2x1dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAKQEAgLTY3LDExICs2NywxNSBAQCBDbHV0
dGVyQWN0b3IqIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHZv
aWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChtX3Bvc2l0aW9uLCBt
X3NpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CisKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggZjA0Y2Y0OWRlZDc3ODkzOTJlY2FkYzAxNWY4NWE4ZDNkNjEyYjk2My4uMjk2ZTczODVlMzVh
NDA0OTAzNjRlNWFiZTg2YTdiNzE4YmVjZmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCkBAIC04OCw2ICs4OCw4IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSB0
cnVlOwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2Up
OworCisgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KG1fcG9zaXRpb24sIG1fc2l6ZSkpOwog
fQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTk1LDYgKzk3LDggQEAgdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKICAgICBu
b3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKworICAgIGFk
ZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xh
eWVyLmgpCkBAIC0xMDUsNiArMTA5LDggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShyZWN0KTsKICAgICBub3RpZnlD
aGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKworICAgIGFkZFJlcGFp
bnRSZWN0KHJlY3QpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNDJlYjQx
NzRjMmExNGFkZDgyYTFlOTQ4OGYxYzg4Yzc1NTc2MmM1NC4uYWYyMjU1MDUyN2FhZjNjZTI3ODRm
OTk5Mzc5MTgxN2U1ODI0NGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE1ODAsNiArMTU4MCwxNSBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25z
dAogICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPmNvbXBvc2l0b3JTaG93
UmVwYWludENvdW50ZXIoKSA6IGZhbHNlOwogfQogCitib29sIFJlbmRlckxheWVyQmFja2luZzo6
aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJl
cigpLT5mcmFtZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiAw
OworICAgIGlmIChwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpICYmIHBhZ2UtPm1haW5GcmFtZSgp
LT52aWV3KCkpCisgICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pc1Ry
YWNraW5nUmVwYWludHMoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZm5kZWYgTkRFQlVH
CiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dmVyaWZ5Tm90UGFpbnRpbmcoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDk0NjhmZTlk
MzAwMjczM2Y2MjU0OTc3ZmZiNmYxOWVjZjlmOTI0OTAuLjg1MDgyYjhmMDllYzE0ZGEyNmViM2Mx
ZDc3MzhlNDMxOGJkODFlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmgKQEAgLTE1NCw2ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXll
ciopIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50
cygpIGNvbnN0IE9WRVJSSURFOworCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCB2
ZXJpZnlOb3RQYWludGluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGQzOGU3MzhkZWMyYzUxNDFkNzJh
Y2NiOGEyZjU4OGYyZjE5NjIxYjMuLjA5YWM5ZjJhZjcwYzcxM2EwOGUyNWZjNTMyNDM3MjgyMjBm
OTgyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCkBAIC0xMTQyLDEwICsxMTQyLDE5IEBAIFN0cmluZyBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAg
bGF5ZXJUcmVlQmVoYXZpb3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0czsK
ICAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzKQogICAgICAg
ICBsYXllclRyZWVCZWhhdmlvciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlczsK
KyAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMpCisgICAg
ICAgIGxheWVyVHJlZUJlaGF2aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50UmVj
dHM7CiAKICAgICAvLyBXZSBza2lwIGR1bXBpbmcgdGhlIHNjcm9sbCBhbmQgY2xpcCBsYXllcnMg
dG8ga2VlcCBsYXllclRyZWVBc1RleHQgb3V0cHV0CiAgICAgLy8gc2ltaWxhciBiZXR3ZWVuIHBs
YXRmb3Jtcy4KLSAgICByZXR1cm4gbV9yb290Q29udGVudExheWVyLT5sYXllclRyZWVBc1RleHQo
bGF5ZXJUcmVlQmVoYXZpb3IpOworICAgIFN0cmluZyBsYXllclRyZWVUZXh0ID0gbV9yb290Q29u
dGVudExheWVyLT5sYXllclRyZWVBc1RleHQobGF5ZXJUcmVlQmVoYXZpb3IpOworCisgICAgLy8g
VGhlIHRydWUgcm9vdCBsYXllciBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGR1bXAsIHNvIGlmIHdl
IHdhbnQgdG8gcmVwb3J0CisgICAgLy8gaXRzIHJlcGFpbnQgcmVjdHMsIHRoZXkgbXVzdCBiZSBh
cHBlbmRlZCBoZXJlLgorICAgIGlmIChmbGFncyAmIExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFp
bnRSZWN0cykKKyAgICAgICAgbGF5ZXJUcmVlVGV4dC5hcHBlbmQobV9yZW5kZXJWaWV3LT5mcmFt
ZVZpZXcoKS0+dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpKTsKKworICAgIHJldHVybiBsYXll
clRyZWVUZXh0OwogfQogCiBSZW5kZXJMYXllckNvbXBvc2l0b3IqIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZnJhbWVDb250ZW50c0NvbXBvc2l0b3IoUmVuZGVyUGFydCogcmVuZGVyZXIpCkBAIC0x
OTg0LDYgKzE5OTMsMzMgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRvY3VtZW50QmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkKICAgICBncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5k
Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKIH0KIAorc3RhdGljIHZvaWQgcmVzZXRUcmFja2VkUmVw
YWludFJlY3RzUmVjdXJzaXZlKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7CisgICAg
aWYgKCFncmFwaGljc0xheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBncmFwaGljc0xheWVy
LT5yZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAgcmVzZXRU
cmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKClbaV0p
OworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FMYXllciA9IGdyYXBoaWNzTGF5ZXIt
PnJlcGxpY2FMYXllcigpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNp
dmUocmVwbGljYUxheWVyKTsKKworICAgIGlmIChHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXIgPSBn
cmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgcmVzZXRUcmFja2VkUmVwYWludFJl
Y3RzUmVjdXJzaXZlKG1hc2tMYXllcik7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKQoreworICAgIFJlbmRlckxheWVyQmFja2luZyog
YmFja2luZyA9IHJvb3RSZW5kZXJMYXllcigpLT5iYWNraW5nKCk7CisgICAgaWYgKCFiYWNraW5n
IHx8ICFiYWNraW5nLT51c2luZ1RpbGVDYWNoZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyID0gYmFja2luZy0+Z3JhcGhpY3NMYXllcigpOwor
ICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShncmFwaGljc0xheWVyKTsKK30K
KwogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3Jh
cGhpY3NMYXllciogbGF5ZXIpIGNvbnN0CiB7CiAgICAgaWYgKGxheWVyID09IG1fbGF5ZXJGb3JI
b3Jpem9udGFsU2Nyb2xsYmFyIHx8IGxheWVyID09IG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJh
ciB8fCBsYXllciA9PSBtX2xheWVyRm9yU2Nyb2xsQ29ybmVyKQpAQCAtMjAwMCw2ICsyMDM2LDE1
IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG93UmVwYWludENvdW50ZXIoY29uc3Qg
R3JhcGhpY3NMYXllciogbGF5ZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAg
ICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByb290UmVuZGVyTGF5ZXIoKS0+YmFja2lu
ZygpOworICAgIGlmICghYmFja2luZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIGJhY2tpbmctPmlzVHJhY2tpbmdSZXBhaW50cygpOworfQorCiBmbG9hdCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdl
ID0gdGhpcy0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCmluZGV4IDhhZDFkOTkyNDc5ZWNiN2M2MGMxMjQyZWQyZjRkMDc1ZDky
OGI2YWQuLjQ2ZWRlYjgzMjE0MmIwYzdjNjgzMjllMzE5Mzk0MGViMjY4NGY0ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTIy
Niw2ICsyMjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRvY3VtZW50QmFja2dyb3VuZENvbG9y
RGlkQ2hhbmdlKCk7CiAKKyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpOworCiBw
cml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTIzNiw3ICsyMzgsOSBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NM
YXllciopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50
ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwotICAgIAorCisgICAgdmly
dHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8g
R3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hMYXllcnMoR3JhcGhpY3NMYXllclVwZGF0ZXIqKSBPVkVSUklERTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5NDk2YzIyYjMyNWJjOTFkMzIzZmUz
ZGI1YTNmZTcwNWRlM2Y3NjkyLi5hY2YwMTQ0YWIzMmU4Mzc4M2QxNzY2ZTM4OGNkNTQxNjJiMTE3
MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjM5LDYgKzEyMzks
OCBAQCBTdHJpbmcgSW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50
LCB1bnNpZ25lZCBmbGFncywgRXhjZXB0aW9uQwogICAgICAgICBsYXllclRyZWVGbGFncyB8PSBM
YXllclRyZWVGbGFnc0luY2x1ZGVWaXNpYmxlUmVjdHM7CiAgICAgaWYgKGZsYWdzICYgTEFZRVJf
VFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUykKICAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5
ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNhY2hlczsKKyAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVF
X0lOQ0xVREVTX1JFUEFJTlRfUkVDVFMpCisgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVy
VHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0czsKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJh
bWUoKS0+bGF5ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUZsYWdzKTsKIH0KQEAgLTEzNzIsNCArMTM3
NCwyNiBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IEludGVybmFsczo6Z2V0UmVmZXJlbmNl
ZEZpbGVQYXRocygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0xpc3QucmVsZWFzZSgpOwogfQog
Cit2b2lkIEludGVybmFsczo6c3RhcnRUcmFja2luZ1JlcGFpbnRzKERvY3VtZW50KiBkb2N1bWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnZpZXcoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZG9jdW1lbnQtPnZpZXco
KTsKKyAgICBmcmFtZVZpZXctPnNldFRyYWNrc1JlcGFpbnRzKHRydWUpOworfQorCit2b2lkIElu
dGVybmFsczo6c3RvcFRyYWNraW5nUmVwYWludHMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAgIGZy
YW1lVmlldy0+c2V0VHJhY2tzUmVwYWludHMoZmFsc2UsIEZyYW1lVmlldzo6RG9Ob3RSZXNldFRy
YWNrZWRSZXBhaW50cyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IDU2OWNlMjllMDlmMTAwMDQ5ZmE2MzQxNjAxNzc3YjEzMzljNmRhNmQuLjgwZDY2YjM0Y2IyZmJl
ZWU1NTJhOWUzMGM5MzBlZmY0YWRkMDljODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMTkwLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgLy8gVmFs
dWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAgICAgICAg
TEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKLSAgICAgICAgTEFZRVJfVFJF
RV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDIKLSAgICAgICAgCisgICAgICAgIExBWUVSX1RSRUVf
SU5DTFVERVNfVElMRV9DQUNIRVMgPSAyLAorICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1JF
UEFJTlRfUkVDVFMgPSA0CiAgICAgfTsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERvY3Vt
ZW50KiwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdHJpbmcg
bGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpAQCAtMjMx
LDYgKzIzMSw5IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZ2V0
UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0OwogCisgICAgdm9pZCBzdGFydFRyYWNraW5nUmVw
YWludHMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzdG9wVHJhY2tpbmdS
ZXBhaW50cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMmUwOTM3NTVh
NzVjZWU5ZTQ1YzdlYTg3ZDM0NjNjODY2MzhiMzRlYy4uN2M5YTRhZDcyOTc1Y2YyMGIyOTNiYWY3
YmVmZDUyN2QwNTJiYjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MTU5LDYgKzE1OSw3IEBACiAgICAgLy8gRmxhZ3MgZm9yIGxheWVyVHJlZUFzVGV4dC4KICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAx
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNI
RVMgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfUkVQ
QUlOVF9SRUNUUyA9IDQ7CiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVu
dCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2Vz
KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CkBAIC0yMDAsNCAr
MjAxLDcgQEAKICAgICBNYWxsb2NTdGF0aXN0aWNzIG1hbGxvY1N0YXRpc3RpY3MoKTsKIAogICAg
IERPTVN0cmluZ1tdIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKTsKKworICAgIHZvaWQgc3RhcnRU
cmFja2luZ1JlcGFpbnRzKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CisgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXBhaW50cyhpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV2lkZ2V0LmgKaW5kZXggZmE0NTYyMzhhM2JkMTc4YTllMTJhOTIzMmU4ZTE3OGEzYjFmMmIz
Zi4uZDk5OWQ2MjBhYjQ2NjBlZjYxZmE4NDMwMjBhY2UwYTdlYzBmNjM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKQEAgLTEyNSw2ICsxMjUsOSBAQCBwdWJs
aWM6CiAgICAgLy8gYW5pbWF0ZSBvciBsYXlvdXQgaW4gdGhpcyBjYXNlLgogICAgIHZpcnR1YWwg
dm9pZCBjb21wb3NpdGUoYm9vbCBmaW5pc2gpID0gMDsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB3ZSd2ZSBzdGFydGVkIHRyYWNraW5nIHJlcGFpbnQgcmVjdGFuZ2xlcy4KKyAgICB2aXJ0dWFs
IGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAg
IC8vIEluZGljYXRlcyB0aGF0IHRoZSBjb21wb3NpdGluZyBzdXJmYWNlIGFzc29jaWF0ZWQgd2l0
aCB0aGlzIFdlYldpZGdldCBpcwogICAgIC8vIHJlYWR5IHRvIHVzZS4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29tcG9zaXRvclN1cmZhY2VSZWFkeSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAKaW5kZXggODE1YTBjMzAwZTlhYjUxOTYwY2U5NDBk
OTJkZGExNTZhOTQwZTU5Yy4uMWEzYTc3Y2Y1NGM5ODQxNjEwMTllOTE4ZTM1NTc3MGVlNTQyOTA4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAKQEAg
LTMwMiw2ICszMDIsOSBAQCB2b2lkIExpbmtIaWdobGlnaHQ6OnVwZGF0ZUdlb21ldHJ5KCkKICAg
ICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGludmFsaWRhdGUgdGhlIGxheWVyIGlmIHRoZSBoaWdo
bGlnaHQgc2l6ZSBoYXMgY2hhbmdlZCwgb3RoZXJ3aXNlCiAgICAgICAgIC8vIHdlIGNhbiBqdXN0
IHJlLXBvc2l0aW9uIHRoZSBsYXllciB3aXRob3V0IG5lZWRpbmcgdG8gcmVwYWludC4KICAgICAg
ICAgbV9jb250ZW50TGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKKworICAgICAgICBpZiAo
bV9jdXJyZW50R3JhcGhpY3NMYXllcikKKyAgICAgICAgICAgIG1fY3VycmVudEdyYXBoaWNzTGF5
ZXItPmFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChsYXllcigpLT5wb3NpdGlvbigpLngsIGxheWVy
KCktPnBvc2l0aW9uKCkueSwgbGF5ZXIoKS0+Ym91bmRzKCkud2lkdGgsIGxheWVyKCktPmJvdW5k
cygpLmhlaWdodCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXggMjFiOTcyNWIwZWE1
ZDAwYTA4YmEzNjQxNmU1YjgwNWMwZjNmZWJlMS4uMjNkY2RkZTliNzliNDk4OTVhMmYyMjFiN2Jh
NTEwMGEzNmNjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC0yMDEsNCArMjAxLDkgQEAgYm9vbCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIHJldHVy
biBtX3dlYlZpZXctPmlzVHJhY2tpbmdSZXBhaW50cygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LmgKaW5kZXggMDhlOWM2OWIyZjdjYTFmM2U0YzgwMGU4OTIyODE5YzJlOTU2
YmNiNC4uMmI2ZGRjMWFhYjAwMjYxNWUyYjkxZjc4OWE2NjVkNDNmMmI1YjA4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LmgKQEAgLTczLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNsaXBSZWN0KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycyhj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNo
b3dSZXBhaW50Q291bnRlcihjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0OwogCiAgICAgYm9vbCBo
YXZlU2Nyb2xsTGF5ZXIoKTsKICAgICBXZWJMYXllciogc2Nyb2xsTGF5ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAxNjI1OGFmMzkzZTAwMTAz
YzBmMTZhZDcwNzYwNWZmNjcyMDY1ZWU5Li5jMmU4ZDFiODM3ZDE1YTBhY2IyYjY4YWY3NmZiM2Ri
ZGJkMmNiODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC0xODE0LDYgKzE4MTQsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cGFpbnQoV2ViQ2FudmFz
KiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFBhaW50T3B0aW9ucyBvcHQKICAgICB9CiB9
CiAKK2Jvb2wgV2ViVmlld0ltcGw6OmlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0Cit7CisgICAg
aWYgKCFwYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBGcmFtZVZpZXcqIHZpZXcg
PSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgcmV0dXJuIHZpZXctPmlzVHJhY2tp
bmdSZXBhaW50cygpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjp0aGVtZUNoYW5nZWQoKQogewog
ICAgIGlmICghcGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
aW5kZXggNDM5ZTBlNmIxNzcyM2M2ZDk0NjZlMzE5NmJkNjk5OWNmYjliZjk5ZS4uYzE0MzVkYzI2
YTdmZmEwMDAwZDUzNDJjOGQyYmYyYWVjZDQ5YTA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xNDYsNiArMTQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlKGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOyAvLyBB
bHNvIGltcGxlbWVudHMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudDo6bGF5b3V0KCkKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYsIFBhaW50T3B0aW9ucyA9
IFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJsZSk7CisgICAgdmlydHVhbCBib29sIGlz
VHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aGVt
ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIK
aW5kZXggMjFjYTJmZjZjZTNhYmJlN2NlNzE0NjE0NTNkYzYzNWUyOWUzNmVmMC4uNjE4ZjU1ZDMx
Nzc0ZmQyYzljNzcxY2VkN2VjNTkzMDkxOTgxZTg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvbWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3Jk
ZXIKQEAgLTMzODQsMyArMzM4NCw0IEBAIF9XS0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmlt
YXRpb24KIF9XS0FwcEtpdERyYXdEZWNveVdpbmRvd19pc0tleVdpbmRvdwogX19aTjZXZWJLaXQ3
V2ViUGFnZTM2c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKIF9fWk42V2Vi
S2l0N1dlYlBhZ2UzNXJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRXYKK19fWk43
V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWJOUzBfMjhSZXNldFRyYWNrZWRS
ZXBhaW50c0JlaGF2aW9yRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDI4MGE1OWYyZjdlNWU0
NzgzYTA4ZGEzN2U2M2NlODRkYTNiNTNhOTMuLjQ2ZThhMzM4Yzk5OTM1Yzk0ODI3Y2NhMDBiYmUz
MWVjMDhiZTNhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTMxMiw0ICszMTIsNSBAQCBF
WFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNT
dGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWRE9NV2luZG93QDFAQFoKICAgICAgICAg
P3dpbmRvd09iamVjdENsZWFyZWRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3Jl
QEBVQUVYWFoKICAgICAgICAgP2xheWVyVHJlZUFzVGV4dEBGcmFtZUBXZWJDb3JlQEBRQkU/QVZT
dHJpbmdAV1RGQEBJQFoKKyAgICAgICAgP3NldFRyYWNrc1JlcGFpbnRzQEZyYW1lVmlld0BXZWJD
b3JlQEBRQUVYX05XNFJlc2V0VHJhY2tlZFJlcGFpbnRzQmVoYXZpb3JAMTJAQFoKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDVhOWQ0YmM3N2FhOGY3NGJlZDU5YWZhZjg3
YmVhZmNjMTBiZDRmNWEuLmNmMjRmNmU3YmZlNTViMjFmYWUzN2IyZWQ3MTQ4NDdiZTY4NWQ4N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTI5OSwzICsyOTksNCBAQCBF
WFBPUlRTCiAgICAgICAgID9zZXRQcm9wZXJ0eUBTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsQFdlYkNvcmVAQFVBRVhBQlZTdHJpbmdAV1RGQEAwQFoKICAgICAgICAgP3RvSlNA
V2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxP
YmplY3RAMUBQQVZET01XaW5kb3dAMUBAWgogICAgICAgICA/d2luZG93T2JqZWN0Q2xlYXJlZEBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWgorICAgICAgICA/c2V0
VHJhY2tzUmVwYWludHNARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhfTlc0UmVzZXRUcmFja2VkUmVw
YWludHNCZWhhdmlvckAxMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNTcxNTVkZjVl
YWRiZTJmOGE3YzcwZDhkN2MwODhlNzliZTZjYjA4Ny4uYWMwY2M5MWU5MzdmZGFiYjZhMmFhYTVj
YTk2M2NhMTc1OTk3NDI3NCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yMDUsNiArMjA1
LDcgQEAgX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDI2cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHNFUE5TXzVGcmFtZUVpaWlpaWlpOwogX1pOSzdXZWJDb3JlOURPTVdpbmRvdzhkb2N1bWVudEV2
OwogX1pUVk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0U7
CiBfWk5LN1dlYkNvcmU1RnJhbWUxNWxheWVyVHJlZUFzVGV4dEVqOworX1pON1dlYkNvcmU5RnJh
bWVWaWV3MTdzZXRUcmFja3NSZXBhaW50c0ViTlMwXzI4UmVzZXRUcmFja2VkUmVwYWludHNCZWhh
dmlvckU7CiAKIGxvY2FsOgogX1oqOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhNDczM2VkYjlhZmJmODFmNjI5MTZhZjQx
NWU5YWQxNjc5ZTNmYzEuLmJjNTUyZDk5ZGRhNDdiMWY2MTQ1MmFmNGUzODI3NDlmMGExNTJjZjIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0yNCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGludmFsaWRhdGlvbiB0cmFja2luZyBm
b3IgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3ODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3dzIHRyYWNraW5nIG9mIGdyYXBoaWNzIGxheWVyIGludmFsaWRhdGlv
bnMuIFRoZSBncmFwaGljcyBsYXllcnMKKyAgICAgICAgY2FuIG5vdyBzdG9yZSAobG9jYWwpIGlu
dmFsaWRhdGlvbiByZWN0cyBhbmQgaW5jbHVkZSB0aGVtIGluIHRoZQorICAgICAgICBsYXllciB0
cmVlIGR1bXAuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMt
b24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21w
b3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxp
ZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEy
LTEwLTI0ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50
ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEhvcGVmdWxseSBmaW5pc2ggcmViYXNlbGluaW5nIGFm
dGVyIHIxMzE5NDEgYW5kIHIxMzE5OTEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNv
bXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGU4NDA2MTcxMzIxYzky
OTc0NmE5Zjk4MmViMjFmOWIxYTBhOWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKKyhHcmFwaGljc0xheWVyIChib3VuZHMgODAwLjAw
IDYwMC4wMCkgKGNoaWxkcmVuIDEgKEdyYXBoaWNzTGF5ZXIgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KSAoY2hpbGRyZW4gMSAoR3JhcGhpY3NMYXllciAocG9zaXRpb24gOC4wMCAyOC4wMCkgKGJvdW5k
cyA0MDAuMDAgNDAwLjAwKSAoZHJhd3NDb250ZW50IDEpIChyZXBhaW50IHJlY3RzIChyZWN0IDgu
MDAgMjguMDAgNDAwLjAwIDQwMC4wMCkgKSAoY2hpbGRyZW4gMSAoR3JhcGhpY3NMYXllciAocG9z
aXRpb24gNTAuMDAgNTAuMDApIChib3VuZHMgNzUuMDAgNzUuMDApIChkcmF3c0NvbnRlbnQgMSkg
KHJlcGFpbnQgcmVjdHMgKHJlY3QgNTAuMDAgNTAuMDAgNzUuMDAgNzUuMDApICkgKSApICkgKSAp
ICkgKSAocmVwYWludCByZWN0cyAocmVjdCAwIDAgODAwIDYwMCkgKHJlY3QgMCAwIDgwMCA2MDAp
IChyZWN0IDAgMCA4MDAgNDM2KSAocmVjdCAwIDAgODAwIDYwMCkgKHJlY3QgMCAwIDgwMCA0MzYp
IChyZWN0IDAgMCA4MDAgNjAwKSApCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQt
bGF5ZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI1M2M0YjE5NGIwYjQ3ZjY4ZmE0ZDVjZWYyMmEyZTY0
NWY5YTZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sCkBAIC0wLDAgKzEsNjgg
QEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tCitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgcmVwYWlu
dCB0ZXN0aW5nIHdvcmtzIHdpdGggY29tcG9zaXRlZCBsYXllcnMuCistLT4KKworPGh0bWw+Cis8
aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAjcGFyZW50IHsKKyAgICAgICAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKKyAgICAgICAgd2lkdGg6IDQwMHB4
OworICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBibHVlOworICAg
IH0KKworICAgICNjaGlsZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVa
KDBweCk7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogNTBweDsK
KyAgICAgICAgdG9wOiA1MHB4OworICAgICAgICB3aWR0aDogNzVweDsKKyAgICAgICAgaGVpZ2h0
OiA3NXB4OworICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB9CisKKyAgPC9zdHlsZT4K
KyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgICAgICAgIGFsZXJ0KCdUaGlzIHRlc3QgcmVxdWlyZXMgdGVzdFJ1
bm5lciB0byBydW4hJyk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisKKyAg
ICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgYWxlcnQoJ1Ro
aXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJhbHMgdG8gcnVuIScpOworICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgfQorCisgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KGZhbHNlKTsKKworICAgICAgICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncGFyZW50Jyk7CisgICAgICAgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NoaWxkJyk7CisKKyAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdS
ZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAgICAgICBjaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0g
J2JsdWUnOworICAgICAgICAgIHBhcmVudC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2dyZWVuJzsKKwor
ICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQnKTsKKyAg
ICAgICAgICB0ZXh0LmlubmVySFRNTCA9ICdUaGlzIHRleHQgd2lsbCBiZSByZXBsYWNlZCB3aXRo
IHRoZSBsYXllciB0cmVlJzsKKworICAgICAgICAgIC8vIEZvcmNlIGEgc3R5bGUgcmVjYWxjLgor
ICAgICAgICAgIHZhciBkdW1teSA9IGNoaWxkLm9mZnNldFRvcDsKKworICAgICAgICAgIHdpbmRv
dy5pbnRlcm5hbHMuc3RvcFRyYWNraW5nUmVwYWludHMoZG9jdW1lbnQpOworCisgICAgICAgICAg
dGV4dC5pbm5lckhUTUwgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVu
dCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUyk7CisgICAgICB9
KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBpZD0idGV4dCI+PC9kaXY+
CisgIDxkaXYgaWQ9InBhcmVudCI+CisgICAgPGRpdiBpZD0iY2hpbGQiPjwvZGl2PgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYThlZWE0OTA4MDEzNmYzYzg5Y2ExOTczYjdlZWEwN2U5MmFlMmFmZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9yZXBhaW50L2lu
dmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MiBAQAorKEdyYXBoaWNzTGF5ZXIgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKSAoY2hpbGRyZW4gMSAo
R3JhcGhpY3NMYXllciAoYm91bmRzIDgwMC4wMCA2MDAuMDApIChjaGlsZHJlbiAxIChHcmFwaGlj
c0xheWVyIChwb3NpdGlvbiA4LjAwIDI2LjAwKSAoYm91bmRzIDQwMC4wMCA0MDAuMDApIChkcmF3
c0NvbnRlbnQgMSkgKHJlcGFpbnQgcmVjdHMgKHJlY3QgMC4wMCAwLjAwIDQwMC4wMCA0MDAuMDAp
ICkgKGNoaWxkcmVuIDEgKEdyYXBoaWNzTGF5ZXIgKHBvc2l0aW9uIDUwLjAwIDUwLjAwKSAoYm91
bmRzIDc1LjAwIDc1LjAwKSAoZHJhd3NDb250ZW50IDEpIChyZXBhaW50IHJlY3RzIChyZWN0IDAu
MDAgMC4wMCA3NS4wMCA3NS4wMCkgKSApICkgKSApICkgKSApIChyZXBhaW50IHJlY3RzIChyZWN0
IDAgMCA4MDAgNjAwKSAocmVjdCAwIDAgODAwIDYwMCkgKHJlY3QgMCAwIDgwMCA0MzQpIChyZWN0
IDAgMCA4MDAgNjAwKSAocmVjdCAwIDAgODAwIDQzNCkgKHJlY3QgMCAwIDgwMCA2MDApICkKKwpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDNkODhlMGMyNDZlMGQyZjQ2
YWVkYTA0ODZkMDQ1YmRhZjYzMDM4MDAuLmUyYmIyY2M3ZjFmYmRhYTAxZjVlNTliYjUyMTYwNTdl
NzdlOTVjODUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMi0xMC0yNCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBTdXBwb3J0IGludmFsaWRhdGlvbiB0cmFja2luZyBmb3IgY29tcG9zaXRlZCBs
YXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
ODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3dzIHRyYWNraW5nIG9mIGdyYXBoaWNzIGxheWVyIGludmFsaWRhdGlvbnMuIFRoZSBncmFwaGlj
cyBsYXllcnMKKyAgICAgICAgY2FuIG5vdyBzdG9yZSAobG9jYWwpIGludmFsaWRhdGlvbiByZWN0
cyBhbmQgaW5jbHVkZSB0aGVtIGluIHRoZQorICAgICAgICBsYXllciB0cmVlIGR1bXAuCisKKyAg
ICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTEwLTI0ICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV0syXSBb
R1RLXSBUZXN0V2ViS2l0QWNjZXNzaWJpbGl0eSBpcyBub3QgYmVpbmcgcnVuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170406</attachid>
            <date>2012-10-24 08:34:55 -0700</date>
            <delta_ts>2012-10-31 10:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121024113330.patch</filename>
            <type>text/plain</type>
            <size>41130</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIyYWYzZGU5ZjBlY2Fm
NmVmZmQ0MGQ0NDRjM2YzZjI2MzUyOTYwOC4uYjE5ZWE1ZTE1YWNjZGNkOGE1OTljNzIzMjFlOWMx
M2E3OWExNGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTEwLTI0ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvd3MgdHJhY2tpbmcgb2YgZ3JhcGhpY3Mg
bGF5ZXIgaW52YWxpZGF0aW9ucy4gVGhlIGdyYXBoaWNzIGxheWVycworICAgICAgICBjYW4gbm93
IHN0b3JlIChsb2NhbCkgaW52YWxpZGF0aW9uIHJlY3RzIGFuZCBpbmNsdWRlIHRoZW0gaW4gdGhl
CisgICAgICAgIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9y
ZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbAorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0VHJhY2tz
UmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJl
Y3RzQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgIChGcmFtZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YWRkUmVw
YWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cmVzZXRUcmFj
a2VkUmVwYWludFJlY3RzKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChHcmFw
aGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXlJblJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29u
dGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRz
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgIChSZW5kZXJMYXll
ckJhY2tpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9z
aXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpzdGFydFRyYWNraW5nUmVwYWludHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnN0b3BUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxMi0wOS0yNyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBwcm92aWRlIG1lbW9yeSBpbnN0cnVtZW50YXRpb24gZm9yIExp
c3RIYXNoU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhkMzY0ZGQ1ZDJhODdkYjYx
NmQxYzMxMTljZGYxNmVhM2MxZGE1MjEuLmQ0M2YzM2UzNmRkNWM3ZWRlODU5ODRkNjZmZTRjOGUx
MWI5YzE5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTItMTAtMjQgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
U3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFja2lu
ZyBvZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJzCisg
ICAgICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGluY2x1
ZGUgdGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogcHVi
bGljL1dlYldpZGdldC5oOgorICAgICAgICAoV2ViV2lkZ2V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHNyYy9MaW5rSGlnaGxp
Z2h0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdodDo6dXBkYXRlR2VvbWV0cnkp
OgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cyk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
aDoKKyAgICAgICAgKE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzVHJhY2tpbmdS
ZXBhaW50cyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA5LTI3ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUg
bWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgTGlzdEhhc2hTZXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZTI0
YTQ0Y2QyMzkxNDliMTVlOTliMjQ0YWI1NTZiOTIzMjkwNzMyLi40NTM3OGFiZjNkZjlhMGY5ZTM2
NGUwOTc2ZmQ2YTc5ODQzYWUxMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MTAtMjQgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Vw
cG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93cyB0cmFja2luZyBv
ZiBncmFwaGljcyBsYXllciBpbnZhbGlkYXRpb25zLiBUaGUgZ3JhcGhpY3MgbGF5ZXJzCisgICAg
ICAgIGNhbiBub3cgc3RvcmUgKGxvY2FsKSBpbnZhbGlkYXRpb24gcmVjdHMgYW5kIGluY2x1ZGUg
dGhlbSBpbiB0aGUKKyAgICAgICAgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogbWFjL1dl
YktpdDIub3JkZXI6CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0xMC0yNCAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3Vk
YXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFTU0VSVElP
TiBGQUlMRUQ6IGVkamUoKTogY291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQgZHVlIHRv
IG1pc3NpbmcgdGhlbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggOThiYjQ4ZDRjYzI0YTNiOGM0
YzQ1MmI1ZWFlZjk1NThkMDhjZWJmYS4uOTc4ZmJiMjVkNDc2NTFhZjA3MDUxMmY0ZmY5ZjI5ZmJl
OWIyYzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI2Myw2ICsyNjMsNyBAQCBfX1pON1dl
YkNvcmUxNEZyYW1lU2VsZWN0aW9uNWNsZWFyRXYKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b242bW9kaWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TXzE1
VGV4dEdyYW51bGFyaXR5RU5TXzE0RVVzZXJUcmlnZ2VyZWRFCiBfX1pON1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uOXNlbGVjdEFsbEV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5T
XzVGcmFtZUUKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWJOUzBf
MjhSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yRQogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1
bWVudDEycGx1Z2luV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXIxMmNyZWF0
ZU5TRGF0YUV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyRDFFdgpAQCAtOTkxLDcgKzk5
Miw2IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNnNldFBhaW50QmVoYXZpb3JFagogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzE3YWRkU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFyZWFF
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdwYWludENvbnRyb2xUaW50c0V2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTdzZXRTY3JvbGxQb3NpdGlvbkVSS05TXzhJbnRQb2ludEUKLV9fWk43V2Vi
Q29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcxOHVwZGF0ZUNvbnRyb2xUaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTlzY3JvbGxF
bGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IGIxYTEz
MTYxZmU0ODc5M2M0MzMxNDg1ODViMDZjOWI2OGJlY2RmY2MuLjQ4YWJiN2ZhYjdiNTg3MGUxNzU3
Y2U3NzgwMTBmOTg2ZjdiMjU1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTc5LDcgKzc5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGVudW0gewogICAgICAgICBMYXllclRyZWVGbGFnc0lu
Y2x1ZGVEZWJ1Z0luZm8gPSAxIDw8IDAsCiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVZp
c2libGVSZWN0cyA9IDEgPDwgMSwKLSAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNh
Y2hlcyA9IDEgPDwgMgorICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzID0g
MSA8PCAyLAorICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMgPSAxIDw8
IDMKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlRmxhZ3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3MzkwMjhkZWE5ZjQ5MTZlOWU5Y2JiMWViM2JkOTM2
Y2IzNzYxMzNkLi40ODU4NmJmMTA5Njk5MmMxNWU2Yjg3MTFmYThhYThkMDZjYjUwMTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KQEAgLTM2NDUs
MTUgKzM2NDYsMzMgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJy
ZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKGQKICAgICBzX2RlZmVycmVkUmVw
YWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZyA9IHA7CiB9CiAKLXZvaWQgRnJhbWVWaWV3
OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCit2b2lkIEZyYW1lVmlldzo6
c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzLCBSZXNldFRyYWNrZWRSZXBhaW50
c0JlaGF2aW9yIGJlaGF2aW9yKQogewogICAgIGlmICh0cmFja1JlcGFpbnRzID09IG1faXNUcmFj
a2luZ1JlcGFpbnRzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV90cmFja2VkUmVwYWlu
dFJlY3RzLmNsZWFyKCk7CisgICAgaWYgKGJlaGF2aW9yID09IFJlc2V0VHJhY2tlZFJlcGFpbnRz
KSB7CisgICAgICAgIG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290
UmVuZGVyZXIodGhpcykpIHsKKyAgICAgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29t
cG9zaXRvciA9IHJvb3QtPmNvbXBvc2l0b3IoKTsKKyAgICAgICAgICAgIGNvbXBvc2l0b3ItPnJl
c2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CiAgICAg
bV9pc1RyYWNraW5nUmVwYWludHMgPSB0cmFja1JlcGFpbnRzOwogfQogCitTdHJpbmcgRnJhbWVW
aWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3QKK3sKKyAgICBUZXh0U3RyZWFt
IHRzOworICAgIHRzIDw8ICIocmVwYWludCByZWN0c1xuIjsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgdHMgPDwg
IiAgKHJlY3QgIiA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0ueCgpIDw8ICIgIiA8PCBtX3Ry
YWNrZWRSZXBhaW50UmVjdHNbaV0ueSgpIDw8ICIgIiA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNb
aV0ud2lkdGgoKSA8PCAiICIgPDwgbV90cmFja2VkUmVwYWludFJlY3RzW2ldLmhlaWdodCgpIDw8
ICIpXG4iOworICAgIHRzIDw8ICIpXG4iOworICAgIHJldHVybiB0cy5yZWxlYXNlKCk7Cit9CisK
IHZvaWQgRnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCmluZGV4IDFmMWFkYjQ1OTNiZTMyZWZmYWFiNzRkM2RhNzFlOTFkN2U3OWQ5YTQuLjVl
MjJlYmZkNTEzMjE4NGYyMmJmY2RhOWE5MTYzNmUzZmY5YzJmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaApAQCAtMzM2LDEwICszMzYsMTIgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBl
bWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKICAgICAKLSAgICB2b2lkIHNldFRyYWNrc1JlcGFp
bnRzKGJvb2wpOworICAgIGVudW0gUmVzZXRUcmFja2VkUmVwYWludHNCZWhhdmlvciB7IFJlc2V0
VHJhY2tlZFJlcGFpbnRzLCBEb05vdFJlc2V0VHJhY2tlZFJlcGFpbnRzIH07CisgICAgdm9pZCBz
ZXRUcmFja3NSZXBhaW50cyhib29sLCBSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yID0gUmVz
ZXRUcmFja2VkUmVwYWludHMpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KICAgICB2b2lkIHJlc2V0VHJhY2tlZFJl
cGFpbnRzKCkgeyBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYgdHJhY2tlZFJlcGFpbnRSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
Y2tlZFJlcGFpbnRSZWN0czsgfQorICAgIFN0cmluZyB0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0
KCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2Nyb2xsYWJsZUFyZWEqPiBTY3JvbGxh
YmxlQXJlYVNldDsKICAgICB2b2lkIGFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGM0Y2MwODU5ZjJjMzgzN2VkZWIxZDA2ZjU4OWRmYjUzNGQzZTdkNGQuLjEwMzMz
ZDMzYmQ0MDA3NGZkZDJjOTJjYjI1YmI4YWI1YmQ3NjlhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC01MzYsNiArNTM2
LDEyIEBAIGRvdWJsZSBHcmFwaGljc0xheWVyOjpiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oNCAqIHNpemUoKS53aWR0aCgp
KSAqIHNpemUoKS5oZWlnaHQoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgaWYgKG1fY2xpZW50LT5pc1RyYWNr
aW5nUmVwYWludHMoKSkKKyAgICAgICAgbV90cmFja2VkUmVwYWludFJlY3RzLmFwcGVuZChyZWN0
KTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjp3cml0ZUluZGVudChUZXh0U3RyZWFtJiB0cywg
aW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBpbmRlbnQ7ICsraSkKQEAg
LTY2MSw2ICs2NjcsMjQgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNUZXh0QmUKICAgICAgICAgICAgIHRz
IDw8ICIgIiA8PCBtX3JlcGxpY2F0ZWRMYXllcjs7CiAgICAgICAgIHRzIDw8ICIpXG4iOwogICAg
IH0KKworICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50UmVj
dHMgJiYgIW1fdHJhY2tlZFJlcGFpbnRSZWN0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgd3JpdGVJ
bmRlbnQodHMsIGluZGVudCArIDEpOworICAgICAgICB0cyA8PCAiKHJlcGFpbnQgcmVjdHNcbiI7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90cmFja2VkUmVwYWludFJlY3RzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV90cmFja2VkUmVwYWludFJlY3RzW2ldLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHdyaXRlSW5k
ZW50KHRzLCBpbmRlbnQgKyAyKTsKKyAgICAgICAgICAgIHRzIDw8ICIocmVjdCAiOworICAgICAg
ICAgICAgdHMgPDwgbV90cmFja2VkUmVwYWludFJlY3RzW2ldLngoKSA8PCAiICI7CisgICAgICAg
ICAgICB0cyA8PCBtX3RyYWNrZWRSZXBhaW50UmVjdHNbaV0ueSgpIDw8ICIgIjsKKyAgICAgICAg
ICAgIHRzIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0c1tpXS53aWR0aCgpIDw8ICIgIjsKKyAgICAg
ICAgICAgIHRzIDw8IG1fdHJhY2tlZFJlcGFpbnRSZWN0c1tpXS5oZWlnaHQoKTsKKyAgICAgICAg
ICAgIHRzIDw8ICIpXG4iOworICAgICAgICB9CisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRl
bnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIilcbiI7CisgICAgfQogICAgIAogICAgIGR1bXBBZGRp
dGlvbmFsUHJvcGVydGllcyh0cywgaW5kZW50LCBiZWhhdmlvcik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggNTA4OTNj
ZGZjZWY0ZWZmNzc2ODNhZjkxYzc2NTU2MWVhMzdjZmE4My4uNjQ2NTIwZmI3NTFiZjQ0N2I5YmE4
ZmIyMGYxYWE1ZmM2MzUzN2RjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2VuZGlmCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC00OCw3ICs0OSw4IEBAIGVudW0g
TGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JGbGFncyB7CiAgICAgTGF5ZXJUcmVlQXNUZXh0QmVoYXZp
b3JOb3JtYWwgPSAwLAogICAgIExheWVyVHJlZUFzVGV4dERlYnVnID0gMSA8PCAwLCAvLyBEdW1w
IGV4dHJhIGRlYnVnZ2luZyBpbmZvIGxpa2UgbGF5ZXIgYWRkcmVzc2VzLgogICAgIExheWVyVHJl
ZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDEsCi0gICAgTGF5ZXJUcmVlQXNUZXh0
SW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIKKyAgICBMYXllclRyZWVBc1RleHRJbmNsdWRlVGls
ZUNhY2hlcyA9IDEgPDwgMiwKKyAgICBMYXllclRyZWVBc1RleHRJbmNsdWRlUmVwYWludFJlY3Rz
ID0gMSA8PCAzCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVBc1RleHRCZWhhdmlvcjsK
IApAQCAtNDA0LDYgKzQwNiw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGlsZWRCYWNraW5n
KiB0aWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKKyAgICB2b2lkIHJlc2V0VHJh
Y2tlZFJlcGFpbnRSZWN0cygpIHsgbV90cmFja2VkUmVwYWludFJlY3RzLmNsZWFyKCk7IH0KKyAg
ICB2b2lkIGFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworCiAjaWYgUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIC8vIFRoaXMgYWxsb3dz
IHNldmVyYWwgYWx0ZXJuYXRpdmUgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhl
IHNhbWUgcG9ydCwKICAgICAvLyBlLmcuIGlmIGEgZGlmZmVyZW50IEdyYXBoaWNzTGF5ZXIgaW1w
bGVtZW50YXRpb24gaXMgbmVlZGVkIGluIFdlYktpdDEgdnMuIFdlYktpdDIuCkBAIC00OTgsNiAr
NTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9jb250ZW50c1JlY3Q7CiAKICAgICBp
bnQgbV9yZXBhaW50Q291bnQ7CisgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV90cmFja2VkUmVwYWlu
dFJlY3RzOyAvLyBVc2VkIGZvciBkZWJ1Z2dpbmcuCiAKICNpZiBQTEFURk9STShRVCkgfHwgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgc3RhdGljIEdyYXBoaWNzTGF5ZXI6Okdy
YXBoaWNzTGF5ZXJGYWN0b3J5Q2FsbGJhY2sqIHNfZ3JhcGhpY3NMYXllckZhY3Rvcnk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xp
ZW50LmgKaW5kZXggM2UxMDVjZTZiMzlhZWExYTI5NWVlMWZmMzZjMmYzOWU3MGJlMjZkMi4uMDZm
ZmI4YTIxZTgwZjQ5MDViYzExYTZkNzNiMTI0N2RlZTg5MTlmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAt
ODUsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMo
Y29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1Jl
cGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0
dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwog
I2lmbmRlZiBOREVCVUcKICAgICAvLyBSZW5kZXJMYXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMg
dG8gdmVyaWZ5IHRoYXQgaXQgaXMgbm90CiAgICAgLy8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRl
bnRzLiBBbiBBU1NFUlQgZmFpbHMsIGlmIGl0IGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNz
TGF5ZXJCbGFja0JlcnJ5LmNwcAppbmRleCBjMWE3MDNhY2QyZmRkODgzZjBhZGY0NTM3MTk0N2U0
NzUxZGE2NzBmLi5lZDc5OTJjMjgwMmEyZjg4MGZiZTJhZTViYWU3Y2JiZmNmOWI0ZmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBo
aWNzTGF5ZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApAQCAtMzc5LDIwICsz
NzksMjkgQEAgdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0T3BhY2l0eShmbG9hdCBv
cGFjaXR5KQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRz
RGlzcGxheSgpCiB7Ci0gICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50
c0xheWVyKSB7CiAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisK
KyAgICAgICAgYWRkUmVwYWludFJlY3QoY29udGVudHNSZWN0KCkpOworICAgIH0KIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAo
ZHJhd3NDb250ZW50KCkpCisgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1fbGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAgICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVj
dChtX3Bvc2l0aW9uLCBtX3NpemUpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJs
YWNrQmVycnk6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
Ci0gICAgaWYgKGRyYXdzQ29udGVudCgpKQorICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAg
ICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisKKyAgICAgICAgYWRk
UmVwYWludFJlY3QocmVjdCk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0Jl
cnJ5OjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IDZlZTljMDIyYjkyMjIxNTgzNWZjMzQ3ZTUxYjg3YjIzZjUxYmYxOTQuLmI0OGI5MDViNDky
Mjc4NTM4ZTlhMGJhM2FjZmJmZTIyODQ3MWZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtNjcwLDYg
KzY3MCw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29u
c3QgRmxvYXRSZWN0JiByKQogICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7CiAK
ICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOworCisgICAg
YWRkUmVwYWludFJlY3QocmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250
ZW50c05lZWRzRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApp
bmRleCBhNTk1ZGYyOGRhMTZhNDA1ZTRmYzQ4MzQ2NzczMGM3MmY1Y2VhNmVmLi4zNDRiMmI3ZDE0
ZTBjZTFkOTc2ZTBhYjJiMzJjM2VkZWQ4NGU1OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTQzNSwxNCArNDM1LDIwIEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAg
ICBpZiAoV2ViTGF5ZXIqIGNvbnRlbnRzTGF5ZXIgPSBjb250ZW50c0xheWVySWZSZWdpc3RlcmVk
KCkpCisgICAgaWYgKFdlYkxheWVyKiBjb250ZW50c0xheWVyID0gY29udGVudHNMYXllcklmUmVn
aXN0ZXJlZCgpKSB7CiAgICAgICAgIGNvbnRlbnRzTGF5ZXItPmludmFsaWRhdGUoKTsKKworICAg
ICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CisgICAgfQogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3ND
b250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworCisg
ICAgICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChtX3Bvc2l0aW9uLCBtX3NpemUpKTsKKwog
ICAgICAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0
LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpAQCAtNDUyLDYgKzQ1OCw5IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogewogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtX2xheWVyLT5sYXllcigp
LT5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKworICAgICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsK
KwogICAgICAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxp
Z2h0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNw
cAppbmRleCAxMDRiNzk4MmIwZGEwYzEwZmRhM2E4NTVjMmEzMWRiMjczODI3OTYwLi5kNmExZjk0
ZmY5MzlhYzNiZDliYmQ0ODFmYjA3OTc4NTY3NjFkZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5
ZXJDbHV0dGVyLmNwcApAQCAtNjcsMTEgKzY3LDE1IEBAIENsdXR0ZXJBY3RvciogR3JhcGhpY3NM
YXllckNsdXR0ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ2x1
dHRlcjo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAg
YWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KG1fcG9zaXRpb24sIG1fc2l6ZSkpOwogfQogCi12b2lk
IEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRS
ZWN0JikKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIGFk
ZFJlcGFpbnRSZWN0KHJlY3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBmMDRjZjQ5ZGVkNzc4OTM5
MmVjYWRjMDE1Zjg1YThkM2Q2MTJiOTYzLi4yOTZlNzM4NWUzNWE0MDQ5MDM2NGU1YWJlODZhN2I3
MThiZWNmYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
QEAgLTg4LDYgKzg4LDggQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVl
ZHNEaXNwbGF5KCkKIHsKICAgICBtX25lZWRzRGlzcGxheSA9IHRydWU7CiAgICAgbm90aWZ5Q2hh
bmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisKKyAgICBhZGRSZXBhaW50
UmVjdChGbG9hdFJlY3QobV9wb3NpdGlvbiwgbV9zaXplKSk7CiB9CiAKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQpAQCAtOTUsNiArOTcsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJl
TWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworCisgICAgYWRkUmVwYWludFJlY3QoY29udGVu
dHNSZWN0KCkpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTEwNSw2ICsx
MDksOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVk
c0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVy
TGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworCisgICAgYWRkUmVwYWludFJlY3QocmVjdCk7CiB9CiAK
IC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA0MmViNDE3NGMyYTE0YWRkODJhMWU5NDg4
ZjFjODhjNzU1NzYyYzU0Li5hZjIyNTUwNTI3YWFmM2NlMjc4NGY5OTkzNzkxODE3ZTU4MjQ0Y2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMTU4MCw2ICsxNTgwLDE1IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzaG93UmVw
YWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0CiAgICAgcmV0dXJuIGNvbXBv
c2l0b3IoKSA/IGNvbXBvc2l0b3IoKS0+Y29tcG9zaXRvclNob3dSZXBhaW50Q291bnRlcigpIDog
ZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1RyYWNraW5nUmVwYWludHMo
KSBjb25zdAoreworICAgIEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCk7CisgICAg
UGFnZSogcGFnZSA9IGZyYW1lID8gZnJhbWUtPnBhZ2UoKSA6IDA7CisgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+bWFpbkZyYW1lKCkgJiYgcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAg
cmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPmlzVHJhY2tpbmdSZXBhaW50cygpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp2ZXJpZnlOb3RQYWludGluZygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggOTQ2OGZlOWQzMDAyNzMzZjYyNTQ5NzdmZmI2
ZjE5ZWNmOWY5MjQ5MC4uODUwODJiOGYwOWVjMTRkYTI2ZWIzYzFkNzczOGU0MzE4YmQ4MWU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAt
MTU0LDYgKzE1NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVy
cyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgT1ZFUlJJREU7
CisKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeU5vdFBhaW50aW5nKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggZDM4ZTczOGRlYzJjNTE0MWQ3MmFjY2I4YTJmNTg4ZjJmMTk2MjFi
My4uMDlhYzlmMmFmNzBjNzEzYTA4ZTI1ZmM1MzI0MzcyODIyMGY5ODJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTEx
NDIsMTAgKzExNDIsMTkgQEAgU3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJUcmVl
QXNUZXh0KExheWVyVHJlZUZsYWdzIGZsYWdzKQogICAgICAgICBsYXllclRyZWVCZWhhdmlvciB8
PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVmlzaWJsZVJlY3RzOwogICAgIGlmIChmbGFncyAmIExh
eWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMpCiAgICAgICAgIGxheWVyVHJlZUJlaGF2aW9y
IHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzOworICAgIGlmIChmbGFncyAmIExh
eWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cykKKyAgICAgICAgbGF5ZXJUcmVlQmVoYXZp
b3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVJlcGFpbnRSZWN0czsKIAogICAgIC8vIFdlIHNr
aXAgZHVtcGluZyB0aGUgc2Nyb2xsIGFuZCBjbGlwIGxheWVycyB0byBrZWVwIGxheWVyVHJlZUFz
VGV4dCBvdXRwdXQKICAgICAvLyBzaW1pbGFyIGJldHdlZW4gcGxhdGZvcm1zLgotICAgIHJldHVy
biBtX3Jvb3RDb250ZW50TGF5ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVCZWhhdmlvcik7
CisgICAgU3RyaW5nIGxheWVyVHJlZVRleHQgPSBtX3Jvb3RDb250ZW50TGF5ZXItPmxheWVyVHJl
ZUFzVGV4dChsYXllclRyZWVCZWhhdmlvcik7CisKKyAgICAvLyBUaGUgdHJ1ZSByb290IGxheWVy
IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgZHVtcCwgc28gaWYgd2Ugd2FudCB0byByZXBvcnQKKyAg
ICAvLyBpdHMgcmVwYWludCByZWN0cywgdGhleSBtdXN0IGJlIGFwcGVuZGVkIGhlcmUuCisgICAg
aWYgKGZsYWdzICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3RzKQorICAgICAgICBs
YXllclRyZWVUZXh0LmFwcGVuZChtX3JlbmRlclZpZXctPmZyYW1lVmlldygpLT50cmFja2VkUmVw
YWludFJlY3RzQXNUZXh0KCkpOworCisgICAgcmV0dXJuIGxheWVyVHJlZVRleHQ7CiB9CiAKIFJl
bmRlckxheWVyQ29tcG9zaXRvciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZUNvbnRlbnRz
Q29tcG9zaXRvcihSZW5kZXJQYXJ0KiByZW5kZXJlcikKQEAgLTE5ODQsNiArMTk5MywzMyBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UoKQogICAgIGdyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29s
b3IpOwogfQogCitzdGF0aWMgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUo
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBpZiAoIWdyYXBoaWNzTGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGdyYXBoaWNzTGF5ZXItPnJlc2V0VHJhY2tlZFJlcGFp
bnRSZWN0cygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFwaGljc0xheWVyLT5j
aGlsZHJlbigpLnNpemUoKTsgKytpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNS
ZWN1cnNpdmUoZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKVtpXSk7CisKKyAgICBpZiAoR3JhcGhp
Y3NMYXllciogcmVwbGljYUxheWVyID0gZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpCisg
ICAgICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIpOwor
CisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllciA9IGdyYXBoaWNzTGF5ZXItPm1hc2tM
YXllcigpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUobWFza0xh
eWVyKTsKK30KKwordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFp
bnRSZWN0cygpCit7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcm9vdFJlbmRl
ckxheWVyKCktPmJhY2tpbmcoKTsKKyAgICBpZiAoIWJhY2tpbmcgfHwgIWJhY2tpbmctPnVzaW5n
VGlsZUNhY2hlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIgPSBiYWNraW5nLT5ncmFwaGljc0xheWVyKCk7CisgICAgcmVzZXRUcmFja2VkUmVw
YWludFJlY3RzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXIpOworfQorCiBib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKiBsYXllcikg
Y29uc3QKIHsKICAgICBpZiAobGF5ZXIgPT0gbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIg
fHwgbGF5ZXIgPT0gbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyIHx8IGxheWVyID09IG1fbGF5
ZXJGb3JTY3JvbGxDb3JuZXIpCkBAIC0yMDAwLDYgKzIwMzYsMTUgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKiBsYXll
cikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIFJlbmRlckxheWVyQmFja2lu
ZyogYmFja2luZyA9IHJvb3RSZW5kZXJMYXllcigpLT5iYWNraW5nKCk7CisgICAgaWYgKCFiYWNr
aW5nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYmFja2luZy0+aXNUcmFj
a2luZ1JlcGFpbnRzKCk7Cit9CisKIGZsb2F0IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggOGFkMWQ5OTI0NzllY2I3YzYwYzEyNDJlZDJmNGQwNzVkOTI4YjZhZC4uNDZlZGViODMyMTQy
YjBjN2M2ODMyOWUzMTkzOTQwZWIyNjg0ZjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjI2LDYgKzIyNiw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKTsKIAorICAg
IHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCk7CisKIHByaXZhdGU6CiAgICAgY2xhc3Mg
T3ZlcmxhcE1hcDsKIApAQCAtMjM2LDcgKzIzOCw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xh
eWVyKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgCisKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2lu
Z1JlcGFpbnRzKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBHcmFwaGljc0xheWVyVXBkYXRl
ckNsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVycyhHcmFw
aGljc0xheWVyVXBkYXRlciopIE9WRVJSSURFOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IDk0OTZjMjJiMzI1YmM5MWQzMjNmZTNkYjVhM2ZlNzA1ZGUzZjc2OTIu
LmFjZjAxNDRhYjMyZTgzNzgzZDE3NjZlMzg4Y2Q1NDE2MmIxMTcyZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyMzksNiArMTIzOSw4IEBAIFN0cmluZyBJbnRlcm5h
bHM6OmxheWVyVHJlZUFzVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIGZsYWdzLCBF
eGNlcHRpb25DCiAgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdzSW5jbHVk
ZVZpc2libGVSZWN0czsKICAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX1RJTEVf
Q0FDSEVTKQogICAgICAgICBsYXllclRyZWVGbGFncyB8PSBMYXllclRyZWVGbGFnc0luY2x1ZGVU
aWxlQ2FjaGVzOworICAgIGlmIChmbGFncyAmIExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9S
RUNUUykKKyAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVw
YWludFJlY3RzOwogCiAgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5sYXllclRyZWVBc1Rl
eHQobGF5ZXJUcmVlRmxhZ3MpOwogfQpAQCAtMTM3Miw0ICsxMzc0LDI2IEBAIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gSW50ZXJuYWxzOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QK
ICAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpz
dGFydFRyYWNraW5nUmVwYWludHMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAgIGZyYW1lVmlldy0+
c2V0VHJhY2tzUmVwYWludHModHJ1ZSk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzdG9wVHJhY2tp
bmdSZXBhaW50cyhEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IGRvY3VtZW50LT52aWV3KCk7CisgICAgZnJhbWVWaWV3LT5zZXRUcmFja3NS
ZXBhaW50cyhmYWxzZSwgRnJhbWVWaWV3OjpEb05vdFJlc2V0VHJhY2tlZFJlcGFpbnRzKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNTY5Y2UyOWUwOWYxMDAwNDlm
YTYzNDE2MDE3NzdiMTMzOWM2ZGE2ZC4uODBkNjZiMzRjYjJmYmVlZTU1MmE5ZTMwYzkzMGVmZjRh
ZGQwOWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xOTAsOCArMTkwLDgg
QEAgcHVibGljOgogICAgIGVudW0gewogICAgICAgICAvLyBWYWx1ZXMgbmVlZCB0byBiZSBrZXB0
IGluIHN5bmMgd2l0aCBJbnRlcm5hbHMuaWRsLgogICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVT
X1ZJU0lCTEVfUkVDVFMgPSAxLAotICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1RJTEVfQ0FD
SEVTID0gMgotICAgICAgICAKKyAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hF
UyA9IDIsCisgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUyA9IDQKICAg
ICB9OwogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqLCB1bnNpZ25lZCBmbGFn
cywgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoRG9j
dW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC0yMzEsNiArMjMxLDkgQEAgcHVibGlj
OgogCiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhz
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cyhEb2N1bWVudCosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHN0b3BUcmFja2luZ1JlcGFpbnRzKERvY3VtZW50Kiwg
RXhjZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1
bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAyZTA5Mzc1NWE3NWNlZTllNDVjN2VhODdkMzQ2
M2M4NjYzOGIzNGVjLi43YzlhNGFkNzI5NzVjZjIwYjI5M2JhZjdiZWZkNTI3ZDA1MmJiMmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTksNiArMTU5LDcgQEAKICAg
ICAvLyBGbGFncyBmb3IgbGF5ZXJUcmVlQXNUZXh0LgogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDE7CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDI7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTID0gNDsKICAg
ICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBbT3B0
aW9uYWxdIHVuc2lnbmVkIHNob3J0IGZsYWdzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAg
ICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoaW4gRG9jdW1lbnQgZG9jdW1l
bnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKQEAgLTIwMCw0ICsyMDEsNyBAQAogICAgIE1hbGxv
Y1N0YXRpc3RpY3MgbWFsbG9jU3RhdGlzdGljcygpOwogCiAgICAgRE9NU3RyaW5nW10gZ2V0UmVm
ZXJlbmNlZEZpbGVQYXRocygpOworCisgICAgdm9pZCBzdGFydFRyYWNraW5nUmVwYWludHMoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICB2b2lkIHN0b3BU
cmFja2luZ1JlcGFpbnRzKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lk
Z2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAppbmRleCBm
YTQ1NjIzOGEzYmQxNzhhOWUxMmE5MjMyZThlMTc4YTNiMWYyYjNmLi5kOTk5ZDYyMGFiNDY2MGVm
NjFmYTg0MzAyMGFjZTBhN2VjMGY2MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaApAQCAtMTI1LDYgKzEyNSw5IEBAIHB1YmxpYzoKICAgICAvLyBhbmltYXRl
IG9yIGxheW91dCBpbiB0aGlzIGNhc2UuCiAgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29s
IGZpbmlzaCkgPSAwOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlJ3ZlIHN0YXJ0ZWQgdHJh
Y2tpbmcgcmVwYWludCByZWN0YW5nbGVzLgorICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVw
YWludHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQg
dGhlIGNvbXBvc2l0aW5nIHN1cmZhY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgV2ViV2lkZ2V0IGlz
CiAgICAgLy8gcmVhZHkgdG8gdXNlLgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdG9yU3Vy
ZmFjZVJlYWR5KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
TGlua0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxp
Z2h0LmNwcAppbmRleCA4MTVhMGMzMDBlOWFiNTE5NjBjZTk0MGQ5MmRkYTE1NmE5NDBlNTljLi4x
YTNhNzdjZjU0Yzk4NDE2MTAxOWU5MThlMzU1NzcwZWU1NDI5MDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcApAQCAtMzAyLDYgKzMwMiw5IEBAIHZv
aWQgTGlua0hpZ2hsaWdodDo6dXBkYXRlR2VvbWV0cnkoKQogICAgICAgICAvLyBXZSBvbmx5IG5l
ZWQgdG8gaW52YWxpZGF0ZSB0aGUgbGF5ZXIgaWYgdGhlIGhpZ2hsaWdodCBzaXplIGhhcyBjaGFu
Z2VkLCBvdGhlcndpc2UKICAgICAgICAgLy8gd2UgY2FuIGp1c3QgcmUtcG9zaXRpb24gdGhlIGxh
eWVyIHdpdGhvdXQgbmVlZGluZyB0byByZXBhaW50LgogICAgICAgICBtX2NvbnRlbnRMYXllci0+
bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworCisgICAgICAgIGlmIChtX2N1cnJlbnRHcmFwaGljc0xh
eWVyKQorICAgICAgICAgICAgbV9jdXJyZW50R3JhcGhpY3NMYXllci0+YWRkUmVwYWludFJlY3Qo
RmxvYXRSZWN0KGxheWVyKCktPnBvc2l0aW9uKCkueCwgbGF5ZXIoKS0+cG9zaXRpb24oKS55LCBs
YXllcigpLT5ib3VuZHMoKS53aWR0aCwgbGF5ZXIoKS0+Ym91bmRzKCkuaGVpZ2h0KSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCAyMWI5NzI1YjBlYTVkMDBhMDhiYTM2NDE2ZTViODA1
YzBmM2ZlYmUxLi4yM2RjZGRlOWI3OWI0OTg5NWEyZjIyMWI3YmE1MTAwYTM2Y2MzYTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdC5jcHAKQEAgLTIwMSw0ICsyMDEsOSBAQCBib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdDo6c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Omlz
VHJhY2tpbmdSZXBhaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+aXNUcmFj
a2luZ1JlcGFpbnRzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRl
eCAwOGU5YzY5YjJmN2NhMWYzZTRjODAwZTg5MjI4MTljMmU5NTZiY2I0Li4yYjZkZGMxYWFiMDAy
NjE1ZTJiOTFmNzg5YTY2NWQ0M2YyYjViMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtNzMsNiArNzMsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3Qp
OwogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNU
cmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGhhdmVTY3JvbGxMYXllcigpOwog
ICAgIFdlYkxheWVyKiBzY3JvbGxMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IDE2MjU4YWYzOTNlMDAxMDNjMGYxNmFkNzA3NjA1ZmY2NzIw
NjVlZTkuLmMyZThkMWI4MzdkMTVhMGFjYjJiNjhhZjc2ZmIzZGJkYmQyY2I4NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE4MTQsNiArMTgxNCwx
NCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2Vi
UmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAogICAgIH0KIH0KIAorYm9vbCBXZWJWaWV3SW1w
bDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1l
KCktPnZpZXcoKTsKKyAgICByZXR1cm4gdmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisK
IHZvaWQgV2ViVmlld0ltcGw6OnRoZW1lQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFwYWdlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0MzllMGU2YjE3NzIz
YzZkOTQ2NmUzMTk2YmQ2OTk5Y2ZiOWJmOTllLi5jMTQzNWRjMjZhN2ZmYTAwMDBkNTM0MmM4ZDJi
ZjJhZWNkNDlhMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTE0Niw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoZG91
YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7IC8vIEFsc28gaW1wbGVtZW50cyBXZWJM
YXllclRyZWVWaWV3Q2xpZW50OjpsYXlvdXQoKQogICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
YW52YXMqLCBjb25zdCBXZWJSZWN0JiwgUGFpbnRPcHRpb25zID0gUmVhZGJhY2tGcm9tQ29tcG9z
aXRvcklmQXZhaWxhYmxlKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwogICAgIHZp
cnR1YWwgdm9pZCBjb21wb3NpdGUoYm9vbCBmaW5pc2gpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
ZWVkc1JlZHJhdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3Jk
ZXIgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCAyMWNhMmZmNmNlM2Fi
YmU3Y2U3MTQ2MTQ1M2RjNjM1ZTI5ZTM2ZWYwLi42MThmNTVkMzE3NzRmZDJjOWM3NzFjZWQ3ZWM1
OTMwOTE5ODFlODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpAQCAtMzM4NCwzICszMzg0
LDQgQEAgX1dLQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFuaW1hdGlvbgogX1dLQXBwS2l0RHJh
d0RlY295V2luZG93X2lzS2V5V2luZG93CiBfX1pONldlYktpdDdXZWJQYWdlMzZzdXNwZW5kQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgogX19aTjZXZWJLaXQ3V2ViUGFnZTM1cmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3
c2V0VHJhY2tzUmVwYWludHNFYk5TMF8yOFJlc2V0VHJhY2tlZFJlcGFpbnRzQmVoYXZpb3JFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggMjgwYTU5ZjJmN2U1ZTQ3ODNhMDhkYTM3ZTYzY2U4NGRh
M2I1M2E5My4uNDZlOGEzMzhjOTk5MzVjOTQ4MjdjY2EwMGJiZTMxZWMwOGJlM2EyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgpAQCAtMzEyLDQgKzMxMiw1IEBAIEVYUE9SVFMKICAgICAgICAgP3Rv
SlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9i
YWxPYmplY3RAMUBQQVZET01XaW5kb3dAMUBAWgogICAgICAgICA/d2luZG93T2JqZWN0Q2xlYXJl
ZEBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/
bGF5ZXJUcmVlQXNUZXh0QEZyYW1lQFdlYkNvcmVAQFFCRT9BVlN0cmluZ0BXVEZAQElAWgorICAg
ICAgICA/c2V0VHJhY2tzUmVwYWludHNARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhfTlc0UmVzZXRU
cmFja2VkUmVwYWludHNCZWhhdmlvckAxMkBAWgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKaW5kZXggNWE5ZDRiYzc3YWE4Zjc0YmVkNTlhZmFmODdiZWFmY2MxMGJkNGY1YS4uY2Yy
NGY2ZTdiZmU1NWIyMWZhZTM3YjJlZDcxNDg0N2JlNjg1ZDg3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjk5LDMgKzI5OSw0IEBAIEVYUE9SVFMKICAgICAgICAgP3Nl
dFByb3BlcnR5QFNldHRpbmdzQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBA
VUFFWEFCVlN0cmluZ0BXVEZAQDBAWgogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFs
dWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVkRPTVdpbmRv
d0AxQEBaCiAgICAgICAgID93aW5kb3dPYmplY3RDbGVhcmVkQEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWxAV2ViQ29yZUBAVUFFWFhaCisgICAgICAgID9zZXRUcmFja3NSZXBhaW50c0BGcmFt
ZVZpZXdAV2ViQ29yZUBAUUFFWF9OVzRSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yQDEyQEBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA1NzE1NWRmNWVhZGJlMmY4YTdjNzBkOGQ3YzA4
OGU3OWJlNmNiMDg3Li5hYzBjYzkxZTkzN2ZkYWJiNmEyYWFhNWNhOTYzY2ExNzU5OTc0Mjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTIwNSw2ICsyMDUsNyBAQCBfWk43V2ViQ29yZTEy
UHJpbnRDb250ZXh0MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VQTlNfNUZyYW1lRWlpaWlp
aWk7CiBfWk5LN1dlYkNvcmU5RE9NV2luZG93OGRvY3VtZW50RXY7CiBfWlRWTjdXZWJDb3JlMjhJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOFNldHRpbmdzRTsKIF9aTks3V2ViQ29yZTVGcmFt
ZTE1bGF5ZXJUcmVlQXNUZXh0RWo7CitfWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1Jl
cGFpbnRzRWJOUzBfMjhSZXNldFRyYWNrZWRSZXBhaW50c0JlaGF2aW9yRTsKIAogbG9jYWw6CiBf
Wio7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNmE0NzMzZWRiOWFmYmY4MWY2MjkxNmFmNDE1ZTlhZDE2NzllM2ZjMS4uYmM1
NTJkOTlkZGE0N2IxZjYxNDUyYWY0ZTM4Mjc0OWYwYTE1MmNmMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTEwLTI0ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFN1cHBvcnQgaW52YWxpZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvd3Mg
dHJhY2tpbmcgb2YgZ3JhcGhpY3MgbGF5ZXIgaW52YWxpZGF0aW9ucy4gVGhlIGdyYXBoaWNzIGxh
eWVycworICAgICAgICBjYW4gbm93IHN0b3JlIChsb2NhbCkgaW52YWxpZGF0aW9uIHJlY3RzIGFu
ZCBpbmNsdWRlIHRoZW0gaW4gdGhlCisgICAgICAgIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAg
ICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVy
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52
YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0
ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTAtMjQgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gSG9wZWZ1bGx5IGZpbmlzaCByZWJhc2VsaW5pbmcgYWZ0ZXIgcjEzMTk0MSBhbmQgcjEz
MTk5MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxp
ZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZTc4NjgxYjhkMDQ4NWYzMDQzOTg4ZTBkZjdkODk1OGZi
OWJhNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50
L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzcgQEAKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNo
aWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAo
cG9zaXRpb24gOC4wMCA0Mi4wMCkKKyAgICAgICAgICAoYm91bmRzIDQwMC4wMCA0MDAuMDApCisg
ICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChyZXBhaW50IHJlY3RzCisgICAg
ICAgICAgICAocmVjdCA4LjAwIDQyLjAwIDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKQorICAg
ICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAg
ICAgICAocG9zaXRpb24gNTAuMDAgNTAuMDApCisgICAgICAgICAgICAgIChib3VuZHMgNzUuMDAg
NzUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgKHJl
cGFpbnQgcmVjdHMKKyAgICAgICAgICAgICAgICAocmVjdCA1MC4wMCA1MC4wMCA3NS4wMCA3NS4w
MCkKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICkKKyAgICAgICAg
KQorICAgICAgKQorICAgICkKKyAgKQorKQorKHJlcGFpbnQgcmVjdHMKKyAgKHJlY3QgMCAwIDgw
MCA2MDApCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDQ1MCkKKyAgKHJl
Y3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAgNDUwKQorICAocmVjdCAwIDAgODAwIDYw
MCkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZh
bGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mN2RhYWM0NWY2OTcxNTIzYjlmN2U4YTM1NzdiZDE1MzM0Y2FkOWExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25z
LW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0
bWw+CisKKzwhLS0KK1RoaXMgdGVzdCBjaGVja3MgdGhhdCByZXBhaW50IHRlc3Rpbmcgd29ya3Mg
d2l0aCBjb21wb3NpdGVkIGxheWVycy4KKy0tPgorCis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorICAgICNwYXJlbnQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlWigwcHgpOworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdo
dDogNDAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgfQorCisgICAgI2NoaWxk
IHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKKyAgICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiA1MHB4OworICAgICAgICB0b3A6IDUw
cHg7CisgICAgICAgIHdpZHRoOiA3NXB4OworICAgICAgICBoZWlnaHQ6IDc1cHg7CisgICAgICAg
IGJhY2tncm91bmQ6IGdyZWVuOworICAgIH0KKworICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCI+CisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgICAgYWxlcnQoJ1RoaXMgdGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyIHRvIHJ1biEnKTsK
KyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICghd2lu
ZG93LmludGVybmFscykgeworICAgICAgICAgICAgICBhbGVydCgnVGhpcyB0ZXN0IHJlcXVpcmVz
IHdpbmRvdy5pbnRlcmFscyB0byBydW4hJyk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICB9CisKKyAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoZmFsc2UpOworCisgICAg
ICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQnKTsKKyAg
ICAgICAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKKwor
ICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFja2luZ1JlcGFpbnRzKGRvY3VtZW50
KTsKKworICAgICAgICAgIGNoaWxkLnN0eWxlLmJhY2tncm91bmQgPSAnYmx1ZSc7CisgICAgICAg
ICAgcGFyZW50LnN0eWxlLmJhY2tncm91bmQgPSAnZ3JlZW4nOworCisgICAgICAgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpOworICAgICAgICAgIHRleHQuaW5u
ZXJIVE1MID0gJ1RoaXMgdGV4dCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGxheWVyIHRyZWUn
OworCisgICAgICAgICAgLy8gRm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICAgICAgdmFyIGR1
bW15ID0gY2hpbGQub2Zmc2V0VG9wOworCisgICAgICAgICAgd2luZG93LmludGVybmFscy5zdG9w
VHJhY2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9
IHdpbmRvdy5pbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZ
RVJfVFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTKTsKKyAgICAgIH0pOworICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICA8cHJlIGlkPSJ0ZXh0Ij48L3ByZT4KKyAgPGRpdiBpZD0icGFy
ZW50Ij4KKyAgICA8ZGl2IGlkPSJjaGlsZCI+PC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3Jl
cGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25z
LW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2U4ZjY1NWFj
MzNkZWUzYjk1ODYzNDBjZTNmZGQyYzVmMzBmYzlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1j
b21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorKEdyYXBoaWNz
TGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4g
MQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDQxLjAw
KQorICAgICAgICAgIChib3VuZHMgNDAwLjAwIDQwMC4wMCkKKyAgICAgICAgICAoZHJhd3NDb250
ZW50IDEpCisgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgIChyZWN0IDAuMDAg
MC4wMCA0MDAuMDAgNDAwLjAwKQorICAgICAgICAgICkKKyAgICAgICAgICAoY2hpbGRyZW4gMQor
ICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDUwLjAw
IDUwLjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDc1LjAwIDc1LjAwKQorICAgICAgICAgICAg
ICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICAgIChyZXBhaW50IHJlY3RzCisgICAgICAg
ICAgICAgICAgKHJlY3QgMC4wMCAwLjAwIDc1LjAwIDc1LjAwKQorICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICAp
CispCisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgw
MCA2MDApCisgIChyZWN0IDAgMCA4MDAgNDQ5KQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJl
Y3QgMCAwIDgwMCA0NDkpCisgIChyZWN0IDAgMCA4MDAgNjAwKQorKQorCmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggM2Q4OGUwYzI0NmUwZDJmNDZhZWRhMDQ4NmQwNDVi
ZGFmNjMwMzgwMC4uZTJiYjJjYzdmMWZiZGFhMDFmNWU1OWJiNTIxNjA1N2U3N2U5NWM4NSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTEwLTI0ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1
cHBvcnQgaW52YWxpZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvd3MgdHJhY2tpbmcg
b2YgZ3JhcGhpY3MgbGF5ZXIgaW52YWxpZGF0aW9ucy4gVGhlIGdyYXBoaWNzIGxheWVycworICAg
ICAgICBjYW4gbm93IHN0b3JlIChsb2NhbCkgaW52YWxpZGF0aW9uIHJlY3RzIGFuZCBpbmNsdWRl
IHRoZW0gaW4gdGhlCisgICAgICAgIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAgICAqIFNvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTAtMjQgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtYXJpb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtXSzJdIFtHVEtdIFRlc3RXZWJL
aXRBY2Nlc3NpYmlsaXR5IGlzIG5vdCBiZWluZyBydW4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171685</attachid>
            <date>2012-10-31 10:54:36 -0700</date>
            <delta_ts>2012-10-31 13:12:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121031135259.patch</filename>
            <type>text/plain</type>
            <size>35459</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhNGYzMjEwYTE5OTAy
N2QyNDAxOTliZWM2NTk5ODA0NDIzYTdiOS4uZmUzYTA1NGFjYTRhOTU3MWY0NmU1MjhhOWE4NTE1
OTJiMjVkMGYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDEyLTEwLTMxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xheWVyJ3Mgbm93IHN0b3JlIGlu
dmFsaWRhdGVkIHJlY3RzIGFuZCBjYW4gaW5jbHVkZSB0aGVtIGluCisgICAgICAgIHRoZSBsYXll
ciB0cmVlIGR1bXAuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlk
YXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRUcmFja2VkUmVwYWlu
dHMpOgorICAgICAgICAgIE1vdmVkIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjcHAgZmlsZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6On5HcmFwaGljc0xheWVyKToKKyAgICAgICAgICBDbGVhcnMg
dGhlIHJlcGFpbnQgcmVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpyZXNldFRyYWNrZWRSZXBhaW50cyk6CisgICAgICAgICAg
Q2xlYXJzIHRoZSByZXBhaW50IHJlY3RzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxheWVyLgorICAg
ICAgICAgIE5vdGUgdGhhdCB0aGUgcmVwYWludCByZWN0cyBhcmUgc3RvcmVkIGluIGEgc3RhdGlj
YWxseSBhbGxvY2F0ZWQKKyAgICAgICAgICBIYXNoTWFwIHRvIGF2b2lkIHVzaW5nIHNwYWNlIG9u
IHRoZSBncmFwaGljcyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjph
ZGRSZXBhaW50UmVjdCk6CisgICAgICAgICAgQWRkcyBhIHJlcGFpbnQgcmVjdCB0byBsaXN0IGFz
c29jaWF0ZWQgd2l0aCB0aGlzIGxheWVyIGluIHRoZQorICAgICAgICAgIGhhc2ggbWFwIG1lbnRp
b25lZCBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0
aWVzKToKKyAgICAgICAgICBUaGlzIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGluY2x1ZGUgdGhlIHJl
cGFpbnQgcmVjdHMgaW4gdGhlIGR1bXAKKyAgICAgICAgICBpZiB0aGV5J3ZlIGJlZW4gcmVxdWVz
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OmlzVHJhY2tpbmdSZXBhaW50
cyk6CisgICAgICAgICAgVGhpcyBpcyBob3cgZ3JhcGhpY3MgbGF5ZXJzIGNoZWNrIGlmIHJlcGFp
bnQgdHJhY2tpbmcgaXMgaGFwcGVuaW5nLgorICAgICAgICAgIFJldHVybnMgZmFsc2UgYnkgZGVm
YXVsdC4KKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRzTmVlZHNEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVk
c0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNl
dE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NM
YXllcjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgTm93IGNhbGxzIEdy
YXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlz
cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRz
RGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NMYXllcjo6
YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgICBU
aGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCBhcyBuZWNlc3Nhcnku
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAg
ICAgIFRoZXNlIG5vdyBjYWxsIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vz
c2FyeS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAg
ICAgICAgICBSZXF1aXJlZCBzaW5jZSB0aGlzIGlzIGEgR3JhcGhpY3NMYXllckNsaWVudC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJUcmVlQXNUZXh0KToKKyAgICAgICAg
ICBOb3cgYWNjZXB0cyBhIGZsYWcgdG8gaW5jbHVkZSB0aGUgcmVwYWludCByZWN0cyBpbiB0aGUg
bGF5ZXIgdHJlZQorICAgICAgICAgIGR1bXAuCisgICAgICAgIChXZWJDb3JlOjpyZXNldFRyYWNr
ZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUpOgorICAgICAgICAgIENsZWFycyB0aGUgcmVwYWludCBy
ZWN0cyBvbiBhbGwgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAgIENsZWFy
cyB0aGUgcmVwYWludCByZWN0cyBvbiBhbGwgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAg
ICAgIFJlcXVpcmVkIHNpbmNlIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50LgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
bGF5ZXJUcmVlQXNUZXh0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgICBUaGUgaW50ZXJuYWxzIGNoYW5n
ZXMgcGx1bWIgdGhlIG5ldyBmbGFnIGZvciBpbmNsdWRpbmcgdGhlIHJlcGFpbnQKKyAgICAgICAg
ICByZWN0cyBpbiB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCisyMDEyLTEwLTMxICBJYW4gVm9sbGlj
ayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB0ZXh0
LWJhc2VkIHJlcGFpbnQgdGVzdGluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAwNTg0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDhi
NWQwY2YzYzliZTU4OGUwNzQ4Y2E4ZjRkZDY5YWJhNjIxMDI3MS4uZDU3OWM1ZGJjMGJiZjE2Yzcy
ZjIyMjJjNDI3MWU1ZGY4NzY5YjAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0xMC0zMSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBTdXBwb3J0IGludmFsaWRhdGlvbiB0cmFja2luZyBmb3IgY29tcG9zaXRl
ZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3ODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R3JhcGhpY3NMYXllcidzIG5vdyBzdG9yZSBpbnZhbGlkYXRlZCByZWN0cyBhbmQgY2FuIGluY2x1
ZGUgdGhlbSBpbgorICAgICAgICB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgIChXZWJX
aWRnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OmlzVHJhY2tpbmdSZXBhaW50cyk6
CisgICAgICAgICAgVXNlZCBieSB0aGUgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IHRvIGRldGVy
bWluZSBpZiB3ZSBhcmUgdHJhY2tpbmcKKyAgICAgICAgICByZXBhaW50IHJlY3RzLgorICAgICAg
ICAqIHNyYy9MaW5rSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdo
dDo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAgICAgIE5vdyBjYWxscyBHcmFwaGljc0xheWVyOjph
ZGRSZXBhaW50UmVjdCB3aGVuIGludmFsaWRhdGVkLgorICAgICAgICAqIHNyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgICAgUmVxdWlyZWQgYXMgdGhpcyBp
cyBhIEdyYXBoaWNzTGF5ZXJDbGllbnQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAg
ICAgICAgSW1wbGVtZW50YXRpb24gb2YgV2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMuCisK
IDIwMTItMTAtMzEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbW92ZSBjb2RlIHRvIGhpZGUvcmVzaG93IHRleHQgY2FyZXQgZm9yIFBhZ2VQb3B1cHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAppbmRleCBhNDI3OThjNTdmODc0Y2EyMTc4ODc5YmFhZGYwNjI1MDg4NjVkZjc2
Li45Yzg3NGFiODhjYTJmNjI2ZDI1ZTEwODNhZjcyMGYwYzNhYjdhNTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCkBAIC03OSw3ICs3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBlbnVtIHsKICAg
ICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlRGVidWdJbmZvID0gMSA8PCAwLAogICAgICAgICBM
YXllclRyZWVGbGFnc0luY2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDEsCi0gICAgICAgIExheWVy
VHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIKKyAgICAgICAgTGF5ZXJUcmVlRmxh
Z3NJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMiwKKyAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNs
dWRlUmVwYWludFJlY3RzID0gMSA8PCAzCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIExh
eWVyVHJlZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYzhmOWNiMjEz
ZDE2Y2Q3OTIxNWM1MjU5ZGRhZGRhZjQ3YjM5NTM0Zi4uYmQyNzU1ZDIxNTJkZTZkNzQ1ZDAwNWM1
MzBmZjkxOWNhNjVjZmE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzY0NSw2
ICszNjQ1LDE3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNr
UmVwYWludHMpCiAgICAgbV9pc1RyYWNraW5nUmVwYWludHMgPSB0cmFja1JlcGFpbnRzOwogfQog
Cit2b2lkIEZyYW1lVmlldzo6cmVzZXRUcmFja2VkUmVwYWludHMoKQoreworICAgIG1fdHJhY2tl
ZFJlcGFpbnRSZWN0cy5jbGVhcigpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IHJvb3RSZW5kZXJlcih0aGlzKSkgeworICAgICAg
ICBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSByb290LT5jb21wb3NpdG9yKCk7
CisgICAgICAgIGNvbXBvc2l0b3ItPnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpOworICAgIH0K
KyNlbmRpZgorfQorCiBTdHJpbmcgRnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0
KCkgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5k
ZXggMmY0NmVhZDI4NTU0MzRkZWIzZGEwZmFjYzFkZjYwMDk2ZTIyMGVkMi4uNTQ1ZTIyYmRmNGI3
ZGRkZGMzOTc0MmY1OGJiZDgxNzFjZTBjNTg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBA
IC0zMzgsNyArMzM4LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0VHJhY2tzUmVwYWlu
dHMoYm9vbCk7CiAgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBt
X2lzVHJhY2tpbmdSZXBhaW50czsgfQotICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKSB7
IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVhcigpOyB9CisgICAgdm9pZCByZXNldFRyYWNrZWRS
ZXBhaW50cygpOwogICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdHJhY2tlZFJlcGFpbnRSZWN0
cygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tlZFJlcGFpbnRSZWN0czsgfQogICAgIFN0cmluZyB0
cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzRjYzA4NTlmMmMz
ODM3ZWRlYjFkMDZmNTg5ZGZiNTM0ZDNlN2Q0ZC4uYzU5MGI3MGZhYTc1ZTlkY2M4Mzk0MjgwMTJi
NzA3ZGIwNWM3ZDFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBl
c0lubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDQsNiArNDYsMjAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgeworCit0eXBlZGVmIEhhc2hNYXA8
Y29uc3QgR3JhcGhpY3NMYXllciosIFZlY3RvcjxGbG9hdFJlY3Q+ID4gUmVwYWludE1hcDsKKwor
c3RhdGljIFJlcGFpbnRNYXAmIHJlcGFpbnRSZWN0TWFwKCkKK3sKKyAgICBzdGF0aWMgUmVwYWlu
dE1hcCogdGhlTWFwID0gMDsKKyAgICBpZiAoIXRoZU1hcCkKKyAgICAgICAgdGhlTWFwID0gbmV3
IFJlcGFpbnRNYXAoKTsKKyAgICByZXR1cm4gKnRoZU1hcDsKK30KKworfSAvLyBuYW1lc3BhY2UK
Kwogdm9pZCBLZXlmcmFtZVZhbHVlTGlzdDo6aW5zZXJ0KGNvbnN0IEFuaW1hdGlvblZhbHVlKiB2
YWx1ZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytp
KSB7CkBAIC05Niw2ICsxMTIsNyBAQCBHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyKEdyYXBo
aWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIAogR3JhcGhpY3NMYXllcjo6fkdyYXBoaWNzTGF5ZXIo
KQogeworICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRzKCk7CiAgICAgQVNTRVJUKCFtX3BhcmVudCk7
IC8vIHdpbGxCZURlc3Ryb3llZCBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhbHJlYWR5LgogfQog
CkBAIC01MzYsNiArNTUzLDI3IEBAIGRvdWJsZSBHcmFwaGljc0xheWVyOjpiYWNraW5nU3RvcmVN
ZW1vcnlFc3RpbWF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oNCAq
IHNpemUoKS53aWR0aCgpKSAqIHNpemUoKS5oZWlnaHQoKTsKIH0KIAordm9pZCBHcmFwaGljc0xh
eWVyOjpyZXNldFRyYWNrZWRSZXBhaW50cygpCit7CisgICAgaWYgKHJlcGFpbnRSZWN0TWFwKCku
Y29udGFpbnModGhpcykpCisgICAgICAgIHJlcGFpbnRSZWN0TWFwKCkucmVtb3ZlKHRoaXMpOwor
fQorCit2b2lkIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVwYWludFJlY3QpCit7CisgICAgaWYgKG1fY2xpZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkg
eworICAgICAgICBSZXBhaW50TWFwOjppdGVyYXRvciByZXBhaW50SXQgPSByZXBhaW50UmVjdE1h
cCgpLmZpbmQodGhpcyk7CisgICAgICAgIGlmIChyZXBhaW50SXQgPT0gcmVwYWludFJlY3RNYXAo
KS5lbmQoKSkgeworICAgICAgICAgICAgVmVjdG9yPEZsb2F0UmVjdD4gcmVwYWludFJlY3RzOwor
ICAgICAgICAgICAgcmVwYWludFJlY3RzLmFwcGVuZChyZXBhaW50UmVjdCk7CisgICAgICAgICAg
ICByZXBhaW50UmVjdE1hcCgpLnNldCh0aGlzLCByZXBhaW50UmVjdHMpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgVmVjdG9yPEZsb2F0UmVjdD4mIHJlcGFpbnRSZWN0cyA9IHJlcGFp
bnRJdC0+dmFsdWU7CisgICAgICAgICAgICByZXBhaW50UmVjdHMuYXBwZW5kKHJlcGFpbnRSZWN0
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjp3cml0ZUluZGVu
dChUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSAh
PSBpbmRlbnQ7ICsraSkKQEAgLTY1OCw3ICs2OTYsMjUgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpk
dW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNUZXh0
QmUKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8PCAi
KHJlcGxpY2F0ZWQgbGF5ZXIiOwogICAgICAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1Rl
eHREZWJ1ZykKLSAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBtX3JlcGxpY2F0ZWRMYXllcjs7Cisg
ICAgICAgICAgICB0cyA8PCAiICIgPDwgbV9yZXBsaWNhdGVkTGF5ZXI7CisgICAgICAgIHRzIDw8
ICIpXG4iOworICAgIH0KKworICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dEluY2x1
ZGVSZXBhaW50UmVjdHMgJiYgcmVwYWludFJlY3RNYXAoKS5jb250YWlucyh0aGlzKSAmJiAhcmVw
YWludFJlY3RNYXAoKS5nZXQodGhpcykuaXNFbXB0eSgpKSB7CisgICAgICAgIHdyaXRlSW5kZW50
KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIihyZXBhaW50IHJlY3RzXG4iOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAocmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylb
aV0uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd3Jp
dGVJbmRlbnQodHMsIGluZGVudCArIDIpOworICAgICAgICAgICAgdHMgPDwgIihyZWN0ICI7Cisg
ICAgICAgICAgICB0cyA8PCByZXBhaW50UmVjdE1hcCgpLmdldCh0aGlzKVtpXS54KCkgPDwgIiAi
OworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0ueSgpIDw8
ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ldLndp
ZHRoKCkgPDwgIiAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhp
cylbaV0uaGVpZ2h0KCk7CisgICAgICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgfQorICAg
ICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CiAgICAgICAgIHRzIDw8ICIpXG4iOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaAppbmRleCA1MDg5M2NkZmNlZjRlZmY3NzY4M2FmOTFjNzY1NTYxZWEzN2NmYTgz
Li5lOTM3Y2E1ZDgzMzUyN2EyN2U2N2QxNjkxODA4ZDIyMmFlMjIyMmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC00OCwxMyAr
NDgsMTUgQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXllclRy
ZWVBc1RleHRCZWhhdmlvck5vcm1hbCA9IDAsCiAgICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcgPSAx
IDw8IDAsIC8vIER1bXAgZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNzZXMu
CiAgICAgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKLSAgICBM
YXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMgorICAgIExheWVyVHJlZUFz
VGV4dEluY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyLAorICAgIExheWVyVHJlZUFzVGV4dEluY2x1
ZGVSZXBhaW50UmVjdHMgPSAxIDw8IDMKIH07CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFz
VGV4dEJlaGF2aW9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQz
RDsKK2NsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBo
aWNzTGF5ZXJGYWN0b3J5OwogY2xhc3MgSW1hZ2U7CkBAIC00MDQsNiArNDA2LDkgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KIAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKKyAgICB2b2lkIGFk
ZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIC8vIFRoaXMgYWxsb3dzIHNldmVyYWwg
YWx0ZXJuYXRpdmUgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHNhbWUgcG9y
dCwKICAgICAvLyBlLmcuIGlmIGEgZGlmZmVyZW50IEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRp
b24gaXMgbmVlZGVkIGluIFdlYktpdDEgdnMuIFdlYktpdDIuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXggM2Ux
MDVjZTZiMzlhZWExYTI5NWVlMWZmMzZjMmYzOWU3MGJlMjZkMi4uMDZmZmI4YTIxZTgwZjQ5MDVi
YzExYTZkNzNiMTI0N2RlZTg5MTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtODUsNiArODUsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NM
YXllciopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFj
a2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogI2lmbmRlZiBOREVCVUcK
ICAgICAvLyBSZW5kZXJMYXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMgdG8gdmVyaWZ5IHRoYXQg
aXQgaXMgbm90CiAgICAgLy8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRlbnRzLiBBbiBBU1NFUlQg
ZmFpbHMsIGlmIGl0IGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5
LmNwcAppbmRleCBjMWE3MDNhY2QyZmRkODgzZjBhZGY0NTM3MTk0N2U0NzUxZGE2NzBmLi5mNGVl
N2M5ZTYzNWViY2ZhZDQyNTUxMGRmNzY1M2JjODU1MGQ1YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApAQCAtMzc5LDIwICszNzksMjYgQEAgdm9pZCBH
cmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0g
ICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAg
ICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIGFkZFJlcGFp
bnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJs
YWNrQmVycnk6OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKGRyYXdzQ29udGVudCgpKQor
ICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3Bs
YXkoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KG1fcG9zaXRpb24sIG1fc2l6
ZSkpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoZHJhd3NDb250
ZW50KCkpCisgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1fbGF5ZXItPnNldE5l
ZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7Cisg
ICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c1JlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGM3NmYxYTY4MzIzY2U1YTFk
YTA4YjY5MTM4ZGZkZjZmZjE0NTUxNzUuLjhiMTgxNTA0NGU5NGNjNGJlODMxNmFhYTNjZjYyNDJi
Nzg2YjBlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQogICAg
ICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7CiAKICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOworCisgICAgYWRkUmVwYWludFJlY3QocmVjdCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCBkYzQ2ZGMzZTc1MTFmZDdl
NDAzNmY5NWYxNTc1YjYzMTBmN2ViMTk0Li4xOWY5YWQ0YjUwYmE3MjExNmIwZmE0ODViNTAxZTUx
NjM0MTg3NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQz
NiwxNCArNDM2LDE3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVk
QnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIGNvbnRl
bnRzTGF5ZXIgPSBjb250ZW50c0xheWVySWZSZWdpc3RlcmVkKCkpCisgICAgaWYgKFdlYkxheWVy
KiBjb250ZW50c0xheWVyID0gY29udGVudHNMYXllcklmUmVnaXN0ZXJlZCgpKSB7CiAgICAgICAg
IGNvbnRlbnRzTGF5ZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoY29u
dGVudHNSZWN0KCkpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dE5lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1f
bGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoRmxv
YXRSZWN0KG1fcG9zaXRpb24sIG1fc2l6ZSkpOwogICAgICAgICBpZiAobV9saW5rSGlnaGxpZ2h0
KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpAQCAt
NDUzLDYgKzQ1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChkcmF3c0NvbnRlbnQo
KSkgewogICAgICAgICBtX2xheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAg
ICAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7CiAgICAgICAgIGlmIChtX2xpbmtIaWdobGlnaHQp
CiAgICAgICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmludmFsaWRhdGUoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNz
TGF5ZXJDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0
ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCmluZGV4IDEwNGI3OTgyYjBkYTBjMTBmZGEzYTg1
NWMyYTMxZGIyNzM4Mjc5NjAuLjNkZDUyMTFkYTFhNWQ2ODRjNjI3YTY3NTM3NzJiNGM0YzUwNTA4
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIv
R3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCkBAIC02NywxMSArNjcsMTMg
QEAgQ2x1dHRlckFjdG9yKiBHcmFwaGljc0xheWVyQ2x1dHRlcjo6cGxhdGZvcm1MYXllcigpIGNv
bnN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KG1fcG9zaXRp
b24sIG1fc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6
OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggZjA0Y2Y0OWRlZDc3ODkzOTJlY2FkYzAxNWY4NWE4ZDNkNjEyYjk2My4uZmUzYzlkMGM3
ZTVlMjIyZjljMzk5MzQ5MmM0ZjE4MDk5OTI3MzQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbV9uZWVkc0Rpc3BsYXkg
PSB0cnVlOwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFu
Z2UpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChtX3Bvc2l0aW9uLCBtX3NpemUpKTsK
IH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC05NSw2ICs5Niw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7CiAgICAg
bm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisgICAgYWRk
UmVwYWludFJlY3QoY29udGVudHNSZWN0KCkpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5
ZXIuaCkKQEAgLTEwNSw2ICsxMDcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwogICAgIG5vdGlmeUNo
YW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIGFkZFJlcGFpbnRS
ZWN0KHJlY3QpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZjQ3NjZiY2Jh
NmJjNTU0ODc2ZTlhZmM5YWI0ZGRkNmVkZmQ5Yzg5Yy4uNTU2OTA5ZTlkMmIwYzNhNDhiZjc2Y2Q0
YTg3ZjY2YzcyNjM4YzFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTE1OTYsNiArMTU5NiwxMiBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdAog
ICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPmNvbXBvc2l0b3JTaG93UmVw
YWludENvdW50ZXIoKSA6IGZhbHNlOwogfQogCitib29sIFJlbmRlckxheWVyQmFja2luZzo6aXNU
cmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBHcmFwaGljc0xheWVyQ2xpZW50KiBjbGll
bnQgPSBjb21wb3NpdG9yKCk7CisgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+aXNUcmFja2lu
Z1JlcGFpbnRzKCkgOiBmYWxzZTsKK30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp2ZXJpZnlOb3RQYWludGluZygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggNTQwMmZjNGRjMGI5Yjc3NDUyYTY4OGM4
MTE4YTdmZWMwMTBmNmVhMy4uMjJmYjg4OTAxNmVkZjViMGMxYTljYjVjMjYyMTcwN2I3N2YzOTQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9y
ZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJ
REU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgT1ZFUlJJ
REU7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeU5vdFBhaW50aW5n
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggNWIxOWYzZTEzNzgxMGViYWUzYjQ2ZDJiOGNlZjZlOTU2MzE5
MWI4NC4uOWU3MGIxZWJiNTU0NDQwNWU3NmFmNTljN2JjMDgwMTU4MjI5NjBjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTExNDksMTAgKzExNDksMjIgQEAgU3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJU
cmVlQXNUZXh0KExheWVyVHJlZUZsYWdzIGZsYWdzKQogICAgICAgICBsYXllclRyZWVCZWhhdmlv
ciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVmlzaWJsZVJlY3RzOwogICAgIGlmIChmbGFncyAm
IExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMpCiAgICAgICAgIGxheWVyVHJlZUJlaGF2
aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzOworICAgIGlmIChmbGFncyAm
IExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cykKKyAgICAgICAgbGF5ZXJUcmVlQmVo
YXZpb3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVJlcGFpbnRSZWN0czsKIAogICAgIC8vIFdl
IHNraXAgZHVtcGluZyB0aGUgc2Nyb2xsIGFuZCBjbGlwIGxheWVycyB0byBrZWVwIGxheWVyVHJl
ZUFzVGV4dCBvdXRwdXQKICAgICAvLyBzaW1pbGFyIGJldHdlZW4gcGxhdGZvcm1zLgotICAgIHJl
dHVybiBtX3Jvb3RDb250ZW50TGF5ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVCZWhhdmlv
cik7CisgICAgU3RyaW5nIGxheWVyVHJlZVRleHQgPSBtX3Jvb3RDb250ZW50TGF5ZXItPmxheWVy
VHJlZUFzVGV4dChsYXllclRyZWVCZWhhdmlvcik7CisKKyAgICAvLyBUaGUgdHJ1ZSByb290IGxh
eWVyIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgZHVtcCwgc28gaWYgd2Ugd2FudCB0byByZXBvcnQK
KyAgICAvLyBpdHMgcmVwYWludCByZWN0cywgdGhleSBtdXN0IGJlIGluY2x1ZGVkIGhlcmUuCisg
ICAgaWYgKGZsYWdzICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3RzKSB7CisgICAg
ICAgIFN0cmluZyBsYXllclRyZWVUZXh0V2l0aFJvb3RSZXBhaW50UmVjdHMgPSBtX3JlbmRlclZp
ZXctPmZyYW1lVmlldygpLT50cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCk7CisgICAgICAgIGxh
eWVyVHJlZVRleHRXaXRoUm9vdFJlcGFpbnRSZWN0cy5hcHBlbmQobGF5ZXJUcmVlVGV4dCk7Cisg
ICAgICAgIHJldHVybiBsYXllclRyZWVUZXh0V2l0aFJvb3RSZXBhaW50UmVjdHM7CisgICAgfQor
CisgICAgcmV0dXJuIGxheWVyVHJlZVRleHQ7CiB9CiAKIFJlbmRlckxheWVyQ29tcG9zaXRvciog
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZUNvbnRlbnRzQ29tcG9zaXRvcihSZW5kZXJQYXJ0
KiByZW5kZXJlcikKQEAgLTIwMDMsNiArMjAxNSwzMyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKQogICAgIGdyYXBoaWNzTGF5
ZXItPnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogfQogCitzdGF0aWMgdm9p
ZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUoR3JhcGhpY3NMYXllciogZ3JhcGhp
Y3NMYXllcikKK3sKKyAgICBpZiAoIWdyYXBoaWNzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGdyYXBoaWNzTGF5ZXItPnJlc2V0VHJhY2tlZFJlcGFpbnRzKCk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisg
ICAgICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShncmFwaGljc0xheWVyLT5j
aGlsZHJlbigpW2ldKTsKKworICAgIGlmIChHcmFwaGljc0xheWVyKiByZXBsaWNhTGF5ZXIgPSBn
cmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgcmVzZXRUcmFja2VkUmVwYWlu
dFJlY3RzUmVjdXJzaXZlKHJlcGxpY2FMYXllcik7CisKKyAgICBpZiAoR3JhcGhpY3NMYXllciog
bWFza0xheWVyID0gZ3JhcGhpY3NMYXllci0+bWFza0xheWVyKCkpCisgICAgICAgIHJlc2V0VHJh
Y2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShtYXNrTGF5ZXIpOworfQorCit2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCkKK3sKKyAgICBSZW5kZXJM
YXllckJhY2tpbmcqIGJhY2tpbmcgPSByb290UmVuZGVyTGF5ZXIoKS0+YmFja2luZygpOworICAg
IGlmICghYmFja2luZyB8fCAhYmFja2luZy0+dXNpbmdUaWxlQ2FjaGUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciA9IGJhY2tpbmctPmdyYXBo
aWNzTGF5ZXIoKTsKKyAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUoZ3JhcGhp
Y3NMYXllcik7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG93RGVidWdCb3Jk
ZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGxheWVyKSBjb25zdAogewogICAgIGlmIChsYXllciA9
PSBtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhciB8fCBsYXllciA9PSBtX2xheWVyRm9yVmVy
dGljYWxTY3JvbGxiYXIgfHwgbGF5ZXIgPT0gbV9sYXllckZvclNjcm9sbENvcm5lcikKQEAgLTIw
MTksNiArMjA1OCwxMiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvd1JlcGFpbnRD
b3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGxheWVyKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzVHJhY2tpbmdSZXBhaW50cygp
IGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXcgPyBtX3Jl
bmRlclZpZXctPmZyYW1lVmlldygpIDogMDsKKyAgICByZXR1cm4gZnJhbWVWaWV3ICYmIGZyYW1l
Vmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIGZsb2F0IFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKaW5kZXggODI2ZGY5OTE0ZGZkMWE1NDg1MWY3MGFkYmFiODg5YjE2MDkxODk1MS4u
Y2U3OGM4MGYwNjA3ODQ0NzQwMzQyZWMzZjM1NmU0YzI5ZDA1NDBhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjI4LDYgKzIy
OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFu
Z2UoKTsKIAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCk7CisKIHByaXZhdGU6
CiAgICAgY2xhc3MgT3ZlcmxhcE1hcDsKIApAQCAtMjM4LDYgKzI0MCw4IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25z
dCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNU
cmFja2luZ1JlcGFpbnRzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgLy8gR3JhcGhpY3NM
YXllclVwZGF0ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hM
YXllcnMoR3JhcGhpY3NMYXllclVwZGF0ZXIqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA4MjljZmY1N2M4ODJlZjgxNDZiYmRmZTI5ZDA2MmVlYjVkYTJj
YzU2Li5mMzg4OWM2M2EzZTI3MzlkOTQ2MTBjZjdmOThiNDA2MzhjMTNlYzk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjU5LDYgKzEyNTksOCBAQCBTdHJpbmcgSW50
ZXJuYWxzOjpsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBmbGFn
cywgRXhjZXB0aW9uQwogICAgICAgICBsYXllclRyZWVGbGFncyB8PSBMYXllclRyZWVGbGFnc0lu
Y2x1ZGVWaXNpYmxlUmVjdHM7CiAgICAgaWYgKGZsYWdzICYgTEFZRVJfVFJFRV9JTkNMVURFU19U
SUxFX0NBQ0hFUykKICAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNs
dWRlVGlsZUNhY2hlczsKKyAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVTX1JFUEFJ
TlRfUkVDVFMpCisgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdzSW5jbHVk
ZVJlcGFpbnRSZWN0czsKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bGF5ZXJUcmVl
QXNUZXh0KGxheWVyVHJlZUZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmlu
ZGV4IGU4MTI3ODUwMzU5OGJkMjU3NWQ5MzY1YmY1MDRmNWI0OTNiOWZiNGUuLjg2NzU0NTVlZDQ2
ZmY3ZTQxMTE2Y2YyNDFlYmRmMDkwYmE1MTllNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtMTkwLDcgKzE5MCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgLy8g
VmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4KICAgICAg
ICAgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKLSAgICAgICAgTEFZRVJf
VFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDIKKyAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURF
U19USUxFX0NBQ0hFUyA9IDIsCisgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9S
RUNUUyA9IDQKICAgICAgICAgCiAgICAgfTsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KERv
Y3VtZW50KiwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNmVjMWY4MGU5ZTBiNTAyM2FmYzA2ZjYzOTc0
OWUxNWM0MDMyMmE1Li4wYmY2YjgwMjBkMTQxNDhjYmQzZWFkNDAzMGJmNGRjMjFkYjU4MmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTQsNiArMTU0LDcgQEAKICAg
ICAvLyBGbGFncyBmb3IgbGF5ZXJUcmVlQXNUZXh0LgogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDE7CiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDI7CisgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTID0gNDsKICAg
ICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBbT3B0
aW9uYWxdIHVuc2lnbmVkIHNob3J0IGZsYWdzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAg
ICBET01TdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50KSByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJXaWRnZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdl
dC5oCmluZGV4IGM4NDY0MDYyZDI4NWZkNTFhNGU2ZGMyNjM3ZmU4MjM3NGU3NzgyMTkuLmYyYjM5
NDQzOTVlYmUzNDZmYTcyOTczNzgxODAyMmU0NDViYTRhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYldpZGdldC5oCkBAIC0xMjcsNiArMTI3LDkgQEAgcHVibGljOgogICAg
IC8vIGFuaW1hdGUgb3IgbGF5b3V0IGluIHRoaXMgY2FzZS4KICAgICB2aXJ0dWFsIHZvaWQgY29t
cG9zaXRlKGJvb2wgZmluaXNoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UndmUg
c3RhcnRlZCB0cmFja2luZyByZXBhaW50IHJlY3RhbmdsZXMuCisgICAgdmlydHVhbCBib29sIGlz
VHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBJbmRp
Y2F0ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBX
ZWJXaWRnZXQgaXMKICAgICAvLyByZWFkeSB0byB1c2UuCiAgICAgdmlydHVhbCB2b2lkIHNldENv
bXBvc2l0b3JTdXJmYWNlUmVhZHkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDgxNWEwYzMwMGU5YWI1MTk2MGNlOTQwZDkyZGRhMTU2
YTk0MGU1OWMuLjFhM2E3N2NmNTRjOTg0MTYxMDE5ZTkxOGUzNTU3NzBlZTU0MjkwODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCkBAIC0zMDIsNiAr
MzAyLDkgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0Ojp1cGRhdGVHZW9tZXRyeSgpCiAgICAgICAgIC8v
IFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBsYXllciBpZiB0aGUgaGlnaGxpZ2h0IHNp
emUgaGFzIGNoYW5nZWQsIG90aGVyd2lzZQogICAgICAgICAvLyB3ZSBjYW4ganVzdCByZS1wb3Np
dGlvbiB0aGUgbGF5ZXIgd2l0aG91dCBuZWVkaW5nIHRvIHJlcGFpbnQuCiAgICAgICAgIG1fY29u
dGVudExheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgaWYgKG1fY3VycmVu
dEdyYXBoaWNzTGF5ZXIpCisgICAgICAgICAgICBtX2N1cnJlbnRHcmFwaGljc0xheWVyLT5hZGRS
ZXBhaW50UmVjdChGbG9hdFJlY3QobGF5ZXIoKS0+cG9zaXRpb24oKS54LCBsYXllcigpLT5wb3Np
dGlvbigpLnksIGxheWVyKCktPmJvdW5kcygpLndpZHRoLCBsYXllcigpLT5ib3VuZHMoKS5oZWln
aHQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDIxYjk3MjViMGVhNWQwMGEwOGJh
MzY0MTZlNWI4MDVjMGYzZmViZTEuLjIzZGNkZGU5Yjc5YjQ5ODk1YTJmMjIxYjdiYTUxMDBhMzZj
YzNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMjAxLDQgKzIwMSw5IEBAIGJvb2wgTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJW
aWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5oCmluZGV4IDA4ZTljNjliMmY3Y2ExZjNlNGM4MDBlODkyMjgxOWMyZTk1NmJjYjQuLjJi
NmRkYzFhYWIwMDI2MTVlMmI5MWY3ODlhNjY1ZDQzZjJiNWIwODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCkBAIC03
Myw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWlu
dENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0OworICAgIHZpcnR1
YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdDsKIAogICAgIGJvb2wgaGF2ZVNjcm9s
bExheWVyKCk7CiAgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYTZjYjQ5NGY4MTVmZDczNDgyZGZjNGIx
Njk0MWQyNWExMTBjMTIyZC4uZjc1MTlkY2Q5MTdjZmIzMDAxODIxZDI4NDNhYjRmNDMzODgzZWNj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTgy
OSw2ICsxODI5LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFz
LCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9wdGlvbnMgb3B0CiAgICAgfQogfQogCitib29s
IFdlYlZpZXdJbXBsOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIGlmICghcGFn
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcGFnZSgp
LT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIHJldHVybiB2aWV3LT5pc1RyYWNraW5nUmVwYWlu
dHMoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkKIHsKICAgICBpZiAo
IXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDM1
NDg4OWZkZThkMzcwMzY0MGQ1NDIxNzkwZGI3Njc2NjY0MzE4NDQuLjFjN2IyMTQ0NTFjZDNlNWU0
ZTg5ODM3M2M3NzhlYWQ2N2VkODA0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
bGF5b3V0KCk7IC8vIEFsc28gaW1wbGVtZW50cyBXZWJMYXllclRyZWVWaWV3Q2xpZW50OjpsYXlv
dXQoKQogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZvcmNlQ29tcG9zaXRpbmdNb2RlKGJvb2wgZW5h
YmxlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3Qg
V2ViUmVjdCYsIFBhaW50T3B0aW9ucyA9IFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2YWlsYWJs
ZSk7CisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29t
cG9zaXRlKGJvb2wgZmluaXNoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYjUzNTk0M2ZhZjUwN2UxODIyMDY3MzkxNGIzNmUxODA4NDA3NzQ4Li41NmJmOGRl
NWM1NzI5MDg5NzU0NGM0ZTcyNzBjZTgyMjlkZjI5MjM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMTAtMzEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzTGF5
ZXIncyBub3cgc3RvcmUgaW52YWxpZGF0ZWQgcmVjdHMgYW5kIGNhbiBpbmNsdWRlIHRoZW0gaW4K
KyAgICAgICAgdGhlIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3Jl
cGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21w
b3NpdGVkLWxheWVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9z
aXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisKIDIwMTItMTAtMzEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhh
ZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gTW9yZSB1bnJldmll
d2VkIHBpeGVsIGV4cGVjdGF0aW9ucyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRp
b25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzUyYmU4
MzVlMDllNjAzMGFjNGZjNGFmZjRmMjJlNTU1YTc1YTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQt
bGF5ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACisocmVwYWludCByZWN0cworICAo
cmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAg
NDUwKQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NTApCisgIChyZWN0
IDAgMCA4MDAgNjAwKQorKQorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgIChwb3NpdGlvbiA4LjAwIDQyLjAwKQorICAgICAgICAgIChib3VuZHMgNDAwLjAwIDQw
MC4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgKHJlcGFpbnQgcmVj
dHMKKyAgICAgICAgICAgIChyZWN0IDguMDAgNDIuMDAgNDAwLjAwIDQwMC4wMCkKKyAgICAgICAg
ICApCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgICAgIChwb3NpdGlvbiA1MC4wMCA1MC4wMCkKKyAgICAgICAgICAgICAgKGJvdW5k
cyA3NS4wMCA3NS4wMCkKKyAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAg
ICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgICAgIChyZWN0IDUwLjAwIDUwLjAwIDc1
LjAwIDc1LjAwKQorICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgKQor
ICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVy
cy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9u
LWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQyZmJjNzY3YzY1MGNiNWExYzBh
NDc5MzcxMzk5MTYzZTQ2NTJhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sCkBA
IC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tCitUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgcmVwYWludCB0ZXN0aW5nIHdvcmtzIHdpdGggY29tcG9zaXRlZCBsYXllcnMuCistLT4K
KworPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAjcGFyZW50
IHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKKyAgICAgICAg
d2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAgICAgICBiYWNrZ3JvdW5k
OiBibHVlOworICAgIH0KKworICAgICNjaGlsZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3Jt
OiB0cmFuc2xhdGVaKDBweCk7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAg
bGVmdDogNTBweDsKKyAgICAgICAgdG9wOiA1MHB4OworICAgICAgICB3aWR0aDogNzVweDsKKyAg
ICAgICAgaGVpZ2h0OiA3NXB4OworICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB9CisK
KyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgIGFsZXJ0KCdUaGlzIHRlc3QgcmVx
dWlyZXMgdGVzdFJ1bm5lciB0byBydW4hJyk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICB9CisKKyAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAg
ICAgYWxlcnQoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJhbHMgdG8gcnVuIScpOwor
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorCisgICAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KGZhbHNlKTsKKworICAgICAgICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncGFyZW50Jyk7CisgICAgICAgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisKKyAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0
YXJ0VHJhY2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAgICAgICBjaGlsZC5zdHlsZS5i
YWNrZ3JvdW5kID0gJ2JsdWUnOworICAgICAgICAgIHBhcmVudC5zdHlsZS5iYWNrZ3JvdW5kID0g
J2dyZWVuJzsKKworICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RleHQnKTsKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9ICdUaGlzIHRleHQgd2lsbCBiZSBy
ZXBsYWNlZCB3aXRoIHRoZSBsYXllciB0cmVlJzsKKworICAgICAgICAgIC8vIEZvcmNlIGEgc3R5
bGUgcmVjYWxjLgorICAgICAgICAgIHZhciBkdW1teSA9IGNoaWxkLm9mZnNldFRvcDsKKworICAg
ICAgICAgIHZhciBsYXllclRyZWVUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1Rl
eHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JFUEFJTlRfUkVDVFMp
OworCisgICAgICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cyhkb2N1
bWVudCk7CisKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9IGxheWVyVHJlZVRleHQ7CisgICAg
ICB9KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHByZSBpZD0idGV4dCI+PC9w
cmU+CisgIDxkaXYgaWQ9InBhcmVudCI+CisgICAgPGRpdiBpZD0iY2hpbGQiPjwvZGl2PgorICA8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXll
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3Jl
cGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjE4ZjlkZTNmNzgwZmVkNjZjNDE1YmM1Yzk4ZjU0OTMyODczNDk1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9yZXBhaW50
L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzcgQEAKKyhyZXBhaW50IHJlY3RzCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAw
IDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NDkpCisgIChyZWN0IDAgMCA4MDAgNjAwKQor
ICAocmVjdCAwIDAgODAwIDQ0OSkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCispCisoR3JhcGhpY3NM
YXllcgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBo
aWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjaGlsZHJlbiAx
CisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgNDEuMDAp
CisgICAgICAgICAgKGJvdW5kcyA0MDAuMDAgNDAwLjAwKQorICAgICAgICAgIChkcmF3c0NvbnRl
bnQgMSkKKyAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAw
LjAwIDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKQorICAgICAgICAgIChjaGlsZHJlbiAxCisg
ICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gNTAuMDAg
NTAuMDApCisgICAgICAgICAgICAgIChib3VuZHMgNzUuMDAgNzUuMDApCisgICAgICAgICAgICAg
IChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAg
ICAgICAgICAocmVjdCAwLjAwIDAuMDAgNzUuMDAgNzUuMDApCisgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkK
KykKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171709</attachid>
            <date>2012-10-31 13:12:36 -0700</date>
            <delta_ts>2012-11-01 10:38:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121031161059.patch</filename>
            <type>text/plain</type>
            <size>36846</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhNGYzMjEwYTE5OTAy
N2QyNDAxOTliZWM2NTk5ODA0NDIzYTdiOS4uMWYyOTIyYjA3NDJhMjQ5NTViZGJjZTUwMTRhZDU2
ODQzOWQzODU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk2IEBACiAyMDEyLTEwLTMxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xheWVyJ3Mgbm93IHN0b3JlIGlu
dmFsaWRhdGVkIHJlY3RzIGFuZCBjYW4gaW5jbHVkZSB0aGVtIGluCisgICAgICAgIHRoZSBsYXll
ciB0cmVlIGR1bXAuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlk
YXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAgIEV4cG9ydHMgRnJhbWVWaWV3OjpyZXNldFRyYWNrZWRSZXBhaW50cygp
CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRUcmFja2VkUmVwYWludHMpOgorICAg
ICAgICAgIE1vdmVkIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjcHAgZmlsZS4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgIChGcmFtZVZpZXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6fkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAgIENs
ZWFycyB0aGUgcmVwYWludCByZWN0cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllci4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKToKKyAgICAg
ICAgICBDbGVhcnMgdGhlIHJlcGFpbnQgcmVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIu
CisgICAgICAgICAgTm90ZSB0aGF0IHRoZSByZXBhaW50IHJlY3RzIGFyZSBzdG9yZWQgaW4gYSBz
dGF0aWNhbGx5IGFsbG9jYXRlZAorICAgICAgICAgIEhhc2hNYXAgdG8gYXZvaWQgdXNpbmcgc3Bh
Y2Ugb24gdGhlIGdyYXBoaWNzIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QpOgorICAgICAgICAgIEFkZHMg
YSByZXBhaW50IHJlY3QgdG8gbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllciBpbiB0aGUK
KyAgICAgICAgICBoYXNoIG1hcCBtZW50aW9uZWQgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICAgVGhpcyBoYXMgYmVlbiBt
b2RpZmllZCB0byBpbmNsdWRlIHRoZSByZXBhaW50IHJlY3RzIGluIHRoZSBkdW1wCisgICAgICAg
ICAgaWYgdGhleSd2ZSBiZWVuIHJlcXVlc3RlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdyYXBoaWNz
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OmlzVHJhY2tpbmdSZXBh
aW50cyk6CisgICAgICAgICAgVGhpcyBpcyBob3cgZ3JhcGhpY3MgbGF5ZXJzIGNoZWNrIGlmIHJl
cGFpbnQgdHJhY2tpbmcgaXMgaGFwcGVuaW5nLgorICAgICAgICAgIFJldHVybnMgZmFsc2UgYnkg
ZGVmYXVsdC4KKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRzTmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6
OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhp
Y3NMYXllcjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgTm93IGNhbGxz
IEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlz
cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRz
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5l
ZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NMYXll
cjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAg
ICBUaGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCBhcyBuZWNlc3Nh
cnkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAg
ICAgICAgIFRoZXNlIG5vdyBjYWxsIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5l
Y2Vzc2FyeS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNUcmFja2luZ1JlcGFpbnRzKToK
KyAgICAgICAgICBSZXF1aXJlZCBzaW5jZSB0aGlzIGlzIGEgR3JhcGhpY3NMYXllckNsaWVudC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAgICAgTm93IGFjY2VwdHMgYSBm
bGFnIHRvIGluY2x1ZGUgdGhlIHJlcGFpbnQgcmVjdHMgaW4gdGhlIGxheWVyIHRyZWUKKyAgICAg
ICAgICBkdW1wLgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVj
dXJzaXZlKToKKyAgICAgICAgICBDbGVhcnMgdGhlIHJlcGFpbnQgcmVjdHMgb24gYWxsIGdyYXBo
aWNzIGxheWVycy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAgIENs
ZWFycyB0aGUgcmVwYWludCByZWN0cyBvbiBhbGwgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMpOgorICAg
ICAgICAgIFJlcXVpcmVkIHNpbmNlIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50LgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRl
ckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAg
ICAgICAgIFRoZSBpbnRlcm5hbHMgY2hhbmdlcyBwbHVtYiB0aGUgbmV3IGZsYWcgZm9yIGluY2x1
ZGluZyB0aGUgcmVwYWludAorICAgICAgICAgIHJlY3RzIGluIHRoZSBsYXllciB0cmVlIGR1bXAu
CisKKzIwMTItMTAtMzEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHRleHQtYmFzZWQgcmVwYWludCB0ZXN0aW5nCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1ODQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwOGI1ZDBjZjNjOWJlNTg4ZTA3NDhjYThmNGRkNjlhYmE2
MjEwMjcxLi5hNDg1Nzg5YjMwM2I2OWUxYWRhYjU2ZGJmZWViOGZiZGFiNDc0ZTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTMxICBJYW4gVm9s
bGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxpZGF0
aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xheWVyJ3Mgbm93IHN0b3JlIGludmFs
aWRhdGVkIHJlY3RzIGFuZCBjYW4gaW5jbHVkZSB0aGVtIGluCisgICAgICAgIHRoZSBsYXllciB0
cmVlIGR1bXAuCisKKyAgICAgICAgKFdlYldpZGdldCk6CisgICAgICAgIChXZWJLaXQ6OldlYldp
ZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgICBVc2VkIGJ5IHRoZSBOb25Db21w
b3NpdGVkQ29udGVudEhvc3QgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSB0cmFja2luZworICAgICAg
ICAgIHJlcGFpbnQgcmVjdHMuCisgICAgICAgICogcHVibGljL1dlYldpZGdldC5oOgorICAgICAg
ICAoV2ViV2lkZ2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVw
YWludHMpOgorICAgICAgICAqIHNyYy9MaW5rSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGlua0hpZ2hsaWdodDo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAgICAgIE5vdyBjYWxscyBH
cmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCB3aGVuIGludmFsaWRhdGVkLgorICAgICAgICAq
IHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgICAgUmVx
dWlyZWQgYXMgdGhpcyBpcyBhIEdyYXBoaWNzTGF5ZXJDbGllbnQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaDoKKyAgICAgICAgKE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAg
ICAgICAgSW1wbGVtZW50YXRpb24gb2YgV2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAo
V2ViVmlld0ltcGwpOgorCiAyMDEyLTEwLTMxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgY29kZSB0byBoaWRlL3Jlc2hvdyB0ZXh0IGNhcmV0IGZv
ciBQYWdlUG9wdXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDEyNzAyNWIyODg5NzA0ZWU0Yzc5
NzFlZWNkMzlmOGE1ZDg3MTY5YzUuLjk1M2VlYjY0ZGQ3ODY3NzJlMWIyM2M2NDYyYjBmODQwNWFh
ZWI4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNzIsNiArMjcyLDcgQEAgX19aTjdXZWJD
b3JlMTRMb2FkZXJTdHJhdGVneTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYKIF9fWk43V2ViQ29y
ZTE0UGx1Z2luRG9jdW1lbnQxMHBsdWdpbk5vZGVFdgogX19aTks3V2ViQ29yZTVGcmFtZTI1dHJh
Y2tlZFJlcGFpbnRSZWN0c0FzVGV4dEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRUcmFj
a3NSZXBhaW50c0ViCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZXNldFRyYWNrZWRSZXBhaW50
c0V2CiBfX1pON1dlYkNvcmUxNFBsdWdpbkRvY3VtZW50MTJwbHVnaW5XaWRnZXRFdgogX19aTjdX
ZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjEyY3JlYXRlTlNEYXRhRXYKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VCdWZmZXJEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggYTQyNzk4YzU3Zjg3NGNhMjE3ODg3
OWJhYWRmMDYyNTA4ODY1ZGY3Ni4uOWM4NzRhYjg4Y2EyZjYyNmQyNWUxMDgzYWY3MjBmMGMzYWI3
YTU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNzksNyArNzksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgZW51bSB7CiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZURlYnVnSW5mbyA9
IDEgPDwgMCwKICAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzID0gMSA8
PCAxLAotICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyCisg
ICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIsCisgICAgICAg
IExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cyA9IDEgPDwgMwogICAgIH07CiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IGM4ZjljYjIxM2QxNmNkNzkyMTVjNTI1OWRkYWRkYWY0N2IzOTUzNGYuLmJkMjc1
NWQyMTUyZGU2ZDc0NWQwMDVjNTMwZmY5MTljYTY1Y2ZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTM2NDUsNiArMzY0NSwxNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VHJhY2tz
UmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogICAgIG1faXNUcmFja2luZ1JlcGFpbnRzID0g
dHJhY2tSZXBhaW50czsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRz
KCkKK3sKKyAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVy
ZXIodGhpcykpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0g
cm9vdC0+Y29tcG9zaXRvcigpOworICAgICAgICBjb21wb3NpdG9yLT5yZXNldFRyYWNrZWRSZXBh
aW50UmVjdHMoKTsKKyAgICB9CisjZW5kaWYKK30KKwogU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tl
ZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCmluZGV4IDJmNDZlYWQyODU1NDM0ZGViM2RhMGZhY2MxZGY2MDA5NmUy
MjBlZDIuLjU0NWUyMmJkZjRiN2RkZGRjMzk3NDJmNThiYmQ4MTcxY2UwYzU4NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaApAQCAtMzM4LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KLSAgICB2b2lkIHJlc2V0
VHJhY2tlZFJlcGFpbnRzKCkgeyBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsgfQorICAg
IHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHRyYWNrZWRSZXBhaW50UmVjdHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrZWRSZXBhaW50UmVj
dHM7IH0KICAgICBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IGM0Y2MwODU5ZjJjMzgzN2VkZWIxZDA2ZjU4OWRmYjUzNGQzZTdkNGQuLmM1OTBiNzBm
YWE3NWU5ZGNjODM5NDI4MDEyYjcwN2RiMDVjN2QxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCwxMCArMzAsMTIg
QEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ0LDYgKzQ2LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsK
KwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBWZWN0b3I8RmxvYXRSZWN0
PiA+IFJlcGFpbnRNYXA7CisKK3N0YXRpYyBSZXBhaW50TWFwJiByZXBhaW50UmVjdE1hcCgpCit7
CisgICAgc3RhdGljIFJlcGFpbnRNYXAqIHRoZU1hcCA9IDA7CisgICAgaWYgKCF0aGVNYXApCisg
ICAgICAgIHRoZU1hcCA9IG5ldyBSZXBhaW50TWFwKCk7CisgICAgcmV0dXJuICp0aGVNYXA7Cit9
CisKK30gLy8gbmFtZXNwYWNlCisKIHZvaWQgS2V5ZnJhbWVWYWx1ZUxpc3Q6Omluc2VydChjb25z
dCBBbmltYXRpb25WYWx1ZSogdmFsdWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3ZhbHVlcy5zaXplKCk7ICsraSkgewpAQCAtOTYsNiArMTEyLDcgQEAgR3JhcGhpY3NMYXllcjo6
R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdyYXBoaWNzTGF5
ZXI6On5HcmFwaGljc0xheWVyKCkKIHsKKyAgICByZXNldFRyYWNrZWRSZXBhaW50cygpOwogICAg
IEFTU0VSVCghbV9wYXJlbnQpOyAvLyB3aWxsQmVEZXN0cm95ZWQgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgYWxyZWFkeS4KIH0KIApAQCAtNTM2LDYgKzU1MywyNyBAQCBkb3VibGUgR3JhcGhpY3NM
YXllcjo6YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSBjb25zdAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KDQgKiBzaXplKCkud2lkdGgoKSkgKiBzaXplKCkuaGVpZ2h0KCk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6cmVzZXRUcmFja2VkUmVwYWludHMoKQoreworICAgIGlm
IChyZXBhaW50UmVjdE1hcCgpLmNvbnRhaW5zKHRoaXMpKQorICAgICAgICByZXBhaW50UmVjdE1h
cCgpLnJlbW92ZSh0aGlzKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0KQoreworICAgIGlmIChtX2NsaWVudC0+aXNU
cmFja2luZ1JlcGFpbnRzKCkpIHsKKyAgICAgICAgUmVwYWludE1hcDo6aXRlcmF0b3IgcmVwYWlu
dEl0ID0gcmVwYWludFJlY3RNYXAoKS5maW5kKHRoaXMpOworICAgICAgICBpZiAocmVwYWludEl0
ID09IHJlcGFpbnRSZWN0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxGbG9hdFJl
Y3Q+IHJlcGFpbnRSZWN0czsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0cy5hcHBlbmQocmVwYWlu
dFJlY3QpOworICAgICAgICAgICAgcmVwYWludFJlY3RNYXAoKS5zZXQodGhpcywgcmVwYWludFJl
Y3RzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFZlY3RvcjxGbG9hdFJlY3Q+JiBy
ZXBhaW50UmVjdHMgPSByZXBhaW50SXQtPnZhbHVlOworICAgICAgICAgICAgcmVwYWludFJlY3Rz
LmFwcGVuZChyZXBhaW50UmVjdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgR3JhcGhp
Y3NMYXllcjo6d3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpCiB7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgIT0gaW5kZW50OyArK2kpCkBAIC02NTgsNyArNjk2LDI1IEBAIHZv
aWQgR3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRl
bnQsIExheWVyVHJlZUFzVGV4dEJlCiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAx
KTsKICAgICAgICAgdHMgPDwgIihyZXBsaWNhdGVkIGxheWVyIjsKICAgICAgICAgaWYgKGJlaGF2
aW9yICYgTGF5ZXJUcmVlQXNUZXh0RGVidWcpCi0gICAgICAgICAgICB0cyA8PCAiICIgPDwgbV9y
ZXBsaWNhdGVkTGF5ZXI7OworICAgICAgICAgICAgdHMgPDwgIiAiIDw8IG1fcmVwbGljYXRlZExh
eWVyOworICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICB9CisKKyAgICBpZiAoYmVoYXZpb3IgJiBM
YXllclRyZWVBc1RleHRJbmNsdWRlUmVwYWludFJlY3RzICYmIHJlcGFpbnRSZWN0TWFwKCkuY29u
dGFpbnModGhpcykgJiYgIXJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpLmlzRW1wdHkoKSkgewor
ICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8ICIocmVw
YWludCByZWN0c1xuIjsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXBhaW50UmVj
dE1hcCgpLmdldCh0aGlzKS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHJlcGFpbnRS
ZWN0TWFwKCkuZ2V0KHRoaXMpW2ldLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAyKTsKKyAgICAgICAgICAg
IHRzIDw8ICIocmVjdCAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQo
dGhpcylbaV0ueCgpIDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCku
Z2V0KHRoaXMpW2ldLnkoKSA8PCAiICI7CisgICAgICAgICAgICB0cyA8PCByZXBhaW50UmVjdE1h
cCgpLmdldCh0aGlzKVtpXS53aWR0aCgpIDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IHJlcGFp
bnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ldLmhlaWdodCgpOworICAgICAgICAgICAgdHMgPDwgIilc
biI7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAg
ICAgICB0cyA8PCAiKVxuIjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggNTA4OTNjZGZjZWY0ZWZmNzc2ODNh
ZjkxYzc2NTU2MWVhMzdjZmE4My4uZTkzN2NhNWQ4MzM1MjdhMjdlNjdkMTY5MTgwOGQyMjJhZTIy
MjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaApAQCAtNDgsMTMgKzQ4LDE1IEBAIGVudW0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JG
bGFncyB7CiAgICAgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JOb3JtYWwgPSAwLAogICAgIExheWVy
VHJlZUFzVGV4dERlYnVnID0gMSA8PCAwLCAvLyBEdW1wIGV4dHJhIGRlYnVnZ2luZyBpbmZvIGxp
a2UgbGF5ZXIgYWRkcmVzc2VzLgogICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVj
dHMgPSAxIDw8IDEsCi0gICAgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8
IDIKKyAgICBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMiwKKyAgICBM
YXllclRyZWVBc1RleHRJbmNsdWRlUmVwYWludFJlY3RzID0gMSA8PCAzCiB9OwogdHlwZWRlZiB1
bnNpZ25lZCBMYXllclRyZWVBc1RleHRCZWhhdmlvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGbG9hdFBvaW50M0Q7CitjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKIGNsYXNzIEltYWdlOwpAQCAtNDA0
LDYgKzQwNiw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJh
Y2tpbmcoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKKyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFp
bnRzKCk7CisgICAgdm9pZCBhZGRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKwogI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICAvLyBU
aGlzIGFsbG93cyBzZXZlcmFsIGFsdGVybmF0aXZlIEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRp
b25zIGluIHRoZSBzYW1lIHBvcnQsCiAgICAgLy8gZS5nLiBpZiBhIGRpZmZlcmVudCBHcmFwaGlj
c0xheWVyIGltcGxlbWVudGF0aW9uIGlzIG5lZWRlZCBpbiBXZWJLaXQxIHZzLiBXZWJLaXQyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNsaWVudC5oCmluZGV4IDNlMTA1Y2U2YjM5YWVhMWEyOTVlZTFmZjM2YzJmMzllNzBiZTI2ZDIu
LjA2ZmZiOGEyMWU4MGY0OTA1YmMxMWE2ZDczYjEyNDdkZWU4OTE5ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgK
QEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3Jk
ZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNo
b3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgPSAwOwogCisgICAg
dmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gUmVuZGVyTGF5ZXJCYWNraW5nIG92ZXJyaWRlcyB0
aGlzIHRvIHZlcmlmeSB0aGF0IGl0IGlzIG5vdAogICAgIC8vIGN1cnJlbnRseSBwYWludGluZyBj
b250ZW50cy4gQW4gQVNTRVJUIGZhaWxzLCBpZiBpdCBpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVy
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFw
aGljc0xheWVyQmxhY2tCZXJyeS5jcHAKaW5kZXggYzFhNzAzYWNkMmZkZDg4M2YwYWRmNDUzNzE5
NDdlNDc1MWRhNjcwZi4uZjRlZTdjOWU2MzVlYmNmYWQ0MjU1MTBkZjc2NTNiYzg1NTBkNWMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9H
cmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKQEAgLTM3OSwy
MCArMzc5LDI2IEBAIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldE9wYWNpdHkoZmxv
YXQgb3BhY2l0eSkKIAogdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0Q29udGVudHNO
ZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgaWYgKG1fY29u
dGVudHNMYXllcikgewogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgp
OworICAgICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CisgICAgfQogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlm
IChkcmF3c0NvbnRlbnQoKSkKKyAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9s
YXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVj
dChtX3Bvc2l0aW9uLCBtX3NpemUpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJs
YWNrQmVycnk6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
Ci0gICAgaWYgKGRyYXdzQ29udGVudCgpKQorICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAg
ICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgICAgIGFkZFJl
cGFpbnRSZWN0KHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJy
eTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCBjNzZmMWE2ODMyM2NlNWExZGEwOGI2OTEzOGRmZGY2ZmYxNDU1MTc1Li44YjE4MTUwNDRlOTRj
YzRiZTgzMTZhYWEzY2Y2MjQyYjc4NmIwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTY3MCw2ICs2
NzAsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcikKICAgICAgICAgbV9kaXJ0eVJlY3RzWzBdLnVuaXRlKHJlY3QpOwogCiAg
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKERpcnR5UmVjdHNDaGFuZ2VkKTsKKworICAgIGFk
ZFJlcGFpbnRSZWN0KHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVu
dHNOZWVkc0Rpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggZGM0NmRjM2U3NTExZmQ3ZTQwMzZmOTVmMTU3NWI2MzEwZjdlYjE5NC4uMTlmOWFkNGI1MGJh
NzIxMTZiMGZhNDg1YjUwMWU1MTYzNDE4NzVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwCkBAIC00MzYsMTQgKzQzNiwxNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0gICAg
aWYgKFdlYkxheWVyKiBjb250ZW50c0xheWVyID0gY29udGVudHNMYXllcklmUmVnaXN0ZXJlZCgp
KQorICAgIGlmIChXZWJMYXllciogY29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXJJZlJlZ2lz
dGVyZWQoKSkgewogICAgICAgICBjb250ZW50c0xheWVyLT5pbnZhbGlkYXRlKCk7CisgICAgICAg
IGFkZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXkoKQogewogICAgIGlmIChkcmF3c0NvbnRl
bnQoKSkgewogICAgICAgICBtX2xheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CisgICAgICAg
IGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChtX3Bvc2l0aW9uLCBtX3NpemUpKTsKICAgICAgICAg
aWYgKG1fbGlua0hpZ2hsaWdodCkKICAgICAgICAgICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxp
ZGF0ZSgpOwogICAgIH0KQEAgLTQ1Myw2ICs0NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAg
ICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxp
ZGF0ZVJlY3QocmVjdCk7CisgICAgICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOwogICAgICAgICBp
ZiAobV9saW5rSGlnaGxpZ2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlk
YXRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAppbmRleCAxMDRi
Nzk4MmIwZGEwYzEwZmRhM2E4NTVjMmEzMWRiMjczODI3OTYwLi4zZGQ1MjExZGExYTVkNjg0YzYy
N2E2NzUzNzcyYjRjNGM1MDUwOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNw
cApAQCAtNjcsMTEgKzY3LDEzIEBAIENsdXR0ZXJBY3RvciogR3JhcGhpY3NMYXllckNsdXR0ZXI6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVl
ZHNEaXNwbGF5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGFkZFJlcGFpbnRSZWN0
KEZsb2F0UmVjdChtX3Bvc2l0aW9uLCBtX3NpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVy
Q2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIEdy
YXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgYWRkUmVwYWludFJlY3QocmVj
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGYwNGNmNDlkZWQ3Nzg5MzkyZWNhZGMwMTVmODVhOGQz
ZDYxMmI5NjMuLmZlM2M5ZDBjN2U1ZTIyMmY5YzM5OTM0OTJjNGYxODA5OTkyNzM0N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtODgsNiArODgsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogewog
ICAgIG1fbmVlZHNEaXNwbGF5ID0gdHJ1ZTsKICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBl
ckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QobV9w
b3NpdGlvbiwgbV9zaXplKSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpAQCAt
OTUsNiArOTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rp
c3BsYXkoKQogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNOZWVk
c0Rpc3BsYXkoKQogewogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3Bs
YXlDaGFuZ2UpOworICAgIGFkZFJlcGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKIH0KIAogLyog
XHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC0xMDUsNiArMTA3LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbmVlZHNEaXNwbGF5UmVjdC51bml0ZShy
ZWN0KTsKICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdl
KTsKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xh
eWVyLmgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IGY0NzY2YmNiYTZiYzU1NDg3NmU5YWZjOWFiNGRkZDZlZGZkOWM4OWMuLjU1Njkw
OWU5ZDJiMGMzYTQ4YmY3NmNkNGE4N2Y2NmM3MjYzOGMxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNTk2LDYgKzE1OTYsMTIg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFw
aGljc0xheWVyKikgY29uc3QKICAgICByZXR1cm4gY29tcG9zaXRvcigpID8gY29tcG9zaXRvcigp
LT5jb21wb3NpdG9yU2hvd1JlcGFpbnRDb3VudGVyKCkgOiBmYWxzZTsKIH0KIAorYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OmlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0Cit7CisgICAgR3JhcGhp
Y3NMYXllckNsaWVudCogY2xpZW50ID0gY29tcG9zaXRvcigpOworICAgIHJldHVybiBjbGllbnQg
PyBjbGllbnQtPmlzVHJhY2tpbmdSZXBhaW50cygpIDogZmFsc2U7Cit9CisKICNpZm5kZWYgTkRF
QlVHCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dmVyaWZ5Tm90UGFpbnRpbmcoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDU0MDJm
YzRkYzBiOWI3NzQ1MmE2ODhjODExOGE3ZmVjMDEwZjZlYTMuLjIyZmI4ODkwMTZlZGY1YjBjMWE5
Y2I1YzI2MjE3MDdiNzdmMzk0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTE1Nyw2ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NM
YXllciopIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBh
aW50cygpIGNvbnN0IE9WRVJSSURFOworCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9p
ZCB2ZXJpZnlOb3RQYWludGluZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDViMTlmM2UxMzc4MTBlYmFl
M2I0NmQyYjhjZWY2ZTk1NjMxOTFiODQuLjllNzBiMWViYjU1NDQ0MDVlNzZhZjU5YzdiYzA4MDE1
ODIyOTYwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0xMTQ5LDEwICsxMTQ5LDIyIEBAIFN0cmluZyBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAg
ICAgbGF5ZXJUcmVlQmVoYXZpb3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0
czsKICAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzKQogICAg
ICAgICBsYXllclRyZWVCZWhhdmlvciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hl
czsKKyAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMpCisg
ICAgICAgIGxheWVyVHJlZUJlaGF2aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50
UmVjdHM7CiAKICAgICAvLyBXZSBza2lwIGR1bXBpbmcgdGhlIHNjcm9sbCBhbmQgY2xpcCBsYXll
cnMgdG8ga2VlcCBsYXllclRyZWVBc1RleHQgb3V0cHV0CiAgICAgLy8gc2ltaWxhciBiZXR3ZWVu
IHBsYXRmb3Jtcy4KLSAgICByZXR1cm4gbV9yb290Q29udGVudExheWVyLT5sYXllclRyZWVBc1Rl
eHQobGF5ZXJUcmVlQmVoYXZpb3IpOworICAgIFN0cmluZyBsYXllclRyZWVUZXh0ID0gbV9yb290
Q29udGVudExheWVyLT5sYXllclRyZWVBc1RleHQobGF5ZXJUcmVlQmVoYXZpb3IpOworCisgICAg
Ly8gVGhlIHRydWUgcm9vdCBsYXllciBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGR1bXAsIHNvIGlm
IHdlIHdhbnQgdG8gcmVwb3J0CisgICAgLy8gaXRzIHJlcGFpbnQgcmVjdHMsIHRoZXkgbXVzdCBi
ZSBpbmNsdWRlZCBoZXJlLgorICAgIGlmIChmbGFncyAmIExheWVyVHJlZUZsYWdzSW5jbHVkZVJl
cGFpbnRSZWN0cykgeworICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dFdpdGhSb290UmVwYWlu
dFJlY3RzID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+dHJhY2tlZFJlcGFpbnRSZWN0c0Fz
VGV4dCgpOworICAgICAgICBsYXllclRyZWVUZXh0V2l0aFJvb3RSZXBhaW50UmVjdHMuYXBwZW5k
KGxheWVyVHJlZVRleHQpOworICAgICAgICByZXR1cm4gbGF5ZXJUcmVlVGV4dFdpdGhSb290UmVw
YWludFJlY3RzOworICAgIH0KKworICAgIHJldHVybiBsYXllclRyZWVUZXh0OwogfQogCiBSZW5k
ZXJMYXllckNvbXBvc2l0b3IqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVDb250ZW50c0Nv
bXBvc2l0b3IoUmVuZGVyUGFydCogcmVuZGVyZXIpCkBAIC0yMDAzLDYgKzIwMTUsMzMgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdl
KCkKICAgICBncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKIH0KIAorc3RhdGljIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7CisgICAgaWYgKCFncmFwaGljc0xheWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBncmFwaGljc0xheWVyLT5yZXNldFRyYWNrZWRSZXBhaW50
cygpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFwaGljc0xheWVyLT5jaGlsZHJl
bigpLnNpemUoKTsgKytpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNp
dmUoZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKVtpXSk7CisKKyAgICBpZiAoR3JhcGhpY3NMYXll
ciogcmVwbGljYUxheWVyID0gZ3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgICAg
IHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIpOworCisgICAg
aWYgKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllciA9IGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigp
KQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUobWFza0xheWVyKTsK
K30KKwordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0
cygpCit7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcm9vdFJlbmRlckxheWVy
KCktPmJhY2tpbmcoKTsKKyAgICBpZiAoIWJhY2tpbmcgfHwgIWJhY2tpbmctPnVzaW5nVGlsZUNh
Y2hlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIgPSBiYWNraW5nLT5ncmFwaGljc0xheWVyKCk7CisgICAgcmVzZXRUcmFja2VkUmVwYWludFJl
Y3RzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXIpOworfQorCiBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKiBsYXllcikgY29uc3QK
IHsKICAgICBpZiAobGF5ZXIgPT0gbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIgfHwgbGF5
ZXIgPT0gbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyIHx8IGxheWVyID09IG1fbGF5ZXJGb3JT
Y3JvbGxDb3JuZXIpCkBAIC0yMDE5LDYgKzIwNTgsMTIgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKiBsYXllcikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpp
c1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
bV9yZW5kZXJWaWV3ID8gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKSA6IDA7CisgICAgcmV0dXJu
IGZyYW1lVmlldyAmJiBmcmFtZVZpZXctPmlzVHJhY2tpbmdSZXBhaW50cygpOworfQorCiBmbG9h
dCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsKICAg
ICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDgyNmRmOTkxNGRmZDFhNTQ4NTFmNzBh
ZGJhYjg4OWIxNjA5MTg5NTEuLmNlNzhjODBmMDYwNzg0NDc0MDM0MmVjM2YzNTZlNGMyOWQwNTQw
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmgKQEAgLTIyOCw2ICsyMjgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRvY3VtZW50QmFj
a2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAKKyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRS
ZWN0cygpOworCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTIzOCw2ICsy
NDAsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29u
c3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzaG93
UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOworCisg
ICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IE9WRVJSSURFOwogICAg
IAogICAgIC8vIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAg
dmlydHVhbCB2b2lkIGZsdXNoTGF5ZXJzKEdyYXBoaWNzTGF5ZXJVcGRhdGVyKikgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODI5Y2ZmNTdjODgyZWY4MTQ2
YmJkZmUyOWQwNjJlZWI1ZGEyY2M1Ni4uZjM4ODljNjNhM2UyNzM5ZDk0NjEwY2Y3Zjk4YjQwNjM4
YzEzZWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI1OSw2ICsx
MjU5LDggQEAgU3RyaW5nIEludGVybmFsczo6bGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1
bWVudCwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkMKICAgICAgICAgbGF5ZXJUcmVlRmxhZ3Mg
fD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzOwogICAgIGlmIChmbGFncyAmIExB
WUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMpCiAgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9
IExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXM7CisgICAgaWYgKGZsYWdzICYgTEFZRVJf
VFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTKQorICAgICAgICBsYXllclRyZWVGbGFncyB8PSBM
YXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHM7CiAKICAgICByZXR1cm4gZG9jdW1lbnQt
PmZyYW1lKCktPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVGbGFncyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBlODEyNzg1MDM1OThiZDI1NzVkOTM2NWJmNTA0ZjViNDkz
YjlmYjRlLi44Njc1NDU1ZWQ0NmZmN2U0MTExNmNmMjQxZWJkZjA5MGJhNTE5ZTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE5MCw3ICsxOTAsOCBAQCBwdWJsaWM6CiAgICAg
ZW51bSB7CiAgICAgICAgIC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIElu
dGVybmFscy5pZGwuCiAgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9
IDEsCi0gICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyCisgICAgICAg
IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyLAorICAgICAgICBMQVlFUl9UUkVF
X0lOQ0xVREVTX1JFUEFJTlRfUkVDVFMgPSA0CiAgICAgICAgIAogICAgIH07CiAgICAgU3RyaW5n
IGxheWVyVHJlZUFzVGV4dChEb2N1bWVudCosIHVuc2lnbmVkIGZsYWdzLCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMTZlYzFmODBl
OWUwYjUwMjNhZmMwNmY2Mzk3NDllMTVjNDAzMjJhNS4uMGJmNmI4MDIwZDE0MTQ4Y2JkM2VhZDQw
MzBiZjRkYzIxZGI1ODJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MTU0LDYgKzE1NCw3IEBACiAgICAgLy8gRmxhZ3MgZm9yIGxheWVyVHJlZUFzVGV4dC4KICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAx
OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNI
RVMgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfUkVQ
QUlOVF9SRUNUUyA9IDQ7CiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVu
dCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBEb2N1
bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaAppbmRleCBjODQ2NDA2MmQyODVmZDUxYTRlNmRjMjYzN2Zl
ODIzNzRlNzc4MjE5Li5mMmIzOTQ0Mzk1ZWJlMzQ2ZmE3Mjk3Mzc4MTgwMjJlNDQ1YmE0YTM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtMTI3LDYgKzEy
Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBhbmltYXRlIG9yIGxheW91dCBpbiB0aGlzIGNhc2UuCiAg
ICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCkgPSAwOwogCisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHdlJ3ZlIHN0YXJ0ZWQgdHJhY2tpbmcgcmVwYWludCByZWN0YW5nbGVzLgor
ICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNvbXBvc2l0aW5nIHN1cmZhY2UgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgV2ViV2lkZ2V0IGlzCiAgICAgLy8gcmVhZHkgdG8gdXNlLgogICAg
IHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdG9yU3VyZmFjZVJlYWR5KCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAppbmRleCA4MTVhMGMzMDBlOWFi
NTE5NjBjZTk0MGQ5MmRkYTE1NmE5NDBlNTljLi4xYTNhNzdjZjU0Yzk4NDE2MTAxOWU5MThlMzU1
NzcwZWU1NDI5MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5r
SGlnaGxpZ2h0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxp
Z2h0LmNwcApAQCAtMzAyLDYgKzMwMiw5IEBAIHZvaWQgTGlua0hpZ2hsaWdodDo6dXBkYXRlR2Vv
bWV0cnkoKQogICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gaW52YWxpZGF0ZSB0aGUgbGF5ZXIg
aWYgdGhlIGhpZ2hsaWdodCBzaXplIGhhcyBjaGFuZ2VkLCBvdGhlcndpc2UKICAgICAgICAgLy8g
d2UgY2FuIGp1c3QgcmUtcG9zaXRpb24gdGhlIGxheWVyIHdpdGhvdXQgbmVlZGluZyB0byByZXBh
aW50LgogICAgICAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworCisg
ICAgICAgIGlmIChtX2N1cnJlbnRHcmFwaGljc0xheWVyKQorICAgICAgICAgICAgbV9jdXJyZW50
R3JhcGhpY3NMYXllci0+YWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KGxheWVyKCktPnBvc2l0aW9u
KCkueCwgbGF5ZXIoKS0+cG9zaXRpb24oKS55LCBsYXllcigpLT5ib3VuZHMoKS53aWR0aCwgbGF5
ZXIoKS0+Ym91bmRzKCkuaGVpZ2h0KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCAy
MWI5NzI1YjBlYTVkMDBhMDhiYTM2NDE2ZTViODA1YzBmM2ZlYmUxLi4yM2RjZGRlOWI3OWI0OTg5
NWEyZjIyMWI3YmE1MTAwYTM2Y2MzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTIwMSw0ICsyMDEs
OSBAQCBib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2hvd1JlcGFpbnRDb3VudGVyKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd2ViVmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9O
b25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCAwOGU5YzY5YjJmN2NhMWYzZTRjODAwZTg5
MjI4MTljMmU5NTZiY2I0Li4yYjZkZGMxYWFiMDAyNjE1ZTJiOTFmNzg5YTY2NWQ0M2YyYjViMDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaApAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVi
dWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7CiAK
ICAgICBib29sIGhhdmVTY3JvbGxMYXllcigpOwogICAgIFdlYkxheWVyKiBzY3JvbGxMYXllcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGE2Y2I0
OTRmODE1ZmQ3MzQ4MmRmYzRiMTY5NDFkMjVhMTEwYzEyMmQuLmY3NTE5ZGNkOTE3Y2ZiMzAwMTgy
MWQyODQzYWI0ZjQzMzg4M2VjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTE4MjksNiArMTgyOSwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWlu
dChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9w
dAogICAgIH0KIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29u
c3QKK3sKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1l
VmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICByZXR1cm4gdmll
dy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnRoZW1lQ2hh
bmdlZCgpCiB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAppbmRleCAzNTQ4ODlmZGU4ZDM3MDM2NDBkNTQyMTc5MGRiNzY3NjY2NDMxODQ0
Li4xYzdiMjE0NDUxY2QzZTVlNGU4OTgzNzNjNzc4ZWFkNjdlZDgwNDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOyAvLyBBbHNvIGltcGxlbWVudHMgV2ViTGF5ZXJU
cmVlVmlld0NsaWVudDo6bGF5b3V0KCkKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGb3JjZUNvbXBv
c2l0aW5nTW9kZShib29sIGVuYWJsZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmLCBQYWludE9wdGlvbnMgPSBSZWFkYmFja0Zyb21D
b21wb3NpdG9ySWZBdmFpbGFibGUpOworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWlu
dHMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzUmVkcmF3KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2I1MzU5NDNmYWY1MDdlMTgyMjA2NzM5MTRiMzZl
MTgwODQwNzc0OC4uNTZiZjhkZTVjNTcyOTA4OTc1NDRjNGU3MjcwY2U4MjI5ZGYyOTIzNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTMxICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxpZGF0aW9uIHRyYWNraW5nIGZvciBj
b21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHcmFwaGljc0xheWVyJ3Mgbm93IHN0b3JlIGludmFsaWRhdGVkIHJlY3RzIGFuZCBj
YW4gaW5jbHVkZSB0aGVtIGluCisgICAgICAgIHRoZSBsYXllciB0cmVlIGR1bXAuCisKKyAgICAg
ICAgKiBjb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXll
cnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9yZXBhaW50L2lu
dmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3Np
dGVkLWxheWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTEwLTMxICBSYXBoYWVsIEt1
Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgogCiAgICAgICAg
IFtFRkxdIE1vcmUgdW5yZXZpZXdlZCBwaXhlbCBleHBlY3RhdGlvbnMgZ2FyZGVuaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9u
LWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzc1MmJlODM1ZTA5ZTYwMzBhYzRmYzRhZmY0ZjIyZTU1NWE3NWE5NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0
aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAor
KHJlcGFpbnQgcmVjdHMKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAgNjAw
KQorICAocmVjdCAwIDAgODAwIDQ1MCkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAg
MCA4MDAgNDUwKQorICAocmVjdCAwIDAgODAwIDYwMCkKKykKKyhHcmFwaGljc0xheWVyCisgIChi
b3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCA0Mi4wMCkKKyAgICAgICAg
ICAoYm91bmRzIDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAg
ICAgICAgIChyZXBhaW50IHJlY3RzCisgICAgICAgICAgICAocmVjdCA4LjAwIDQyLjAwIDQwMC4w
MCA0MDAuMDApCisgICAgICAgICAgKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gNTAuMDAgNTAuMDApCisg
ICAgICAgICAgICAgIChib3VuZHMgNzUuMDAgNzUuMDApCisgICAgICAgICAgICAgIChkcmF3c0Nv
bnRlbnQgMSkKKyAgICAgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgICAgICAo
cmVjdCA1MC4wMCA1MC4wMCA3NS4wMCA3NS4wMCkKKyAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMt
b24tY29tcG9zaXRlZC1sYXllcnMuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0
MmZiYzc2N2M2NTBjYjVhMWMwYTQ3OTM3MTM5OTE2M2U0NjUyYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9z
aXRlZC1sYXllcnMuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPCEt
LQorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHJlcGFpbnQgdGVzdGluZyB3b3JrcyB3aXRoIGNvbXBv
c2l0ZWQgbGF5ZXJzLgorLS0+CisKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgI3BhcmVudCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xh
dGVaKDBweCk7CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA0MDBweDsK
KyAgICAgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICB9CisKKyAgICAjY2hpbGQgeworICAgICAg
ICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgpOworICAgICAgICBwb3NpdGlvbjog
cmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDUwcHg7CisgICAgICAgIHRvcDogNTBweDsKKyAgICAg
ICAgd2lkdGg6IDc1cHg7CisgICAgICAgIGhlaWdodDogNzVweDsKKyAgICAgICAgYmFja2dyb3Vu
ZDogZ3JlZW47CisgICAgfQorCisgIDwvc3R5bGU+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgICBh
bGVydCgnVGhpcyB0ZXN0IHJlcXVpcmVzIHRlc3RSdW5uZXIgdG8gcnVuIScpOworICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgfQorCisgICAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgICAgICAgIGFsZXJ0KCdUaGlzIHRlc3QgcmVxdWlyZXMgd2luZG93Lmlu
dGVyYWxzIHRvIHJ1biEnKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKwor
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dChmYWxzZSk7CisKKyAgICAgICAgICB2YXIg
cGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudCcpOworICAgICAgICAgIHZh
ciBjaGlsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGlsZCcpOworCisgICAgICAgICAg
d2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWludHMoZG9jdW1lbnQpOworCisgICAg
ICAgICAgY2hpbGQuc3R5bGUuYmFja2dyb3VuZCA9ICdibHVlJzsKKyAgICAgICAgICBwYXJlbnQu
c3R5bGUuYmFja2dyb3VuZCA9ICdncmVlbic7CisKKyAgICAgICAgICB2YXIgdGV4dCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0Jyk7CisgICAgICAgICAgdGV4dC5pbm5lckhUTUwgPSAn
VGhpcyB0ZXh0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgbGF5ZXIgdHJlZSc7CisKKyAgICAg
ICAgICAvLyBGb3JjZSBhIHN0eWxlIHJlY2FsYy4KKyAgICAgICAgICB2YXIgZHVtbXkgPSBjaGls
ZC5vZmZzZXRUb3A7CisKKyAgICAgICAgICB2YXIgbGF5ZXJUcmVlVGV4dCA9IHdpbmRvdy5pbnRl
cm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LCBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNM
VURFU19SRVBBSU5UX1JFQ1RTKTsKKworICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRy
YWNraW5nUmVwYWludHMoZG9jdW1lbnQpOworCisgICAgICAgICAgdGV4dC5pbm5lckhUTUwgPSBs
YXllclRyZWVUZXh0OworICAgICAgfSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
IDxwcmUgaWQ9InRleHQiPjwvcHJlPgorICA8ZGl2IGlkPSJwYXJlbnQiPgorICAgIDxkaXYgaWQ9
ImNoaWxkIj48L2Rpdj4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25z
LW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXll
cnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxOGY5ZGUzZjc4MGZlZDY2YzQxNWJjNWM5OGY1
NDkzMjg3MzQ5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
Y29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACisocmVwYWludCByZWN0cworICAocmVjdCAwIDAg
ODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAgNDQ5KQorICAo
cmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NDkpCisgIChyZWN0IDAgMCA4MDAg
NjAwKQorKQorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hp
bGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDAp
CisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChw
b3NpdGlvbiA4LjAwIDQxLjAwKQorICAgICAgICAgIChib3VuZHMgNDAwLjAwIDQwMC4wMCkKKyAg
ICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAg
ICAgICAgIChyZWN0IDAuMDAgMC4wMCA0MDAuMDAgNDAwLjAwKQorICAgICAgICAgICkKKyAgICAg
ICAgICAoY2hpbGRyZW4gMQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAg
ICAgKHBvc2l0aW9uIDUwLjAwIDUwLjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDc1LjAwIDc1
LjAwKQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICAgIChyZXBh
aW50IHJlY3RzCisgICAgICAgICAgICAgICAgKHJlY3QgMC4wMCAwLjAwIDc1LjAwIDc1LjAwKQor
ICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgKQorICAgICAgICApCisg
ICAgICApCisgICAgKQorICApCispCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171890</attachid>
            <date>2012-11-01 10:38:53 -0700</date>
            <delta_ts>2012-11-01 13:16:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121101133714.patch</filename>
            <type>text/plain</type>
            <size>36161</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhNGYzMjEwYTE5OTAy
N2QyNDAxOTliZWM2NTk5ODA0NDIzYTdiOS4uNTI0MDVjYWQ2Y2EzMzRlNTQ2NWY5NjNhZDRkY2Jm
OTY5NDZlMzQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTAxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xheWVycyBub3cgc3RvcmUgaW52
YWxpZGF0ZWQgcmVjdHMgYW5kIGNhbiBpbmNsdWRlIHRoZW0gaW4KKyAgICAgICAgdGhlIGxheWVy
IHRyZWUgZHVtcC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRh
dGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICAgRXhwb3J0cyBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKCkK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKToKKyAgICAgICAgICBNb3ZlZCBpbXBsZW1lbnRhdGlv
biB0byB0aGUgY3BwIGZpbGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjp+R3JhcGhpY3NMYXll
cik6CisgICAgICAgICAgQ2xlYXJzIHRoZSByZXBhaW50IHJlY3RzIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cmVzZXRUcmFja2Vk
UmVwYWludHMpOgorICAgICAgICAgIENsZWFycyB0aGUgcmVwYWludCByZWN0cyBhc3NvY2lhdGVk
IHdpdGggdGhpcyBsYXllci4KKyAgICAgICAgICBOb3RlIHRoYXQgdGhlIHJlcGFpbnQgcmVjdHMg
YXJlIHN0b3JlZCBpbiBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkCisgICAgICAgICAgSGFzaE1hcCB0
byBhdm9pZCB1c2luZyBzcGFjZSBvbiB0aGUgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QpOgorICAgICAgICAgIEFkZHMgYSBy
ZXBhaW50IHJlY3QgdG8gbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllciBpbiB0aGUKKyAg
ICAgICAgICBoYXNoIG1hcCBtZW50aW9uZWQgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICAgVGhpcyBoYXMgYmVlbiBtb2Rp
ZmllZCB0byBpbmNsdWRlIHRoZSByZXBhaW50IHJlY3RzIGluIHRoZSBkdW1wCisgICAgICAgICAg
aWYgdGhleSd2ZSBiZWVuIHJlcXVlc3RlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xp
ZW50Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAgIFRoaXMgaXMgaG93IGdyYXBoaWNz
IGxheWVycyBjaGVjayBpZiByZXBhaW50IHRyYWNraW5nIGlzIGhhcHBlbmluZy4KKyAgICAgICAg
ICBSZXR1cm5zIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldE5lZWRzRGlzcGxheSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KToKKyAgICAgICAgICBUaGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVyOjphZGRS
ZXBhaW50UmVjdCBhcyBuZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgICBOb3cgY2FsbHMgR3JhcGhpY3NMYXll
cjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgICBUaGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50
UmVjdCBhcyBuZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9H
cmFwaGljc0xheWVyQ2x1dHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDbHV0dGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAgIFRoZXNlIG5vdyBj
YWxsIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2FyeS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRz
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ug
bm93IGNhbGwgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAgIFJl
cXVpcmVkIHNpbmNlIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50LgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAgIE5vdyBhY2Nl
cHRzIGEgZmxhZyB0byBpbmNsdWRlIHRoZSByZXBhaW50IHJlY3RzIGluIHRoZSBsYXllciB0cmVl
CisgICAgICAgICAgZHVtcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0VHJhY2tlZFJlcGFpbnRS
ZWN0c1JlY3Vyc2l2ZSk6CisgICAgICAgICAgQ2xlYXJzIHRoZSByZXBhaW50IHJlY3RzIG9uIGFs
bCBncmFwaGljcyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cyk6CisgICAgICAgICAgQ2xlYXJzIHRoZSByZXBh
aW50IHJlY3RzIG9uIGFsbCBncmFwaGljcyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgICAgUmVxdWly
ZWQgc2luY2UgdGhpcyBpcyBhIEdyYXBoaWNzTGF5ZXJDbGllbnQuCisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpsYXllclRyZWVB
c1RleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAgIFRoZSBpbnRlcm5hbHMgY2hhbmdlcyBwbHVtYiB0
aGUgbmV3IGZsYWcgZm9yIGluY2x1ZGluZyB0aGUgcmVwYWludAorICAgICAgICAgIHJlY3RzIGlu
IHRoZSBsYXllciB0cmVlIGR1bXAuCisKIDIwMTItMTAtMzEgIElhbiBWb2xsaWNrICA8dm9sbGlj
a0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRleHQtYmFzZWQgcmVw
YWludCB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA4YjVkMGNmM2M5YmU1
ODhlMDc0OGNhOGY0ZGQ2OWFiYTYyMTAyNzEuLjUzYzMwYmRjY2E4MzU3NmMzMWZiMDcwYTIyNTFh
ODgxNDIyZDY0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTItMTEtMDEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzTGF5
ZXJzIG5vdyBzdG9yZSBpbnZhbGlkYXRlZCByZWN0cyBhbmQgY2FuIGluY2x1ZGUgdGhlbSBpbgor
ICAgICAgICB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgIChXZWJLaXQ6OldlYldpZGdl
dDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgICBVc2VkIGJ5IHRoZSBOb25Db21wb3Np
dGVkQ29udGVudEhvc3QgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSB0cmFja2luZworICAgICAgICAg
IHJlcGFpbnQgcmVjdHMuCisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6aXNUcmFja2luZ1Jl
cGFpbnRzKToKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxpbmtIaWdobGlnaHQ6OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgICBOb3cgY2FsbHMg
R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3Qgd2hlbiBpbnZhbGlkYXRlZC4KKyAgICAgICAg
KiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAgIFJl
cXVpcmVkIGFzIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50LgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppc1RyYWNraW5n
UmVwYWludHMpOgorICAgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIFdlYldpZGdldDo6aXNUcmFj
a2luZ1JlcGFpbnRzLgorCiAyMDEyLTEwLTMxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgY29kZSB0byBoaWRlL3Jlc2hvdyB0ZXh0IGNhcmV0IGZv
ciBQYWdlUG9wdXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDEyNzAyNWIyODg5NzA0ZWU0Yzc5
NzFlZWNkMzlmOGE1ZDg3MTY5YzUuLjk1M2VlYjY0ZGQ3ODY3NzJlMWIyM2M2NDYyYjBmODQwNWFh
ZWI4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNzIsNiArMjcyLDcgQEAgX19aTjdXZWJD
b3JlMTRMb2FkZXJTdHJhdGVneTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYKIF9fWk43V2ViQ29y
ZTE0UGx1Z2luRG9jdW1lbnQxMHBsdWdpbk5vZGVFdgogX19aTks3V2ViQ29yZTVGcmFtZTI1dHJh
Y2tlZFJlcGFpbnRSZWN0c0FzVGV4dEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRUcmFj
a3NSZXBhaW50c0ViCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZXNldFRyYWNrZWRSZXBhaW50
c0V2CiBfX1pON1dlYkNvcmUxNFBsdWdpbkRvY3VtZW50MTJwbHVnaW5XaWRnZXRFdgogX19aTjdX
ZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjEyY3JlYXRlTlNEYXRhRXYKIF9fWk43V2ViQ29yZTE0UmVz
b3VyY2VCdWZmZXJEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggYTQyNzk4YzU3Zjg3NGNhMjE3ODg3
OWJhYWRmMDYyNTA4ODY1ZGY3Ni4uOWM4NzRhYjg4Y2EyZjYyNmQyNWUxMDgzYWY3MjBmMGMzYWI3
YTU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNzksNyArNzksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgZW51bSB7CiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZURlYnVnSW5mbyA9
IDEgPDwgMCwKICAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzID0gMSA8
PCAxLAotICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyCisg
ICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIsCisgICAgICAg
IExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cyA9IDEgPDwgMwogICAgIH07CiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IGM4ZjljYjIxM2QxNmNkNzkyMTVjNTI1OWRkYWRkYWY0N2IzOTUzNGYuLmJkMjc1
NWQyMTUyZGU2ZDc0NWQwMDVjNTMwZmY5MTljYTY1Y2ZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTM2NDUsNiArMzY0NSwxNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VHJhY2tz
UmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogICAgIG1faXNUcmFja2luZ1JlcGFpbnRzID0g
dHJhY2tSZXBhaW50czsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRz
KCkKK3sKKyAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVy
ZXIodGhpcykpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0g
cm9vdC0+Y29tcG9zaXRvcigpOworICAgICAgICBjb21wb3NpdG9yLT5yZXNldFRyYWNrZWRSZXBh
aW50UmVjdHMoKTsKKyAgICB9CisjZW5kaWYKK30KKwogU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tl
ZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCmluZGV4IDJmNDZlYWQyODU1NDM0ZGViM2RhMGZhY2MxZGY2MDA5NmUy
MjBlZDIuLjU0NWUyMmJkZjRiN2RkZGRjMzk3NDJmNThiYmQ4MTcxY2UwYzU4NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaApAQCAtMzM4LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KLSAgICB2b2lkIHJlc2V0
VHJhY2tlZFJlcGFpbnRzKCkgeyBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsgfQorICAg
IHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHRyYWNrZWRSZXBhaW50UmVjdHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrZWRSZXBhaW50UmVj
dHM7IH0KICAgICBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IGM0Y2MwODU5ZjJjMzgzN2VkZWIxZDA2ZjU4OWRmYjUzNGQzZTdkNGQuLmRmNjI3Zjg1
Yjk0ZjU1YjFhYzBmNDljYzkxZmVmMjJkNmU3NjAzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCwxMCArMzAsMTIg
QEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ0LDYgKzQ2LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsK
KwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBWZWN0b3I8RmxvYXRSZWN0
PiA+IFJlcGFpbnRNYXA7CitzdGF0aWMgUmVwYWludE1hcCYgcmVwYWludFJlY3RNYXAoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVwYWludE1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJu
IG1hcDsKK30KKworfSAvLyBuYW1lc3BhY2UKKwogdm9pZCBLZXlmcmFtZVZhbHVlTGlzdDo6aW5z
ZXJ0KGNvbnN0IEFuaW1hdGlvblZhbHVlKiB2YWx1ZSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CkBAIC05Niw2ICsxMDksNyBAQCBHcmFwaGlj
c0xheWVyOjpHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIAogR3Jh
cGhpY3NMYXllcjo6fkdyYXBoaWNzTGF5ZXIoKQogeworICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRz
KCk7CiAgICAgQVNTRVJUKCFtX3BhcmVudCk7IC8vIHdpbGxCZURlc3Ryb3llZCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBhbHJlYWR5LgogfQogCkBAIC01MzYsNiArNTUwLDI4IEBAIGRvdWJsZSBH
cmFwaGljc0xheWVyOjpiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oNCAqIHNpemUoKS53aWR0aCgpKSAqIHNpemUoKS5oZWln
aHQoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjpyZXNldFRyYWNrZWRSZXBhaW50cygpCit7
CisgICAgcmVwYWludFJlY3RNYXAoKS5yZW1vdmUodGhpcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NM
YXllcjo6YWRkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVjdCkKK3sKKyAg
ICBpZiAobV9jbGllbnQtPmlzVHJhY2tpbmdSZXBhaW50cygpKSB7CisgICAgICAgIEZsb2F0UmVj
dCBsYXJnZXN0UmVwYWludFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpOworICAgICAgICBsYXJn
ZXN0UmVwYWludFJlY3QuaW50ZXJzZWN0KHJlcGFpbnRSZWN0KTsKKyAgICAgICAgUmVwYWludE1h
cDo6aXRlcmF0b3IgcmVwYWludEl0ID0gcmVwYWludFJlY3RNYXAoKS5maW5kKHRoaXMpOworICAg
ICAgICBpZiAocmVwYWludEl0ID09IHJlcGFpbnRSZWN0TWFwKCkuZW5kKCkpIHsKKyAgICAgICAg
ICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlcGFpbnRSZWN0czsKKyAgICAgICAgICAgIHJlcGFpbnRS
ZWN0cy5hcHBlbmQobGFyZ2VzdFJlcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0
TWFwKCkuc2V0KHRoaXMsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBWZWN0b3I8RmxvYXRSZWN0PiYgcmVwYWludFJlY3RzID0gcmVwYWludEl0LT52YWx1ZTsK
KyAgICAgICAgICAgIHJlcGFpbnRSZWN0cy5hcHBlbmQobGFyZ2VzdFJlcGFpbnRSZWN0KTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjp3cml0ZUluZGVudChUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBpbmRl
bnQ7ICsraSkKQEAgLTY1OCw3ICs2OTQsMjUgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpkdW1wUHJv
cGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNUZXh0QmUKICAg
ICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8PCAiKHJlcGxp
Y2F0ZWQgbGF5ZXIiOwogICAgICAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHREZWJ1
ZykKLSAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBtX3JlcGxpY2F0ZWRMYXllcjs7CisgICAgICAg
ICAgICB0cyA8PCAiICIgPDwgbV9yZXBsaWNhdGVkTGF5ZXI7CisgICAgICAgIHRzIDw8ICIpXG4i
OworICAgIH0KKworICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBh
aW50UmVjdHMgJiYgcmVwYWludFJlY3RNYXAoKS5jb250YWlucyh0aGlzKSAmJiAhcmVwYWludFJl
Y3RNYXAoKS5nZXQodGhpcykuaXNFbXB0eSgpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBp
bmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIihyZXBhaW50IHJlY3RzXG4iOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBpZiAocmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0uaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd3JpdGVJbmRl
bnQodHMsIGluZGVudCArIDIpOworICAgICAgICAgICAgdHMgPDwgIihyZWN0ICI7CisgICAgICAg
ICAgICB0cyA8PCByZXBhaW50UmVjdE1hcCgpLmdldCh0aGlzKVtpXS54KCkgPDwgIiAiOworICAg
ICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0ueSgpIDw8ICIgIjsK
KyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ldLndpZHRoKCkg
PDwgIiAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0u
aGVpZ2h0KCk7CisgICAgICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgfQorICAgICAgICB3
cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CiAgICAgICAgIHRzIDw8ICIpXG4iOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAppbmRleCA1MDg5M2NkZmNlZjRlZmY3NzY4M2FmOTFjNzY1NTYxZWEzN2NmYTgzLi5lOTM3
Y2E1ZDgzMzUyN2EyN2U2N2QxNjkxODA4ZDIyMmFlMjIyMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC00OCwxMyArNDgsMTUg
QEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXllclRyZWVBc1Rl
eHRCZWhhdmlvck5vcm1hbCA9IDAsCiAgICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcgPSAxIDw8IDAs
IC8vIER1bXAgZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNzZXMuCiAgICAg
TGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKLSAgICBMYXllclRy
ZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMgorICAgIExheWVyVHJlZUFzVGV4dElu
Y2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyLAorICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBh
aW50UmVjdHMgPSAxIDw8IDMKIH07CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUFzVGV4dEJl
aGF2aW9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQzRDsKK2Ns
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzTGF5
ZXJGYWN0b3J5OwogY2xhc3MgSW1hZ2U7CkBAIC00MDQsNiArNDA2LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KIAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKKyAgICB2b2lkIGFkZFJlcGFp
bnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIC8vIFRoaXMgYWxsb3dzIHNldmVyYWwgYWx0ZXJu
YXRpdmUgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHNhbWUgcG9ydCwKICAg
ICAvLyBlLmcuIGlmIGEgZGlmZmVyZW50IEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRpb24gaXMg
bmVlZGVkIGluIFdlYktpdDEgdnMuIFdlYktpdDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXggM2UxMDVjZTZi
MzlhZWExYTI5NWVlMWZmMzZjMmYzOWU3MGJlMjZkMi4uMDZmZmI4YTIxZTgwZjQ5MDViYzExYTZk
NzNiMTI0N2RlZTg5MTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtODUsNiArODUsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciop
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1Jl
cGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogI2lmbmRlZiBOREVCVUcKICAgICAv
LyBSZW5kZXJMYXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMgdG8gdmVyaWZ5IHRoYXQgaXQgaXMg
bm90CiAgICAgLy8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRlbnRzLiBBbiBBU1NFUlQgZmFpbHMs
IGlmIGl0IGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApp
bmRleCBjMWE3MDNhY2QyZmRkODgzZjBhZGY0NTM3MTk0N2U0NzUxZGE2NzBmLi4xMmZjNjlkZjhj
Yzk3OTExZTQzY2ZhODkwYjk4NTI1Yjg0NTU1YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBo
aWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApAQCAtMzc5LDIwICszNzksMjYgQEAgdm9pZCBHcmFwaGlj
c0xheWVyQmxhY2tCZXJyeTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYg
KG1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIG1f
Y29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIGFkZFJlcGFpbnRSZWN0
KGNvbnRlbnRzUmVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVy
cnk6OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKGRyYXdzQ29udGVudCgpKQorICAgIGlm
IChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsK
KyAgICAgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSk7
CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChkcmF3c0NvbnRlbnQo
KSkKKyAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KHJlY3QpOworICAgICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKKyAgICB9
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRzUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYzc2ZjFhNjgzMjNjZTVhMWRhMDhi
NjkxMzhkZmRmNmZmMTQ1NTE3NS4uOGIxODE1MDQ0ZTk0Y2M0YmU4MzE2YWFhM2NmNjI0MmI3ODZi
MGU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC02NzAsNiArNjcwLDggQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgICAg
IG1fZGlydHlSZWN0c1swXS51bml0ZShyZWN0KTsKIAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChEaXJ0eVJlY3RzQ2hhbmdlZCk7CisKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGRjNDZkYzNlNzUxMWZkN2U0MDM2
Zjk1ZjE1NzViNjMxMGY3ZWIxOTQuLmRmMzM1ZDgxMDJlMTBmNWYxMjAzMDI3ZjgyODdkZDg1MDM2
NjIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtNDM2LDE0
ICs0MzYsMTcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxpY2F0ZWRCeUxh
eWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChXZWJMYXllciogY29udGVudHNM
YXllciA9IGNvbnRlbnRzTGF5ZXJJZlJlZ2lzdGVyZWQoKSkKKyAgICBpZiAoV2ViTGF5ZXIqIGNv
bnRlbnRzTGF5ZXIgPSBjb250ZW50c0xheWVySWZSZWdpc3RlcmVkKCkpIHsKICAgICAgICAgY29u
dGVudHNMYXllci0+aW52YWxpZGF0ZSgpOworICAgICAgICBhZGRSZXBhaW50UmVjdChjb250ZW50
c1JlY3QoKSk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXll
ci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworICAgICAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBtX3NpemUpKTsKICAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkK
ICAgICAgICAgICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAgIH0KQEAgLTQ1
Myw2ICs0NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkp
IHsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CisgICAg
ICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOwogICAgICAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQog
ICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xh
eWVyQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAppbmRleCAxMDRiNzk4MmIwZGEwYzEwZmRhM2E4NTVj
MmEzMWRiMjczODI3OTYwLi41OGJmMzhkNWIwNGUyZWM4MTMxMjgzYWNkYmJmY2NhMWRhZGY2YWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dy
YXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcApAQCAtNjcsMTEgKzY3LDEzIEBA
IENsdXR0ZXJBY3RvciogR3JhcGhpY3NMYXllckNsdXR0ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIG1fc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6
OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
aW5kZXggZjA0Y2Y0OWRlZDc3ODkzOTJlY2FkYzAxNWY4NWE4ZDNkNjEyYjk2My4uNDE4OTdjNjNl
ODE4NWQ5NmU4NTBjM2FiNjIyZmYyMDliZTkxNjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbV9uZWVkc0Rpc3BsYXkg
PSB0cnVlOwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFu
Z2UpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6ZSkp
OwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTk1LDYgKzk2LDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkKIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKICAg
ICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdlKTsKKyAgICBh
ZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NM
YXllci5oKQpAQCAtMTA1LDYgKzEwNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAg
IHJldHVybjsKICAgICBtX25lZWRzRGlzcGxheVJlY3QudW5pdGUocmVjdCk7CiAgICAgbm90aWZ5
Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisgICAgYWRkUmVwYWlu
dFJlY3QocmVjdCk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBmNDc2NmJj
YmE2YmM1NTQ4NzZlOWFmYzlhYjRkZGQ2ZWRmZDljODljLi41NTY5MDllOWQyYjBjM2E0OGJmNzZj
ZDRhODdmNjZjNzI2MzhjMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTU5Niw2ICsxNTk2LDEyIEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0
CiAgICAgcmV0dXJuIGNvbXBvc2l0b3IoKSA/IGNvbXBvc2l0b3IoKS0+Y29tcG9zaXRvclNob3dS
ZXBhaW50Q291bnRlcigpIDogZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpp
c1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNs
aWVudCA9IGNvbXBvc2l0b3IoKTsKKyAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50LT5pc1RyYWNr
aW5nUmVwYWludHMoKSA6IGZhbHNlOworfQorCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnZlcmlmeU5vdFBhaW50aW5nKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA1NDAyZmM0ZGMwYjliNzc0NTJhNjg4
YzgxMThhN2ZlYzAxMGY2ZWEzLi4yMmZiODg5MDE2ZWRmNWIwYzFhOWNiNWMyNjIxNzA3Yjc3ZjM5
NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CkBAIC0xNTcsNiArMTU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdC
b3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVS
UklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBPVkVS
UklERTsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5Tm90UGFpbnRp
bmcoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCA1YjE5ZjNlMTM3ODEwZWJhZTNiNDZkMmI4Y2VmNmU5NTYz
MTkxYjg0Li5mMzNlYjdhMGQ5YzUzODcwNzllODRiZjQzNDBiNzg1MjZhMDNlYjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMTE0OSwxMCArMTE0OSwyMiBAQCBTdHJpbmcgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXll
clRyZWVBc1RleHQoTGF5ZXJUcmVlRmxhZ3MgZmxhZ3MpCiAgICAgICAgIGxheWVyVHJlZUJlaGF2
aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVjdHM7CiAgICAgaWYgKGZsYWdz
ICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNhY2hlcykKICAgICAgICAgbGF5ZXJUcmVlQmVo
YXZpb3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVRpbGVDYWNoZXM7CisgICAgaWYgKGZsYWdz
ICYgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3RzKQorICAgICAgICBsYXllclRyZWVC
ZWhhdmlvciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlUmVwYWludFJlY3RzOwogCiAgICAgLy8g
V2Ugc2tpcCBkdW1waW5nIHRoZSBzY3JvbGwgYW5kIGNsaXAgbGF5ZXJzIHRvIGtlZXAgbGF5ZXJU
cmVlQXNUZXh0IG91dHB1dAogICAgIC8vIHNpbWlsYXIgYmV0d2VlbiBwbGF0Zm9ybXMuCi0gICAg
cmV0dXJuIG1fcm9vdENvbnRlbnRMYXllci0+bGF5ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUJlaGF2
aW9yKTsKKyAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dCA9IG1fcm9vdENvbnRlbnRMYXllci0+bGF5
ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUJlaGF2aW9yKTsKKworICAgIC8vIFRoZSB0cnVlIHJvb3Qg
bGF5ZXIgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBkdW1wLCBzbyBpZiB3ZSB3YW50IHRvIHJlcG9y
dAorICAgIC8vIGl0cyByZXBhaW50IHJlY3RzLCB0aGV5IG11c3QgYmUgaW5jbHVkZWQgaGVyZS4K
KyAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMpIHsKKyAg
ICAgICAgU3RyaW5nIGxheWVyVHJlZVRleHRXaXRoUm9vdFJlcGFpbnRSZWN0cyA9IG1fcmVuZGVy
Vmlldy0+ZnJhbWVWaWV3KCktPnRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKTsKKyAgICAgICAg
bGF5ZXJUcmVlVGV4dFdpdGhSb290UmVwYWludFJlY3RzLmFwcGVuZChsYXllclRyZWVUZXh0KTsK
KyAgICAgICAgcmV0dXJuIGxheWVyVHJlZVRleHRXaXRoUm9vdFJlcGFpbnRSZWN0czsKKyAgICB9
CisKKyAgICByZXR1cm4gbGF5ZXJUcmVlVGV4dDsKIH0KIAogUmVuZGVyTGF5ZXJDb21wb3NpdG9y
KiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lQ29udGVudHNDb21wb3NpdG9yKFJlbmRlclBh
cnQqIHJlbmRlcmVyKQpAQCAtMjAwMyw2ICsyMDE1LDI5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpkb2N1bWVudEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpCiAgICAgZ3JhcGhpY3NM
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CiB9CiAKK3N0YXRpYyB2
b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyKQoreworICAgIGlmICghZ3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ3JhcGhpY3NMYXllci0+cmVzZXRUcmFja2VkUmVwYWludHMoKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkK
KyAgICAgICAgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXIt
PmNoaWxkcmVuKClbaV0pOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FMYXllciA9
IGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBh
aW50UmVjdHNSZWN1cnNpdmUocmVwbGljYUxheWVyKTsKKworICAgIGlmIChHcmFwaGljc0xheWVy
KiBtYXNrTGF5ZXIgPSBncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgcmVzZXRU
cmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKG1hc2tMYXllcik7Cit9CisKK3ZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKQoreworICAgIGlmIChH
cmFwaGljc0xheWVyKiByb290TGF5ZXIgPSByb290R3JhcGhpY3NMYXllcigpKQorICAgICAgICBy
ZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUocm9vdExheWVyKTsKK30KKwogYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXll
ciogbGF5ZXIpIGNvbnN0CiB7CiAgICAgaWYgKGxheWVyID09IG1fbGF5ZXJGb3JIb3Jpem9udGFs
U2Nyb2xsYmFyIHx8IGxheWVyID09IG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciB8fCBsYXll
ciA9PSBtX2xheWVyRm9yU2Nyb2xsQ29ybmVyKQpAQCAtMjAxOSw2ICsyMDU0LDE3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NM
YXllciogbGF5ZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IG1fcmVuZGVyVmlldyA/IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkg
OiAwOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJh
bWVWaWV3KiByb290RnJhbWVWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLT50cmVlKCktPnRvcCgp
LT52aWV3KCk7CisgICAgaWYgKCFyb290RnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHJvb3RGcmFtZVZpZXctPmlzVHJhY2tpbmdSZXBhaW50cygpOworfQorCiBm
bG9hdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIHsK
ICAgICBQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDgyNmRmOTkxNGRmZDFhNTQ4NTFm
NzBhZGJhYjg4OWIxNjA5MTg5NTEuLmNlNzhjODBmMDYwNzg0NDc0MDM0MmVjM2YzNTZlNGMyOWQw
NTQwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKQEAgLTIyOCw2ICsyMjgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRvY3VtZW50
QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCk7CiAKKyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFp
bnRSZWN0cygpOworCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTIzOCw2
ICsyNDAsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMo
Y29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBz
aG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwor
CisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IE9WRVJSSURFOwog
ICAgIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCB2b2lkIGZsdXNoTGF5ZXJzKEdyYXBoaWNzTGF5ZXJVcGRhdGVyKikgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODI5Y2ZmNTdjODgyZWY4
MTQ2YmJkZmUyOWQwNjJlZWI1ZGEyY2M1Ni4uZjM4ODljNjNhM2UyNzM5ZDk0NjEwY2Y3Zjk4YjQw
NjM4YzEzZWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI1OSw2
ICsxMjU5LDggQEAgU3RyaW5nIEludGVybmFsczo6bGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50KiBk
b2N1bWVudCwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkMKICAgICAgICAgbGF5ZXJUcmVlRmxh
Z3MgfD0gTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJsZVJlY3RzOwogICAgIGlmIChmbGFncyAm
IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMpCiAgICAgICAgIGxheWVyVHJlZUZsYWdz
IHw9IExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXM7CisgICAgaWYgKGZsYWdzICYgTEFZ
RVJfVFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTKQorICAgICAgICBsYXllclRyZWVGbGFncyB8
PSBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHM7CiAKICAgICByZXR1cm4gZG9jdW1l
bnQtPmZyYW1lKCktPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVGbGFncyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBlODEyNzg1MDM1OThiZDI1NzVkOTM2NWJmNTA0ZjVi
NDkzYjlmYjRlLi44Njc1NDU1ZWQ0NmZmN2U0MTExNmNmMjQxZWJkZjA5MGJhNTE5ZTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE5MCw3ICsxOTAsOCBAQCBwdWJsaWM6CiAg
ICAgZW51bSB7CiAgICAgICAgIC8vIFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRo
IEludGVybmFscy5pZGwuCiAgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNU
UyA9IDEsCi0gICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyCisgICAg
ICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyLAorICAgICAgICBMQVlFUl9U
UkVFX0lOQ0xVREVTX1JFUEFJTlRfUkVDVFMgPSA0CiAgICAgICAgIAogICAgIH07CiAgICAgU3Ry
aW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVudCosIHVuc2lnbmVkIGZsYWdzLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMTZlYzFm
ODBlOWUwYjUwMjNhZmMwNmY2Mzk3NDllMTVjNDAzMjJhNS4uMGJmNmI4MDIwZDE0MTQ4Y2JkM2Vh
ZDQwMzBiZjRkYzIxZGI1ODJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtMTU0LDYgKzE1NCw3IEBACiAgICAgLy8gRmxhZ3MgZm9yIGxheWVyVHJlZUFzVGV4dC4KICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMg
PSAxOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9D
QUNIRVMgPSAyOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNf
UkVQQUlOVF9SRUNUUyA9IDQ7CiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1
bWVudCBkb2N1bWVudCwgaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBE
b2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAppbmRleCBjODQ2NDA2MmQyODVmZDUxYTRlNmRjMjYz
N2ZlODIzNzRlNzc4MjE5Li5mMmIzOTQ0Mzk1ZWJlMzQ2ZmE3Mjk3Mzc4MTgwMjJlNDQ1YmE0YTM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtMTI3LDYg
KzEyNyw5IEBAIHB1YmxpYzoKICAgICAvLyBhbmltYXRlIG9yIGxheW91dCBpbiB0aGlzIGNhc2Uu
CiAgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCkgPSAwOwogCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHdlJ3ZlIHN0YXJ0ZWQgdHJhY2tpbmcgcmVwYWludCByZWN0YW5nbGVz
LgorICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNvbXBvc2l0aW5nIHN1cmZhY2Ug
YXNzb2NpYXRlZCB3aXRoIHRoaXMgV2ViV2lkZ2V0IGlzCiAgICAgLy8gcmVhZHkgdG8gdXNlLgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdG9yU3VyZmFjZVJlYWR5KCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAppbmRleCA4MTVhMGMzMDBl
OWFiNTE5NjBjZTk0MGQ5MmRkYTE1NmE5NDBlNTljLi4xYTNhNzdjZjU0Yzk4NDE2MTAxOWU5MThl
MzU1NzcwZWU1NDI5MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9M
aW5rSGlnaGxpZ2h0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGln
aGxpZ2h0LmNwcApAQCAtMzAyLDYgKzMwMiw5IEBAIHZvaWQgTGlua0hpZ2hsaWdodDo6dXBkYXRl
R2VvbWV0cnkoKQogICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gaW52YWxpZGF0ZSB0aGUgbGF5
ZXIgaWYgdGhlIGhpZ2hsaWdodCBzaXplIGhhcyBjaGFuZ2VkLCBvdGhlcndpc2UKICAgICAgICAg
Ly8gd2UgY2FuIGp1c3QgcmUtcG9zaXRpb24gdGhlIGxheWVyIHdpdGhvdXQgbmVlZGluZyB0byBy
ZXBhaW50LgogICAgICAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwor
CisgICAgICAgIGlmIChtX2N1cnJlbnRHcmFwaGljc0xheWVyKQorICAgICAgICAgICAgbV9jdXJy
ZW50R3JhcGhpY3NMYXllci0+YWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KGxheWVyKCktPnBvc2l0
aW9uKCkueCwgbGF5ZXIoKS0+cG9zaXRpb24oKS55LCBsYXllcigpLT5ib3VuZHMoKS53aWR0aCwg
bGF5ZXIoKS0+Ym91bmRzKCkuaGVpZ2h0KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRl
eCAyMWI5NzI1YjBlYTVkMDBhMDhiYTM2NDE2ZTViODA1YzBmM2ZlYmUxLi4yM2RjZGRlOWI3OWI0
OTg5NWEyZjIyMWI3YmE1MTAwYTM2Y2MzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTIwMSw0ICsy
MDEsOSBAQCBib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2hvd1JlcGFpbnRDb3VudGVy
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
Ym9vbCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCAwOGU5YzY5YjJmN2NhMWYzZTRjODAw
ZTg5MjI4MTljMmU5NTZiY2I0Li4yYjZkZGMxYWFiMDAyNjE1ZTJiOTFmNzg5YTY2NWQ0M2YyYjVi
MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuaApAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZpcnR1YWwgYm9vbCBzaG93
RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7
CiAKICAgICBib29sIGhhdmVTY3JvbGxMYXllcigpOwogICAgIFdlYkxheWVyKiBzY3JvbGxMYXll
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGE2
Y2I0OTRmODE1ZmQ3MzQ4MmRmYzRiMTY5NDFkMjVhMTEwYzEyMmQuLmY3NTE5ZGNkOTE3Y2ZiMzAw
MTgyMWQyODQzYWI0ZjQzMzg4M2VjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTE4MjksNiArMTgyOSwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpw
YWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25z
IG9wdAogICAgIH0KIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6aXNUcmFja2luZ1JlcGFpbnRzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZy
YW1lVmlldyogdmlldyA9IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICByZXR1cm4g
dmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnRoZW1l
Q2hhbmdlZCgpCiB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCAzNTQ4ODlmZGU4ZDM3MDM2NDBkNTQyMTc5MGRiNzY3NjY2NDMx
ODQ0Li4xYzdiMjE0NDUxY2QzZTVlNGU4OTgzNzNjNzc4ZWFkNjdlZDgwNDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOyAvLyBBbHNvIGltcGxlbWVudHMgV2ViTGF5
ZXJUcmVlVmlld0NsaWVudDo6bGF5b3V0KCkKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGb3JjZUNv
bXBvc2l0aW5nTW9kZShib29sIGVuYWJsZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmLCBQYWludE9wdGlvbnMgPSBSZWFkYmFja0Zy
b21Db21wb3NpdG9ySWZBdmFpbGFibGUpOworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVw
YWludHMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7
CiAgICAgdmlydHVhbCB2b2lkIGNvbXBvc2l0ZShib29sIGZpbmlzaCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzUmVkcmF3KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2I1MzU5NDNmYWY1MDdlMTgyMjA2NzM5MTRi
MzZlMTgwODQwNzc0OC4uODZkNTU0NjhmOTFmZDlkNjZkOTQzZjlmMWYzMDgzNWI0YTdlMGVlMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTAxICBJYW4gVm9sbGljayAgPHZvbGxpY2tA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxpZGF0aW9uIHRyYWNraW5nIGZv
ciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBHcmFwaGljc0xheWVycyBub3cgc3RvcmUgaW52YWxpZGF0ZWQgcmVjdHMgYW5k
IGNhbiBpbmNsdWRlIHRoZW0gaW4KKyAgICAgICAgdGhlIGxheWVyIHRyZWUgZHVtcC4KKworICAg
ICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxh
eWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQv
aW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBv
c2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTAtMzEgIFJhcGhhZWwg
S3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAg
ICAgW0VGTF0gTW9yZSB1bnJldmlld2VkIHBpeGVsIGV4cGVjdGF0aW9ucyBnYXJkZW5pbmcuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMt
b24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMzVmMmE4YjNiNTUyZGVkZmRjOTVmYzUzYThjNDM3NmEwOWM5NDQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlk
YXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBA
CisocmVwYWludCByZWN0cworICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA2
MDApCisgIChyZWN0IDAgMCA4MDAgNDUwKQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3Qg
MCAwIDgwMCA0NTApCisgIChyZWN0IDAgMCA4MDAgNjAwKQorKQorKEdyYXBoaWNzTGF5ZXIKKyAg
KGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVy
CisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4LjAwIDQyLjAwKQorICAgICAg
ICAgIChib3VuZHMgNDAwLjAwIDQwMC4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisg
ICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgIChyZWN0IDAuMDAgMC4wMCA0MDAu
MDAgNDAwLjAwKQorICAgICAgICAgICkKKyAgICAgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDUwLjAwIDUwLjAwKQor
ICAgICAgICAgICAgICAoYm91bmRzIDc1LjAwIDc1LjAwKQorICAgICAgICAgICAgICAoZHJhd3ND
b250ZW50IDEpCisgICAgICAgICAgICAgIChyZXBhaW50IHJlY3RzCisgICAgICAgICAgICAgICAg
KHJlY3QgMC4wMCAwLjAwIDc1LjAwIDc1LjAwKQorICAgICAgICAgICAgICApCisgICAgICAgICAg
ICApCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1v
bi1jb21wb3NpdGVkLWxheWVycy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWlu
dC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQy
ZmJjNzY3YzY1MGNiNWExYzBhNDc5MzcxMzk5MTYzZTQ2NTJhOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3Np
dGVkLWxheWVycy5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0t
CitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgcmVwYWludCB0ZXN0aW5nIHdvcmtzIHdpdGggY29tcG9z
aXRlZCBsYXllcnMuCistLT4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICAjcGFyZW50IHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0
ZVooMHB4KTsKKyAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDQwMHB4Owor
ICAgICAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgIH0KKworICAgICNjaGlsZCB7CisgICAgICAg
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogNTBweDsKKyAgICAgICAgdG9wOiA1MHB4OworICAgICAg
ICB3aWR0aDogNzVweDsKKyAgICAgICAgaGVpZ2h0OiA3NXB4OworICAgICAgICBiYWNrZ3JvdW5k
OiBncmVlbjsKKyAgICB9CisKKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgIGFs
ZXJ0KCdUaGlzIHRlc3QgcmVxdWlyZXMgdGVzdFJ1bm5lciB0byBydW4hJyk7CisgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICAgICAgICAgICAgYWxlcnQoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50
ZXJhbHMgdG8gcnVuIScpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorCisg
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsKKworICAgICAgICAgIHZhciBw
YXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFyZW50Jyk7CisgICAgICAgICAgdmFy
IGNoaWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisKKyAgICAgICAgICB3
aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAg
ICAgICBjaGlsZC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2JsdWUnOworICAgICAgICAgIHBhcmVudC5z
dHlsZS5iYWNrZ3JvdW5kID0gJ2dyZWVuJzsKKworICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQnKTsKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9ICdU
aGlzIHRleHQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBsYXllciB0cmVlJzsKKworICAgICAg
ICAgIC8vIEZvcmNlIGEgc3R5bGUgcmVjYWxjLgorICAgICAgICAgIHZhciBkdW1teSA9IGNoaWxk
Lm9mZnNldFRvcDsKKworICAgICAgICAgIHZhciBsYXllclRyZWVUZXh0ID0gd2luZG93LmludGVy
bmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xV
REVTX1JFUEFJTlRfUkVDVFMpOworCisgICAgICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJh
Y2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9IGxh
eWVyVHJlZVRleHQ7CisgICAgICB9KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PHByZSBpZD0idGV4dCI+PC9wcmU+CisgIDxkaXYgaWQ9InBhcmVudCI+CisgICAgPGRpdiBpZD0i
Y2hpbGQiPjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMt
b24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVy
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE4ZjlkZTNmNzgwZmVkNjZjNDE1YmM1Yzk4ZjU0
OTMyODczNDk1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9j
b21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKKyhyZXBhaW50IHJlY3RzCisgIChyZWN0IDAgMCA4
MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NDkpCisgIChy
ZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDQ0OSkKKyAgKHJlY3QgMCAwIDgwMCA2
MDApCispCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGls
ZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkK
KyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBv
c2l0aW9uIDguMDAgNDEuMDApCisgICAgICAgICAgKGJvdW5kcyA0MDAuMDAgNDAwLjAwKQorICAg
ICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAg
ICAgICAgKHJlY3QgMC4wMCAwLjAwIDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKQorICAgICAg
ICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAg
ICAocG9zaXRpb24gNTAuMDAgNTAuMDApCisgICAgICAgICAgICAgIChib3VuZHMgNzUuMDAgNzUu
MDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgKHJlcGFp
bnQgcmVjdHMKKyAgICAgICAgICAgICAgICAocmVjdCAwLjAwIDAuMDAgNzUuMDAgNzUuMDApCisg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAg
ICAgICkKKyAgICApCisgICkKKykKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171916</attachid>
            <date>2012-11-01 13:16:52 -0700</date>
            <delta_ts>2012-11-01 13:30:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121101161513.patch</filename>
            <type>text/plain</type>
            <size>37627</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhNGYzMjEwYTE5OTAy
N2QyNDAxOTliZWM2NTk5ODA0NDIzYTdiOS4uZmE3ZTNiNTI5ZDVhZTQxZDU1YWY0MTczMWY0YTUz
MjQzZWI2YmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTExLTAxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xheWVycyBub3cgc3RvcmUgaW52
YWxpZGF0ZWQgcmVjdHMgYW5kIGNhbiBpbmNsdWRlIHRoZW0gaW4KKyAgICAgICAgdGhlIGxheWVy
IHRyZWUgZHVtcC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRh
dGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICAgRXhwb3J0cyBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKCkK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldFRyYWNrc1JlcGFpbnRzUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2V0VHJhY2tzUmVwYWludHMpOgorICAgICAgICAgIE5vdGlmaWVzIGVh
Y2ggY29tcG9zaXRvciB0aGF0IHdlIGFyZSBzdGFydGluZy9zdG9wcGluZyByZXBhaW50cy4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVzZXRUcmFja2VkUmVwYWludHMpOgorICAgICAg
ICAgIE1vdmVkIGltcGxlbWVudGF0aW9uIHRvIHRoZSBjcHAgZmlsZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6On5HcmFwaGljc0xheWVyKToKKyAgICAgICAgICBDbGVhcnMgdGhlIHJlcGFpbnQg
cmVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpyZXNldFRyYWNrZWRSZXBhaW50cyk6CisgICAgICAgICAgQ2xlYXJzIHRoZSBy
ZXBhaW50IHJlY3RzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxheWVyLgorICAgICAgICAgIE5vdGUg
dGhhdCB0aGUgcmVwYWludCByZWN0cyBhcmUgc3RvcmVkIGluIGEgc3RhdGljYWxseSBhbGxvY2F0
ZWQKKyAgICAgICAgICBIYXNoTWFwIHRvIGF2b2lkIHVzaW5nIHNwYWNlIG9uIHRoZSBncmFwaGlj
cyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVj
dCk6CisgICAgICAgICAgQWRkcyBhIHJlcGFpbnQgcmVjdCB0byBsaXN0IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIGxheWVyIGluIHRoZQorICAgICAgICAgIGhhc2ggbWFwIG1lbnRpb25lZCBhYm92ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0aWVzKToKKyAgICAg
ICAgICBUaGlzIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGluY2x1ZGUgdGhlIHJlcGFpbnQgcmVjdHMg
aW4gdGhlIGR1bXAKKyAgICAgICAgICBpZiB0aGV5J3ZlIGJlZW4gcmVxdWVzdGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAg
ICAgVGhpcyBpcyBob3cgZ3JhcGhpY3MgbGF5ZXJzIGNoZWNrIGlmIHJlcGFpbnQgdHJhY2tpbmcg
aXMgaGFwcGVuaW5nLgorICAgICAgICAgIFJldHVybnMgZmFsc2UgYnkgZGVmYXVsdC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250
ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQmxhY2tC
ZXJyeTo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJC
bGFja0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAgIFRoZXNlIG5vdyBj
YWxsIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2FyeS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAg
IE5vdyBjYWxscyBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCBhcyBuZWNlc3NhcnkuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAgIFRoZXNlIG5vdyBjYWxsIEdy
YXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6
CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3Qg
YXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgICBUaGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50
UmVjdCBhcyBuZWNlc3NhcnkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmlzVHJhY2tpbmdS
ZXBhaW50cyk6CisgICAgICAgICAgUmVxdWlyZWQgc2luY2UgdGhpcyBpcyBhIEdyYXBoaWNzTGF5
ZXJDbGllbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUFzVGV4
dCk6CisgICAgICAgICAgTm93IGFjY2VwdHMgYSBmbGFnIHRvIGluY2x1ZGUgdGhlIHJlcGFpbnQg
cmVjdHMgaW4gdGhlIGxheWVyIHRyZWUKKyAgICAgICAgICBkdW1wLgorICAgICAgICAoV2ViQ29y
ZTo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKToKKyAgICAgICAgICBDbGVhcnMg
dGhlIHJlcGFpbnQgcmVjdHMgb24gYWxsIGdyYXBoaWNzIGxheWVycy4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzKToKKyAg
ICAgICAgICBDbGVhcnMgdGhlIHJlcGFpbnQgcmVjdHMgb24gYWxsIGdyYXBoaWNzIGxheWVycy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNUcmFja2luZ1JlcGFp
bnRzKToKKyAgICAgICAgICBSZXF1aXJlZCBzaW5jZSB0aGlzIGlzIGEgR3JhcGhpY3NMYXllckNs
aWVudC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICAgVGhlIGlu
dGVybmFscyBjaGFuZ2VzIHBsdW1iIHRoZSBuZXcgZmxhZyBmb3IgaW5jbHVkaW5nIHRoZSByZXBh
aW50CisgICAgICAgICAgcmVjdHMgaW4gdGhlIGxheWVyIHRyZWUgZHVtcC4KKwogMjAxMi0xMC0z
MSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGV4dC1iYXNlZCByZXBhaW50IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMDhiNWQwY2YzYzliZTU4OGUwNzQ4Y2E4ZjRkZDY5YWJhNjIxMDI3MS4uNTNjMzBi
ZGNjYTgzNTc2YzMxZmIwNzBhMjI1MWE4ODE0MjJkNjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0wMSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNr
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGludmFsaWRhdGlvbiB0cmFja2luZyBm
b3IgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3ODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgR3JhcGhpY3NMYXllcnMgbm93IHN0b3JlIGludmFsaWRhdGVkIHJlY3RzIGFu
ZCBjYW4gaW5jbHVkZSB0aGVtIGluCisgICAgICAgIHRoZSBsYXllciB0cmVlIGR1bXAuCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAg
IFVzZWQgYnkgdGhlIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCB0byBkZXRlcm1pbmUgaWYgd2Ug
YXJlIHRyYWNraW5nCisgICAgICAgICAgcmVwYWludCByZWN0cy4KKyAgICAgICAgKFdlYktpdDo6
V2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAqIHNyYy9MaW5rSGlnaGxp
Z2h0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdodDo6dXBkYXRlR2VvbWV0cnkp
OgorICAgICAgICAgIE5vdyBjYWxscyBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCB3aGVu
IGludmFsaWRhdGVkLgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmlzVHJhY2tpbmdS
ZXBhaW50cyk6CisgICAgICAgICAgUmVxdWlyZWQgYXMgdGhpcyBpcyBhIEdyYXBoaWNzTGF5ZXJD
bGllbnQuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAgICAgICAgSW1wbGVtZW50YXRp
b24gb2YgV2ViV2lkZ2V0Ojppc1RyYWNraW5nUmVwYWludHMuCisKIDIwMTItMTAtMzEgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBjb2RlIHRvIGhp
ZGUvcmVzaG93IHRleHQgY2FyZXQgZm9yIFBhZ2VQb3B1cHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggMTI3MDI1YjI4ODk3MDRlZTRjNzk3MWVlY2QzOWY4YTVkODcxNjljNS4uOTUzZWViNjRkZDc4
Njc3MmUxYjIzYzY0NjJiMGY4NDA1YWFlYjhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI3
Miw2ICsyNzIsNyBAQCBfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRT
Y2hlZHVsZXJFdgogX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2CiBf
X1pOSzdXZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2Vi
Q29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKK19fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyMHJlc2V0VHJhY2tlZFJlcGFpbnRzRXYKIF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQx
MnBsdWdpbldpZGdldEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0Rh
dGFFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlckQxRXYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRl
eCBhNDI3OThjNTdmODc0Y2EyMTc4ODc5YmFhZGYwNjI1MDg4NjVkZjc2Li45Yzg3NGFiODhjYTJm
NjI2ZDI1ZTEwODNhZjcyMGYwYzNhYjdhNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03OSw3ICs3
OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBlbnVtIHsKICAgICAgICAgTGF5ZXJUcmVl
RmxhZ3NJbmNsdWRlRGVidWdJbmZvID0gMSA8PCAwLAogICAgICAgICBMYXllclRyZWVGbGFnc0lu
Y2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDEsCi0gICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVk
ZVRpbGVDYWNoZXMgPSAxIDw8IDIKKyAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNh
Y2hlcyA9IDEgPDwgMiwKKyAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3Rz
ID0gMSA8PCAzCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJlZUZsYWdzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYzhmOWNiMjEzZDE2Y2Q3OTIxNWM1MjU5
ZGRhZGRhZjQ3YjM5NTM0Zi4uMTBmYTNiZjZjMzc1MzRhM2ZkMjhkZWY5ZDU0ZDZjMDdhYTgxNzEx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMzYzNiwxNSArMzYzNiw0NCBAQCB2
b2lkIEZyYW1lVmlldzo6c2V0UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheUlu
Y3JlbWVudER1cmluZ0xvYWRpbmcoZAogICAgIHNfZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1l
bnREdXJpbmdMb2FkaW5nID0gcDsKIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKK3N0YXRpYyB2b2lkIHNldFRyYWNrc1JlcGFpbnRzUmVjdXJzaXZlKEZyYW1lKiBmcmFtZSwg
Ym9vbCB0cmFja1JlcGFpbnRzKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQor
ICAgICAgICByb290LT5jb21wb3NpdG9yKCktPnNldFRyYWNrc1JlcGFpbnRzKHRyYWNrUmVwYWlu
dHMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lLT50cmVlKCktPmNoaWxk
Q291bnQoKTsgKytpKQorICAgICAgICBzZXRUcmFja3NSZXBhaW50c1JlY3Vyc2l2ZShmcmFtZS0+
dHJlZSgpLT5jaGlsZChpKSwgdHJhY2tSZXBhaW50cyk7Cit9CisjZW5kaWYKKwogdm9pZCBGcmFt
ZVZpZXc6OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJhY2tSZXBhaW50cykKIHsKICAgICBpZiAo
dHJhY2tSZXBhaW50cyA9PSBtX2lzVHJhY2tpbmdSZXBhaW50cykKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHNldFRyYWNrc1Jl
cGFpbnRzUmVjdXJzaXZlKG1fZnJhbWUtPnRyZWUoKS0+dG9wKCksIHRyYWNrUmVwYWludHMpOwor
I2VuZGlmCisKICAgICByZXNldFRyYWNrZWRSZXBhaW50cygpOwogICAgIG1faXNUcmFja2luZ1Jl
cGFpbnRzID0gdHJhY2tSZXBhaW50czsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnJlc2V0VHJhY2tl
ZFJlcGFpbnRzKCkKK3sKKyAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBy
b290UmVuZGVyZXIodGhpcykpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21w
b3NpdG9yID0gcm9vdC0+Y29tcG9zaXRvcigpOworICAgICAgICBjb21wb3NpdG9yLT5yZXNldFRy
YWNrZWRSZXBhaW50UmVjdHMoKTsKKyAgICB9CisjZW5kaWYKK30KKwogU3RyaW5nIEZyYW1lVmll
dzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDJmNDZlYWQyODU1NDM0ZGViM2RhMGZhY2Mx
ZGY2MDA5NmUyMjBlZDIuLjU0NWUyMmJkZjRiN2RkZGRjMzk3NDJmNThiYmQ4MTcxY2UwYzU4NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzM4LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2lu
Z1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KLSAgICB2
b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRzKCkgeyBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIo
KTsgfQorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKICAgICBjb25zdCBWZWN0b3I8
SW50UmVjdD4mIHRyYWNrZWRSZXBhaW50UmVjdHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrZWRS
ZXBhaW50UmVjdHM7IH0KICAgICBTdHJpbmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuY3BwCmluZGV4IGM0Y2MwODU5ZjJjMzgzN2VkZWIxZDA2ZjU4OWRmYjUzNGQzZTdkNGQu
LmRmNjI3Zjg1Yjk0ZjU1YjFhYzBmNDljYzkxZmVmMjJkNmU3NjAzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCwx
MCArMzAsMTIgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAi
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTQ0LDYgKzQ2LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFt
ZXNwYWNlIHsKKwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBWZWN0b3I8
RmxvYXRSZWN0PiA+IFJlcGFpbnRNYXA7CitzdGF0aWMgUmVwYWludE1hcCYgcmVwYWludFJlY3RN
YXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVwYWludE1hcCwgbWFwLCAoKSk7Cisg
ICAgcmV0dXJuIG1hcDsKK30KKworfSAvLyBuYW1lc3BhY2UKKwogdm9pZCBLZXlmcmFtZVZhbHVl
TGlzdDo6aW5zZXJ0KGNvbnN0IEFuaW1hdGlvblZhbHVlKiB2YWx1ZSkKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CkBAIC05Niw2ICsxMDksNyBA
QCBHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVu
dCkKIAogR3JhcGhpY3NMYXllcjo6fkdyYXBoaWNzTGF5ZXIoKQogeworICAgIHJlc2V0VHJhY2tl
ZFJlcGFpbnRzKCk7CiAgICAgQVNTRVJUKCFtX3BhcmVudCk7IC8vIHdpbGxCZURlc3Ryb3llZCBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhbHJlYWR5LgogfQogCkBAIC01MzYsNiArNTUwLDI4IEBA
IGRvdWJsZSBHcmFwaGljc0xheWVyOjpiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oNCAqIHNpemUoKS53aWR0aCgpKSAqIHNp
emUoKS5oZWlnaHQoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjpyZXNldFRyYWNrZWRSZXBh
aW50cygpCit7CisgICAgcmVwYWludFJlY3RNYXAoKS5yZW1vdmUodGhpcyk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVj
dCkKK3sKKyAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tpbmdSZXBhaW50cygpKSB7CisgICAgICAg
IEZsb2F0UmVjdCBsYXJnZXN0UmVwYWludFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpOworICAg
ICAgICBsYXJnZXN0UmVwYWludFJlY3QuaW50ZXJzZWN0KHJlcGFpbnRSZWN0KTsKKyAgICAgICAg
UmVwYWludE1hcDo6aXRlcmF0b3IgcmVwYWludEl0ID0gcmVwYWludFJlY3RNYXAoKS5maW5kKHRo
aXMpOworICAgICAgICBpZiAocmVwYWludEl0ID09IHJlcGFpbnRSZWN0TWFwKCkuZW5kKCkpIHsK
KyAgICAgICAgICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlcGFpbnRSZWN0czsKKyAgICAgICAgICAg
IHJlcGFpbnRSZWN0cy5hcHBlbmQobGFyZ2VzdFJlcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIHJl
cGFpbnRSZWN0TWFwKCkuc2V0KHRoaXMsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBWZWN0b3I8RmxvYXRSZWN0PiYgcmVwYWludFJlY3RzID0gcmVwYWludEl0
LT52YWx1ZTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0cy5hcHBlbmQobGFyZ2VzdFJlcGFpbnRS
ZWN0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjp3cml0ZUlu
ZGVudChUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsg
aSAhPSBpbmRlbnQ7ICsraSkKQEAgLTY1OCw3ICs2OTQsMjUgQEAgdm9pZCBHcmFwaGljc0xheWVy
OjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNU
ZXh0QmUKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8
PCAiKHJlcGxpY2F0ZWQgbGF5ZXIiOwogICAgICAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVB
c1RleHREZWJ1ZykKLSAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBtX3JlcGxpY2F0ZWRMYXllcjs7
CisgICAgICAgICAgICB0cyA8PCAiICIgPDwgbV9yZXBsaWNhdGVkTGF5ZXI7CisgICAgICAgIHRz
IDw8ICIpXG4iOworICAgIH0KKworICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dElu
Y2x1ZGVSZXBhaW50UmVjdHMgJiYgcmVwYWludFJlY3RNYXAoKS5jb250YWlucyh0aGlzKSAmJiAh
cmVwYWludFJlY3RNYXAoKS5nZXQodGhpcykuaXNFbXB0eSgpKSB7CisgICAgICAgIHdyaXRlSW5k
ZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIihyZXBhaW50IHJlY3RzXG4iOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMp
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAocmVwYWludFJlY3RNYXAoKS5nZXQodGhp
cylbaV0uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
d3JpdGVJbmRlbnQodHMsIGluZGVudCArIDIpOworICAgICAgICAgICAgdHMgPDwgIihyZWN0ICI7
CisgICAgICAgICAgICB0cyA8PCByZXBhaW50UmVjdE1hcCgpLmdldCh0aGlzKVtpXS54KCkgPDwg
IiAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0ueSgp
IDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ld
LndpZHRoKCkgPDwgIiAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQo
dGhpcylbaV0uaGVpZ2h0KCk7CisgICAgICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgfQor
ICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CiAgICAgICAgIHRzIDw8ICIpXG4i
OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAppbmRleCA1MDg5M2NkZmNlZjRlZmY3NzY4M2FmOTFjNzY1NTYxZWEzN2Nm
YTgzLi5lOTM3Y2E1ZDgzMzUyN2EyN2U2N2QxNjkxODA4ZDIyMmFlMjIyMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC00OCwx
MyArNDgsMTUgQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXll
clRyZWVBc1RleHRCZWhhdmlvck5vcm1hbCA9IDAsCiAgICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcg
PSAxIDw8IDAsIC8vIER1bXAgZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNz
ZXMuCiAgICAgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKLSAg
ICBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMgorICAgIExheWVyVHJl
ZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyLAorICAgIExheWVyVHJlZUFzVGV4dElu
Y2x1ZGVSZXBhaW50UmVjdHMgPSAxIDw8IDMKIH07CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJl
ZUFzVGV4dEJlaGF2aW9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9p
bnQzRDsKK2NsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzTGF5ZXJGYWN0b3J5OwogY2xhc3MgSW1hZ2U7CkBAIC00MDQsNiArNDA2LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKKyAgICB2b2lk
IGFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworCiAjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIC8vIFRoaXMgYWxsb3dzIHNldmVy
YWwgYWx0ZXJuYXRpdmUgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHNhbWUg
cG9ydCwKICAgICAvLyBlLmcuIGlmIGEgZGlmZmVyZW50IEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50
YXRpb24gaXMgbmVlZGVkIGluIFdlYktpdDEgdnMuIFdlYktpdDIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXgg
M2UxMDVjZTZiMzlhZWExYTI5NWVlMWZmMzZjMmYzOWU3MGJlMjZkMi4uMDZmZmI4YTIxZTgwZjQ5
MDViYzExYTZkNzNiMTI0N2RlZTg5MTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtODUsNiArODUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhp
Y3NMYXllciopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVy
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNU
cmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogI2lmbmRlZiBOREVC
VUcKICAgICAvLyBSZW5kZXJMYXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMgdG8gdmVyaWZ5IHRo
YXQgaXQgaXMgbm90CiAgICAgLy8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRlbnRzLiBBbiBBU1NF
UlQgZmFpbHMsIGlmIGl0IGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0Jl
cnJ5LmNwcAppbmRleCBjMWE3MDNhY2QyZmRkODgzZjBhZGY0NTM3MTk0N2U0NzUxZGE2NzBmLi4x
MmZjNjlkZjhjYzk3OTExZTQzY2ZhODkwYjk4NTI1Yjg0NTU1YTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFj
a0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApAQCAtMzc5LDIwICszNzksMjYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7
Ci0gICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAg
ICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIGFkZFJl
cGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckJsYWNrQmVycnk6OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKGRyYXdzQ29udGVudCgp
KQorICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bV9zaXplKSk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChkcmF3
c0NvbnRlbnQoKSkKKyAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgICAgICBhZGRSZXBhaW50UmVjdChyZWN0
KTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYzc2ZjFhNjgzMjNj
ZTVhMWRhMDhiNjkxMzhkZmRmNmZmMTQ1NTE3NS4uOGIxODE1MDQ0ZTk0Y2M0YmU4MzE2YWFhM2Nm
NjI0MmI3ODZiMGU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC02NzAsNiArNjcwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHIp
CiAgICAgICAgIG1fZGlydHlSZWN0c1swXS51bml0ZShyZWN0KTsKIAogICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChEaXJ0eVJlY3RzQ2hhbmdlZCk7CisKKyAgICBhZGRSZXBhaW50UmVjdChy
ZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGRjNDZkYzNlNzUx
MWZkN2U0MDM2Zjk1ZjE1NzViNjMxMGY3ZWIxOTQuLmRmMzM1ZDgxMDJlMTBmNWYxMjAzMDI3Zjgy
ODdkZDg1MDM2NjIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApA
QCAtNDM2LDE0ICs0MzYsMTcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxp
Y2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChXZWJMYXllciog
Y29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXJJZlJlZ2lzdGVyZWQoKSkKKyAgICBpZiAoV2Vi
TGF5ZXIqIGNvbnRlbnRzTGF5ZXIgPSBjb250ZW50c0xheWVySWZSZWdpc3RlcmVkKCkpIHsKICAg
ICAgICAgY29udGVudHNMYXllci0+aW52YWxpZGF0ZSgpOworICAgICAgICBhZGRSZXBhaW50UmVj
dChjb250ZW50c1JlY3QoKSk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAg
ICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworICAgICAgICBhZGRSZXBhaW50UmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpKTsKICAgICAgICAgaWYgKG1fbGlua0hp
Z2hsaWdodCkKICAgICAgICAgICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAg
IH0KQEAgLTQ1Myw2ICs0NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJhd3ND
b250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVj
dCk7CisgICAgICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOwogICAgICAgICBpZiAobV9saW5rSGln
aGxpZ2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9H
cmFwaGljc0xheWVyQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAppbmRleCAxMDRiNzk4MmIwZGEwYzEw
ZmRhM2E4NTVjMmEzMWRiMjczODI3OTYwLi41OGJmMzhkNWIwNGUyZWM4MTMxMjgzYWNkYmJmY2Nh
MWRhZGY2YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
bHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcApAQCAtNjcsMTEg
KzY3LDEzIEBAIENsdXR0ZXJBY3RvciogR3JhcGhpY3NMYXllckNsdXR0ZXI6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5KCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIG1fc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgR3JhcGhpY3NMYXll
ckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggZjA0Y2Y0OWRlZDc3ODkzOTJlY2FkYzAxNWY4NWE4ZDNkNjEyYjk2My4u
NDE4OTdjNjNlODE4NWQ5NmU4NTBjM2FiNjIyZmYyMDliZTkxNjZhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbV9uZWVk
c0Rpc3BsYXkgPSB0cnVlOwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRp
c3BsYXlDaGFuZ2UpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IG1fc2l6ZSkpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTk1LDYgKzk2
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkK
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5
KCkKIHsKICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdl
KTsKKyAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKIC8qIFxyZWltcCAo
R3JhcGhpY3NMYXllci5oKQpAQCAtMTA1LDYgKzEwNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgICAgIHJldHVybjsKICAgICBtX25lZWRzRGlzcGxheVJlY3QudW5pdGUocmVjdCk7CiAg
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisgICAg
YWRkUmVwYWludFJlY3QocmVjdCk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCBmNDc2NmJjYmE2YmM1NTQ4NzZlOWFmYzlhYjRkZGQ2ZWRmZDljODljLi41NTY5MDllOWQyYjBj
M2E0OGJmNzZjZDRhODdmNjZjNzI2MzhjMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTU5Niw2ICsxNTk2LDEyIEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXll
ciopIGNvbnN0CiAgICAgcmV0dXJuIGNvbXBvc2l0b3IoKSA/IGNvbXBvc2l0b3IoKS0+Y29tcG9z
aXRvclNob3dSZXBhaW50Q291bnRlcigpIDogZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCA9IGNvbXBvc2l0b3IoKTsKKyAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50
LT5pc1RyYWNraW5nUmVwYWludHMoKSA6IGZhbHNlOworfQorCiAjaWZuZGVmIE5ERUJVRwogdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnZlcmlmeU5vdFBhaW50aW5nKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA1NDAyZmM0ZGMwYjli
Nzc0NTJhNjg4YzgxMThhN2ZlYzAxMGY2ZWEzLi4yMmZiODg5MDE2ZWRmNWIwYzFhOWNiNWMyNjIx
NzA3Yjc3ZjM5NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oCkBAIC0xNTcsNiArMTU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG93RGVidWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBj
b25zdCBPVkVSUklERTsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5
Tm90UGFpbnRpbmcoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA1YjE5ZjNlMTM3ODEwZWJhZTNiNDZkMmI4
Y2VmNmU5NTYzMTkxYjg0Li42YWEzODUxNWMxMzQ4YmE5YTMyM2NjODE0NTFkMjAxZWYwYjQwMmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMTk0LDYgKzE5NCw3IEBAIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiAgICAgLCBtX2ZsdXNoaW5n
TGF5ZXJzKGZhbHNlKQogICAgICwgbV9zaG91bGRGbHVzaE9uUmVhdHRhY2goZmFsc2UpCiAgICAg
LCBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKQorICAgICwgbV9pc1RyYWNraW5nUmVwYWlu
dHMoZmFsc2UpCiAgICAgLCBtX3Jvb3RMYXllckF0dGFjaG1lbnQoUm9vdExheWVyVW5hdHRhY2hl
ZCkKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgLCBtX3Jvb3RMYXllclVwZGF0ZUNvdW50KDApCkBA
IC0xMTQ5LDEwICsxMTUwLDIyIEBAIFN0cmluZyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVy
VHJlZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZp
b3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0czsKICAgICBpZiAoZmxhZ3Mg
JiBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzKQogICAgICAgICBsYXllclRyZWVCZWhh
dmlvciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlczsKKyAgICBpZiAoZmxhZ3Mg
JiBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMpCisgICAgICAgIGxheWVyVHJlZUJl
aGF2aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50UmVjdHM7CiAKICAgICAvLyBX
ZSBza2lwIGR1bXBpbmcgdGhlIHNjcm9sbCBhbmQgY2xpcCBsYXllcnMgdG8ga2VlcCBsYXllclRy
ZWVBc1RleHQgb3V0cHV0CiAgICAgLy8gc2ltaWxhciBiZXR3ZWVuIHBsYXRmb3Jtcy4KLSAgICBy
ZXR1cm4gbV9yb290Q29udGVudExheWVyLT5sYXllclRyZWVBc1RleHQobGF5ZXJUcmVlQmVoYXZp
b3IpOworICAgIFN0cmluZyBsYXllclRyZWVUZXh0ID0gbV9yb290Q29udGVudExheWVyLT5sYXll
clRyZWVBc1RleHQobGF5ZXJUcmVlQmVoYXZpb3IpOworCisgICAgLy8gVGhlIHRydWUgcm9vdCBs
YXllciBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGR1bXAsIHNvIGlmIHdlIHdhbnQgdG8gcmVwb3J0
CisgICAgLy8gaXRzIHJlcGFpbnQgcmVjdHMsIHRoZXkgbXVzdCBiZSBpbmNsdWRlZCBoZXJlLgor
ICAgIGlmIChmbGFncyAmIExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cykgeworICAg
ICAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dFdpdGhSb290UmVwYWludFJlY3RzID0gbV9yZW5kZXJW
aWV3LT5mcmFtZVZpZXcoKS0+dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgICAgICBs
YXllclRyZWVUZXh0V2l0aFJvb3RSZXBhaW50UmVjdHMuYXBwZW5kKGxheWVyVHJlZVRleHQpOwor
ICAgICAgICByZXR1cm4gbGF5ZXJUcmVlVGV4dFdpdGhSb290UmVwYWludFJlY3RzOworICAgIH0K
KworICAgIHJldHVybiBsYXllclRyZWVUZXh0OwogfQogCiBSZW5kZXJMYXllckNvbXBvc2l0b3Iq
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVDb250ZW50c0NvbXBvc2l0b3IoUmVuZGVyUGFy
dCogcmVuZGVyZXIpCkBAIC0yMDAzLDYgKzIwMTYsMzQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkKICAgICBncmFwaGljc0xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKIH0KIAorc3RhdGljIHZv
aWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIpCit7CisgICAgaWYgKCFncmFwaGljc0xheWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBncmFwaGljc0xheWVyLT5yZXNldFRyYWNrZWRSZXBhaW50cygpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBncmFwaGljc0xheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQor
ICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUoZ3JhcGhpY3NMYXllci0+
Y2hpbGRyZW4oKVtpXSk7CisKKyAgICBpZiAoR3JhcGhpY3NMYXllciogcmVwbGljYUxheWVyID0g
Z3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgICAgIHJlc2V0VHJhY2tlZFJlcGFp
bnRSZWN0c1JlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIq
IG1hc2tMYXllciA9IGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKQorICAgICAgICByZXNldFRy
YWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUobWFza0xheWVyKTsKK30KKwordm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpCit7CisgICAgaWYgKEdy
YXBoaWNzTGF5ZXIqIHJvb3RMYXllciA9IHJvb3RHcmFwaGljc0xheWVyKCkpCisgICAgICAgIHJl
c2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShyb290TGF5ZXIpOworfQorCit2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja3NSZXBhaW50
cykKK3sKKyAgICBtX2lzVHJhY2tpbmdSZXBhaW50cyA9IHRyYWNrc1JlcGFpbnRzOworfQorCiBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGlj
c0xheWVyKiBsYXllcikgY29uc3QKIHsKICAgICBpZiAobGF5ZXIgPT0gbV9sYXllckZvckhvcml6
b250YWxTY3JvbGxiYXIgfHwgbGF5ZXIgPT0gbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyIHx8
IGxheWVyID09IG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIpCkBAIC0yMDE5LDYgKzIwNjAsMTEgQEAg
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFw
aGljc0xheWVyKiBsYXllcikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsKK30KKwogZmxvYXQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMt
PnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaAppbmRleCA4MjZkZjk5MTRkZmQxYTU0ODUxZjcwYWRiYWI4ODliMTYwOTE4OTUxLi5l
NThhYTNhNmNjZDAzNmM4YmMwN2VhMDZjZDIwNmUzYzZjN2UxNWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0yMjgsNiArMjI4
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBkb2N1bWVudEJhY2tncm91bmRDb2xvckRpZENoYW5n
ZSgpOwogCisgICAgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKTsKKyAgICB2b2lkIHNl
dFRyYWNrc1JlcGFpbnRzKGJvb2wpOworCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7
CiAKQEAgLTIzOCw2ICsyNDEsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3dE
ZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0
IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0
IE9WRVJSSURFOwogICAgIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGZsdXNoTGF5ZXJzKEdyYXBoaWNzTGF5ZXJVcGRh
dGVyKikgT1ZFUlJJREU7CkBAIC0zNTIsNiArMzU3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2hvdWxkRmx1c2hPblJlYXR0YWNoOwogICAgIGJvb2wgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZTsK
IAorICAgIGJvb2wgbV9pc1RyYWNraW5nUmVwYWludHM7IC8vIFVzZWQgZm9yIHRlc3RpbmcuCisK
ICAgICBSb290TGF5ZXJBdHRhY2htZW50IG1fcm9vdExheWVyQXR0YWNobWVudDsKIAogICAgIC8v
IEVuY2xvc2luZyBjbGlwcGluZyBsYXllciBmb3IgaWZyYW1lIGNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4MjljZmY1N2M4ODJlZjgxNDZiYmRmZTI5ZDA2MmVl
YjVkYTJjYzU2Li5mMzg4OWM2M2EzZTI3MzlkOTQ2MTBjZjdmOThiNDA2MzhjMTNlYzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjU5LDYgKzEyNTksOCBAQCBTdHJp
bmcgSW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25l
ZCBmbGFncywgRXhjZXB0aW9uQwogICAgICAgICBsYXllclRyZWVGbGFncyB8PSBMYXllclRyZWVG
bGFnc0luY2x1ZGVWaXNpYmxlUmVjdHM7CiAgICAgaWYgKGZsYWdzICYgTEFZRVJfVFJFRV9JTkNM
VURFU19USUxFX0NBQ0hFUykKICAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxh
Z3NJbmNsdWRlVGlsZUNhY2hlczsKKyAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVT
X1JFUEFJTlRfUkVDVFMpCisgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdz
SW5jbHVkZVJlcGFpbnRSZWN0czsKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bGF5
ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IGU4MTI3ODUwMzU5OGJkMjU3NWQ5MzY1YmY1MDRmNWI0OTNiOWZiNGUuLjg2NzU0
NTVlZDQ2ZmY3ZTQxMTE2Y2YyNDFlYmRmMDkwYmE1MTllNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMTkwLDcgKzE5MCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAg
ICAgLy8gVmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4K
ICAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKLSAgICAgICAg
TEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDIKKyAgICAgICAgTEFZRVJfVFJFRV9J
TkNMVURFU19USUxFX0NBQ0hFUyA9IDIsCisgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfUkVQ
QUlOVF9SRUNUUyA9IDQKICAgICAgICAgCiAgICAgfTsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNmVjMWY4MGU5ZTBiNTAyM2FmYzA2
ZjYzOTc0OWUxNWM0MDMyMmE1Li4wYmY2YjgwMjBkMTQxNDhjYmQzZWFkNDAzMGJmNGRjMjFkYjU4
MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTQsNiArMTU0LDcg
QEAKICAgICAvLyBGbGFncyBmb3IgbGF5ZXJUcmVlQXNUZXh0LgogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDE7CiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDI7CisgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTID0g
NDsKICAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50LCBp
biBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGZsYWdzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAKICAgICBET01TdHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJXaWRnZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YldpZGdldC5oCmluZGV4IGM4NDY0MDYyZDI4NWZkNTFhNGU2ZGMyNjM3ZmU4MjM3NGU3NzgyMTku
LmYyYjM5NDQzOTVlYmUzNDZmYTcyOTczNzgxODAyMmU0NDViYTRhMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCkBAIC0xMjcsNiArMTI3LDkgQEAgcHVibGlj
OgogICAgIC8vIGFuaW1hdGUgb3IgbGF5b3V0IGluIHRoaXMgY2FzZS4KICAgICB2aXJ0dWFsIHZv
aWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
d2UndmUgc3RhcnRlZCB0cmFja2luZyByZXBhaW50IHJlY3RhbmdsZXMuCisgICAgdmlydHVhbCBi
b29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAv
LyBJbmRpY2F0ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBXZWJXaWRnZXQgaXMKICAgICAvLyByZWFkeSB0byB1c2UuCiAgICAgdmlydHVhbCB2b2lk
IHNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDgxNWEwYzMwMGU5YWI1MTk2MGNlOTQwZDky
ZGRhMTU2YTk0MGU1OWMuLjFhM2E3N2NmNTRjOTg0MTYxMDE5ZTkxOGUzNTU3NzBlZTU0MjkwODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCkBAIC0z
MDIsNiArMzAyLDkgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0Ojp1cGRhdGVHZW9tZXRyeSgpCiAgICAg
ICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBsYXllciBpZiB0aGUgaGlnaGxp
Z2h0IHNpemUgaGFzIGNoYW5nZWQsIG90aGVyd2lzZQogICAgICAgICAvLyB3ZSBjYW4ganVzdCBy
ZS1wb3NpdGlvbiB0aGUgbGF5ZXIgd2l0aG91dCBuZWVkaW5nIHRvIHJlcGFpbnQuCiAgICAgICAg
IG1fY29udGVudExheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgaWYgKG1f
Y3VycmVudEdyYXBoaWNzTGF5ZXIpCisgICAgICAgICAgICBtX2N1cnJlbnRHcmFwaGljc0xheWVy
LT5hZGRSZXBhaW50UmVjdChGbG9hdFJlY3QobGF5ZXIoKS0+cG9zaXRpb24oKS54LCBsYXllcigp
LT5wb3NpdGlvbigpLnksIGxheWVyKCktPmJvdW5kcygpLndpZHRoLCBsYXllcigpLT5ib3VuZHMo
KS5oZWlnaHQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDIxYjk3MjViMGVhNWQw
MGEwOGJhMzY0MTZlNWI4MDVjMGYzZmViZTEuLjIzZGNkZGU5Yjc5YjQ5ODk1YTJmMjIxYjdiYTUx
MDBhMzZjYzNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMjAxLDQgKzIwMSw5IEBAIGJvb2wgTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0OjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV93ZWJWaWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC5oCmluZGV4IDA4ZTljNjliMmY3Y2ExZjNlNGM4MDBlODkyMjgxOWMyZTk1NmJj
YjQuLjJiNmRkYzFhYWIwMDI2MTVlMmI5MWY3ODlhNjY1ZDQzZjJiNWIwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5o
CkBAIC03Myw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG93
UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdDsKIAogICAgIGJvb2wgaGF2
ZVNjcm9sbExheWVyKCk7CiAgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYTZjYjQ5NGY4MTVmZDczNDgy
ZGZjNGIxNjk0MWQyNWExMTBjMTIyZC4uZjc1MTlkY2Q5MTdjZmIzMDAxODIxZDI4NDNhYjRmNDMz
ODgzZWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtMTgyOSw2ICsxODI5LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNhbnZhcyog
Y2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9wdGlvbnMgb3B0CiAgICAgfQogfQog
Citib29sIFdlYlZpZXdJbXBsOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIGlm
ICghcGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0g
cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIHJldHVybiB2aWV3LT5pc1RyYWNraW5n
UmVwYWludHMoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkKIHsKICAg
ICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmlu
ZGV4IDM1NDg4OWZkZThkMzcwMzY0MGQ1NDIxNzkwZGI3Njc2NjY0MzE4NDQuLjFjN2IyMTQ0NTFj
ZDNlNWU0ZTg5ODM3M2M3NzhlYWQ2N2VkODA0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7IC8vIEFsc28gaW1wbGVtZW50cyBXZWJMYXllclRyZWVWaWV3Q2xpZW50
OjpsYXlvdXQoKQogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZvcmNlQ29tcG9zaXRpbmdNb2RlKGJv
b2wgZW5hYmxlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwg
Y29uc3QgV2ViUmVjdCYsIFBhaW50T3B0aW9ucyA9IFJlYWRiYWNrRnJvbUNvbXBvc2l0b3JJZkF2
YWlsYWJsZSk7CisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRy
YXcoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAzYjUzNTk0M2ZhZjUwN2UxODIyMDY3MzkxNGIzNmUxODA4NDA3NzQ4Li44
NmQ1NTQ2OGY5MWZkOWQ2NmQ5NDNmOWYxZjMwODM1YjRhN2UwZWUyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMTEtMDEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0ZWQgbGF5
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzgw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBo
aWNzTGF5ZXJzIG5vdyBzdG9yZSBpbnZhbGlkYXRlZCByZWN0cyBhbmQgY2FuIGluY2x1ZGUgdGhl
bSBpbgorICAgICAgICB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgICogY29tcG9zaXRp
bmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9u
LWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9j
b21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0xMC0zMSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8
cmFwaGFlbC5rdWJvLmRhLmNvc3RhQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBNb3JlIHVu
cmV2aWV3ZWQgcGl4ZWwgZXhwZWN0YXRpb25zIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxh
eWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFs
aWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAz
NWYyYThiM2I1NTJkZWRmZGM5NWZjNTNhOGM0Mzc2YTA5Yzk0NDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9z
aXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKKyhyZXBhaW50IHJlY3Rz
CisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAw
IDgwMCA0NTApCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDQ1MCkKKyAg
KHJlY3QgMCAwIDgwMCA2MDApCispCisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDgwMC4wMCA2
MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMg
ODAwLjAwIDYwMC4wMCkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVy
CisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgNDIuMDApCisgICAgICAgICAgKGJvdW5kcyA0MDAu
MDAgNDAwLjAwKQorICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAocmVwYWlu
dCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAwLjAwIDQwMC4wMCA0MDAuMDApCisgICAg
ICAgICAgKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgICAgICAocG9zaXRpb24gNTAuMDAgNTAuMDApCisgICAgICAgICAgICAgIChi
b3VuZHMgNzUuMDAgNzUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAg
ICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgICAgICAocmVjdCAwLjAwIDAuMDAg
NzUuMDAgNzUuMDApCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAp
CisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5
ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMt
b24tY29tcG9zaXRlZC1sYXllcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDJmYmM3NjdjNjUwY2I1YTFj
MGE0NzkzNzEzOTkxNjNlNDY1MmE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwK
QEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzwhLS0KK1RoaXMgdGVzdCBjaGVj
a3MgdGhhdCByZXBhaW50IHRlc3Rpbmcgd29ya3Mgd2l0aCBjb21wb3NpdGVkIGxheWVycy4KKy0t
PgorCis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICNwYXJl
bnQgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgpOworICAgICAg
ICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAgICAgIGJhY2tncm91
bmQ6IGJsdWU7CisgICAgfQorCisgICAgI2NoaWxkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVooMHB4KTsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAg
ICBsZWZ0OiA1MHB4OworICAgICAgICB0b3A6IDUwcHg7CisgICAgICAgIHdpZHRoOiA3NXB4Owor
ICAgICAgICBoZWlnaHQ6IDc1cHg7CisgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIH0K
KworICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlm
ICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgYWxlcnQoJ1RoaXMgdGVzdCBy
ZXF1aXJlcyB0ZXN0UnVubmVyIHRvIHJ1biEnKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgIH0KKworICAgICAgICAgIGlmICghd2luZG93LmludGVybmFscykgeworICAgICAgICAg
ICAgICBhbGVydCgnVGhpcyB0ZXN0IHJlcXVpcmVzIHdpbmRvdy5pbnRlcmFscyB0byBydW4hJyk7
CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoZmFsc2UpOworCisgICAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQnKTsKKyAgICAgICAgICB2YXIgY2hpbGQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY2hpbGQnKTsKKworICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c3RhcnRUcmFja2luZ1JlcGFpbnRzKGRvY3VtZW50KTsKKworICAgICAgICAgIGNoaWxkLnN0eWxl
LmJhY2tncm91bmQgPSAnYmx1ZSc7CisgICAgICAgICAgcGFyZW50LnN0eWxlLmJhY2tncm91bmQg
PSAnZ3JlZW4nOworCisgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGV4dCcpOworICAgICAgICAgIHRleHQuaW5uZXJIVE1MID0gJ1RoaXMgdGV4dCB3aWxsIGJl
IHJlcGxhY2VkIHdpdGggdGhlIGxheWVyIHRyZWUnOworCisgICAgICAgICAgLy8gRm9yY2UgYSBz
dHlsZSByZWNhbGMuCisgICAgICAgICAgdmFyIGR1bW15ID0gY2hpbGQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgdmFyIGxheWVyVHJlZVRleHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFz
VGV4dChkb2N1bWVudCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNU
Uyk7CisKKyAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKGRv
Y3VtZW50KTsKKworICAgICAgICAgIHRleHQuaW5uZXJIVE1MID0gbGF5ZXJUcmVlVGV4dDsKKyAg
ICAgIH0pOworICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cHJlIGlkPSJ0ZXh0Ij48
L3ByZT4KKyAgPGRpdiBpZD0icGFyZW50Ij4KKyAgICA8ZGl2IGlkPSJjaGlsZCI+PC9kaXY+Cisg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxh
eWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcv
cmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMThmOWRlM2Y3ODBmZWQ2NmM0MTViYzVjOThmNTQ5MzI4NzM0OTU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzNyBAQAorKHJlcGFpbnQgcmVjdHMKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0
IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDQ0OSkKKyAgKHJlY3QgMCAwIDgwMCA2MDAp
CisgIChyZWN0IDAgMCA4MDAgNDQ5KQorICAocmVjdCAwIDAgODAwIDYwMCkKKykKKyhHcmFwaGlj
c0xheWVyCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNoaWxkcmVu
IDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCA0MS4w
MCkKKyAgICAgICAgICAoYm91bmRzIDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKGRyYXdzQ29u
dGVudCAxKQorICAgICAgICAgIChyZXBhaW50IHJlY3RzCisgICAgICAgICAgICAocmVjdCAwLjAw
IDAuMDAgNDAwLjAwIDQwMC4wMCkKKyAgICAgICAgICApCisgICAgICAgICAgKGNoaWxkcmVuIDEK
KyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiA1MC4w
MCA1MC4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyA3NS4wMCA3NS4wMCkKKyAgICAgICAgICAg
ICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAg
ICAgICAgICAgIChyZWN0IDAuMDAgMC4wMCA3NS4wMCA3NS4wMCkKKyAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAg
KQorKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171917</attachid>
            <date>2012-11-01 13:31:02 -0700</date>
            <delta_ts>2012-11-02 12:13:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97801-20121101162923.patch</filename>
            <type>text/plain</type>
            <size>37166</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhNGYzMjEwYTE5OTAy
N2QyNDAxOTliZWM2NTk5ODA0NDIzYTdiOS4uODBhMjhhYWIyN2VhMjg3OWRlOWFlYzNhZGE3ZGFh
ZGJhOWQ1YTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTExLTAxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xheWVycyBub3cgc3RvcmUgaW52
YWxpZGF0ZWQgcmVjdHMgYW5kIGNhbiBpbmNsdWRlIHRoZW0gaW4KKyAgICAgICAgdGhlIGxheWVy
IHRyZWUgZHVtcC4KKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRh
dGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICAgRXhwb3J0cyBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKCkK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnNldFRyYWNrc1JlcGFpbnRzKToKKyAgICAgICAgICBOb3RpZmllcyBlYWNoIGNvbXBvc2l0
b3IgdGhhdCB3ZSBhcmUgc3RhcnRpbmcvc3RvcHBpbmcgcmVwYWludHMuCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKToKKyAgICAgICAgICBNb3ZlZCBp
bXBsZW1lbnRhdGlvbiB0byB0aGUgY3BwIGZpbGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjp+
R3JhcGhpY3NMYXllcik6CisgICAgICAgICAgQ2xlYXJzIHRoZSByZXBhaW50IHJlY3RzIGFzc29j
aWF0ZWQgd2l0aCB0aGlzIGxheWVyLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
cmVzZXRUcmFja2VkUmVwYWludHMpOgorICAgICAgICAgIENsZWFycyB0aGUgcmVwYWludCByZWN0
cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXllci4KKyAgICAgICAgICBOb3RlIHRoYXQgdGhlIHJl
cGFpbnQgcmVjdHMgYXJlIHN0b3JlZCBpbiBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkCisgICAgICAg
ICAgSGFzaE1hcCB0byBhdm9pZCB1c2luZyBzcGFjZSBvbiB0aGUgZ3JhcGhpY3MgbGF5ZXJzLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QpOgorICAgICAg
ICAgIEFkZHMgYSByZXBhaW50IHJlY3QgdG8gbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYXll
ciBpbiB0aGUKKyAgICAgICAgICBoYXNoIG1hcCBtZW50aW9uZWQgYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICAgVGhpcyBo
YXMgYmVlbiBtb2RpZmllZCB0byBpbmNsdWRlIHRoZSByZXBhaW50IHJlY3RzIGluIHRoZSBkdW1w
CisgICAgICAgICAgaWYgdGhleSd2ZSBiZWVuIHJlcXVlc3RlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2xpZW50Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAgIFRoaXMgaXMg
aG93IGdyYXBoaWNzIGxheWVycyBjaGVjayBpZiByZXBhaW50IHRyYWNraW5nIGlzIGhhcHBlbmlu
Zy4KKyAgICAgICAgICBSZXR1cm5zIGZhbHNlIGJ5IGRlZmF1bHQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0Q29udGVudHNOZWVkc0Rp
c3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldE5l
ZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgICBUaGVzZSBub3cgY2FsbCBHcmFwaGlj
c0xheWVyOjphZGRSZXBhaW50UmVjdCBhcyBuZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgICBOb3cgY2FsbHMg
R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNE
aXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgICBUaGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVy
OjphZGRSZXBhaW50UmVjdCBhcyBuZWNlc3NhcnkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAg
IFRoZXNlIG5vdyBjYWxsIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2Fy
eS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAg
ICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QgYXMgbmVj
ZXNzYXJ5LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjppc1RyYWNraW5nUmVwYWludHMpOgor
ICAgICAgICAgIFJlcXVpcmVkIHNpbmNlIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBc1RleHQpOgorICAgICAg
ICAgIE5vdyBhY2NlcHRzIGEgZmxhZyB0byBpbmNsdWRlIHRoZSByZXBhaW50IHJlY3RzIGluIHRo
ZSBsYXllciB0cmVlCisgICAgICAgICAgZHVtcC4KKyAgICAgICAgKFdlYkNvcmU6OnJlc2V0VHJh
Y2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZSk6CisgICAgICAgICAgQ2xlYXJzIHRoZSByZXBhaW50
IHJlY3RzIG9uIGFsbCBncmFwaGljcyBsYXllcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cyk6CisgICAgICAgICAgQ2xl
YXJzIHRoZSByZXBhaW50IHJlY3RzIG9uIGFsbCBncmFwaGljcyBsYXllcnMuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzVHJhY2tpbmdSZXBhaW50cyk6CisgICAg
ICAgICAgUmVxdWlyZWQgc2luY2UgdGhpcyBpcyBhIEdyYXBoaWNzTGF5ZXJDbGllbnQuCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpsYXllclRyZWVBc1RleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAgIFRoZSBpbnRlcm5hbHMgY2hh
bmdlcyBwbHVtYiB0aGUgbmV3IGZsYWcgZm9yIGluY2x1ZGluZyB0aGUgcmVwYWludAorICAgICAg
ICAgIHJlY3RzIGluIHRoZSBsYXllciB0cmVlIGR1bXAuCisKIDIwMTItMTAtMzEgIElhbiBWb2xs
aWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRl
eHQtYmFzZWQgcmVwYWludCB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA4
YjVkMGNmM2M5YmU1ODhlMDc0OGNhOGY0ZGQ2OWFiYTYyMTAyNzEuLjUzYzMwYmRjY2E4MzU3NmMz
MWZiMDcwYTIyNTFhODgxNDIyZDY0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTItMTEtMDEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0
ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdyYXBoaWNzTGF5ZXJzIG5vdyBzdG9yZSBpbnZhbGlkYXRlZCByZWN0cyBhbmQgY2FuIGluY2x1
ZGUgdGhlbSBpbgorICAgICAgICB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAgIChXZWJL
aXQ6OldlYldpZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgICBVc2VkIGJ5IHRo
ZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSB0cmFja2lu
ZworICAgICAgICAgIHJlcGFpbnQgcmVjdHMuCisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6
aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpbmtIaWdobGlnaHQ6OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAg
ICBOb3cgY2FsbHMgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3Qgd2hlbiBpbnZhbGlkYXRl
ZC4KKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWludHMpOgor
ICAgICAgICAgIFJlcXVpcmVkIGFzIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50LgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIFdlYldp
ZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzLgorCiAyMDEyLTEwLTMxICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgY29kZSB0byBoaWRlL3Jlc2hvdyB0
ZXh0IGNhcmV0IGZvciBQYWdlUG9wdXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDEyNzAyNWIy
ODg5NzA0ZWU0Yzc5NzFlZWNkMzlmOGE1ZDg3MTY5YzUuLjk1M2VlYjY0ZGQ3ODY3NzJlMWIyM2M2
NDYyYjBmODQwNWFhZWI4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNzIsNiArMjcyLDcg
QEAgX19aTjdXZWJDb3JlMTRMb2FkZXJTdHJhdGVneTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYK
IF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMHBsdWdpbk5vZGVFdgogX19aTks3V2ViQ29y
ZTVGcmFtZTI1dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dEV2CiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MTdzZXRUcmFja3NSZXBhaW50c0ViCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZXNldFRy
YWNrZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmUxNFBsdWdpbkRvY3VtZW50MTJwbHVnaW5XaWRn
ZXRFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjEyY3JlYXRlTlNEYXRhRXYKIF9fWk43
V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXJEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggYTQyNzk4YzU3
Zjg3NGNhMjE3ODg3OWJhYWRmMDYyNTA4ODY1ZGY3Ni4uOWM4NzRhYjg4Y2EyZjYyNmQyNWUxMDgz
YWY3MjBmMGMzYWI3YTU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNzksNyArNzksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgZW51bSB7CiAgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVk
ZURlYnVnSW5mbyA9IDEgPDwgMCwKICAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVmlzaWJs
ZVJlY3RzID0gMSA8PCAxLAotICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVz
ID0gMSA8PCAyCisgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8
IDIsCisgICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cyA9IDEgPDwgMwog
ICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM4ZjljYjIxM2QxNmNkNzkyMTVjNTI1OWRkYWRkYWY0N2Iz
OTUzNGYuLjEyM2NkMjY3OTYwM2M5MjAwOGMyOTU2ZmViMGM2YWE3NGI1OWYyNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM2NDAsMTEgKzM2NDAsMjkgQEAgdm9pZCBGcmFtZVZp
ZXc6OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJhY2tSZXBhaW50cykKIHsKICAgICBpZiAodHJh
Y2tSZXBhaW50cyA9PSBtX2lzVHJhY2tpbmdSZXBhaW50cykKICAgICAgICAgcmV0dXJuOwotICAg
IAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbV9mcmFtZS0+dHJlZSgpLT50b3AoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICByZW5kZXJWaWV3LT5jb21w
b3NpdG9yKCktPnNldFRyYWNrc1JlcGFpbnRzKHRyYWNrUmVwYWludHMpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKICAgICBtX2lzVHJhY2tpbmdSZXBhaW50
cyA9IHRyYWNrUmVwYWludHM7CiB9CiAKK3ZvaWQgRnJhbWVWaWV3OjpyZXNldFRyYWNrZWRSZXBh
aW50cygpCit7CisgICAgbV90cmFja2VkUmVwYWludFJlY3RzLmNsZWFyKCk7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gcm9vdFJl
bmRlcmVyKHRoaXMpKSB7CisgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9zaXRv
ciA9IHJvb3QtPmNvbXBvc2l0b3IoKTsKKyAgICAgICAgY29tcG9zaXRvci0+cmVzZXRUcmFja2Vk
UmVwYWludFJlY3RzKCk7CisgICAgfQorI2VuZGlmCit9CisKIFN0cmluZyBGcmFtZVZpZXc6OnRy
YWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gdHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAyZjQ2ZWFkMjg1NTQzNGRlYjNkYTBmYWNjMWRmNjAw
OTZlMjIwZWQyLi41NDVlMjJiZGY0YjdkZGRkYzM5NzQyZjU4YmJkODE3MWNlMGM1ODQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTMzOCw3ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdm9pZCBzZXRUcmFja3NSZXBhaW50cyhib29sKTsKICAgICBib29sIGlzVHJhY2tpbmdSZXBh
aW50cygpIGNvbnN0IHsgcmV0dXJuIG1faXNUcmFja2luZ1JlcGFpbnRzOyB9Ci0gICAgdm9pZCBy
ZXNldFRyYWNrZWRSZXBhaW50cygpIHsgbV90cmFja2VkUmVwYWludFJlY3RzLmNsZWFyKCk7IH0K
KyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRzKCk7CiAgICAgY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiB0cmFja2VkUmVwYWludFJlY3RzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja2VkUmVwYWlu
dFJlY3RzOyB9CiAgICAgU3RyaW5nIHRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcAppbmRleCBjNGNjMDg1OWYyYzM4MzdlZGViMWQwNmY1ODlkZmI1MzRkM2U3ZDRkLi5kZjYy
N2Y4NWI5NGY1NWIxYWMwZjQ5Y2M5MWZlZjIyZDZlNzYwMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzAsMTAgKzMw
LDEyIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogCiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkxheW91dFR5cGVzSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIlJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC00NCw2ICs0NiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFj
ZSB7CisKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCBHcmFwaGljc0xheWVyKiwgVmVjdG9yPEZsb2F0
UmVjdD4gPiBSZXBhaW50TWFwOworc3RhdGljIFJlcGFpbnRNYXAmIHJlcGFpbnRSZWN0TWFwKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlcGFpbnRNYXAsIG1hcCwgKCkpOworICAgIHJl
dHVybiBtYXA7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKIHZvaWQgS2V5ZnJhbWVWYWx1ZUxpc3Q6
Omluc2VydChjb25zdCBBbmltYXRpb25WYWx1ZSogdmFsdWUpCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7ICsraSkgewpAQCAtOTYsNiArMTA5LDcgQEAgR3Jh
cGhpY3NMYXllcjo6R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAK
IEdyYXBoaWNzTGF5ZXI6On5HcmFwaGljc0xheWVyKCkKIHsKKyAgICByZXNldFRyYWNrZWRSZXBh
aW50cygpOwogICAgIEFTU0VSVCghbV9wYXJlbnQpOyAvLyB3aWxsQmVEZXN0cm95ZWQgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgYWxyZWFkeS4KIH0KIApAQCAtNTM2LDYgKzU1MCwyOCBAQCBkb3Vi
bGUgR3JhcGhpY3NMYXllcjo6YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSBjb25zdAogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KDQgKiBzaXplKCkud2lkdGgoKSkgKiBzaXplKCku
aGVpZ2h0KCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllcjo6cmVzZXRUcmFja2VkUmVwYWludHMo
KQoreworICAgIHJlcGFpbnRSZWN0TWFwKCkucmVtb3ZlKHRoaXMpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QpCit7
CisgICAgaWYgKG1fY2xpZW50LT5pc1RyYWNraW5nUmVwYWludHMoKSkgeworICAgICAgICBGbG9h
dFJlY3QgbGFyZ2VzdFJlcGFpbnRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKKyAgICAgICAg
bGFyZ2VzdFJlcGFpbnRSZWN0LmludGVyc2VjdChyZXBhaW50UmVjdCk7CisgICAgICAgIFJlcGFp
bnRNYXA6Oml0ZXJhdG9yIHJlcGFpbnRJdCA9IHJlcGFpbnRSZWN0TWFwKCkuZmluZCh0aGlzKTsK
KyAgICAgICAgaWYgKHJlcGFpbnRJdCA9PSByZXBhaW50UmVjdE1hcCgpLmVuZCgpKSB7CisgICAg
ICAgICAgICBWZWN0b3I8RmxvYXRSZWN0PiByZXBhaW50UmVjdHM7CisgICAgICAgICAgICByZXBh
aW50UmVjdHMuYXBwZW5kKGxhcmdlc3RSZXBhaW50UmVjdCk7CisgICAgICAgICAgICByZXBhaW50
UmVjdE1hcCgpLnNldCh0aGlzLCByZXBhaW50UmVjdHMpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgVmVjdG9yPEZsb2F0UmVjdD4mIHJlcGFpbnRSZWN0cyA9IHJlcGFpbnRJdC0+dmFs
dWU7CisgICAgICAgICAgICByZXBhaW50UmVjdHMuYXBwZW5kKGxhcmdlc3RSZXBhaW50UmVjdCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgR3JhcGhpY3NMYXllcjo6d3JpdGVJbmRlbnQo
VGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpCiB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0g
aW5kZW50OyArK2kpCkBAIC02NTgsNyArNjk0LDI1IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZHVt
cFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJl
CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgdHMgPDwgIihy
ZXBsaWNhdGVkIGxheWVyIjsKICAgICAgICAgaWYgKGJlaGF2aW9yICYgTGF5ZXJUcmVlQXNUZXh0
RGVidWcpCi0gICAgICAgICAgICB0cyA8PCAiICIgPDwgbV9yZXBsaWNhdGVkTGF5ZXI7OworICAg
ICAgICAgICAgdHMgPDwgIiAiIDw8IG1fcmVwbGljYXRlZExheWVyOworICAgICAgICB0cyA8PCAi
KVxuIjsKKyAgICB9CisKKyAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNsdWRl
UmVwYWludFJlY3RzICYmIHJlcGFpbnRSZWN0TWFwKCkuY29udGFpbnModGhpcykgJiYgIXJlcGFp
bnRSZWN0TWFwKCkuZ2V0KHRoaXMpLmlzRW1wdHkoKSkgeworICAgICAgICB3cml0ZUluZGVudCh0
cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8ICIocmVwYWludCByZWN0c1xuIjsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXBhaW50UmVjdE1hcCgpLmdldCh0aGlzKS5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ld
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHdyaXRl
SW5kZW50KHRzLCBpbmRlbnQgKyAyKTsKKyAgICAgICAgICAgIHRzIDw8ICIocmVjdCAiOworICAg
ICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0ueCgpIDw8ICIgIjsK
KyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ldLnkoKSA8PCAi
ICI7CisgICAgICAgICAgICB0cyA8PCByZXBhaW50UmVjdE1hcCgpLmdldCh0aGlzKVtpXS53aWR0
aCgpIDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMp
W2ldLmhlaWdodCgpOworICAgICAgICAgICAgdHMgPDwgIilcbiI7CisgICAgICAgIH0KKyAgICAg
ICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8PCAiKVxuIjsKICAg
ICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKaW5kZXggNTA4OTNjZGZjZWY0ZWZmNzc2ODNhZjkxYzc2NTU2MWVhMzdjZmE4My4u
ZTkzN2NhNWQ4MzM1MjdhMjdlNjdkMTY5MTgwOGQyMjJhZTIyMjJiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtNDgsMTMgKzQ4
LDE1IEBAIGVudW0gTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3JGbGFncyB7CiAgICAgTGF5ZXJUcmVl
QXNUZXh0QmVoYXZpb3JOb3JtYWwgPSAwLAogICAgIExheWVyVHJlZUFzVGV4dERlYnVnID0gMSA8
PCAwLCAvLyBEdW1wIGV4dHJhIGRlYnVnZ2luZyBpbmZvIGxpa2UgbGF5ZXIgYWRkcmVzc2VzLgog
ICAgIExheWVyVHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDEsCi0gICAgTGF5
ZXJUcmVlQXNUZXh0SW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIKKyAgICBMYXllclRyZWVBc1Rl
eHRJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMiwKKyAgICBMYXllclRyZWVBc1RleHRJbmNsdWRl
UmVwYWludFJlY3RzID0gMSA8PCAzCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVBc1Rl
eHRCZWhhdmlvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50M0Q7
CitjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGlj
c0xheWVyRmFjdG9yeTsKIGNsYXNzIEltYWdlOwpAQCAtNDA0LDYgKzQwNiw5IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAKKyAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRzKCk7CisgICAgdm9pZCBhZGRS
ZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKwogI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICAvLyBUaGlzIGFsbG93cyBzZXZlcmFsIGFs
dGVybmF0aXZlIEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBzYW1lIHBvcnQs
CiAgICAgLy8gZS5nLiBpZiBhIGRpZmZlcmVudCBHcmFwaGljc0xheWVyIGltcGxlbWVudGF0aW9u
IGlzIG5lZWRlZCBpbiBXZWJLaXQxIHZzLiBXZWJLaXQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCmluZGV4IDNlMTA1
Y2U2YjM5YWVhMWEyOTVlZTFmZjM2YzJmMzllNzBiZTI2ZDIuLjA2ZmZiOGEyMWU4MGY0OTA1YmMx
MWE2ZDczYjEyNDdkZWU4OTE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKQEAgLTg1LDYgKzg1LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25z
dCBHcmFwaGljc0xheWVyKikgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tp
bmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICNpZm5kZWYgTkRFQlVHCiAg
ICAgLy8gUmVuZGVyTGF5ZXJCYWNraW5nIG92ZXJyaWRlcyB0aGlzIHRvIHZlcmlmeSB0aGF0IGl0
IGlzIG5vdAogICAgIC8vIGN1cnJlbnRseSBwYWludGluZyBjb250ZW50cy4gQW4gQVNTRVJUIGZh
aWxzLCBpZiBpdCBpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5j
cHAKaW5kZXggYzFhNzAzYWNkMmZkZDg4M2YwYWRmNDUzNzE5NDdlNDc1MWRhNjcwZi4uMTJmYzY5
ZGY4Y2M5NzkxMWU0M2NmYTg5MGI5ODUyNWI4NDU1NWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9H
cmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAKQEAgLTM3OSwyMCArMzc5LDI2IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckJsYWNrQmVycnk6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKIAogdm9pZCBH
cmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBhZGRSZXBhaW50
UmVjdChjb250ZW50c1JlY3QoKSk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFj
a0JlcnJ5OjpzZXROZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChkcmF3c0NvbnRlbnQoKSkKKyAg
ICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5
KCk7CisgICAgICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6
ZSkpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoZHJhd3NDb250
ZW50KCkpCisgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1fbGF5ZXItPnNldE5l
ZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QocmVjdCk7Cisg
ICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c1JlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGM3NmYxYTY4MzIzY2U1YTFk
YTA4YjY5MTM4ZGZkZjZmZjE0NTUxNzUuLjhiMTgxNTA0NGU5NGNjNGJlODMxNmFhYTNjZjYyNDJi
Nzg2YjBlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtNjcwLDYgKzY3MCw4IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByKQogICAg
ICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7CiAKICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOworCisgICAgYWRkUmVwYWludFJlY3QocmVjdCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCBkYzQ2ZGMzZTc1MTFmZDdl
NDAzNmY5NWYxNTc1YjYzMTBmN2ViMTk0Li5kZjMzNWQ4MTAyZTEwZjVmMTIwMzAyN2Y4Mjg3ZGQ4
NTAzNjYyMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQz
NiwxNCArNDM2LDE3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVk
QnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIGNvbnRl
bnRzTGF5ZXIgPSBjb250ZW50c0xheWVySWZSZWdpc3RlcmVkKCkpCisgICAgaWYgKFdlYkxheWVy
KiBjb250ZW50c0xheWVyID0gY29udGVudHNMYXllcklmUmVnaXN0ZXJlZCgpKSB7CiAgICAgICAg
IGNvbnRlbnRzTGF5ZXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoY29u
dGVudHNSZWN0KCkpOworICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dE5lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIG1f
bGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9zaXplKSk7CiAgICAgICAgIGlmIChtX2xpbmtIaWdobGln
aHQpCiAgICAgICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmludmFsaWRhdGUoKTsKICAgICB9CkBA
IC00NTMsNiArNDU2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlz
cGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVu
dCgpKSB7CiAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRhdGVSZWN0KHJlY3QpOwor
ICAgICAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKICAgICAgICAgaWYgKG1fbGlua0hpZ2hsaWdo
dCkKICAgICAgICAgICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhp
Y3NMYXllckNsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAKaW5kZXggMTA0Yjc5ODJiMGRhMGMxMGZkYTNh
ODU1YzJhMzFkYjI3MzgyNzk2MC4uNThiZjM4ZDViMDRlMmVjODEzMTI4M2FjZGJiZmNjYTFkYWRm
NmFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAKQEAgLTY3LDExICs2Nywx
MyBAQCBDbHV0dGVyQWN0b3IqIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBtX3NpemUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0
dGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgYWRkUmVwYWludFJlY3QocmVjdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IGYwNGNmNDlkZWQ3Nzg5MzkyZWNhZGMwMTVmODVhOGQzZDYxMmI5NjMuLjQxODk3
YzYzZTgxODVkOTZlODUwYzNhYjYyMmZmMjA5YmU5MTY2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtODgsNiArODgsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXkoKQogewogICAgIG1fbmVlZHNEaXNw
bGF5ID0gdHJ1ZTsKICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5
Q2hhbmdlKTsKKyAgICBhZGRSZXBhaW50UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3Np
emUpKTsKIH0KIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCkBAIC05NSw2ICs5Niw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7
CiAgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7Cisg
ICAgYWRkUmVwYWludFJlY3QoY29udGVudHNSZWN0KCkpOwogfQogCiAvKiBccmVpbXAgKEdyYXBo
aWNzTGF5ZXIuaCkKQEAgLTEwNSw2ICsxMDcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
ICAgICByZXR1cm47CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0LnVuaXRlKHJlY3QpOwogICAgIG5v
dGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRpc3BsYXlDaGFuZ2UpOworICAgIGFkZFJl
cGFpbnRSZWN0KHJlY3QpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZjQ3
NjZiY2JhNmJjNTU0ODc2ZTlhZmM5YWI0ZGRkNmVkZmQ5Yzg5Yy4uNTU2OTA5ZTlkMmIwYzNhNDhi
Zjc2Y2Q0YTg3ZjY2YzcyNjM4YzFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE1OTYsNiArMTU5NiwxMiBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdAogICAgIHJldHVybiBjb21wb3NpdG9yKCkgPyBjb21wb3NpdG9yKCktPmNvbXBvc2l0b3JT
aG93UmVwYWludENvdW50ZXIoKSA6IGZhbHNlOwogfQogCitib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBHcmFwaGljc0xheWVyQ2xpZW50
KiBjbGllbnQgPSBjb21wb3NpdG9yKCk7CisgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+aXNU
cmFja2luZ1JlcGFpbnRzKCkgOiBmYWxzZTsKK30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp2ZXJpZnlOb3RQYWludGluZygpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggNTQwMmZjNGRjMGI5Yjc3NDUy
YTY4OGM4MTE4YTdmZWMwMTBmNmVhMy4uMjJmYjg4OTAxNmVkZjViMGMxYTljYjVjMjYyMTcwN2I3
N2YzOTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaApAQCAtMTU3LDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0Rl
YnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qg
T1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Qg
T1ZFUlJJREU7CisKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIHZlcmlmeU5vdFBh
aW50aW5nKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNWIxOWYzZTEzNzgxMGViYWUzYjQ2ZDJiOGNlZjZl
OTU2MzE5MWI4NC4uNmFhMzg1MTVjMTM0OGJhOWEzMjNjYzgxNDUxZDIwMWVmMGI0MDJmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTE5NCw2ICsxOTQsNyBAQCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRlckxheWVy
Q29tcG9zaXRvcihSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogICAgICwgbV9mbHVzaGluZ0xheWVy
cyhmYWxzZSkKICAgICAsIG1fc2hvdWxkRmx1c2hPblJlYXR0YWNoKGZhbHNlKQogICAgICwgbV9m
b3JjZUNvbXBvc2l0aW5nTW9kZShmYWxzZSkKKyAgICAsIG1faXNUcmFja2luZ1JlcGFpbnRzKGZh
bHNlKQogICAgICwgbV9yb290TGF5ZXJBdHRhY2htZW50KFJvb3RMYXllclVuYXR0YWNoZWQpCiAj
aWYgIUxPR19ESVNBQkxFRAogICAgICwgbV9yb290TGF5ZXJVcGRhdGVDb3VudCgwKQpAQCAtMTE0
OSwxMCArMTE1MCwyMiBAQCBTdHJpbmcgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVB
c1RleHQoTGF5ZXJUcmVlRmxhZ3MgZmxhZ3MpCiAgICAgICAgIGxheWVyVHJlZUJlaGF2aW9yIHw9
IExheWVyVHJlZUFzVGV4dEluY2x1ZGVWaXNpYmxlUmVjdHM7CiAgICAgaWYgKGZsYWdzICYgTGF5
ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNhY2hlcykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZpb3Ig
fD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVRpbGVDYWNoZXM7CisgICAgaWYgKGZsYWdzICYgTGF5
ZXJUcmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3RzKQorICAgICAgICBsYXllclRyZWVCZWhhdmlv
ciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlUmVwYWludFJlY3RzOwogCiAgICAgLy8gV2Ugc2tp
cCBkdW1waW5nIHRoZSBzY3JvbGwgYW5kIGNsaXAgbGF5ZXJzIHRvIGtlZXAgbGF5ZXJUcmVlQXNU
ZXh0IG91dHB1dAogICAgIC8vIHNpbWlsYXIgYmV0d2VlbiBwbGF0Zm9ybXMuCi0gICAgcmV0dXJu
IG1fcm9vdENvbnRlbnRMYXllci0+bGF5ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUJlaGF2aW9yKTsK
KyAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dCA9IG1fcm9vdENvbnRlbnRMYXllci0+bGF5ZXJUcmVl
QXNUZXh0KGxheWVyVHJlZUJlaGF2aW9yKTsKKworICAgIC8vIFRoZSB0cnVlIHJvb3QgbGF5ZXIg
aXMgbm90IGluY2x1ZGVkIGluIHRoZSBkdW1wLCBzbyBpZiB3ZSB3YW50IHRvIHJlcG9ydAorICAg
IC8vIGl0cyByZXBhaW50IHJlY3RzLCB0aGV5IG11c3QgYmUgaW5jbHVkZWQgaGVyZS4KKyAgICBp
ZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMpIHsKKyAgICAgICAg
U3RyaW5nIGxheWVyVHJlZVRleHRXaXRoUm9vdFJlcGFpbnRSZWN0cyA9IG1fcmVuZGVyVmlldy0+
ZnJhbWVWaWV3KCktPnRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKTsKKyAgICAgICAgbGF5ZXJU
cmVlVGV4dFdpdGhSb290UmVwYWludFJlY3RzLmFwcGVuZChsYXllclRyZWVUZXh0KTsKKyAgICAg
ICAgcmV0dXJuIGxheWVyVHJlZVRleHRXaXRoUm9vdFJlcGFpbnRSZWN0czsKKyAgICB9CisKKyAg
ICByZXR1cm4gbGF5ZXJUcmVlVGV4dDsKIH0KIAogUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lQ29udGVudHNDb21wb3NpdG9yKFJlbmRlclBhcnQqIHJl
bmRlcmVyKQpAQCAtMjAwMyw2ICsyMDE2LDM0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojpkb2N1bWVudEJhY2tncm91bmRDb2xvckRpZENoYW5nZSgpCiAgICAgZ3JhcGhpY3NMYXllci0+
c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CiB9CiAKK3N0YXRpYyB2b2lkIHJl
c2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyKQoreworICAgIGlmICghZ3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
Z3JhcGhpY3NMYXllci0+cmVzZXRUcmFja2VkUmVwYWludHMoKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAg
ICAgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXItPmNoaWxk
cmVuKClbaV0pOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FMYXllciA9IGdyYXBo
aWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKQorICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVj
dHNSZWN1cnNpdmUocmVwbGljYUxheWVyKTsKKworICAgIGlmIChHcmFwaGljc0xheWVyKiBtYXNr
TGF5ZXIgPSBncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSkKKyAgICAgICAgcmVzZXRUcmFja2Vk
UmVwYWludFJlY3RzUmVjdXJzaXZlKG1hc2tMYXllcik7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKQoreworICAgIGlmIChHcmFwaGlj
c0xheWVyKiByb290TGF5ZXIgPSByb290R3JhcGhpY3NMYXllcigpKQorICAgICAgICByZXNldFRy
YWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUocm9vdExheWVyKTsKK30KKwordm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJhY2tzUmVwYWludHMpCit7
CisgICAgbV9pc1RyYWNraW5nUmVwYWludHMgPSB0cmFja3NSZXBhaW50czsKK30KKwogYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXll
ciogbGF5ZXIpIGNvbnN0CiB7CiAgICAgaWYgKGxheWVyID09IG1fbGF5ZXJGb3JIb3Jpem9udGFs
U2Nyb2xsYmFyIHx8IGxheWVyID09IG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciB8fCBsYXll
ciA9PSBtX2xheWVyRm9yU2Nyb2xsQ29ybmVyKQpAQCAtMjAxOSw2ICsyMDYwLDExIEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NM
YXllciogbGF5ZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pc1RyYWNraW5nUmVwYWludHM7Cit9CisKIGZsb2F0IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgKaW5kZXggODI2ZGY5OTE0ZGZkMWE1NDg1MWY3MGFkYmFiODg5YjE2MDkxODk1MS4uZTU4YWEz
YTZjY2QwMzZjOGJjMDdlYTA2Y2QyMDZlM2M2YzdlMTVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjI4LDYgKzIyOCw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoKTsK
IAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCk7CisgICAgdm9pZCBzZXRUcmFj
a3NSZXBhaW50cyhib29sKTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBPdmVybGFwTWFwOwogCkBA
IC0yMzgsNiArMjQxLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdC
b3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVS
UklERTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBPVkVS
UklERTsKICAgICAKICAgICAvLyBHcmFwaGljc0xheWVyVXBkYXRlckNsaWVudCBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVycyhHcmFwaGljc0xheWVyVXBkYXRlciop
IE9WRVJSSURFOwpAQCAtMzUyLDYgKzM1Nyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3Vs
ZEZsdXNoT25SZWF0dGFjaDsKICAgICBib29sIG1fZm9yY2VDb21wb3NpdGluZ01vZGU7CiAKKyAg
ICBib29sIG1faXNUcmFja2luZ1JlcGFpbnRzOyAvLyBVc2VkIGZvciB0ZXN0aW5nLgorCiAgICAg
Um9vdExheWVyQXR0YWNobWVudCBtX3Jvb3RMYXllckF0dGFjaG1lbnQ7CiAKICAgICAvLyBFbmNs
b3NpbmcgY2xpcHBpbmcgbGF5ZXIgZm9yIGlmcmFtZSBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggODI5Y2ZmNTdjODgyZWY4MTQ2YmJkZmUyOWQwNjJlZWI1ZGEy
Y2M1Ni4uZjM4ODljNjNhM2UyNzM5ZDk0NjEwY2Y3Zjk4YjQwNjM4YzEzZWM5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI1OSw2ICsxMjU5LDggQEAgU3RyaW5nIElu
dGVybmFsczo6bGF5ZXJUcmVlQXNUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgZmxh
Z3MsIEV4Y2VwdGlvbkMKICAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxhZ3NJ
bmNsdWRlVmlzaWJsZVJlY3RzOwogICAgIGlmIChmbGFncyAmIExBWUVSX1RSRUVfSU5DTFVERVNf
VElMRV9DQUNIRVMpCiAgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdzSW5j
bHVkZVRpbGVDYWNoZXM7CisgICAgaWYgKGZsYWdzICYgTEFZRVJfVFJFRV9JTkNMVURFU19SRVBB
SU5UX1JFQ1RTKQorICAgICAgICBsYXllclRyZWVGbGFncyB8PSBMYXllclRyZWVGbGFnc0luY2x1
ZGVSZXBhaW50UmVjdHM7CiAKICAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmxheWVyVHJl
ZUFzVGV4dChsYXllclRyZWVGbGFncyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCBlODEyNzg1MDM1OThiZDI1NzVkOTM2NWJmNTA0ZjViNDkzYjlmYjRlLi44Njc1NDU1ZWQ0
NmZmN2U0MTExNmNmMjQxZWJkZjA5MGJhNTE5ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTE5MCw3ICsxOTAsOCBAQCBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIC8v
IFZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIEludGVybmFscy5pZGwuCiAgICAg
ICAgIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDEsCi0gICAgICAgIExBWUVS
X1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyCisgICAgICAgIExBWUVSX1RSRUVfSU5DTFVE
RVNfVElMRV9DQUNIRVMgPSAyLAorICAgICAgICBMQVlFUl9UUkVFX0lOQ0xVREVTX1JFUEFJTlRf
UkVDVFMgPSA0CiAgICAgICAgIAogICAgIH07CiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChE
b2N1bWVudCosIHVuc2lnbmVkIGZsYWdzLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMTZlYzFmODBlOWUwYjUwMjNhZmMwNmY2Mzk3
NDllMTVjNDAzMjJhNS4uMGJmNmI4MDIwZDE0MTQ4Y2JkM2VhZDQwMzBiZjRkYzIxZGI1ODJmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTU0LDYgKzE1NCw3IEBACiAg
ICAgLy8gRmxhZ3MgZm9yIGxheWVyVHJlZUFzVGV4dC4KICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBMQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMgPSAxOwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyOworICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUyA9IDQ7CiAg
ICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gW09w
dGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAg
ICAgRE9NU3RyaW5nIHJlcGFpbnRSZWN0c0FzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViV2lkZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRn
ZXQuaAppbmRleCBjODQ2NDA2MmQyODVmZDUxYTRlNmRjMjYzN2ZlODIzNzRlNzc4MjE5Li5mMmIz
OTQ0Mzk1ZWJlMzQ2ZmE3Mjk3Mzc4MTgwMjJlNDQ1YmE0YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtMTI3LDYgKzEyNyw5IEBAIHB1YmxpYzoKICAg
ICAvLyBhbmltYXRlIG9yIGxheW91dCBpbiB0aGlzIGNhc2UuCiAgICAgdmlydHVhbCB2b2lkIGNv
bXBvc2l0ZShib29sIGZpbmlzaCkgPSAwOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlJ3Zl
IHN0YXJ0ZWQgdHJhY2tpbmcgcmVwYWludCByZWN0YW5nbGVzLgorICAgIHZpcnR1YWwgYm9vbCBp
c1RyYWNraW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gSW5k
aWNhdGVzIHRoYXQgdGhlIGNvbXBvc2l0aW5nIHN1cmZhY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
V2ViV2lkZ2V0IGlzCiAgICAgLy8gcmVhZHkgdG8gdXNlLgogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b21wb3NpdG9yU3VyZmFjZVJlYWR5KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9MaW5rSGlnaGxpZ2h0LmNwcAppbmRleCA4MTVhMGMzMDBlOWFiNTE5NjBjZTk0MGQ5MmRkYTE1
NmE5NDBlNTljLi4xYTNhNzdjZjU0Yzk4NDE2MTAxOWU5MThlMzU1NzcwZWU1NDI5MDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcApAQCAtMzAyLDYg
KzMwMiw5IEBAIHZvaWQgTGlua0hpZ2hsaWdodDo6dXBkYXRlR2VvbWV0cnkoKQogICAgICAgICAv
LyBXZSBvbmx5IG5lZWQgdG8gaW52YWxpZGF0ZSB0aGUgbGF5ZXIgaWYgdGhlIGhpZ2hsaWdodCBz
aXplIGhhcyBjaGFuZ2VkLCBvdGhlcndpc2UKICAgICAgICAgLy8gd2UgY2FuIGp1c3QgcmUtcG9z
aXRpb24gdGhlIGxheWVyIHdpdGhvdXQgbmVlZGluZyB0byByZXBhaW50LgogICAgICAgICBtX2Nv
bnRlbnRMYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworCisgICAgICAgIGlmIChtX2N1cnJl
bnRHcmFwaGljc0xheWVyKQorICAgICAgICAgICAgbV9jdXJyZW50R3JhcGhpY3NMYXllci0+YWRk
UmVwYWludFJlY3QoRmxvYXRSZWN0KGxheWVyKCktPnBvc2l0aW9uKCkueCwgbGF5ZXIoKS0+cG9z
aXRpb24oKS55LCBsYXllcigpLT5ib3VuZHMoKS53aWR0aCwgbGF5ZXIoKS0+Ym91bmRzKCkuaGVp
Z2h0KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCAyMWI5NzI1YjBlYTVkMDBhMDhi
YTM2NDE2ZTViODA1YzBmM2ZlYmUxLi4yM2RjZGRlOWI3OWI0OTg5NWEyZjIyMWI3YmE1MTAwYTM2
Y2MzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTIwMSw0ICsyMDEsOSBAQCBib29sIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6c2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OmlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2Vi
Vmlldy0+aXNUcmFja2luZ1JlcGFpbnRzKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuaAppbmRleCAwOGU5YzY5YjJmN2NhMWYzZTRjODAwZTg5MjI4MTljMmU5NTZiY2I0Li4y
YjZkZGMxYWFiMDAyNjE1ZTJiOTFmNzg5YTY2NWQ0M2YyYjViMDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAt
NzMsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgY2xpcFJlY3QpOwogICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFp
bnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7CiAKICAgICBib29sIGhhdmVTY3Jv
bGxMYXllcigpOwogICAgIFdlYkxheWVyKiBzY3JvbGxMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGE2Y2I0OTRmODE1ZmQ3MzQ4MmRmYzRi
MTY5NDFkMjVhMTEwYzEyMmQuLmY3NTE5ZGNkOTE3Y2ZiMzAwMTgyMWQyODQzYWI0ZjQzMzg4M2Vj
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE4
MjksNiArMTgyOSwxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZh
cywgY29uc3QgV2ViUmVjdCYgcmVjdCwgUGFpbnRPcHRpb25zIG9wdAogICAgIH0KIH0KIAorYm9v
bCBXZWJWaWV3SW1wbDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBpZiAoIXBh
Z2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lVmlldyogdmlldyA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICByZXR1cm4gdmlldy0+aXNUcmFja2luZ1JlcGFp
bnRzKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnRoZW1lQ2hhbmdlZCgpCiB7CiAgICAgaWYg
KCFwYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAz
NTQ4ODlmZGU4ZDM3MDM2NDBkNTQyMTc5MGRiNzY3NjY2NDMxODQ0Li4xYzdiMjE0NDUxY2QzZTVl
NGU4OTgzNzNjNzc4ZWFkNjdlZDgwNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOyAvLyBBbHNvIGltcGxlbWVudHMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudDo6bGF5
b3V0KCkKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGb3JjZUNvbXBvc2l0aW5nTW9kZShib29sIGVu
YWJsZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0
IFdlYlJlY3QmLCBQYWludE9wdGlvbnMgPSBSZWFkYmFja0Zyb21Db21wb3NpdG9ySWZBdmFpbGFi
bGUpOworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXBvc2l0ZShib29sIGZpbmlzaCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3KCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggM2I1MzU5NDNmYWY1MDdlMTgyMjA2NzM5MTRiMzZlMTgwODQwNzc0OC4uODZkNTU0
NjhmOTFmZDlkNjZkOTQzZjlmMWYzMDgzNWI0YTdlMGVlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTExLTAxICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFN1cHBvcnQgaW52YWxpZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0xh
eWVycyBub3cgc3RvcmUgaW52YWxpZGF0ZWQgcmVjdHMgYW5kIGNhbiBpbmNsdWRlIHRoZW0gaW4K
KyAgICAgICAgdGhlIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL3Jl
cGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21w
b3NpdGVkLWxheWVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9z
aXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisKIDIwMTItMTAtMzEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhh
ZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gTW9yZSB1bnJldmll
d2VkIHBpeGVsIGV4cGVjdGF0aW9ucyBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRp
b25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzVmMmE4
YjNiNTUyZGVkZmRjOTVmYzUzYThjNDM3NmEwOWM5NDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQt
bGF5ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACisocmVwYWludCByZWN0cworICAo
cmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAg
NDUwKQorICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NTApCisgIChyZWN0
IDAgMCA4MDAgNjAwKQorKQorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAw
KQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgIChwb3NpdGlvbiA4LjAwIDQyLjAwKQorICAgICAgICAgIChib3VuZHMgNDAwLjAwIDQw
MC4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgKHJlcGFpbnQgcmVj
dHMKKyAgICAgICAgICAgIChyZWN0IDAuMDAgMC4wMCA0MDAuMDAgNDAwLjAwKQorICAgICAgICAg
ICkKKyAgICAgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAgICAgKHBvc2l0aW9uIDUwLjAwIDUwLjAwKQorICAgICAgICAgICAgICAoYm91bmRz
IDc1LjAwIDc1LjAwKQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAg
ICAgIChyZXBhaW50IHJlY3RzCisgICAgICAgICAgICAgICAgKHJlY3QgMC4wMCAwLjAwIDc1LjAw
IDc1LjAwKQorICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgKQorICAg
ICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5o
dG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNv
bXBvc2l0ZWQtbGF5ZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQyZmJjNzY3YzY1MGNiNWExYzBhNDc5
MzcxMzk5MTYzZTQ2NTJhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sCkBAIC0w
LDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tCitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgcmVwYWludCB0ZXN0aW5nIHdvcmtzIHdpdGggY29tcG9zaXRlZCBsYXllcnMuCistLT4KKwor
PGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAjcGFyZW50IHsK
KyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKKyAgICAgICAgd2lk
dGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6IDQwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiBi
bHVlOworICAgIH0KKworICAgICNjaGlsZCB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVaKDBweCk7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVm
dDogNTBweDsKKyAgICAgICAgdG9wOiA1MHB4OworICAgICAgICB3aWR0aDogNzVweDsKKyAgICAg
ICAgaGVpZ2h0OiA3NXB4OworICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB9CisKKyAg
PC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICBpZiAoIXdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgIGFsZXJ0KCdUaGlzIHRlc3QgcmVxdWly
ZXMgdGVzdFJ1bm5lciB0byBydW4hJyk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICB9CisKKyAgICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAg
YWxlcnQoJ1RoaXMgdGVzdCByZXF1aXJlcyB3aW5kb3cuaW50ZXJhbHMgdG8gcnVuIScpOworICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorCisgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KGZhbHNlKTsKKworICAgICAgICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncGFyZW50Jyk7CisgICAgICAgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NoaWxkJyk7CisKKyAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0
VHJhY2tpbmdSZXBhaW50cyhkb2N1bWVudCk7CisKKyAgICAgICAgICBjaGlsZC5zdHlsZS5iYWNr
Z3JvdW5kID0gJ2JsdWUnOworICAgICAgICAgIHBhcmVudC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2dy
ZWVuJzsKKworICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
eHQnKTsKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9ICdUaGlzIHRleHQgd2lsbCBiZSByZXBs
YWNlZCB3aXRoIHRoZSBsYXllciB0cmVlJzsKKworICAgICAgICAgIC8vIEZvcmNlIGEgc3R5bGUg
cmVjYWxjLgorICAgICAgICAgIHZhciBkdW1teSA9IGNoaWxkLm9mZnNldFRvcDsKKworICAgICAg
ICAgIHZhciBsYXllclRyZWVUZXh0ID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQo
ZG9jdW1lbnQsIGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1JFUEFJTlRfUkVDVFMpOwor
CisgICAgICAgICAgd2luZG93LmludGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cyhkb2N1bWVu
dCk7CisKKyAgICAgICAgICB0ZXh0LmlubmVySFRNTCA9IGxheWVyVHJlZVRleHQ7CisgICAgICB9
KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHByZSBpZD0idGV4dCI+PC9wcmU+
CisgIDxkaXYgaWQ9InBhcmVudCI+CisgICAgPGRpdiBpZD0iY2hpbGQiPjwvZGl2PgorICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjE4ZjlkZTNmNzgwZmVkNjZjNDE1YmM1Yzk4ZjU0OTMyODczNDk1NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9yZXBhaW50L2lu
dmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzcgQEAKKyhyZXBhaW50IHJlY3RzCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAwIDAg
ODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NDkpCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAo
cmVjdCAwIDAgODAwIDQ0OSkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCispCisoR3JhcGhpY3NMYXll
cgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjaGlsZHJlbiAxCisg
ICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgNDEuMDApCisg
ICAgICAgICAgKGJvdW5kcyA0MDAuMDAgNDAwLjAwKQorICAgICAgICAgIChkcmF3c0NvbnRlbnQg
MSkKKyAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAwLjAw
IDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gNTAuMDAgNTAu
MDApCisgICAgICAgICAgICAgIChib3VuZHMgNzUuMDAgNzUuMDApCisgICAgICAgICAgICAgIChk
cmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAg
ICAgICAocmVjdCAwLjAwIDAuMDAgNzUuMDAgNzUuMDApCisgICAgICAgICAgICAgICkKKyAgICAg
ICAgICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykK
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172104</attachid>
            <date>2012-11-02 12:13:26 -0700</date>
            <delta_ts>2012-11-02 12:59:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97801-20121102151145.patch</filename>
            <type>text/plain</type>
            <size>37147</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFhMmU2ZTNiYjVmNjBm
MGJhNWIzZGMyZmI0NjRjNjY1MTgxMjYwZC4uNGFiMTBhZjYxOGQ4OWExZGJlMDc2NDcxMTI1OWZk
YWRkOGY2ODMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTExLTAxICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgaW52YWxp
ZGF0aW9uIHRyYWNraW5nIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgR3JhcGhpY3NMYXllcnMgbm93IHN0b3JlIGludmFs
aWRhdGVkIHJlY3RzIGFuZCBjYW4gaW5jbHVkZSB0aGVtIGluCisgICAgICAgIHRoZSBsYXllciB0
cmVlIGR1bXAuCisKKyAgICAgICAgVGVzdDogY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRp
b25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAgIEV4cG9ydHMgRnJhbWVWaWV3OjpyZXNldFRyYWNrZWRSZXBhaW50cygpCisg
ICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzZXRUcmFja3NSZXBhaW50cyk6CisgICAgICAgICAgTm90aWZpZXMgZWFjaCBjb21wb3NpdG9y
IHRoYXQgd2UgYXJlIHN0YXJ0aW5nL3N0b3BwaW5nIHJlcGFpbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpyZXNldFRyYWNrZWRSZXBhaW50cyk6CisgICAgICAgICAgTW92ZWQgaW1w
bGVtZW50YXRpb24gdG8gdGhlIGNwcCBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6fkdy
YXBoaWNzTGF5ZXIpOgorICAgICAgICAgIENsZWFycyB0aGUgcmVwYWludCByZWN0cyBhc3NvY2lh
dGVkIHdpdGggdGhpcyBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnJl
c2V0VHJhY2tlZFJlcGFpbnRzKToKKyAgICAgICAgICBDbGVhcnMgdGhlIHJlcGFpbnQgcmVjdHMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIuCisgICAgICAgICAgTm90ZSB0aGF0IHRoZSByZXBh
aW50IHJlY3RzIGFyZSBzdG9yZWQgaW4gYSBzdGF0aWNhbGx5IGFsbG9jYXRlZAorICAgICAgICAg
IEhhc2hNYXAgdG8gYXZvaWQgdXNpbmcgc3BhY2Ugb24gdGhlIGdyYXBoaWNzIGxheWVycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0KToKKyAgICAgICAg
ICBBZGRzIGEgcmVwYWludCByZWN0IHRvIGxpc3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5ZXIg
aW4gdGhlCisgICAgICAgICAgaGFzaCBtYXAgbWVudGlvbmVkIGFib3ZlLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAgIFRoaXMgaGFz
IGJlZW4gbW9kaWZpZWQgdG8gaW5jbHVkZSB0aGUgcmVwYWludCByZWN0cyBpbiB0aGUgZHVtcAor
ICAgICAgICAgIGlmIHRoZXkndmUgYmVlbiByZXF1ZXN0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNsaWVudDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgICBUaGlzIGlzIGhv
dyBncmFwaGljcyBsYXllcnMgY2hlY2sgaWYgcmVwYWludCB0cmFja2luZyBpcyBoYXBwZW5pbmcu
CisgICAgICAgICAgUmV0dXJucyBmYWxzZSBieSBkZWZhdWx0LgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NMYXllckJsYWNrQmVycnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRzTmVlZHNEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXROZWVk
c0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNl
dE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NM
YXllcjo6YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgICAgTm93IGNhbGxzIEdy
YXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlz
cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRz
RGlzcGxheUluUmVjdCk6CisgICAgICAgICAgVGhlc2Ugbm93IGNhbGwgR3JhcGhpY3NMYXllcjo6
YWRkUmVwYWludFJlY3QgYXMgbmVjZXNzYXJ5LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgICBU
aGVzZSBub3cgY2FsbCBHcmFwaGljc0xheWVyOjphZGRSZXBhaW50UmVjdCBhcyBuZWNlc3Nhcnku
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAg
ICAgIFRoZXNlIG5vdyBjYWxsIEdyYXBoaWNzTGF5ZXI6OmFkZFJlcGFpbnRSZWN0IGFzIG5lY2Vz
c2FyeS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAg
ICAgICAgICBSZXF1aXJlZCBzaW5jZSB0aGlzIGlzIGEgR3JhcGhpY3NMYXllckNsaWVudC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJUcmVlQXNUZXh0KToKKyAgICAgICAg
ICBOb3cgYWNjZXB0cyBhIGZsYWcgdG8gaW5jbHVkZSB0aGUgcmVwYWludCByZWN0cyBpbiB0aGUg
bGF5ZXIgdHJlZQorICAgICAgICAgIGR1bXAuCisgICAgICAgIChXZWJDb3JlOjpyZXNldFRyYWNr
ZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUpOgorICAgICAgICAgIENsZWFycyB0aGUgcmVwYWludCBy
ZWN0cyBvbiBhbGwgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXNldFRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAgIENsZWFy
cyB0aGUgcmVwYWludCByZWN0cyBvbiBhbGwgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAg
ICAgIFJlcXVpcmVkIHNpbmNlIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50LgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
bGF5ZXJUcmVlQXNUZXh0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgICBUaGUgaW50ZXJuYWxzIGNoYW5n
ZXMgcGx1bWIgdGhlIG5ldyBmbGFnIGZvciBpbmNsdWRpbmcgdGhlIHJlcGFpbnQKKyAgICAgICAg
ICByZWN0cyBpbiB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCiAyMDEyLTExLTAyICBNaWNoYWVsIEJy
w7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0g
QVNTRVJUIGhpdCBmb3IgZXZlcnkgbW91c2UgY2xpY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggOGVjZDBmZjRjZjIzYTRhY2Q3ZGQ2YzhkZDNhMDIxY2NhZmI1ZjRmOS4uNTk3ZmQyYmNm
NjYxNTlmNTFmYjhiMWVjNTc0OWVmOGY1NDY3OTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0wMSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IGludmFsaWRhdGlvbiB0cmFja2luZyBmb3Ig
Y29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3ODAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgIEdyYXBoaWNzTGF5ZXJzIG5vdyBzdG9yZSBpbnZhbGlkYXRlZCByZWN0cyBhbmQgY2Fu
IGluY2x1ZGUgdGhlbSBpbgorICAgICAgICB0aGUgbGF5ZXIgdHJlZSBkdW1wLgorCisgICAgICAg
IChXZWJLaXQ6OldlYldpZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgICBVc2Vk
IGJ5IHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSB0
cmFja2luZworICAgICAgICAgIHJlcGFpbnQgcmVjdHMuCisgICAgICAgIChXZWJLaXQ6OldlYldp
ZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzKToKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxpbmtIaWdobGlnaHQ6OnVwZGF0ZUdlb21ldHJ5KToKKyAg
ICAgICAgICBOb3cgY2FsbHMgR3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3Qgd2hlbiBpbnZh
bGlkYXRlZC4KKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojppc1RyYWNraW5nUmVwYWlu
dHMpOgorICAgICAgICAgIFJlcXVpcmVkIGFzIHRoaXMgaXMgYSBHcmFwaGljc0xheWVyQ2xpZW50
LgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjppc1RyYWNraW5nUmVwYWludHMpOgorICAgICAgICAgIEltcGxlbWVudGF0aW9uIG9m
IFdlYldpZGdldDo6aXNUcmFja2luZ1JlcGFpbnRzLgorCiAyMDEyLTExLTAxICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgRU5BQkxFX0RBVEVf
QU5EX1RJTUVfSU5QVVRfVFlQRVMsIGFuZCBjbGFyaWZ5IHVzYWdlIG9mIG90aGVyIHJlbGF0ZWQg
ZmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNjQyODk2ODc1YTg1YzRmNDU5YzI4NzVlNzJj
OTUwMzUwMzU1MzEwZS4uOGQ1OWIxYjhlNzBkZWY4YTI1Y2JiYzk0YzUxNDExYmQ1N2QzYWE1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI3Miw2ICsyNzIsNyBAQCBfX1pON1dlYkNvcmUxNExv
YWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdXZWJDb3JlMTRQbHVn
aW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVw
YWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3NldFRyYWNrc1JlcGFp
bnRzRWIKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJlc2V0VHJhY2tlZFJlcGFpbnRzRXYKIF9f
Wk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2CiBfX1pON1dlYkNvcmUx
NFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUJ1
ZmZlckQxRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBhNDI3OThjNTdmODc0Y2EyMTc4ODc5YmFhZGYw
NjI1MDg4NjVkZjc2Li45Yzg3NGFiODhjYTJmNjI2ZDI1ZTEwODNhZjcyMGYwYzNhYjdhNTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCkBAIC03OSw3ICs3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBlbnVtIHsKICAgICAgICAgTGF5ZXJUcmVlRmxhZ3NJbmNsdWRlRGVidWdJbmZvID0gMSA8PCAw
LAogICAgICAgICBMYXllclRyZWVGbGFnc0luY2x1ZGVWaXNpYmxlUmVjdHMgPSAxIDw8IDEsCi0g
ICAgICAgIExheWVyVHJlZUZsYWdzSW5jbHVkZVRpbGVDYWNoZXMgPSAxIDw8IDIKKyAgICAgICAg
TGF5ZXJUcmVlRmxhZ3NJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMiwKKyAgICAgICAgTGF5ZXJU
cmVlRmxhZ3NJbmNsdWRlUmVwYWludFJlY3RzID0gMSA8PCAzCiAgICAgfTsKICAgICB0eXBlZGVm
IHVuc2lnbmVkIExheWVyVHJlZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggYzhmOWNiMjEzZDE2Y2Q3OTIxNWM1MjU5ZGRhZGRhZjQ3YjM5NTM0Zi4uMTIzY2QyNjc5NjAz
YzkyMDA4YzI5NTZmZWIwYzZhYTc0YjU5ZjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtMzY0MCwxMSArMzY0MCwyOSBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VHJhY2tzUmVwYWlu
dHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAgIGlmICh0cmFja1JlcGFpbnRzID09IG1faXNU
cmFja2luZ1JlcGFpbnRzKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT50cmVl
KCktPnRvcCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkg
eworICAgICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS0+c2V0VHJhY2tz
UmVwYWludHModHJhY2tSZXBhaW50cyk7CisgICAgfQorI2VuZGlmCisKICAgICByZXNldFRyYWNr
ZWRSZXBhaW50cygpOwogICAgIG1faXNUcmFja2luZ1JlcGFpbnRzID0gdHJhY2tSZXBhaW50czsK
IH0KIAordm9pZCBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKCkKK3sKKyAgICBtX3Ry
YWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSByb290UmVuZGVyZXIodGhpcykpIHsKKyAg
ICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gcm9vdC0+Y29tcG9zaXRv
cigpOworICAgICAgICBjb21wb3NpdG9yLT5yZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKTsKKyAg
ICB9CisjZW5kaWYKK30KKwogU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0Fz
VGV4dCgpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSB0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IDJmNDZlYWQyODU1NDM0ZGViM2RhMGZhY2MxZGY2MDA5NmUyMjBlZDIuLjU0NWUyMmJk
ZjRiN2RkZGRjMzk3NDJmNThiYmQ4MTcxY2UwYzU4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtMzM4LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldFRyYWNrc1Jl
cGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KLSAgICB2b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRz
KCkgeyBtX3RyYWNrZWRSZXBhaW50UmVjdHMuY2xlYXIoKTsgfQorICAgIHZvaWQgcmVzZXRUcmFj
a2VkUmVwYWludHMoKTsKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRyYWNrZWRSZXBhaW50
UmVjdHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrZWRSZXBhaW50UmVjdHM7IH0KICAgICBTdHJp
bmcgdHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGM0Y2MwODU5
ZjJjMzgzN2VkZWIxZDA2ZjU4OWRmYjUzNGQzZTdkNGQuLjBkYjI0OTk5MjBjMDkxM2I2NDQxZjIx
OGFiOTE4NzZkNDE0ZTEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCwxMCArMzAsMTIgQEAKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyLmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0
VHlwZXNJbmxpbmVNZXRob2RzLmgiCiAjaW5jbHVkZSAiUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDYgKzQ2LDEz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBo
aWNzTGF5ZXIqLCBWZWN0b3I8RmxvYXRSZWN0PiA+IFJlcGFpbnRNYXA7CitzdGF0aWMgUmVwYWlu
dE1hcCYgcmVwYWludFJlY3RNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVwYWlu
dE1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwogdm9pZCBLZXlmcmFtZVZhbHVl
TGlzdDo6aW5zZXJ0KGNvbnN0IEFuaW1hdGlvblZhbHVlKiB2YWx1ZSkKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CkBAIC05Niw2ICsxMDUsNyBA
QCBHcmFwaGljc0xheWVyOjpHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVu
dCkKIAogR3JhcGhpY3NMYXllcjo6fkdyYXBoaWNzTGF5ZXIoKQogeworICAgIHJlc2V0VHJhY2tl
ZFJlcGFpbnRzKCk7CiAgICAgQVNTRVJUKCFtX3BhcmVudCk7IC8vIHdpbGxCZURlc3Ryb3llZCBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBhbHJlYWR5LgogfQogCkBAIC01MzYsNiArNTQ2LDI4IEBA
IGRvdWJsZSBHcmFwaGljc0xheWVyOjpiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oNCAqIHNpemUoKS53aWR0aCgpKSAqIHNp
emUoKS5oZWlnaHQoKTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyOjpyZXNldFRyYWNrZWRSZXBh
aW50cygpCit7CisgICAgcmVwYWludFJlY3RNYXAoKS5yZW1vdmUodGhpcyk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllcjo6YWRkUmVwYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVj
dCkKK3sKKyAgICBpZiAobV9jbGllbnQtPmlzVHJhY2tpbmdSZXBhaW50cygpKSB7CisgICAgICAg
IEZsb2F0UmVjdCBsYXJnZXN0UmVwYWludFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpOworICAg
ICAgICBsYXJnZXN0UmVwYWludFJlY3QuaW50ZXJzZWN0KHJlcGFpbnRSZWN0KTsKKyAgICAgICAg
UmVwYWludE1hcDo6aXRlcmF0b3IgcmVwYWludEl0ID0gcmVwYWludFJlY3RNYXAoKS5maW5kKHRo
aXMpOworICAgICAgICBpZiAocmVwYWludEl0ID09IHJlcGFpbnRSZWN0TWFwKCkuZW5kKCkpIHsK
KyAgICAgICAgICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlcGFpbnRSZWN0czsKKyAgICAgICAgICAg
IHJlcGFpbnRSZWN0cy5hcHBlbmQobGFyZ2VzdFJlcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIHJl
cGFpbnRSZWN0TWFwKCkuc2V0KHRoaXMsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBWZWN0b3I8RmxvYXRSZWN0PiYgcmVwYWludFJlY3RzID0gcmVwYWludEl0
LT52YWx1ZTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0cy5hcHBlbmQobGFyZ2VzdFJlcGFpbnRS
ZWN0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBHcmFwaGljc0xheWVyOjp3cml0ZUlu
ZGVudChUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsg
aSAhPSBpbmRlbnQ7ICsraSkKQEAgLTY1OCw3ICs2OTAsMjUgQEAgdm9pZCBHcmFwaGljc0xheWVy
OjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNU
ZXh0QmUKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8
PCAiKHJlcGxpY2F0ZWQgbGF5ZXIiOwogICAgICAgICBpZiAoYmVoYXZpb3IgJiBMYXllclRyZWVB
c1RleHREZWJ1ZykKLSAgICAgICAgICAgIHRzIDw8ICIgIiA8PCBtX3JlcGxpY2F0ZWRMYXllcjs7
CisgICAgICAgICAgICB0cyA8PCAiICIgPDwgbV9yZXBsaWNhdGVkTGF5ZXI7CisgICAgICAgIHRz
IDw8ICIpXG4iOworICAgIH0KKworICAgIGlmIChiZWhhdmlvciAmIExheWVyVHJlZUFzVGV4dElu
Y2x1ZGVSZXBhaW50UmVjdHMgJiYgcmVwYWludFJlY3RNYXAoKS5jb250YWlucyh0aGlzKSAmJiAh
cmVwYWludFJlY3RNYXAoKS5nZXQodGhpcykuaXNFbXB0eSgpKSB7CisgICAgICAgIHdyaXRlSW5k
ZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIihyZXBhaW50IHJlY3RzXG4iOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMp
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAocmVwYWludFJlY3RNYXAoKS5nZXQodGhp
cylbaV0uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
d3JpdGVJbmRlbnQodHMsIGluZGVudCArIDIpOworICAgICAgICAgICAgdHMgPDwgIihyZWN0ICI7
CisgICAgICAgICAgICB0cyA8PCByZXBhaW50UmVjdE1hcCgpLmdldCh0aGlzKVtpXS54KCkgPDwg
IiAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcylbaV0ueSgp
IDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8IHJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpW2ld
LndpZHRoKCkgPDwgIiAiOworICAgICAgICAgICAgdHMgPDwgcmVwYWludFJlY3RNYXAoKS5nZXQo
dGhpcylbaV0uaGVpZ2h0KCk7CisgICAgICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICAgICAgfQor
ICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CiAgICAgICAgIHRzIDw8ICIpXG4i
OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAppbmRleCA1MDg5M2NkZmNlZjRlZmY3NzY4M2FmOTFjNzY1NTYxZWEzN2Nm
YTgzLi5lOTM3Y2E1ZDgzMzUyN2EyN2U2N2QxNjkxODA4ZDIyMmFlMjIyMmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC00OCwx
MyArNDgsMTUgQEAgZW51bSBMYXllclRyZWVBc1RleHRCZWhhdmlvckZsYWdzIHsKICAgICBMYXll
clRyZWVBc1RleHRCZWhhdmlvck5vcm1hbCA9IDAsCiAgICAgTGF5ZXJUcmVlQXNUZXh0RGVidWcg
PSAxIDw8IDAsIC8vIER1bXAgZXh0cmEgZGVidWdnaW5nIGluZm8gbGlrZSBsYXllciBhZGRyZXNz
ZXMuCiAgICAgTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0cyA9IDEgPDwgMSwKLSAg
ICBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcyA9IDEgPDwgMgorICAgIExheWVyVHJl
ZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzID0gMSA8PCAyLAorICAgIExheWVyVHJlZUFzVGV4dElu
Y2x1ZGVSZXBhaW50UmVjdHMgPSAxIDw8IDMKIH07CiB0eXBlZGVmIHVuc2lnbmVkIExheWVyVHJl
ZUFzVGV4dEJlaGF2aW9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9p
bnQzRDsKK2NsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzTGF5ZXJGYWN0b3J5OwogY2xhc3MgSW1hZ2U7CkBAIC00MDQsNiArNDA2LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KIAorICAgIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKTsKKyAgICB2b2lk
IGFkZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworCiAjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIC8vIFRoaXMgYWxsb3dzIHNldmVy
YWwgYWx0ZXJuYXRpdmUgR3JhcGhpY3NMYXllciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHNhbWUg
cG9ydCwKICAgICAvLyBlLmcuIGlmIGEgZGlmZmVyZW50IEdyYXBoaWNzTGF5ZXIgaW1wbGVtZW50
YXRpb24gaXMgbmVlZGVkIGluIFdlYktpdDEgdnMuIFdlYktpdDIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXgg
M2UxMDVjZTZiMzlhZWExYTI5NWVlMWZmMzZjMmYzOWU3MGJlMjZkMi4uMDZmZmI4YTIxZTgwZjQ5
MDViYzExYTZkNzNiMTI0N2RlZTg5MTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtODUsNiArODUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhp
Y3NMYXllciopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVy
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNU
cmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogI2lmbmRlZiBOREVC
VUcKICAgICAvLyBSZW5kZXJMYXllckJhY2tpbmcgb3ZlcnJpZGVzIHRoaXMgdG8gdmVyaWZ5IHRo
YXQgaXQgaXMgbm90CiAgICAgLy8gY3VycmVudGx5IHBhaW50aW5nIGNvbnRlbnRzLiBBbiBBU1NF
UlQgZmFpbHMsIGlmIGl0IGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0xheWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0Jl
cnJ5LmNwcAppbmRleCBjMWE3MDNhY2QyZmRkODgzZjBhZGY0NTM3MTk0N2U0NzUxZGE2NzBmLi4x
MmZjNjlkZjhjYzk3OTExZTQzY2ZhODkwYjk4NTI1Yjg0NTU1YTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzTGF5ZXJCbGFj
a0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0dyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5LmNwcApAQCAtMzc5LDIwICszNzksMjYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRDb250ZW50c05lZWRzRGlzcGxheSgpCiB7
Ci0gICAgaWYgKG1fY29udGVudHNMYXllcikKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAg
ICAgICAgIG1fY29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIGFkZFJl
cGFpbnRSZWN0KGNvbnRlbnRzUmVjdCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckJsYWNrQmVycnk6OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKGRyYXdzQ29udGVudCgp
KQorICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKKyAgICAgICAgYWRkUmVwYWludFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bV9zaXplKSk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5OjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChkcmF3
c0NvbnRlbnQoKSkKKyAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgICAgICBhZGRSZXBhaW50UmVjdChyZWN0
KTsKKyAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckJsYWNrQmVycnk6OnNldENvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMjQ0ZGZmN2YxOWQ2
NTQ1NzEzNjYxOWY3N2Y4Mzc0M2Y3MTkxYjdmMS4uYTU4ODM3YzMyNWJkN2NjNmUxNWE4ZThkYjVk
MGExMzg2ZDI4NTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC02NzAsNiArNjcwLDggQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHIp
CiAgICAgICAgIG1fZGlydHlSZWN0c1swXS51bml0ZShyZWN0KTsKIAogICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChEaXJ0eVJlY3RzQ2hhbmdlZCk7CisKKyAgICBhZGRSZXBhaW50UmVjdChy
ZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGRjNDZkYzNlNzUx
MWZkN2U0MDM2Zjk1ZjE1NzViNjMxMGY3ZWIxOTQuLmRmMzM1ZDgxMDJlMTBmNWYxMjAzMDI3Zjgy
ODdkZDg1MDM2NjIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApA
QCAtNDM2LDE0ICs0MzYsMTcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxp
Y2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIGlmIChXZWJMYXllciog
Y29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXJJZlJlZ2lzdGVyZWQoKSkKKyAgICBpZiAoV2Vi
TGF5ZXIqIGNvbnRlbnRzTGF5ZXIgPSBjb250ZW50c0xheWVySWZSZWdpc3RlcmVkKCkpIHsKICAg
ICAgICAgY29udGVudHNMYXllci0+aW52YWxpZGF0ZSgpOworICAgICAgICBhZGRSZXBhaW50UmVj
dChjb250ZW50c1JlY3QoKSk7CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsKICAgICAg
ICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOworICAgICAgICBhZGRSZXBhaW50UmVj
dChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpKTsKICAgICAgICAgaWYgKG1fbGlua0hp
Z2hsaWdodCkKICAgICAgICAgICAgIG1fbGlua0hpZ2hsaWdodC0+aW52YWxpZGF0ZSgpOwogICAg
IH0KQEAgLTQ1Myw2ICs0NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJhd3ND
b250ZW50KCkpIHsKICAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVj
dCk7CisgICAgICAgIGFkZFJlcGFpbnRSZWN0KHJlY3QpOwogICAgICAgICBpZiAobV9saW5rSGln
aGxpZ2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9H
cmFwaGljc0xheWVyQ2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAppbmRleCAxMDRiNzk4MmIwZGEwYzEw
ZmRhM2E4NTVjMmEzMWRiMjczODI3OTYwLi41OGJmMzhkNWIwNGUyZWM4MTMxMjgzYWNkYmJmY2Nh
MWRhZGY2YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
bHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcApAQCAtNjcsMTEg
KzY3LDEzIEBAIENsdXR0ZXJBY3RvciogR3JhcGhpY3NMYXllckNsdXR0ZXI6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5KCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIG1fc2l6ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgR3JhcGhpY3NMYXll
ckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBhZGRSZXBhaW50UmVjdChyZWN0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggZjA0Y2Y0OWRlZDc3ODkzOTJlY2FkYzAxNWY4NWE4ZDNkNjEyYjk2My4u
NDE4OTdjNjNlODE4NWQ5NmU4NTBjM2FiNjIyZmYyMDliZTkxNjZhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgbV9uZWVk
c0Rpc3BsYXkgPSB0cnVlOwogICAgIG5vdGlmeUNoYW5nZShUZXh0dXJlTWFwcGVyTGF5ZXI6OkRp
c3BsYXlDaGFuZ2UpOworICAgIGFkZFJlcGFpbnRSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IG1fc2l6ZSkpOwogfQogCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKQEAgLTk1LDYgKzk2
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TmVlZHNEaXNwbGF5KCkK
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5
KCkKIHsKICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlckxheWVyOjpEaXNwbGF5Q2hhbmdl
KTsKKyAgICBhZGRSZXBhaW50UmVjdChjb250ZW50c1JlY3QoKSk7CiB9CiAKIC8qIFxyZWltcCAo
R3JhcGhpY3NMYXllci5oKQpAQCAtMTA1LDYgKzEwNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgICAgIHJldHVybjsKICAgICBtX25lZWRzRGlzcGxheVJlY3QudW5pdGUocmVjdCk7CiAg
ICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJMYXllcjo6RGlzcGxheUNoYW5nZSk7CisgICAg
YWRkUmVwYWludFJlY3QocmVjdCk7CiB9CiAKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCBmNDc2NmJjYmE2YmM1NTQ4NzZlOWFmYzlhYjRkZGQ2ZWRmZDljODljLi41NTY5MDllOWQyYjBj
M2E0OGJmNzZjZDRhODdmNjZjNzI2MzhjMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTU5Niw2ICsxNTk2LDEyIEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXll
ciopIGNvbnN0CiAgICAgcmV0dXJuIGNvbXBvc2l0b3IoKSA/IGNvbXBvc2l0b3IoKS0+Y29tcG9z
aXRvclNob3dSZXBhaW50Q291bnRlcigpIDogZmFsc2U7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIEdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCA9IGNvbXBvc2l0b3IoKTsKKyAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50
LT5pc1RyYWNraW5nUmVwYWludHMoKSA6IGZhbHNlOworfQorCiAjaWZuZGVmIE5ERUJVRwogdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnZlcmlmeU5vdFBhaW50aW5nKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA1NDAyZmM0ZGMwYjli
Nzc0NTJhNjg4YzgxMThhN2ZlYzAxMGY2ZWEzLi4yMmZiODg5MDE2ZWRmNWIwYzFhOWNiNWMyNjIx
NzA3Yjc3ZjM5NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oCkBAIC0xNTcsNiArMTU3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG93RGVidWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBj
b25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBj
b25zdCBPVkVSUklERTsKKwogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgdmVyaWZ5
Tm90UGFpbnRpbmcoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA1YjE5ZjNlMTM3ODEwZWJhZTNiNDZkMmI4
Y2VmNmU5NTYzMTkxYjg0Li42YWEzODUxNWMxMzQ4YmE5YTMyM2NjODE0NTFkMjAxZWYwYjQwMmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMTk0LDYgKzE5NCw3IEBAIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiAgICAgLCBtX2ZsdXNoaW5n
TGF5ZXJzKGZhbHNlKQogICAgICwgbV9zaG91bGRGbHVzaE9uUmVhdHRhY2goZmFsc2UpCiAgICAg
LCBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKQorICAgICwgbV9pc1RyYWNraW5nUmVwYWlu
dHMoZmFsc2UpCiAgICAgLCBtX3Jvb3RMYXllckF0dGFjaG1lbnQoUm9vdExheWVyVW5hdHRhY2hl
ZCkKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgLCBtX3Jvb3RMYXllclVwZGF0ZUNvdW50KDApCkBA
IC0xMTQ5LDEwICsxMTUwLDIyIEBAIFN0cmluZyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVy
VHJlZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFncykKICAgICAgICAgbGF5ZXJUcmVlQmVoYXZp
b3IgfD0gTGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2libGVSZWN0czsKICAgICBpZiAoZmxhZ3Mg
JiBMYXllclRyZWVGbGFnc0luY2x1ZGVUaWxlQ2FjaGVzKQogICAgICAgICBsYXllclRyZWVCZWhh
dmlvciB8PSBMYXllclRyZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlczsKKyAgICBpZiAoZmxhZ3Mg
JiBMYXllclRyZWVGbGFnc0luY2x1ZGVSZXBhaW50UmVjdHMpCisgICAgICAgIGxheWVyVHJlZUJl
aGF2aW9yIHw9IExheWVyVHJlZUFzVGV4dEluY2x1ZGVSZXBhaW50UmVjdHM7CiAKICAgICAvLyBX
ZSBza2lwIGR1bXBpbmcgdGhlIHNjcm9sbCBhbmQgY2xpcCBsYXllcnMgdG8ga2VlcCBsYXllclRy
ZWVBc1RleHQgb3V0cHV0CiAgICAgLy8gc2ltaWxhciBiZXR3ZWVuIHBsYXRmb3Jtcy4KLSAgICBy
ZXR1cm4gbV9yb290Q29udGVudExheWVyLT5sYXllclRyZWVBc1RleHQobGF5ZXJUcmVlQmVoYXZp
b3IpOworICAgIFN0cmluZyBsYXllclRyZWVUZXh0ID0gbV9yb290Q29udGVudExheWVyLT5sYXll
clRyZWVBc1RleHQobGF5ZXJUcmVlQmVoYXZpb3IpOworCisgICAgLy8gVGhlIHRydWUgcm9vdCBs
YXllciBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGR1bXAsIHNvIGlmIHdlIHdhbnQgdG8gcmVwb3J0
CisgICAgLy8gaXRzIHJlcGFpbnQgcmVjdHMsIHRoZXkgbXVzdCBiZSBpbmNsdWRlZCBoZXJlLgor
ICAgIGlmIChmbGFncyAmIExheWVyVHJlZUZsYWdzSW5jbHVkZVJlcGFpbnRSZWN0cykgeworICAg
ICAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dFdpdGhSb290UmVwYWludFJlY3RzID0gbV9yZW5kZXJW
aWV3LT5mcmFtZVZpZXcoKS0+dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgICAgICBs
YXllclRyZWVUZXh0V2l0aFJvb3RSZXBhaW50UmVjdHMuYXBwZW5kKGxheWVyVHJlZVRleHQpOwor
ICAgICAgICByZXR1cm4gbGF5ZXJUcmVlVGV4dFdpdGhSb290UmVwYWludFJlY3RzOworICAgIH0K
KworICAgIHJldHVybiBsYXllclRyZWVUZXh0OwogfQogCiBSZW5kZXJMYXllckNvbXBvc2l0b3Iq
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVDb250ZW50c0NvbXBvc2l0b3IoUmVuZGVyUGFy
dCogcmVuZGVyZXIpCkBAIC0yMDAzLDYgKzIwMTYsMzQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yRGlkQ2hhbmdlKCkKICAgICBncmFwaGljc0xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKIH0KIAorc3RhdGljIHZv
aWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIpCit7CisgICAgaWYgKCFncmFwaGljc0xheWVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBncmFwaGljc0xheWVyLT5yZXNldFRyYWNrZWRSZXBhaW50cygpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBncmFwaGljc0xheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytpKQor
ICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUoZ3JhcGhpY3NMYXllci0+
Y2hpbGRyZW4oKVtpXSk7CisKKyAgICBpZiAoR3JhcGhpY3NMYXllciogcmVwbGljYUxheWVyID0g
Z3JhcGhpY3NMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgICAgIHJlc2V0VHJhY2tlZFJlcGFp
bnRSZWN0c1JlY3Vyc2l2ZShyZXBsaWNhTGF5ZXIpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIq
IG1hc2tMYXllciA9IGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKQorICAgICAgICByZXNldFRy
YWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUobWFza0xheWVyKTsKK30KKwordm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpCit7CisgICAgaWYgKEdy
YXBoaWNzTGF5ZXIqIHJvb3RMYXllciA9IHJvb3RHcmFwaGljc0xheWVyKCkpCisgICAgICAgIHJl
c2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShyb290TGF5ZXIpOworfQorCit2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja3NSZXBhaW50
cykKK3sKKyAgICBtX2lzVHJhY2tpbmdSZXBhaW50cyA9IHRyYWNrc1JlcGFpbnRzOworfQorCiBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGlj
c0xheWVyKiBsYXllcikgY29uc3QKIHsKICAgICBpZiAobGF5ZXIgPT0gbV9sYXllckZvckhvcml6
b250YWxTY3JvbGxiYXIgfHwgbGF5ZXIgPT0gbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyIHx8
IGxheWVyID09IG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXIpCkBAIC0yMDE5LDYgKzIwNjAsMTEgQEAg
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFw
aGljc0xheWVyKiBsYXllcikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsKK30KKwogZmxvYXQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IHRoaXMt
PnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaAppbmRleCA4MjZkZjk5MTRkZmQxYTU0ODUxZjcwYWRiYWI4ODliMTYwOTE4OTUxLi5l
NThhYTNhNmNjZDAzNmM4YmMwN2VhMDZjZDIwNmUzYzZjN2UxNWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0yMjgsNiArMjI4
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBkb2N1bWVudEJhY2tncm91bmRDb2xvckRpZENoYW5n
ZSgpOwogCisgICAgdm9pZCByZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKTsKKyAgICB2b2lkIHNl
dFRyYWNrc1JlcGFpbnRzKGJvb2wpOworCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7
CiAKQEAgLTIzOCw2ICsyNDEsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3dE
ZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0
IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0
IE9WRVJSSURFOwogICAgIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGZsdXNoTGF5ZXJzKEdyYXBoaWNzTGF5ZXJVcGRh
dGVyKikgT1ZFUlJJREU7CkBAIC0zNTIsNiArMzU3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1f
c2hvdWxkRmx1c2hPblJlYXR0YWNoOwogICAgIGJvb2wgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZTsK
IAorICAgIGJvb2wgbV9pc1RyYWNraW5nUmVwYWludHM7IC8vIFVzZWQgZm9yIHRlc3RpbmcuCisK
ICAgICBSb290TGF5ZXJBdHRhY2htZW50IG1fcm9vdExheWVyQXR0YWNobWVudDsKIAogICAgIC8v
IEVuY2xvc2luZyBjbGlwcGluZyBsYXllciBmb3IgaWZyYW1lIGNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBiMzdiODRjNTI0M2NmNWU4MWIxZWYwNzFiM2EyNjhj
NGJkMjk5ZjY3Li4zNWFiYmQ0ZjkyOTRlYTNjMTJkNDE4MjYzNTJiMWE4MDhmMzcyYTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMjU5LDYgKzEyNTksOCBAQCBTdHJp
bmcgSW50ZXJuYWxzOjpsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25l
ZCBmbGFncywgRXhjZXB0aW9uQwogICAgICAgICBsYXllclRyZWVGbGFncyB8PSBMYXllclRyZWVG
bGFnc0luY2x1ZGVWaXNpYmxlUmVjdHM7CiAgICAgaWYgKGZsYWdzICYgTEFZRVJfVFJFRV9JTkNM
VURFU19USUxFX0NBQ0hFUykKICAgICAgICAgbGF5ZXJUcmVlRmxhZ3MgfD0gTGF5ZXJUcmVlRmxh
Z3NJbmNsdWRlVGlsZUNhY2hlczsKKyAgICBpZiAoZmxhZ3MgJiBMQVlFUl9UUkVFX0lOQ0xVREVT
X1JFUEFJTlRfUkVDVFMpCisgICAgICAgIGxheWVyVHJlZUZsYWdzIHw9IExheWVyVHJlZUZsYWdz
SW5jbHVkZVJlcGFpbnRSZWN0czsKIAogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bGF5
ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDY3MjdkMTc1YzQzYTBkYWNkOWJkODViMDdhY2QwMWMyZWFhYWMwY2MuLjFjNGM0
YmI1NDgzZWM3Y2JmYjljOWY1MzBhNmY0N2Y4Y2Y2NGU1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMTkwLDcgKzE5MCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAg
ICAgLy8gVmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggSW50ZXJuYWxzLmlkbC4K
ICAgICAgICAgTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RTID0gMSwKLSAgICAgICAg
TEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDIKKyAgICAgICAgTEFZRVJfVFJFRV9J
TkNMVURFU19USUxFX0NBQ0hFUyA9IDIsCisgICAgICAgIExBWUVSX1RSRUVfSU5DTFVERVNfUkVQ
QUlOVF9SRUNUUyA9IDQKICAgICAgICAgCiAgICAgfTsKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAwNDg2MzIyNjQ4YzhmMDM2MjM3ZDlk
NjEyNjJlMjIwY2M0ZmY4OWNmLi41ZTUyNjhiZjFmYzU3MzQxNjlkNjVkYTY0NTk5MTRlMGI3YTJk
Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTQsNiArMTU0LDcg
QEAKICAgICAvLyBGbGFncyBmb3IgbGF5ZXJUcmVlQXNUZXh0LgogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyA9IDE7CiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9IDI7CisgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19SRVBBSU5UX1JFQ1RTID0g
NDsKICAgICBET01TdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGluIERvY3VtZW50IGRvY3VtZW50LCBp
biBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGZsYWdzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAKICAgICBET01TdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KGluIERvY3VtZW50IGRv
Y3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldpZGdldC5oCmluZGV4IGM4NDY0MDYyZDI4NWZkNTFhNGU2ZGMyNjM3ZmU4MjM3NGU3
NzgyMTkuLmYyYjM5NDQzOTVlYmUzNDZmYTcyOTczNzgxODAyMmU0NDViYTRhMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCkBAIC0xMjcsNiArMTI3LDkgQEAg
cHVibGljOgogICAgIC8vIGFuaW1hdGUgb3IgbGF5b3V0IGluIHRoaXMgY2FzZS4KICAgICB2aXJ0
dWFsIHZvaWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgd2UndmUgc3RhcnRlZCB0cmFja2luZyByZXBhaW50IHJlY3RhbmdsZXMuCisgICAgdmly
dHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
ICAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSBhc3NvY2lhdGVk
IHdpdGggdGhpcyBXZWJXaWRnZXQgaXMKICAgICAvLyByZWFkeSB0byB1c2UuCiAgICAgdmlydHVh
bCB2b2lkIHNldENvbXBvc2l0b3JTdXJmYWNlUmVhZHkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDU2Y2E4YWIzMWY4Y2Y3NGQ3ODAz
ZDcwMzgxNDBmYmM1NDNjMjBmZGUuLjllMzUxODEyYjUyNzI4MDQ3MzdmZjhjZGUzYTdiMWU0MDIw
MjQ1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGln
aHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3Bw
CkBAIC0zMDMsNiArMzAzLDkgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0Ojp1cGRhdGVHZW9tZXRyeSgp
CiAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSBsYXllciBpZiB0aGUg
aGlnaGxpZ2h0IHNpemUgaGFzIGNoYW5nZWQsIG90aGVyd2lzZQogICAgICAgICAvLyB3ZSBjYW4g
anVzdCByZS1wb3NpdGlvbiB0aGUgbGF5ZXIgd2l0aG91dCBuZWVkaW5nIHRvIHJlcGFpbnQuCiAg
ICAgICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAg
aWYgKG1fY3VycmVudEdyYXBoaWNzTGF5ZXIpCisgICAgICAgICAgICBtX2N1cnJlbnRHcmFwaGlj
c0xheWVyLT5hZGRSZXBhaW50UmVjdChGbG9hdFJlY3QobGF5ZXIoKS0+cG9zaXRpb24oKS54LCBs
YXllcigpLT5wb3NpdGlvbigpLnksIGxheWVyKCktPmJvdW5kcygpLndpZHRoLCBsYXllcigpLT5i
b3VuZHMoKS5oZWlnaHQpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDIxYjk3MjVi
MGVhNWQwMGEwOGJhMzY0MTZlNWI4MDVjMGYzZmViZTEuLjIzZGNkZGU5Yjc5YjQ5ODk1YTJmMjIx
YjdiYTUxMDBhMzZjYzNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMjAxLDQgKzIwMSw5IEBAIGJv
b2wgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6aXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93ZWJWaWV3LT5pc1RyYWNraW5nUmVwYWludHMoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IDA4ZTljNjliMmY3Y2ExZjNlNGM4MDBlODkyMjgxOWMy
ZTk1NmJjYjQuLjJiNmRkYzFhYWIwMDI2MTVlMmI5MWY3ODlhNjY1ZDQzZjJiNWIwODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5oCkBAIC03Myw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdmlydHVhbCBib29sIHNob3dEZWJ1Z0JvcmRl
cnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdDsKIAogICAgIGJv
b2wgaGF2ZVNjcm9sbExheWVyKCk7CiAgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMzdiOWVjMTcxMzIz
NzU5N2M2MjE5NGQ4ZTVjYTBiYTk1NzYwZjg5ZS4uZDVmN2NkZGM2YzNmNGYyYzczM2IyNzc5ZjUx
ZWQ3Y2E0YWViZGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtMTgyOSw2ICsxODI5LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNh
bnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBQYWludE9wdGlvbnMgb3B0CiAgICAg
fQogfQogCitib29sIFdlYlZpZXdJbXBsOjppc1RyYWNraW5nUmVwYWludHMoKSBjb25zdAorewor
ICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJhbWVWaWV3KiB2
aWV3ID0gcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIHJldHVybiB2aWV3LT5pc1Ry
YWNraW5nUmVwYWludHMoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6dGhlbWVDaGFuZ2VkKCkK
IHsKICAgICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCmluZGV4IDM1NDg4OWZkZThkMzcwMzY0MGQ1NDIxNzkwZGI3Njc2NjY0MzE4NDQuLjFjN2Iy
MTQ0NTFjZDNlNWU0ZTg5ODM3M2M3NzhlYWQ2N2VkODA0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7IC8vIEFsc28gaW1wbGVtZW50cyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50OjpsYXlvdXQoKQogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZvcmNlQ29tcG9zaXRpbmdN
b2RlKGJvb2wgZW5hYmxlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2Fu
dmFzKiwgY29uc3QgV2ViUmVjdCYsIFBhaW50T3B0aW9ucyA9IFJlYWRiYWNrRnJvbUNvbXBvc2l0
b3JJZkF2YWlsYWJsZSk7CisgICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgY29tcG9zaXRlKGJvb2wgZmluaXNoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNSZWRyYXcoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBhZDVkOWFmOWE0ZTNkZGU4ZTBhMjFmYjYwNjMxNjNjZTY0Y2Iz
ODZjLi5iYzU1MDEwZWUzMTgwMDQ4MDk5YmFjYzMwMjZhYmQ4NTQ0NmExZGE4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTItMTEtMDEgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgU3VwcG9ydCBpbnZhbGlkYXRpb24gdHJhY2tpbmcgZm9yIGNvbXBvc2l0
ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBH
cmFwaGljc0xheWVycyBub3cgc3RvcmUgaW52YWxpZGF0ZWQgcmVjdHMgYW5kIGNhbiBpbmNsdWRl
IHRoZW0gaW4KKyAgICAgICAgdGhlIGxheWVyIHRyZWUgZHVtcC4KKworICAgICAgICAqIGNvbXBv
c2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9u
cy1vbi1jb21wb3NpdGVkLWxheWVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTEtMDIgIEtlaXNoaSBIYXR0b3JpICA8a2Vp
c2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRlc3QgY2FsZW5kYXItcGlja2VyLWtleS1v
cGVyYXRpb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1s
YXllcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNWYyYThiM2I1NTJkZWRmZGM5NWZjNTNh
OGM0Mzc2YTA5Yzk0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzcgQEAKKyhyZXBhaW50IHJlY3RzCisgIChyZWN0IDAgMCA4MDAgNjAwKQor
ICAocmVjdCAwIDAgODAwIDYwMCkKKyAgKHJlY3QgMCAwIDgwMCA0NTApCisgIChyZWN0IDAgMCA4
MDAgNjAwKQorICAocmVjdCAwIDAgODAwIDQ1MCkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCispCiso
R3JhcGhpY3NMYXllcgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChj
aGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDgu
MDAgNDIuMDApCisgICAgICAgICAgKGJvdW5kcyA0MDAuMDAgNDAwLjAwKQorICAgICAgICAgIChk
cmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJl
Y3QgMC4wMCAwLjAwIDQwMC4wMCA0MDAuMDApCisgICAgICAgICAgKQorICAgICAgICAgIChjaGls
ZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRp
b24gNTAuMDAgNTAuMDApCisgICAgICAgICAgICAgIChib3VuZHMgNzUuMDAgNzUuMDApCisgICAg
ICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgKHJlcGFpbnQgcmVjdHMK
KyAgICAgICAgICAgICAgICAocmVjdCAwLjAwIDAuMDAgNzUuMDAgNzUuMDApCisgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICkKKyAg
ICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWlu
dC9pbnZhbGlkYXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZXBhaW50L2ludmFsaWRhdGlvbnMtb24tY29tcG9zaXRlZC1sYXllcnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNDJmYmM3NjdjNjUwY2I1YTFjMGE0NzkzNzEzOTkxNjNlNDY1MmE4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlk
YXRpb25zLW9uLWNvbXBvc2l0ZWQtbGF5ZXJzLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NU
WVBFIGh0bWw+CisKKzwhLS0KK1RoaXMgdGVzdCBjaGVja3MgdGhhdCByZXBhaW50IHRlc3Rpbmcg
d29ya3Mgd2l0aCBjb21wb3NpdGVkIGxheWVycy4KKy0tPgorCis8aHRtbD4KKzxoZWFkPgorICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICNwYXJlbnQgeworICAgICAgICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWigwcHgpOworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAg
IGhlaWdodDogNDAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgfQorCisgICAg
I2NoaWxkIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKKyAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiA1MHB4OworICAgICAgICB0
b3A6IDUwcHg7CisgICAgICAgIHdpZHRoOiA3NXB4OworICAgICAgICBoZWlnaHQ6IDc1cHg7Cisg
ICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIH0KKworICA8L3N0eWxlPgorICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bG9hZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgICAgYWxlcnQoJ1RoaXMgdGVzdCByZXF1aXJlcyB0ZXN0UnVubmVyIHRvIHJ1
biEnKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKworICAgICAgICAgIGlm
ICghd2luZG93LmludGVybmFscykgeworICAgICAgICAgICAgICBhbGVydCgnVGhpcyB0ZXN0IHJl
cXVpcmVzIHdpbmRvdy5pbnRlcmFscyB0byBydW4hJyk7CisgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICB9CisKKyAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoZmFsc2UpOwor
CisgICAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQn
KTsKKyAgICAgICAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hpbGQn
KTsKKworICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFja2luZ1JlcGFpbnRzKGRv
Y3VtZW50KTsKKworICAgICAgICAgIGNoaWxkLnN0eWxlLmJhY2tncm91bmQgPSAnYmx1ZSc7Cisg
ICAgICAgICAgcGFyZW50LnN0eWxlLmJhY2tncm91bmQgPSAnZ3JlZW4nOworCisgICAgICAgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dCcpOworICAgICAgICAgIHRl
eHQuaW5uZXJIVE1MID0gJ1RoaXMgdGV4dCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGxheWVy
IHRyZWUnOworCisgICAgICAgICAgLy8gRm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICAgICAg
dmFyIGR1bW15ID0gY2hpbGQub2Zmc2V0VG9wOworCisgICAgICAgICAgdmFyIGxheWVyVHJlZVRl
eHQgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCwgaW50ZXJuYWxz
LkxBWUVSX1RSRUVfSU5DTFVERVNfUkVQQUlOVF9SRUNUUyk7CisKKyAgICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKGRvY3VtZW50KTsKKworICAgICAgICAgIHRl
eHQuaW5uZXJIVE1MID0gbGF5ZXJUcmVlVGV4dDsKKyAgICAgIH0pOworICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICA8cHJlIGlkPSJ0ZXh0Ij48L3ByZT4KKyAgPGRpdiBpZD0icGFyZW50
Ij4KKyAgICA8ZGl2IGlkPSJjaGlsZCI+PC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFp
bnQvaW52YWxpZGF0aW9ucy1vbi1jb21wb3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVwYWludC9pbnZhbGlkYXRpb25zLW9u
LWNvbXBvc2l0ZWQtbGF5ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMThmOWRlM2Y3ODBm
ZWQ2NmM0MTViYzVjOThmNTQ5MzI4NzM0OTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlcGFpbnQvaW52YWxpZGF0aW9ucy1vbi1jb21w
b3NpdGVkLWxheWVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorKHJlcGFpbnQgcmVj
dHMKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAgNjAwKQorICAocmVjdCAw
IDAgODAwIDQ0OSkKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChyZWN0IDAgMCA4MDAgNDQ5KQor
ICAocmVjdCAwIDAgODAwIDYwMCkKKykKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgODAwLjAw
IDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5k
cyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCA0MS4wMCkKKyAgICAgICAgICAoYm91bmRzIDQw
MC4wMCA0MDAuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChyZXBh
aW50IHJlY3RzCisgICAgICAgICAgICAocmVjdCAwLjAwIDAuMDAgNDAwLjAwIDQwMC4wMCkKKyAg
ICAgICAgICApCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgIChHcmFwaGljc0xh
eWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiA1MC4wMCA1MC4wMCkKKyAgICAgICAgICAgICAg
KGJvdW5kcyA3NS4wMCA3NS4wMCkKKyAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAg
ICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgICAgIChyZWN0IDAuMDAgMC4w
MCA3NS4wMCA3NS4wMCkKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>