<?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>237128</bug_id>
          
          <creation_ts>2022-02-23 21:19:19 -0800</creation_ts>
          <short_desc>[macOS][REGRESSION] (r289518): Form controls are scaled twice on Retina display</short_desc>
          <delta_ts>2022-03-01 15:18:10 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845501</commentid>
    <comment_count>0</comment_count>
      <attachid>453070</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-23 21:19:19 -0800</bug_when>
    <thetext>Created attachment 453070
test case

Open the attached test case on Retina display.

Result: The progress control is scaled twice.

When displaying a form control, we have to create a scratch ImageBuffer, then ask the AppKit to render the form control to the GraphicsContext of the ImageBuffer and finally draw the ImageBuffer to the destination GraphicsContext. On Retina display, we have to scale the scratch ImageBuffer by the device scaling factor. The bug happens when creating this scratch ImageBuffer

Before r289518, RenderThemeMac::paintProgressBar() had this call:

    auto imageBuffer = ImageBuffer::createCompatibleBuffer(inflatedRect.size(), deviceScaleFactor, DestinationColorSpace::SRGB(), paintInfo.context());

And this would be translated to this function:

RefPtr&lt;ImageBuffer&gt; ImageBuffer::createCompatibleBuffer(const FloatSize&amp; size, float resolutionScale, const DestinationColorSpace&amp; colorSpace, const GraphicsContext&amp; context)
{
    return ImageBuffer::create(size, context.renderingMode(), resolutionScale, colorSpace, PixelFormat::BGRA8);
}

This means this version of createCompatibleBuffer() was just creating an ImageBuffer with context.renderingMode().

But after r289518, RenderThemeMac::paintProgressBar() the above call was changed to:

    auto imageBuffer = paintInfo.context().createImageBuffer(inflatedRect.size(), { deviceScaleFactor, deviceScaleFactor });

And this will be translated to these functions:

RefPtr&lt;ImageBuffer&gt; GraphicsContext::createImageBuffer(const FloatSize&amp; size, const DestinationColorSpace&amp; colorSpace, RenderingMode renderingMode, RenderingMethod renderingMethod) const
{
    if (renderingMethod == RenderingMethod::DisplayList)
        return ImageBuffer::create(size, renderingMode, ShouldUseDisplayList::Yes, RenderingPurpose::Unspecified, 1, colorSpace, PixelFormat::BGRA8);

     return ImageBuffer::create(size, renderingMode, 1, colorSpace, PixelFormat::BGRA8);
}

RefPtr&lt;ImageBuffer&gt; GraphicsContext::createImageBuffer(const FloatSize&amp; size, const FloatSize&amp; scale, const DestinationColorSpace&amp; colorSpace, std::optional&lt;RenderingMode&gt; renderingMode, RenderingMethod renderingMethod) const
{
    auto expandedScaledSize = scaledImageBufferSize(size, scale);
    if (expandedScaledSize.isEmpty())
        return nullptr;

     auto clampingScale = clampingScaleForImageBufferSize(expandedScaledSize);

     auto imageBuffer = createImageBuffer(expandedScaledSize * clampingScale, colorSpace, renderingMode.value_or(this-&gt;renderingMode()), renderingMethod);
    if (!imageBuffer)
        return nullptr;

     imageBuffer-&gt;context().scale(clampingScale);

     // &apos;expandedScaledSize&apos; is mapped to &apos;size&apos;. So use &apos;expandedScaledSize / size&apos;
    // not &apos;scale&apos; because they are not necessarily equal.
    imageBuffer-&gt;context().scale(expandedScaledSize / size);
    return imageBuffer;
}

So rr289518 changed the behavior here to scale the size by the FloatSize &apos;scale&apos; and always create the ImageBuffer with resolutionScale = 1. Moreover it handles the clamping and it scales the GraphicsContext of the ImageBuffer by &apos;scale&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845502</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-23 21:21:17 -0800</bug_when>
    <thetext>rdar://89064642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845512</commentid>
    <comment_count>2</comment_count>
      <attachid>453073</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-23 22:03:22 -0800</bug_when>
    <thetext>Created attachment 453073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845697</commentid>
    <comment_count>3</comment_count>
      <attachid>453073</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-24 11:57:54 -0800</bug_when>
    <thetext>Comment on attachment 453073
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:424
&gt; +    WEBCORE_EXPORT RefPtr&lt;ImageBuffer&gt; createLogicalImageBuffer(const FloatSize&amp;, const FloatSize&amp; scale = { 1, 1 }, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt, RenderingMethod = RenderingMethod::Default) const;
&gt; +    WEBCORE_EXPORT RefPtr&lt;ImageBuffer&gt; createLogicalImageBuffer(const FloatRect&amp;, const FloatSize&amp; scale = { 1, 1 }, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt, RenderingMethod = RenderingMethod::Default) const;

We need a comment here to help me understand what &quot;logical&quot; means in this context. Perhaps we need a better name than &quot;logical&quot;.

Is the key points whether the scale passed in compounds with the scale of the content, or replaces it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845809</commentid>
    <comment_count>4</comment_count>
      <attachid>453073</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-24 15:50:16 -0800</bug_when>
    <thetext>Comment on attachment 453073
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:424
&gt;&gt; +    WEBCORE_EXPORT RefPtr&lt;ImageBuffer&gt; createLogicalImageBuffer(const FloatRect&amp;, const FloatSize&amp; scale = { 1, 1 }, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt, RenderingMethod = RenderingMethod::Default) const;
&gt; 
&gt; We need a comment here to help me understand what &quot;logical&quot; means in this context. Perhaps we need a better name than &quot;logical&quot;.
&gt; 
&gt; Is the key points whether the scale passed in compounds with the scale of the content, or replaces it?

I think the trouble here is these three methods provide different levels of compatibility with the underling ImageBuffer.I think the difference between them is:

1. createImageBuffer(): It inherits RenderingMode and RenderingMethod from the underlying ImageBuffer.
2. createLogicalImageBuffer(): It inherits RenderingMode and RenderingMethod from the underlying ImageBuffer. It also transforms the context of the created ImageBuffer to provide logical coordinates to the caller. It scales the context by &apos;scale&apos; and it translates it by &apos;rect.location()&apos;. It handles the clamping also.
3. createCompatibleImageBuffer(): Similar to createLogicalImageBuffer() but it inherits the scale of the GraphicsContext instead of taking it as a parameter.

How about these names:
1. createTransformedImageBuffer() // This is a little bit misleading since the ImageBuffer is not transformed. What is transformed is the context. Besides we have to transform the coordinates anyway for CG to have the origin at the top-left corner.
2. createImageBufferInLogicalCoordinates() // Ditto
3. createImageBufferAndTransformContext() // Ditto
4. createImageBufferAndScaleContext() and createImageBufferAndScaleTranslateContext() // One for the FloatSize version and the other for the FloatRect version.
5. createDrawingImageBuffer() // Since we make it ready for drawing.
6. createImageBufferReadyForDrawing() // Since we make it ready for drawing.
7. createImageBufferAndPrepareForDrawing() // Since we make it ready for drawing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846772</commentid>
    <comment_count>5</comment_count>
      <attachid>453427</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-28 14:23:47 -0800</bug_when>
    <thetext>Created attachment 453427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846787</commentid>
    <comment_count>6</comment_count>
      <attachid>453427</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-28 14:43:26 -0800</bug_when>
    <thetext>Comment on attachment 453427
Patch

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

r=mews

&gt; Source/WebCore/ChangeLog:9
&gt; +        Using the name GraphicsContext::createImageBuffer() for different behaviors

I love the idea of using three different names for these three different functions. But I have no idea when each of these should be used when; the names do not yet make that clear to me. Some of these create bigger higher-resolution buffers. Are those called &quot;scaled&quot; buffers? What does &quot;aligned&quot; mean, scaled to match an underlying context’s resolution?

&gt; Source/WebCore/ChangeLog:19
&gt; +           It can be forced to create a none accelerated local ImageBuffer for example.

&quot;none accelerated&quot; -&gt; &quot;non-accelerated&quot;

&gt; Source/WebCore/ChangeLog:32
&gt; +        To Fix this bug:

Nit: &quot;Fix&quot; -&gt; &quot;fix&quot;

&gt; Source/WebCore/platform/graphics/RenderingMode.h:39
&gt; +enum class RenderingMethod : uint8_t { Local, DisplayList };

uint8_t -&gt; bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847139</commentid>
    <comment_count>7</comment_count>
      <attachid>453522</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-01 12:30:31 -0800</bug_when>
    <thetext>Created attachment 453522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847141</commentid>
    <comment_count>8</comment_count>
      <attachid>453427</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-01 12:37:15 -0800</bug_when>
    <thetext>Comment on attachment 453427
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        Using the name GraphicsContext::createImageBuffer() for different behaviors
&gt; 
&gt; I love the idea of using three different names for these three different functions. But I have no idea when each of these should be used when; the names do not yet make that clear to me. Some of these create bigger higher-resolution buffers. Are those called &quot;scaled&quot; buffers? What does &quot;aligned&quot; mean, scaled to match an underlying context’s resolution?

Yes, the &quot;scaled&quot; are used to create higher-resolution buffers. The &quot;aligned&quot; means the coordinates of the created ImageBuffer are aligned with the coordinates of the creator GraphicsContext. I added these statements in the Source/WebCore/ChangeLog:

        1) createImageBuffer(): ...
           
           The caller of this method usually uses a framework to draw some custom
           drawing and it just needs a scratch buffer to be drawn in the place of
           a render object. The caller does not require any transformation to be
           applied to the GraphicsContext of the ImageBuffer before starting its
           custom drawing. Drawing the form controls using AppKit is an example
           of such case.

        2) createScaledImageBuffer(): ...

           This method is suitable for cases when the overall scaleFatcor
           (device ScaleFactor + clamping ScaleFactor) has be known to the caller
           in advance. No clamping will be required in this case. SVG filter,
           masker, clipper and gradient are the callers to this function.

        3) createAlignedImageBuffer(): ...

           Usually the purpose of this method is to transfer the drawing from a
           layer to a scratch ImageBuffer temporarily then draw the scratch
           ImageBuffer in the place of the original drawing. Drawing a PDFDocument
           image, for example, requires using this method.

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +           It can be forced to create a none accelerated local ImageBuffer for example.
&gt; 
&gt; &quot;none accelerated&quot; -&gt; &quot;non-accelerated&quot;

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:32
&gt;&gt; +        To Fix this bug:
&gt; 
&gt; Nit: &quot;Fix&quot; -&gt; &quot;fix&quot;

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/RenderingMode.h:39
&gt;&gt; +enum class RenderingMethod : uint8_t { Local, DisplayList };
&gt; 
&gt; uint8_t -&gt; bool

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847209</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-01 15:18:03 -0800</bug_when>
    <thetext>Committed r290679 (247950@main): &lt;https://commits.webkit.org/247950@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453522.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>453070</attachid>
            <date>2022-02-23 21:19:19 -0800</date>
            <delta_ts>2022-02-23 21:19:19 -0800</delta_ts>
            <desc>test case</desc>
            <filename>hidpi-progress-bar.html</filename>
            <type>text/html</type>
            <size>240</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PHN0eWxlPgogICAgLmJveCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdp
ZHRoOiAxMDBweDsKICAgICAgICBoZWlnaHQ6IDEwMHB4OwogICAgfQo8L3N0eWxlPgo8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2Vuc3VyZS1oaWRwaS5qcyI+PC9zY3JpcHQ+Cjxib2R5PgogICAgPHBy
b2dyZXNzIGNsYXNzPSJib3giIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSIxMDAiPjwvcHJvZ3Jl
c3M+CjwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453073</attachid>
            <date>2022-02-23 22:03:22 -0800</date>
            <delta_ts>2022-02-28 14:23:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237128-20220223220321.patch</filename>
            <type>text/plain</type>
            <size>29971</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZmNWQxZWIzMmM4NmQ2
Y2U2ZGNlMzY4YzViNzZjZTI0ZmQyMTMxYi4uMDI1NGZkMmRkNDJkNTcyYjk4MzUzYzU0MDdmMjZh
YTczZmFiYTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIyLTAyLTIzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU11bUkVHUkVT
U0lPTl0gKHIyODk1MTgpOiBGb3JtIGNvbnRyb2xzIGFyZSBzY2FsZWQgdHdpY2Ugb24gUmV0aW5h
IGRpc3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzEyOAorICAgICAgICByZGFyOi8vODkwNjQ2NDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2luZyB0aGUgbmFtZSBHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKCkgZm9yIGRpZmZlcmVudCBiZWhhdmlvcnMKKyAgICAgICAgd2Fz
IGEgbWlzdGFrZSBpbiByMjg5NTE4LiBUbyBjbGVhbiB0aGlzIHVwLCB0aGUgY3JlYXRlSW1hZ2VC
dWZmZXIoKSB2ZXJzaW9uCisgICAgICAgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIEdyYXBoaWNzQ29u
dGV4dCBvZiB0aGUgSW1hZ2VCdWZmZXIgd2lsbCBiZSByZW5hbWVkCisgICAgICAgIGNyZWF0ZUxv
Z2ljYWxJbWFnZUJ1ZmZlcigpLiBTbyB3ZSB3aWxsIGhhdmUgdGhlc2UgdGhyZWUgbWV0aG9kcyBp
bgorICAgICAgICBHcmFwaGljc0NvbnRleHQ6CisKKyAgICAgICAgMSkgY3JlYXRlSW1hZ2VCdWZm
ZXIoKTogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgdG8gY3JlYXRlCisg
ICAgICAgICAgIGFuIEltYWdlQnVmZmVyIHNpbWlsYXIgdG8gdGhlIHVuZGVybHlpbmcgSW1hZ2VC
dWZmZXIgb2YgR3JhcGhpY3NDb250ZXh0LgorICAgICAgICAgICBCdXQgaXQgZ2l2ZXMgYWJpbGl0
eSB0byBjaGFuZ2UgdGhlIHJlbmRlcmluZ01vZGUgYW5kIHRoZSB0eXBlIG9mIHRoZQorICAgICAg
ICAgICBjcmVhdGVkIEltYWdlQnVmZmVyLiBTbyBpdCBjYW4gYmUgZm9yY2VkIHRvIGNyZWF0ZSBh
IGxvY2FsIEltYWdlQnVmZmVyCisgICAgICAgICAgIGZvciBleGFtcGxlLgorCisgICAgICAgIDIp
IGNyZWF0ZUxvZ2ljYWxJbWFnZUJ1ZmZlcigpOiBUaGlzIGlzIHNpbWlsYXIgdG8gY3JlYXRlSW1h
Z2VCdWZmZXIoKSBidXQKKyAgICAgICAgICAgaXQgYWx3YXlzIGNyZWF0ZXMgdGhlIEltYWdlQnVm
ZmVyIHdpdGggcmVzb2x1dGlvblNjYWxlID0gMSBzbyBpdAorICAgICAgICAgICBzY2FsZXMgdGhl
IHNpemUgYnkgdGhlIHNjYWxpbmcgZmFjdG9yLiBJdCB0cmFuc2Zvcm1zIHRoZSBHcmFwaGljc0Nv
bnRleHQKKyAgICAgICAgICAgb2YgdGhlIEltYWdlQnVmZmVyLiBTbyBpdCBzY2FsZXMgaXQgd2l0
aCB0aGUgc2NhbGluZyBmYWN0b3IgYW5kIGl0IAorICAgICAgICAgICB0cmFuc2xhdGVzIGl0cyBj
b29yZGluYXRlcyBvcmlnaW4gZm9yIHRoZSBGbG9hdFJlY3QgdmVyc2lvbi4gSXQgYWxzbworICAg
ICAgICAgICBoYW5kbGVzIHRoZSBjbGFtcGluZyBpZiBuZWVkZWQuCisKKyAgICAgICAgMykgY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCk6IFRoaXMgaXMgc2ltaWxhciB0byBjcmVhdGVMb2dp
Y2FsSW1hZ2VCdWZmZXIoKQorICAgICAgICAgICBidXQgaXQgZG9lcyBub3QgdGFrZSBhIHNjYWxp
bmcgZmFjdG9yIGFyZ3VtZW50LiBJdCBpbmhlcml0cyBpdCBmcm9tCisgICAgICAgICAgIHRoZSBH
cmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgVG8gRml4IHRoaXMgYnVnOgorCisgICAgICAgIEZv
cm0gY29udHJvbHMgaGF2ZSB0byB1c2UgdGhlIGZpcnN0IHZlcnNpb24gb2YgY3JlYXRlSW1hZ2VC
dWZmZXIoKSB3aGljaAorICAgICAgICBzdGlsbCBoYXMgdGhlIHNhbWUgbmFtZSBpbnN0ZWFkIG9m
IHVzaW5nIHRoZSBzZWNvbmQgdmVyc2lvbiB3aGljaCB3aWxsCisgICAgICAgIGJlIHJlbmFtZWQg
Y3JlYXRlTG9naWNhbEltYWdlQnVmZmVyKCkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oaWRwaS9o
aWRwaS1wcm9ncmVzcy1iYXIuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVMb2dpY2FsSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVMb2dpY2FsSW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjcmVhdGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dp
dGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9y
SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NC
YXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlw
cGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4
dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpjcmVhdGVUaWxlSW1hZ2UgY29uc3QpOgorCiAyMDIyLTAyLTIzICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbSUZDXVtJbnRlZ3JhdGlvbl0gTGluZUxheW91
dDo6Zmlyc3RMaW5lUGh5c2ljYWxCYXNlbGluZS9sYXN0TGluZUxvZ2ljYWxCYXNlbGluZSBzaG91
bGQgZmxpcCBib3ggYmFzZWxpbmUgdmFsdWUgZm9yIHZlcnRpY2FsLWxyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNh
ZjI1N2RlNGQ4YzlmZmYwZWQzMjJhNDRlMTc4MGUwZTkyMjg3NjcuLmJjODgwZGM0Y2RkMWE5MzYw
NzA4ZjEyOGFiZDk1ZjhhZWYzY2I0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjIt
MDItMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW21h
Y09TXVtSRUdSRVNTSU9OXSAocnIyODk1MTgpOiBGb3JtIGNvbnRyb2xzIGFyZSBzY2FsZWQgdHdp
Y2Ugb24gUmV0aW5hIGRpc3BsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzEyOAorICAgICAgICByZGFyOi8vODkwNjQ2NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNy
ZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDIt
MjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFyZSBtb3Jl
IGNvZGUgYmV0d2VlbiBzZXJ2aWNlIGFuZCBzaGFyZWQgd29ya2VycyBmb3IgY29udGV4dCBjb25u
ZWN0aW9uIGVzdGFibGlzaG1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDY3YzY5MjNjYWZkMjE4YTljZTJjZDJi
ZjRhMDU5ZWUxN2FlYWRhZDIuLmRhMTY0OTYyNDVhMGI0OTU3MDc5ZDBlMDA2OTMzMjk0YzdlODk2
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtNTc3LDE1ICs1NzcsMTUgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRl
eHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25z
dAogICAgIHJldHVybiBzY2FsZWRJbWFnZUJ1ZmZlclNpemUoc2l6ZSwgc2NhbGVGYWN0b3IoKSk7
CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdNZXRob2Qg
cmVuZGVyaW5nTWV0aG9kKSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0aG9kIHJl
bmRlcmluZ01ldGhvZCkgY29uc3QKIHsKICAgICBpZiAocmVuZGVyaW5nTWV0aG9kID09IFJlbmRl
cmluZ01ldGhvZDo6RGlzcGxheUxpc3QpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMsIFJlbmRl
cmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdN
b2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIFNob3VsZFVzZURpc3BsYXlMaXN0
OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01v
ZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGVMb2dpY2FsSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKIHsKICAgICBhdXRvIGV4cGFu
ZGVkU2NhbGVkU2l6ZSA9IHNjYWxlZEltYWdlQnVmZmVyU2l6ZShzaXplLCBzY2FsZSk7CiAgICAg
aWYgKGV4cGFuZGVkU2NhbGVkU2l6ZS5pc0VtcHR5KCkpCkBAIC01OTMsNyArNTkzLDcgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY28KIAogICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5n
U2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoZXhwYW5kZWRTY2FsZWRTaXplKTsKIAotICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFNpemUgKiBjbGFt
cGluZ1NjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRl
cmluZ01vZGUoKSksIHJlbmRlcmluZ01ldGhvZCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNy
ZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkU2l6ZSAqIGNsYW1waW5nU2NhbGUsIDEsIGNv
bG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHJlbmRlcmluZ01ldGhvZCk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTYwNSw3ICs2MDUsNyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjbwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVm
UHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJl
bmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlTG9naWNhbEltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01v
ZGU+IHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0
CiB7CiAgICAgYXV0byBleHBhbmRlZFNjYWxlZFJlY3QgPSBzY2FsZWRJbWFnZUJ1ZmZlclJlY3Qo
cmVjdCwgc2NhbGUpOwogICAgIGlmIChleHBhbmRlZFNjYWxlZFJlY3QuaXNFbXB0eSgpKQpAQCAt
NjEzLDcgKzYxMyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvCiAKICAgICBhdXRvIGNsYW1w
aW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGV4cGFuZGVkU2NhbGVk
UmVjdC5zaXplKCkpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVy
KGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCBy
ZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIHJlbmRlcmluZ01l
dGhvZCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVk
U2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCAxLCBjb2xvclNwYWNlLCByZW5kZXJp
bmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC02MzAsMTIgKzYzMCwxMiBAQCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjbwogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0aG9k
KSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZUZhY3Rv
cigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKCksIHJlbmRlcmluZ01ldGhvZCk7CisgICAg
cmV0dXJuIGNyZWF0ZUxvZ2ljYWxJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZUZhY3RvcigpLCBjb2xv
clNwYWNlLCByZW5kZXJpbmdNb2RlKCksIHJlbmRlcmluZ01ldGhvZCk7CiB9CiAKIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJl
bmRlcmluZ01vZGUoKSwgcmVuZGVyaW5nTWV0aG9kKTsKKyAgICByZXR1cm4gY3JlYXRlTG9naWNh
bEltYWdlQnVmZmVyKHJlY3QsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01v
ZGUoKSwgcmVuZGVyaW5nTWV0aG9kKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggYjQ0NzhlODVlYTEzNzQ5N2M0OTA2YTNmYmZjM2E4YzlhZTBiZGJjYy4uZTE0MGNiNjgz
YzJjODBhNTIzNWQwMjE5ZmQzM2M1YThhODBiZDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxOCw4ICs0MTgsMTAg
QEAgcHVibGljOgogCiAgICAgSW50U2l6ZSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0
IEZsb2F0U2l6ZSYpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0
ZDo6bnVsbG9wdCwgUmVuZGVyaW5nTWV0aG9kID0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0KSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEg
fSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0LCBSZW5k
ZXJpbmdNZXRob2QgPSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQsIFJlbmRlcmluZ01ldGhvZCA9IFJl
bmRlcmluZ01ldGhvZDo6RGVmYXVsdCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUxvZ2ljYWxJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCwgUmVuZGVyaW5nTWV0aG9kID0gUmVuZGVyaW5n
TWV0aG9kOjpEZWZhdWx0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUxvZ2ljYWxJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmIHNjYWxlID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdN
b2RlPiA9IHN0ZDo6bnVsbG9wdCwgUmVuZGVyaW5nTWV0aG9kID0gUmVuZGVyaW5nTWV0aG9kOjpE
ZWZhdWx0KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBSZW5kZXJpbmdNZXRob2QgPSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRob2QgPSBS
ZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OwpAQCAtNTQ5LDggKzU1MSw2IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbGxFbGxpcHNlQXNQYXRoKGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
IHZvaWQgc3Ryb2tlRWxsaXBzZUFzUGF0aChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdN
b2RlLCBSZW5kZXJpbmdNZXRob2QpIGNvbnN0OwotCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5l
Qm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBw
cmludGluZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0
cm9rZVdpZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCA0YzdkZDhhNjMwZjg5NDA4YmVjMTAxZTJlYmRjNGVjYzkwY2Y4NGJjLi5i
OWEzMTBmZDQxNjU5ODFjNmY1MTczODc3ZmIyMWIzZjQ0OWQxMmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC00OTgsMTIgKzQ5OCwxMiBAQCB2b2lkIFJl
Y29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdAogICAgIHJlY29yZENsaXBUb0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBkZXN0UmVjdCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXI6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01l
dGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVy
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCByZW5k
ZXJpbmdNZXRob2QpIGNvbnN0CiB7CiAgICAgaWYgKHJlbmRlcmluZ01ldGhvZCA9PSBSZW5kZXJp
bmdNZXRob2Q6OkRlZmF1bHQpCiAgICAgICAgIHJlbmRlcmluZ01ldGhvZCA9IFJlbmRlcmluZ01l
dGhvZDo6RGlzcGxheUxpc3Q7CiAKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRo
b2QpOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0
aG9kKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCmluZGV4IDNkMzgzNmZmM2Q1ZjdiZDZjODZkYjhkNzI5MGJlZDk1OTA3MmZkMGMu
LjE0YzVkYzIzZGJmNGZjZTZkYjlkNzYzYTQ3YTFjNzU1MjM5ZjQyZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHByb3RlY3RlZDoK
ICAgICBjb25zdCBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwogICAgIENvbnRl
eHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4sIFJl
bmRlcmluZ01ldGhvZCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQ
bGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDc0MTkxNWMwYzAzZDQxYjMzYjU3Mzlj
OTY0NGMzNzcyNjVlZTFjZjguLjMwZTAyYzRlMDNiOGFiYmZiYzFlMzlmZGFmMjI3YjI0ZWI3NTdl
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTczNCw3ICs3
MzQsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29u
dGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVy
KSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVj
dChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0
aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6
ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0
aCksIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOworICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LnNpemUoKSAr
IDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1Jl
Y3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDVi
YTk0Y2ZkNWRiYjFlNDRiNWZiZDNjNWJjMTFhZDE5YWVhZjhmNWQuLjhkNWU3MmM5OWE5ODllZmE3
ODdiZmI5NzMzMzVjMGU5OTg5MjkyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBSZW5kZXJM
YXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogICAgIGF1dG8gbG9naWNhbFNpemUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJT
Y2FsZShtX2ZpbHRlclJlZ2lvbi5zaXplKCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8
IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUpCi0gICAgICAgIG1f
c291cmNlSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKG1fZmlsdGVyUmVnaW9uLnNp
emUoKSwgZmlsdGVyLmZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgbV9zb3VyY2VJbWFnZSA9IGNvbnRl
eHQuY3JlYXRlTG9naWNhbEltYWdlQnVmZmVyKG1fZmlsdGVyUmVnaW9uLnNpemUoKSwgZmlsdGVy
LmZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIucmVu
ZGVyaW5nTW9kZSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6
OmJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91
dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA4NzY2N2RlMmRl
ZDI5NWQ5MzU4MDJiMzM4OTJhMGMzMjFjN2UzMmVjLi4wMTBlY2JhZWQ4N2E3M2E0MjBhZmI5N2U4
ZTgwZmVhNjM3OWZlZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCkBAIC05OTQsNyArOTk0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0
QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBHcmFwaGljc0NvbnQKIAogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gby5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCk7CiAKLSAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdl
QnVmZmVyKGNvbWJvQm94U2l6ZSwgeyBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0
b3IgfSk7CisgICAgYXV0byBjb21ib0JveEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFn
ZUJ1ZmZlcihjb21ib0JveFNpemUsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBpZiAoIWNvbWJv
Qm94SW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAxOCw3ICsxMDE4LDcgQEAg
dm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBHcmFwaGljc0NvbnQKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NV
SVVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25LZXkgOiAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAogICAgIH1dOwogCi0g
ICAgYXV0byBjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1
ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZp
Y2VTY2FsZUZhY3RvciB9KTsKKyAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIGRldmlj
ZVNjYWxlRmFjdG9yKTsKICAgICBpZiAoIWNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTQwMiw3ICsxNDAyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3Qg
UGEKICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclByb2dy
ZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVy
T2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5kZXRl
cm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBwYWludEluZm8uY29udGV4dCgpLmNyZWF0ZUltYWdlQnVmZmVyKGluZmxhdGVkUmVj
dC5zaXplKCksIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBwYWludEluZm8uY29udGV4dCgpLmNyZWF0ZUltYWdlQnVmZmVy
KGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDg3
YTFhZTU5MWE1NzAyZDc5MjdjYjhjNjhlNTk1ZjRjYjBmMGNiNjkuLjI1YTA2NjU3NDM0NjczZGVk
NmRhYzlhMjk5YzkzZjYzNGVhZGIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTE2Miw3ICsx
NjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlz
VmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwgY2xpcHBlZENvbnRlbnRCb3VuZHMs
IGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBp
bWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4g
TWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBpbmcsIHRob3Vn
aC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGNs
aXBwZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9
IGNvbnRleHQuY3JlYXRlTG9naWNhbEltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBz
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBiOTYzNjJjOTdhM2I0MDNkNWU0MDRiMmNjZjM4
NzA0ZDlhOTYyNDg1Li41NjcyYmYzMDY4N2Q4N2JiN2NhNTI3MWIwYzVhMjUzZjlkMThiMTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlCiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiAjZW5kaWYKIAotICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IGNvbnRleHQtPmNyZWF0ZUltYWdl
QnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGZpbHRlclNjYWxlLCBjb2xvclNwYWNl
LCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBzb3VyY2VH
cmFwaGljID0gY29udGV4dC0+Y3JlYXRlTG9naWNhbEltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRy
YXdpbmdSZWdpb24sIGZpbHRlclNjYWxlLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXIt
PnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAgIEFT
U0VSVChtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAg
ICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3Bw
CmluZGV4IDRhZTdjY2UzM2E3NzUzMmE0N2JlMGJmMzA0YTgyNGMxMjIzMjcyMjYuLjJiYTg5OGZh
NWQ2ZDhjMzc1N2Q4OWU1ZmE2M2QzYzNiOGQ0NmFkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApA
QCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250
ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAgIC8vIERldGVybWlu
ZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBjbGlwcGVyLiBUaGUgc2l6ZSBvZiBpbnRlcm1lZGlhdGUg
SW1hZ2VCdWZmZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhhbiBrTWF4RmlsdGVyU2l6ZS4KICAg
ICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVwYWludFJlY3Quc2l6ZSgpLCBzY2Fs
ZSk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJl
cGFpbnRSZWN0LCBzY2FsZSk7CisgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVM
b2dpY2FsSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIHNjYWxlKTsKICAgICBpZiAoIW1hc2tJbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IDNkYjAxMzEx
ZGY1YjVjOTQ3ZTA3YjQ2YzU4YWVkYTc0NzJmMmYyNWYuLmNmYTc2NzRhNzE5YmQzNGY3ZGJhZTVi
MjU5MDE1N2Y2Mzc3ODIzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAvLyBGSVhN
RSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFs
bHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBhbHBo
YSBtYXNraW5nLCB0aG91Z2guCi0gICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IGNvbnRl
eHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSwgbWFza0NvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICBtYXNrZXJEYXRhLT5tYXNr
SW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVMb2dpY2FsSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIHNj
YWxlLCBtYXNrQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAg
ICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggYmNlZmU1NzVmYzViMjRhOTFkZmI2YTMyNmQ2MGM4
ZDkxYzUyYWI2YS4uMTViZTVlNzFkZjc0MTQ0OWY2ZWI2NGRiZjc0ZjVlNTgzZGY4MTcwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
JiBjCiAgICAgYXV0byB0aWxlU2l6ZSA9IHJvdW5kZWRVbnNjYWxlZEltYWdlQnVmZmVyU2l6ZShz
aXplLCBzY2FsZSk7CiAKICAgICAvLyBGSVhNRTogVXNlIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3Qs
IHNjYWxlKSwgZGVsZXRlIHRoZSBhYm92ZSBjYWxjdWxhdGlvbnMgYW5kIGZpeCAndGlsZUltYWdl
VHJhbnNmb3JtJwotICAgIGF1dG8gdGlsZUltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZl
cih0aWxlU2l6ZSwgc2NhbGUpOworICAgIGF1dG8gdGlsZUltYWdlID0gY29udGV4dC5jcmVhdGVM
b2dpY2FsSW1hZ2VCdWZmZXIodGlsZVNpemUsIHNjYWxlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5LmNwcAppbmRleCA4N2FhYTBhZTIxOTBlOTI1NWE1MzRkY2JhNTFhMTA3NmU4
MGI2NDlhLi4wZGU0YmFhYWJkY2Y2MTU1NDVmMzRjYWZiOTQwYWM2NjBlMTczZjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00NDIsNyArNDQy
LDcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmZsdXNoQ29udGV4dChH
cmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpGbHVzaENvbnRleHQoaWRlbnRpZmllcikpOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0
aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElL
RUxZKCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNDUwLDIxICs0NTAsMjEgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2EKICAgICB9CiAK
ICAgICBpZiAocmVuZGVyaW5nTWV0aG9kICE9IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkKLSAg
ICAgICAgcmV0dXJuIFJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBjb2xvclNwYWNl
LCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOworICAgICAgICByZXR1cm4gUmVjb3Jk
ZXI6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKIAotICAgIHJldHVybiBtX3JlbmRlcmlu
Z0JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIDEsIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2Vu
ZC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5y
ZW5kZXJpbmdNb2RlKCkpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01l
dGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7CiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0g
cmVuZGVyaW5nTWV0aG9kID09IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCA/IHRoaXMtPnJlbmRl
cmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci0gICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29s
b3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKKyAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGVMb2dpY2FsSW1hZ2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0b3Io
KSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKIH0KIAogUmVm
UHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhv
ZCkgY29uc3QKIHsKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNZXRob2QgPT0g
UmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0ID8gdGhpcy0+cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdN
b2RlLCByZW5kZXJpbmdNZXRob2QpOworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZUxvZ2ljYWxJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5k
ZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCBjNjc4Zjg4
MzJiZWY1YzJjYTcyMDRmNDY4Y2I3MWEyZTRhOTZiZjk1Li44N2U5Y2I0ZmU3NDRmNzNiZmFkM2Jj
MWVjOWM0MzEzNjFkNTUxZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmgKQEAgLTEzOCw5ICsxMzgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVjb3JkUmVz
b3VyY2VVc2UoY29uc3QgV2ViQ29yZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsKICAgICBib29sIHJl
Y29yZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kKSBjb25zdCBmaW5hbDsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFdlYkNvcmU6
OlJlbmRlcmluZ01ldGhvZCA9IFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkgY29u
c3QgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2QgPSBXZWJDb3JlOjpSZW5kZXJpbmdNZXRo
b2Q6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ01vZGU+LCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRo
b2QpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZCkg
Y29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kKSBjb25z
dCBmaW5hbDsKIAogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2Rl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBtX2ltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJiNmRhNjM1ODNlNTJjZTAzMGRjY2FhN2Y0NzZk
YjAxMzIzY2Y4Y2MuLjdjYjBiMmQ0OGFjZDdlOTUwNjgzNjYxMzc5YjNkYmQ5NmYyYmMwMmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdW1JFR1JFU1NJT05dIChycjI4OTUxOCk6IEZv
cm0gY29udHJvbHMgYXJlIHNjYWxlZCB0d2ljZSBvbiBSZXRpbmEgZGlzcGxheQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTI4CisgICAgICAgIHJk
YXI6Ly84OTA2NDY0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9oaWRwaS9oaWRwaS1wcm9ncmVzcy1iYXItZXhwZWN0ZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9oaWRwaS9oaWRwaS1wcm9ncmVzcy1iYXIuaHRtbDogQWRkZWQu
CisKIDIwMjItMDItMjMgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtTdWJwaXhlbF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhi
b3gvYXV0by1tYXJnaW5zLTAwMS5odG1sIGZhaWxzIGF0IGNlcnRhaW4gZm9udCBzaXplcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9oaWRwaS1wcm9ncmVzcy1iYXItZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaGlkcGktcHJvZ3Jlc3MtYmFyLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ4ZTUwM2ZlNGMyOWZhMzU4NjhlYTgwY2I4NTAxMTE1YWFh
Y2VjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaGlkcGktcHJv
Z3Jlc3MtYmFyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPHN0eWxlPgorICAgIC5i
b3ggeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9lbnN1cmUtaGlkcGkuanMiPjwvc2NyaXB0PgorPGJvZHk+CisgICAgPGRpdiBjbGFz
cz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaGlkcGktcHJvZ3Jlc3MtYmFyLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2hpZHBpLXByb2dyZXNzLWJhci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU1NGJhNzZkZDhmMWJmYzE3ODg4MWYwZTdhMDFmMGI0YWFhNWE2YTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2hpZHBpLXByb2dyZXNzLWJhci5odG1s
CkBAIC0wLDAgKzEsMTIgQEAKKzxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZW5zdXJlLWhpZHBpLmpz
Ij48L3NjcmlwdD4KKzxib2R5PgorICAgIDxwcm9ncmVzcyBjbGFzcz0iYm94IiBtaW49IjAiIG1h
eD0iMTAwIiB2YWx1ZT0iMTAwIj48L3Byb2dyZXNzPgorICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453427</attachid>
            <date>2022-02-28 14:23:47 -0800</date>
            <delta_ts>2022-02-28 17:10:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237128-20220228142346.patch</filename>
            <type>text/plain</type>
            <size>47684</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUyN2E1ZGRjYjViYzhj
YjczOGNlZmJjZDc3Y2I3YjJmMTMzMjI5Yi4uZjJhMzk3YTEyZGUwMjJjZTIwYzNmMGJhNDc1ODIz
YmYyOWM3ODA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wMi0yOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdW1JFR1JF
U1NJT05dIChyMjg5NTE4KTogRm9ybSBjb250cm9scyBhcmUgc2NhbGVkIHR3aWNlIG9uIFJldGlu
YSBkaXNwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcxMjgKKyAgICAgICAgcmRhcjovLzg5MDY0NjQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgdGhlIG5hbWUgR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGZvciBkaWZmZXJlbnQgYmVoYXZpb3JzCisgICAgICAgIHdh
cyBhIG1pc3Rha2UgaW4gcjI4OTUxOC4gVG8gY2xlYW4gdGhpcyB1cCwgdGhlIGNyZWF0ZUltYWdl
QnVmZmVyKCkgdmVyc2lvbgorICAgICAgICB3aGljaCBzY2FsZXMgdGhlIEdyYXBoaWNzQ29udGV4
dCBvZiB0aGUgSW1hZ2VCdWZmZXIgd2lsbCBiZSByZW5hbWVkCisgICAgICAgIGNyZWF0ZVNjYWxl
ZEltYWdlQnVmZmVyKCkuIGFuZCB0aGUgZXhpc3RpbmcgY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKCkKKyAgICAgICAgd2lsbCBiZSByZW5hbWVkIGNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcigp
LiBTbyB3ZSB3aWxsIGhhdmUgdGhlc2UgdGhyZWUKKyAgICAgICAgbWV0aG9kcyBpbiBHcmFwaGlj
c0NvbnRleHQ6CisKKyAgICAgICAgMSkgY3JlYXRlSW1hZ2VCdWZmZXIoKTogVGhlIGRlZmF1bHQg
YmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgdG8gY3JlYXRlCisgICAgICAgICAgIGFuIEltYWdl
QnVmZmVyIHNpbWlsYXIgdG8gdGhlIHVuZGVybHlpbmcgSW1hZ2VCdWZmZXIgb2YgR3JhcGhpY3ND
b250ZXh0LgorICAgICAgICAgICBCdXQgaXQgZ2l2ZXMgYWJpbGl0eSB0byBjaGFuZ2UgdGhlIHJl
bmRlcmluZ01vZGUgYW5kIHRoZSByZW5kZXJpbmdNZXRob2QuCisgICAgICAgICAgIEl0IGNhbiBi
ZSBmb3JjZWQgdG8gY3JlYXRlIGEgbm9uZSBhY2NlbGVyYXRlZCBsb2NhbCBJbWFnZUJ1ZmZlciBm
b3IgZXhhbXBsZS4KKworICAgICAgICAyKSBjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcigpOiBUaGlz
IGlzIHNpbWlsYXIgdG8gY3JlYXRlSW1hZ2VCdWZmZXIoKSBidXQKKyAgICAgICAgICAgaXQgYWx3
YXlzIGNyZWF0ZXMgdGhlIEltYWdlQnVmZmVyIHdpdGggcmVzb2x1dGlvblNjYWxlID0gMSBzbyBp
dCBoYXMKKyAgICAgICAgICAgdG8gc2NhbGUgdGhlIHNpemUgYnkgdGhlIHNjYWxlRmFjdG9yIGJl
Zm9yZSBjYWxsaW5nIGNyZWF0ZUltYWdlQnVmZmVyKCkuCisgICAgICAgICAgIEl0IGFsc28gc2Nh
bGVzIHRoZSBHcmFwaGljc0NvbnRleHQgb2YgdGhlIGNyZWF0ZWQgSW1hZ2VCdWZmZXIgd2l0aCB0
aGUKKyAgICAgICAgICAgc2NhbGVGYWN0b3IgYW5kIGl0IHRyYW5zbGF0ZXMgaXRzIGNvb3JkaW5h
dGVzIG9yaWdpbiBmb3IgdGhlIEZsb2F0UmVjdAorICAgICAgICAgICB2ZXJzaW9uLiBJdCBhbHNv
IGhhbmRsZXMgdGhlIGNsYW1waW5nIGlmIG5lZWRlZC4KKworICAgICAgICAzKSBjcmVhdGVBbGln
bmVkSW1hZ2VCdWZmZXIoKTogVGhpcyBpcyBzaW1pbGFyIHRvIGNyZWF0ZVNjYWxlZEltYWdlQnVm
ZmVyKCkKKyAgICAgICAgICAgYnV0IGl0IGRvZXMgbm90IHRha2UgYSBzY2FsaW5nIGZhY3RvciBh
cmd1bWVudC4gSXQgaW5oZXJpdHMgaXQgZnJvbQorICAgICAgICAgICB0aGUgR3JhcGhpY3NDb250
ZXh0LgorCisgICAgICAgIFRvIEZpeCB0aGlzIGJ1ZzoKKworICAgICAgICBGb3JtIGNvbnRyb2xz
IGhhdmUgdG8gdXNlIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIGNyZWF0ZUltYWdlQnVmZmVyKCkgd2hp
Y2gKKyAgICAgICAgc3RpbGwgaGFzIHRoZSBzYW1lIG5hbWUgaW5zdGVhZCBvZiB1c2luZyB0aGUg
c2Vjb25kIHZlcnNpb24gd2hpY2ggd2lsbAorICAgICAgICBiZSByZW5hbWVkIGNyZWF0ZVNjYWxl
ZEltYWdlQnVmZmVyKCkuCisKKyAgICAgICAgQW5vdGhlciBjbGVhbmluZyBpcyB0byBwYXNzIFJl
bmRlcmluZ01ldGhvZCBhcyBhbiBzdGQ6Om9wdGlvbmFsIGFyZ3VtZW50CisgICAgICAgIHRoZSB0
aHJlZSBtZXRob2RzLiBUaGlzIG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRoZSB2YWx1ZSAiRGVmYXVs
dCIgc2luY2UKKyAgICAgICAgcGFzc2luZyBzdGQ6Om51bGxvcHQgd2lsbCBoYXZlIHRoZSBzYW1l
IG1lYW5pbmcuCisKKyAgICAgICAgVGVzdDogZmFzdC9oaWRwaS9oaWRwaS1mb3JtLWNvbnRyb2xz
LWRyYXdpbmctc2l6ZS5odG1sCisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5TGlz
dCBjb25zdCk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZCk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmRyYXdBcHBsZVBheUJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNs
b25lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVD
YWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JE
ZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdl
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3Vu
ZCk6CisKIDIwMjItMDItMjggIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gVW5hYmxlIHRvIHVwbG9hZCAiLnBhZ2VzIiBmaWxlcyB0byBmaWxl
IGlucHV0cyBhY2NlcHRpbmcgIi5wYWdlcyIgYW5kICIuanBlZyIgZmlsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
Yzk3YjYxNWNhMmM5MjI5YTZmZjU5Njg5ZDlkOWQxYWUyNTgyYjNjYy4uNDIxMDZkNTRhNzNmMDFh
NWY4ZmZlNjQ0ZTUyYTM2ZTBhMGY5YmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
Mi0wMi0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBb
bWFjT1NdW1JFR1JFU1NJT05dIChycjI4OTUxOCk6IEZvcm0gY29udHJvbHMgYXJlIHNjYWxlZCB0
d2ljZSBvbiBSZXRpbmEgZGlzcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3MTI4CisgICAgICAgIHJkYXI6Ly84OTA2NDY0MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6
Y3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCiAyMDIyLTAyLTI4ICBSb3NzIEtpcnNsaW5nICA8
cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyOTA1ODgpOiBC
cm9rZSBXaW5DYWlybyBhbmQgUGxheVN0YXRpb24gZGVidWcgYnVpbGRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCmluZGV4IDQwNDI5MTFkMDdiYzc3ODM5MDMwMTMx
ZDc4ZDczYTU1N2I2M2QwZWUuLmEyNDBiMDhkNWEyMzdmZDY4ODI0ZTdkODgwODFjOGI2YWE5Njcw
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OnJlcGxheURpc3BsYXlMaXN0KEdyYXBo
aWNzQ29udGV4dCogY3R4KSBjb25zdAogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBpbnRlcm1lZGlh
dGUgYnVmZmVyIGlzIG5vdCBuZWVkZWQgaWYgdGhlcmUgYXJlIG5vIGNvbXBvc2l0ZSBvcGVyYXRp
b25zLgogICAgIGF1dG8gY2xpcEJvdW5kcyA9IGN0eC0+Y2xpcEJvdW5kcygpOwogCi0gICAgYXV0
byBpbWFnZSA9IGN0eC0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNsaXBCb3VuZHMuc2l6
ZSgpKTsKKyAgICBhdXRvIGltYWdlID0gY3R4LT5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoY2xp
cEJvdW5kcy5zaXplKCkpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggYjVjMWJmM2RjNmQ0Y2U2
Y2EyY2MzOGZmOGQ4ZDZhZjU3ODhkYzE5OS4uZjRiOThiYTYyZTExOWEwNzcxMzEyZDNiODhjNDkx
OTM2ODM2ZWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBhZGp1c3RlZFBh
dHRlcm5DVE0uc2NhbGUoMS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVk
U3JjUmVjdC5zY2FsZSh4U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IGRlc3RD
b250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihhZGp1c3RlZFNpemUpOworICAgIGF1
dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGFkanVzdGVk
U2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBkb0N1c3RvbVBh
aW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAppbmRleCBmNjMxZTRmOWE3YjBlMTcyMTRhYzVhMDJhMzA3NDI4OWZjMDVmNzI0Li5jNjc4MDky
MTZiOTRhNTZiZWI4YjMyYmM5NmY0YmUxZWVjM2I3YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cApAQCAtMTYxMSw3ICsxNjExLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJjZUNhbnYKICAgICAgICAg
cmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2Jh
bENvbXBvc2l0ZSA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSkgewogICAgICAgICBpZiAoJnNv
dXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjb3B5
ID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNyY1JlY3Quc2l6ZSgpLCBjb2xvclNw
YWNlKCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb3B5ID0gYy0+Y3JlYXRlQWxpZ25lZElt
YWdlQnVmZmVyKHNyY1JlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKCkpKSB7CiAgICAgICAgICAgICAg
ICAgY29weS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCAtc3JjUmVjdC5sb2Nh
dGlvbigpKTsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAgICAgICAgICAg
IGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgp
IH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CkBA
IC0yNDU5LDcgKzI0NTksNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdQogICAgICAgICAgICAg
Zm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24gKyBvZmZzZXQsIEZv
bnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCi0gICAg
ICAgIGF1dG8gbWFza0ltYWdlID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKG1hc2tS
ZWN0LnNpemUoKSk7CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gYy0+Y3JlYXRlQWxpZ25lZElt
YWdlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVD
b2NvYS5tbQppbmRleCA5MTJhYjZhOWUxNjhiMDU4ZTBmMzg2MTdkODFjYzQ0OWFjM2IwNWYxLi4w
NDQxYTc3OTkwZDZkYjZlOTVkOWI5ZWE2YTM3ZjU0Zjg2NTU4MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0
aWMgQ0dQREZQYWdlUmVmIGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkKIHN0YXRpYyB2b2lkIGRy
YXdBcHBsZVBheUJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHUERGUGFnZVJlZiBw
YWdlLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAgLy8gQ3JlYXRlIGEgbG9jYWwgSW1h
Z2VCdWZmZXIgYmVjYXVzZSBkZWNvZGluZyB0aGUgUERGIGltYWdlcyBoYXMgdG8gaGFwcGVuIGlu
IFdlYlByb2Nlc3MuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5k
ZXJpbmdNZXRob2Q6OkxvY2FsKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVh
dGVBbGlnbmVkSW1hZ2VCdWZmZXIoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCmluZGV4IGY2ZmI4ZjkzYzg0ZjczYjZmZDJiZDk5ZTYzOGUyMzA2YjJmMzJkYmUu
LjM4Y2Y4Nzk2ZjlhODE3ZGI1ZTk2NDY3M2JjYmNhMDhkOGY3ODlhZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0OCw3ICsz
NDgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hl
ZEltYWdlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOworICAgICAgICBhdXRv
IGJ1ZmZlciA9IGN0eHQuY3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0
aWxlUmVjdC5zaXplKCkpKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHAKaW5kZXggYmRhNzAxMTA5OGZhNTE3YTY0NDMyYWZlY2JkMDUzYzFmOTU5NWM1MS4u
NjQ1ODRlNWNmZTAxMTg4MmVmYWIyZTIzYzNhNTk0ZTE3ODJmMjg5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICB1bnNpZ25lZCBnZW5lcmF0b3JI
YXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1f
Y2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRT
aXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4dC5z
Y2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGFkanVzdGVk
U2l6ZSk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVBbGln
bmVkSW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNjdjNjkyM2NhZmQyMThhOWNlMmNk
MmJmNGEwNTllZTE3YWVhZGFkMi4uMjE1NWJkMmViNjM2MzViNDJkYzA2ZTEyYjQzMDk4M2IyYjMz
ZGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC01NzcsMTUgKzU3NywxNSBAQCBJbnRTaXplIEdyYXBoaWNzQ29u
dGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNv
bnN0CiAgICAgcmV0dXJuIHNjYWxlZEltYWdlQnVmZmVyU2l6ZShzaXplLCBzY2FsZUZhY3Rvcigp
KTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhv
ZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewotICAgIGlmIChyZW5kZXJp
bmdNZXRob2QgPT0gUmVuZGVyaW5nTWV0aG9kOjpEaXNwbGF5TGlzdCkKLSAgICAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxh
eUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgaWYgKCFyZW5kZXJpbmdNZXRob2QgfHwgKnJlbmRl
cmluZ01ldGhvZCA9PSBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKQorICAgICAgICByZXR1cm4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRl
cmluZ01vZGUoKSksIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01v
ZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJp
bmdNb2RlKCkpLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhv
ZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVTY2Fs
ZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01l
dGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewogICAgIGF1dG8gZXhwYW5kZWRTY2FsZWRT
aXplID0gc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNpemUsIHNjYWxlKTsKICAgICBpZiAoZXhwYW5k
ZWRTY2FsZWRTaXplLmlzRW1wdHkoKSkKQEAgLTU5Myw3ICs1OTMsNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBjbwogCiAgICAgYXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvcklt
YWdlQnVmZmVyU2l6ZShleHBhbmRlZFNjYWxlZFNpemUpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkU2l6ZSAqIGNsYW1waW5nU2NhbGUs
IGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgp
KSwgcmVuZGVyaW5nTWV0aG9kKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlSW1hZ2VC
dWZmZXIoZXhwYW5kZWRTY2FsZWRTaXplICogY2xhbXBpbmdTY2FsZSwgMSwgY29sb3JTcGFjZSwg
cmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGNvCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJp
bmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBj
b25zdAogewogICAgIGF1dG8gZXhwYW5kZWRTY2FsZWRSZWN0ID0gc2NhbGVkSW1hZ2VCdWZmZXJS
ZWN0KHJlY3QsIHNjYWxlKTsKICAgICBpZiAoZXhwYW5kZWRTY2FsZWRSZWN0LmlzRW1wdHkoKSkK
QEAgLTYxMyw3ICs2MTMsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjbwogCiAgICAgYXV0byBj
bGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShleHBhbmRlZFNj
YWxlZFJlY3Quc2l6ZSgpKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1
ZmZlcihleHBhbmRlZFNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCByZW5kZXJp
bmdNZXRob2QpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBh
bmRlZFNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgMSwgY29sb3JTcGFjZSwgcmVu
ZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjI4LDE0ICs2MjgsMTQgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY28KICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewotICAg
IHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNl
LCByZW5kZXJpbmdNb2RlKCksIHJlbmRlcmluZ01ldGhvZCk7CisgICAgcmV0dXJuIGNyZWF0ZVNj
YWxlZEltYWdlQnVmZmVyKHNpemUsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmlu
Z01vZGUoKSwgcmVuZGVyaW5nTWV0aG9kKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5n
TWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nTWV0aG9kPiByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmlu
Z01vZGUoKSwgcmVuZGVyaW5nTWV0aG9kKTsKKyAgICByZXR1cm4gY3JlYXRlU2NhbGVkSW1hZ2VC
dWZmZXIocmVjdCwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSgpLCBy
ZW5kZXJpbmdNZXRob2QpOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBi
NDQ3OGU4NWVhMTM3NDk3YzQ5MDZhM2ZiZmMzYThjOWFlMGJkYmNjLi41ODZiOTliOWZkNDQ1YmI5
ZDNiOTY1MTIyMjhhNDZlN2RiODk1ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDE4LDExICs0MTgsMTMgQEAgcHVi
bGljOgogCiAgICAgSW50U2l6ZSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0
U2l6ZSYpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmIHNjYWxl
ID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVs
bG9wdCwgUmVuZGVyaW5nTWV0aG9kID0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0KSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEgfSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0LCBSZW5kZXJpbmdN
ZXRob2QgPSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUgPSAxLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0
aG9kPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTWV0aG9kID0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVy
aW5nTWV0aG9kID0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0KSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEgfSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ01ldGhvZD4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSA9IHsgMSwgMSB9LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
TWV0aG9kPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNZXRob2Q+ID0gc3RkOjpudWxs
b3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdNZXRob2Q+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCkBAIC01NDks
OCArNTUxLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmlsbEVsbGlwc2VBc1BhdGgoY29uc3Qg
RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBzdHJva2VFbGxpcHNlQXNQYXRoKGNvbnN0IEZsb2F0UmVj
dCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCkgY29uc3Q7Ci0KICAgICBGbG9h
dFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBG
bG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGlu
ZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGM1ZWYzMGEyYjBi
MDc4NjQ5Njg3ZTBkZTE3NjdmMDVlMzc5YTMyNmUuLmY5MGQ4Yzk1ZDE4YjQ0MmJhNTIyNDg1YjQy
Y2NkYjc5NDZlZjQ4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW4KIAogUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y2xvbmUoKSBjb25zdAogewot
ICAgIGF1dG8gY2xvbmUgPSBjb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGxv
Z2ljYWxTaXplKCksIGNvbG9yU3BhY2UoKSk7CisgICAgYXV0byBjbG9uZSA9IGNvbnRleHQoKS5j
cmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIobG9naWNhbFNpemUoKSwgY29sb3JTcGFjZSgpKTsKICAg
ICBpZiAoIWNsb25lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggY2E3MzU5MWQ4MzdlNmJlMTRjNWRhMjU3ZTM3MWY1ZjIyNThjZjE4ZC4u
NGUwNzFmNzJmMzViZThhNThmYzRjZDU3N2ExNDU2ZGUxNzQ2NjgyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiB2
b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihzaXplKCkpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihz
aXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCmluZGV4IDk3
ZjMxMzRlZGFhZDE5YWMxMTY3ZmRiNjU2NmE1NjQ4NzlmNDA0NjUuLjI1NTU2OGMzMjkwZWVjZTFl
ZWE5Yzk3MTc1NWQwMGVjODkwMjRhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKQEAgLTM2LDExICszNiw2IEBAIGVudW0gY2xhc3Mg
UmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3QgewogCiBlbnVtIGNsYXNzIFNob3VsZFVzZURpc3Bs
YXlMaXN0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJv
b2wgeyBVbmFjY2VsZXJhdGVkLCBBY2NlbGVyYXRlZCB9OwotCi1lbnVtIGNsYXNzIFJlbmRlcmlu
Z01ldGhvZCA6IHVpbnQ4X3QgewotICAgIERlZmF1bHQsCi0gICAgTG9jYWwsCi0gICAgRGlzcGxh
eUxpc3QKLX07CitlbnVtIGNsYXNzIFJlbmRlcmluZ01ldGhvZCA6IHVpbnQ4X3QgeyBMb2NhbCwg
RGlzcGxheUxpc3QgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCBkMTkwY2E5NDI0N2YxOTJiNmViYmVmYTExZWRlZWJiNzAyNDU0OTRkLi5lNmNlMmZiOTcy
NDdhNmI4NmMwOWIxYWQzNjE3MDFjMmVjM2U4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMjQw
LDcgKzI0MCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgfQogCiAgICAgLy8gQ3Jl
YXRlIGEgbG9jYWwgSW1hZ2VCdWZmZXIgYmVjYXVzZSBkZWNvZGluZyB0aGUgUERGIGltYWdlcyBo
YXMgdG8gaGFwcGVuIGluIFdlYlByb2Nlc3MuCi0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNv
bnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNhY2hlZEltYWdlU2l6ZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOworICAgIG1f
Y2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihjYWNo
ZWRJbWFnZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRo
b2Q6OkxvY2FsKTsKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgZGVz
dHJveURlY29kZWREYXRhKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5Myw3ICsyOTMsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICAgICAgLy8gc2NhbGFyID0gc3FydChtYXgg
bnVtYmVyIG9mIHBpeGVscyAvICh3aWR0aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBhdXRvIHNj
YWxhciA9IHN0ZDo6bWluKDEuZiwgc3RkOjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0PihzX21heENh
Y2hlZEltYWdlQXJlYSkgLyAoZHN0UmVjdC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQoKSkpKTsK
ICAgICAgICAgICAgIEZsb2F0UmVjdCBsb2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBvaW50KCks
IGRzdFJlY3Quc2l6ZSgpICogc2NhbGFyKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobG9jYWxEZXN0aW5hdGlv
blJlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTWV0
aG9kOjpMb2NhbCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gY29udGV4
dC5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTWV0aG9kOjpMb2NhbCkpIHsK
ICAgICAgICAgICAgICAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgbG9jYWxEZXN0aW5hdGlvblJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgICAg
IGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGFiOTdhM2Y3ZDgzN2M0NzYxNDYwODg2Njg0Y2IyYTA1
MmZhOGI3ODMuLmVmYmMxZTQ5NTQ0MWJlZGU3MzRlOTQ4ZGQyNmQzNzE0NDE2NTUzZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlw
aHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3OSw3ICsz
NzksNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqCiAgICAgICAgIGF1dG8gYm91bmRzID0gZm9u
dC5ib3VuZHNGb3JHbHlwaChnbHlwaHNbaV0pOwogCiAgICAgICAgIC8vIENyZWF0ZSBhIGxvY2Fs
IEltYWdlQnVmZmVyIGJlY2F1c2UgZGVjb2RpbmcgdGhlIFNWRyBmb250cyBoYXMgdG8gaGFwcGVu
IGluIFdlYlByb2Nlc3MuCi0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9vd25lci5j
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoYm91bmRzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUmVuZGVyaW5nTWV0aG9kOjpMb2NhbCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBtX293bmVyLmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihib3VuZHMsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKSkgewogICAg
ICAgICAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoaW1hZ2VCdWZmZXItPmNvbnRleHQoKSwg
Zm9udCwgZ2x5cGhzICsgaSwgYWR2YW5jZXMgKyBpLCAxLCBGbG9hdFBvaW50KCksIHNtb290aGlu
Z01vZGUpOwogCiAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0ID0gZW5jbG9z
aW5nSW50UmVjdChib3VuZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IGMyNWQxYzBhNDI2MDUwZTMxMTEzYjQxYmY5ZDJjMTNjYWQ5ZTQ0ZWIuLmY4OTc1
N2M3Njc3YmI5NDE3MTExOTE5ZjA4Zjg1MmRmNDkzNDhkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQ5MiwxMiArNDkyLDkgQEAgdm9pZCBSZWNvcmRl
cjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QKICAgICByZWNvcmRDbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVz
dFJlY3QpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdNZXRob2Qg
cmVuZGVyaW5nTWV0aG9kKSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlcjo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01l
dGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewotICAgIGlmIChyZW5kZXJpbmdNZXRob2Qg
PT0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0KQotICAgICAgICByZW5kZXJpbmdNZXRob2QgPSBS
ZW5kZXJpbmdNZXRob2Q6OkRpc3BsYXlMaXN0OwotCi0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVu
ZGVyaW5nTWV0aG9kKTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHJl
bmRlcmluZ01ldGhvZC52YWx1ZV9vcihSZW5kZXJpbmdNZXRob2Q6OkRpc3BsYXlMaXN0KSk7CiB9
CiAKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAppbmRleCA2ZWU2ZTg3NWQ0OTdlOTQ5NTdlZjBmNGU4YmQ0N2MzM2UyOGRmN2ExLi5jYWZmODhj
YmNmZWQ1NDE2ZGI4MmZmMTZiOGRkOGQzMmJmYzFiNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKQEAgLTE3Miw3ICsxNzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29u
c3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKICAgICBDb250ZXh0U3RhdGUm
IGN1cnJlbnRTdGF0ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdNZXRob2QpIGNvbnN0IG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+LCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ01ldGhvZD4pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJv
b2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA3NDE5MTVjMGMwM2Q0MWIz
M2I1NzM5Yzk2NDRjMzc3MjY1ZWUxY2Y4Li4zMGUwMmM0ZTAzYjhhYmJmYmMxZTM5ZmRhZjIyN2Iy
NGViNzU3ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC03
MzQsNyArNzM0LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKIAogICAgIGlmICh1c2VJbWFn
ZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChG
bG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBG
bG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgpLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIocmVjdC5z
aXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9u
Rm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKaW5kZXggOWFiOTk4ZTQxY2IwOGNmMGI2ZjkwZjEwZjEzYzRiODQ1N2VjOTM5Zi4uZWZhMDcy
MzUwNDRiYTQzNmU0Nzc0MjBhNmRjYWNhM2FmMmMwMGIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04OTQsNyArODk0LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMocGFpbnRJbmZvLnJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7
CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0g
Y29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAg
ICAgICAgbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIobWFza1Jl
Y3Quc2l6ZSgpKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1Jl
Y3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyN2FmM2MxZGE0MjE3OTNhNTMyZDMxNTg1
OTEzOWIwMDdjMDdhODQzLi5hODUwZTEzNzRhMTI1ODIyMGNlZmM4ZmQ3YTJiNzNmNzY3YTc0M2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMzMyNCw3ICszMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9y
RGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBGbG8KIHsKICAgICBj
b25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIodGlsZVNpemUpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZm
ZXIodGlsZVNpemUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMu
Y3BwCmluZGV4IDViYTk0Y2ZkNWRiYjFlNDRiNWZiZDNjNWJjMTFhZDE5YWVhZjhmNWQuLjU2N2Y4
YmIyMDhkOWNiNjVlOWQzYmExYTNiMjY3NDI4MGU2ZDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGF1dG8gbG9naWNhbFNpemUgPSBmaWx0ZXIuc2Nh
bGVkQnlGaWx0ZXJTY2FsZShtX2ZpbHRlclJlZ2lvbi5zaXplKCkpOwogCiAgICAgaWYgKCFtX3Nv
dXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUp
Ci0gICAgICAgIG1fc291cmNlSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKG1fZmls
dGVyUmVnaW9uLnNpemUoKSwgZmlsdGVyLmZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgbV9zb3VyY2VJ
bWFnZSA9IGNvbnRleHQuY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIobV9maWx0ZXJSZWdpb24uc2l6
ZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IGZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOwogfQogCiBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxh
eWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwg
Y29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFp
bnRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpp
bmRleCBlMTg2ZmJkNmQ4NzQ5OTBhMmViNGU4OTIzNDIxODZlMTAzYzNkOWM0Li5kY2UyNjc0YzRm
Mjg4MGYzOWI1NjUxNzQxMzNjZTNlODkxZWM3YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQCiB7CiAgICAgYXV0byYgZGVzdGluYXRpb25Db250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0aW5hdGlvbkNvbnRleHQu
Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHBhaW50UmVjdC5zaXplKCkpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBkZXN0aW5hdGlvbkNvbnRleHQuY3JlYXRlQWxpZ25lZEltYWdlQnVmZmVy
KHBhaW50UmVjdC5zaXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmlu
ZGV4IDg3NjY3ZGUyZGVkMjk1ZDkzNTgwMmIzMzg5MmEwYzMyMWM3ZTMyZWMuLjAxMGVjYmFlZDg3
YTczYTQyMGFmYjk3ZThlODBmZWE2Mzc5ZmVkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTk5NCw3ICs5OTQsNyBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBo
aWNzQ29udAogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBvLmRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKTsKIAotICAgIGF1dG8gY29tYm9Cb3hJbWFnZUJ1ZmZlciA9IGNvbnRl
eHQuY3JlYXRlSW1hZ2VCdWZmZXIoY29tYm9Cb3hTaXplLCB7IGRldmljZVNjYWxlRmFjdG9yLCBk
ZXZpY2VTY2FsZUZhY3RvciB9KTsKKyAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBjb250
ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGNvbWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgIGlmICghY29tYm9Cb3hJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDE4
LDcgKzEwMTgsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1
dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogICAgICAgICAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbktleSA6IChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQs
CiAgICAgfV07CiAKLSAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBjb250ZXh0
LmNyZWF0ZUltYWdlQnVmZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIHsgZGV2aWNlU2Nh
bGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOworICAgIGF1dG8gY29tYm9Cb3hCdXR0b25J
bWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZGVzaXJlZENvbWJvQm94QnV0
dG9uU2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmICghY29tYm9Cb3hCdXR0b25JbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDAyLDcgKzE0MDIsNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
T2JqZWN0LCBjb25zdCBQYQogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNh
c3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAg
IGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCkuY3JlYXRlSW1hZ2VCdWZm
ZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgeyBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVG
YWN0b3IgfSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCkuY3Jl
YXRlSW1hZ2VCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKaW5kZXggODdhMWFlNTkxYTU3MDJkNzkyN2NiOGM2OGU1OTVmNGNiMGYwY2I2OS4uMWIw
ZTAyZjE1ODRiNWVjODQzNTM3MGFjOGRiMDM3NGZkMTQ1YTcwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cApAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBs
eUNsaXBwaW5nVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGlmICgh
Y2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5nQm94LCBjbGlwcGVk
Q29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgx
NDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1
bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBj
bGlwcGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQuY3JlYXRl
SW1hZ2VCdWZmZXIoY2xpcHBlZENvbnRlbnRCb3VuZHMsIHNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAgICAgIGF1
dG8gbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihjbGlwcGVkQ29u
dGVudEJvdW5kcywgc2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYjk2MzYyYzk3YTNiNDAz
ZDVlNDA0YjJjY2YzODcwNGQ5YTk2MjQ4NS4uNTVkNWVkNTdlM2VkNGQ5NzM5OGRkODIyNzMxM2Vk
MGQzNDUwMzI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBSZW5kZQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOwogI2VuZGlmCiAKLSAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBjb250ZXh0
LT5jcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBmaWx0ZXJTY2Fs
ZSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0YS0+ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCkpOworICAg
IGF1dG8gc291cmNlR3JhcGhpYyA9IGNvbnRleHQtPmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKGZp
bHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGZpbHRlclNjYWxlLCBjb2xvclNwYWNlLCBmaWx0ZXJE
YXRhLT5maWx0ZXItPnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7
CiAgICAgICAgIEFTU0VSVChtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVy
ZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCmluZGV4IDRhZTdjY2UzM2E3NzUzMmE0N2JlMGJmMzA0YTgyNGMxMjIzMjcy
MjYuLmMwYTYwYjUyZjYyYzk4MmVlZGQ0YzJkN2YxMWViZTU3MWJmZmZjYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFz
a0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbgogICAg
IC8vIERldGVybWluZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBjbGlwcGVyLiBUaGUgc2l6ZSBvZiBp
bnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhhbiBrTWF4Rmls
dGVyU2l6ZS4KICAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVwYWludFJlY3Qu
c2l6ZSgpLCBzY2FsZSk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQtPmNyZWF0ZUlt
YWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSk7CisgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250
ZXh0LT5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgc2NhbGUpOwogICAgIGlm
ICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5k
ZXggM2RiMDEzMTFkZjViNWM5NDdlMDdiNDZjNThhZWRhNzQ3MmYyZjI1Zi4uNDQwZDkzNTFlZWU0
NWQ1ODc0M2Y3YWI3OGY2ZTk1YTA4YWNhYjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgfQogI2VuZGlmCiAgICAg
ICAgIC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVu
Y29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQg
YnJlYWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4KLSAgICAgICAgbWFza2VyRGF0YS0+bWFza0lt
YWdlID0gY29udGV4dC0+Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIHNjYWxlLCBtYXNr
Q29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAgICAgIG1hc2tl
ckRhdGEtPm1hc2tJbWFnZSA9IGNvbnRleHQtPmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKHJlcGFp
bnRSZWN0LCBzY2FsZSwgbWFza0NvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQpOwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGJjZWZlNTc1ZmM1YjI0YTkxZGZi
NmEzMjZkNjBjOGQ5MWM1MmFiNmEuLjI1MDk0MjBiMzQ0OTk3NmU3YzkyYTgzZjQ4YWM2MjhhOWIx
ZmY3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKEdyYXBo
aWNzQ29udGV4dCYgYwogICAgIGF1dG8gdGlsZVNpemUgPSByb3VuZGVkVW5zY2FsZWRJbWFnZUJ1
ZmZlclNpemUoc2l6ZSwgc2NhbGUpOwogCiAgICAgLy8gRklYTUU6IFVzZSBjcmVhdGVJbWFnZUJ1
ZmZlcihyZWN0LCBzY2FsZSksIGRlbGV0ZSB0aGUgYWJvdmUgY2FsY3VsYXRpb25zIGFuZCBmaXgg
J3RpbGVJbWFnZVRyYW5zZm9ybScKLSAgICBhdXRvIHRpbGVJbWFnZSA9IGNvbnRleHQuY3JlYXRl
SW1hZ2VCdWZmZXIodGlsZVNpemUsIHNjYWxlKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IGNvbnRl
eHQuY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIodGlsZVNpemUsIHNjYWxlKTsKICAgICBpZiAoIXRp
bGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDYzODAyNGQ3
ZDI3ODEwZmJlMDVmNzk0MmRhYmZjMGEwODE4YWNiOTYuLjJmYjhmMzNhODcwZGZjY2ViNjJlMTQ5
NjU2YjE0NDM3MjJlYmVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjgyLDcgKzI4Miw3IEBAIGJvb2wgU1ZH
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBm
b3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFn
ZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpKTsKKyAgICAgICAgaW1hZ2VC
dWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dCgpLmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSk7CiAgICAgICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDc4NGNlYjJjODhkMzlmNWMwNGE3
MTdkNzU3YjM1YjRjNWZkYTg5NWQuLjFlNjgzYzVlYjAzZTE2MjBkNjNkZTA1MWE1YjYzMzgzMTMw
NDRjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAK
QEAgLTQzNCwyOSArNDM0LDI5IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
OjpmbHVzaENvbnRleHQoR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyCiAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Rmx1c2hDb250ZXh0KGlkZW50aWZp
ZXIpKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
UHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CitSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2Rl
PiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01ldGhvZD4gcmVuZGVyaW5n
TWV0aG9kKSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgaWYgKHJlbmRlcmluZ01ldGhvZCAhPSBSZW5kZXJpbmdNZXRob2Q6OkRl
ZmF1bHQpCi0gICAgICAgIHJldHVybiBSZWNvcmRlcjo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
Y29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKKyAgICBpZiAocmVu
ZGVyaW5nTWV0aG9kKQorICAgICAgICByZXR1cm4gUmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVy
KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVy
aW5nTWV0aG9kKTsKIAotICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2Qp
IGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eTo6Y3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogewotICAgIGF1dG8gcmVuZGVyaW5nTW9k
ZSA9IHJlbmRlcmluZ01ldGhvZCA9PSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQgPyB0aGlzLT5y
ZW5kZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwotICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlRmFjdG9yKCks
IGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHJlbmRlcmluZ01ldGhvZCk7CisgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gIXJlbmRlcmluZ01ldGhvZCA/IHRoaXMtPnJlbmRlcmluZ01vZGUoKSA6
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVB
bGlnbmVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiBy
ZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7Ci0gICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVy
aW5nTWV0aG9kID09IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCA/IHRoaXMtPnJlbmRlcmluZ01v
ZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci0gICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKKyAgICBhdXRvIHJlbmRlcmluZ01v
ZGUgPSAhcmVuZGVyaW5nTWV0aG9kID8gdGhpcy0+cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZDsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVT
Y2FsZWRJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJp
bmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCBkOWZkN2NlZjIx
NjEwMTdhMzA5N2ZjNzBmNjUxZjAyMjdkYzE2ZGQxLi43ZTZhMGExMDc3YTE1MjA1MmMzM2MzYzhi
Mjc3NmI5YTJjZWY4NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5LmgKQEAgLTEzNiw5ICsxMzYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVjb3JkUmVzb3Vy
Y2VVc2UoY29uc3QgV2ViQ29yZTo6U291cmNlSW1hZ2UmKSBmaW5hbDsKICAgICBib29sIHJlY29y
ZFJlc291cmNlVXNlKFdlYkNvcmU6OkZvbnQmKSBmaW5hbDsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFdlYkNvcmU6OlJl
bmRlcmluZ01ldGhvZCA9IFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkgY29uc3Qg
ZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2QgPSBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2Q6
OkRlZmF1bHQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ01vZGU+LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJl
bmRlcmluZ01ldGhvZD4pIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gY3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVuZGVyaW5nTWV0aG9kPikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiBjcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2Q+KSBjb25zdCBmaW5hbDsKIAogICAgIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uQnVmZmVySWRlbnRp
ZmllcjsKICAgICBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGFlZjI5YzI0NmRlMzk2YjVlMGUxMTkzZWRiZWJkNzE1YTU0MjUwZDMuLjQ0NzYzNTAw
MGI0YjM5Yzg5N2E0MDU1ZDM3NzJmMmJjYzU0ODNkOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAyMi0wMi0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAg
ICBbbWFjT1NdW1JFR1JFU1NJT05dIChycjI4OTUxOCk6IEZvcm0gY29udHJvbHMgYXJlIHNjYWxl
ZCB0d2ljZSBvbiBSZXRpbmEgZGlzcGxheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MTI4CisgICAgICAgIHJkYXI6Ly84OTA2NDY0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9oaWRwaS9o
aWRwaS1mb3JtLWNvbnRyb2xzLWRyYXdpbmctc2l6ZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2hpZHBpL2hpZHBpLWZvcm0tY29udHJvbHMtZHJhd2luZy1zaXplLmh0bWw6
IEFkZGVkLgorCiAyMDIyLTAyLTI4ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdIFVuYWJsZSB0byB1cGxvYWQgIi5wYWdlcyIgZmlsZXMgdG8g
ZmlsZSBpbnB1dHMgYWNjZXB0aW5nICIucGFnZXMiIGFuZCAiLmpwZWciIGZpbGVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2hpZHBpLWZvcm0tY29udHJvbHMtZHJhd2luZy1z
aXplLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2hpZHBpLWZvcm0tY29u
dHJvbHMtZHJhd2luZy1zaXplLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM4ZmUzMDE0MWI2
ZWYzNjI3YWRlOTEzNTRmZDJmNmExOTNlNWNkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaGlkcGkvaGlkcGktZm9ybS1jb250cm9scy1kcmF3aW5nLXNpemUtZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDEyIEBACis8c3R5bGU+CisgICAgLmJveCB7CisgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Vuc3VyZS1oaWRw
aS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJsZWZ0
OiAwcHg7IHRvcDogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9ImJveCIgc3R5bGU9ImxlZnQ6IDExMHB4OyB0b3A6IDBweDsgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47Ij48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvaGlkcGkvaGlkcGktZm9ybS1jb250cm9scy1kcmF3aW5nLXNpemUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaGlkcGkvaGlkcGktZm9ybS1jb250cm9scy1kcmF3aW5nLXNpemUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ODA2NzZmZWEyNGQ2M2IzNWYzZDRmNWRmNDE1ZjNlZDFhODU3NmUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9oaWRwaS1mb3JtLWNvbnRyb2xzLWRy
YXdpbmctc2l6ZS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzxzdHlsZT4KKyAgICAuYm94IHsKKyAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
ZW5zdXJlLWhpZHBpLmpzIj48L3NjcmlwdD4KKzxib2R5PgorICAgIDxwcm9ncmVzcyBjbGFzcz0i
Ym94IiBzdHlsZT0ibGVmdDogMHB4OyB0b3A6IDBweDsiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVl
PSIxMDAiPjwvcHJvZ3Jlc3M+CisgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0ibGVmdDogMHB4
OyB0b3A6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKworICAgIDxkYXRh
bGlzdCBpZD0ibGlzdCI+PC9kYXRhbGlzdD4KKyAgICA8aW5wdXQgY2xhc3M9ImJveCIgc3R5bGU9
ImxlZnQ6IDExMHB4OyB0b3A6IDBweDsiIHR5cGU9InNlYXJjaCIgbGlzdD0ibGlzdCI+CisgICAg
PGRpdiBjbGFzcz0iYm94IiBzdHlsZT0ibGVmdDogMTEwcHg7IHRvcDogMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="480804"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="480828"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453522</attachid>
            <date>2022-03-01 12:30:31 -0800</date>
            <delta_ts>2022-03-01 15:18:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237128-20220301123031.patch</filename>
            <type>text/plain</type>
            <size>48794</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQxMDg5OGRlZDY4NDkw
MTgzZWQwYTJiNjIyOWVmZDc1ZDE4N2YwMy4uM2NmNTMyMTg2NzJhNjE3ZGJjMjU4MGIzYWNhY2Fh
YTM1NjVjNTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAyMi0wMy0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdW1JFR1JF
U1NJT05dIChyMjg5NTE4KTogRm9ybSBjb250cm9scyBhcmUgc2NhbGVkIHR3aWNlIG9uIFJldGlu
YSBkaXNwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcxMjgKKyAgICAgICAgcmRhcjovLzg5MDY0NjQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNpbmcgdGhlIG5hbWUgR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcigpIGZvciBkaWZmZXJlbnQgYmVoYXZpb3JzCisgICAgICAgIHdhcyBh
IG1pc3Rha2UgaW4gcjI4OTUxOC4gVG8gY2xlYW4gdGhpcyB1cCwgdGhlIGNyZWF0ZUltYWdlQnVm
ZmVyKCkgdmVyc2lvbgorICAgICAgICB3aGljaCBzY2FsZXMgdGhlIEdyYXBoaWNzQ29udGV4dCBv
ZiB0aGUgSW1hZ2VCdWZmZXIgd2lsbCBiZSByZW5hbWVkCisgICAgICAgIGNyZWF0ZVNjYWxlZElt
YWdlQnVmZmVyKCkuIGFuZCB0aGUgZXhpc3RpbmcgY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KCkKKyAgICAgICAgd2lsbCBiZSByZW5hbWVkIGNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcigpLiBT
byB3ZSB3aWxsIGhhdmUgdGhlc2UgdGhyZWUKKyAgICAgICAgbWV0aG9kcyBpbiBHcmFwaGljc0Nv
bnRleHQ6CisKKyAgICAgICAgMSkgY3JlYXRlSW1hZ2VCdWZmZXIoKTogVGhlIGRlZmF1bHQgYmVo
YXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgdG8gY3JlYXRlCisgICAgICAgICAgIGFuIEltYWdlQnVm
ZmVyIHNpbWlsYXIgdG8gdGhlIHVuZGVybHlpbmcgSW1hZ2VCdWZmZXIgb2YgR3JhcGhpY3NDb250
ZXh0LgorICAgICAgICAgICBCdXQgaXQgZ2l2ZXMgYWJpbGl0eSB0byBjaGFuZ2UgdGhlIHJlbmRl
cmluZ01vZGUgYW5kIHRoZSByZW5kZXJpbmdNZXRob2QuCisgICAgICAgICAgIEl0IGNhbiBiZSBm
b3JjZWQgdG8gY3JlYXRlIGEgbm9uLWFjY2VsZXJhdGVkIGxvY2FsIEltYWdlQnVmZmVyIGZvciBl
eGFtcGxlLgorICAgICAgICAgICAKKyAgICAgICAgICAgVGhlIGNhbGxlciBvZiB0aGlzIG1ldGhv
ZCB1c3VhbGx5IHVzZXMgYSBmcmFtZXdvcmsgdG8gZHJhdyBzb21lIGN1c3RvbQorICAgICAgICAg
ICBkcmF3aW5nIGFuZCBpdCBqdXN0IG5lZWRzIGEgc2NyYXRjaCBidWZmZXIgdG8gYmUgZHJhd24g
aW4gdGhlIHBsYWNlIG9mCisgICAgICAgICAgIGEgcmVuZGVyIG9iamVjdC4gVGhlIGNhbGxlciBk
b2VzIG5vdCByZXF1aXJlIGFueSB0cmFuc2Zvcm1hdGlvbiB0byBiZQorICAgICAgICAgICBhcHBs
aWVkIHRvIHRoZSBHcmFwaGljc0NvbnRleHQgb2YgdGhlIEltYWdlQnVmZmVyIGJlZm9yZSBzdGFy
dGluZyBpdHMKKyAgICAgICAgICAgY3VzdG9tIGRyYXdpbmcuIERyYXdpbmcgdGhlIGZvcm0gY29u
dHJvbHMgdXNpbmcgQXBwS2l0IGlzIGFuIGV4YW1wbGUKKyAgICAgICAgICAgb2Ygc3VjaCBjYXNl
LgorCisgICAgICAgIDIpIGNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKCk6IFRoaXMgaXMgc2ltaWxh
ciB0byBjcmVhdGVJbWFnZUJ1ZmZlcigpIGJ1dAorICAgICAgICAgICBpdCBhbHdheXMgY3JlYXRl
cyB0aGUgSW1hZ2VCdWZmZXIgd2l0aCByZXNvbHV0aW9uU2NhbGUgPSAxIHNvIGl0IGhhcworICAg
ICAgICAgICB0byBzY2FsZSB0aGUgc2l6ZSBieSB0aGUgc2NhbGVGYWN0b3IgYmVmb3JlIGNhbGxp
bmcgY3JlYXRlSW1hZ2VCdWZmZXIoKS4KKyAgICAgICAgICAgSXQgYWxzbyBzY2FsZXMgdGhlIEdy
YXBoaWNzQ29udGV4dCBvZiB0aGUgY3JlYXRlZCBJbWFnZUJ1ZmZlciB3aXRoIHRoZQorICAgICAg
ICAgICBzY2FsZUZhY3RvciBhbmQgaXQgdHJhbnNsYXRlcyBpdHMgY29vcmRpbmF0ZXMgb3JpZ2lu
IGZvciB0aGUgRmxvYXRSZWN0CisgICAgICAgICAgIHZlcnNpb24uIEl0IGFsc28gaGFuZGxlcyB0
aGUgY2xhbXBpbmcgaWYgbmVlZGVkLiAKKworICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBzdWl0
YWJsZSBmb3IgY2FzZXMgd2hlbiB0aGUgb3ZlcmFsbCBzY2FsZUZhdGNvcgorICAgICAgICAgICAo
ZGV2aWNlIFNjYWxlRmFjdG9yICsgY2xhbXBpbmcgU2NhbGVGYWN0b3IpIGhhcyBiZSBrbm93biB0
byB0aGUgY2FsbGVyCisgICAgICAgICAgIGluIGFkdmFuY2UuIE5vIGNsYW1waW5nIHdpbGwgYmUg
cmVxdWlyZWQgaW4gdGhpcyBjYXNlLiBTVkcgZmlsdGVyLAorICAgICAgICAgICBtYXNrZXIsIGNs
aXBwZXIgYW5kIGdyYWRpZW50IGFyZSB0aGUgY2FsbGVycyB0byB0aGlzIGZ1bmN0aW9uLgorCisg
ICAgICAgIDMpIGNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcigpOiBUaGlzIGlzIHNpbWlsYXIgdG8g
Y3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoKQorICAgICAgICAgICBidXQgaXQgZG9lcyBub3QgdGFr
ZSBhIHNjYWxpbmcgZmFjdG9yIGFyZ3VtZW50LiBJdCBpbmhlcml0cyBpdCBmcm9tCisgICAgICAg
ICAgIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgICAgVXN1YWxseSB0aGUgcHVycG9z
ZSBvZiB0aGlzIG1ldGhvZCBpcyB0byB0cmFuc2ZlciB0aGUgZHJhd2luZyBmcm9tIGEKKyAgICAg
ICAgICAgbGF5ZXIgdG8gYSBzY3JhdGNoIEltYWdlQnVmZmVyIHRlbXBvcmFyaWx5IHRoZW4gZHJh
dyB0aGUgc2NyYXRjaAorICAgICAgICAgICBJbWFnZUJ1ZmZlciBpbiB0aGUgcGxhY2Ugb2YgdGhl
IG9yaWdpbmFsIGRyYXdpbmcuIERyYXdpbmcgYSBQREZEb2N1bWVudAorICAgICAgICAgICBpbWFn
ZSwgZm9yIGV4YW1wbGUsIHJlcXVpcmVzIHVzaW5nIHRoaXMgbWV0aG9kLgorCisgICAgICAgIFRv
IGZpeCB0aGlzIGJ1ZzoKKworICAgICAgICBGb3JtIGNvbnRyb2xzIGhhdmUgdG8gdXNlIHRoZSBm
aXJzdCB2ZXJzaW9uIG9mIGNyZWF0ZUltYWdlQnVmZmVyKCkgd2hpY2gKKyAgICAgICAgc3RpbGwg
aGFzIHRoZSBzYW1lIG5hbWUgaW5zdGVhZCBvZiB1c2luZyB0aGUgc2Vjb25kIHZlcnNpb24gd2hp
Y2ggd2lsbAorICAgICAgICBiZSByZW5hbWVkIGNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKCkuCisK
KyAgICAgICAgQW5vdGhlciBjbGVhbmluZyBpcyB0byBwYXNzIFJlbmRlcmluZ01ldGhvZCBhcyBh
biBzdGQ6Om9wdGlvbmFsIGFyZ3VtZW50CisgICAgICAgIHRoZSB0aHJlZSBtZXRob2RzLiBUaGlz
IG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRoZSB2YWx1ZSAiRGVmYXVsdCIgc2luY2UKKyAgICAgICAg
cGFzc2luZyBzdGQ6Om51bGxvcHQgd2lsbCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9oaWRwaS9oaWRwaS1mb3JtLWNvbnRyb2xzLWRyYXdpbmctc2l6ZS5odG1s
CisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAg
ICogaHRtbC9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBh
aW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdBcHBsZVBheUJ1
dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRp
ZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlU2NhbGVkSW1hZ2VC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsb25lIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNyZWF0
ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5n
V2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisKIDIwMjItMDMtMDEg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBb
QXBwbGVXaW5dIFN0YXJ0IHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAyMgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2Yzdl
MDUwNzAxN2JhZGU0M2MzZTQ2Mjc3Mzg2ZTE0YTc4YWJkZjkwLi45OTRiNGM5MjMwODBmZTMzZGFk
ODUyMDMxMWYyMjE0YzEyN2Q5NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAz
LTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNP
U11bUkVHUkVTU0lPTl0gKHJyMjg5NTE4KTogRm9ybSBjb250cm9scyBhcmUgc2NhbGVkIHR3aWNl
IG9uIFJldGluYSBkaXNwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzcxMjgKKyAgICAgICAgcmRhcjovLzg5MDY0NjQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVB
bGlnbmVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDMtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJZiB0aGUgbWFpbiByZXNvdXJjZSB3YXMg
bG9hZGVkIG92ZXIgcHJpdmF0ZSByZWxheSwgbG9hZCBhbGwgc3ViIHJlc291cmNlcyBvdmVyIHBy
aXZhdGUgcmVsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5k
ZXggNDA0MjkxMWQwN2JjNzc4MzkwMzAxMzFkNzhkNzNhNTU3YjYzZDBlZS4uYTI0MGIwOGQ1YTIz
N2ZkNjg4MjRlN2Q4ODA4MWM4YjZhYTk2NzA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZh
czo6cmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8g
RklYTUU6IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVy
ZSBhcmUgbm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4
LT5jbGlwQm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gY3R4LT5jcmVhdGVDb21wYXRpYmxl
SW1hZ2VCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCkpOworICAgIGF1dG8gaW1hZ2UgPSBjdHgtPmNy
ZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdl
LmNwcAppbmRleCBiNWMxYmYzZGM2ZDRjZTZjYTJjYzM4ZmY4ZDhkNmFmNTc4OGRjMTk5Li5mNGI5
OGJhNjJlMTE5YTA3NzEzMTJkM2I4OGM0OTE5MzY4MzZlZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEN1c3RvbVBh
aW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2NhbGUsIDEu
MCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsK
IAotICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGFkanVzdGVkU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVB
bGlnbmVkSW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVk
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGY2MzFlNGY5YTdiMGUxNzIxNGFjNWEw
MmEzMDc0Mjg5ZmMwNWY3MjQuLmM2NzgwOTIxNmI5NGE1NmJlYjhiMzJiYzk2ZjRiZTFlZWMzYjdh
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNjExLDcgKzE2MTEsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFz
QmFzZSYgc291cmNlQ2FudgogICAgICAgICByZXBhaW50RW50aXJlQ2FudmFzID0gdHJ1ZTsKICAg
ICB9IGVsc2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZU9wZXJhdG9y
OjpDb3B5KSB7CiAgICAgICAgIGlmICgmc291cmNlQ2FudmFzID09ICZjYW52YXNCYXNlKCkpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIGNvcHkgPSBjLT5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoc3JjUmVjdC5zaXplKCksIGNvbG9yU3BhY2UoKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IGNvcHkgPSBjLT5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoc3JjUmVjdC5zaXplKCksIGNvbG9y
U3BhY2UoKSkpIHsKICAgICAgICAgICAgICAgICBjb3B5LT5jb250ZXh0KCkuZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIC1zcmNSZWN0LmxvY2F0aW9uKCkpOwogICAgICAgICAgICAgICAgIGNsZWFy
Q2FudmFzKCk7CiAgICAgICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpjb3B5LCBkc3RS
ZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwg
c3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKQEAgLTI0NTksNyArMjQ1OSw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYg
dGV4dFJ1biwgZG91CiAgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0
UnVuLCBsb2NhdGlvbiArIG9mZnNldCwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90
UmVhZHkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVD
b21wYXRpYmxlSW1hZ2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAgICAgICAgYXV0byBtYXNr
SW1hZ2UgPSBjLT5jcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKICAg
ICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCmluZGV4IDkxMmFiNmE5ZTE2OGIwNThl
MGYzODYxN2Q4MWNjNDQ5YWMzYjA1ZjEuLjA0NDFhNzc5OTBkNmRiNmU5NWQ5YjllYTZhMzdmNTRm
ODY1NTgyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5t
bQpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBDR1BERlBhZ2VSZWYgYXBwbGVQYXlCdXR0b25M
b2dvV2hpdGUoKQogc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsK
ICAgICAvLyBDcmVhdGUgYSBsb2NhbCBJbWFnZUJ1ZmZlciBiZWNhdXNlIGRlY29kaW5nIHRoZSBQ
REYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihzaXplLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTWV0aG9kOjpMb2NhbCk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZjZmYjhmOTNjODRmNzNi
NmZkMmJkOTllNjM4ZTIzMDZiMmYzMmRiZS4uMzhjZjg3OTZmOWE4MTdkYjVlOTY0NjczYmNiY2Ew
OGQ4Zjc4OWFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwK
ICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBjdHh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJl
Y3Quc2l6ZSgpKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVBbGlnbmVkSW1h
Z2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAppbmRleCBiZGE3MDExMDk4ZmE1MTdh
NjQ0MzJhZmVjYmQwNTNjMWY5NTk1YzUxLi42NDU4NGU1Y2ZlMDExODgyZWZhYjJlMjNjM2E1OTRl
MTc4MmYyODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZAogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAg
ICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRv
ckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3Nl
bnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0
b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplKTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGRlc3RDb250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihhZGp1c3RlZFNpemUpOwog
ICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApp
bmRleCA2N2M2OTIzY2FmZDIxOGE5Y2UyY2QyYmY0YTA1OWVlMTdhZWFkYWQyLi4yMTU1YmQyZWI2
MzYzNWI0MmRjMDZlMTJiNDMwOTgzYjJiMzNkYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTU3NywxNSArNTc3
LDE1IEBAIEludFNpemUgR3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gc2NhbGVkSW1hZ2VCdWZm
ZXJTaXplKHNpemUsIHNjYWxlRmFjdG9yKCkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRl
cmluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiByZW5kZXJpbmdNZXRob2Qp
IGNvbnN0CiB7Ci0gICAgaWYgKHJlbmRlcmluZ01ldGhvZCA9PSBSZW5kZXJpbmdNZXRob2Q6OkRp
c3BsYXlMaXN0KQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5k
ZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBpZiAo
IXJlbmRlcmluZ01ldGhvZCB8fCAqcmVuZGVyaW5nTWV0aG9kID09IFJlbmRlcmluZ01ldGhvZDo6
TG9jYWwpCisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmlu
Z01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdN
b2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIFNob3VsZFVzZURpc3BsYXlMaXN0
OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0aG9kKSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUs
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7
CiAgICAgYXV0byBleHBhbmRlZFNjYWxlZFNpemUgPSBzY2FsZWRJbWFnZUJ1ZmZlclNpemUoc2l6
ZSwgc2NhbGUpOwogICAgIGlmIChleHBhbmRlZFNjYWxlZFNpemUuaXNFbXB0eSgpKQpAQCAtNTkz
LDcgKzU5Myw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvCiAKICAgICBhdXRvIGNsYW1waW5n
U2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGV4cGFuZGVkU2NhbGVkU2l6
ZSk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRT
Y2FsZWRTaXplICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1
ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCByZW5kZXJpbmdNZXRob2QpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFNpemUgKiBjbGFt
cGluZ1NjYWxlLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2Qp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02
MDUsNyArNjA1LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY28KICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0
aG9kKSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVNj
YWxlZEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBz
Y2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
TWV0aG9kPiByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7CiAgICAgYXV0byBleHBhbmRlZFNjYWxl
ZFJlY3QgPSBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QocmVjdCwgc2NhbGUpOwogICAgIGlmIChleHBh
bmRlZFNjYWxlZFJlY3QuaXNFbXB0eSgpKQpAQCAtNjEzLDcgKzYxMyw3IEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvCiAKICAgICBhdXRvIGNsYW1waW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9y
SW1hZ2VCdWZmZXJTaXplKGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkpOwogCi0gICAgYXV0byBp
bWFnZUJ1ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkg
KiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMt
PnJlbmRlcmluZ01vZGUoKSksIHJlbmRlcmluZ01ldGhvZCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGlu
Z1NjYWxlLCAxLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02Mjgs
MTQgKzYyOCwxNCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjbwogICAgIHJldHVybiBpbWFnZUJ1
ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhv
ZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVBbGln
bmVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiByZW5k
ZXJpbmdNZXRob2QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUoKSwgcmVuZGVyaW5nTWV0
aG9kKTsKKyAgICByZXR1cm4gY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0
b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSgpLCByZW5kZXJpbmdNZXRob2QpOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0aG9kKSBjb25zdAor
UmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUFsaWduZWRJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNZXRob2Q+IHJlbmRlcmluZ01ldGhv
ZCkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVGYWN0
b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSgpLCByZW5kZXJpbmdNZXRob2QpOworICAg
IHJldHVybiBjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xv
clNwYWNlLCByZW5kZXJpbmdNb2RlKCksIHJlbmRlcmluZ01ldGhvZCk7CiB9CiAKIEltYWdlRHJh
d1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGI0NDc4ZTg1ZWExMzc0OTdjNDkwNmEzZmJmYzNhOGM5
YWUwYmRiY2MuLjU4NmI5OWI5ZmQ0NDViYjlkM2I5NjUxMjIyOGE0NmU3ZGI4OTVlZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC00MTgsMTEgKzQxOCwxMyBAQCBwdWJsaWM6CiAKICAgICBJbnRTaXplIGNvbXBhdGlibGVJ
bWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEgfSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0LCBSZW5kZXJpbmdNZXRob2QgPSBSZW5kZXJp
bmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRT
aXplJiBzY2FsZSA9IHsgMSwgMSB9LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4g
PSBzdGQ6Om51bGxvcHQsIFJlbmRlcmluZ01ldGhvZCA9IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVs
dCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSA9IDEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCwg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNZXRob2Q+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRob2Qg
PSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRob2QgPSBSZW5kZXJpbmdNZXRob2Q6OkRl
ZmF1bHQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlU2NhbGVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBz
Y2FsZSA9IHsgMSwgMSB9LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6
Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVTY2Fs
ZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlID0g
eyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9w
dCwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNZXRob2Q+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVB
bGlnbmVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ01ldGhvZD4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01ldGhvZD4gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSA9IDA7CiAKQEAgLTU0OSw4ICs1NTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBmaWxsRWxsaXBzZUFzUGF0aChjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHN0cm9rZUVs
bGlwc2VBc1BhdGgoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5n
TWV0aG9kKSBjb25zdDsKLQogICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlh
bGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIENvbG9y
Jik7CiAKICAgICBmbG9hdCBkYXNoZWRMaW5lQ29ybmVyV2lkdGhGb3JTdHJva2VXaWR0aChmbG9h
dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKaW5kZXggYzVlZjMwYTJiMGIwNzg2NDk2ODdlMGRlMTc2N2YwNWUzNzlhMzI2ZS4u
ZjkwZDhjOTVkMThiNDQyYmE1MjI0ODViNDJjY2RiNzk0NmVmNDhlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbgogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdl
QnVmZmVyOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgYXV0byBjbG9uZSA9IGNvbnRleHQoKS5jcmVh
dGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUoKSwgY29sb3JTcGFjZSgpKTsKKyAg
ICBhdXRvIGNsb25lID0gY29udGV4dCgpLmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihsb2dpY2Fs
U2l6ZSgpLCBjb2xvclNwYWNlKCkpOwogICAgIGlmICghY2xvbmUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBjYTczNTkxZDgzN2U2YmUx
NGM1ZGEyNTdlMzcxZjVmMjI1OGNmMThkLi40ZTA3MWY3MmYzNWJlOGE1OGZjNGNkNTc3YTE0NTZk
ZTE3NDY2ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVT
RShORVdfVEhFTUUpCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKHNpemUoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQu
Y3JlYXRlQWxpZ25lZEltYWdlQnVmZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggOTdmMzEzNGVkYWFkMTlhYzExNjdmZGI2NTY2YTU2NDg3
OWY0MDQ2NS4uNWVmOWIzYjQwYzAwMzJlYjk4MzMzZGZiZTFjZjVhNmViMTA4MjZhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAt
MzYsMTEgKzM2LDYgQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAK
IGVudW0gY2xhc3MgU2hvdWxkVXNlRGlzcGxheUxpc3QgOiBib29sIHsgTm8sIFllcyB9OwogZW51
bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbCB7IFVuYWNjZWxlcmF0ZWQsIEFjY2VsZXJhdGVk
IH07Ci0KLWVudW0gY2xhc3MgUmVuZGVyaW5nTWV0aG9kIDogdWludDhfdCB7Ci0gICAgRGVmYXVs
dCwKLSAgICBMb2NhbCwKLSAgICBEaXNwbGF5TGlzdAotfTsKK2VudW0gY2xhc3MgUmVuZGVyaW5n
TWV0aG9kIDogYm9vbCB7IExvY2FsLCBEaXNwbGF5TGlzdCB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IGQxOTBjYTk0MjQ3ZjE5MmI2ZWJiZWZhMTFlZGVl
YmI3MDI0NTQ5NGQuLmU2Y2UyZmI5NzI0N2E2Yjg2YzA5YjFhZDM2MTcwMWMyZWMzZTg2MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdl
Ojp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QKICAgICB9CiAKICAgICAvLyBDcmVhdGUgYSBsb2NhbCBJbWFnZUJ1ZmZlciBiZWNhdXNlIGRl
Y29kaW5nIHRoZSBQREYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICBt
X2NhY2hlZEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
Y2FjaGVkSW1hZ2VTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5n
TWV0aG9kOjpMb2NhbCk7CisgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRl
QWxpZ25lZEltYWdlQnVmZmVyKGNhY2hlZEltYWdlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpOwogICAgIGlmICghbV9jYWNoZWRJbWFn
ZUJ1ZmZlcikgewogICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjkzLDcgKzI5Myw3IEBAIEltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgICAgICAg
ICAvLyBzY2FsYXIgPSBzcXJ0KG1heCBudW1iZXIgb2YgcGl4ZWxzIC8gKHdpZHRoICogaGVpZ2h0
KSkKICAgICAgICAgICAgIGF1dG8gc2NhbGFyID0gc3RkOjptaW4oMS5mLCBzdGQ6OnNxcnQoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHNfbWF4Q2FjaGVkSW1hZ2VBcmVhKSAvIChkc3RSZWN0LndpZHRoKCkg
KiBkc3RSZWN0LmhlaWdodCgpKSkpOwogICAgICAgICAgICAgRmxvYXRSZWN0IGxvY2FsRGVzdGlu
YXRpb25SZWN0KEZsb2F0UG9pbnQoKSwgZHN0UmVjdC5zaXplKCkgKiBzY2FsYXIpOwotICAgICAg
ICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcihsb2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKSkgeworICAgICAgICAgICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihsb2NhbERl
c3RpbmF0aW9uUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5k
ZXJpbmdNZXRob2Q6OkxvY2FsKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlckNvbnRl
eHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybUNv
bnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBsb2NhbERlc3RpbmF0aW9uUmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgICAgICAgICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggYWI5N2EzZjdk
ODM3YzQ3NjE0NjA4ODY2ODRjYjJhMDUyZmE4Yjc4My4uZWZiYzFlNDk1NDQxYmVkZTczNGU5NDhk
ZDI2ZDM3MTQ0MTY1NTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpk
cmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCoKICAg
ICAgICAgYXV0byBib3VuZHMgPSBmb250LmJvdW5kc0ZvckdseXBoKGdseXBoc1tpXSk7CiAKICAg
ICAgICAgLy8gQ3JlYXRlIGEgbG9jYWwgSW1hZ2VCdWZmZXIgYmVjYXVzZSBkZWNvZGluZyB0aGUg
U1ZHIGZvbnRzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KLSAgICAgICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX293bmVyLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihib3VuZHMs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKSkg
eworICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fb3duZXIuY3JlYXRlQWxpZ25lZElt
YWdlQnVmZmVyKGJvdW5kcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmlu
Z01ldGhvZDo6TG9jYWwpKSB7CiAgICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEs
IEZsb2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBk
ZXN0aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGJvdW5kcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYzI1ZDFjMGE0MjYwNTBlMzExMTNiNDFi
ZjlkMmMxM2NhZDllNDRlYi4uZjg5NzU3Yzc2NzdiYjk0MTcxMTE5MTlmMDhmODUyZGY0OTM0OGQ1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNDkyLDEy
ICs0OTIsOSBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYg
aW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdAogICAgIHJlY29yZENsaXBUb0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0UmVjdCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0CitSZWZQdHI8SW1h
Z2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUsIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7Ci0g
ICAgaWYgKHJlbmRlcmluZ01ldGhvZCA9PSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpCi0gICAg
ICAgIHJlbmRlcmluZ01ldGhvZCA9IFJlbmRlcmluZ01ldGhvZDo6RGlzcGxheUxpc3Q7Ci0KLSAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBjb2xvclNw
YWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOworICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kLnZhbHVlX29yKFJlbmRlcmluZ01l
dGhvZDo6RGlzcGxheUxpc3QpKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDZlZTZlODc1ZDQ5N2U5NDk1N2VmMGY0ZThi
ZDQ3YzMzZTI4ZGY3YTEuLmNhZmY4OGNiY2ZlZDU0MTZkYjgyZmYxNmI4ZGQ4ZDMyYmZjMWI3NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTcyLDcgKzE3Miw3
IEBAIHByb3RlY3RlZDoKICAgICBjb25zdCBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNv
bnN0OwogICAgIENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRlKCk7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmlu
Z01ldGhvZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nTW9kZT4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPikgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CmluZGV4IDc0MTkxNWMwYzAzZDQxYjMzYjU3MzljOTY0NGMzNzcyNjVlZTFjZjguLjMwZTAyYzRl
MDNiOGFiYmZiYzFlMzlmZGFmMjI3YjI0ZWI3NTdlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KQEAgLTczNCw3ICs3MzQsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3
Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNz
Q29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1
ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lk
dGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVm
ZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lk
dGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRl
dmljZVNjYWxlRmFjdG9yIH0pOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5j
cmVhdGVJbWFnZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNS
ZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4g
bmVlZHNSZXBhaW50OwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiYTIzOTc3ZDFmNDc4YTNiOWQ3MzJlZjQx
MzAyYzM2OWIzNzZkYjEyLi4yNGM4MmM5ZDZiZDQzZjc0YmEwNWFiNWFjNzY3OTNkNzVkMTVlNTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhwYWludEluZm8ucmVj
dCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNr
LgotICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZl
cihtYXNrUmVjdC5zaXplKCkpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUFs
aWduZWRJbWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIW1hc2tJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
bWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI3
YWYzYzFkYTQyMTc5M2E1MzJkMzE1ODU5MTM5YjAwN2MwN2E4NDMuLmE4NTBlMTM3NGExMjU4MjIw
Y2VmYzhmZDdhMmI3M2Y3NjdhNzQzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzI0LDcgKzMzMjQsNyBAQCBzdGF0aWMgUmVm
UHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24sIEZsbwogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9
OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcih0aWxlU2l6ZSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0
LmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcih0aWxlU2l6ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggNWJhOTRjZmQ1ZGJiMWU0NGI1ZmJkM2M1
YmMxMWFkMTlhZWFmOGY1ZC4uNTY3ZjhiYjIwOGQ5Y2I2NWU5ZDNiYTFhM2IyNjc0MjgwZTZkN2Ri
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVC
YWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgYXV0byBs
b2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKG1fZmlsdGVyUmVnaW9uLnNp
emUoKSk7CiAKICAgICBpZiAoIW1fc291cmNlSW1hZ2UgfHwgbV9zb3VyY2VJbWFnZS0+bG9naWNh
bFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkKLSAgICAgICAgbV9zb3VyY2VJbWFnZSA9IGNvbnRleHQu
Y3JlYXRlSW1hZ2VCdWZmZXIobV9maWx0ZXJSZWdpb24uc2l6ZSgpLCBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRlci5yZW5kZXJpbmdNb2Rl
KCkpOworICAgICAgICBtX3NvdXJjZUltYWdlID0gY29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1
ZmZlcihtX2ZpbHRlclJlZ2lvbi5zaXplKCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlv
dXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0
IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IGUxODZmYmQ2ZDg3NDk5MGEyZWI0ZTg5MjM0MjE4
NmUxMDNjM2Q5YzQuLmRjZTI2NzRjNGYyODgwZjM5YjU2NTE3NDEzM2NlM2U4OTFlYzdjOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0xNTQs
NyArMTU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFAKIHsKICAgICBhdXRvJiBkZXN0aW5h
dGlvbkNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIocGFpbnRS
ZWN0LnNpemUoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RpbmF0aW9uQ29udGV4dC5j
cmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIocGFpbnRSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggODc2NjdkZTJkZWQyOTVkOTM1ODAyYjMzODkyYTBj
MzIxYzdlMzJlYy4uMDEwZWNiYWVkODdhNzNhNDIwYWZiOTdlOGU4MGZlYTYzNzlmZWQzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtOTk0LDcgKzk5
NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgYXV0byBjb21i
b0JveEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihjb21ib0JveFNpemUs
IHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOworICAgIGF1dG8gY29t
Ym9Cb3hJbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoY29tYm9Cb3hTaXpl
LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYgKCFjb21ib0JveEltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEwMTgsNyArMTAxOCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6
OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3ND
b250CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uS2V5IDogKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25MZWZ0VG9SaWdodCwKICAgICB9XTsKIAotICAgIGF1dG8gY29tYm9Cb3hCdXR0
b25JbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZGVzaXJlZENvbWJvQm94
QnV0dG9uU2l6ZSwgeyBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IgfSk7Cisg
ICAgYXV0byBjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1
ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
aWYgKCFjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0
MDIsNyArMTQwMiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgY29uc3QgYXV0byYg
cmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsK
ICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9n
cmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gcGFpbnRJbmZvLmNv
bnRleHQoKS5jcmVhdGVJbWFnZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCB7IGRldmljZVNj
YWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5jcmVhdGVJbWFnZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgp
LCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA4N2ExYWU1OTFhNTcwMmQ3OTI3Y2I4
YzY4ZTU5NWY0Y2IwZjBjYjY5Li4xYjBlMDJmMTU4NGI1ZWM4NDM1MzcwYWM4ZGIwMzc0ZmQxNDVh
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogCiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2Jq
ZWN0Qm91bmRpbmdCb3gsIGNsaXBwZWRDb250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5zZm9ybSkp
IHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBu
b3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUg
Y29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFz
a0ltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihjbGlwcGVkQ29udGVudEJvdW5kcywg
c2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkKTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZVNjYWxl
ZEltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBp
ZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAppbmRleCBiOTYzNjJjOTdhM2I0MDNkNWU0MDRiMmNjZjM4NzA0ZDlhOTYyNDg1Li41NWQ1ZWQ1
N2UzZWQ0ZDk3Mzk4ZGQ4MjI3MzEzZWQwZDM0NTAzMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAt
MTUzLDcgKzE1Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgYXV0byBjb2xvclNw
YWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYKIAotICAgIGF1dG8g
c291cmNlR3JhcGhpYyA9IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRy
YXdpbmdSZWdpb24sIGZpbHRlclNjYWxlLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXIt
PnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBzb3VyY2VHcmFwaGljID0gY29udGV4dC0+Y3Jl
YXRlU2NhbGVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZmlsdGVyU2Nh
bGUsIGNvbG9yU3BhY2UsIGZpbHRlckRhdGEtPmZpbHRlci0+cmVuZGVyaW5nTW9kZSgpKTsKICAg
ICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJUKG1fcmVuZGVyZXJGaWx0ZXJE
YXRhTWFwLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogICAgICAgICBmaWx0ZXJEYXRhLT5zYXZlZENv
bnRleHQgPSBjb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggNGFlN2NjZTMzYTc3NTMy
YTQ3YmUwYmYzMDRhODI0YzEyMjMyNzIyNi4uYzBhNjBiNTJmNjJjOTgyZWVkZDRjMmQ3ZjExZWJl
NTcxYmZmZmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3Jh
cGhpY3NDb250ZXh0KiYgY29uCiAgICAgLy8gRGV0ZXJtaW5lIHNjYWxlIGZhY3RvciBmb3IgdGhl
IGNsaXBwZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0
IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgogICAgIEltYWdlQnVmZmVyOjpzaXplTmVl
ZHNDbGFtcGluZyhyZXBhaW50UmVjdC5zaXplKCksIHNjYWxlKTsKIAotICAgIGF1dG8gbWFza0lt
YWdlID0gY29udGV4dC0+Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIHNjYWxlKTsKKyAg
ICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQtPmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKHJlcGFp
bnRSZWN0LCBzY2FsZSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcAppbmRleCAzZGIwMTMxMWRmNWI1Yzk0N2UwN2I0NmM1OGFlZGE3
NDcyZjJmMjVmLi40NDBkOTM1MWVlZTQ1ZDU4NzQzZjdhYjc4ZjZlOTVhMDhhY2FiMTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQog
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2Ug
YnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2lu
ZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhvdWdoLgotICAg
ICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihy
ZXBhaW50UmVjdCwgc2NhbGUsIG1hc2tDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkKTsKKyAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gY29udGV4dC0+Y3JlYXRl
U2NhbGVkSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIHNjYWxlLCBtYXNrQ29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgICAgIGlmICghbWFza2VyRGF0YS0+bWFz
a0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5k
ZXggYmNlZmU1NzVmYzViMjRhOTFkZmI2YTMyNmQ2MGM4ZDkxYzUyYWI2YS4uMjUwOTQyMGIzNDQ5
OTc2ZTdjOTJhODNmNDhhYzYyOGE5YjFmZjc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMjQz
LDcgKzI0Myw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
OjpjcmVhdGVUaWxlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjCiAgICAgYXV0byB0aWxlU2l6ZSA9
IHJvdW5kZWRVbnNjYWxlZEltYWdlQnVmZmVyU2l6ZShzaXplLCBzY2FsZSk7CiAKICAgICAvLyBG
SVhNRTogVXNlIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlKSwgZGVsZXRlIHRoZSBhYm92
ZSBjYWxjdWxhdGlvbnMgYW5kIGZpeCAndGlsZUltYWdlVHJhbnNmb3JtJwotICAgIGF1dG8gdGls
ZUltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcih0aWxlU2l6ZSwgc2NhbGUpOworICAg
IGF1dG8gdGlsZUltYWdlID0gY29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcih0aWxlU2l6
ZSwgc2NhbGUpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggNjM4MDI0ZDdkMjc4MTBmYmUwNWY3OTQyZGFiZmMwYTA4MThhY2I5Ni4u
MmZiOGYzM2E4NzBkZmNjZWI2MmUxNDk2NTZiMTQ0MzcyMmViZWEyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0y
ODIsNyArMjgyLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5k
KFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3
IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdl
QnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyID0gbV9wYWludEluZm8tPmNvbnRleHQoKS5j
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNp
emUoKSkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3Jl
YXRlQWxpZ25lZEltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkp
KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5k
ZXggNzg0Y2ViMmM4OGQzOWY1YzA0YTcxN2Q3NTdiMzViNGM1ZmRhODk1ZC4uMWU2ODNjNWViMDNl
MTYyMGQ2M2RlMDUxYTViNjMzODMxMzA0NGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtNDM0LDI5ICs0MzQsMjkgQEAgdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmZsdXNoQ29udGV4dChHcmFwaGljc0NvbnRleHRGbHVz
aElkZW50aWZpZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpGbHVzaENvbnRleHQoaWRlbnRpZmllcikpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01ldGhv
ZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nTWV0aG9kPiByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZ
KCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyaW5nTWV0aG9k
ICE9IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkKLSAgICAgICAgcmV0dXJuIFJlY29yZGVyOjpj
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJp
bmdNZXRob2QpOworICAgIGlmIChyZW5kZXJpbmdNZXRob2QpCisgICAgICAgIHJldHVybiBSZWNv
cmRlcjo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOwogCi0gICAgcmV0dXJuIG1fcmVuZGVy
aW5nQmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNr
ZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMt
PnJlbmRlcmluZ01vZGUoKSksIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5n
TWV0aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiByZW5kZXJpbmdNZXRob2QpIGNvbnN0CiB7
Ci0gICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTWV0aG9kID09IFJlbmRlcmluZ01l
dGhvZDo6RGVmYXVsdCA/IHRoaXMtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQ7Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVy
aW5nTWV0aG9kKTsKKyAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSAhcmVuZGVyaW5nTWV0aG9kID8g
dGhpcy0+cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKKyAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihzaXplLCBz
Y2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2Qp
OwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eTo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNZXRob2QgcmVu
ZGVyaW5nTWV0aG9kKSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHk6OmNyZWF0ZUFsaWduZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdNZXRob2Q+IHJlbmRlcmluZ01ldGhvZCkgY29uc3QKIHsKLSAgICBhdXRv
IHJlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNZXRob2QgPT0gUmVuZGVyaW5nTWV0aG9kOjpEZWZh
dWx0ID8gdGhpcy0+cmVuZGVyaW5nTW9kZSgpIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZDsKLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBz
Y2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2Qp
OworICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9ICFyZW5kZXJpbmdNZXRob2QgPyB0aGlzLT5yZW5k
ZXJpbmdNb2RlKCkgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOworICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKHJlY3QsIHNjYWxlRmFjdG9y
KCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIHJlbmRlcmluZ01ldGhvZCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5oCmluZGV4IGQ5ZmQ3Y2VmMjE2MTAxN2EzMDk3ZmM3MGY2NTFmMDIyN2RjMTZkZDEuLjdl
NmEwYTEwNzdhMTUyMDUyYzMzYzNjOGIyNzc2YjlhMmNlZjg1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMTM2LDkgKzEzNiw5IEBAIHByaXZhdGU6
CiAgICAgYm9vbCByZWNvcmRSZXNvdXJjZVVzZShjb25zdCBXZWJDb3JlOjpTb3VyY2VJbWFnZSYp
IGZpbmFsOwogICAgIGJvb2wgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6Rm9udCYpIGZpbmFs
OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2Qp
IGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kID0gV2ViQ29yZTo6UmVuZGVyaW5n
TWV0aG9kOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZCA9IFdl
YkNvcmU6OlJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nTW9kZT4sIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kPikgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVBbGlnbmVkSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2Q+KSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUFsaWduZWRJbWFnZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZD4pIGNv
bnN0IGZpbmFsOwogCiAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1f
ZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IG1faW1hZ2VCdWZmZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmMzNTQyMjBlNDkwYTEwODU3ZGFhM2Q2Y2Jk
MzIyYjcwMGRlNjQwNS4uMGJlZWQ2MjVmZDU4NTA3ODA0ZjkwMmQ1OWU0ZjUzNjA2MmQ5YjM0NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
aWRAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU11bUkVHUkVTU0lPTl0gKHJyMjg5NTE4KTog
Rm9ybSBjb250cm9scyBhcmUgc2NhbGVkIHR3aWNlIG9uIFJldGluYSBkaXNwbGF5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcxMjgKKyAgICAgICAg
cmRhcjovLzg5MDY0NjQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBmYXN0L2hpZHBpL2hpZHBpLWZvcm0tY29udHJvbHMtZHJhd2luZy1zaXplLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlkcGkvaGlkcGktZm9ybS1jb250cm9s
cy1kcmF3aW5nLXNpemUuaHRtbDogQWRkZWQuCisKIDIwMjItMDMtMDEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1l
ZGlhLXRvLWNhbnZhcy0xLmh0bWwgYW5kIGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRv
LWNhbnZhcy0yLmh0bWwgYXJlIGZhaWxpbmcgb24gTWFjT1Mgd2hlbiByZW1vdGUgdmlkZW8gZnJh
bWUgZmxhZyBpcyBlbmFibGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2hp
ZHBpLWZvcm0tY29udHJvbHMtZHJhd2luZy1zaXplLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2hpZHBpL2hpZHBpLWZvcm0tY29udHJvbHMtZHJhd2luZy1zaXplLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTM4ZmUzMDE0MWI2ZWYzNjI3YWRlOTEzNTRmZDJmNmExOTNlNWNkMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaGlkcGktZm9ybS1jb250
cm9scy1kcmF3aW5nLXNpemUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8c3R5bGU+
CisgICAgLmJveCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2Vuc3VyZS1oaWRwaS5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKyAgICA8
ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJsZWZ0OiAwcHg7IHRvcDogMHB4OyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImxlZnQ6IDEx
MHB4OyB0b3A6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ij48L2Rpdj4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaGlkcGktZm9ybS1jb250cm9scy1k
cmF3aW5nLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaGlkcGktZm9ybS1jb250
cm9scy1kcmF3aW5nLXNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODA2NzZmZWEyNGQ2M2IzNWYzZDRm
NWRmNDE1ZjNlZDFhODU3NmUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9o
aWRwaS9oaWRwaS1mb3JtLWNvbnRyb2xzLWRyYXdpbmctc2l6ZS5odG1sCkBAIC0wLDAgKzEsMTYg
QEAKKzxzdHlsZT4KKyAgICAuYm94IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHls
ZT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZW5zdXJlLWhpZHBpLmpzIj48L3NjcmlwdD4KKzxi
b2R5PgorICAgIDxwcm9ncmVzcyBjbGFzcz0iYm94IiBzdHlsZT0ibGVmdDogMHB4OyB0b3A6IDBw
eDsiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSIxMDAiPjwvcHJvZ3Jlc3M+CisgICAgPGRpdiBj
bGFzcz0iYm94IiBzdHlsZT0ibGVmdDogMHB4OyB0b3A6IDBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47Ij48L2Rpdj4KKworICAgIDxkYXRhbGlzdCBpZD0ibGlzdCI+PC9kYXRhbGlzdD4KKyAg
ICA8aW5wdXQgY2xhc3M9ImJveCIgc3R5bGU9ImxlZnQ6IDExMHB4OyB0b3A6IDBweDsiIHR5cGU9
InNlYXJjaCIgbGlzdD0ibGlzdCI+CisgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0ibGVmdDog
MTEwcHg7IHRvcDogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>